summaryrefslogtreecommitdiffstats
path: root/playerwidget.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2017-03-08 13:37:16 +0100
committerArno <arno@disconnect.de>2017-03-08 13:37:16 +0100
commitdf755a13817da13b665e687a46194c7ef9392bf3 (patch)
treedcd364b28512849bb235810961b44383809349e4 /playerwidget.cpp
parent3d60948da05a7f97b11c73e0aa77242502da8586 (diff)
downloadBeetPlayer-df755a13817da13b665e687a46194c7ef9392bf3.tar.gz
BeetPlayer-df755a13817da13b665e687a46194c7ef9392bf3.tar.bz2
BeetPlayer-df755a13817da13b665e687a46194c7ef9392bf3.zip
Create tray icon with a context menu
Diffstat (limited to 'playerwidget.cpp')
-rw-r--r--playerwidget.cpp28
1 files changed, 28 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(){