aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/notifier/popupwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/General/notifier/popupwidget.cpp')
-rw-r--r--src/plugins/General/notifier/popupwidget.cpp111
1 files changed, 76 insertions, 35 deletions
diff --git a/src/plugins/General/notifier/popupwidget.cpp b/src/plugins/General/notifier/popupwidget.cpp
index 98c4e3462..9e7c3cc53 100644
--- a/src/plugins/General/notifier/popupwidget.cpp
+++ b/src/plugins/General/notifier/popupwidget.cpp
@@ -26,6 +26,7 @@
#include <QPalette>
#include <QSettings>
#include <QDir>
+#include <QApplication>
#include <qmmp/soundcore.h>
#include "popupwidget.h"
@@ -36,6 +37,48 @@ PopupWidget::PopupWidget(QWidget *parent)
setWindowFlags(Qt::X11BypassWindowManagerHint |
Qt::WindowStaysOnTopHint | Qt::Window);
setFrameStyle(QFrame::Box | QFrame::Plain);
+
+ QHBoxLayout *hlayout = new QHBoxLayout(this);
+ QLabel *pixlabel = new QLabel(this);
+ pixlabel->setPixmap(QPixmap(":/notifier_icon.png"));
+ pixlabel->setFixedSize(32,32);
+ hlayout->addWidget(pixlabel);
+ //layout
+ QVBoxLayout *vlayout = new QVBoxLayout();
+ hlayout->addLayout (vlayout);
+ setLayout(hlayout);
+ //first line
+ m_label1 = new QLabel(this);
+ vlayout->addWidget(m_label1);
+ //second line
+ m_label2 = new QLabel(this);
+ vlayout->addWidget(m_label2);
+ //resize(sizeHint()); //update size hint
+ //settings
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Notifier");
+ int delay = settings.value("message_delay", 2000).toInt();
+ m_pos = settings.value("message_pos", PopupWidget::BOTTOMLEFT).toUInt();
+ setWindowOpacity(settings.value("opacity", 1.0).toDouble());
+ settings.endGroup();
+ //timer
+ m_timer = new QTimer(this);
+ m_timer->setInterval(delay);
+ m_timer->setSingleShot (TRUE);
+ connect(m_timer, SIGNAL(timeout ()), SLOT(deleteLater()));
+}
+
+PopupWidget::~PopupWidget()
+{}
+
+void PopupWidget::mousePressEvent (QMouseEvent *)
+{
+ deleteLater();
+}
+
+void PopupWidget::showMetaData()
+{
+ m_timer->stop();
SoundCore *core = SoundCore::instance();
QString title = core->metaData(Qmmp::TITLE);
if (title.isEmpty())
@@ -45,56 +88,54 @@ PopupWidget::PopupWidget(QWidget *parent)
title.append(" ");
title.append(QString("(%1:%2)").arg(core->length()/60).arg(core->length()%60, 2, 10, QChar('0')));
}
-
- QHBoxLayout *hlayout = new QHBoxLayout(this);
- QLabel *pixlabel = new QLabel(this);
- pixlabel->setPixmap(QPixmap(":/notifier_icon.png"));
- pixlabel->setFixedSize(32,32);
- hlayout->addWidget(pixlabel);
-
- QVBoxLayout *vlayout = new QVBoxLayout();
- QLabel *label1 = new QLabel("<b>"+title+"</b>", this);
- vlayout->addWidget(label1);
+ m_label1->setText("<b>" + title + "</b>");
QString info = core->metaData(Qmmp::ARTIST);
if (!info.isEmpty() && !core->metaData(Qmmp::ALBUM).isEmpty())
info.append(" - " + core->metaData(Qmmp::ALBUM));
if (!info.isEmpty())
{
- QLabel *label2 = new QLabel(info, this);
- vlayout->addWidget(label2);
+ m_label2->setText(info);
+ m_label2->show();
}
+ else
+ m_label2->hide();
+ qApp->processEvents();
+ resize(sizeHint());
+ qApp->processEvents();
+ updatePosition();
+ qApp->processEvents();
+ show();
+ m_timer->start();
+}
- hlayout->addLayout (vlayout);
- setLayout(hlayout);
+void PopupWidget::showVolume(int v)
+{
+ m_timer->stop();
+ m_label1->setText("<b>" + tr("Volume:") + QString (" %1\%").arg(v)+ + "</b>");
+
+ m_label2->hide();
+ qApp->processEvents();
resize(sizeHint());
- QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- settings.beginGroup("Notifier");
- int delay = settings.value("message_delay", 2000).toInt();
- uint pos = settings.value("message_pos", PopupWidget::BOTTOMLEFT).toUInt();
- settings.endGroup();
+ qApp->processEvents();
+ updatePosition();
+ qApp->processEvents();
+ show();
+ m_timer->start();
+}
+
+void PopupWidget::updatePosition()
+{
//calculate widget position
int x = 5, y = 5;
QSize desktopSize = QApplication::desktop()->size();
- if (pos == LEFT || pos == RIGHT || pos == CENTER)
+ if (m_pos == LEFT || m_pos == RIGHT || m_pos == CENTER)
y = desktopSize.height()/2 - height()/2;
- else if (pos == BOTTOMLEFT || pos == BOTTOM || pos == BOTTOMRIGHT)
+ else if (m_pos == BOTTOMLEFT || m_pos == BOTTOM || m_pos == BOTTOMRIGHT)
y = desktopSize.height() - height() - 5;
- if (pos == TOP || pos == BOTTOM || pos == CENTER)
+ if (m_pos == TOP || m_pos == BOTTOM || m_pos == CENTER)
x = desktopSize.width()/2 - width()/2;
- else if (pos == TOPRIGHT || pos == RIGHT || pos == BOTTOMRIGHT)
+ else if (m_pos == TOPRIGHT || m_pos == RIGHT || m_pos == BOTTOMRIGHT)
x = desktopSize.width() - width() - 5;
-
move (x,y);
- QTimer::singleShot(delay, this, SLOT(deleteLater()));
- show();
-}
-
-PopupWidget::~PopupWidget()
-{}
-
-void PopupWidget::mousePressEvent (QMouseEvent *)
-{
- deleteLater();
}
-