From f8121aaa73ade2d1492ecf7aaa5db1d66c2793d0 Mon Sep 17 00:00:00 2001 From: Craig Drummond Date: Sat, 26 May 2018 10:10:21 +0100 Subject: [PATCH] Use function to set size? --- CMakeLists.txt | 2 +- gui/application.cpp | 33 +++++++++++++++++++++++++++++++++ gui/application_haiku.h | 1 + gui/application_mac.h | 1 + gui/application_qt.h | 1 + gui/application_win.h | 1 + gui/mainwindow.cpp | 8 ++++++++ gui/mainwindow.ui | 10 +--------- widgets/multipagewidget.cpp | 5 +++-- widgets/multipagewidget.h | 1 - widgets/singlepagewidget.cpp | 15 +++++++++++---- widgets/stackedpagewidget.cpp | 1 - 12 files changed, 61 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e03c6fb46..2bfb76e2c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -317,7 +317,7 @@ set(CANTATA_SRCS ${CANTATA_SRCS} widgets/actionlabel.cpp widgets/playqueueview.cpp widgets/groupedview.cpp widgets/actionitemdelegate.cpp widgets/textbrowser.cpp widgets/volumeslider.cpp widgets/menubutton.cpp widgets/icons.cpp widgets/toolbutton.cpp widgets/wizardpage.cpp widgets/searchwidget.cpp widgets/messageoverlay.cpp widgets/basicitemdelegate.cpp widgets/sizegrip.cpp - widgets/sizewidget.cpp widgets/servicestatuslabel.cpp widgets/spacerwidget.cpp widgets/songdialog.cpp widgets/stretchheaderview.cpp + widgets/servicestatuslabel.cpp widgets/spacerwidget.cpp widgets/songdialog.cpp widgets/stretchheaderview.cpp widgets/tableview.cpp widgets/thinsplitterhandle.cpp widgets/coverwidget.cpp widgets/ratingwidget.cpp widgets/notelabel.cpp widgets/selectorlabel.cpp widgets/titlewidget.cpp widgets/multipagewidget.cpp widgets/singlepagewidget.cpp widgets/stackedpagewidget.cpp widgets/mirrormenu.cpp widgets/genrecombo.cpp widgets/volumecontrol.cpp widgets/categorizedview.cpp diff --git a/gui/application.cpp b/gui/application.cpp index e8054625f..0c88b32bc 100644 --- a/gui/application.cpp +++ b/gui/application.cpp @@ -33,9 +33,12 @@ #include "tags/taghelperiface.h" #include "scrobbling/scrobbler.h" #include "support/fancytabwidget.h" +#include "support/combobox.h" #include "widgets/itemview.h" #include "widgets/groupedview.h" #include "widgets/actionitemdelegate.h" +#include "widgets/toolbutton.h" +#include "widgets/sizegrip.h" #include "http/httpserver.h" #include "config.h" @@ -88,3 +91,33 @@ void Application::init() GroupedView::setup(); ActionItemDelegate::setup(); } + +void Application::fixSize(QWidget *widget) +{ + static int fixedHeight = -1; + if (-1 == fixedHeight) { + ComboBox c(widget); + ToolButton b(widget); + SizeGrip g(widget); + c.ensurePolished(); + b.ensurePolished(); + g.ensurePolished(); + fixedHeight=qMax(24, qMax(c.sizeHint().height(), qMax(b.sizeHint().height(), g.sizeHint().height()))); + if (fixedHeight%2) { + fixedHeight--; + } + } + + QToolButton *tb=qobject_cast(widget); + if (tb) { + tb->setFixedSize(fixedHeight, fixedHeight); + } else { + #ifdef Q_OS_MAC + // TODO: Why is this +8 required for macOS? If its not used, library page's statusbar is larger + // than the rest - due to genre combo? + widget->setFixedHeight(fixedHeight+8); + #else + widget->setFixedHeight(fixedHeight); + #endif + } +} diff --git a/gui/application_haiku.h b/gui/application_haiku.h index 80ad8426a..2a7bbc66d 100644 --- a/gui/application_haiku.h +++ b/gui/application_haiku.h @@ -30,6 +30,7 @@ class Application : public SingleApplication { public: static void init(); + static void fixSize(QWidget *widget); Application(int &argc, char **argv); virtual ~Application() { }; diff --git a/gui/application_mac.h b/gui/application_mac.h index ba14620ac..329243ffc 100644 --- a/gui/application_mac.h +++ b/gui/application_mac.h @@ -30,6 +30,7 @@ class Application : public SingleApplication { public: static void init(); + static void fixSize(QWidget *widget); Application(int &argc, char **argv); virtual ~Application() { }; }; diff --git a/gui/application_qt.h b/gui/application_qt.h index 8fdfa662b..1cd8e3327 100644 --- a/gui/application_qt.h +++ b/gui/application_qt.h @@ -29,6 +29,7 @@ class Application : public QApplication { public: static void init(); + static void fixSize(QWidget *widget); Application(int &argc, char **argv); ~Application() override { } diff --git a/gui/application_win.h b/gui/application_win.h index a35e8d6fe..1788eb587 100644 --- a/gui/application_win.h +++ b/gui/application_win.h @@ -31,6 +31,7 @@ class Application : public SingleApplication, public QAbstractNativeEventFilter { public: static void init(); + static void fixSize(QWidget *widget); Application(int &argc, char **argv); virtual ~Application() { } bool nativeEventFilter(const QByteArray &, void *message, long *result); diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 9507d436d..b294af80e 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -25,6 +25,7 @@ */ #include "mainwindow.h" +#include "application.h" #include "support/thread.h" #include "trayitem.h" #include "support/messagebox.h" @@ -536,6 +537,13 @@ void MainWindow::init() playPauseTrackButton->setIconSize(QSize(playPauseIconSize, playPauseIconSize)); playPauseTrackButton->setFixedSize(QSize(playPauseIconSize+6, playPauseIconSize+6)); + QList pqWidgets = QList() << stopDynamicButton << dynamicLabel << playQueueStatsLabel << fullScreenLabel + << repeatButton << singleButton << randomButton << consumeButton << midSpacer + << centerPlayQueueButton << savePlayQueueButton << clearPlayQueueButton << sizeGrip; + for (const auto &item: pqWidgets) { + Application::fixSize(item); + } + if (fullScreenAction->isEnabled()) { fullScreenAction->setChecked(Settings::self()->showFullScreen()); } diff --git a/gui/mainwindow.ui b/gui/mainwindow.ui index c3b69f956..6a8e33bf8 100644 --- a/gui/mainwindow.ui +++ b/gui/mainwindow.ui @@ -159,7 +159,7 @@ - + 1 @@ -251,9 +251,6 @@ - - - @@ -326,11 +323,6 @@ QWidget
widgets/spacerwidget.h
- - SizeWidget - QWidget -
widgets/sizewidget.h
-
SizeGrip QWidget diff --git a/widgets/multipagewidget.cpp b/widgets/multipagewidget.cpp index 3cf507ac4..1d8c644f0 100644 --- a/widgets/multipagewidget.cpp +++ b/widgets/multipagewidget.cpp @@ -22,6 +22,7 @@ */ #include "multipagewidget.h" +#include "gui/application.h" #include "support/icon.h" #include "support/utils.h" #include "support/squeezedtextlabel.h" @@ -31,7 +32,6 @@ #include "support/osxstyle.h" #endif #include "listview.h" -#include "sizewidget.h" #include "singlepagewidget.h" #include "toolbutton.h" #include @@ -127,7 +127,8 @@ MultiPageWidget::MultiPageWidget(QWidget *p) mainPage=new QWidget(this); QVBoxLayout *mainLayout=new QVBoxLayout(mainPage); infoLabel=new QLabel(mainPage); - sizer=new SizeWidget(mainPage); + QWidget *sizer=new QWidget(mainPage); + Application::fixSize(sizer); QScrollArea *scroll = new QScrollArea(this); view = new QWidget(scroll); QVBoxLayout *layout = new QVBoxLayout(view); diff --git a/widgets/multipagewidget.h b/widgets/multipagewidget.h index f788deb46..a947beef7 100644 --- a/widgets/multipagewidget.h +++ b/widgets/multipagewidget.h @@ -70,7 +70,6 @@ private: QWidget *mainPage; QWidget *view; QLabel *infoLabel; - SizeWidget *sizer; QMap entries; }; diff --git a/widgets/singlepagewidget.cpp b/widgets/singlepagewidget.cpp index cd28c6fe7..79668c703 100644 --- a/widgets/singlepagewidget.cpp +++ b/widgets/singlepagewidget.cpp @@ -22,11 +22,11 @@ */ #include "singlepagewidget.h" -#include "widgets/sizewidget.h" #include "widgets/spacerwidget.h" #include "widgets/toolbutton.h" #include "widgets/icons.h" #include "gui/stdactions.h" +#include "gui/application.h" #include "mpd-interface/mpdconnection.h" #include #include @@ -53,10 +53,10 @@ SinglePageWidget::SinglePageWidget(QWidget *p) { QGridLayout *layout=new QGridLayout(this); view=new ItemView(this); + QWidget *sizer=new QWidget(this); + Application::fixSize(sizer); layout->addWidget(view, 1, 0, 1, 5); -// layout->addItem(new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Preferred), 2, 1, 1, 1); - layout->addWidget(new SizeWidget(this), 2, 2, 1, 1); -// layout->addItem(new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Preferred), 2, 3, 1, 1); + layout->addWidget(sizer, 2, 2, 1, 1); layout->setMargin(0); layout->setSpacing(0); connect(view, SIGNAL(searchItems()), this, SIGNAL(searchItems())); @@ -67,6 +67,7 @@ SinglePageWidget::SinglePageWidget(QWidget *p) void SinglePageWidget::addWidget(QWidget *w) { + Application::fixSize(w); static_cast(layout())->addWidget(w, 0, 0, 1, 5); } @@ -112,14 +113,20 @@ void SinglePageWidget::init(int flags, const QList &leftXtra, const Q if (!left.isEmpty()) { QHBoxLayout *ll=new QHBoxLayout(); + ll->setMargin(0); + ll->setSpacing(0); for (QWidget *b: left) { + Application::fixSize(b); ll->addWidget(b); } static_cast(layout())->addItem(ll, 2, 0, 1, 1); } if (!right.isEmpty()) { QHBoxLayout *rl=new QHBoxLayout(); + rl->setMargin(0); + rl->setSpacing(0); for (QWidget *b: right) { + Application::fixSize(b); rl->addWidget(b); } static_cast(layout())->addItem(rl, 2, 4, 1, 1); diff --git a/widgets/stackedpagewidget.cpp b/widgets/stackedpagewidget.cpp index c360d3c31..cca655358 100644 --- a/widgets/stackedpagewidget.cpp +++ b/widgets/stackedpagewidget.cpp @@ -26,7 +26,6 @@ #include "support/squeezedtextlabel.h" #include "support/proxystyle.h" #include "listview.h" -#include "sizewidget.h" #include "singlepagewidget.h" #include #include