]> git.sesse.net Git - nageru/blobdiff - mainwindow.cpp
Make it possible to use PgUp/PgDown to switch audio pages.
[nageru] / mainwindow.cpp
index a16d5bd159bfde3b37ac85833907737102a7754c..e62594dc04554cb002d3e9c1bb4574b1c5d0658e 100644 (file)
@@ -189,6 +189,13 @@ MainWindow::MainWindow()
        connect(ui->full_prev_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 0));
        connect(ui->full_next_page, &QAbstractButton::clicked, bind(&QStackedWidget::setCurrentIndex, ui->audio_views, 0));
 
+       // And bind the same to PgUp/PgDown.
+       auto switch_page = [this]{
+               ui->audio_views->setCurrentIndex(1 - ui->audio_views->currentIndex());
+       };
+       connect(new QShortcut(QKeySequence::MoveToNextPage, this), &QShortcut::activated, switch_page);
+       connect(new QShortcut(QKeySequence::MoveToPreviousPage, this), &QShortcut::activated, switch_page);
+
        last_audio_level_callback = steady_clock::now() - seconds(1);
 }
 
@@ -235,6 +242,7 @@ void MainWindow::mixer_created(Mixer *mixer)
 
        setup_audio_miniview();
        setup_audio_expanded_view();
+       global_audio_mixer->set_state_changed_callback(bind(&MainWindow::audio_state_changed, this));
 
        slave_knob(ui->locut_cutoff_knob, ui->locut_cutoff_knob_2);
        slave_knob(ui->limiter_threshold_knob, ui->limiter_threshold_knob_2);
@@ -338,7 +346,8 @@ void MainWindow::setup_audio_miniview()
                peak_meter->set_max_level(0.0f);
                peak_meter->set_ref_level(0.0f);
 
-               // TODO: Set the fader position.
+               ui_audio_miniview->fader->setDbValue(global_audio_mixer->get_fader_volume(bus_index));
+
                ui->faders->addWidget(channel);
 
                connect(ui_audio_miniview->fader, &NonLinearFader::dbValueChanged,
@@ -372,7 +381,7 @@ void MainWindow::setup_audio_expanded_view()
                update_eq_label(bus_index, EQ_BAND_TREBLE, global_audio_mixer->get_eq(bus_index, EQ_BAND_TREBLE));
                update_eq_label(bus_index, EQ_BAND_MID, global_audio_mixer->get_eq(bus_index, EQ_BAND_MID));
                update_eq_label(bus_index, EQ_BAND_BASS, global_audio_mixer->get_eq(bus_index, EQ_BAND_BASS));
-               // TODO: Set the fader position.
+               ui_audio_expanded_view->fader->setDbValue(global_audio_mixer->get_fader_volume(bus_index));
                ui->buses->addWidget(channel);
 
                ui_audio_expanded_view->locut_enabled->setChecked(global_audio_mixer->get_locut_enabled(bus_index));
@@ -841,3 +850,27 @@ void MainWindow::set_white_balance(int channel_number, int x, int y)
        global_mixer->set_wb(Mixer::OUTPUT_INPUT0 + channel_number, r, g, b);
        previews[channel_number]->display->updateGL();
 }
+
+void MainWindow::audio_state_changed()
+{
+       post_to_main_thread([this]{
+               InputMapping mapping = global_audio_mixer->get_input_mapping();
+               for (unsigned bus_index = 0; bus_index < mapping.buses.size(); ++bus_index) {
+                       const InputMapping::Bus &bus = mapping.buses[bus_index];
+                       string suffix;
+                       if (bus.device.type == InputSourceType::ALSA_INPUT) {
+                               ALSAPool::Device::State state = global_audio_mixer->get_alsa_card_state(bus.device.index);
+                               if (state == ALSAPool::Device::State::STARTING) {
+                                       suffix = " (busy)";
+                               } else if (state == ALSAPool::Device::State::DEAD) {
+                                       suffix = " (dead)";
+                               }
+                       }
+
+                       audio_miniviews[bus_index]->bus_desc_label->setFullText(
+                               QString::fromStdString(bus.name + suffix));
+                       audio_expanded_views[bus_index]->bus_desc_label->setFullText(
+                               QString::fromStdString(bus.name + suffix));
+               }
+       });
+}