2 * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #include "confirmationssettingspage.h"
9 #include "dolphin_generalsettings.h"
12 #include <KLocalizedString>
17 #include <QHBoxLayout>
18 #include <QVBoxLayout>
28 const bool ConfirmEmptyTrash
= true;
29 const bool ConfirmTrash
= false;
30 const bool ConfirmDelete
= true;
31 const int ConfirmScriptExecution
= ScriptExecution::AlwaysAsk
;
34 ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget
* parent
) :
35 SettingsPageBase(parent
),
36 m_confirmMoveToTrash(nullptr),
37 m_confirmEmptyTrash(nullptr),
38 m_confirmDelete(nullptr),
41 m_confirmClosingTerminalRunningProgram(nullptr),
44 m_confirmClosingMultipleTabs(nullptr)
46 QVBoxLayout
* topLayout
= new QVBoxLayout(this);
48 QLabel
* confirmLabelKde
= new QLabel(i18nc("@title:group", "Ask for confirmation in all KDE applications when:"), this);
49 confirmLabelKde
->setWordWrap(true);
51 m_confirmMoveToTrash
= new QCheckBox(i18nc("@option:check Ask for confirmation when",
52 "Moving files or folders to trash"), this);
53 m_confirmEmptyTrash
= new QCheckBox(i18nc("@option:check Ask for confirmation when",
54 "Emptying trash"), this);
55 m_confirmDelete
= new QCheckBox(i18nc("@option:check Ask for confirmation when",
56 "Deleting files or folders"), this);
58 QLabel
* confirmLabelDolphin
= new QLabel(i18nc("@title:group", "Ask for confirmation in Dolphin when:"), this);
59 confirmLabelDolphin
->setWordWrap(true);
61 m_confirmClosingMultipleTabs
= new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when",
62 "Closing windows with multiple tabs"), this);
65 m_confirmClosingTerminalRunningProgram
= new QCheckBox(i18nc("@option:check Ask for confirmation when",
66 "Closing windows with a program running in the Terminal panel"), this);
69 QHBoxLayout
* executableScriptLayout
= new QHBoxLayout();
70 QLabel
* executableScriptLabel
= new QLabel(i18nc("@title:group", "When opening an executable file:"), this);
71 confirmLabelKde
->setWordWrap(true);
72 executableScriptLayout
->addWidget(executableScriptLabel
);
74 m_confirmScriptExecution
= new QComboBox(this);
75 m_confirmScriptExecution
->addItems({i18n("Always ask"), i18n("Open in application"), i18n("Run script")});
76 executableScriptLayout
->addWidget(m_confirmScriptExecution
);
78 topLayout
->addWidget(confirmLabelKde
);
79 topLayout
->addWidget(m_confirmMoveToTrash
);
80 topLayout
->addWidget(m_confirmEmptyTrash
);
81 topLayout
->addWidget(m_confirmDelete
);
82 topLayout
->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT
);
83 topLayout
->addWidget(confirmLabelDolphin
);
84 topLayout
->addWidget(m_confirmClosingMultipleTabs
);
87 topLayout
->addWidget(m_confirmClosingTerminalRunningProgram
);
90 topLayout
->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT
);
91 topLayout
->addLayout(executableScriptLayout
);
93 topLayout
->addStretch();
97 connect(m_confirmMoveToTrash
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
98 connect(m_confirmEmptyTrash
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
99 connect(m_confirmDelete
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
100 connect(m_confirmScriptExecution
, QOverload
<int>::of(&QComboBox::currentIndexChanged
), this, &ConfirmationsSettingsPage::changed
);
101 connect(m_confirmClosingMultipleTabs
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
104 connect(m_confirmClosingTerminalRunningProgram
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
108 ConfirmationsSettingsPage::~ConfirmationsSettingsPage()
112 void ConfirmationsSettingsPage::applySettings()
114 KSharedConfig::Ptr kioConfig
= KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::NoGlobals
);
115 KConfigGroup
confirmationGroup(kioConfig
, "Confirmations");
116 confirmationGroup
.writeEntry("ConfirmTrash", m_confirmMoveToTrash
->isChecked());
117 confirmationGroup
.writeEntry("ConfirmEmptyTrash", m_confirmEmptyTrash
->isChecked());
118 confirmationGroup
.writeEntry("ConfirmDelete", m_confirmDelete
->isChecked());
120 KConfigGroup
scriptExecutionGroup(kioConfig
, "Executable scripts");
121 const int index
= m_confirmScriptExecution
->currentIndex();
123 case ScriptExecution::AlwaysAsk
:
124 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "alwaysAsk");
126 case ScriptExecution::Open
:
127 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "open");
129 case ScriptExecution::Execute
:
130 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "execute");
135 GeneralSettings
* settings
= GeneralSettings::self();
136 settings
->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs
->isChecked());
139 settings
->setConfirmClosingTerminalRunningProgram(m_confirmClosingTerminalRunningProgram
->isChecked());
145 void ConfirmationsSettingsPage::restoreDefaults()
147 GeneralSettings
* settings
= GeneralSettings::self();
148 settings
->useDefaults(true);
150 settings
->useDefaults(false);
152 m_confirmMoveToTrash
->setChecked(ConfirmTrash
);
153 m_confirmEmptyTrash
->setChecked(ConfirmEmptyTrash
);
154 m_confirmDelete
->setChecked(ConfirmDelete
);
155 m_confirmScriptExecution
->setCurrentIndex(ConfirmScriptExecution
);
158 void ConfirmationsSettingsPage::loadSettings()
160 KSharedConfig::Ptr kioConfig
= KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::IncludeGlobals
);
161 const KConfigGroup
confirmationGroup(kioConfig
, "Confirmations");
162 m_confirmMoveToTrash
->setChecked(confirmationGroup
.readEntry("ConfirmTrash", ConfirmTrash
));
163 m_confirmEmptyTrash
->setChecked(confirmationGroup
.readEntry("ConfirmEmptyTrash", ConfirmEmptyTrash
));
164 m_confirmDelete
->setChecked(confirmationGroup
.readEntry("ConfirmDelete", ConfirmDelete
));
166 const KConfigGroup
scriptExecutionGroup(KSharedConfig::openConfig(QStringLiteral("kiorc")), "Executable scripts");
167 const QString value
= scriptExecutionGroup
.readEntry("behaviourOnLaunch", "alwaysAsk");
168 if (value
== QLatin1String("alwaysAsk")) {
169 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::AlwaysAsk
);
170 } else if (value
== QLatin1String("execute")) {
171 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::Execute
);
172 } else /* if (value == QLatin1String("open"))*/ {
173 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::Open
);
176 m_confirmClosingMultipleTabs
->setChecked(GeneralSettings::confirmClosingMultipleTabs());
179 m_confirmClosingTerminalRunningProgram
->setChecked(GeneralSettings::confirmClosingTerminalRunningProgram());