From 31d62997c728af979734b897ea0e1e6d33f0325f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Wed, 22 Jul 2009 14:16:21 +0200 Subject: [PATCH] Use a sheet on Mac for confirming deletion of a color scheme By splitting out the confirmation to a different slot, so that the dialog can be window-modal. Also changed from Yes/No button to Cancel/Delete button, which is clearer to the user. Reviewed-by: Norwegian Rock Cat --- src/plugins/texteditor/fontsettingspage.cpp | 44 +++++++++++++++------ src/plugins/texteditor/fontsettingspage.h | 1 + 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index 5a8e457768a..67b551496c4 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -357,7 +358,7 @@ QWidget *FontSettingsPage::createPage(QWidget *parent) connect(d_ptr->ui.sizeComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontSizeSelected(QString))); connect(d_ptr->ui.schemeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(colorSchemeSelected(int))); connect(d_ptr->ui.copyButton, SIGNAL(clicked()), this, SLOT(copyColorScheme())); - connect(d_ptr->ui.deleteButton, SIGNAL(clicked()), this, SLOT(deleteColorScheme())); + connect(d_ptr->ui.deleteButton, SIGNAL(clicked()), this, SLOT(confirmDeleteColorScheme())); updatePointSizes(); refreshColorSchemeList(); @@ -466,23 +467,44 @@ void FontSettingsPage::copyColorScheme(const QString &name) } } -void FontSettingsPage::deleteColorScheme() +void FontSettingsPage::confirmDeleteColorScheme() { - int index = d_ptr->ui.schemeComboBox->currentIndex(); + const int index = d_ptr->ui.schemeComboBox->currentIndex(); if (index == -1) return; const ColorSchemeEntry &entry = d_ptr->m_schemeListModel->colorSchemeAt(index); + if (entry.readOnly) + return; - if (!entry.readOnly) { - int ret = QMessageBox::warning(d_ptr->ui.deleteButton->window(), - tr("Delete Color Scheme"), - tr("Are you sure you want to delete this color scheme permanently?"), - QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + QMessageBox *messageBox = new QMessageBox(QMessageBox::Warning, + tr("Delete Color Scheme"), + tr("Are you sure you want to delete this color scheme permanently?"), + QMessageBox::Discard | QMessageBox::Cancel, + d_ptr->ui.deleteButton->window()); - if (ret == QMessageBox::Yes && QFile::remove(entry.fileName)) - d_ptr->m_schemeListModel->removeColorScheme(index); - } + // Change the text and role of the discard button + QPushButton *deleteButton = static_cast(messageBox->button(QMessageBox::Discard)); + deleteButton->setText(tr("Delete")); + messageBox->addButton(deleteButton, QMessageBox::AcceptRole); + messageBox->setDefaultButton(deleteButton); + + connect(deleteButton, SIGNAL(clicked()), messageBox, SLOT(accept())); + connect(messageBox, SIGNAL(accepted()), this, SLOT(deleteColorScheme())); + messageBox->setAttribute(Qt::WA_DeleteOnClose); + messageBox->open(); +} + +void FontSettingsPage::deleteColorScheme() +{ + const int index = d_ptr->ui.schemeComboBox->currentIndex(); + QTC_ASSERT(index != -1, return) + + const ColorSchemeEntry &entry = d_ptr->m_schemeListModel->colorSchemeAt(index); + QTC_ASSERT(!entry.readOnly, return) + + if (QFile::remove(entry.fileName)) + d_ptr->m_schemeListModel->removeColorScheme(index); } void FontSettingsPage::maybeSaveColorScheme() diff --git a/src/plugins/texteditor/fontsettingspage.h b/src/plugins/texteditor/fontsettingspage.h index 33f7257be7c..f47a95b3116 100644 --- a/src/plugins/texteditor/fontsettingspage.h +++ b/src/plugins/texteditor/fontsettingspage.h @@ -114,6 +114,7 @@ private slots: void colorSchemeSelected(int index); void copyColorScheme(); void copyColorScheme(const QString &name); + void confirmDeleteColorScheme(); void deleteColorScheme(); private: