[vlc-devel] [PATCH 05/21] qt: expose remaining time in player controller

Pierre Lamot pierre at videolabs.io
Wed Aug 7 15:52:11 CEST 2019


---
 modules/gui/qt/components/player_controller.cpp   | 12 ++++++++++++
 modules/gui/qt/components/player_controller.hpp   |  5 +++--
 modules/gui/qt/components/player_controller_p.hpp |  1 +
 3 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/modules/gui/qt/components/player_controller.cpp b/modules/gui/qt/components/player_controller.cpp
index 9e9060d4f5..55beb7e7c4 100644
--- a/modules/gui/qt/components/player_controller.cpp
+++ b/modules/gui/qt/components/player_controller.cpp
@@ -397,6 +397,11 @@ static void on_player_position_changed(vlc_player_t *player, vlc_tick_t time, fl
         emit q->positionChanged(pos);
         that->m_time = time;
         emit q->timeChanged(time);
+        if ( time != VLC_TICK_INVALID && length != VLC_TICK_INVALID )
+            that->m_remainingTime = length - time;
+        else
+            that->m_remainingTime = VLC_TICK_INVALID;
+        emit q->remainingTimeChanged(that->m_remainingTime);
         emit that->q_func()->positionUpdated(pos, time, SEC_FROM_VLC_TICK(length) );
     });
 }
@@ -410,6 +415,12 @@ static void on_player_length_changed(vlc_player_t *player, vlc_tick_t new_length
         PlayerController* q = that->q_func();
         that->m_length = new_length;
         emit q->lengthChanged(new_length);
+
+        if ( time != VLC_TICK_INVALID && new_length != VLC_TICK_INVALID )
+            that->m_remainingTime = new_length - time;
+        else
+            that->m_remainingTime = VLC_TICK_INVALID;
+        emit q->remainingTimeChanged(that->m_remainingTime);
         emit that->q_func()->positionUpdated( pos, time, SEC_FROM_VLC_TICK(new_length) );
     });
 
@@ -1548,6 +1559,7 @@ QABSTRACTLIST_GETTER( VLCVarChoiceModel, getAudioVisualizations, m_audioVisualiz
 PRIMITIVETYPE_GETTER(PlayerController::PlayingState, getPlayingState, m_playing_status)
 PRIMITIVETYPE_GETTER(QString, getName, m_name)
 PRIMITIVETYPE_GETTER(VLCTick, getTime, m_time)
+PRIMITIVETYPE_GETTER(VLCTick, getRemainingTime, m_remainingTime)
 PRIMITIVETYPE_GETTER(float, getPosition, m_position)
 PRIMITIVETYPE_GETTER(VLCTick, getLength, m_length)
 PRIMITIVETYPE_GETTER(VLCTick, getAudioDelay, m_audioDelay)
diff --git a/modules/gui/qt/components/player_controller.hpp b/modules/gui/qt/components/player_controller.hpp
index f1e17827df..7fb4384886 100644
--- a/modules/gui/qt/components/player_controller.hpp
+++ b/modules/gui/qt/components/player_controller.hpp
@@ -116,6 +116,7 @@ public:
     Q_PROPERTY(MediaStopAction mediaStopAction READ getMediaStopAction WRITE setMediaStopAction NOTIFY mediaStopActionChanged)
 
     Q_PROPERTY(VLCTick time READ getTime WRITE setTime NOTIFY timeChanged)
+    Q_PROPERTY(VLCTick remainingTime READ getRemainingTime NOTIFY remainingTimeChanged)
     Q_PROPERTY(float position READ getPosition WRITE setPosition NOTIFY positionChanged)
     Q_PROPERTY(VLCTick length READ getLength NOTIFY lengthChanged)
 
@@ -260,6 +261,7 @@ public slots:
     void setMediaStopAction(MediaStopAction );
     VLCTick getTime() const;
     void setTime(VLCTick);
+    VLCTick getRemainingTime() const;
     float getPosition() const;
     void setPosition(float);
     VLCTick getLength() const;
@@ -347,13 +349,12 @@ signals:
     void mediaStopActionChanged( MediaStopAction );
 
     void timeChanged( VLCTick );
+    void remainingTimeChanged( VLCTick );
     void positionChanged( float );
     void lengthChanged( VLCTick );
     void positionUpdated( float , VLCTick, int );
     void seekRequested( float pos ); //not exposed through Q_PROPERTY
 
-    void remainingTimeChanged( bool );  //FIXME
-
     void seekableChanged( bool );
     void rewindableChanged( bool );
     void pausableChanged( bool );
diff --git a/modules/gui/qt/components/player_controller_p.hpp b/modules/gui/qt/components/player_controller_p.hpp
index 40103c9f32..a0e61c2269 100644
--- a/modules/gui/qt/components/player_controller_p.hpp
+++ b/modules/gui/qt/components/player_controller_p.hpp
@@ -80,6 +80,7 @@ public:
     PlayerController::MediaStopAction m_mediaStopAction = PlayerController::MEDIA_STOPPED_CONTINUE;
 
     VLCTick      m_time = 0;
+    VLCTick      m_remainingTime = 0;
     float           m_position = 0.f;
     VLCTick      m_length= 0;
 
-- 
2.17.1



More information about the vlc-devel mailing list