Initial commit
[raptor.git] / launcher / raptorclaw.cpp
blobc598148d549ee0e6642b9cd0f2b1176555d220ca
1 #include "raptorclaw.h"
2 #include <QPainter>
3 #include <KIcon>
4 #include <kicontheme.h>
5 #include "raptorclaw.moc"
7 class RaptorClaw::Private
9 public:
10 Private(){}
11 ~Private(){}
12 int height;
13 int width;
14 Plasma::Svg * m_theme;
15 QString text;
16 QString comment;
17 QString tooltip;
18 QString icon;
19 int Rating;
20 MouseState state;
21 ThemeNames ids;
22 QSize size;
23 QSize elementSize;
24 QPixmap iconPixmap;
25 float opacity;
26 //Grid
27 int ncol;
28 int nrow;
32 RaptorClaw::RaptorClaw(QGraphicsItem * parent) : QGraphicsItem(parent),d(new Private)
34 //TODO
35 setAcceptsHoverEvents(true);
36 //read from config
37 d->height = 330;
38 d->width = 340;
39 d->m_theme = new Plasma::Svg( "menu/raptorslide",this);
40 d->m_theme->resize(d->width,d->height);
41 //FIXME
42 //Do not hardcode Get from config/xml
43 d->text = "RaptorItem";
44 d->ids[REGULAR] = "itemNormal";
45 d->ids[OVER] = QString("itemOver");
46 d->ids[PRESSED] = "itemOver";
47 d->state = REGULAR;
48 d->size = d->m_theme->size();
49 d->elementSize = d->m_theme->elementSize("itemNormal");
50 d->iconPixmap = QPixmap();
51 d->opacity = 1.0f;
52 //FIXME: need methods for these
53 d->nrow=4;
54 d->ncol=4;
58 RaptorClaw::~RaptorClaw()
60 delete d->m_theme;
61 delete d;
64 void RaptorClaw::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget )
66 Q_UNUSED(widget);
67 Q_UNUSED(option);
68 painter->setOpacity(d->opacity);
69 painter->setRenderHint(QPainter::SmoothPixmapTransform);
70 d->m_theme->resize(d->width,d->height);
71 QRectF source(x(), y(), d->elementSize.width() , d->elementSize.height());
72 d->m_theme->paint(painter, (int)x(),(int)y(), d->ids[d->state]);
73 if (!d->iconPixmap.isNull()) {
74 painter->drawPixmap(int(x()+((int)source.width()-d->iconPixmap.width())/2),int(y()+
75 ((int)source.height()-d->iconPixmap.height())/2),d->iconPixmap.height(),d->iconPixmap.width(),d->iconPixmap);
76 } else {
77 kDebug()<<"NUll Icon Pixmap"<<endl;
80 //painter->drawText(source,Qt::AlignCenter,d->text);
83 void RaptorClaw::setOpacity(float op)
85 d->opacity = op;
87 QString RaptorClaw::loadSvg(MouseState state)
89 return d->ids[state];
92 QSize RaptorClaw::sizeHint() const
94 return QSize(d->height,d->width);
97 QSize RaptorClaw::minimumSize() const
99 return QSize(d->height,d->width);
102 QRect RaptorClaw::geometry() const
104 return QRect((int)x(),(int)y(),d->height,d->width);
107 QSize RaptorClaw::maximumSize() const
109 return QSize(d->height,d->width);
111 QRectF RaptorClaw::boundingRect() const
113 return QRectF (x(),y(),d->elementSize.width(),d->elementSize.height());
115 //Events
117 void RaptorClaw::hoverEnterEvent ( QGraphicsSceneHoverEvent * event )
119 Q_UNUSED(event);
120 d->state = OVER;
121 update();
124 void RaptorClaw::hoverMoveEvent ( QGraphicsSceneHoverEvent * event )
126 Q_UNUSED(event);
127 d->state = OVER;
128 update();
131 void RaptorClaw::hoverLeaveEvent ( QGraphicsSceneHoverEvent * event )
133 Q_UNUSED(event);
134 d->state = REGULAR;
135 update();
138 QString RaptorClaw::name()
140 return d->text;
143 void RaptorClaw::setName(const QString& name)
145 d->text = name;
148 void RaptorClaw::setIcon(QPixmap icon)
150 d->iconPixmap = QPixmap(icon);