aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-04-22 21:50:15 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-04-22 21:50:15 +0000
commit2e6fa0a1453066f1560270466797b2161d7851c4 (patch)
tree29c6f674383936f9b617a5beef6b48342ac875af
parente7b06c4b734a9978243751e3f44afa8b2faa21ff (diff)
downloadqmmp-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.cpp9
-rw-r--r--src/plugins/Ui/qsui/mainwindow.h3
-rw-r--r--src/plugins/Ui/skinned/mainwindow.cpp12
-rw-r--r--src/plugins/Ui/skinned/mainwindow.h3
-rw-r--r--src/plugins/Ui/skinned/textscroller.cpp19
-rw-r--r--src/plugins/Ui/skinned/textscroller.h3
-rw-r--r--src/qmmpui/mediaplayer.cpp10
-rw-r--r--src/qmmpui/mediaplayer.h13
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