Merge branch 'central-widget'
[krunner.git] / raptorscrollhandler.cpp
blobb368f53a3b6c8d2b94c8c5ad3c7a600102034191
1 #include "raptorscrollhandler.h"
2 #include <QPainter>
3 #include "raptorscrollhandler.moc"
5 class RaptorScrollHandler::Private
7 public:
8 Private(){}
9 ~Private(){}
10 int height;
11 int width;
12 Plasma::Svg *m_theme;
13 QString comment;
14 QString tooltip;
15 OwnState state;
16 ElementHash elementsNames;
17 QSize size;
18 QSize elementSize;
19 QRect geometry;
20 Qt::Orientations orientation;
21 ArrowState arrow;
25 RaptorScrollHandler::RaptorScrollHandler(QGraphicsItem * parent)
26 : QGraphicsItem(parent)
28 d = new Private;
29 //TODO
30 setAcceptsHoverEvents(true);
31 //read from config
32 d->height = 240;
33 d->width = 340;
34 d->m_theme = new Plasma::Svg("menu/raptorslide",this);
35 d->m_theme->resize(d->height, d->width);
36 //TODO don't do this!
37 setExpandingDirections(Qt::Vertical);
38 d->state = REGULAR;
39 d->size = d->m_theme->size();
40 //d->size = QSize(d->size.width()/10,d->size.height()/10);
41 d->elementSize = d->m_theme->elementSize("arrowUp");
42 d->arrow = UP;
43 d->orientation = Qt::Vertical;
46 void RaptorScrollHandler::setArrowState(RaptorScrollHandler::ArrowState state)
48 if (state == UP) {
49 d->elementsNames[REGULAR] = "arrowUp";
50 d->elementsNames[Hovered] = "arrowUp";
51 d->elementsNames[PRESSED] = "arrowUp";
52 } else if (state == DOWN) {
53 d->elementsNames[REGULAR] = "arrowDown";
54 d->elementsNames[Hovered] = "arrowDown";
55 d->elementsNames[PRESSED] = "arrowDown";
56 } else if (state == LEFT) {
57 d->elementsNames[REGULAR] = "arrowLeft";
58 d->elementsNames[Hovered] = "arrowLeft";
59 d->elementsNames[PRESSED] = "arrowLeft";
60 d->elementSize = d->m_theme->elementSize("arrowLeft");
61 } else if (state == RIGHT) {
62 d->elementsNames[REGULAR] = "arrowRight";
63 d->elementsNames[Hovered] = "arrowRight";
64 d->elementsNames[PRESSED] = "arrowRight";
65 d->elementSize = d->m_theme->elementSize("arrowRight");
68 d->arrow = state;
72 RaptorScrollHandler::~RaptorScrollHandler()
74 // delete d->m_theme;
75 delete d;
78 void RaptorScrollHandler::setExpandingDirections(Qt::Orientations ori)
80 Q_UNUSED(ori);
82 d->orientation = ori;
83 if (d->orientation == Qt::Vertical) {
84 d->elementsNames[REGULAR] = "arrowUp";
85 d->elementsNames[Hovered] = "arrowUp";
86 d->elementsNames[PRESSED] = "arrowUp";
87 } else {
88 d->elementsNames[REGULAR] = "arrowBot";
89 d->elementsNames[Hovered] = "arrowBot";
90 d->elementsNames[PRESSED] = "arrowDown";
96 void RaptorScrollHandler::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
98 d->m_theme->resize(d->height, d->width);
99 painter->setRenderHint(QPainter::SmoothPixmapTransform);
100 QRectF source = boundingRect();//(x(), y(), d->width , d->height );
101 d->m_theme->paint(painter, x(), y(), d->elementsNames[d->state]);
102 //painter->drawRect(boundingRect());
103 Q_UNUSED(option);
104 Q_UNUSED(widget);
107 QString RaptorScrollHandler::getElementNameForState(OwnState state)
109 return d->elementsNames[state];
112 QSize RaptorScrollHandler::sizeHint() const
114 return QSize(d->width, d->height);
117 QRectF RaptorScrollHandler::boundingRect() const
119 //kDebug() << QRectF (x(),y(),d->elementSize.width(),d->elementSize.height());
120 return QRectF (x(), y(), d->elementSize.width(), d->elementSize.height());
123 void RaptorScrollHandler::setGeometry(const QRect &geometry)
125 d->geometry = geometry;
128 QRect RaptorScrollHandler::geometry() const
130 return d->geometry;
135 QRect RaptorScrollHandler::geometry () const
137 return QRect (x(),y(),d->width,d->height);
142 //Events
144 void RaptorScrollHandler::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
146 d->state = Hovered;
147 emit activated();
148 update();
151 void RaptorScrollHandler::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
153 d->m_theme->resize(d->width, d->height);
154 d->state = Hovered;
155 update();
158 void RaptorScrollHandler::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
160 d->state = REGULAR;
161 emit deactivated();
162 update();
165 void RaptorScrollHandler::mousePressEvent(QGraphicsSceneMouseEvent *event)
167 d->state = Hovered;
168 emit activated();
169 update();