From be8ccb481a375705dcddd3dcca3970ca5c585ef8 Mon Sep 17 00:00:00 2001 From: craig Date: Wed, 29 Feb 2012 18:10:39 +0000 Subject: [PATCH] Block some dialogs if others open --- gui/mainwindow.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 2a08fd3e8..7d27753c7 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -2268,6 +2268,10 @@ void MainWindow::toggleDockManager() // } // } +#ifdef ENABLE_KDE_SUPPORT +#define DIALOG_ERROR KMessageBox::error(this, i18n("Action is not currently possible, due to other open dialogs.")); return +#endif + #ifdef TAGLIB_FOUND void MainWindow::editTags() { @@ -2275,6 +2279,16 @@ void MainWindow::editTags() return; } + if (0!=ActionDialog::instanceCount()) { + DIALOG_ERROR; + } + + #ifdef ENABLE_DEVICES_SUPPORT + if (0!=TrackOrganiser::instanceCount()) { + DIALOG_ERROR; + } + #endif + QList songs; if (libraryPage->isVisible()) { songs=libraryPage->selectedSongs(); @@ -2322,6 +2336,16 @@ void MainWindow::organiseFiles() return; } + if (0!=TagEditor::instanceCount() || 0!=ActionDialog::instanceCount()) { + DIALOG_ERROR; + } + + #ifdef ENABLE_REPLAYGAIN_SUPPORT + if (0!=RgDialog::instanceCount()) { + DIALOG_ERROR; + } + #endif + QList songs; if (libraryPage->isVisible()) { songs=libraryPage->selectedSongs(); @@ -2380,6 +2404,21 @@ void MainWindow::copyToDevice(const QString &from, const QString &to, const QLis return; } + if (0!=TagEditor::instanceCount()) { + DIALOG_ERROR; + } + + #ifdef ENABLE_DEVICES_SUPPORT + if (0!=TrackOrganiser::instanceCount()) { + DIALOG_ERROR; + } + #endif + #ifdef ENABLE_REPLAYGAIN_SUPPORT + if (0!=RgDialog::instanceCount()) { + DIALOG_ERROR; + } + #endif + ActionDialog *dlg=new ActionDialog(this); dlg->copy(from, to, songs); } @@ -2390,6 +2429,21 @@ void MainWindow::deleteSongs(const QString &from, const QList &songs) return; } + if (0!=TagEditor::instanceCount()) { + DIALOG_ERROR; + } + + #ifdef ENABLE_DEVICES_SUPPORT + if (0!=TrackOrganiser::instanceCount()) { + DIALOG_ERROR; + } + #endif + #ifdef ENABLE_REPLAYGAIN_SUPPORT + if (0!=RgDialog::instanceCount()) { + DIALOG_ERROR; + } + #endif + ActionDialog *dlg=new ActionDialog(this); dlg->remove(from, songs); } @@ -2402,6 +2456,16 @@ void MainWindow::replayGain() return; } + if (0!=ActionDialog::instanceCount()) { + DIALOG_ERROR; + } + + #ifdef ENABLE_DEVICES_SUPPORT + if (0!=TrackOrganiser::instanceCount()) { + DIALOG_ERROR; + } + #endif + QList songs; if (libraryPage->isVisible()) { songs=libraryPage->selectedSongs();