]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Postpone the creating of the media object until the play- or stop-button has been...
authorPeter Penz <peter.penz19@gmail.com>
Sat, 31 Jan 2009 13:04:40 +0000 (13:04 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 31 Jan 2009 13:04:40 +0000 (13:04 +0000)
CCMAIL: kretz@kde.org
CCMAIL: kdedevel@etotheipiplusone.com

svn path=/trunk/KDE/kdebase/apps/; revision=919063

src/panels/information/phononwidget.cpp
src/panels/information/phononwidget.h

index d52ae9d8a4ddc6c59e8f78bc0e9805704e9668f6..d27b78a3ccacaf8b8fc91eb065a16af31393e470 100644 (file)
 
 PhononWidget::PhononWidget(QWidget *parent)
     : QWidget(parent),
 
 PhononWidget::PhononWidget(QWidget *parent)
     : QWidget(parent),
-    m_media(0)
+    m_url(),
+    m_playButton(0),
+    m_stopButton(0),
+    m_media(0),
+    m_seekSlider(0)
 {
     QHBoxLayout *innerLayout = new QHBoxLayout(this);
     innerLayout->setMargin(0);
 {
     QHBoxLayout *innerLayout = new QHBoxLayout(this);
     innerLayout->setMargin(0);
@@ -46,24 +50,22 @@ PhononWidget::PhononWidget(QWidget *parent)
     m_playButton->setToolTip(i18n("play"));
     m_playButton->setIconSize(QSize(16, 16));
     m_playButton->setIcon(KIcon("media-playback-start"));
     m_playButton->setToolTip(i18n("play"));
     m_playButton->setIconSize(QSize(16, 16));
     m_playButton->setIcon(KIcon("media-playback-start"));
+    connect(m_playButton, SIGNAL(clicked()), this, SLOT(play()));
+
     m_stopButton->setToolTip(i18n("stop"));
     m_stopButton->setIconSize(QSize(16, 16));
     m_stopButton->setIcon(KIcon("media-playback-stop"));
     m_stopButton->hide();
     m_stopButton->setToolTip(i18n("stop"));
     m_stopButton->setIconSize(QSize(16, 16));
     m_stopButton->setIcon(KIcon("media-playback-stop"));
     m_stopButton->hide();
+    connect(m_stopButton, SIGNAL(clicked()), this, SLOT(stop()));
+
     m_seekSlider->setIconVisible(false);
 }
 
 void PhononWidget::setUrl(const KUrl &url)
 {
     m_seekSlider->setIconVisible(false);
 }
 
 void PhononWidget::setUrl(const KUrl &url)
 {
+    m_url = url;
     if (m_media) {
         m_media->setCurrentSource(url);
     if (m_media) {
         m_media->setCurrentSource(url);
-    } else {
-        m_media = Phonon::createPlayer(Phonon::MusicCategory, url);
-        m_media->setParent(this);
-        connect(m_playButton, SIGNAL(clicked()), m_media, SLOT(play()));
-        connect(m_stopButton, SIGNAL(clicked()), m_media, SLOT(stop()));
-        connect(m_media, SIGNAL(stateChanged(Phonon::State, Phonon::State)), SLOT(stateChanged(Phonon::State)));
-        m_seekSlider->setMediaObject(m_media);
     }
 }
 
     }
 }
 
@@ -83,3 +85,26 @@ void PhononWidget::stateChanged(Phonon::State newstate)
     }
     setUpdatesEnabled(true);
 }
     }
     setUpdatesEnabled(true);
 }
+
+void PhononWidget::play()
+{
+    requestMedia();
+    m_media->play();
+}
+
+void PhononWidget::stop()
+{
+    requestMedia();
+    m_media->stop();
+}
+
+void PhononWidget::requestMedia()
+{
+    if (!m_media) {
+        m_media = Phonon::createPlayer(Phonon::MusicCategory, m_url);
+        m_media->setParent(this);
+        connect(m_media, SIGNAL(stateChanged(Phonon::State, Phonon::State)), SLOT(stateChanged(Phonon::State)));
+        m_seekSlider->setMediaObject(m_media);
+    }
+}
+
index 5c43e7e496cefd9440edffc6f5e365a0190de73f..320ecbe6d8cebb2f2f4aa6aff697daf2d76b6225 100644 (file)
@@ -21,6 +21,8 @@
 #ifndef PHONONWIDGET_H
 #define PHONONWIDGET_H
 
 #ifndef PHONONWIDGET_H
 #define PHONONWIDGET_H
 
+#include <kurl.h>
+
 #include <QtGui/QWidget>
 
 #include <Phonon/Global>
 #include <QtGui/QWidget>
 
 #include <Phonon/Global>
@@ -32,7 +34,6 @@ namespace Phonon
 } // namespace Phonon
 
 class QToolButton;
 } // namespace Phonon
 
 class QToolButton;
-class KUrl;
 
 class PhononWidget : public QWidget
 {
 
 class PhononWidget : public QWidget
 {
@@ -43,8 +44,14 @@ class PhononWidget : public QWidget
 
     private slots:
         void stateChanged(Phonon::State);
 
     private slots:
         void stateChanged(Phonon::State);
+        void play();
+        void stop();
+
+    private:
+        void requestMedia();
 
     private:
 
     private:
+        KUrl m_url;
         QToolButton *m_playButton;
         QToolButton *m_stopButton;
         Phonon::MediaObject *m_media;
         QToolButton *m_playButton;
         QToolButton *m_stopButton;
         Phonon::MediaObject *m_media;