rendered paste bodyIndex: 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;