[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kde-workspace/KDE/4.9] powerdevil/daemon: Make the brightness OSD adjust its size to the used DPIs.
From: Michael Zanetti <mzanetti () kde ! org>
Date: 2012-08-16 20:37:46
Message-ID: 20120816203746.0AFF7A6094 () git ! kde ! org
[Download RAW message or body]
Git commit 3ddf80f6bfb7e1e1590ac0e0a9b8a5c8cbeb08dd by Michael Zanetti.
Committed on 07/08/2012 at 00:10.
Pushed by mzanetti into branch 'KDE/4.9'.
Make the brightness OSD adjust its size to the used DPIs.
This makes the OSD look nice on high resolution screens (e.g Retina Displays) and \
aligns it with the Volume OSD.
M +50 -15 powerdevil/daemon/brightnessosdwidget.cpp
M +2 -0 powerdevil/daemon/brightnessosdwidget.h
http://commits.kde.org/kde-workspace/3ddf80f6bfb7e1e1590ac0e0a9b8a5c8cbeb08dd
diff --git a/powerdevil/daemon/brightnessosdwidget.cpp \
b/powerdevil/daemon/brightnessosdwidget.cpp index 84dbc49..e4cf80a 100644
--- a/powerdevil/daemon/brightnessosdwidget.cpp
+++ b/powerdevil/daemon/brightnessosdwidget.cpp
@@ -57,22 +57,8 @@ BrightnessOSDWidget::BrightnessOSDWidget(QWidget * parent)
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setAttribute(Qt::WA_TranslucentBackground);
- //Cache the icon pixmaps
- QSize iconSize = QSize(KIconLoader::SizeSmallMedium, \
KIconLoader::SizeSmallMedium);
-
- m_brightnessPixmap = KIcon("video-display").pixmap(iconSize);
-
- //Setup the widgets
- m_background->setImagePath("widgets/tooltip");
-
- m_iconLabel->nativeWidget()->setPixmap(m_brightnessPixmap);
- m_iconLabel->nativeWidget()->setFixedSize(iconSize);
- m_iconLabel->setMinimumSize(iconSize);
- m_iconLabel->setMaximumSize(iconSize);
-
m_meter->setMeterType(Plasma::Meter::BarMeterHorizontal);
m_meter->setMaximum(100);
- m_meter->setMaximumHeight(iconSize.height());
m_volumeLabel->setAlignment(Qt::AlignCenter);
@@ -85,8 +71,13 @@ BrightnessOSDWidget::BrightnessOSDWidget(QWidget * parent)
QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(m_container);
layout->addItem(m_iconLabel);
layout->addItem(m_meter);
+ layout->addItem(m_volumeLabel);
m_scene->addItem(m_container);
+
+ themeUpdated();
+ connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()), this, \
SLOT(themeUpdated())); // e.g. for updating font +
setScene(m_scene);
}
@@ -98,6 +89,7 @@ void BrightnessOSDWidget::activateOSD()
void BrightnessOSDWidget::setCurrentBrightness(int brightnessLevel)
{
m_meter->setValue(brightnessLevel);
+ m_volumeLabel->setText(QString::number(brightnessLevel) + " %");
}
void BrightnessOSDWidget::drawBackground(QPainter *painter, const QRectF &/*rectF*/)
@@ -111,11 +103,12 @@ void BrightnessOSDWidget::drawBackground(QPainter *painter, \
const QRectF &/*rect QSize BrightnessOSDWidget::sizeHint() const
{
int iconSize = m_iconLabel->nativeWidget()->pixmap()->height();
+ int labelWidth = m_volumeLabel->nativeWidget()->size().width();
int meterHeight = iconSize;
int meterWidth = iconSize * 12;
qreal left, top, right, bottom;
m_background->getMargins(left, top, right, bottom);
- return QSize(meterWidth + iconSize + left + right, meterHeight + top + bottom);
+ return QSize(meterWidth + labelWidth + iconSize + left + right, meterHeight + \
top + bottom); }
void BrightnessOSDWidget::resizeEvent(QResizeEvent*)
@@ -137,4 +130,46 @@ void BrightnessOSDWidget::showEvent(QShowEvent *event)
Plasma::WindowEffects::overrideShadow(winId(), true);
}
+void BrightnessOSDWidget::themeUpdated()
+{
+ //Set a font which makes the text appear as big (height-wise) as the meter.
+ //QFont font = QFont(m_volumeLabel->nativeWidget()->font());
+ Plasma::Theme* theme = Plasma::Theme::defaultTheme();
+
+
+ QPalette palette = m_volumeLabel->palette();
+ palette.setColor(QPalette::WindowText, theme->color(Plasma::Theme::TextColor));
+ m_volumeLabel->setPalette(palette);
+
+ QFont font = theme->font(Plasma::Theme::DefaultFont);
+ font.setPointSize(15);
+ m_volumeLabel->setFont(font);
+ QFontMetrics qfm(font);
+ QRect textSize = qfm.boundingRect("100 % ");
+
+ int widthHint = textSize.width();
+ int heightHint = textSize.height();
+ //setCurrentVolume(100,false);
+ m_volumeLabel->setMaximumHeight(heightHint);
+ m_volumeLabel->setMinimumWidth(widthHint);
+ m_volumeLabel->nativeWidget()->setFixedWidth(widthHint);
+
+ //Cache the icon pixmaps
+ QFontMetrics fm(m_volumeLabel->font());
+ QSize iconSize = QSize(fm.height(), fm.height());
+
+ m_brightnessPixmap = KIcon("video-display").pixmap(iconSize);
+
+ //Setup the widgets
+ m_background->setImagePath("widgets/tooltip");
+
+ m_iconLabel->nativeWidget()->setPixmap(m_brightnessPixmap);
+ m_iconLabel->nativeWidget()->setFixedSize(iconSize);
+ m_iconLabel->setMinimumSize(iconSize);
+ m_iconLabel->setMaximumSize(iconSize);
+
+ m_meter->setMaximumHeight(iconSize.height());
+}
+
+
#include "brightnessosdwidget.moc"
diff --git a/powerdevil/daemon/brightnessosdwidget.h \
b/powerdevil/daemon/brightnessosdwidget.h index 62f4408..9a76c21 100644
--- a/powerdevil/daemon/brightnessosdwidget.h
+++ b/powerdevil/daemon/brightnessosdwidget.h
@@ -54,6 +54,8 @@ protected:
virtual void resizeEvent(QResizeEvent *);
void showEvent(QShowEvent *event);
+ void themeUpdated();
+
private:
Plasma::FrameSvg *m_background;
QGraphicsScene *m_scene;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic