diff options
-rw-r--r-- | src/mainwindow.cpp | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0fdd538e..809a209e 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -50,6 +50,7 @@ #include <KFileDialog> #include <KMenu> #include <KGlobalSettings> +#include <KPushButton> // Qt Includes @@ -791,16 +792,52 @@ void MainWindow::slotShowMenubar(bool enable) bool MainWindow::queryClose() { + KConfig config("rekonqrc"); + KConfigGroup group = config.group("Hand Settings"); + bool doNotAskAgainResult = group.readEntry("ExitConfirmationDialog", false); + + if(doNotAskAgainResult) + return true; + if (m_view->count() > 1) { - int ret = KMessageBox::warningYesNo(this, - i18n("Are you sure you want to close the window?\nThere are %1 tab open" , m_view->count() ), - i18n("Closing") - ); - if (ret == KMessageBox::No) + KDialog *dialog = new KDialog(this, Qt::Dialog); + dialog->setCaption( i18n("Closing") ); + dialog->setButtons(KDialog::Yes | KDialog::No | KDialog::Cancel ); + dialog->setModal(true); + dialog->showButtonSeparator(true); + dialog->setButtonGuiItem(KDialog::Yes, KStandardGuiItem::quit()); + dialog->setButtonGuiItem(KDialog::No, KGuiItem(i18n("C&lose Current Tab"), KIcon("tab-close"))); + dialog->setButtonGuiItem(KDialog::Cancel, KStandardGuiItem::cancel()); + dialog->setDefaultButton(KDialog::Yes); + + int ret = KMessageBox::createKMessageBox( dialog, + QMessageBox::Warning, + i18n("Are you sure you want to close the window?\nThere are %1 tab open" , m_view->count() ), + QStringList(), + i18n("Do not ask again"), + &doNotAskAgainResult, + KMessageBox::Notify + ); + + if (doNotAskAgainResult) { - return false; + group.writeEntry("ExitConfirmationDialog", true); + } + + switch (ret) + { + case KDialog::Yes: + // Quit + return true; + break; + case KDialog::No: + // Close only the current tab + m_view->slotCloseTab(); + default: + return false; } } + return true; -} +}
\ No newline at end of file |