~ubuntu-branches/ubuntu/oneiric/kdeplasma-addons/oneiric

« back to all changes in this revision

Viewing changes to applets/plasmaboard/BoardKey.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Thomas
  • Date: 2010-05-25 09:50:14 UTC
  • mto: (0.4.3 experimental)
  • mto: This revision was merged to the branch mainline in revision 68.
  • Revision ID: james.westby@ubuntu.com-20100525095014-e3cebfkdenjrx3xg
Tags: upstream-4.4.80
Import upstream version 4.4.80

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#include "BoardKey.h"
21
21
#include "Helpers.h"
22
22
#include <QPainter>
23
 
#include <QTimer>
24
23
#include <plasma/theme.h>
25
 
#include <kpushbutton.h>
26
 
 
27
 
BoardKey::BoardKey(PlasmaboardWidget *parent):
28
 
        Plasma::PushButton(parent),fontSize(60) {
29
 
 
30
 
        setMinimumSize(5,5);
31
 
        setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored, QSizePolicy::DefaultType);
32
 
 
33
 
        connect(this, SIGNAL( clicked() ), this, SLOT( released() ) );
34
 
        connect(static_cast<const KPushButton*>(this->nativeWidget()), SIGNAL( pressed() ), this, SLOT( pressed() ) );
35
 
 
36
 
        m_pushUp = new QTimer();
37
 
        connect(m_pushUp, SIGNAL( timeout() ), this, SLOT( reset() ) );
38
 
}
39
 
 
40
 
BoardKey::~BoardKey() {
41
 
        delete m_pushUp;
42
 
}
43
 
 
44
 
unsigned int BoardKey::getKeycode() {
45
 
        return keycode;
46
 
}
47
 
 
48
 
void BoardKey::pressed(){
49
 
        m_pushUp->stop();
50
 
}
51
 
 
52
 
void BoardKey::released(){
53
 
        m_pushUp->start(500);
54
 
        nativeWidget()->setDown(true);
55
 
        sendKeycodePress();
56
 
        sendKeycodeRelease();
57
 
}
58
 
 
59
 
void BoardKey::reset(){
60
 
        nativeWidget()->setDown(false);
61
 
        m_pushUp->stop();
62
 
}
63
 
 
64
 
void BoardKey::sendKeycodePress() {
65
 
        Helpers::fakeKeyPress(getKeycode());
66
 
}
67
 
 
68
 
void BoardKey::sendKeycodeRelease() {
69
 
        Helpers::fakeKeyRelease(getKeycode());
70
 
}
71
 
 
72
 
 
73
 
void BoardKey::sendKeycodeToggled() {}
74
 
 
75
 
void BoardKey::setUpPainter(QPainter *painter){
76
 
        painter->setRenderHints(QPainter::Antialiasing);
77
 
        painter->setPen(QPen(Plasma::Theme::defaultTheme()->color(Plasma::Theme::ButtonTextColor)));
78
 
 
79
 
        painter->translate(contentsRect().center());
80
 
        double mul = qMin(contentsRect().width(), contentsRect().height()) / 10;
81
 
        painter->scale(mul, mul);
82
 
}
83
 
 
84
 
void BoardKey::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){
85
 
        Plasma::PushButton::paint(painter, option, widget);
86
 
 
87
 
        setUpPainter(painter); // scales the matrix
88
 
        painter->scale(0.1, 0.1);
89
 
 
90
 
        painter->setFont(QFont ( Plasma::Theme::defaultTheme()->font(Plasma::Theme::DefaultFont).toString(), fontSize));
91
 
        painter->drawText(QRect(-50,-50,100,100), Qt::AlignCenter , labelText); // don't know why rect must be like that
92
 
}
93
 
 
94
 
void BoardKey::setText(QString text) {
95
 
        labelText = text;
96
 
        fontSize = (text.size() > 1) ? ((text.size() > 3) ? 20 : 40) : 60;
97
 
        //Plasma::PushButton::setText(text);
98
 
}
99
 
 
100
 
QString BoardKey::text() {
101
 
        return labelText;
 
24
 
 
25
BoardKey::BoardKey(QPoint relativePosition, QSize relativeSize, unsigned int keycode) :
 
26
    m_relativePosition(relativePosition), m_relativeSize(relativeSize){
 
27
    m_keycode = keycode;
 
28
}
 
29
 
 
30
BoardKey::~BoardKey()
 
31
{
 
32
 
 
33
}
 
34
 
 
35
bool BoardKey::contains (const QPoint &point) const
 
36
{
 
37
    return m_rect.contains(point);
 
38
}
 
39
 
 
40
bool BoardKey::intersects (const QRectF &rect) const
 
41
{
 
42
    return m_rect.intersects(rect);
 
43
}
 
44
 
 
45
 
 
46
unsigned int BoardKey::getKeycode() const
 
47
{
 
48
    return m_keycode;
 
49
}
 
50
 
 
51
unsigned int BoardKey::getKeysymbol(int level) const
 
52
{
 
53
    return Helpers::keycodeToKeysym(getKeycode(), level);
 
54
}
 
55
 
 
56
QString BoardKey::label() const
 
57
{
 
58
    return QString();
 
59
}
 
60
 
 
61
void BoardKey::paint(QPainter *painter)
 
62
{
 
63
    //painter->eraseRect(m_rect);
 
64
    //painter->fillRect(m_rect, QColor(Qt::transparent));
 
65
    painter->drawPixmap(m_rect.topLeft(), *m_pixmap);
 
66
    //painter->drawPixmap(m_rect.toRect(), *m_pixmap);
 
67
    //painter->drawRect(QRect(m_position, QPoint( frames[m_size].width() + m_position.x(), frames[m_size].height() + m_position.y() )));
 
68
}
 
69
 
 
70
QPoint BoardKey::position() const
 
71
{
 
72
    return m_rect.topLeft().toPoint();
 
73
}
 
74
 
 
75
void BoardKey::pressed()
 
76
{
 
77
 
 
78
}
 
79
 
 
80
void BoardKey::pressRepeated()
 
81
{
 
82
    Helpers::fakeKeyPress(getKeycode());
 
83
}
 
84
 
 
85
void BoardKey::released()
 
86
{       
 
87
    sendKey();
 
88
}
 
89
 
 
90
QRectF BoardKey::rect() const
 
91
{
 
92
    return m_rect;
 
93
}
 
94
 
 
95
QSize BoardKey::relativeSize() const
 
96
{
 
97
    return m_relativeSize;
 
98
}
 
99
 
 
100
void BoardKey::reset()
 
101
{
 
102
}
 
103
 
 
104
void BoardKey::sendKey()
 
105
{
 
106
    sendKeyPress();
 
107
    sendKeyRelease();
 
108
}
 
109
 
 
110
void BoardKey::sendKeyPress()
 
111
{
 
112
     Helpers::fakeKeyPress(getKeycode());
 
113
}
 
114
 
 
115
void BoardKey::sendKeyRelease()
 
116
{
 
117
     Helpers::fakeKeyRelease(getKeycode());
 
118
}
 
119
 
 
120
void BoardKey::setKeycode(unsigned int keycode){
 
121
    m_keycode = keycode;
 
122
}
 
123
 
 
124
void BoardKey::setPixmap(QPixmap *pixmap)
 
125
{
 
126
    m_pixmap = pixmap;
 
127
}
 
128
 
 
129
void BoardKey::setUpPainter(QPainter *painter) const
 
130
{
 
131
    painter->translate(position() + QPoint(size().width()/2, size().height()/2) );    
 
132
}
 
133
 
 
134
QSize BoardKey::size() const
 
135
{
 
136
    return m_rect.size().toSize();
 
137
}
 
138
 
 
139
void BoardKey::unpressed()
 
140
{
 
141
 
 
142
}
 
143
 
 
144
void BoardKey::updateDimensions(double factor_x, double factor_y)
 
145
{
 
146
    QPoint position = QPoint(m_relativePosition.x() * factor_x, m_relativePosition.y() * factor_y);
 
147
    QSize size = QSize(m_relativeSize.width() * factor_x, m_relativeSize.height() * factor_y);
 
148
    m_rect = QRect(position, size);
102
149
}