From c4508efc504090116e146a1f38659fe7de8398df Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 14 Oct 2018 14:53:24 +0200 Subject: [PATCH] When choosing a camera in the clip list, highlight the appropriate input. --- mainwindow.cpp | 46 ++++++++++++++++ mainwindow.h | 4 ++ ui_mainwindow.ui | 134 ++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 178 insertions(+), 6 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 2359110..8f63bee 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -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 ¤t, 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(""); + } +} diff --git a/mainwindow.h b/mainwindow.h index a396a92..7f77273 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -85,12 +85,16 @@ private: // Also covers when the playlist itself changes. void playlist_selection_changed(); + void clip_list_selection_changed(const QModelIndex ¤t, 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(); }; diff --git a/ui_mainwindow.ui b/ui_mainwindow.ui index a0aa47b..ae2d263 100644 --- a/ui_mainwindow.ui +++ b/ui_mainwindow.ui @@ -283,17 +283,139 @@ - - - + + 0 + - + + + QFrame::Box + + + QFrame::Plain + + + 0 + + + + 3 + + + 3 + + + 3 + + + 3 + + + + + true + + + + + + + + + + QFrame::Box + + + QFrame::Plain + + + 0 + + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + - + + + QFrame::Box + + + QFrame::Plain + + + 0 + + + + 3 + + + 3 + + + 3 + + + 3 + + + + + true + + + + + - + + + true + + + QFrame::Box + + + QFrame::Plain + + + 0 + + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + -- 2.39.2