#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
{
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);
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();
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);
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());
m_confirmEmptyTrash->setChecked(ConfirmEmptyTrash);
m_confirmDelete->setChecked(ConfirmDelete);
m_confirmScriptExecution->setCurrentIndex(ConfirmScriptExecution);
+ KMessageBox::enableMessage(Admin::warningDontShowAgainName);
}
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());