diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-04-22 21:50:15 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2017-04-22 21:50:15 +0000 |
| commit | 2e6fa0a1453066f1560270466797b2161d7851c4 (patch) | |
| tree | 29c6f674383936f9b617a5beef6b48342ac875af | |
| parent | e7b06c4b734a9978243751e3f44afa8b2faa21ff (diff) | |
| download | qmmp-2e6fa0a1453066f1560270466797b2161d7851c4.tar.gz qmmp-2e6fa0a1453066f1560270466797b2161d7851c4.tar.bz2 qmmp-2e6fa0a1453066f1560270466797b2161d7851c4.zip | |
clear window title when playback is finished (#301)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7128 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Ui/qsui/mainwindow.cpp | 9 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/mainwindow.h | 3 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/mainwindow.cpp | 12 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/mainwindow.h | 3 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/textscroller.cpp | 19 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/textscroller.h | 3 | ||||
| -rw-r--r-- | src/qmmpui/mediaplayer.cpp | 10 | ||||
| -rw-r--r-- | src/qmmpui/mediaplayer.h | 13 |
8 files changed, 53 insertions, 19 deletions
diff --git a/src/plugins/Ui/qsui/mainwindow.cpp b/src/plugins/Ui/qsui/mainwindow.cpp index ee13866a6..084e05cbf 100644 --- a/src/plugins/Ui/qsui/mainwindow.cpp +++ b/src/plugins/Ui/qsui/mainwindow.cpp @@ -68,6 +68,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) m_titleFormatter.setPattern("%if(%p,%p - %t,%t)"); //qmmp objects m_player = MediaPlayer::instance(); + connect(m_player, SIGNAL(playbackFinished()), SLOT(restoreWindowTitle())); m_core = SoundCore::instance(); m_pl_manager = PlayListManager::instance(); m_uiHelper = UiHelper::instance(); @@ -156,6 +157,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) createActions(); readSettings(); updateStatus(); + restoreWindowTitle(); } MainWindow::~MainWindow() @@ -223,7 +225,7 @@ void MainWindow::showState(Qmmp::State state) m_positionSlider->setValue(0); m_analyzer->clearCover(); qobject_cast<CoverWidget *>(m_ui.coverDockWidget->widget())->clearCover(); - setWindowTitle("Qmmp"); + //setWindowTitle("Qmmp"); break; default: ; @@ -928,3 +930,8 @@ void MainWindow::editToolBar() } e->deleteLater(); } + +void MainWindow::restoreWindowTitle() +{ + setWindowTitle(tr("Qmmp")); +} diff --git a/src/plugins/Ui/qsui/mainwindow.h b/src/plugins/Ui/qsui/mainwindow.h index e2284f9db..6aa2c15a3 100644 --- a/src/plugins/Ui/qsui/mainwindow.h +++ b/src/plugins/Ui/qsui/mainwindow.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009-2016 by Ilya Kotov * + * Copyright (C) 2009-2017 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -89,6 +89,7 @@ private slots: void setTitleBarsVisible(bool visible); void setToolBarsBlocked(bool blocked); void editToolBar(); + void restoreWindowTitle(); private: void closeEvent(QCloseEvent *); diff --git a/src/plugins/Ui/skinned/mainwindow.cpp b/src/plugins/Ui/skinned/mainwindow.cpp index 5ffe3127f..24575e88f 100644 --- a/src/plugins/Ui/skinned/mainwindow.cpp +++ b/src/plugins/Ui/skinned/mainwindow.cpp @@ -62,7 +62,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowCloseButtonHint | Qt::WindowMinMaxButtonsHint | Qt::WindowSystemMenuHint); - setWindowTitle("Qmmp"); + restoreWindowTitle(); m_titleFormatter.setPattern("%if(%p,%p - %t,%t)"); @@ -105,6 +105,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) m_vis = MainVisual::instance(); Visual::add(m_vis); //connections + connect (m_player,SIGNAL(playbackFinished()), SLOT(restoreWindowTitle())); connect (m_playlist,SIGNAL(next()),SLOT(next())); connect (m_playlist,SIGNAL(prev()),SLOT(previous())); connect (m_playlist,SIGNAL(play()),SLOT(play())); @@ -189,10 +190,6 @@ void MainWindow::showState(Qmmp::State state) break; case Qmmp::Stopped: m_playlist->setTime(-1); - if (m_pl_manager->currentPlayList()->currentTrack()) - setWindowTitle(m_titleFormatter.format(m_pl_manager->currentPlayList()->currentTrack())); - else - setWindowTitle("Qmmp"); break; } } @@ -538,3 +535,8 @@ void MainWindow::keyPressEvent(QKeyEvent *ke) ke->modifiers(), ke->text(),ke->isAutoRepeat(), ke->count()); QApplication::sendEvent(m_playlist,&event); } + +void MainWindow::restoreWindowTitle() +{ + setWindowTitle(tr("Qmmp")); +} diff --git a/src/plugins/Ui/skinned/mainwindow.h b/src/plugins/Ui/skinned/mainwindow.h index 7ceb05bbb..8817b2f0d 100644 --- a/src/plugins/Ui/skinned/mainwindow.h +++ b/src/plugins/Ui/skinned/mainwindow.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2016 by Ilya Kotov * + * Copyright (C) 2006-2017 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -87,6 +87,7 @@ private slots: void showSettings(); void forward(); void backward(); + void restoreWindowTitle(); private: //events diff --git a/src/plugins/Ui/skinned/textscroller.cpp b/src/plugins/Ui/skinned/textscroller.cpp index 214df8225..5f23229e0 100644 --- a/src/plugins/Ui/skinned/textscroller.cpp +++ b/src/plugins/Ui/skinned/textscroller.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2015 by Ilya Kotov * + * Copyright (C) 2006-2017 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -30,6 +30,7 @@ #include <qmmpui/metadataformatter.h> #include <qmmpui/playlistmanager.h> #include <qmmpui/playlistmodel.h> +#include <qmmpui/mediaplayer.h> #include "skin.h" #include "actionmanager.h" #include "textscroller.h" @@ -62,6 +63,7 @@ TextScroller::TextScroller (QWidget *parent) : QWidget (parent) connect(m_skin, SIGNAL(skinChanged()), SLOT(updateSkin())); connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(processState(Qmmp::State))); connect(m_core, SIGNAL(metaDataChanged()), SLOT(processMetaData())); + connect(MediaPlayer::instance(), SIGNAL(playbackFinished()), SLOT(clearText())); updateSkin(); } @@ -237,15 +239,9 @@ void TextScroller::processState(Qmmp::State state) updateText(); break; } - case Qmmp::Paused: - { - break; - } case Qmmp::Stopped: { - m_bufferText.clear(); - m_titleText.clear(); - updateText(); + disconnect(m_core, SIGNAL(bufferingProgress(int)), this, 0); break; } default: @@ -340,3 +336,10 @@ void TextScroller::updateText() //draw text according priority } update(); } + +void TextScroller::clearText() +{ + m_bufferText.clear(); + m_titleText.clear(); + updateText(); +} diff --git a/src/plugins/Ui/skinned/textscroller.h b/src/plugins/Ui/skinned/textscroller.h index 919f4644b..a82c2fcc5 100644 --- a/src/plugins/Ui/skinned/textscroller.h +++ b/src/plugins/Ui/skinned/textscroller.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2015 by Ilya Kotov * + * Copyright (C) 2006-2017 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -52,6 +52,7 @@ private slots: void processState(Qmmp::State state); void processMetaData(); void updateText(); + void clearText(); private: void hideEvent(QHideEvent *); diff --git a/src/qmmpui/mediaplayer.cpp b/src/qmmpui/mediaplayer.cpp index 40cd40c26..7f00febd6 100644 --- a/src/qmmpui/mediaplayer.cpp +++ b/src/qmmpui/mediaplayer.cpp @@ -22,6 +22,7 @@ #include <QString> #include <QTranslator> #include <QLocale> +#include <QTimer> #include "playlistitem.h" #include "qmmpuisettings.h" #include "mediaplayer.h" @@ -37,6 +38,10 @@ MediaPlayer::MediaPlayer(QObject *parent) m_pl_manager = 0; m_core = 0; m_skips = 0; + m_finishTimer = new QTimer(this); + m_finishTimer->setSingleShot(true); + m_finishTimer->setInterval(500); + connect(m_finishTimer, SIGNAL(timeout()), SIGNAL(playbackFinished())); QTranslator *translator = new QTranslator(parent); QString locale = Qmmp::systemLanguageID(); translator->load(QString(":/libqmmpui_") + locale); @@ -177,7 +182,12 @@ void MediaPlayer::processState(Qmmp::State state) m_nextUrl.clear(); break; case Qmmp::Playing: + m_finishTimer->stop(); m_skips = 0; + break; + case Qmmp::Stopped: + m_finishTimer->start(); + break; default: ; } diff --git a/src/qmmpui/mediaplayer.h b/src/qmmpui/mediaplayer.h index 2d2162527..08622cdeb 100644 --- a/src/qmmpui/mediaplayer.h +++ b/src/qmmpui/mediaplayer.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008-2013 by Ilya Kotov * + * Copyright (C) 2008-2017 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -26,6 +26,7 @@ class QmmpUiSettings; +class QTimer; /*! @brief The MediaPlayer class provides a simple way to use SoundCore and PlayListModel together. @@ -37,7 +38,7 @@ class MediaPlayer : public QObject public: /*! * Object constructor, - * @param parent Parent object + * @param parent Parent object. */ MediaPlayer(QObject *parent = 0); /*! @@ -53,6 +54,13 @@ public: */ PlayListManager *playListManager(); +signals: + /*! + * Signal emitted when playlist has finished or playback has been stopped by user. + * This signal should be used to reset/restore window title. + */ + void playbackFinished(); + public slots: /*! * Starts playback. @@ -84,6 +92,7 @@ private: static MediaPlayer* m_instance; int m_skips; QString m_nextUrl; + QTimer *m_finishTimer; }; #endif |
