diff --git a/mythtv/programs/mythfrontend/galleryconfig.cpp b/mythtv/programs/mythfrontend/galleryconfig.cpp index 4f98b194964..79f9ed84894 100644 --- a/mythtv/programs/mythfrontend/galleryconfig.cpp +++ b/mythtv/programs/mythfrontend/galleryconfig.cpp @@ -98,6 +98,12 @@ SlideSettings::SlideSettings() : VerticalConfigurationGroup() transition->setHelpText(tr("The time that each transition lasts, in milliseconds.")); addChild(transition); + HostSpinBox *delay = new HostSpinBox("GalleryStatusDelay", 0, 10000, 50); + delay->setLabel(tr("Status Delay (ms)")); + delay->setHelpText(tr("The delay before showing the Loading/Playing status, " + "in milliseconds.")); + addChild(delay); + HostCheckBox *browseTran = new HostCheckBox("GalleryBrowseTransition"); browseTran->setLabel(tr("Use transitions when browsing")); browseTran->setHelpText(tr("When cleared, transitions will only be used " diff --git a/mythtv/programs/mythfrontend/galleryslideview.cpp b/mythtv/programs/mythfrontend/galleryslideview.cpp index 8006a6e4098..673b674b4a7 100644 --- a/mythtv/programs/mythfrontend/galleryslideview.cpp +++ b/mythtv/programs/mythfrontend/galleryslideview.cpp @@ -50,6 +50,11 @@ GallerySlideView::GallerySlideView(MythScreenStack *parent, const char *name, m_timer.setSingleShot(true); m_timer.setInterval(m_slideShowTime); connect(&m_timer, SIGNAL(timeout()), this, SLOT(ShowNextSlide())); + + // Initialise status delay timer + m_delay.setSingleShot(true); + m_delay.setInterval(gCoreContext->GetNumSetting("GalleryStatusDelay", 0)); + connect(&m_delay, SIGNAL(timeout()), this, SLOT(ShowStatus())); } @@ -421,8 +426,7 @@ void GallerySlideView::Play(bool useTransition) m_playing = true; if (!m_suspended) m_timer.start(); - if (m_uiStatus) - SetStatus(tr("Playing")); + SetStatus(tr("Playing"), true); } @@ -544,7 +548,7 @@ void GallerySlideView::ShowSlide(int direction) // Load image from file if (!m_slides.Load(im, direction)) // Image not yet available: show loading status - SetStatus(tr("Loading")); + SetStatus(tr("Loading"), true); } @@ -574,16 +578,7 @@ void GallerySlideView::SlideAvailable(int count) Slide &next = m_slides.GetNext(); // Update loading status - if (m_uiStatus) - { - if (!next.FailedLoad()) - - m_uiStatus->SetVisible(false); - - else if (ImagePtrK im = next.GetImageData()) - - SetStatus(tr("Failed to load %1").arg(im->m_filePath)); - } + ClearStatus(next); // Update slide counts if (m_uiSlideCount) @@ -723,11 +718,37 @@ void GallerySlideView::PlayVideo() \brief Displays status text (Loading, Paused etc.) \param msg Text to show */ -void GallerySlideView::SetStatus(QString msg) +void GallerySlideView::SetStatus(QString msg, bool delay) { if (m_uiStatus) { m_uiStatus->SetText(msg); - m_uiStatus->SetVisible(true); + if (delay) + m_delay.start(); + else + ShowStatus(); } } + + +void GallerySlideView::ShowStatus() +{ + if (m_uiStatus) + m_uiStatus->SetVisible(true); +} + +void GallerySlideView::ClearStatus(Slide &slide) +{ + if (m_uiStatus) + { + m_delay.stop(); + + if (!slide.FailedLoad()) + + m_uiStatus->SetVisible(false); + + else if (ImagePtrK im = slide.GetImageData()) + + SetStatus(tr("Failed to load %1").arg(im->m_filePath)); + } +} \ No newline at end of file diff --git a/mythtv/programs/mythfrontend/galleryslideview.h b/mythtv/programs/mythfrontend/galleryslideview.h index 575e044612f..8d44c0dc973 100644 --- a/mythtv/programs/mythfrontend/galleryslideview.h +++ b/mythtv/programs/mythfrontend/galleryslideview.h @@ -46,7 +46,8 @@ public slots: void Transform(ImageFileTransform); void Zoom(int = 0); void Pan(QPoint = QPoint(0, 0)); - void SetStatus(QString msg); + void SetStatus(QString msg, bool delay = false); + void ClearStatus(Slide &next); private slots: void ShowPrevSlide(); @@ -63,6 +64,7 @@ private slots: void ShowCaptions(); void HideCaptions(); void PlayVideo(); + void ShowStatus(); private: // Theme widgets @@ -81,6 +83,7 @@ private slots: InfoList m_infoList; //!< Image details overlay int m_slideShowTime; //!< Time to display a slide in a slideshow QTimer m_timer; //!< Slide duration timer + QTimer m_delay; //!< Status delay timer bool m_playing; //!< True when slideshow is running bool m_suspended; //!< True when transition is running or video playing bool m_showCaptions; //!< If true, captions are shown