X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fmainwindow.cpp;h=3ecab3f1ab819e93fa5b92a05aac10c71643fc65;hb=1572c05240f8bc82683a31b6c2df979101b12474;hp=77b1cfe448f9f4406b39c7c54c33203e1d24e677;hpb=ac1f4741a43cd9ab6ff5ff5a6f6bd52f3995a121;p=nageru diff --git a/futatabi/mainwindow.cpp b/futatabi/mainwindow.cpp index 77b1cfe..3ecab3f 100644 --- a/futatabi/mainwindow.cpp +++ b/futatabi/mainwindow.cpp @@ -222,6 +222,10 @@ MainWindow::MainWindow() connect(defer_timeout, &QTimer::timeout, this, &MainWindow::defer_timer_expired); ui->undo_action->setEnabled(true); + lock_blink_timeout = new QTimer(this); + lock_blink_timeout->setSingleShot(true); + connect(lock_blink_timeout, &QTimer::timeout, this, &MainWindow::lock_blink_timer_expired); + connect(ui->clip_list->selectionModel(), &QItemSelectionModel::currentChanged, this, &MainWindow::clip_list_selection_changed); enable_or_disable_queue_button(); @@ -592,18 +596,18 @@ void MainWindow::save_settings() db.store_settings(settings); } -void MainWindow::play_clicked() +void MainWindow::lock_blink_timer_expired() { - if (playlist_clips->empty()) - return; + midi_mapper.set_locked(MIDIMapper::LightState(ui->speed_lock_btn->isChecked())); // Presumably On, or the timer should have been canceled. +} +void MainWindow::play_clicked() +{ QItemSelectionModel *selected = ui->playlist->selectionModel(); - unsigned start_row; if (!selected->hasSelection()) { - start_row = 0; - } else { - start_row = selected->selectedRows(0)[0].row(); + return; } + unsigned start_row = selected->selectedRows(0)[0].row(); vector clips; for (unsigned row = start_row; row < playlist_clips->size(); ++row) { @@ -639,7 +643,8 @@ void MainWindow::speed_lock_clicked() // TODO: Make for a less abrupt transition if we're not already at 100%. ui->speed_slider->setValue(100); // Also actually sets the master speed and updates the label. ui->speed_slider->setEnabled(!ui->speed_lock_btn->isChecked()); - midi_mapper.set_locked(ui->speed_lock_btn->isChecked()); + midi_mapper.set_locked(MIDIMapper::LightState(ui->speed_lock_btn->isChecked())); + lock_blink_timeout->stop(); } void MainWindow::live_player_done() @@ -885,8 +890,8 @@ void MainWindow::playlist_selection_changed() ui->playlist_move_down_btn->setEnabled( any_selected && selected->selectedRows().back().row() < int(playlist_clips->size()) - 1); - ui->play_btn->setEnabled(!playlist_clips->empty()); - midi_mapper.set_play_enabled(!playlist_clips->empty()); + ui->play_btn->setEnabled(any_selected); + midi_mapper.set_play_enabled(any_selected); if (!any_selected) { set_output_status("paused"); @@ -1257,6 +1262,8 @@ void MainWindow::set_master_speed(float speed) post_to_main_thread([this, speed] { if (ui->speed_lock_btn->isChecked()) { + midi_mapper.set_locked(MIDIMapper::Blinking); + lock_blink_timeout->start(1000); return; }