• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

KUtils

  • sources
  • kde-4.12
  • kdelibs
  • kutils
kpluginselector_p.h
Go to the documentation of this file.
1 
21 #ifndef KPLUGINSELECTOR_P_H
22 #define KPLUGINSELECTOR_P_H
23 
24 #include <QtCore/QAbstractListModel>
25 #include <QtGui/QAbstractItemDelegate>
26 
27 #include <kconfiggroup.h>
28 #include <kplugininfo.h>
29 #include <kwidgetitemdelegate.h>
30 #include <kcategorizedsortfilterproxymodel.h>
31 
32 class QLabel;
33 class QCheckBox;
34 class QPushButton;
35 class QAbstractItemView;
36 
37 class KLineEdit;
38 class KCategorizedView;
39 class KCModuleProxy;
40 class KCategoryDrawer;
41 
42 class PluginEntry;
43 
44 class KPluginSelector::Private
45  : public QObject
46 {
47  Q_OBJECT
48 
49 public:
50  enum ExtraRoles
51  {
52  PluginEntryRole = 0x09386561,
53  ServicesCountRole = 0x1422E2AA,
54  NameRole = 0x0CBBBB00,
55  CommentRole = 0x19FC6DE2,
56  AuthorRole = 0x30861E10,
57  EmailRole = 0x02BE3775,
58  WebsiteRole = 0x13095A34,
59  VersionRole = 0x0A0CB450,
60  LicenseRole = 0x001F308A,
61  DependenciesRole = 0x04CAB650,
62  IsCheckableRole = 0x0AC2AFF8
63  };
64 
65  Private(KPluginSelector *parent);
66  ~Private();
67 
68  void updateDependencies(PluginEntry *pluginEntry, bool added);
69  int dependantLayoutValue(int value, int width, int totalWidth) const;
70 
71 public:
72  class PluginModel;
73  class ProxyModel;
74  class PluginDelegate;
75  class DependenciesWidget;
76  KPluginSelector *parent;
77  KLineEdit *lineEdit;
78  KCategorizedView *listView;
79  KCategoryDrawer *categoryDrawer;
80  PluginModel *pluginModel;
81  ProxyModel *proxyModel;
82  PluginDelegate *pluginDelegate;
83  DependenciesWidget *dependenciesWidget;
84  bool showIcons;
85 };
86 
87 class PluginEntry
88 {
89 public:
90  QString category;
91  KPluginInfo pluginInfo;
92  bool checked;
93  bool manuallyAdded;
94  KConfigGroup cfgGroup;
95  KPluginSelector::PluginLoadMethod pluginLoadMethod;
96  bool isCheckable;
97 
98  bool operator==(const PluginEntry &pe) const
99  {
100  return pluginInfo.entryPath() == pe.pluginInfo.entryPath();
101  }
102 };
103 
104 Q_DECLARE_METATYPE(PluginEntry*)
105 
106 
107 
111 class KPluginSelector::Private::DependenciesWidget
112  : public QWidget
113 {
114  Q_OBJECT
115 
116 public:
117  DependenciesWidget(QWidget *parent = 0);
118  ~DependenciesWidget();
119 
120  void addDependency(const QString &dependency, const QString &pluginCausant, bool added);
121  void userOverrideDependency(const QString &dependency);
122 
123  void clearDependencies();
124 
125 private Q_SLOTS:
126  void showDependencyDetails();
127 
128 private:
129  struct FurtherInfo
130  {
131  bool added;
132  QString pluginCausant;
133  };
134 
135  void updateDetails();
136 
137  QLabel *details;
138  QMap<QString, struct FurtherInfo> dependencyMap;
139  int addedByDependencies;
140  int removedByDependencies;
141 };
142 
143 
144 class KPluginSelector::Private::PluginModel
145  : public QAbstractListModel
146 {
147 public:
148  PluginModel(KPluginSelector::Private *pluginSelector_d, QObject *parent = 0);
149  ~PluginModel();
150 
151  void addPlugins(const QList<KPluginInfo> &pluginList, const QString &categoryName, const QString &categoryKey, const KConfigGroup &cfgGroup, PluginLoadMethod pluginLoadMethod = ReadConfigFile, bool manuallyAdded = false);
152  QList<KService::Ptr> pluginServices(const QModelIndex &index) const;
153 
154  virtual QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
155  virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
156  virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
157  virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
158 
159 public:
160  QList<PluginEntry> pluginEntryList;
161 
162 private:
163  KPluginSelector::Private *pluginSelector_d;
164 };
165 
166 class KPluginSelector::Private::ProxyModel
167  : public KCategorizedSortFilterProxyModel
168 {
169 public:
170  ProxyModel(KPluginSelector::Private *pluginSelector_d, QObject *parent = 0);
171  ~ProxyModel();
172 
173 protected:
174  virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
175  virtual bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const;
176 
177 private:
178  KPluginSelector::Private *pluginSelector_d;
179 };
180 
181 
182 class KPluginSelector::Private::PluginDelegate
183  : public KWidgetItemDelegate
184 {
185  Q_OBJECT
186 
187 public:
188  PluginDelegate(KPluginSelector::Private *pluginSelector_d, QObject *parent = 0);
189  ~PluginDelegate();
190 
191  void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
192  QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
193 
194 Q_SIGNALS:
195  void changed(bool hasChanged);
196  void configCommitted(const QByteArray &componentName);
197 
198 protected:
199  virtual QList<QWidget*> createItemWidgets() const;
200  virtual void updateItemWidgets(const QList<QWidget*> widgets,
201  const QStyleOptionViewItem &option,
202  const QPersistentModelIndex &index) const;
203 
204 private Q_SLOTS:
205  void slotStateChanged(bool state);
206  void emitChanged();
207  void slotAboutClicked();
208  void slotConfigureClicked();
209  void slotDefaultClicked();
210 
211 private:
212  QFont titleFont(const QFont &baseFont) const;
213 
214  QCheckBox *checkBox;
215  QPushButton *pushButton;
216  QList<KCModuleProxy*> moduleProxyList;
217 
218  KPluginSelector::Private *pluginSelector_d;
219 };
220 
221 #endif // KPLUGINSELECTOR_P_H
KPluginSelector::Private::PluginModel::pluginServices
QList< KService::Ptr > pluginServices(const QModelIndex &index) const
Definition: kpluginselector.cpp:452
QVariant
kcategorizedsortfilterproxymodel.h
KPluginSelector::Private::showIcons
bool showIcons
Definition: kpluginselector_p.h:84
KPluginSelector::Private::AuthorRole
Definition: kpluginselector_p.h:56
KPluginInfo
KPluginSelector::Private::PluginModel::addPlugins
void addPlugins(const QList< KPluginInfo > &pluginList, const QString &categoryName, const QString &categoryKey, const KConfigGroup &cfgGroup, PluginLoadMethod pluginLoadMethod=ReadConfigFile, bool manuallyAdded=false)
Definition: kpluginselector.cpp:411
KPluginSelector::Private
Definition: kpluginselector_p.h:44
KPluginSelector::Private::Private
Private(KPluginSelector *parent)
Definition: kpluginselector.cpp:50
KPluginSelector::Private::ServicesCountRole
Definition: kpluginselector_p.h:53
KPluginSelector::Private::PluginDelegate::configCommitted
void configCommitted(const QByteArray &componentName)
KPluginSelector::Private::ProxyModel
Definition: kpluginselector_p.h:166
KPluginSelector::Private::ProxyModel::~ProxyModel
~ProxyModel()
Definition: kpluginselector.cpp:546
KPluginSelector::Private::PluginDelegate::PluginDelegate
PluginDelegate(KPluginSelector::Private *pluginSelector_d, QObject *parent=0)
Definition: kpluginselector.cpp:569
KPluginSelector::Private::PluginModel
Definition: kpluginselector_p.h:144
KPluginSelector::Private::DependenciesRole
Definition: kpluginselector_p.h:61
KPluginInfo::entryPath
QString entryPath() const
KPluginSelector::Private::DependenciesWidget
This widget will inform the user about changes that happened automatically due to plugin dependencies...
Definition: kpluginselector_p.h:111
QWidget
KCategorizedSortFilterProxyModel
KPluginSelector::Private::WebsiteRole
Definition: kpluginselector_p.h:58
QPushButton
KPluginSelector::ReadConfigFile
Definition: kpluginselector.h:65
QAbstractListModel
PluginEntry::manuallyAdded
bool manuallyAdded
Definition: kpluginselector_p.h:93
QString
QObject
KPluginSelector::Private::pluginDelegate
PluginDelegate * pluginDelegate
Definition: kpluginselector_p.h:82
KPluginSelector::Private::dependantLayoutValue
int dependantLayoutValue(int value, int width, int totalWidth) const
Definition: kpluginselector.cpp:99
kplugininfo.h
PluginEntry::category
QString category
Definition: kpluginselector_p.h:90
PluginEntry::isCheckable
bool isCheckable
Definition: kpluginselector_p.h:96
KWidgetItemDelegate
KPluginSelector::Private::LicenseRole
Definition: kpluginselector_p.h:60
KPluginSelector::Private::PluginModel::rowCount
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
Definition: kpluginselector.cpp:530
KCategoryDrawer
KCategorizedView
KPluginSelector::Private::listView
KCategorizedView * listView
Definition: kpluginselector_p.h:78
PluginEntry::operator==
bool operator==(const PluginEntry &pe) const
Definition: kpluginselector_p.h:98
KPluginSelector::Private::pluginModel
PluginModel * pluginModel
Definition: kpluginselector_p.h:80
KPluginSelector::Private::parent
KPluginSelector * parent
Definition: kpluginselector_p.h:75
KPluginSelector::Private::ProxyModel::ProxyModel
ProxyModel(KPluginSelector::Private *pluginSelector_d, QObject *parent=0)
Definition: kpluginselector.cpp:539
PluginEntry::pluginLoadMethod
KPluginSelector::PluginLoadMethod pluginLoadMethod
Definition: kpluginselector_p.h:95
KPluginSelector::Private::PluginDelegate::~PluginDelegate
~PluginDelegate()
Definition: kpluginselector.cpp:578
KPluginSelector::Private::dependenciesWidget
DependenciesWidget * dependenciesWidget
Definition: kpluginselector_p.h:83
KPluginSelector::Private::EmailRole
Definition: kpluginselector_p.h:57
KPluginSelector::Private::PluginDelegate::changed
void changed(bool hasChanged)
KPluginSelector::Private::~Private
~Private()
Definition: kpluginselector.cpp:59
KPluginSelector::Private::ExtraRoles
ExtraRoles
Definition: kpluginselector_p.h:50
KPluginSelector::PluginLoadMethod
PluginLoadMethod
Definition: kpluginselector.h:64
KPluginSelector::Private::PluginDelegate
Definition: kpluginselector_p.h:182
PluginEntry::pluginInfo
KPluginInfo pluginInfo
Definition: kpluginselector_p.h:91
KPluginSelector::Private::PluginModel::~PluginModel
~PluginModel()
Definition: kpluginselector.cpp:407
KConfigGroup
KPluginSelector::Private::PluginModel::PluginModel
PluginModel(KPluginSelector::Private *pluginSelector_d, QObject *parent=0)
Definition: kpluginselector.cpp:401
KPluginSelector::Private::PluginEntryRole
Definition: kpluginselector_p.h:52
kwidgetitemdelegate.h
QFont
PluginEntry
Definition: kpluginselector_p.h:87
KLineEdit
KPluginSelector::Private::PluginDelegate::sizeHint
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
Definition: kpluginselector.cpp:644
KPluginSelector::Private::PluginModel::index
virtual QModelIndex index(int row, int column=0, const QModelIndex &parent=QModelIndex()) const
Definition: kpluginselector.cpp:457
KPluginSelector::Private::lineEdit
KLineEdit * lineEdit
Definition: kpluginselector_p.h:77
KPluginSelector::Private::PluginModel::pluginEntryList
QList< PluginEntry > pluginEntryList
Definition: kpluginselector_p.h:160
PluginEntry::cfgGroup
KConfigGroup cfgGroup
Definition: kpluginselector_p.h:94
KPluginSelector::Private::PluginDelegate::updateItemWidgets
virtual void updateItemWidgets(const QList< QWidget * > widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const
Definition: kpluginselector.cpp:699
KPluginSelector::Private::CommentRole
Definition: kpluginselector_p.h:55
KPluginSelector::Private::PluginModel::setData
virtual bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
Definition: kpluginselector.cpp:510
PluginEntry::checked
bool checked
Definition: kpluginselector_p.h:92
QLabel
KPluginSelector::Private::IsCheckableRole
Definition: kpluginselector_p.h:62
KCModuleProxy
Encapsulates a KCModule for embedding.
Definition: kcmoduleproxy.h:67
KPluginSelector::Private::VersionRole
Definition: kpluginselector_p.h:59
KPluginSelector::Private::NameRole
Definition: kpluginselector_p.h:54
QSize
KPluginSelector::Private::PluginDelegate::createItemWidgets
virtual QList< QWidget * > createItemWidgets() const
Definition: kpluginselector.cpp:666
KPluginSelector::Private::PluginModel::data
virtual QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
Definition: kpluginselector.cpp:465
KPluginSelector::Private::proxyModel
ProxyModel * proxyModel
Definition: kpluginselector_p.h:81
KPluginSelector::Private::ProxyModel::filterAcceptsRow
virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
Definition: kpluginselector.cpp:550
KPluginSelector::Private::updateDependencies
void updateDependencies(PluginEntry *pluginEntry, bool added)
Definition: kpluginselector.cpp:64
KPluginSelector::Private::categoryDrawer
KCategoryDrawer * categoryDrawer
Definition: kpluginselector_p.h:79
KPluginSelector::Private::ProxyModel::subSortLessThan
virtual bool subSortLessThan(const QModelIndex &left, const QModelIndex &right) const
Definition: kpluginselector.cpp:564
QMap< QString, struct FurtherInfo >
kconfiggroup.h
KPluginSelector::Private::PluginDelegate::paint
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
Definition: kpluginselector.cpp:584
KPluginSelector
A widget to select what plugins to load and configure the plugins.
Definition: kpluginselector.h:58
QList< KPluginInfo >
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:50:34 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KUtils

Skip menu "KUtils"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal