X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/7a26fbc5c59596161b026b070e786767b94b4979..6e88d7cef072e1b504f5d428a2ce7d8aff736a8d:/src/settings/general/confirmationssettingspage.cpp diff --git a/src/settings/general/confirmationssettingspage.cpp b/src/settings/general/confirmationssettingspage.cpp index c74efedc2..1d0eebdd3 100644 --- a/src/settings/general/confirmationssettingspage.cpp +++ b/src/settings/general/confirmationssettingspage.cpp @@ -19,25 +19,33 @@ #include "confirmationssettingspage.h" -#include +#include "dolphin_generalsettings.h" +#include "global.h" -#include -#include +#include #include #include #include namespace { + const bool ConfirmEmptyTrash = true; const bool ConfirmTrash = false; const bool ConfirmDelete = true; + const bool ConfirmScriptExecution = true; } ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget* parent) : SettingsPageBase(parent), - m_confirmMoveToTrash(0), - m_confirmDelete(0), - m_confirmClosingMultipleTabs(0) + m_confirmMoveToTrash(nullptr), + m_confirmEmptyTrash(nullptr), + m_confirmDelete(nullptr), + +#ifdef HAVE_TERMINAL + m_confirmClosingTerminalRunningProgram(nullptr), +#endif + + m_confirmClosingMultipleTabs(nullptr) { QVBoxLayout* topLayout = new QVBoxLayout(this); @@ -46,31 +54,50 @@ ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget* parent) : m_confirmMoveToTrash = new QCheckBox(i18nc("@option:check Ask for confirmation when", "Moving files or folders to trash"), this); + m_confirmEmptyTrash = new QCheckBox(i18nc("@option:check Ask for confirmation when", + "Emptying trash"), this); m_confirmDelete = new QCheckBox(i18nc("@option:check Ask for confirmation when", "Deleting files or folders"), this); + m_confirmScriptExecution = new QCheckBox(i18nc("@option:check Ask for confirmation when", + "Executing scripts or desktop files"), this); - QLabel* confirmLabelDolphin = new QLabel(i18nc("@title:group", "Ask for confirmation when:"), this); + QLabel* confirmLabelDolphin = new QLabel(i18nc("@title:group", "Ask for confirmation in Dolphin when:"), this); confirmLabelDolphin->setWordWrap(true); - m_confirmClosingMultipleTabs = new QCheckBox(i18nc("@option:check Ask for confirmation when", - "Closing Dolphin windows with multiple tabs"), this); + m_confirmClosingMultipleTabs = new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when", + "Closing windows with multiple tabs"), this); + +#ifdef HAVE_TERMINAL + m_confirmClosingTerminalRunningProgram = new QCheckBox(i18nc("@option:check Ask for confirmation when", + "Closing windows with a program running in the Terminal panel"), this); +#endif - topLayout->addSpacing(KDialog::spacingHint()); topLayout->addWidget(confirmLabelKde); - topLayout->addSpacing(KDialog::spacingHint()); topLayout->addWidget(m_confirmMoveToTrash); + topLayout->addWidget(m_confirmEmptyTrash); topLayout->addWidget(m_confirmDelete); - topLayout->addSpacing(KDialog::spacingHint()); + topLayout->addWidget(m_confirmScriptExecution); + topLayout->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT); topLayout->addWidget(confirmLabelDolphin); - topLayout->addSpacing(KDialog::spacingHint()); topLayout->addWidget(m_confirmClosingMultipleTabs); + +#ifdef HAVE_TERMINAL + topLayout->addWidget(m_confirmClosingTerminalRunningProgram); +#endif + topLayout->addStretch(); loadSettings(); connect(m_confirmMoveToTrash, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); + connect(m_confirmEmptyTrash, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); connect(m_confirmDelete, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); + connect(m_confirmScriptExecution, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); connect(m_confirmClosingMultipleTabs, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); + +#ifdef HAVE_TERMINAL + connect(m_confirmClosingTerminalRunningProgram, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); +#endif } ConfirmationsSettingsPage::~ConfirmationsSettingsPage() @@ -79,15 +106,28 @@ ConfirmationsSettingsPage::~ConfirmationsSettingsPage() void ConfirmationsSettingsPage::applySettings() { - KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig("kiorc", KConfig::NoGlobals); + KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::NoGlobals); KConfigGroup confirmationGroup(kioConfig, "Confirmations"); confirmationGroup.writeEntry("ConfirmTrash", m_confirmMoveToTrash->isChecked()); + confirmationGroup.writeEntry("ConfirmEmptyTrash", m_confirmEmptyTrash->isChecked()); confirmationGroup.writeEntry("ConfirmDelete", m_confirmDelete->isChecked()); - confirmationGroup.sync(); + + KConfigGroup scriptExecutionGroup(kioConfig, "Executable scripts"); + if (m_confirmScriptExecution->isChecked()) { + scriptExecutionGroup.writeEntry("behaviourOnLaunch", "alwaysAsk"); + } else { + scriptExecutionGroup.writeEntry("behaviourOnLaunch", "dontAsk"); + } + kioConfig->sync(); GeneralSettings* settings = GeneralSettings::self(); settings->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs->isChecked()); - settings->writeConfig(); + +#ifdef HAVE_TERMINAL + settings->setConfirmClosingTerminalRunningProgram(m_confirmClosingTerminalRunningProgram->isChecked()); +#endif + + settings->save(); } void ConfirmationsSettingsPage::restoreDefaults() @@ -98,17 +138,27 @@ void ConfirmationsSettingsPage::restoreDefaults() settings->useDefaults(false); m_confirmMoveToTrash->setChecked(ConfirmTrash); + m_confirmEmptyTrash->setChecked(ConfirmEmptyTrash); m_confirmDelete->setChecked(ConfirmDelete); + m_confirmScriptExecution->setChecked(ConfirmScriptExecution); } void ConfirmationsSettingsPage::loadSettings() { - KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig("kiorc", KConfig::IncludeGlobals); + KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::IncludeGlobals); const KConfigGroup confirmationGroup(kioConfig, "Confirmations"); m_confirmMoveToTrash->setChecked(confirmationGroup.readEntry("ConfirmTrash", ConfirmTrash)); + m_confirmEmptyTrash->setChecked(confirmationGroup.readEntry("ConfirmEmptyTrash", ConfirmEmptyTrash)); m_confirmDelete->setChecked(confirmationGroup.readEntry("ConfirmDelete", ConfirmDelete)); + const KConfigGroup scriptExecutionGroup(KSharedConfig::openConfig(QStringLiteral("kiorc")), "Executable scripts"); + const QString value = scriptExecutionGroup.readEntry("behaviourOnLaunch", "alwaysAsk"); + m_confirmScriptExecution->setChecked(value == QLatin1String("alwaysAsk")); + m_confirmClosingMultipleTabs->setChecked(GeneralSettings::confirmClosingMultipleTabs()); + +#ifdef HAVE_TERMINAL + m_confirmClosingTerminalRunningProgram->setChecked(GeneralSettings::confirmClosingTerminalRunningProgram()); +#endif } -#include "confirmationssettingspage.moc"