From 8af2ea14f26701e4bd026ccd014a4587d1c576e2 Mon Sep 17 00:00:00 2001 From: "craig.p.drummond" Date: Wed, 4 Jun 2014 18:45:30 +0000 Subject: [PATCH] Refactor high-dpi stuff --- context/contextwidget.cpp | 5 +---- dynamic/dynamicruledialog.cpp | 2 +- gui/currentcover.cpp | 2 +- gui/mainwindow.cpp | 2 +- support/fancytabwidget.cpp | 18 +++--------------- support/flickcharm.cpp | 2 +- support/icon.cpp | 12 ++++++++++-- support/inputdialog.cpp | 4 ++-- support/spinner.cpp | 4 ++-- support/utils.cpp | 7 ++++++- support/utils.h | 1 + tags/tageditor.cpp | 2 +- widgets/thinsplitterhandle.cpp | 4 ++-- widgets/treeview.cpp | 2 +- widgets/volumeslider.cpp | 2 +- 15 files changed, 34 insertions(+), 35 deletions(-) diff --git a/context/contextwidget.cpp b/context/contextwidget.cpp index 4a2462fb0..6d49e777d 100644 --- a/context/contextwidget.cpp +++ b/context/contextwidget.cpp @@ -288,11 +288,8 @@ ContextWidget::ContextWidget(QWidget *parent) minBackdropSize.setWidth(((int)(minBackdropSize.width()/32))*32); minBackdropSize.setHeight(((int)(minBackdropSize.height()/32))*32); maxBackdropSize=QSize(geo.width()*1.25, geo.height()*1.25); - } else if (Utils::isHighDpi()) { - minBackdropSize=QSize(1024*3, 768*3); - maxBackdropSize=QSize(minBackdropSize.width()*2, minBackdropSize.height()*2); } else { - minBackdropSize=QSize(1024, 768); + minBackdropSize=QSize(Utils::scaleForDpi(1024*3), Utils::scaleForDpi(768*3); maxBackdropSize=QSize(minBackdropSize.width()*2, minBackdropSize.height()*2); } #endif diff --git a/dynamic/dynamicruledialog.cpp b/dynamic/dynamicruledialog.cpp index 348f9d2da..de3226f0a 100644 --- a/dynamic/dynamicruledialog.cpp +++ b/dynamic/dynamicruledialog.cpp @@ -96,7 +96,7 @@ DynamicRuleDialog::DynamicRuleDialog(QWidget *parent) adjustSize(); int h=height(); int w=width(); - int minW=500*(Utils::isHighDpi() ? 2 : 1); + int minW=Utils::scaleForDpi(500); setMinimumWidth(minW); setMinimumHeight(h); if (wstreamIcon : Icons::self()->albumIcon).pixmap(iconSize, iconSize).toImage(); QString &file=stream ? noStreamCoverFileName : noCoverFileName; diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index a4f8efcdd..77f03e442 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -2534,7 +2534,7 @@ void MainWindow::calcMinHeight() if (tabWidget->style()&FancyTabWidget::Side && tabWidget->style()&FancyTabWidget::Large) { minH=toolbar->height()+(tabWidget->visibleCount()*tabWidget->tabSize().height()); } else { - minH=Utils::isHighDpi() ? 512 : 256; + minH=Utils::scaleForDpi(256); } setMinimumHeight(minH); if (height()32) { - if (largeIconSize<56) { - smallIconSize=22; - } else { - smallIconSize=32; - } - } - } else { - largeIconSize=32; - smallIconSize=Utils::touchFriendly() ? 22 : 16; - } + largeIconSize=Icon::stdSize(Utils::scaleForDpi(32)); + smallIconSize=Icon::stdSize(Utils::scaleForDpi(Utils::touchFriendly() ? 22 : 16)); } int FancyTabWidget::iconSize(bool large) diff --git a/support/flickcharm.cpp b/support/flickcharm.cpp index 00972a4e6..0a91fb839 100644 --- a/support/flickcharm.cpp +++ b/support/flickcharm.cpp @@ -45,7 +45,7 @@ int FlickCharm::dragArea() { static int area=-1; if (-1==area) { - area=Utils::isHighDpi() ? 64 : 32; + area=Utils::scaleForDpi(32); } return area; } diff --git a/support/icon.cpp b/support/icon.cpp index 4f9a7c36c..86f97e897 100644 --- a/support/icon.cpp +++ b/support/icon.cpp @@ -22,6 +22,7 @@ */ #include "icon.h" +#include "utils.h" #include #include @@ -37,9 +38,16 @@ int Icon::stdSize(int v) return 48; } else if (v<=90) { return 64; - } else { - return 128; } + + if (Utils::isHighDpi()) { + if (v<=160) { + return 128; + } else { + return 256; + } + } + return 128; } int Icon::dlgIconSize() diff --git a/support/inputdialog.cpp b/support/inputdialog.cpp index 3e16c2ee6..ac1d6b0ac 100644 --- a/support/inputdialog.cpp +++ b/support/inputdialog.cpp @@ -60,11 +60,11 @@ void InputDialog::init(bool intInput, const QString &caption, const QString &lab if (intInput) { spin=new QSpinBox(wid); spin->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); - setMinimumWidth(Utils::isHighDpi() ? 600 : 300); + setMinimumWidth(Utils::scaleForDpi(300)); } else { edit=new LineEdit(wid); edit->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); - setMinimumWidth(Utils::isHighDpi() ? 700 : 350); + setMinimumWidth(Utils::scaleForDpi(350)); } layout->addWidget(new QLabel(label, wid)); layout->addWidget(intInput ? static_cast(spin) : static_cast(edit)); diff --git a/support/spinner.cpp b/support/spinner.cpp index 8655480d1..a760c1b94 100644 --- a/support/spinner.cpp +++ b/support/spinner.cpp @@ -66,7 +66,7 @@ void Spinner::setWidget(QWidget *widget) Spinner::Spinner(QObject *p, bool inMiddle) : QWidget(0) , timer(0) - , space(Utils::isHighDpi() ? 8 : 4) + , space(Utils::scaleForDpi(4)) , value(0) , active(false) , central(inMiddle) @@ -114,7 +114,7 @@ void Spinner::paintEvent(QPaintEvent *event) { static const int constParts=8; - int lineWidth(Utils::isHighDpi() ? 4 : 2); + int lineWidth(Utils::scaleForDpi(2)); QPainter p(this); QRectF rectangle(1.5, 1.5, size().width()-3, size().height()-3); QColor col(palette().color(QPalette::Text)); diff --git a/support/utils.cpp b/support/utils.cpp index 37f3dcd34..c58d9d4f6 100644 --- a/support/utils.cpp +++ b/support/utils.cpp @@ -849,7 +849,7 @@ int Utils::layoutSpacing(QWidget *w) { int spacing=(w ? w->style() : qApp->style())->layoutSpacing(QSizePolicy::DefaultType, QSizePolicy::DefaultType, Qt::Vertical); if (spacing<0) { - spacing=isHighDpi() ? 8 : 4; + spacing=scaleForDpi(4); } return spacing; } @@ -863,6 +863,11 @@ bool Utils::isHighDpi() return fontHeight>22; } +int Utils::scaleForDpi(int v) +{ + return isHighDpi() ? v*2 : v; +} + Utils::Desktop Utils::currentDe() { #if !defined Q_OS_WIN32 && !defined Q_OS_MAC diff --git a/support/utils.h b/support/utils.h index 945f9b2ae..285564799 100644 --- a/support/utils.h +++ b/support/utils.h @@ -108,6 +108,7 @@ namespace Utils extern QFont smallFont(QFont f); extern int layoutSpacing(QWidget *w); extern bool isHighDpi(); + extern int scaleForDpi(int v); enum Desktop { KDE, diff --git a/tags/tageditor.cpp b/tags/tageditor.cpp index 8fcfced50..d6993bdf0 100644 --- a/tags/tageditor.cpp +++ b/tags/tageditor.cpp @@ -313,7 +313,7 @@ TagEditor::TagEditor(QWidget *parent, const QList &songs, connect(trackName, SIGNAL(activated(int)), SLOT(setIndex(int))); connect(this, SIGNAL(update()), MPDConnection::self(), SLOT(update())); adjustSize(); - int w=600*(Utils::isHighDpi() ? 2 : 1); + int w=Utils::scaleForDpi(600); if (width()rect(); r=QRect(r.x()+((r.width()-width)/2), r.y(), width, r.height()); col.setAlphaF(0.5); diff --git a/widgets/treeview.cpp b/widgets/treeview.cpp index 96c258221..9ff179631 100644 --- a/widgets/treeview.cpp +++ b/widgets/treeview.cpp @@ -172,7 +172,7 @@ void TreeView::drag(Qt::DropActions supportedActions, QAbstractItemView *view, c pix=QPixmap::fromImage(img); } } - int pixSize=Utils::isHighDpi() ? 64 : 32; + int pixSize=Icon::stdSize(Utils::scaleForDpi(32)); if (pix.isNull()) { drag->setPixmap(Icons::self()->audioFileIcon.pixmap(pixSize, pixSize)); } else { diff --git a/widgets/volumeslider.cpp b/widgets/volumeslider.cpp index 2f45b0d24..8ae3c9148 100644 --- a/widgets/volumeslider.cpp +++ b/widgets/volumeslider.cpp @@ -91,7 +91,7 @@ VolumeSlider::VolumeSlider(QWidget *p) widthStep=Utils::touchFriendly() ? 5 : 4; setRange(0, 100); setPageStep(Settings::self()->volumeStep()); - lineWidth=Utils::isHighDpi() ? 2 : 1; + lineWidth=Utils::scaleForDpi(1); int w=lineWidth*widthStep*19; int h=lineWidth*constHeightStep*10;