[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/kmid/src
From:       Pedro Lopez-Cabanillas <pedro.lopez.cabanillas () gmail ! com>
Date:       2010-07-20 9:40:35
Message-ID: 20100720094035.B0300AC7AB () svn ! kde ! org
[Download RAW message or body]

SVN commit 1152076 by pedrol:

kmid_part: view buttons play/stop combined, tickless seeker.

 M  +7 -3      kmid_part.cpp  
 M  +34 -22    kmid_partview.cpp  
 M  +6 -4      kmid_partview.h  


--- trunk/extragear/multimedia/kmid/src/kmid_part.cpp #1152075:1152076
@@ -271,6 +271,7 @@
         m_pause->setEnabled(true);
         m_pause->setChecked(false);
         m_stop->setEnabled(true);
+        m_view->setPlayingState(true);
         break;
     case KMid::PausedState:
         //kDebug() << "State: pause";
@@ -283,6 +284,7 @@
         m_pause->setEnabled(false);
         m_pause->setChecked(false);
         m_stop->setEnabled(false);
+        m_view->setPlayingState(false);
         break;
     default:
         //kDebug() << "State: empty";
@@ -291,19 +293,20 @@
         m_pause->setEnabled(false);
         m_pause->setChecked(false);
         m_stop->setEnabled(false);
+        m_view->setPlayingState(false);
         break;
     }
 }
 
 void KMidPart::slotTick(qint64 ticks)
 {
-    m_view->slotTick(ticks);
+    m_view->setPosition(ticks);
     emit tick(ticks);
 }
 
 void KMidPart::slotFinished()
 {
-    m_view->slotTick(0);
+    m_view->setPosition(0);
     emit finished();
 }
 
@@ -323,7 +326,7 @@
     if (m_midiobj != 0) {
         m_midiobj->setCurrentSource(localFile);
         m_midiobj->seek(0);
-        m_view->resetTimeSlider(m_midiobj->totalTime());
+        m_view->resetTimePosition(m_midiobj->totalTime());
     }
     return true;
 }
@@ -393,6 +396,7 @@
 void KMidPart::slotSourceChanged(QString src)
 {
     // auto-start
+    m_view->setPosition(0);
     play();
     emit sourceChanged(src);
 }
--- trunk/extragear/multimedia/kmid/src/kmid_partview.cpp #1152075:1152076
@@ -29,40 +29,34 @@
 
 KMidPartView::KMidPartView(QWidget *parent) :
     KMediaPlayer::View(parent),
-    m_seeking(false)
+    m_seeking(false),
+    m_playing(false)
 {
     QHBoxLayout* layout = new QHBoxLayout(this);
     setLayout(layout);
 
-    m_play = new QToolButton(this);
-    m_play->setIcon(KIcon("media-playback-start"));
-    m_play->setVisible(true);
-    layout->addWidget(m_play);
-    connect(m_play, SIGNAL(clicked()), SIGNAL(play()));
+    m_playstop = new QToolButton(this);
+    m_playstop->setIcon(KIcon("media-playback-start"));
+    m_playstop->setVisible(true);
+    layout->addWidget(m_playstop);
+    connect(m_playstop, SIGNAL(clicked()), SLOT(slotPlayStop()));
 
     m_pause = new QToolButton(this);
     m_pause->setIcon(KIcon("media-playback-pause"));
     m_pause->setVisible(false);
+    m_pause->setEnabled(false);
     layout->addWidget(m_pause);
     connect(m_pause, SIGNAL(clicked()), SIGNAL(pause()));
 
-    m_stop = new QToolButton(this);
-    m_stop->setIcon(KIcon("media-playback-stop"));
-    m_stop->setVisible(false);
-    layout->addWidget(m_stop);
-    connect(m_stop, SIGNAL(clicked()), SIGNAL(stop()));
-
     m_seeker = new QSlider(this);
     m_seeker->setRange(0, 10000);
-    m_seeker->setTickInterval(10000 / 8);
     m_seeker->setOrientation(Qt::Horizontal);
-    m_seeker->setTickPosition(QSlider::TicksBelow);
     m_seeker->setWhatsThis(i18nc("@info:whatsthis","Time position control"));
     m_seeker->setTracking(false);
     layout->addWidget(m_seeker);
     connect(m_seeker, SIGNAL(sliderPressed()), SLOT(slotTimeSliderPressed()));
     connect(m_seeker, SIGNAL(valueChanged(int)), SLOT(slotTimeSlider(int)));
-    setButtons(Play | Seeker);
+    setButtons(Play | Stop | Seeker);
 
     connect(this, SIGNAL(buttonsChanged(int)), SLOT(slotButtonsChanged(int)));
 }
@@ -72,23 +66,19 @@
 
 void KMidPartView::slotButtonsChanged(int buttons)
 {
-    m_play->setVisible((buttons & Play) != 0);
+    m_playstop->setVisible((buttons & (Play | Stop)) != 0 );
     m_pause->setVisible((buttons & Pause) != 0);
-    m_stop->setVisible((buttons & Stop) != 0);
     m_seeker->setVisible((buttons & Seeker) != 0);
 }
 
-void KMidPartView::resetTimeSlider(qint64 totalTime)
+void KMidPartView::resetTimePosition(qint64 totalTime)
 {
     m_seeker->setRange(0, totalTime);
-    m_seeker->setTickInterval(totalTime / 8);
     m_seeker->setSliderPosition(0);
     m_seeking = false;
-    if (button(Seeker))
-        m_seeker->update();
 }
 
-void KMidPartView::slotTick(qint64 tick)
+void KMidPartView::setPosition(qint64 tick)
 {
     if (!m_seeking)
         m_seeker->setSliderPosition(tick);
@@ -104,3 +94,25 @@
 {
     m_seeking = true;
 }
+
+void KMidPartView::slotPlayStop()
+{
+    if (m_playing)
+        emit stop();
+    else
+        emit play();
+}
+
+void KMidPartView::setPlayingState(bool isPlaying)
+{
+    if (m_playing != isPlaying) {
+        m_playing = isPlaying;
+        if (isPlaying) {
+            m_playstop->setIcon(KIcon("media-playback-stop"));
+            m_pause->setEnabled(true);
+        } else {
+            m_playstop->setIcon(KIcon("media-playback-start"));
+            m_pause->setEnabled(false);
+        }
+    }
+}
--- trunk/extragear/multimedia/kmid/src/kmid_partview.h #1152075:1152076
@@ -31,13 +31,15 @@
     KMidPartView(QWidget *parent);
     virtual ~KMidPartView();
 
-    void resetTimeSlider(qint64 totalTime);
-    void slotTick(qint64 tick);
+    void resetTimePosition(qint64 totalTime);
+    void setPosition(qint64 tick);
+    void setPlayingState(bool);
 
 private slots:
     void slotButtonsChanged(int);
     void slotTimeSliderPressed();
     void slotTimeSlider(int);
+    void slotPlayStop();
 
 signals:
     void play();
@@ -47,9 +49,9 @@
 
 private:
     bool m_seeking;
-    QToolButton *m_play;
+    bool m_playing;
+    QToolButton *m_playstop;
     QToolButton *m_pause;
-    QToolButton *m_stop;
     QSlider *m_seeker;
 };
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic