]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/general/confirmationssettingspage.cpp
Introduce HAVE_TERMINAL
[dolphin.git] / src / settings / general / confirmationssettingspage.cpp
1 /***************************************************************************
2 * Copyright (C) 2012 by Peter Penz <peter.penz19@gmail.com> *
3 * *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
19
20 #include "confirmationssettingspage.h"
21
22 #include "dolphin_generalsettings.h"
23 #include "global.h"
24
25 #include <KLocalizedString>
26
27 #include <QCheckBox>
28 #include <QLabel>
29 #include <QVBoxLayout>
30
31 namespace {
32 const bool ConfirmEmptyTrash = true;
33 const bool ConfirmTrash = false;
34 const bool ConfirmDelete = true;
35 const bool ConfirmScriptExecution = true;
36 }
37
38 ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget* parent) :
39 SettingsPageBase(parent),
40 m_confirmMoveToTrash(nullptr),
41 m_confirmEmptyTrash(nullptr),
42 m_confirmDelete(nullptr),
43
44 #ifdef HAVE_TERMINAL
45 m_confirmClosingTerminalRunningProgram(nullptr),
46 #endif
47
48 m_confirmClosingMultipleTabs(nullptr)
49 {
50 QVBoxLayout* topLayout = new QVBoxLayout(this);
51
52 QLabel* confirmLabelKde = new QLabel(i18nc("@title:group", "Ask for confirmation in all KDE applications when:"), this);
53 confirmLabelKde->setWordWrap(true);
54
55 m_confirmMoveToTrash = new QCheckBox(i18nc("@option:check Ask for confirmation when",
56 "Moving files or folders to trash"), this);
57 m_confirmEmptyTrash = new QCheckBox(i18nc("@option:check Ask for confirmation when",
58 "Emptying trash"), this);
59 m_confirmDelete = new QCheckBox(i18nc("@option:check Ask for confirmation when",
60 "Deleting files or folders"), this);
61 m_confirmScriptExecution = new QCheckBox(i18nc("@option:check Ask for confirmation when",
62 "Executing scripts or desktop files"), this);
63
64 QLabel* confirmLabelDolphin = new QLabel(i18nc("@title:group", "Ask for confirmation in Dolphin when:"), this);
65 confirmLabelDolphin->setWordWrap(true);
66
67 m_confirmClosingMultipleTabs = new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when",
68 "Closing windows with multiple tabs"), this);
69
70 #ifdef HAVE_TERMINAL
71 m_confirmClosingTerminalRunningProgram = new QCheckBox(i18nc("@option:check Ask for confirmation when",
72 "Closing windows with a program running in the Terminal panel"), this);
73 #endif
74
75 topLayout->addWidget(confirmLabelKde);
76 topLayout->addWidget(m_confirmMoveToTrash);
77 topLayout->addWidget(m_confirmEmptyTrash);
78 topLayout->addWidget(m_confirmDelete);
79 topLayout->addWidget(m_confirmScriptExecution);
80 topLayout->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT);
81 topLayout->addWidget(confirmLabelDolphin);
82 topLayout->addWidget(m_confirmClosingMultipleTabs);
83
84 #ifdef HAVE_TERMINAL
85 topLayout->addWidget(m_confirmClosingTerminalRunningProgram);
86 #endif
87
88 topLayout->addStretch();
89
90 loadSettings();
91
92 connect(m_confirmMoveToTrash, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed);
93 connect(m_confirmEmptyTrash, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed);
94 connect(m_confirmDelete, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed);
95 connect(m_confirmScriptExecution, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed);
96 connect(m_confirmClosingMultipleTabs, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed);
97
98 #ifdef HAVE_TERMINAL
99 connect(m_confirmClosingTerminalRunningProgram, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed);
100 #endif
101 }
102
103 ConfirmationsSettingsPage::~ConfirmationsSettingsPage()
104 {
105 }
106
107 void ConfirmationsSettingsPage::applySettings()
108 {
109 KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::NoGlobals);
110 KConfigGroup confirmationGroup(kioConfig, "Confirmations");
111 confirmationGroup.writeEntry("ConfirmTrash", m_confirmMoveToTrash->isChecked());
112 confirmationGroup.writeEntry("ConfirmEmptyTrash", m_confirmEmptyTrash->isChecked());
113 confirmationGroup.writeEntry("ConfirmDelete", m_confirmDelete->isChecked());
114
115 KConfigGroup scriptExecutionGroup(kioConfig, "Executable scripts");
116 if (m_confirmScriptExecution->isChecked()) {
117 scriptExecutionGroup.writeEntry("behaviourOnLaunch", "alwaysAsk");
118 } else {
119 scriptExecutionGroup.writeEntry("behaviourOnLaunch", "dontAsk");
120 }
121 kioConfig->sync();
122
123 GeneralSettings* settings = GeneralSettings::self();
124 settings->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs->isChecked());
125
126 #ifdef HAVE_TERMINAL
127 settings->setConfirmClosingTerminalRunningProgram(m_confirmClosingTerminalRunningProgram->isChecked());
128 #endif
129
130 settings->save();
131 }
132
133 void ConfirmationsSettingsPage::restoreDefaults()
134 {
135 GeneralSettings* settings = GeneralSettings::self();
136 settings->useDefaults(true);
137 loadSettings();
138 settings->useDefaults(false);
139
140 m_confirmMoveToTrash->setChecked(ConfirmTrash);
141 m_confirmEmptyTrash->setChecked(ConfirmEmptyTrash);
142 m_confirmDelete->setChecked(ConfirmDelete);
143 m_confirmScriptExecution->setChecked(ConfirmScriptExecution);
144 }
145
146 void ConfirmationsSettingsPage::loadSettings()
147 {
148 KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::IncludeGlobals);
149 const KConfigGroup confirmationGroup(kioConfig, "Confirmations");
150 m_confirmMoveToTrash->setChecked(confirmationGroup.readEntry("ConfirmTrash", ConfirmTrash));
151 m_confirmEmptyTrash->setChecked(confirmationGroup.readEntry("ConfirmEmptyTrash", ConfirmEmptyTrash));
152 m_confirmDelete->setChecked(confirmationGroup.readEntry("ConfirmDelete", ConfirmDelete));
153
154 const KConfigGroup scriptExecutionGroup(KSharedConfig::openConfig(QStringLiteral("kiorc")), "Executable scripts");
155 const QString value = scriptExecutionGroup.readEntry("behaviourOnLaunch", "alwaysAsk");
156 m_confirmScriptExecution->setChecked(value == QLatin1String("alwaysAsk"));
157
158 m_confirmClosingMultipleTabs->setChecked(GeneralSettings::confirmClosingMultipleTabs());
159
160 #ifdef HAVE_TERMINAL
161 m_confirmClosingTerminalRunningProgram->setChecked(GeneralSettings::confirmClosingTerminalRunningProgram());
162 #endif
163 }
164