From c4d2fa3ffafe30d4db1eb27e992f24374de9a0a7 Mon Sep 17 00:00:00 2001 From: Carl Philipp Klemm Date: Wed, 4 Mar 2026 20:55:40 +0100 Subject: [PATCH] Edit dialog via double click --- MainWindow.cpp | 23 +++++++++++++++++------ MainWindow.h | 3 ++- MainWindow.ui | 9 +-------- SongListModel.cpp | 3 ++- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index f9ddecb..1034448 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -40,6 +40,9 @@ MainWindow::MainWindow(QWidget *parent) connect(aceStepWorker, &AceStepWorker::generationError, this, &MainWindow::generationError); connect(aceStepWorker, &AceStepWorker::progressUpdate, ui->progressBar, &QProgressBar::setValue); + // Connect double-click on song list for editing + connect(ui->songListView, &QListView::doubleClicked, this, &MainWindow::on_songListView_doubleClicked); + // Connect audio player error signal connect(audioPlayer, &AudioPlayer::playbackError, [this](const QString &error) { QMessageBox::warning(this, "Playback Error", "Failed to play audio: " + error); @@ -57,6 +60,9 @@ void MainWindow::setupUI() // Setup song list view ui->songListView->setModel(songModel); + // Make sure the list view is read-only (no inline editing) + ui->songListView->setEditTriggers(QAbstractItemView::NoEditTriggers); + // Add some default songs SongItem defaultSong1("Upbeat pop rock anthem with driving electric guitars", ""); SongItem defaultSong2("Chill electronic music with smooth synths and relaxing beats", ""); @@ -151,7 +157,6 @@ void MainWindow::updateControls() ui->skipButton->setEnabled(isPlaying); ui->stopButton->setEnabled(isPlaying); ui->addSongButton->setEnabled(true); - ui->editSongButton->setEnabled(hasSongs && ui->songListView->currentIndex().isValid()); ui->removeSongButton->setEnabled(hasSongs && ui->songListView->currentIndex().isValid()); } @@ -240,12 +245,15 @@ void MainWindow::on_addSongButton_clicked() } } -void MainWindow::on_editSongButton_clicked() +void MainWindow::on_songListView_doubleClicked(const QModelIndex &index) { - QModelIndex currentIndex = ui->songListView->currentIndex(); - if (!currentIndex.isValid()) return; + if (!index.isValid()) return; - int row = currentIndex.row(); + // Temporarily disconnect the signal to prevent multiple invocations + // This happens when the dialog closes and triggers another double-click event + disconnect(ui->songListView, &QListView::doubleClicked, this, &MainWindow::on_songListView_doubleClicked); + + int row = index.row(); SongItem song = songModel->getSong(row); SongDialog dialog(this, song.caption, song.lyrics); @@ -258,6 +266,9 @@ void MainWindow::on_editSongButton_clicked() songModel->setData(songModel->index(row, 0), caption, SongListModel::CaptionRole); songModel->setData(songModel->index(row, 0), lyrics, SongListModel::LyricsRole); } + + // Reconnect the signal after dialog is closed + connect(ui->songListView, &QListView::doubleClicked, this, &MainWindow::on_songListView_doubleClicked); } void MainWindow::on_removeSongButton_clicked() @@ -476,4 +487,4 @@ void MainWindow::on_positionSlider_sliderMoved(int position) // Seek to the new position when slider is moved audioPlayer->setPosition(position); } -} \ No newline at end of file +} diff --git a/MainWindow.h b/MainWindow.h index c0568fc..65bbf61 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -31,10 +31,11 @@ private slots: void updatePosition(int position); void updateDuration(int duration); void on_addSongButton_clicked(); - void on_editSongButton_clicked(); void on_removeSongButton_clicked(); void on_advancedSettingsButton_clicked(); + void on_songListView_doubleClicked(const QModelIndex &index); + void songGenerated(const QString &filePath); void playNextSong(); void playbackStarted(); diff --git a/MainWindow.ui b/MainWindow.ui index 0fa9d09..31a7090 100644 --- a/MainWindow.ui +++ b/MainWindow.ui @@ -35,7 +35,7 @@ - QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed + QAbstractItemView::NoEditTriggers @@ -48,13 +48,6 @@ - - - - Edit Song - - - diff --git a/SongListModel.cpp b/SongListModel.cpp index d13b0ae..ffd17db 100644 --- a/SongListModel.cpp +++ b/SongListModel.cpp @@ -60,7 +60,8 @@ Qt::ItemFlags SongListModel::flags(const QModelIndex &index) const if (!index.isValid()) return Qt::NoItemFlags; - return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable; + // Remove ItemIsEditable to prevent inline editing and double-click issues + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } void SongListModel::addSong(const SongItem &song)