diff options
author | Arno <arno@disconnect.de> | 2017-03-08 13:37:16 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-03-08 13:37:16 +0100 |
commit | df755a13817da13b665e687a46194c7ef9392bf3 (patch) | |
tree | dcd364b28512849bb235810961b44383809349e4 | |
parent | 3d60948da05a7f97b11c73e0aa77242502da8586 (diff) | |
download | BeetPlayer-df755a13817da13b665e687a46194c7ef9392bf3.tar.gz BeetPlayer-df755a13817da13b665e687a46194c7ef9392bf3.tar.bz2 BeetPlayer-df755a13817da13b665e687a46194c7ef9392bf3.zip |
Create tray icon with a context menu
-rw-r--r-- | playerwidget.cpp | 28 | ||||
-rw-r--r-- | playerwidget.h | 3 |
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 |