#include "statusbarmessagelabel.h"
-#include <kglobalsettings.h>
+#include <kcolorscheme.h>
+#include <kcolorutils.h>
#include <kiconloader.h>
#include <kicon.h>
#include <klocale.h>
#include <QFontMetrics>
#include <QPainter>
-#include <QPaintEvent>
+#include <QKeyEvent>
#include <QPushButton>
#include <QPixmap>
-#include <QResizeEvent>
#include <QTimer>
StatusBarMessageLabel::StatusBarMessageLabel(QWidget* parent) :
m_timer(0),
m_closeButton(0)
{
- setMinimumHeight(K3Icon::SizeSmall);
+ setMinimumHeight(KIconLoader::SizeSmall);
+
+ QPalette palette;
+ palette.setColor(QPalette::Background, Qt::transparent);
+ setPalette(palette);
m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()),
this, SLOT(timerDone()));
- m_closeButton = new QPushButton(i18n("Close"), this);
+ m_closeButton = new QPushButton(i18nc("@action:button", "Close"), this);
m_closeButton->hide();
connect(m_closeButton, SIGNAL(clicked()),
this, SLOT(closeErrorMessage()));
break;
case DolphinStatusBar::Error:
- iconName = "dialog-error";
m_timer->start(100);
m_state = Illuminate;
QPainter painter(this);
// draw background
- QColor backgroundColor(palette().brush(QPalette::Background).color());
- QColor foregroundColor(KGlobalSettings::textColor());
+ QColor backgroundColor = palette().brush(QPalette::Background).color();
+ QColor foregroundColor = KColorScheme(QPalette::Active, KColorScheme::View).foreground().color();
if (m_illumination > 0) {
- backgroundColor = mixColors(backgroundColor, QColor(255, 255, 128), m_illumination);
- foregroundColor = mixColors(foregroundColor, QColor(0, 0, 0), m_illumination);
+ // TODO: are there foreground and background colors available for
+ // "error messages"?
+ backgroundColor.setRgb(255, 255, 0, m_illumination);
+ QColor mixColor(0, 0, 0, m_illumination);
+ foregroundColor = KColorUtils::overlayColors(foregroundColor, mixColor);
}
painter.setBrush(backgroundColor);
painter.setPen(backgroundColor);
switch (m_state) {
case Illuminate: {
// increase the illumination
- if (m_illumination < 100) {
- m_illumination += 20;
+ const int illumination_max = 128;
+ if (m_illumination < illumination_max) {
+ m_illumination += 32;
+ if (m_illumination > illumination_max) {
+ m_illumination = illumination_max;
+ }
update();
} else {
m_state = Illuminated;
return width() - m_pixmap.width() - (borderGap() * 4) - buttonWidth;
}
-QColor StatusBarMessageLabel::mixColors(const QColor& c1,
- const QColor& c2,
- int percent) const
-{
- const int recip = 100 - percent;
- const int red = (c1.red() * recip + c2.red() * percent) / 100;
- const int green = (c1.green() * recip + c2.green() * percent) / 100;
- const int blue = (c1.blue() * recip + c2.blue() * percent) / 100;
- return QColor(red, green, blue);
-}
-
void StatusBarMessageLabel::updateCloseButtonPosition()
{
const int x = width() - m_closeButton->width() - borderGap();