diff options
| author | Peter Penz <[email protected]> | 2010-07-24 20:39:19 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2010-07-24 20:39:19 +0000 |
| commit | d93d198db6eef9186177aa5a918b300a6b749627 (patch) | |
| tree | f62173c59b35860245b087bf5115d9e866c2eece /src/settings/servicessettingspage.cpp | |
| parent | 49eb864b03b6370e403c6f048ab18d1478eab045 (diff) | |
Sourcecode hierarchy cleanup: Use subfolders inside the "settings" folder
svn path=/trunk/KDE/kdebase/apps/; revision=1154129
Diffstat (limited to 'src/settings/servicessettingspage.cpp')
| -rw-r--r-- | src/settings/servicessettingspage.cpp | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/src/settings/servicessettingspage.cpp b/src/settings/servicessettingspage.cpp deleted file mode 100644 index 7da299399..000000000 --- a/src/settings/servicessettingspage.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2009-2010 by Peter Penz <[email protected]> * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ - -#include "servicessettingspage.h" - -#include "dolphin_versioncontrolsettings.h" - -#include <kconfig.h> -#include <kconfiggroup.h> -#include <kdesktopfile.h> -#include <kdesktopfileactions.h> -#include <kicon.h> -#include <klocale.h> -#include <kmessagebox.h> -#include <knewstuff3/knewstuffbutton.h> -#include <kservice.h> -#include <kservicetypetrader.h> -#include <kstandarddirs.h> - -#include <QCheckBox> -#include <QGridLayout> -#include <QGroupBox> -#include <QLabel> -#include <QListWidget> -#include <QPushButton> -#include <QShowEvent> - -ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : - SettingsPageBase(parent), - m_initialized(false), - m_servicesList(0), - m_vcsGroupBox(0), - m_vcsPluginsMap(), - m_enabledVcsPlugins() -{ - QVBoxLayout* topLayout = new QVBoxLayout(this); - - QLabel* label = new QLabel(i18nc("@label:textbox", - "Select which services should " - "be shown in the context menu."), this); - label->setWordWrap(true); - - m_servicesList = new QListWidget(this); - m_servicesList->setSortingEnabled(true); - m_servicesList->setSelectionMode(QAbstractItemView::NoSelection); - 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(KNS3::Entry::List)), this, SLOT(loadServices())); - - m_vcsGroupBox = new QGroupBox(i18nc("@title:group", "Version Control Systems"), this); - // Only show the version control group box, if a version - // control system could be found (see loadVersionControlSystems()) - m_vcsGroupBox->hide(); - - topLayout->addWidget(label); - topLayout->addWidget(m_servicesList); - topLayout->addWidget(downloadButton); - topLayout->addWidget(m_vcsGroupBox); - - m_enabledVcsPlugins = VersionControlSettings::enabledPlugins(); -} - -ServicesSettingsPage::~ServicesSettingsPage() -{ -} - -void ServicesSettingsPage::applySettings() -{ - // Apply service menu settings - KConfig config("kservicemenurc", KConfig::NoGlobals); - KConfigGroup showGroup = config.group("Show"); - - const int count = m_servicesList->count(); - for (int i = 0; i < count; ++i) { - QListWidgetItem* item = m_servicesList->item(i); - const bool show = (item->checkState() == Qt::Checked); - const QString service = item->data(Qt::UserRole).toString(); - showGroup.writeEntry(service, show); - } - - showGroup.sync(); - - // Apply version control settings - QStringList enabledPlugins; - QMap<QString, QCheckBox*>::const_iterator it = m_vcsPluginsMap.constBegin(); - while (it != m_vcsPluginsMap.constEnd()) { - if (it.value()->isChecked()) { - enabledPlugins.append(it.key()); - } - ++it; - } - - if (m_enabledVcsPlugins != enabledPlugins) { - VersionControlSettings::setEnabledPlugins(enabledPlugins); - VersionControlSettings::self()->writeConfig(); - - KMessageBox::information(window(), - i18nc("@info", "Dolphin must be restarted to apply the " - "updated version control systems settings."), - QString(), // default title - QLatin1String("ShowVcsRestartInformation")); - } -} - -void ServicesSettingsPage::restoreDefaults() -{ - const int count = m_servicesList->count(); - for (int i = 0; i < count; ++i) { - QListWidgetItem* item = m_servicesList->item(i); - item->setCheckState(Qt::Checked); - } -} - -void ServicesSettingsPage::showEvent(QShowEvent* event) -{ - if (!event->spontaneous() && !m_initialized) { - QMetaObject::invokeMethod(this, "loadServices", Qt::QueuedConnection); - QMetaObject::invokeMethod(this, "loadVersionControlSystems", Qt::QueuedConnection); - m_initialized = true; - } - SettingsPageBase::showEvent(event); -} - -void ServicesSettingsPage::loadServices() -{ - const KConfig config("kservicemenurc", KConfig::NoGlobals); - const KConfigGroup showGroup = config.group("Show"); - - const KService::List entries = KServiceTypeTrader::self()->query("KonqPopupMenu/Plugin"); - foreach (const KSharedPtr<KService>& service, entries) { - const QString file = KStandardDirs::locate("services", service->entryPath()); - const QList<KServiceAction> serviceActions = - KDesktopFileActions::userDefinedServices(file, true); - - KDesktopFile desktopFile(file); - const QString subMenuName = desktopFile.desktopGroup().readEntry("X-KDE-Submenu"); - - foreach (const KServiceAction& action, serviceActions) { - const QString service = action.name(); - const bool addService = !action.noDisplay() - && !action.isSeparator() - && !isInServicesList(service); - - if (addService) { - const QString itemName = subMenuName.isEmpty() - ? action.text() - : i18nc("@item:inmenu", "%1: %2", subMenuName, action.text()); - QListWidgetItem* item = new QListWidgetItem(KIcon(action.icon()), - itemName, - m_servicesList); - item->setData(Qt::UserRole, service); - const bool show = showGroup.readEntry(service, true); - item->setCheckState(show ? Qt::Checked : Qt::Unchecked); - } - } - } -} - -void ServicesSettingsPage::loadVersionControlSystems() -{ - const QStringList enabledPlugins = VersionControlSettings::enabledPlugins(); - - // Create a checkbox for each available version control plugin - const KService::List pluginServices = KServiceTypeTrader::self()->query("FileViewVersionControlPlugin"); - for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) { - const QString pluginName = (*it)->name(); - QCheckBox* checkBox = new QCheckBox(pluginName, m_vcsGroupBox); - checkBox->setChecked(enabledPlugins.contains(pluginName)); - connect(checkBox, SIGNAL(clicked()), this, SIGNAL(changed())); - m_vcsPluginsMap.insert(pluginName, checkBox); - } - - // Add the checkboxes into a grid layout of 2 columns - QGridLayout* layout = new QGridLayout(m_vcsGroupBox); - const int maxRows = (m_vcsPluginsMap.count() + 1) / 2; - - int index = 0; - QMap<QString, QCheckBox*>::const_iterator it = m_vcsPluginsMap.constBegin(); - while (it != m_vcsPluginsMap.constEnd()) { - const int column = index / maxRows; - const int row = index % maxRows; - layout->addWidget(it.value(), row, column); - ++it; - ++index; - } - - m_vcsGroupBox->setVisible(!m_vcsPluginsMap.isEmpty()); -} - -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" |
