#include "confirmationssettingspage.h"
-#include <dolphin_generalsettings.h>
+#include "dolphin_generalsettings.h"
+#include "global.h"
-#include <KDialog>
-#include <KLocale>
+#include <KLocalizedString>
#include <QCheckBox>
+#include <QComboBox>
#include <QLabel>
+#include <QHBoxLayout>
#include <QVBoxLayout>
namespace {
+ enum ScriptExecution
+ {
+ AlwaysAsk = 0,
+ Open = 1,
+ Execute = 2
+ };
+
+ const bool ConfirmEmptyTrash = true;
const bool ConfirmTrash = false;
const bool ConfirmDelete = true;
+ const int ConfirmScriptExecution = ScriptExecution::AlwaysAsk;
}
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);
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);
- 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
+
+ QHBoxLayout* executableScriptLayout = new QHBoxLayout();
+ QLabel* executableScriptLabel = new QLabel(i18nc("@title:group", "When opening an executable file:"), this);
+ confirmLabelKde->setWordWrap(true);
+ executableScriptLayout->addWidget(executableScriptLabel);
+
+ m_confirmScriptExecution = new QComboBox(this);
+ m_confirmScriptExecution->addItems({i18n("Always ask"), i18n("Open in application"), i18n("Run script")});
+ executableScriptLayout->addWidget(m_confirmScriptExecution);
- 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->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->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT);
+ topLayout->addLayout(executableScriptLayout);
+
topLayout->addStretch();
loadSettings();
- connect(m_confirmMoveToTrash, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
- connect(m_confirmDelete, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
- connect(m_confirmClosingMultipleTabs, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+ 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, QOverload<int>::of(&QComboBox::currentIndexChanged), 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()
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");
+ const int index = m_confirmScriptExecution->currentIndex();
+ switch (index) {
+ case ScriptExecution::AlwaysAsk:
+ scriptExecutionGroup.writeEntry("behaviourOnLaunch", "alwaysAsk");
+ break;
+ case ScriptExecution::Open:
+ scriptExecutionGroup.writeEntry("behaviourOnLaunch", "open");
+ break;
+ case ScriptExecution::Execute:
+ scriptExecutionGroup.writeEntry("behaviourOnLaunch", "execute");
+ break;
+ }
+ 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()
settings->useDefaults(false);
m_confirmMoveToTrash->setChecked(ConfirmTrash);
+ m_confirmEmptyTrash->setChecked(ConfirmEmptyTrash);
m_confirmDelete->setChecked(ConfirmDelete);
+ m_confirmScriptExecution->setCurrentIndex(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");
+ if (value == QLatin1String("alwaysAsk")) {
+ m_confirmScriptExecution->setCurrentIndex(ScriptExecution::AlwaysAsk);
+ } else if (value == QLatin1String("execute")) {
+ m_confirmScriptExecution->setCurrentIndex(ScriptExecution::Execute);
+ } else /* if (value == QLatin1String("open"))*/ {
+ m_confirmScriptExecution->setCurrentIndex(ScriptExecution::Open);
+ }
+
m_confirmClosingMultipleTabs->setChecked(GeneralSettings::confirmClosingMultipleTabs());
+
+#ifdef HAVE_TERMINAL
+ m_confirmClosingTerminalRunningProgram->setChecked(GeneralSettings::confirmClosingTerminalRunningProgram());
+#endif
}
-#include "confirmationssettingspage.moc"