]> git.sesse.net Git - nageru/commitdiff
When choosing a camera in the clip list, highlight the appropriate input.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 14 Oct 2018 12:53:24 +0000 (14:53 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 14 Oct 2018 12:53:24 +0000 (14:53 +0200)
mainwindow.cpp
mainwindow.h
ui_mainwindow.ui

index 235911017c114666c6bd31ab4bd0e8bee23352dc..8f63bee0fbd05108c96e2f573cd45c4f4a00342d 100644 (file)
@@ -54,6 +54,9 @@ MainWindow::MainWindow()
        ui->playlist->setModel(playlist_clips);
        connect(playlist_clips, &PlayList::any_content_changed, this, &MainWindow::content_changed);
 
+       // For un-highlighting when we lose focus.
+       ui->clip_list->installEventFilter(this);
+
        // For scrubbing in the pts columns.
        ui->clip_list->viewport()->installEventFilter(this);
        ui->playlist->viewport()->installEventFilter(this);
@@ -137,6 +140,9 @@ MainWindow::MainWindow()
        defer_timeout = new QTimer(this);
        defer_timeout->setSingleShot(true);
        connect(defer_timeout, &QTimer::timeout, this, &MainWindow::defer_timer_expired);
+
+       connect(ui->clip_list->selectionModel(), &QItemSelectionModel::currentChanged,
+               this, &MainWindow::clip_list_selection_changed);
 }
 
 void MainWindow::cue_in_clicked()
@@ -410,6 +416,13 @@ bool MainWindow::eventFilter(QObject *watched, QEvent *event)
 
        unsigned stream_idx = ui->preview_display->get_stream_idx();
 
+       if (watched == ui->clip_list) {
+               if (event->type() == QEvent::FocusOut) {
+                       highlight_camera_input(-1);
+               }
+               return false;
+       }
+
        if (event->type() != QEvent::Wheel) {
                last_mousewheel_camera_row = -1;
        }
@@ -617,6 +630,16 @@ void MainWindow::playlist_selection_changed()
        ui->play_btn->setEnabled(!playlist_clips->empty());
 }
 
+void MainWindow::clip_list_selection_changed(const QModelIndex &current, const QModelIndex &)
+{
+       int camera_selected = -1;
+       if (current.column() >= int(ClipList::Column::CAMERA_1) &&
+           current.column() <= int(ClipList::Column::CAMERA_4)) {
+               camera_selected = current.column() - int(ClipList::Column::CAMERA_1);
+       }
+       highlight_camera_input(camera_selected);
+}
+
 void MainWindow::report_disk_space(off_t free_bytes, double estimated_seconds_left)
 {
        char time_str[256];
@@ -655,3 +678,26 @@ void MainWindow::exit_triggered()
        close();
 }
 
+void MainWindow::highlight_camera_input(int stream_idx)
+{
+       if (stream_idx == 0) {
+               ui->input1_frame->setStyleSheet("background: rgb(0,255,0)");
+       } else {
+               ui->input1_frame->setStyleSheet("");
+       }
+       if (stream_idx == 1) {
+               ui->input2_frame->setStyleSheet("background: rgb(0,255,0)");
+       } else {
+               ui->input2_frame->setStyleSheet("");
+       }
+       if (stream_idx == 2) {
+               ui->input3_frame->setStyleSheet("background: rgb(0,255,0)");
+       } else {
+               ui->input3_frame->setStyleSheet("");
+       }
+       if (stream_idx == 3) {
+               ui->input4_frame->setStyleSheet("background: rgb(0,255,0)");
+       } else {
+               ui->input4_frame->setStyleSheet("");
+       }
+}
index a396a92f272941a9a5921671162237d9b04a68db..7f77273c5b7b712b006957080357b82d3353d435 100644 (file)
@@ -85,12 +85,16 @@ private:
        // Also covers when the playlist itself changes.
        void playlist_selection_changed();
 
+       void clip_list_selection_changed(const QModelIndex &current, const QModelIndex &previous);
+
        void resizeEvent(QResizeEvent *event) override;
        bool eventFilter(QObject *watched, QEvent *event) override;
 
        void report_disk_space(off_t free_bytes, double estimated_seconds_left);
        void exit_triggered();
 
+       void highlight_camera_input(int stream_idx);
+
 private slots:
        void relayout();
 };
index a0aa47b50732a84804e437300b25005b981cf00f..ae2d26355debd80c7542959213053e6e8503db75 100644 (file)
          <layout class="QVBoxLayout" name="input_pane" stretch="1,0">
           <item>
            <layout class="QGridLayout" name="input_displays">
-            <item row="1" column="0">
-             <widget class="JPEGFrameView" name="input3_display" native="true"/>
-            </item>
+            <property name="spacing">
+             <number>0</number>
+            </property>
             <item row="0" column="0">
-             <widget class="JPEGFrameView" name="input1_display" native="true"/>
+             <widget class="QFrame" name="input1_frame">
+              <property name="frameShape">
+               <enum>QFrame::Box</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Plain</enum>
+              </property>
+              <property name="lineWidth">
+               <number>0</number>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_2">
+               <property name="leftMargin">
+                <number>3</number>
+               </property>
+               <property name="topMargin">
+                <number>3</number>
+               </property>
+               <property name="rightMargin">
+                <number>3</number>
+               </property>
+               <property name="bottomMargin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="JPEGFrameView" name="input1_display" native="true">
+                 <property name="autoFillBackground">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
+            </item>
+            <item row="1" column="0">
+             <widget class="QFrame" name="input3_frame">
+              <property name="frameShape">
+               <enum>QFrame::Box</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Plain</enum>
+              </property>
+              <property name="lineWidth">
+               <number>0</number>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_4">
+               <property name="leftMargin">
+                <number>3</number>
+               </property>
+               <property name="topMargin">
+                <number>3</number>
+               </property>
+               <property name="rightMargin">
+                <number>3</number>
+               </property>
+               <property name="bottomMargin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="JPEGFrameView" name="input3_display" native="true"/>
+               </item>
+              </layout>
+             </widget>
             </item>
             <item row="0" column="1">
-             <widget class="JPEGFrameView" name="input2_display" native="true"/>
+             <widget class="QFrame" name="input2_frame">
+              <property name="frameShape">
+               <enum>QFrame::Box</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Plain</enum>
+              </property>
+              <property name="lineWidth">
+               <number>0</number>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_3">
+               <property name="leftMargin">
+                <number>3</number>
+               </property>
+               <property name="topMargin">
+                <number>3</number>
+               </property>
+               <property name="rightMargin">
+                <number>3</number>
+               </property>
+               <property name="bottomMargin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="JPEGFrameView" name="input2_display" native="true">
+                 <property name="autoFillBackground">
+                  <bool>true</bool>
+                 </property>
+                </widget>
+               </item>
+              </layout>
+             </widget>
             </item>
             <item row="1" column="1">
-             <widget class="JPEGFrameView" name="input4_display" native="true"/>
+             <widget class="QFrame" name="input4_frame">
+              <property name="autoFillBackground">
+               <bool>true</bool>
+              </property>
+              <property name="frameShape">
+               <enum>QFrame::Box</enum>
+              </property>
+              <property name="frameShadow">
+               <enum>QFrame::Plain</enum>
+              </property>
+              <property name="lineWidth">
+               <number>0</number>
+              </property>
+              <layout class="QGridLayout" name="gridLayout_5">
+               <property name="leftMargin">
+                <number>3</number>
+               </property>
+               <property name="topMargin">
+                <number>3</number>
+               </property>
+               <property name="rightMargin">
+                <number>3</number>
+               </property>
+               <property name="bottomMargin">
+                <number>3</number>
+               </property>
+               <item row="0" column="0">
+                <widget class="JPEGFrameView" name="input4_display" native="true"/>
+               </item>
+              </layout>
+             </widget>
             </item>
            </layout>
           </item>