diff --git a/kcms/componentchooser/componentchooserfilemanager.h b/kcms/componentchooser/componentchooserfilemanager.h --- a/kcms/componentchooser/componentchooserfilemanager.h +++ b/kcms/componentchooser/componentchooserfilemanager.h @@ -43,6 +43,8 @@ void changed(bool); private: + QRadioButton* findDolphinRadio() const; + QList mDynamicRadioButtons; }; diff --git a/kcms/componentchooser/componentchooserfilemanager.cpp b/kcms/componentchooser/componentchooserfilemanager.cpp --- a/kcms/componentchooser/componentchooserfilemanager.cpp +++ b/kcms/componentchooser/componentchooserfilemanager.cpp @@ -20,15 +20,13 @@ #include "componentchooserfilemanager.h" #include -#include #include #include #include #include #include -#include +#include -#include "../migrationlib/kdelibs4config.h" CfgFileManager::CfgFileManager(QWidget *parent) : QWidget(parent), Ui::FileManagerConfig_UI(),CfgPlugin() @@ -40,23 +38,36 @@ CfgFileManager::~CfgFileManager() { } +QRadioButton * findDolphinRadio(QList dynamicRadioButtons) { + auto it = std::find_if(dynamicRadioButtons.begin(), dynamicRadioButtons.end(), [=](QRadioButton *radio) { + return radio->property("storageId") == QStringLiteral("org.kde.dolphin.desktop"); + }); + if (it == dynamicRadioButtons.end()) { + return nullptr; + } + return *it; +} + void CfgFileManager::configChanged() { emit changed(true); } void CfgFileManager::defaults() { load(nullptr); + + const auto radio = findDolphinRadio(mDynamicRadioButtons); + if (radio) { + radio->setChecked(true); + } } bool CfgFileManager::isDefaults() const { - if (!mDynamicRadioButtons.isEmpty()) { - return !mDynamicRadioButtons.last()->isChecked(); - } else { - return false; - } + const auto dolphinRadio = findDolphinRadio(mDynamicRadioButtons); + // When dolphin is not present, we can't assume any default value + return !dolphinRadio || dolphinRadio->isChecked(); } static KService::List appOffers()