From df755a13817da13b665e687a46194c7ef9392bf3 Mon Sep 17 00:00:00 2001 From: Arno Date: Wed, 8 Mar 2017 13:37:16 +0100 Subject: Create tray icon with a context menu --- playerwidget.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'playerwidget.cpp') diff --git a/playerwidget.cpp b/playerwidget.cpp index 5e6e648..e55d1a5 100644 --- a/playerwidget.cpp +++ b/playerwidget.cpp @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include #include @@ -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(){ -- cgit v1.2.3-70-g09d2