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 <QFormLayout>
21 enum ScriptExecution
{ AlwaysAsk
= 0, Open
= 1, Execute
= 2 };
23 const bool ConfirmEmptyTrash
= true;
24 const bool ConfirmTrash
= false;
25 const bool ConfirmDelete
= true;
26 const int ConfirmScriptExecution
= ScriptExecution::AlwaysAsk
;
29 ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget
*parent
)
30 : SettingsPageBase(parent
)
31 , m_confirmMoveToTrash(nullptr)
32 , m_confirmEmptyTrash(nullptr)
33 , m_confirmDelete(nullptr)
37 m_confirmClosingTerminalRunningProgram(nullptr)
41 m_confirmClosingMultipleTabs(nullptr)
43 QFormLayout
*topLayout
= new QFormLayout(this);
45 QLabel
*confirmLabelKde
= new QLabel(i18nc("@title:group", "Ask for confirmation in all KDE applications when:"), this);
46 confirmLabelKde
->setWordWrap(true);
48 m_confirmMoveToTrash
= new QCheckBox(i18nc("@option:check Ask for confirmation when", "Moving files or folders to trash"), this);
49 m_confirmEmptyTrash
= new QCheckBox(i18nc("@option:check Ask for confirmation when", "Emptying trash"), this);
50 m_confirmDelete
= new QCheckBox(i18nc("@option:check Ask for confirmation when", "Deleting files or folders"), this);
52 QLabel
*confirmLabelDolphin
= new QLabel(i18nc("@title:group", "Ask for confirmation in Dolphin when:"), this);
53 confirmLabelDolphin
->setWordWrap(true);
55 m_confirmClosingMultipleTabs
= new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when", "Closing windows with multiple tabs"), this);
58 m_confirmClosingTerminalRunningProgram
=
59 new QCheckBox(i18nc("@option:check Ask for confirmation when", "Closing windows with a program running in the Terminal panel"), this);
62 m_confirmOpenManyFolders
= new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when", "Opening many folders at once"), this);
63 m_confirmOpenManyTerminals
= new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when", "Opening many terminals at once"), this);
65 QLabel
*executableScriptLabel
= new QLabel(i18nc("@title:group", "When opening an executable file:"), this);
66 executableScriptLabel
->setWordWrap(true);
68 m_confirmScriptExecution
= new QComboBox(this);
69 m_confirmScriptExecution
->addItems({i18n("Always ask"), i18n("Open in application"), i18n("Run script")});
71 topLayout
->addRow(confirmLabelKde
);
72 topLayout
->addRow(nullptr, m_confirmMoveToTrash
);
73 topLayout
->addRow(nullptr, m_confirmEmptyTrash
);
74 topLayout
->addRow(nullptr, m_confirmDelete
);
76 topLayout
->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT
, QSizePolicy::Fixed
, QSizePolicy::Fixed
));
77 topLayout
->addRow(confirmLabelDolphin
);
78 topLayout
->addRow(nullptr, m_confirmClosingMultipleTabs
);
81 topLayout
->addRow(nullptr, m_confirmClosingTerminalRunningProgram
);
84 topLayout
->addRow(nullptr, m_confirmOpenManyFolders
);
85 topLayout
->addRow(nullptr, m_confirmOpenManyTerminals
);
87 topLayout
->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT
, QSizePolicy::Fixed
, QSizePolicy::Fixed
));
88 topLayout
->addRow(executableScriptLabel
, m_confirmScriptExecution
);
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
, QOverload
<int>::of(&QComboBox::currentIndexChanged
), this, &ConfirmationsSettingsPage::changed
);
96 connect(m_confirmClosingMultipleTabs
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
97 connect(m_confirmOpenManyFolders
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
98 connect(m_confirmOpenManyTerminals
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
101 connect(m_confirmClosingTerminalRunningProgram
, &QCheckBox::toggled
, this, &ConfirmationsSettingsPage::changed
);
105 ConfirmationsSettingsPage::~ConfirmationsSettingsPage()
109 void ConfirmationsSettingsPage::applySettings()
111 KSharedConfig::Ptr kioConfig
= KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::NoGlobals
);
112 KConfigGroup
confirmationGroup(kioConfig
, QStringLiteral("Confirmations"));
113 confirmationGroup
.writeEntry("ConfirmTrash", m_confirmMoveToTrash
->isChecked());
114 confirmationGroup
.writeEntry("ConfirmEmptyTrash", m_confirmEmptyTrash
->isChecked());
115 confirmationGroup
.writeEntry("ConfirmDelete", m_confirmDelete
->isChecked());
117 KConfigGroup
scriptExecutionGroup(kioConfig
, QStringLiteral("Executable scripts"));
118 const int index
= m_confirmScriptExecution
->currentIndex();
120 case ScriptExecution::AlwaysAsk
:
121 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "alwaysAsk");
123 case ScriptExecution::Open
:
124 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "open");
126 case ScriptExecution::Execute
:
127 scriptExecutionGroup
.writeEntry("behaviourOnLaunch", "execute");
132 GeneralSettings
*settings
= GeneralSettings::self();
133 settings
->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs
->isChecked());
134 settings
->setConfirmOpenManyFolders(m_confirmOpenManyFolders
->isChecked());
135 settings
->setConfirmOpenManyTerminals(m_confirmOpenManyTerminals
->isChecked());
138 settings
->setConfirmClosingTerminalRunningProgram(m_confirmClosingTerminalRunningProgram
->isChecked());
144 void ConfirmationsSettingsPage::restoreDefaults()
146 GeneralSettings
*settings
= GeneralSettings::self();
147 settings
->useDefaults(true);
149 settings
->useDefaults(false);
151 m_confirmMoveToTrash
->setChecked(ConfirmTrash
);
152 m_confirmEmptyTrash
->setChecked(ConfirmEmptyTrash
);
153 m_confirmDelete
->setChecked(ConfirmDelete
);
154 m_confirmScriptExecution
->setCurrentIndex(ConfirmScriptExecution
);
157 void ConfirmationsSettingsPage::loadSettings()
159 KSharedConfig::Ptr kioConfig
= KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::IncludeGlobals
);
160 const KConfigGroup
confirmationGroup(kioConfig
, QStringLiteral("Confirmations"));
161 m_confirmMoveToTrash
->setChecked(confirmationGroup
.readEntry("ConfirmTrash", ConfirmTrash
));
162 m_confirmEmptyTrash
->setChecked(confirmationGroup
.readEntry("ConfirmEmptyTrash", ConfirmEmptyTrash
));
163 m_confirmDelete
->setChecked(confirmationGroup
.readEntry("ConfirmDelete", ConfirmDelete
));
165 const KConfigGroup
scriptExecutionGroup(KSharedConfig::openConfig(QStringLiteral("kiorc")), QStringLiteral("Executable scripts"));
166 const QString value
= scriptExecutionGroup
.readEntry("behaviourOnLaunch", "alwaysAsk");
167 if (value
== QLatin1String("alwaysAsk")) {
168 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::AlwaysAsk
);
169 } else if (value
== QLatin1String("execute")) {
170 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::Execute
);
171 } else /* if (value == QLatin1String("open"))*/ {
172 m_confirmScriptExecution
->setCurrentIndex(ScriptExecution::Open
);
175 m_confirmClosingMultipleTabs
->setChecked(GeneralSettings::confirmClosingMultipleTabs());
177 // KMessageBox for its dontshowAgain settings are true => Yes, false => No, No value => ask
178 // we use default = false to not write false into the rc file, but have no value
179 // the UI has inversed meaning compared to the interpretation
180 m_confirmOpenManyFolders
->setChecked(GeneralSettings::confirmOpenManyFolders());
181 m_confirmOpenManyTerminals
->setChecked(GeneralSettings::confirmOpenManyTerminals());
184 m_confirmClosingTerminalRunningProgram
->setChecked(GeneralSettings::confirmClosingTerminalRunningProgram());
188 #include "moc_confirmationssettingspage.cpp"