]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/interface/confirmationssettingspage.cpp
DolphinView: display errorMessage when copy errors occurs
[dolphin.git] / src / settings / interface / confirmationssettingspage.cpp
index 5f1abb4cd66251902fbbe12f5a00f55c98b80478..ea8ef6dfd0e679486faa6790b8ec857cebae8cc0 100644 (file)
@@ -6,16 +6,18 @@
 
 #include "confirmationssettingspage.h"
 
+#include "admin/workerintegration.h"
 #include "dolphin_generalsettings.h"
 #include "global.h"
 
 #include <KLocalizedString>
+#include <KMessageBox>
+#include <KProtocolInfo>
 
 #include <QCheckBox>
 #include <QComboBox>
-#include <QHBoxLayout>
+#include <QFormLayout>
 #include <QLabel>
-#include <QVBoxLayout>
 
 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());