X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fd6be5b9af0223a7aeb21ffe074179bceea537d5..2359ea2bdedf358e419745c812f2be2bf7d6c2a2:/src/settings/servicessettingspage.cpp diff --git a/src/settings/servicessettingspage.cpp b/src/settings/servicessettingspage.cpp index 57e91e5dd..a58df2096 100644 --- a/src/settings/servicessettingspage.cpp +++ b/src/settings/servicessettingspage.cpp @@ -70,6 +70,8 @@ void ServicesSettingsPage::applySettings() const QString service = item->data(Qt::UserRole).toString(); showGroup.writeEntry(service, show); } + + showGroup.sync(); } void ServicesSettingsPage::restoreDefaults() @@ -102,11 +104,15 @@ void ServicesSettingsPage::loadServices() KDesktopFileActions::userDefinedServices(file, true); foreach (const KServiceAction& action, serviceActions) { - if (!action.noDisplay() && !action.isSeparator()) { + const QString service = action.name(); + const bool addService = !action.noDisplay() + && !action.isSeparator() + && !isInServicesList(service); + + if (addService) { QListWidgetItem* item = new QListWidgetItem(KIcon(action.icon()), action.text(), m_servicesList); - const QString service = action.name(); item->setData(Qt::UserRole, service); const bool show = showGroup.readEntry(service, true); item->setCheckState(show ? Qt::Checked : Qt::Unchecked); @@ -115,4 +121,16 @@ void ServicesSettingsPage::loadServices() } } +bool ServicesSettingsPage::isInServicesList(const QString& service) const +{ + const int count = m_servicesList->count(); + for (int i = 0; i < count; ++i) { + QListWidgetItem* item = m_servicesList->item(i); + if (item->data(Qt::UserRole).toString() == service) { + return true; + } + } + return false; +} + #include "servicessettingspage.moc"