Qt: react to recording event from the core by activating the button.
authorJean-Baptiste Kempf <jb@videolan.org>
Wed, 21 Jan 2009 19:37:07 +0000 (20:37 +0100)
committerJean-Baptiste Kempf <jb@videolan.org>
Wed, 21 Jan 2009 19:37:27 +0000 (20:37 +0100)
modules/gui/qt4/components/controller.cpp
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/input_manager.hpp

index fbdbabb..b5e0d11 100644 (file)
@@ -307,6 +307,9 @@ QWidget *AbstractController::createWidget( buttonType_e button, int options )
         CONNECT_MAP_SET( recordButton, RECORD_ACTION );
         BUTTON_SET_BAR(  recordButton );
         ENABLE_ON_INPUT( recordButton );
+        recordButton->setCheckable( true );
+        CONNECT( THEMIM->getIM(), recordingStateChanged( bool ),
+                 recordButton, setChecked( bool ) );
         widget = recordButton;
         }
         break;
index 9dea8e8..ff6bf0f 100644 (file)
@@ -156,7 +156,8 @@ void InputManager::customEvent( QEvent *event )
          i_type != SynchroChanged_Type &&
          i_type != CachingEvent_Type &&
          i_type != BookmarksChanged_Type &&
-         i_type != InterfaceAoutUpdate_Type )
+         i_type != InterfaceAoutUpdate_Type &&
+         i_type != RecordingEvent_Type )
         return;
 
     if( !hasInput() ) return;
@@ -176,7 +177,8 @@ void InputManager::customEvent( QEvent *event )
           i_type != InfoChanged_Type &&
           i_type != SynchroChanged_Type &&
           i_type != BookmarksChanged_Type &&
-          i_type != InterfaceAoutUpdate_Type
+          i_type != InterfaceAoutUpdate_Type &&
+          i_type != RecordingEvent_Type
         )
         && ( i_input_id != ple->i_id ) )
         return;
@@ -247,6 +249,9 @@ void InputManager::customEvent( QEvent *event )
     case InterfaceAoutUpdate_Type:
         UpdateAout();
         break;
+    case RecordingEvent_Type:
+        UpdateRecord();
+        break;
     default:
         msg_Warn( p_intf, "This shouldn't happen: %i", i_type );
     }
@@ -340,10 +345,8 @@ static int InputEvent( vlc_object_t *p_this, const char *,
         break;
 
     case INPUT_EVENT_RECORD:
-        /* This happens when a recording starts. What do we do then?
-           Display a red light? */
-        /* event = new IMEvent( RecordingEvent_Type, 0 );
-        break; */
+        event = new IMEvent( RecordingEvent_Type, 0 );
+        break;
 
     case INPUT_EVENT_PROGRAM:
         /* This is for PID changes */
@@ -585,6 +588,14 @@ inline void InputManager::UpdateInfo()
     emit infoChanged( input_GetItem( p_input ) );
 }
 
+void InputManager::UpdateRecord()
+{
+    if( hasInput() )
+    {
+        emit recordingStateChanged( var_GetBool( p_input, "record" ) );
+    }
+}
+
 /* User update of the slider */
 void InputManager::sliderUpdate( float new_pos )
 {
index b153d15..4112d0b 100644 (file)
@@ -57,8 +57,8 @@ enum {
     SynchroChanged_Type,
     CachingEvent_Type,
     BookmarksChanged_Type,
-/*    RecordingEvent_Type,
-    ProgramChanged_Type,
+    RecordingEvent_Type,
+/*    ProgramChanged_Type,
     SignalChanged_Type, */
 
     FullscreenControlToggle_Type = QEvent::User + IMEventType + 20,
@@ -133,6 +133,7 @@ private:
     void UpdateAout();
     void UpdateStats();
     void UpdateCaching();
+    void UpdateRecord();
 
     void AtoBLoop( int );
 
@@ -175,6 +176,7 @@ signals:
     void artChanged( QString );
     /// Play/pause status
     void statusChanged( int );
+    void recordingStateChanged( bool );
     /// Teletext
     void teletextPossible( bool );
     void teletextActivated( bool );