]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
After creating an item with the "Create New..." menu, the new item should get selecte...
[dolphin.git] / src / dolphinmainwindow.cpp
index 53505b95a0c9cd9bc942ce92ef2b042e10e8cc81..c64e85b29048cb56024b9c2479d28e84e09cd93a 100644 (file)
@@ -425,6 +425,50 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event)
 {
     DolphinSettings& settings = DolphinSettings::instance();
     GeneralSettings* generalSettings = settings.generalSettings();
+
+    if ((m_viewTab.count() > 1) && generalSettings->confirmClosingMultipleTabs()) {
+        // Ask the user if he really wants to quit and close all tabs.
+        // Open a confirmation dialog with 3 buttons:
+        // KDialog::Yes    -> Quit
+        // KDialog::No     -> Close only the current tab
+        // KDialog::Cancel -> do nothing
+        KDialog *dialog = new KDialog(this, Qt::Dialog);
+        dialog->setCaption(i18nc("@title:window", "Confirmation"));
+        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);
+
+        bool doNotAskAgainCheckboxResult = false;
+
+        const int result = KMessageBox::createKMessageBox(dialog,
+            QMessageBox::Warning,
+            i18n("You have multiple tabs open in this window, are you sure you want to quit?"),
+            QStringList(),
+            i18n("Do not ask again"),
+            &doNotAskAgainCheckboxResult,
+            KMessageBox::Notify);
+
+        if (doNotAskAgainCheckboxResult) {
+            generalSettings->setConfirmClosingMultipleTabs(false);
+        }
+
+        switch (result) {
+            case KDialog::Yes:
+                // Quit
+                break;
+            case KDialog::No:
+                // Close only the current tab
+             closeTab();
+            default:
+                event->ignore();
+                return;
+        }
+    }
+
     generalSettings->setFirstRun(false);
 
     settings.save();
@@ -510,7 +554,7 @@ void DolphinMainWindow::restoreClosedTab(QAction* action)
         // action and the separator
         QList<QAction*> actions = m_recentTabsMenu->menu()->actions();
         const int count = actions.size();
-        for (int i = 2; i < count; i++) {
+        for (int i = 2; i < count; ++i) {
             m_recentTabsMenu->menu()->removeAction(actions.at(i));
         }
     } else {
@@ -852,7 +896,6 @@ void DolphinMainWindow::openTabContextMenu(int index, const QPoint& pos)
 
     QAction* closeTabAction = menu.addAction(KIcon("tab-close"), i18nc("@action:inmenu", "Close Tab"));
     closeTabAction->setShortcut(actionCollection()->action("close_tab")->shortcut());
-
     QAction* selectedAction = menu.exec(pos);
     if (selectedAction == newTabAction) {
         const ViewTab& tab = m_viewTab[index];
@@ -1114,13 +1157,13 @@ void DolphinMainWindow::setupActions()
     backShortcut.setAlternate(Qt::Key_Backspace);
     backAction->setShortcut(backShortcut);
 
-    m_recentTabsMenu = new KActionMenu(i18n("&Recently Closed Tabs"), this);
+    m_recentTabsMenu = new KActionMenu(i18n("Recently Closed Tabs"), this);
     m_recentTabsMenu->setIcon(KIcon("edit-undo"));
     actionCollection()->addAction("closed_tabs", m_recentTabsMenu);
     connect(m_recentTabsMenu->menu(), SIGNAL(triggered(QAction *)),
             this, SLOT(restoreClosedTab(QAction *)));
 
-    QAction* action = new QAction("&Empty Recently Closed Tabs", m_recentTabsMenu);
+    QAction* action = new QAction("Empty Recently Closed Tabs", m_recentTabsMenu);
     action->setIcon(KIcon("edit-clear-list"));
     action->setData(QVariant::fromValue(true));
     m_recentTabsMenu->addAction(action);