]> git.sesse.net Git - vlc/commitdiff
Qt4: allow more types of timeLabel in toolbars
authorEdward Wang <edward.c.wang@compdigitec.com>
Sun, 1 Jan 2012 19:04:58 +0000 (14:04 -0500)
committerJean-Baptiste Kempf <jb@videolan.org>
Tue, 3 Jan 2012 18:16:31 +0000 (19:16 +0100)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
modules/gui/qt4/components/controller.cpp
modules/gui/qt4/components/controller.hpp
modules/gui/qt4/components/interface_widgets.cpp
modules/gui/qt4/components/interface_widgets.hpp
modules/gui/qt4/dialogs/toolbar.cpp

index d1fad2284bf5340ca790f14315b97ad609e9b19b..e61a1b5cba952ada1ac5b1a17fd4aaed2b9ad9b2 100644 (file)
@@ -471,6 +471,12 @@ QWidget *AbstractController::createWidget( buttonType_e button, int options )
     case SPEED_LABEL:
         widget = new SpeedLabel( p_intf, this );
         break;
+    case TIME_LABEL_ELAPSED:
+        widget = new TimeLabel( p_intf, TimeLabel::Elapsed );
+        break;
+    case TIME_LABEL_REMAINING:
+        widget = new TimeLabel( p_intf, TimeLabel::Remaining );
+        break;
     default:
         msg_Warn( p_intf, "This should not happen %i", button );
         break;
index 8052c75d2878f2590dd57bcd74817f6c263d825d..2d5f1e4fdfc82ebcd16aef49e4f56a3cffa0c007 100644 (file)
@@ -101,6 +101,8 @@ typedef enum buttonType_e
     PLAYBACK_BUTTONS,
     ASPECT_RATIO_COMBOBOX,
     SPEED_LABEL,
+    TIME_LABEL_ELAPSED,
+    TIME_LABEL_REMAINING,
     SPECIAL_MAX,
 
     WIDGET_SPACER = 0x40,
index 9c8f8d8f644ac39acbc7ff554e16e79f8f35686e..419b5e6ed07dfc201aee9999d4621897a8076307 100644 (file)
@@ -549,17 +549,33 @@ void CoverArtLabel::askForUpdate()
     THEMIM->getIM()->requestArtUpdate();
 }
 
-TimeLabel::TimeLabel( intf_thread_t *_p_intf  )
+TimeLabel::TimeLabel( intf_thread_t *_p_intf, TimeLabel::Display _displayType  )
     : QLabel(), p_intf( _p_intf ), bufTimer( new QTimer(this) ),
-      buffering( false ), showBuffering(false), bufVal( -1 )
+      buffering( false ), showBuffering(false), bufVal( -1 ), displayType( _displayType )
 {
     b_remainingTime = false;
-    setText( " --:--/--:-- " );
+    switch( _displayType ) {
+        case TimeLabel::Elapsed:
+            setText( " --:-- " );
+            setToolTip( qtr("Elapsed time") );
+            break;
+        case TimeLabel::Remaining:
+            setText( " --:-- " );
+            setToolTip( qtr("Total/Remaining time")
+                        + QString("\n-")
+                        + qtr("Click to toggle between total and remaining time")
+                      );
+            break;
+        case TimeLabel::Both:
+            setText( " --:--/--:-- " );
+            setToolTip( QString( "- " )
+                + qtr( "Click to toggle between elapsed and remaining time" )
+                + QString( "\n- " )
+                + qtr( "Double click to jump to a chosen time position" ) );
+            break;
+    }
     setAlignment( Qt::AlignRight | Qt::AlignVCenter );
-    setToolTip( QString( "- " )
-        + qtr( "Click to toggle between elapsed and remaining time" )
-        + QString( "\n- " )
-        + qtr( "Double click to jump to a chosen time position" ) );
+
     bufTimer->setSingleShot( true );
 
     CONNECT( THEMIM->getIM(), positionUpdated( float, int64_t, int ),
@@ -567,6 +583,8 @@ TimeLabel::TimeLabel( intf_thread_t *_p_intf  )
     CONNECT( THEMIM->getIM(), cachingChanged( float ),
               this, updateBuffering( float ) );
     CONNECT( bufTimer, timeout(), this, updateBuffering() );
+
+    this->setContentsMargins( 4, 0, 4, 0 );
 }
 
 void TimeLabel::setDisplayPosition( float pos, int64_t t, int length )
@@ -576,7 +594,10 @@ void TimeLabel::setDisplayPosition( float pos, int64_t t, int length )
 
     if( pos == -1.f )
     {
-        setText( " --:--/--:-- " );
+        if( displayType == TimeLabel::Both )
+            setText( " --:--/--:-- " );
+        else
+            setText( " --:-- " );
         return;
     }
 
@@ -585,14 +606,27 @@ void TimeLabel::setDisplayPosition( float pos, int64_t t, int length )
     secstotimestr( psz_length, length );
     secstotimestr( psz_time, ( b_remainingTime && length ) ? length - time
                                                            : time );
-
-    QString timestr = QString( " %1%2/%3 " )
+    switch( displayType )
+    {
+        case TimeLabel::Elapsed:
+            setText( QString(" ") + QString( psz_time ) + QString(" ") );
+            break;
+        case TimeLabel::Remaining:
+            if( b_remainingTime )
+                setText( QString(" -") + QString( psz_time ) + QString(" ") );
+            else
+                setText( QString(" ") + QString( psz_length ) + QString(" ") );
+            break;
+        case TimeLabel::Both:
+        default:
+            QString timestr = QString( " %1%2/%3 " )
             .arg( QString( (b_remainingTime && length) ? "-" : "" ) )
             .arg( QString( psz_time ) )
             .arg( QString( ( !length && time ) ? "--:--" : psz_length ) );
 
-    setText( timestr );
-
+            setText( timestr );
+            break;
+    }
     cachedLength = length;
 }
 
index 5de9b321c6cc711346dd8ad142d8a41c46937606..cd952761bfc4365b2ff0775f80ec0ea21c953b58 100644 (file)
@@ -122,15 +122,24 @@ class TimeLabel : public QLabel
 {
     Q_OBJECT
 public:
-    TimeLabel( intf_thread_t *_p_intf );
+    enum Display
+    {
+        Elapsed,
+        Remaining,
+        Both
+    };
+
+    TimeLabel( intf_thread_t *_p_intf, TimeLabel::Display _displayType = TimeLabel::Both );
 protected:
     virtual void mousePressEvent( QMouseEvent *event )
     {
+        if( displayType == TimeLabel::Elapsed ) return;
         toggleTimeDisplay();
         event->accept();
     }
     virtual void mouseDoubleClickEvent( QMouseEvent *event )
     {
+        if( displayType != TimeLabel::Both ) return;
         event->accept();
         toggleTimeDisplay();
         emit timeLabelDoubleClicked();
@@ -144,6 +153,7 @@ private:
     bool buffering;
     bool showBuffering;
     float bufVal;
+    TimeLabel::Display displayType;
 
     char psz_length[MSTRTIME_MAX_SIZE];
     char psz_time[MSTRTIME_MAX_SIZE];
index ce5194b8f076864296497c163bf1f1808af7d34f..bd1e982c8883ce3d716e9ea47f2987bff7fe73d0 100644 (file)
@@ -453,6 +453,14 @@ WidgetListing::WidgetListing( intf_thread_t *p_intf, QWidget *_parent )
             widget = new SpeedLabel( p_intf, this );
             widgetItem->setText( qtr("Speed selector") );
             break;
+        case TIME_LABEL_ELAPSED:
+            widget = new QLabel( "2:42", this );
+            widgetItem->setText( qtr("Elasped time") );
+            break;
+        case TIME_LABEL_REMAINING:
+            widget = new QLabel( "-2:42", this );
+            widgetItem->setText( qtr("Total/Remaining time") );
+            break;
         default:
             msg_Warn( p_intf, "This should not happen %i", i );
             break;