┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dolphinmainwindow.cpp44
-rw-r--r--src/settings/behaviorsettingspage.cpp6
-rw-r--r--src/settings/behaviorsettingspage.h1
-rw-r--r--src/settings/dolphin_generalsettings.kcfg4
4 files changed, 55 insertions, 0 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 0151d48b1..fe1066025 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -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();
diff --git a/src/settings/behaviorsettingspage.cpp b/src/settings/behaviorsettingspage.cpp
index 440c73680..8f156933b 100644
--- a/src/settings/behaviorsettingspage.cpp
+++ b/src/settings/behaviorsettingspage.cpp
@@ -78,10 +78,14 @@ BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, QWidget* parent) :
m_confirmDelete = new QCheckBox(i18nc("@option:check Ask for Confirmation When",
"Deleting files or folders"), confirmBox);
connect(m_confirmDelete, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+ m_confirmClosingMultipleTabs = new QCheckBox(i18nc("@option:check Ask for Confirmation When",
+ "Closing windows with multiple tabs"), confirmBox);
+ connect(m_confirmClosingMultipleTabs, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
QVBoxLayout* confirmBoxLayout = new QVBoxLayout(confirmBox);
confirmBoxLayout->addWidget(m_confirmMoveToTrash);
confirmBoxLayout->addWidget(m_confirmDelete);
+ confirmBoxLayout->addWidget(m_confirmClosingMultipleTabs);
m_renameInline = new QCheckBox(i18nc("@option:check", "Rename inline"), vBox);
connect(m_renameInline, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
@@ -130,6 +134,7 @@ void BehaviorSettingsPage::applySettings()
confirmationGroup.writeEntry("ConfirmDelete", m_confirmDelete->isChecked());
confirmationGroup.sync();
+ settings->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs->isChecked());
settings->setRenameInline(m_renameInline->isChecked());
settings->setShowToolTips(m_showToolTips->isChecked());
settings->setShowSelectionToggle(m_showSelectionToggle->isChecked());
@@ -159,6 +164,7 @@ void BehaviorSettingsPage::loadSettings()
m_confirmMoveToTrash->setChecked(confirmationGroup.readEntry("ConfirmTrash", CONFIRM_TRASH));
m_confirmDelete->setChecked(confirmationGroup.readEntry("ConfirmDelete", CONFIRM_DELETE));
+ m_confirmClosingMultipleTabs->setChecked(settings->confirmClosingMultipleTabs());
m_renameInline->setChecked(settings->renameInline());
m_showToolTips->setChecked(settings->showToolTips());
m_showSelectionToggle->setChecked(settings->showSelectionToggle());
diff --git a/src/settings/behaviorsettingspage.h b/src/settings/behaviorsettingspage.h
index 401f2240a..fecbe08a3 100644
--- a/src/settings/behaviorsettingspage.h
+++ b/src/settings/behaviorsettingspage.h
@@ -55,6 +55,7 @@ private:
QCheckBox* m_confirmMoveToTrash;
QCheckBox* m_confirmDelete;
+ QCheckBox* m_confirmClosingMultipleTabs;
QCheckBox* m_renameInline;
QCheckBox* m_showToolTips;
diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg
index 0f3c67700..0222fa89c 100644
--- a/src/settings/dolphin_generalsettings.kcfg
+++ b/src/settings/dolphin_generalsettings.kcfg
@@ -41,6 +41,10 @@
<label context="@label">Browse through archives</label>
<default>false</default>
</entry>
+ <entry name="ConfirmClosingMultipleTabs" type="Bool">
+ <label context="@label">Ask for confirmation when closing windows with multiple tabs.</label>
+ <default>true</default>
+ </entry>
<entry name="RenameInline" type="Bool">
<label context="@label">Rename inline</label>
<default>false</default>