summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--playerwidget.cpp28
-rw-r--r--playerwidget.h3
2 files changed, 31 insertions, 0 deletions
diff --git a/playerwidget.cpp b/playerwidget.cpp
index 5e6e648..e55d1a5 100644
--- a/playerwidget.cpp
+++ b/playerwidget.cpp
@@ -20,6 +20,8 @@
#include <QSettings>
#include <QMenu>
#include <QMessageBox>
+#include <QSystemTrayIcon>
+#include <QPainter>
#include <QApplication>
#include <algorithm>
@@ -49,6 +51,11 @@ void PlayerWidget::setupGui(){
connect(mPlayer, SIGNAL(positionChanged(qint64)), this, SLOT(setPosition(qint64)));
connect(mPlayer, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(continuePlaying(QMediaPlayer::MediaStatus)));
+ //tray icon
+ mTrayIcon = new QSystemTrayIcon(this);
+ mTrayIcon->setIcon(QIcon(":/stop.png"));
+ mTrayIcon->show();
+
//THE view
mView = new BeetView;
mView->setAlternatingRowColors(true);
@@ -308,6 +315,19 @@ void PlayerWidget::createActions(){
QWidget* spacer2 = new QWidget();
spacer2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
mToolBar->addWidget(spacer2);
+
+ QMenu *trayMenu = new QMenu;
+ trayMenu->addAction(mPlayA);
+ trayMenu->addAction(mStopA);
+ trayMenu->addAction(mPauseA);
+ trayMenu->addSeparator();
+ trayMenu->addAction(nextA);
+ trayMenu->addAction(previousA);
+ trayMenu->addSeparator();
+ QAction *quitA = new QAction(tr("Quit"), this);
+ connect(quitA, SIGNAL(triggered()), qApp, SLOT(quit()));
+ trayMenu->addAction(quitA);
+ mTrayIcon->setContextMenu(trayMenu);
}
void PlayerWidget::populateByArtist(QStandardItem *parent, const QString &filter){
@@ -581,6 +601,8 @@ void PlayerWidget::doPlay(){
mPlayA->setChecked(true);
emit playModeChanged(tr("Playing"));
emit setWinTitle(mCurWinTitle);
+ mTrayIcon->setIcon(QIcon(":/play.png"));
+ mTrayIcon->setToolTip(mCurWinTitle);
return;
}
int playListCount = mPlayListModel->rowCount();
@@ -595,6 +617,8 @@ void PlayerWidget::doPlay(){
sel = mPlayListView->selectionModel()->selectedRows();
}
playCurrent(sel.first());
+ mTrayIcon->setIcon(QIcon(":/play.png"));
+ mTrayIcon->setToolTip(mCurWinTitle);
}
void PlayerWidget::doStop(){
@@ -603,6 +627,8 @@ void PlayerWidget::doStop(){
emit playModeChanged(tr("Stopped"));
QString winTitle = QString(tr("%1 [Stopped]")).arg(qApp->applicationName());
emit setWinTitle(winTitle);
+ mTrayIcon->setIcon(QIcon(":/stop.png"));
+ mTrayIcon->setToolTip(tr("[Stopped]"));
}
void PlayerWidget::doPause(){
@@ -611,6 +637,8 @@ void PlayerWidget::doPause(){
emit playModeChanged(tr("Paused"));
QString winTitle = QString(tr("%1 [Paused]")).arg(qApp->applicationName());
emit setWinTitle(winTitle);
+ mTrayIcon->setIcon(QIcon(":/pause.png"));
+ mTrayIcon->setToolTip(tr("[Paused]"));
}
void PlayerWidget::doPlayOrPause(){
diff --git a/playerwidget.h b/playerwidget.h
index a9259e2..67e89be 100644
--- a/playerwidget.h
+++ b/playerwidget.h
@@ -3,6 +3,7 @@
#include <QWidget>
#include <QMediaPlayer>
+#include <QIcon>
class QStandardItemModel;
class QStandardItem;
@@ -15,6 +16,7 @@ class QToolBar;
class QAction;
class BeetPlayerProxy;
class BeetView;
+class QSystemTrayIcon;
class PlayerWidget : public QWidget {
Q_OBJECT
@@ -107,6 +109,7 @@ class PlayerWidget : public QWidget {
quint64 mPlayListLength;
QString mCurDir;
QString mCurWinTitle;
+ QSystemTrayIcon *mTrayIcon;
};
#endif // PLAYERWIDGET_H