diff --git a/applets/mediaframe/package/contents/ui/main.qml b/applets/mediaframe/package/contents/ui/main.qml --- a/applets/mediaframe/package/contents/ui/main.qml +++ b/applets/mediaframe/package/contents/ui/main.qml @@ -296,7 +296,7 @@ PlasmaComponents.Button { anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter - enabled: (items.historyLength() > 0) && !isTransitioning + enabled: (items.historyLength > 0) && !isTransitioning iconSource: "arrow-left" onClicked: { nextTimer.stop() diff --git a/applets/mediaframe/plugin/mediaframe.h b/applets/mediaframe/plugin/mediaframe.h --- a/applets/mediaframe/plugin/mediaframe.h +++ b/applets/mediaframe/plugin/mediaframe.h @@ -33,6 +33,7 @@ Q_OBJECT Q_PROPERTY(int count READ count NOTIFY countChanged) + Q_PROPERTY(int historyLength READ historyLength NOTIFY historyLengthChanged) Q_PROPERTY(bool random READ random WRITE setRandom NOTIFY randomChanged) public: @@ -49,6 +50,8 @@ int count() const; + int historyLength() const; + bool random() const; void setRandom(bool random); @@ -69,14 +72,14 @@ Q_INVOKABLE void pushHistory(const QString &string); Q_INVOKABLE QString popHistory(); - Q_INVOKABLE int historyLength(); Q_INVOKABLE void pushFuture(const QString &string); Q_INVOKABLE QString popFuture(); Q_INVOKABLE int futureLength(); Q_SIGNALS: void countChanged(); + void historyLengthChanged(); void randomChanged(); void itemChanged(const QString &path); diff --git a/applets/mediaframe/plugin/mediaframe.cpp b/applets/mediaframe/plugin/mediaframe.cpp --- a/applets/mediaframe/plugin/mediaframe.cpp +++ b/applets/mediaframe/plugin/mediaframe.cpp @@ -324,21 +324,32 @@ void MediaFrame::pushHistory(const QString &string) { + const int oldCount = m_history.count(); + m_history.prepend(string); // Keep a sane history size - if(m_history.length() > 50) + if (m_history.length() > 50) { m_history.removeLast(); + } + + if (oldCount != m_history.count()) { + emit historyLengthChanged(); + } } QString MediaFrame::popHistory() { - if(m_history.isEmpty()) + if (m_history.isEmpty()) { return QString(); - return m_history.takeFirst(); + } + + const QString item = m_history.takeFirst(); + emit historyLengthChanged(); + return item; } -int MediaFrame::historyLength() +int MediaFrame::historyLength() const { return m_history.length(); }