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

superkaramba

  • sources
  • kde-4.12
  • kdeutils
  • superkaramba
  • plasma
skappletadaptor.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2007 Sebastian Sauer <mail@dipe.org>
3  *
4  * This file is part of SuperKaramba.
5  *
6  * SuperKaramba is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * SuperKaramba is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with SuperKaramba; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef SKAPPLETADAPTOR_H
22 #define SKAPPLETADAPTOR_H
23 
24 #include <plasma/applet.h>
25 #include <plasma/containment.h>
26 #include <plasma/dataengine.h>
27 //#include <plasma/widgets/widget.h>
28 //#include <plasma/widgets/label.h>
29 //#include <plasma/widgets/lineedit.h>
30 
31 #include "karamba.h"
32 #include "sensors/plasmaengine.h"
33 
34 #include <QObject>
35 #include <QHash>
36 #include <QVariant>
37 #include <QPointer>
38 #include <QPainter>
39 #include <QBrush>
40 #include <QColor>
41 
46 class SkPainterAdaptor : public QObject
47 {
48  Q_OBJECT
49  Q_ENUMS(BrushStyle)
50  public:
51  SkPainterAdaptor(QObject* parent, QPainter* painter) : QObject(parent), m_painter(painter) { setObjectName( QLatin1String("PlasmaPainter" )); }
52  virtual ~SkPainterAdaptor() {}
53  QPainter* painter() const { return m_painter; }
54  enum BrushStyle {
55  NoBrush = Qt::NoBrush,
56  SolidBrush = Qt::SolidPattern,
57  DenseBrush = Qt::Dense7Pattern,
58  LinearGradientBrush = Qt::LinearGradientPattern,
59  ConicalGradientBrush = Qt::ConicalGradientPattern,
60  RadialGradientBrush = Qt::RadialGradientPattern
61  };
62  public Q_SLOTS:
63 
65  void save() { m_painter->save(); }
67  void restore() { m_painter->restore(); }
68 
70  void setColor(const QString& color) { m_painter->setBrush( getColor(m_painter->brush(),color) ); }
72  void setStyle(int brushStyle) { m_painter->setBrush( getBrushStyle(m_painter->brush(),brushStyle) ); }
73 
75  void setBackgroundColor(const QString& color) { m_painter->setBackground( getColor(m_painter->background(),color) ); }
77  void setBackgroundStyle(int brushStyle) { m_painter->setBackground( getBrushStyle(m_painter->background(),brushStyle) ); }
78 
80  void setPenColor(const QString& color) { m_painter->setPen(QColor(color)); }
81  //void setPenWidth(double width) { QPen pen = m_painter->pen(); pen.setWidthF(width); pen.setStyle(Qt::SolidLine); m_painter->setPen(pen); }
82 
84  void setOpacity(double opacity) { m_painter->setOpacity(opacity); }
85 
87  void rotate(double angle) { m_painter->rotate(angle); }
89  void scale(double x, double y) { m_painter->scale(x,y); }
91  void shear(double x, double y) { m_painter->shear(x,y); }
93  void translate(double x, double y) { m_painter->translate(x,y); }
94 
96  void drawEllipse(const QRectF& r) { m_painter->drawEllipse(r); }
98  void drawLine(const QPointF& p1, const QPointF& p2) { m_painter->drawLine(p1, p2); }
100  void drawPie(const QRectF& r, int startAngle, int spanAngle) { m_painter->drawPie(r, startAngle, spanAngle); }
102  void drawPoint(const QPointF& p) { m_painter->drawPoint(p); }
104  void drawRect(const QRectF& r) { m_painter->drawRect(r); }
106  void drawText(const QPointF& position, const QString& text) { m_painter->drawText(position, text); }
107  //void drawText(const QRectF& r, const QString& text) { m_painter->drawText(r, text); }
108 
109  private:
110  QPainter* m_painter;
111  QBrush getColor(QBrush brush, const QString& color) {
112  QColor c(color);
113  if( c.isValid() ) {
114  brush.setColor(c);
115  if( brush.style() == Qt::NoBrush )
116  brush.setStyle(Qt::SolidPattern);
117  }
118  return brush;
119  }
120  QBrush getBrushStyle(QBrush brush, int brushStyle) {
121  brush.setStyle( (Qt::BrushStyle) brushStyle );
122  return brush;
123  }
124 };
125 
130 class SkAppletAdaptor : public QObject
131 {
132  Q_OBJECT
133  public:
134  SkAppletAdaptor(Karamba *karamba, Plasma::Applet *applet)
135  : QObject(karamba)
136  , m_karamba(karamba)
137  , m_applet(applet)
138  //, m_widget(new Plasma::Widget(applet->karamba()))
139  , m_painterenabled(false) {
140  setObjectName( QLatin1String("PlasmaApplet" ));
141  m_applet->setBackgroundHints(Plasma::Applet::DefaultBackground);
142  }
143  virtual ~SkAppletAdaptor() {
144  //delete m_widget;
145  qDeleteAll(m_engines.values());
146  }
147  void paintInterface(QPainter *painter, const QStyleOptionGraphicsItem *option, const QRect &rect) {
148  Q_UNUSED(option);
149  if( m_painterenabled ) {
150  SkPainterAdaptor p(this, painter);
151  emit paint(&p, rect);
152  }
153  }
154  public Q_SLOTS:
155 
159  QString name() const { return m_applet->name(); }
160 
164  QString category() const { return m_applet->category(); }
165 
169  QRectF boundingRect() { return m_applet->boundingRect(); }
170 
171  QRectF geometry() const { return m_applet->geometry(); }
172  void setGeometry(const QRectF& geom) { m_applet->setGeometry(geom); }
173  void resize(const QSizeF &size) { m_applet->resize(size);}//setMinimumSize(size);}//resize(size); }
174 
186  QObject* dataEngine(const QString& name)
187  {
188  if( m_engines.contains(name) )
189  return m_engines[name];
190  Plasma::DataEngine* engine = m_applet->dataEngine(name);
191  if( (! engine) || (! engine->isValid()) )
192  return 0;
193  PlasmaSensor* sensor = new PlasmaSensor;
194  sensor->setEngineImpl(engine, name);
195  m_engines.insert(name, sensor);
196  return sensor;
197  }
198 
199 #if 0
200 
203  QObject* widget(const QString& widgetName)
204  {
205  //Plasma::Widget* parent = dynamic_cast<SuperKarambaWidgetAdaptor*>(parentWidget);
206  return WidgetFactory::createWidget(widgetName, m_widget);
207  /*
208  SuperKarambaWidgetAdaptor* parentWidgetAdaptor = dynamic_cast<SuperKarambaWidgetAdaptor*>(parentWidget);
209  SuperKarambaWidgetAdaptor* widgetAdaptor = new SuperKarambaWidgetAdaptor(this, m_applet, parentWidgetAdaptor);
210  if( ! typeName.isEmpty() ) widgetAdaptor->setType(typeName);
211  return widgetAdaptor;
212  */
213  }
214 #endif
215 
224  bool isPainterEnabled() { return m_painterenabled; }
225 
229  void setPainterEnabled(bool enabled) { m_painterenabled = enabled; }
230 
231  Q_SIGNALS:
232 
236  void showConfigurationInterface();
237 
244  void paint(QObject* painter, const QRect &rect);
245 
246  protected:
247  Karamba *m_karamba;
248  Plasma::Applet *m_applet;
249  //QPointer<Plasma::Widget> m_widget;
250  bool m_painterenabled;
251  QHash<QString, PlasmaSensor*> m_engines;
252 };
253 
258 class SkContainmentAdaptor : public SkAppletAdaptor
259 {
260  Q_OBJECT
261  public:
262  SkContainmentAdaptor(Karamba *karamba, Plasma::Containment *containment)
263  : SkAppletAdaptor(karamba, containment) {
264  connect(containment, SIGNAL(appletRemoved(Plasma::Applet*)), this, SLOT(appletRemoved(Plasma::Applet*)));
265 //containment->setOpacity(0.5);
266  }
267  virtual ~SkContainmentAdaptor() { qDeleteAll(m_applets.values()); }
268  Plasma::Containment* containment() const { return static_cast<Plasma::Containment*>(m_applet); }
269  public Q_SLOTS:
270 
274  int appletCount() { return containment()->applets().count(); }
275 
280  QObject* applet(int index) {
281  if( index >= 0 && index < containment()->applets().count() )
282  if( Plasma::Applet *applet = containment()->applets()[index] ) {
283  if( m_applets.contains(applet->id()) )
284  return m_applets[applet->id()];
285  SkAppletAdaptor *a = new SkAppletAdaptor(m_karamba, applet);
286  m_applets.insert(applet->id(), a);
287  return a;
288  }
289  return 0;
290  }
291 
298  QObject* addApplet(const QString& appletname, const QVariantList& args = QVariantList(), const QRectF& geometry = QRectF(-1, -1, -1, -1)) {
299  if( Plasma::Applet *applet = containment()->addApplet(appletname, args, geometry) ) {
300  SkAppletAdaptor *a = new SkAppletAdaptor(m_karamba, applet);
301  Q_ASSERT( ! m_applets.contains(applet->id()) );
302  m_applets.insert(applet->id(), a);
303  applet->raise();
304  return a;
305  }
306  return 0;
307  }
308 
309  private Q_SLOTS:
310  void appletRemoved(Plasma::Applet* applet) {
311  if( m_applets.contains(applet->id()) )
312  delete m_applets.take(applet->id());
313  }
314  private:
315  QMap<uint, SkAppletAdaptor*> m_applets;
316 };
317 
318 #endif
SkPainterAdaptor::rotate
void rotate(double angle)
Rotate by an defined angle.
Definition: skappletadaptor.h:87
SkAppletAdaptor::m_engines
QHash< QString, PlasmaSensor * > m_engines
Definition: skappletadaptor.h:251
SkPainterAdaptor::painter
QPainter * painter() const
Definition: skappletadaptor.h:53
SkPainterAdaptor::translate
void translate(double x, double y)
Translate to x and y.
Definition: skappletadaptor.h:93
SkPainterAdaptor::drawPie
void drawPie(const QRectF &r, int startAngle, int spanAngle)
Draw a pie.
Definition: skappletadaptor.h:100
SkContainmentAdaptor::applet
QObject * applet(int index)
Return the applet with the defined index or NULL if there is no such applet within this containment...
Definition: skappletadaptor.h:280
SkPainterAdaptor::SolidBrush
Definition: skappletadaptor.h:56
SkAppletAdaptor::SkAppletAdaptor
SkAppletAdaptor(Karamba *karamba, Plasma::Applet *applet)
Definition: skappletadaptor.h:134
PlasmaSensor::setEngineImpl
void setEngineImpl(Plasma::DataEngine *engine, const QString &engineName)
Definition: plasmaengine.cpp:155
SkAppletAdaptor::showConfigurationInterface
void showConfigurationInterface()
This signal is emitted if the configuration interface should be shown.
SkPainterAdaptor::scale
void scale(double x, double y)
Scale by x and y.
Definition: skappletadaptor.h:89
SkPainterAdaptor::RadialGradientBrush
Definition: skappletadaptor.h:60
SkAppletAdaptor::paintInterface
void paintInterface(QPainter *painter, const QStyleOptionGraphicsItem *option, const QRect &rect)
Definition: skappletadaptor.h:147
SkAppletAdaptor::name
QString name() const
Return the name of the applet as defined in the plasma-skapplet-default.desktop file.
Definition: skappletadaptor.h:159
SkPainterAdaptor::setOpacity
void setOpacity(double opacity)
Set the used opacity.
Definition: skappletadaptor.h:84
SkAppletAdaptor::m_applet
Plasma::Applet * m_applet
Definition: skappletadaptor.h:248
SkPainterAdaptor::BrushStyle
BrushStyle
Definition: skappletadaptor.h:54
SkContainmentAdaptor::appletCount
int appletCount()
Return the number of applets within this containment.
Definition: skappletadaptor.h:274
SkPainterAdaptor::drawEllipse
void drawEllipse(const QRectF &r)
Draw an ellipse.
Definition: skappletadaptor.h:96
SkAppletAdaptor::paint
void paint(QObject *painter, const QRect &rect)
This signal is emitted if the painter is enabled and if (re-)painting should be done.
SkAppletAdaptor::m_karamba
Karamba * m_karamba
Definition: skappletadaptor.h:247
SkPainterAdaptor::NoBrush
Definition: skappletadaptor.h:55
QObject
SkContainmentAdaptor
The SkContainmentAdaptor class extends the SkAppletAdaptor class to implements an adaptor for Plasma:...
Definition: skappletadaptor.h:258
Karamba
Definition: karamba.h:52
SkPainterAdaptor::setPenColor
void setPenColor(const QString &color)
Set the used pen-color.
Definition: skappletadaptor.h:80
SkPainterAdaptor::setBackgroundColor
void setBackgroundColor(const QString &color)
Set the used background-color.
Definition: skappletadaptor.h:75
SkPainterAdaptor::setStyle
void setStyle(int brushStyle)
Set the used foreground-BrushStyle.
Definition: skappletadaptor.h:72
SkPainterAdaptor
The SkPainterAdaptor class implements an adaptor for QPainter objects.
Definition: skappletadaptor.h:46
SkPainterAdaptor::shear
void shear(double x, double y)
Shear by x and y.
Definition: skappletadaptor.h:91
SkPainterAdaptor::SkPainterAdaptor
SkPainterAdaptor(QObject *parent, QPainter *painter)
Definition: skappletadaptor.h:51
plasmaengine.h
SkAppletAdaptor::m_painterenabled
bool m_painterenabled
Definition: skappletadaptor.h:250
SkPainterAdaptor::~SkPainterAdaptor
virtual ~SkPainterAdaptor()
Definition: skappletadaptor.h:52
SkPainterAdaptor::LinearGradientBrush
Definition: skappletadaptor.h:58
SkAppletAdaptor::~SkAppletAdaptor
virtual ~SkAppletAdaptor()
Definition: skappletadaptor.h:143
SkAppletAdaptor::geometry
QRectF geometry() const
Definition: skappletadaptor.h:171
SkAppletAdaptor::dataEngine
QObject * dataEngine(const QString &name)
Loads and returns the given DataEngine.
Definition: skappletadaptor.h:186
SkAppletAdaptor::category
QString category() const
Return the category of the applet as defined in the plasma-skapplet-default.desktop file...
Definition: skappletadaptor.h:164
SkPainterAdaptor::restore
void restore()
Restore the painter.
Definition: skappletadaptor.h:67
SkAppletAdaptor::boundingRect
QRectF boundingRect()
Return the bouding rectangle of the applet.
Definition: skappletadaptor.h:169
SkPainterAdaptor::DenseBrush
Definition: skappletadaptor.h:57
SkPainterAdaptor::ConicalGradientBrush
Definition: skappletadaptor.h:59
SkPainterAdaptor::drawRect
void drawRect(const QRectF &r)
Draw a rect.
Definition: skappletadaptor.h:104
SkContainmentAdaptor::containment
Plasma::Containment * containment() const
Definition: skappletadaptor.h:268
SkContainmentAdaptor::~SkContainmentAdaptor
virtual ~SkContainmentAdaptor()
Definition: skappletadaptor.h:267
SkPainterAdaptor::drawPoint
void drawPoint(const QPointF &p)
Draw a point.
Definition: skappletadaptor.h:102
SkPainterAdaptor::setBackgroundStyle
void setBackgroundStyle(int brushStyle)
Set the used background-BrushStyle.
Definition: skappletadaptor.h:77
SkPainterAdaptor::setColor
void setColor(const QString &color)
Set the used foreground-color.
Definition: skappletadaptor.h:70
SkContainmentAdaptor::addApplet
QObject * addApplet(const QString &appletname, const QVariantList &args=QVariantList(), const QRectF &geometry=QRectF(-1,-1,-1,-1))
Adds an applet to this Containment.
Definition: skappletadaptor.h:298
SkAppletAdaptor::resize
void resize(const QSizeF &size)
Definition: skappletadaptor.h:173
PlasmaSensor
The PlasmaSensor class implements a SuperKaramba sensor that provides access to Plasma::DataEngine ob...
Definition: plasmaengine.h:97
SkPainterAdaptor::save
void save()
Save the painter.
Definition: skappletadaptor.h:65
SkAppletAdaptor::setGeometry
void setGeometry(const QRectF &geom)
Definition: skappletadaptor.h:172
SkAppletAdaptor::setPainterEnabled
void setPainterEnabled(bool enabled)
Enable or disable the painter.
Definition: skappletadaptor.h:229
SkAppletAdaptor::isPainterEnabled
bool isPainterEnabled()
Return true if the painter is enabled.
Definition: skappletadaptor.h:224
SkPainterAdaptor::drawText
void drawText(const QPointF &position, const QString &text)
Draw some text.
Definition: skappletadaptor.h:106
SkAppletAdaptor
The SkAppletAdaptor class implements an adaptor for Plasma::Applet objects.
Definition: skappletadaptor.h:130
SkPainterAdaptor::drawLine
void drawLine(const QPointF &p1, const QPointF &p2)
Draw a line.
Definition: skappletadaptor.h:98
SkContainmentAdaptor::SkContainmentAdaptor
SkContainmentAdaptor(Karamba *karamba, Plasma::Containment *containment)
Definition: skappletadaptor.h:262
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:07:20 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

superkaramba

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

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • kremotecontrol
  • ktimer
  • kwallet
  • superkaramba
  • sweeper

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