diff --git a/mythtv/libs/libmythui/mythprogressdialog.cpp b/mythtv/libs/libmythui/mythprogressdialog.cpp index d9842ef..aef4fc8 100644 --- a/mythtv/libs/libmythui/mythprogressdialog.cpp +++ b/mythtv/libs/libmythui/mythprogressdialog.cpp @@ -13,6 +13,7 @@ MythUIBusyDialog::MythUIBusyDialog(const QString &message, m_message = message; else m_message = tr("Please Wait..."); + m_origMessage = m_message; m_messageText = NULL; } @@ -29,6 +30,32 @@ bool MythUIBusyDialog::Create(void) return true; } +void MythUIBusyDialog::SetMessage(const QString &message) +{ + m_newMessageLock.lock(); + m_newMessage = message; + m_haveNewMessage = true; + m_newMessageLock.unlock(); +} + +void MythUIBusyDialog::ResetMessage(void) +{ + SetMessage(m_origMessage); +} + +void MythUIBusyDialog::Pulse(void) +{ + if (m_haveNewMessage && m_messageText) + { + m_newMessageLock.lock(); + m_message = m_newMessage; + m_messageText->SetText(m_message); + m_newMessageLock.unlock(); + } + + MythUIType::Pulse(); +} + bool MythUIBusyDialog::keyPressEvent(QKeyEvent *event) { QStringList actions; diff --git a/mythtv/libs/libmythui/mythprogressdialog.h b/mythtv/libs/libmythui/mythprogressdialog.h index b567c18..748c939 100644 --- a/mythtv/libs/libmythui/mythprogressdialog.h +++ b/mythtv/libs/libmythui/mythprogressdialog.h @@ -36,9 +36,17 @@ class MPUBLIC MythUIBusyDialog : public MythScreenType bool Create(void); bool keyPressEvent(QKeyEvent *event); + void SetMessage(const QString &message); + void ResetMessage(void); + + virtual void Pulse(void); protected: + QString m_origMessage; QString m_message; + bool m_haveNewMessage; + QString m_newMessage; + QMutex m_newMessageLock; MythUIText *m_messageText; }; diff --git a/mythtv/libs/libmythui/mythscreentype.cpp b/mythtv/libs/libmythui/mythscreentype.cpp index 6b9f3a4..4f6de20 100644 --- a/mythtv/libs/libmythui/mythscreentype.cpp +++ b/mythtv/libs/libmythui/mythscreentype.cpp @@ -317,6 +317,18 @@ void MythScreenType::CloseBusyPopup(void) m_BusyPopup = NULL; } +void MythScreenType::SetBusyPopupMessage(const QString &message) +{ + if (m_BusyPopup) + m_BusyPopup->SetMessage(message); +} + +void MythScreenType::ResetBusyPopupMessage(void) +{ + if (m_BusyPopup) + m_BusyPopup->ResetMessage(); +} + bool MythScreenType::IsInitialized(void) const { return m_IsInitialized; diff --git a/mythtv/libs/libmythui/mythscreentype.h b/mythtv/libs/libmythui/mythscreentype.h index 1dedf53..66bd7b6 100644 --- a/mythtv/libs/libmythui/mythscreentype.h +++ b/mythtv/libs/libmythui/mythscreentype.h @@ -103,6 +103,8 @@ class MPUBLIC MythScreenType : public MythUIType void OpenBusyPopup(QString message = ""); void CloseBusyPopup(void); + void SetBusyPopupMessage(const QString &message); + void ResetBusyPopupMessage(void); bool m_FullScreen; bool m_IsDeleting;