X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fd6be5b9af0223a7aeb21ffe074179bceea537d5..a0d3cf4aa8ffa76ed22a67efa4ea156eb2ef9f68:/src/settings/servicessettingspage.cpp diff --git a/src/settings/servicessettingspage.cpp b/src/settings/servicessettingspage.cpp index 57e91e5dd..a5e19725a 100644 --- a/src/settings/servicessettingspage.cpp +++ b/src/settings/servicessettingspage.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -31,6 +32,7 @@ #include #include #include +#include #include ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : @@ -43,6 +45,7 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : QLabel* label = new QLabel(i18nc("@label:textbox", "Configure which services should " "be shown in the context menu."), this); + label->setWordWrap(true); m_servicesList = new QListWidget(this); m_servicesList->setSortingEnabled(true); @@ -50,8 +53,14 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : connect(m_servicesList, SIGNAL(itemClicked(QListWidgetItem*)), this, SIGNAL(changed())); + KNS3::Button* downloadButton = new KNS3::Button(i18nc("@action:button", "Download New Services..."), + "servicemenu.knsrc", + this); + connect(downloadButton, SIGNAL(dialogFinished(const Entry::List&)), this, SLOT(loadServices())); + topLayout->addWidget(label); topLayout->addWidget(m_servicesList); + topLayout->addWidget(downloadButton); } ServicesSettingsPage::~ServicesSettingsPage() @@ -70,6 +79,8 @@ void ServicesSettingsPage::applySettings() const QString service = item->data(Qt::UserRole).toString(); showGroup.writeEntry(service, show); } + + showGroup.sync(); } void ServicesSettingsPage::restoreDefaults() @@ -102,11 +113,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 +130,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"