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>
16 #include <QHBoxLayout>
18 #include <QVBoxLayout>
22 enum ScriptExecution
{ AlwaysAsk
= 0, Open
= 1, Execute
= 2 };
24 const bool ConfirmEmptyTrash
= true;
25 const bool ConfirmTrash
= false;
26 const bool ConfirmDelete
= true;
27 const int ConfirmScriptExecution
= ScriptExecution::AlwaysAsk
;
30 ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget
*parent
)
31 : SettingsPageBase(parent
)
32 , m_confirmMoveToTrash(nullptr)
33 , m_confirmEmptyTrash(nullptr)
34 , m_confirmDelete(nullptr)
38 m_confirmClosingTerminalRunningProgram(nullptr)
42 m_confirmClosingMultipleTabs(nullptr)
44 QVBoxLayout
*topLayout
= new QVBoxLayout(this);
46 QLabel
*confirmLabelKde
= new QLabel(i18nc("@title:group", "Ask for confirmation in all KDE applications when:"), this);
47 confirmLabelKde
->setWordWrap(true);
49 m_confirmMoveToTrash
= new QCheckBox(i18nc("@option:check Ask for confirmation when", "Moving files or folders to trash"), this);
50 m_confirmEmptyTrash
= new QCheckBox(i18nc("@option:check Ask for confirmation when", "Emptying trash"), this);
51 m_confirmDelete
= new QCheckBox(i18nc("@option:check Ask for confirmation when", "Deleting files or folders"), this);
53 QLabel
*confirmLabelDolphin
= new QLabel(i18nc("@title:group", "Ask for confirmation in Dolphin when:"), this);
54 confirmLabelDolphin
->setWordWrap(true);
56 m_confirmClosingMultipleTabs
= new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when", "Closing windows with multiple tabs"), this);
59 m_confirmClosingTerminalRunningProgram
=
60 new QCheckBox(i18nc("@option:check Ask for confirmation when", "Closing windows with a program running in the Terminal panel"), this);
63 QHBoxLayout
*executableScriptLayout
= new QHBoxLayout();
64 QLabel
*executableScriptLabel
= new QLabel(i18nc("@title:group", "When opening an executable file:"), this);
65 confirmLabelKde
->setWordWrap(true);
66 executableScriptLayout
->addWidget(executableScriptLabel
);
68 m_confirmScriptExecution
= new QComboBox(this);
69 m_confirmScriptExecution
->addItems({i18n("Always ask"), i18n("Open in application"), i18n("Run script")});
70 executableScriptLayout
->addWidget(m_confirmScriptExecution
);
72 topLayout
->addWidget(confirmLabelKde
);
73 topLayout
->addWidget(m_confirmMoveToTrash
);
74 topLayout
->addWidget(m_confirmEmptyTrash
);
75 topLayout
->addWidget(m_confirmDelete
);
76 topLayout
->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT
);
77 topLayout
->addWidget(confirmLabelDolphin
);
78 topLayout
->addWidget(m_confirmClosingMultipleTabs
);
81 topLayout
->addWidget(m_confirmClosingTerminalRunningProgram
);
84 topLayout
->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT
);
85 topLayout
->addLayout(executableScriptLayout
);
87 topLayout
->addStretch();
91 connect(m_confirmMoveToTrash
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
92 connect(m_confirmEmptyTrash
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
93 connect(m_confirmDelete
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
94 connect(m_confirmScriptExecution
, QOverload
<int>::of(&QComboBox::currentIndexChanged
), this, &ConfirmationsSettingsPage::changed
);
95 connect(m_confirmClosingMultipleTabs
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
98 connect(m_confirmClosingTerminalRunningProgram
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
102 ConfirmationsSettingsPage::~ConfirmationsSettingsPage()
106 void ConfirmationsSettingsPage::applySettings()
108 KSharedConfig::Ptr kioConfig
= KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::NoGlobals
);
109 KConfigGroup
confirmationGroup(kioConfig
, "Confirmations");
110 confirmationGroup
.writeEntry("ConfirmTrash", m_confirmMoveToTrash
->isChecked());
111 confirmationGroup
.writeEntry("ConfirmEmptyTrash", m_confirmEmptyTrash
->isChecked());
112 confirmationGroup
.writeEntry("ConfirmDelete", m_confirmDelete
->isChecked());
114 KConfigGroup
scriptExecutionGroup(kioConfig
, "Executable scripts");
115 const int index
= m_confirmScriptExecution
->currentIndex();
117 case ScriptExecution::AlwaysAsk
:
118 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "alwaysAsk");
120 case ScriptExecution::Open
:
121 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "open");
123 case ScriptExecution::Execute
:
124 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "execute");
129 GeneralSettings
*settings
= GeneralSettings::self();
130 settings
->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs
->isChecked());
133 settings
->setConfirmClosingTerminalRunningProgram(m_confirmClosingTerminalRunningProgram
->isChecked());
139 void ConfirmationsSettingsPage::restoreDefaults()
141 GeneralSettings
*settings
= GeneralSettings::self();
142 settings
->useDefaults(true);
144 settings
->useDefaults(false);
146 m_confirmMoveToTrash
->setChecked(ConfirmTrash
);
147 m_confirmEmptyTrash
->setChecked(ConfirmEmptyTrash
);
148 m_confirmDelete
->setChecked(ConfirmDelete
);
149 m_confirmScriptExecution
->setCurrentIndex(ConfirmScriptExecution
);
152 void ConfirmationsSettingsPage::loadSettings()
154 KSharedConfig::Ptr kioConfig
= KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::IncludeGlobals
);
155 const KConfigGroup
confirmationGroup(kioConfig
, "Confirmations");
156 m_confirmMoveToTrash
->setChecked(confirmationGroup
.readEntry("ConfirmTrash", ConfirmTrash
));
157 m_confirmEmptyTrash
->setChecked(confirmationGroup
.readEntry("ConfirmEmptyTrash", ConfirmEmptyTrash
));
158 m_confirmDelete
->setChecked(confirmationGroup
.readEntry("ConfirmDelete", ConfirmDelete
));
160 const KConfigGroup
scriptExecutionGroup(KSharedConfig::openConfig(QStringLiteral("kiorc")), "Executable scripts");
161 const QString value
= scriptExecutionGroup
.readEntry("behaviourOnLaunch", "alwaysAsk");
162 if (value
== QLatin1String("alwaysAsk")) {
163 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::AlwaysAsk
);
164 } else if (value
== QLatin1String("execute")) {
165 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::Execute
);
166 } else /* if (value == QLatin1String("open"))*/ {
167 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::Open
);
170 m_confirmClosingMultipleTabs
->setChecked(GeneralSettings::confirmClosingMultipleTabs());
173 m_confirmClosingTerminalRunningProgram
->setChecked(GeneralSettings::confirmClosingTerminalRunningProgram());