All pastes #896193 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-02-08 13:16 UTC
rendered paste body
Index: seekslider.cpp
===================================================================
--- seekslider.cpp      (revision 771149)
+++ seekslider.cpp      (working copy)
@@ -39,6 +39,7 @@
 {
     K_D(SeekSlider);
     connect(&d->slider, SIGNAL(valueChanged(int)), SLOT(_k_seek(int)));
+    connect(&d->slider, SIGNAL(sliderReleased()), SLOT(_k_sliderReleased()));
     setMediaObject(mo);
 }

@@ -85,6 +86,9 @@
 void SeekSliderPrivate::_k_seek(int msec)
 {
     if (!ticking && media) {
+        if (media->state() == Phonon::StoppedState) {
+            media->play();
+        }
         media->seek(msec);
     }
 }
@@ -137,6 +141,16 @@
     iconLabel.setPixmap(icon.pixmap(iconSize, x ? QIcon::Normal : QIcon::Disabled));
 }

+void SeekSliderPrivate::_k_sliderReleased()
+{
+    if (media->state() == Phonon::StoppedState) {
+        setEnabled(false);
+        ticking = true;
+        slider.setValue(0);
+        ticking = false;
+    }
+}
+
 void SeekSliderPrivate::_k_stateChanged(State newstate)
 {
     if (!media || !media->isSeekable()) {
@@ -155,6 +169,9 @@
         setEnabled(true);
         break;
     case Phonon::StoppedState:
+        if (slider.isSliderDown()) {
+            break;
+        }
     case Phonon::LoadingState:
     case Phonon::ErrorState:
         setEnabled(false);
Index: seekslider.h
===================================================================
--- seekslider.h        (revision 771149)
+++ seekslider.h        (working copy)
@@ -138,6 +138,7 @@
         Q_PRIVATE_SLOT(k_func(), void _k_tick(qint64))
         Q_PRIVATE_SLOT(k_func(), void _k_length(qint64))
         Q_PRIVATE_SLOT(k_func(), void _k_seekableChanged(bool))
+        Q_PRIVATE_SLOT(k_func(), void _k_sliderReleased())
 };

 } // namespace Phonon
Index: seekslider_p.h
===================================================================
--- seekslider_p.h      (revision 771149)
+++ seekslider_p.h      (working copy)
@@ -72,6 +72,7 @@
         void _k_tick(qint64);
         void _k_length(qint64);
         void _k_seekableChanged(bool);
+        void _k_sliderReleased();

         QBoxLayout layout;
         QSlider slider;