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

libs/libkipi/libkipi

  • sources
  • kde-4.14
  • kdegraphics
  • libs
  • libkipi
  • libkipi
configwidget.cpp
Go to the documentation of this file.
1 
28 #include "configwidget.moc"
29 
30 // Qt include
31 
32 #include <QPushButton>
33 #include <QGridLayout>
34 #include <QLabel>
35 #include <QFontMetrics>
36 
37 // KDE includes
38 
39 #include <khbox.h>
40 #include <kdialog.h>
41 #include <ktoolinvocation.h>
42 #include <kstandarddirs.h>
43 #include <kurllabel.h>
44 
45 // Local includes
46 
47 #include "configwidget_p.h"
48 #include "pluginloader.h"
49 #include "version.h"
50 
51 namespace KIPI
52 {
53 
54 class ConfigWidget::Private
55 {
56 
57 public:
58 
59  Private() :
60  pluginsNumber(0),
61  pluginsNumberActivated(0),
62  kipipluginsVersion(0),
63  libkipiVersion(0),
64  checkAllBtn(0),
65  clearBtn(0),
66  grid(0),
67  hbox(0),
68  kipiLogoLabel(0),
69  pluginsList(0)
70  {
71  }
72 
73  void updateInfo();
74 
75 public:
76 
77  QLabel* pluginsNumber;
78  QLabel* pluginsNumberActivated;
79  QLabel* kipipluginsVersion;
80  QLabel* libkipiVersion;
81 
82  QPushButton* checkAllBtn;
83  QPushButton* clearBtn;
84 
85  QGridLayout* grid;
86 
87  KHBox* hbox;
88  KUrlLabel* kipiLogoLabel;
89 
90  PluginListView* pluginsList;
91 };
92 
93 void ConfigWidget::Private::updateInfo()
94 {
95  if (pluginsList->filter().isEmpty())
96  {
97  // List is not filtered
98  int cnt = pluginsList->count();
99 
100  if (cnt > 0)
101  pluginsNumber->setText(i18np("1 Kipi plugin installed", "%1 Kipi plugins installed", cnt));
102  else
103  pluginsNumber->setText(i18n("No Kipi plugin installed"));
104 
105  int act = pluginsList->actived();
106 
107  if (act > 0)
108  pluginsNumberActivated->setText(i18ncp("%1: number of plugins activated", "(%1 activated)", "(%1 activated)", act));
109  else
110  pluginsNumberActivated->setText(QString());
111  }
112  else
113  {
114  // List filtering is active
115  int cnt = pluginsList->visible();
116 
117  if (cnt > 0)
118  pluginsNumber->setText(i18np("1 Kipi plugin found", "%1 Kipi plugins found", cnt));
119  else
120  pluginsNumber->setText(i18n("No Kipi plugin found"));
121 
122  pluginsNumberActivated->setText(QString());
123  }
124 }
125 
126 ConfigWidget::ConfigWidget(QWidget* const parent)
127  : QScrollArea(parent), d(new Private)
128 {
129  QWidget* panel = new QWidget(viewport());
130  d->grid = new QGridLayout(panel);
131  d->pluginsNumber = new QLabel(panel);
132  d->pluginsNumberActivated = new QLabel(panel);
133  d->hbox = new KHBox(panel);
134  d->checkAllBtn = new QPushButton(i18n("Check All"), d->hbox);
135  d->clearBtn = new QPushButton(i18n("Clear"), d->hbox);
136  QWidget* space = new QWidget(d->hbox);
137  PluginLoader* const loader = PluginLoader::instance();
138  d->kipipluginsVersion = new QLabel(i18n("Kipi Plugins: %1", loader ? loader->kipiPluginsVersion() : i18nc("Version unavailable", "unavailable")), panel);
139  d->libkipiVersion = new QLabel(i18n("LibKipi: %1", QString(kipi_version)), panel);
140  d->pluginsList = new PluginListView(panel);
141  d->pluginsList->setWhatsThis(i18n("List of available Kipi plugins."));
142  d->libkipiVersion->setAlignment(Qt::AlignRight);
143  d->hbox->setStretchFactor(space, 10);
144 
145  d->kipiLogoLabel = new KUrlLabel(panel);
146  d->kipiLogoLabel->setText(QString());
147  d->kipiLogoLabel->setUrl("https://projects.kde.org/projects/extragear/graphics/kipi-plugins");
148 
149  QFontMetrics fm(d->kipipluginsVersion->font());
150  QRect r = fm.boundingRect("XX");
151  QPixmap pix(KStandardDirs::locate("data", "kipi/data/kipi-plugins_logo.png"));
152  d->kipiLogoLabel->setPixmap(pix.scaledToHeight(r.height()*3, Qt::SmoothTransformation));
153 
154  d->grid->addWidget(d->pluginsNumber, 0, 1, 1, 1);
155  d->grid->addWidget(d->pluginsNumberActivated, 0, 2, 1, 1);
156  d->grid->addWidget(d->kipipluginsVersion, 0, 4, 1, 1);
157  d->grid->addWidget(d->libkipiVersion, 1, 4, 1, 1);
158  d->grid->addWidget(d->hbox, 1, 0, 1, 2);
159  d->grid->addWidget(d->kipiLogoLabel, 0, 6, 2, 1);
160  d->grid->addWidget(d->pluginsList, 2, 0, 1, -1);
161  d->grid->setColumnStretch(3, 10);
162  d->grid->setMargin(KDialog::spacingHint());
163  d->grid->setSpacing(KDialog::spacingHint());
164 
165  // --------------------------------------------------------
166 
167  setWidget(panel);
168  setWidgetResizable(true);
169  setAutoFillBackground(false);
170  viewport()->setAutoFillBackground(false);
171  panel->setAutoFillBackground(false);
172 
173  // --------------------------------------------------------
174 
175  connect(d->checkAllBtn, SIGNAL(clicked()),
176  this, SLOT(slotCheckAll()));
177 
178  connect(d->clearBtn, SIGNAL(clicked()),
179  this, SLOT(slotClearList()));
180 
181  connect(d->pluginsList, SIGNAL(itemClicked(QTreeWidgetItem*,int)),
182  this, SLOT(slotItemClicked()));
183 
184  connect(d->pluginsList, SIGNAL(signalSearchResult(bool)),
185  this, SIGNAL(signalSearchResult(bool)));
186 
187  connect(d->kipiLogoLabel, SIGNAL(leftClickedUrl(QString)),
188  this, SLOT(slotProcessUrl(QString)));
189 
190  // --------------------------------------------------------
191 
192  d->updateInfo();
193 }
194 
195 ConfigWidget::~ConfigWidget()
196 {
197  delete d;
198 }
199 
200 void ConfigWidget::slotProcessUrl(const QString& url)
201 {
202  KToolInvocation::self()->invokeBrowser(url);
203 }
204 
205 void ConfigWidget::setFilterWidget(QWidget* const wdg)
206 {
207  d->grid->addWidget(wdg, 0, 0, 1, 1);
208 }
209 
210 void ConfigWidget::apply()
211 {
212  if (PluginLoader::instance())
213  {
214  d->pluginsList->slotApply();
215  emit PluginLoader::instance()->replug();
216  }
217 }
218 
219 void ConfigWidget::slotCheckAll()
220 {
221  d->pluginsList->slotCheckAll();
222  d->updateInfo();
223 }
224 
225 void ConfigWidget::slotClearList()
226 {
227  d->pluginsList->slotClear();
228  d->updateInfo();
229 }
230 
231 void ConfigWidget::slotItemClicked()
232 {
233  d->updateInfo();
234 }
235 
236 void ConfigWidget::slotSetFilter(const QString& filter, Qt::CaseSensitivity cs)
237 {
238  d->pluginsList->setFilter(filter, cs);
239  d->updateInfo();
240 }
241 
242 } // namespace KIPI
QWidget
QScrollArea::setWidget
void setWidget(QWidget *widget)
KIPI::ConfigWidget::setFilterWidget
void setFilterWidget(QWidget *const wdg)
Set a filter widget (as KLineEdit) to be able to list only wanted plugin using a string query...
Definition: configwidget.cpp:205
KIPI::ConfigWidget::ConfigWidget
ConfigWidget(QWidget *const parent=0)
Standard constructor.
Definition: configwidget.cpp:126
KIPI::PluginLoader
Definition: pluginloader.h:189
pluginloader.h
===========================================================This file is a part of digiKam project htt...
QAbstractScrollArea::viewport
QWidget * viewport() const
QGridLayout
QFontMetrics
QPixmap::scaledToHeight
QPixmap scaledToHeight(int height, Qt::TransformationMode mode) const
QRect
loader
static const KCatalogLoader loader("libkipi")
KIPI::PluginLoader::replug
void replug()
KIPI::PluginLoader::instance
static PluginLoader * instance()
Returns plugin loader instance.
Definition: pluginloader.cpp:374
configwidget_p.h
===========================================================This file is a part of digiKam project htt...
KIPI::ConfigWidget::signalSearchResult
void signalSearchResult(bool)
Signal emitted when filetring is done through slotSetFilter().
KIPI::ConfigWidget::~ConfigWidget
~ConfigWidget()
Definition: configwidget.cpp:195
KIPI::ConfigWidget::slotSetFilter
void slotSetFilter(const QString &filter, Qt::CaseSensitivity cs)
Set plugins list filtetring string properties.
Definition: configwidget.cpp:236
QString
QPixmap
KIPI::PluginListView::count
int count() const
KIPI::PluginLoader::kipiPluginsVersion
QString kipiPluginsVersion() const
Return the kipi-plugins version installed on your computer if it's found through kipiplugins.desktop file.
Definition: pluginloader.cpp:394
QScrollArea::setWidgetResizable
void setWidgetResizable(bool resizable)
KIPI::ConfigWidget::apply
void apply()
Apply all changes about plugin selected to be hosted in KIPI host application.
Definition: configwidget.cpp:210
QTreeWidgetItem
QWidget::QWidget
QWidget(QWidget *parent, QFlags< Qt::WindowType > f)
QPushButton
KIPI::PluginListView
Definition: configwidget_p.h:57
QWidget::setAutoFillBackground
void setAutoFillBackground(bool enabled)
QScrollArea
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QLabel
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:19:43 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libs/libkipi/libkipi

Skip menu "libs/libkipi/libkipi"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdegraphics API Reference

Skip menu "kdegraphics API Reference"
  •     libkdcraw
  •     libkexiv2
  •     libkipi
  •     libksane
  • okular

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