Skip to content

Commit

Permalink
picker: Adds elided buttons for better readability (#176)
Browse files Browse the repository at this point in the history
It also fixes the region button size and alignment

fixes #175
  • Loading branch information
rurigk committed Jan 29, 2024
1 parent f29e046 commit c06fd88
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 14 deletions.
2 changes: 2 additions & 0 deletions hyprland-share-picker/CMakeLists.txt
Expand Up @@ -17,6 +17,8 @@ set(PROJECT_SOURCES
mainpicker.cpp
mainpicker.h
mainpicker.ui
elidedbutton.h
elidedbutton.cpp
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
Expand Down
31 changes: 31 additions & 0 deletions hyprland-share-picker/elidedbutton.cpp
@@ -0,0 +1,31 @@
#include "elidedbutton.h"

ElidedButton::ElidedButton(QWidget *parent)
: QPushButton(parent)
{
}

ElidedButton::ElidedButton( const QString& text, QWidget* parent )
: ElidedButton( parent )
{
setText(text);
}

void ElidedButton::setText(QString text)
{
og_text = text;
updateText();
}

void ElidedButton::resizeEvent(QResizeEvent *event)
{
QPushButton::resizeEvent(event);
updateText();
}

void ElidedButton::updateText()
{
QFontMetrics metrics(font());
QString elided = metrics.elidedText(og_text, Qt::ElideRight, width() - 15);
QPushButton::setText(elided);
}
21 changes: 21 additions & 0 deletions hyprland-share-picker/elidedbutton.h
@@ -0,0 +1,21 @@
#ifndef ELIDEDBUTTON_H
#define ELIDEDBUTTON_H

#include <QPushButton>

class ElidedButton : public QPushButton
{
public:
explicit ElidedButton(QWidget *parent = nullptr);
explicit ElidedButton(const QString &text, QWidget *parent = nullptr);
void setText(QString);

protected:
void resizeEvent(QResizeEvent *);

private:
void updateText();
QString og_text;
};

#endif // ELIDEDBUTTON_H
19 changes: 8 additions & 11 deletions hyprland-share-picker/main.cpp
Expand Up @@ -17,6 +17,7 @@
#include <vector>

#include "mainpicker.h"
#include "elidedbutton.h"

std::string execAndGet(const char* cmd) {
std::array<char, 128> buffer;
Expand Down Expand Up @@ -110,9 +111,10 @@ int main(int argc, char* argv[]) {
QString text = QString::fromStdString(std::string("Screen " + std::to_string(i) + " at " + std::to_string(GEOMETRY.x()) + ", " + std::to_string(GEOMETRY.y()) + " (" +
std::to_string(GEOMETRY.width()) + "x" + std::to_string(GEOMETRY.height()) + ") (") +
SCREENS[i]->name().toStdString() + ")");
QPushButton* button = new QPushButton(text);
SCREENS_SCROLL_AREA_CONTENTS_LAYOUT->addWidget(button);
ElidedButton* button = new ElidedButton(text);
button->setMinimumSize(0, BUTTON_HEIGHT);
SCREENS_SCROLL_AREA_CONTENTS_LAYOUT->addWidget(button);

QObject::connect(button, &QPushButton::clicked, [=]() {
std::string ID = button->text().toStdString();
ID = ID.substr(ID.find_last_of('(') + 1);
Expand Down Expand Up @@ -147,9 +149,9 @@ int main(int argc, char* argv[]) {
for (auto& window : WINDOWLIST) {
QString text = QString::fromStdString(window.clazz + ": " + window.name);

QPushButton* button = new QPushButton(text);
WINDOWS_SCROLL_AREA_CONTENTS_LAYOUT->addWidget(button);
ElidedButton* button = new ElidedButton(text);
button->setMinimumSize(0, BUTTON_HEIGHT);
WINDOWS_SCROLL_AREA_CONTENTS_LAYOUT->addWidget(button);

mainPickerPtr->windowIDs[button] = window.id;

Expand Down Expand Up @@ -179,16 +181,11 @@ int main(int argc, char* argv[]) {
const auto REGION_LAYOUT = REGION_OBJECT->layout();

QString text = "Select region...";

QSpacerItem * REGION_L_SPACER = new QSpacerItem(10000,0, QSizePolicy::Expanding, QSizePolicy::Expanding);
QSpacerItem * REGION_R_SPACER = new QSpacerItem(10000,0, QSizePolicy::Expanding, QSizePolicy::Expanding);

REGION_LAYOUT->addItem(REGION_L_SPACER);

QPushButton* button = new QPushButton(text);
ElidedButton* button = new ElidedButton(text);
button->setMaximumSize(400, BUTTON_HEIGHT);
REGION_LAYOUT->addWidget(button);

REGION_LAYOUT->addItem(REGION_R_SPACER);

QObject::connect(button, &QPushButton::clicked, [=]() {
auto REGION = execAndGet("slurp -f \"%o %x %y %w %h\"");
Expand Down
6 changes: 3 additions & 3 deletions hyprland-share-picker/mainpicker.ui
Expand Up @@ -232,8 +232,8 @@
</property>
<property name="maximumSize">
<size>
<width>730</width>
<height>224</height>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="layoutDirection">
Expand All @@ -245,7 +245,7 @@
<attribute name="title">
<string>Region</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout">
<layout class="QGridLayout" name="gridLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
Expand Down

0 comments on commit c06fd88

Please sign in to comment.