1 /***************************************************************************
2 * Copyright (C) 2012 by Peter Penz <peter.penz19@gmail.com> *
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. *
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. *
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 ***************************************************************************/
20 #include "confirmationssettingspage.h"
22 #include "dolphin_generalsettings.h"
25 #include <KLocalizedString>
30 #include <QHBoxLayout>
31 #include <QVBoxLayout>
41 const bool ConfirmEmptyTrash
= true;
42 const bool ConfirmTrash
= false;
43 const bool ConfirmDelete
= true;
44 const int ConfirmScriptExecution
= ScriptExecution::AlwaysAsk
;
47 ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget
* parent
) :
48 SettingsPageBase(parent
),
49 m_confirmMoveToTrash(nullptr),
50 m_confirmEmptyTrash(nullptr),
51 m_confirmDelete(nullptr),
54 m_confirmClosingTerminalRunningProgram(nullptr),
57 m_confirmClosingMultipleTabs(nullptr)
59 QVBoxLayout
* topLayout
= new QVBoxLayout(this);
61 QLabel
* confirmLabelKde
= new QLabel(i18nc("@title:group", "Ask for confirmation in all KDE applications when:"), this);
62 confirmLabelKde
->setWordWrap(true);
64 m_confirmMoveToTrash
= new QCheckBox(i18nc("@option:check Ask for confirmation when",
65 "Moving files or folders to trash"), this);
66 m_confirmEmptyTrash
= new QCheckBox(i18nc("@option:check Ask for confirmation when",
67 "Emptying trash"), this);
68 m_confirmDelete
= new QCheckBox(i18nc("@option:check Ask for confirmation when",
69 "Deleting files or folders"), this);
71 QLabel
* confirmLabelDolphin
= new QLabel(i18nc("@title:group", "Ask for confirmation in Dolphin when:"), this);
72 confirmLabelDolphin
->setWordWrap(true);
74 m_confirmClosingMultipleTabs
= new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when",
75 "Closing windows with multiple tabs"), this);
78 m_confirmClosingTerminalRunningProgram
= new QCheckBox(i18nc("@option:check Ask for confirmation when",
79 "Closing windows with a program running in the Terminal panel"), this);
82 QHBoxLayout
* executableScriptLayout
= new QHBoxLayout();
83 QLabel
* executableScriptLabel
= new QLabel(i18nc("@title:group", "When opening an executable file:"), this);
84 confirmLabelKde
->setWordWrap(true);
85 executableScriptLayout
->addWidget(executableScriptLabel
);
87 m_confirmScriptExecution
= new QComboBox(this);
88 m_confirmScriptExecution
->addItems({i18n("Always ask"), i18n("Open in application"), i18n("Run script")});
89 executableScriptLayout
->addWidget(m_confirmScriptExecution
);
91 topLayout
->addWidget(confirmLabelKde
);
92 topLayout
->addWidget(m_confirmMoveToTrash
);
93 topLayout
->addWidget(m_confirmEmptyTrash
);
94 topLayout
->addWidget(m_confirmDelete
);
95 topLayout
->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT
);
96 topLayout
->addWidget(confirmLabelDolphin
);
97 topLayout
->addWidget(m_confirmClosingMultipleTabs
);
100 topLayout
->addWidget(m_confirmClosingTerminalRunningProgram
);
103 topLayout
->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT
);
104 topLayout
->addLayout(executableScriptLayout
);
106 topLayout
->addStretch();
110 connect(m_confirmMoveToTrash
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
111 connect(m_confirmEmptyTrash
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
112 connect(m_confirmDelete
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
113 #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
114 connect(m_confirmScriptExecution
, QOverload
<int>::of(&QComboBox::currentIndexChanged
), this, &ConfirmationsSettingsPage::changed
);
116 connect(m_confirmScriptExecution
, QOverload
<int, const QString
&>::of(&QComboBox::currentIndexChanged
), this, &ConfirmationsSettingsPage::changed
);
118 connect(m_confirmClosingMultipleTabs
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
121 connect(m_confirmClosingTerminalRunningProgram
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
125 ConfirmationsSettingsPage::~ConfirmationsSettingsPage()
129 void ConfirmationsSettingsPage::applySettings()
131 KSharedConfig::Ptr kioConfig
= KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::NoGlobals
);
132 KConfigGroup
confirmationGroup(kioConfig
, "Confirmations");
133 confirmationGroup
.writeEntry("ConfirmTrash", m_confirmMoveToTrash
->isChecked());
134 confirmationGroup
.writeEntry("ConfirmEmptyTrash", m_confirmEmptyTrash
->isChecked());
135 confirmationGroup
.writeEntry("ConfirmDelete", m_confirmDelete
->isChecked());
137 KConfigGroup
scriptExecutionGroup(kioConfig
, "Executable scripts");
138 const int index
= m_confirmScriptExecution
->currentIndex();
140 case ScriptExecution::AlwaysAsk
:
141 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "alwaysAsk");
143 case ScriptExecution::Open
:
144 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "dontAsk");
146 case ScriptExecution::Execute
:
147 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "execute");
152 GeneralSettings
* settings
= GeneralSettings::self();
153 settings
->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs
->isChecked());
156 settings
->setConfirmClosingTerminalRunningProgram(m_confirmClosingTerminalRunningProgram
->isChecked());
162 void ConfirmationsSettingsPage::restoreDefaults()
164 GeneralSettings
* settings
= GeneralSettings::self();
165 settings
->useDefaults(true);
167 settings
->useDefaults(false);
169 m_confirmMoveToTrash
->setChecked(ConfirmTrash
);
170 m_confirmEmptyTrash
->setChecked(ConfirmEmptyTrash
);
171 m_confirmDelete
->setChecked(ConfirmDelete
);
172 m_confirmScriptExecution
->setCurrentIndex(ConfirmScriptExecution
);
175 void ConfirmationsSettingsPage::loadSettings()
177 KSharedConfig::Ptr kioConfig
= KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::IncludeGlobals
);
178 const KConfigGroup
confirmationGroup(kioConfig
, "Confirmations");
179 m_confirmMoveToTrash
->setChecked(confirmationGroup
.readEntry("ConfirmTrash", ConfirmTrash
));
180 m_confirmEmptyTrash
->setChecked(confirmationGroup
.readEntry("ConfirmEmptyTrash", ConfirmEmptyTrash
));
181 m_confirmDelete
->setChecked(confirmationGroup
.readEntry("ConfirmDelete", ConfirmDelete
));
183 const KConfigGroup
scriptExecutionGroup(KSharedConfig::openConfig(QStringLiteral("kiorc")), "Executable scripts");
184 const QString value
= scriptExecutionGroup
.readEntry("behaviourOnLaunch", "alwaysAsk");
185 if (value
== QLatin1String("dontAsk")) {
186 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::Open
);
187 } else if (value
== QLatin1String("execute")) {
188 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::Execute
);
189 } else /* if (value == QLatin1String("alwaysAsk"))*/ {
190 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::AlwaysAsk
);
193 m_confirmClosingMultipleTabs
->setChecked(GeneralSettings::confirmClosingMultipleTabs());
196 m_confirmClosingTerminalRunningProgram
->setChecked(GeneralSettings::confirmClosingTerminalRunningProgram());