X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/0cbc912319f503e94f13b8f06bd83f6e945dd26f..c4ffe88c9fafaed4b66a010a25b117427ba709f6:/src/settings/interface/confirmationssettingspage.cpp diff --git a/src/settings/interface/confirmationssettingspage.cpp b/src/settings/interface/confirmationssettingspage.cpp index 5f1abb4cd..ea8ef6dfd 100644 --- a/src/settings/interface/confirmationssettingspage.cpp +++ b/src/settings/interface/confirmationssettingspage.cpp @@ -6,16 +6,18 @@ #include "confirmationssettingspage.h" +#include "admin/workerintegration.h" #include "dolphin_generalsettings.h" #include "global.h" #include +#include +#include #include #include -#include +#include #include -#include namespace { @@ -41,7 +43,7 @@ ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget *parent) m_confirmClosingMultipleTabs(nullptr) { - QVBoxLayout *topLayout = new QVBoxLayout(this); + QFormLayout *topLayout = new QFormLayout(this); QLabel *confirmLabelKde = new QLabel(i18nc("@title:group", "Ask for confirmation in all KDE applications when:"), this); confirmLabelKde->setWordWrap(true); @@ -62,35 +64,37 @@ ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget *parent) m_confirmOpenManyFolders = new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when", "Opening many folders at once"), this); m_confirmOpenManyTerminals = new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when", "Opening many terminals at once"), this); + m_confirmRisksOfActingAsAdmin = new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when", "Switching to act as an administrator"), this); - QHBoxLayout *executableScriptLayout = new QHBoxLayout(); QLabel *executableScriptLabel = new QLabel(i18nc("@title:group", "When opening an executable file:"), this); executableScriptLabel->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->addWidget(confirmLabelKde); - topLayout->addWidget(m_confirmMoveToTrash); - topLayout->addWidget(m_confirmEmptyTrash); - topLayout->addWidget(m_confirmDelete); - topLayout->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT); - topLayout->addWidget(confirmLabelDolphin); - topLayout->addWidget(m_confirmClosingMultipleTabs); + topLayout->addRow(confirmLabelKde); + topLayout->addRow(nullptr, m_confirmMoveToTrash); + topLayout->addRow(nullptr, m_confirmEmptyTrash); + topLayout->addRow(nullptr, m_confirmDelete); + + topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed)); + topLayout->addRow(confirmLabelDolphin); + topLayout->addRow(nullptr, m_confirmClosingMultipleTabs); #if HAVE_TERMINAL - topLayout->addWidget(m_confirmClosingTerminalRunningProgram); + topLayout->addRow(nullptr, m_confirmClosingTerminalRunningProgram); #endif - topLayout->addWidget(m_confirmOpenManyFolders); - topLayout->addWidget(m_confirmOpenManyTerminals); - - topLayout->addSpacing(Dolphin::VERTICAL_SPACER_HEIGHT); - topLayout->addLayout(executableScriptLayout); + topLayout->addRow(nullptr, m_confirmOpenManyFolders); + topLayout->addRow(nullptr, m_confirmOpenManyTerminals); + if (KProtocolInfo::isKnownProtocol(QStringLiteral("admin"))) { + topLayout->addRow(nullptr, m_confirmRisksOfActingAsAdmin); + } else { + m_confirmRisksOfActingAsAdmin->hide(); + } - topLayout->addStretch(); + topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed)); + topLayout->addRow(executableScriptLabel, m_confirmScriptExecution); loadSettings(); @@ -101,6 +105,7 @@ ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget *parent) connect(m_confirmClosingMultipleTabs, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); connect(m_confirmOpenManyFolders, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); connect(m_confirmOpenManyTerminals, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); + connect(m_confirmRisksOfActingAsAdmin, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); #if HAVE_TERMINAL connect(m_confirmClosingTerminalRunningProgram, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); @@ -114,12 +119,12 @@ ConfirmationsSettingsPage::~ConfirmationsSettingsPage() void ConfirmationsSettingsPage::applySettings() { KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::NoGlobals); - KConfigGroup confirmationGroup(kioConfig, "Confirmations"); + KConfigGroup confirmationGroup(kioConfig, QStringLiteral("Confirmations")); confirmationGroup.writeEntry("ConfirmTrash", m_confirmMoveToTrash->isChecked()); confirmationGroup.writeEntry("ConfirmEmptyTrash", m_confirmEmptyTrash->isChecked()); confirmationGroup.writeEntry("ConfirmDelete", m_confirmDelete->isChecked()); - KConfigGroup scriptExecutionGroup(kioConfig, "Executable scripts"); + KConfigGroup scriptExecutionGroup(kioConfig, QStringLiteral("Executable scripts")); const int index = m_confirmScriptExecution->currentIndex(); switch (index) { case ScriptExecution::AlwaysAsk: @@ -138,6 +143,11 @@ void ConfirmationsSettingsPage::applySettings() settings->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs->isChecked()); settings->setConfirmOpenManyFolders(m_confirmOpenManyFolders->isChecked()); settings->setConfirmOpenManyTerminals(m_confirmOpenManyTerminals->isChecked()); + if (m_confirmRisksOfActingAsAdmin->isChecked()) { + KMessageBox::enableMessage(Admin::warningDontShowAgainName); + } else { + KMessageBox::saveDontShowAgainContinue(Admin::warningDontShowAgainName); + } #if HAVE_TERMINAL settings->setConfirmClosingTerminalRunningProgram(m_confirmClosingTerminalRunningProgram->isChecked()); @@ -157,17 +167,18 @@ void ConfirmationsSettingsPage::restoreDefaults() m_confirmEmptyTrash->setChecked(ConfirmEmptyTrash); m_confirmDelete->setChecked(ConfirmDelete); m_confirmScriptExecution->setCurrentIndex(ConfirmScriptExecution); + KMessageBox::enableMessage(Admin::warningDontShowAgainName); } void ConfirmationsSettingsPage::loadSettings() { KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig(QStringLiteral("kiorc"), KConfig::IncludeGlobals); - const KConfigGroup confirmationGroup(kioConfig, "Confirmations"); + const KConfigGroup confirmationGroup(kioConfig, QStringLiteral("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 KConfigGroup scriptExecutionGroup(KSharedConfig::openConfig(QStringLiteral("kiorc")), QStringLiteral("Executable scripts")); const QString value = scriptExecutionGroup.readEntry("behaviourOnLaunch", "alwaysAsk"); if (value == QLatin1String("alwaysAsk")) { m_confirmScriptExecution->setCurrentIndex(ScriptExecution::AlwaysAsk); @@ -184,6 +195,7 @@ void ConfirmationsSettingsPage::loadSettings() // the UI has inversed meaning compared to the interpretation m_confirmOpenManyFolders->setChecked(GeneralSettings::confirmOpenManyFolders()); m_confirmOpenManyTerminals->setChecked(GeneralSettings::confirmOpenManyTerminals()); + m_confirmRisksOfActingAsAdmin->setChecked(KMessageBox::shouldBeShownContinue(Admin::warningDontShowAgainName)); #if HAVE_TERMINAL m_confirmClosingTerminalRunningProgram->setChecked(GeneralSettings::confirmClosingTerminalRunningProgram());