From b498e2e43c00d718474d973fb98e6c7d94e32d0a Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Thu, 21 Aug 2025 12:46:12 +0200 Subject: Warn when renaming a file would change its file type While the file's content won't change, applications may no longer recognize it. --- src/settings/dolphin_generalsettings.kcfg | 4 ++++ src/settings/interface/confirmationssettingspage.cpp | 7 +++++++ src/settings/interface/confirmationssettingspage.h | 1 + 3 files changed, 12 insertions(+) (limited to 'src/settings') diff --git a/src/settings/dolphin_generalsettings.kcfg b/src/settings/dolphin_generalsettings.kcfg index 2252eed28..498a70ecf 100644 --- a/src/settings/dolphin_generalsettings.kcfg +++ b/src/settings/dolphin_generalsettings.kcfg @@ -167,5 +167,9 @@ true + + + true + diff --git a/src/settings/interface/confirmationssettingspage.cpp b/src/settings/interface/confirmationssettingspage.cpp index ea8ef6dfd..7f541de6d 100644 --- a/src/settings/interface/confirmationssettingspage.cpp +++ b/src/settings/interface/confirmationssettingspage.cpp @@ -27,6 +27,7 @@ const bool ConfirmEmptyTrash = true; const bool ConfirmTrash = false; const bool ConfirmDelete = true; const int ConfirmScriptExecution = ScriptExecution::AlwaysAsk; +const bool ConfirmRenameFileType = true; } ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget *parent) @@ -65,6 +66,7 @@ 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); + m_confirmRenameFileType = new QCheckBox(i18nc("@option:check Ask for confirmation in Dolphin when", "Renaming a file will change its type"), this); QLabel *executableScriptLabel = new QLabel(i18nc("@title:group", "When opening an executable file:"), this); executableScriptLabel->setWordWrap(true); @@ -92,6 +94,7 @@ ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget *parent) } else { m_confirmRisksOfActingAsAdmin->hide(); } + topLayout->addRow(nullptr, m_confirmRenameFileType); topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed)); topLayout->addRow(executableScriptLabel, m_confirmScriptExecution); @@ -106,6 +109,7 @@ ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget *parent) connect(m_confirmOpenManyFolders, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); connect(m_confirmOpenManyTerminals, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); connect(m_confirmRisksOfActingAsAdmin, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); + connect(m_confirmRenameFileType, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); #if HAVE_TERMINAL connect(m_confirmClosingTerminalRunningProgram, &QCheckBox::toggled, this, &ConfirmationsSettingsPage::changed); @@ -148,6 +152,7 @@ void ConfirmationsSettingsPage::applySettings() } else { KMessageBox::saveDontShowAgainContinue(Admin::warningDontShowAgainName); } + settings->setConfirmRenameFileType(m_confirmRenameFileType->isChecked()); #if HAVE_TERMINAL settings->setConfirmClosingTerminalRunningProgram(m_confirmClosingTerminalRunningProgram->isChecked()); @@ -168,6 +173,7 @@ void ConfirmationsSettingsPage::restoreDefaults() m_confirmDelete->setChecked(ConfirmDelete); m_confirmScriptExecution->setCurrentIndex(ConfirmScriptExecution); KMessageBox::enableMessage(Admin::warningDontShowAgainName); + m_confirmRenameFileType->setChecked(ConfirmRenameFileType); } void ConfirmationsSettingsPage::loadSettings() @@ -196,6 +202,7 @@ void ConfirmationsSettingsPage::loadSettings() m_confirmOpenManyFolders->setChecked(GeneralSettings::confirmOpenManyFolders()); m_confirmOpenManyTerminals->setChecked(GeneralSettings::confirmOpenManyTerminals()); m_confirmRisksOfActingAsAdmin->setChecked(KMessageBox::shouldBeShownContinue(Admin::warningDontShowAgainName)); + m_confirmRenameFileType->setChecked(GeneralSettings::confirmRenameFileType()); #if HAVE_TERMINAL m_confirmClosingTerminalRunningProgram->setChecked(GeneralSettings::confirmClosingTerminalRunningProgram()); diff --git a/src/settings/interface/confirmationssettingspage.h b/src/settings/interface/confirmationssettingspage.h index ff9aca20e..353a49ee5 100644 --- a/src/settings/interface/confirmationssettingspage.h +++ b/src/settings/interface/confirmationssettingspage.h @@ -46,6 +46,7 @@ private: QCheckBox *m_confirmOpenManyFolders; QCheckBox *m_confirmOpenManyTerminals; QCheckBox *m_confirmRisksOfActingAsAdmin; + QCheckBox *m_confirmRenameFileType = nullptr; }; #endif -- cgit v1.3