~ubuntu-branches/ubuntu/raring/recorditnow/raring

« back to all changes in this revision

Viewing changes to src/config/mousebutton.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2011-01-09 14:54:01 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20110109145401-gyckb4airz4fio50
Tags: 0.8.1-0ubuntu1
* New upstream release. (LP: #681270)
  - Update debian/copyright.
* Build-depend on recordmydesktop.
* Add a watch file.
* Drop 01_fix_ftbfs_kwarning_call.diff, fixed upstream.
* Add 01_joschy_install_to_usr_lib.diff.
* Add 02_fix_ftbfs_no-add-needed.diff.
* Add 03_dont_install_header_files.diff.
* Replace dependency on libpolkit-qt-1-0 with policykit-1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
 *   Copyright (C) 2009 by Kai Dombrowe <just89@gmx.de>                    *
 
3
 *                                                                         *
 
4
 *   This program is free software; you can redistribute it and/or modify  *
 
5
 *   it under the terms of the GNU General Public License as published by  *
 
6
 *   the Free Software Foundation; either version 2 of the License, or     *
 
7
 *   (at your option) any later version.                                   *
 
8
 *                                                                         *
 
9
 *   This program is distributed in the hope that it will be useful,       *
 
10
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 
11
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 
12
 *   GNU General Public License for more details.                          *
 
13
 *                                                                         *
 
14
 *   You should have received a copy of the GNU General Public License     *
 
15
 *   along with this program; if not, write to the                         *
 
16
 *   Free Software Foundation, Inc.,                                       *
 
17
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
 
18
 ***************************************************************************/
 
19
 
 
20
 
 
21
// own
 
22
#include "mousebutton.h"
 
23
 
 
24
// KDE
 
25
#include <kdebug.h>
 
26
#include <klocalizedstring.h>
 
27
 
 
28
// Qt
 
29
#include <QtGui/QMouseEvent>
 
30
#include <QtGui/QFontMetrics>
 
31
 
 
32
// X11
 
33
#include <X11/Xlib.h>
 
34
 
 
35
 
 
36
MouseButton::MouseButton(QWidget *parent)
 
37
    : KPushButton(parent)
 
38
{
 
39
 
 
40
    setCheckable(true);
 
41
    connect(this, SIGNAL(clicked()), this, SLOT(getButton()));
 
42
 
 
43
    setIcon(KIcon("input-mouse"));
 
44
    setButton(NoButton);
 
45
 
 
46
}
 
47
 
 
48
 
 
49
MouseButton::~MouseButton()
 
50
{
 
51
 
 
52
 
 
53
 
 
54
}
 
55
 
 
56
 
 
57
int MouseButton::getXButton() const
 
58
{
 
59
 
 
60
    switch (m_button) {
 
61
    case LeftButton: return Button1;
 
62
    case RightButton: return Button3;
 
63
    case MiddleButton: return Button2;
 
64
    case SpecialButton1: return 8;
 
65
    case SpecialButton2: return 9;
 
66
    case WheelUp: return Button4;
 
67
    case WheelDown: return Button5;
 
68
    default: return -1;
 
69
    }
 
70
 
 
71
}
 
72
 
 
73
 
 
74
MouseButton::Button MouseButton::getMouseButton() const
 
75
{
 
76
 
 
77
    return m_button;
 
78
 
 
79
}
 
80
 
 
81
 
 
82
QString MouseButton::getName(const MouseButton::Button &button)
 
83
{
 
84
 
 
85
    switch (button) {
 
86
    case LeftButton: return i18n("Left-Button");
 
87
    case RightButton: return i18n("Right-Button");
 
88
    case MiddleButton: return i18n("Middle-Button");
 
89
    case SpecialButton1: return i18n("Special-Button 1");
 
90
    case SpecialButton2: return i18n("Special-Button 2");
 
91
    case WheelUp: return i18n("Wheel up");
 
92
    case WheelDown: return i18n("Wheel down");
 
93
    default: return i18n("No-Button");
 
94
    }
 
95
 
 
96
}
 
97
 
 
98
 
 
99
MouseButton::Button MouseButton::getButtonFromName(const QString &name)
 
100
{
 
101
 
 
102
 
 
103
    if (name == i18n("Left-Button")) {
 
104
        return LeftButton;
 
105
    }
 
106
 
 
107
    if (name == i18n("Right-Button")) {
 
108
        return RightButton;
 
109
    }
 
110
 
 
111
    if (name == i18n("Middle-Button")) {
 
112
        return MiddleButton;
 
113
    }
 
114
 
 
115
    if (name == i18n("Special-Button 1")) {
 
116
        return SpecialButton1;
 
117
    }
 
118
 
 
119
    if (name == i18n("Special-Button 2")) {
 
120
        return SpecialButton2;
 
121
    }
 
122
 
 
123
    if (name == i18n("Wheel up")) {
 
124
        return WheelUp;
 
125
    }
 
126
 
 
127
    if (name == i18n("Wheel down")) {
 
128
        return WheelDown;
 
129
    }
 
130
 
 
131
    return NoButton;
 
132
 
 
133
}
 
134
 
 
135
 
 
136
MouseButton::Button MouseButton::getButtonFromXButton(const int &button)
 
137
{
 
138
 
 
139
    switch (button) {
 
140
    case Button1: return LeftButton;
 
141
    case Button3: return RightButton;
 
142
    case Button2: return MiddleButton;
 
143
    case 8: return SpecialButton1;
 
144
    case 9: return SpecialButton2;
 
145
    case Button4: return WheelUp;
 
146
    case Button5: return WheelDown;
 
147
    default: return NoButton;
 
148
    }
 
149
 
 
150
}
 
151
 
 
152
 
 
153
void MouseButton::setXButton(const int &button)
 
154
{
 
155
 
 
156
    switch (button) {
 
157
    case 1: setButton(LeftButton); break;
 
158
    case 2: setButton(MiddleButton); break;
 
159
    case 3: setButton(RightButton); break;
 
160
    case 4: setButton(WheelUp); break;
 
161
    case 5: setButton(WheelDown); break;
 
162
    case 8: setButton(SpecialButton1); break;
 
163
    case 9: setButton(SpecialButton2); break;
 
164
    default: setButton(NoButton); break;
 
165
    }
 
166
 
 
167
}
 
168
 
 
169
 
 
170
void MouseButton::setButton(const Button &button)
 
171
{
 
172
 
 
173
    m_button = button;
 
174
    setText(getName(button));
 
175
 
 
176
}
 
177
 
 
178
 
 
179
void MouseButton::setText(const QString &text)
 
180
{
 
181
 
 
182
    KPushButton::setText(text);
 
183
    QFontMetrics fm(font());
 
184
    int width = fm.width(text);
 
185
    width += fm.height()*3;
 
186
    setMinimumWidth(width);
 
187
    resize(width, height());
 
188
 
 
189
}
 
190
 
 
191
 
 
192
void MouseButton::getButton()
 
193
{
 
194
 
 
195
    grabMouse();
 
196
 
 
197
}
 
198
 
 
199
 
 
200
void MouseButton::mousePressEvent(QMouseEvent *event)
 
201
{
 
202
 
 
203
    if (!mouseGrabber()) {
 
204
        setText(i18n("Press a mouse button..."));
 
205
        KPushButton::mousePressEvent(event);
 
206
    }
 
207
 
 
208
}
 
209
 
 
210
 
 
211
void MouseButton::mouseReleaseEvent(QMouseEvent *event)
 
212
{
 
213
 
 
214
    if (!mouseGrabber()) {
 
215
        KPushButton::mouseReleaseEvent(event);
 
216
    } else {
 
217
        releaseMouse();
 
218
        const Button oldButton = m_button;
 
219
        switch (event->button()) {
 
220
        case Qt::NoButton: setButton(NoButton); break;
 
221
        case Qt::LeftButton: setButton(LeftButton); break;
 
222
        case Qt::RightButton: setButton(RightButton); break;
 
223
        case Qt::MidButton: setButton(MiddleButton); break;
 
224
        case Qt::XButton1: setButton(SpecialButton1); break;
 
225
        case Qt::XButton2: setButton(SpecialButton2); break;
 
226
        default: setButton(NoButton); break;
 
227
        }
 
228
        setChecked(false);
 
229
        emit buttonChanged(oldButton, m_button);
 
230
    }
 
231
 
 
232
}
 
233
 
 
234
 
 
235
void MouseButton::wheelEvent(QWheelEvent *event)
 
236
{
 
237
 
 
238
    if (!mouseGrabber()) {
 
239
        KPushButton::wheelEvent(event);
 
240
    }   else {
 
241
        const Button oldButton = m_button;
 
242
        releaseMouse();
 
243
        if (event->delta() > 0) {
 
244
            setButton(WheelUp);
 
245
        } else {
 
246
            setButton(WheelDown);
 
247
        }
 
248
        setChecked(false);
 
249
        emit buttonChanged(oldButton, m_button);
 
250
    }
 
251
 
 
252
}
 
253
 
 
254
 
 
255
void MouseButton::resizeEvent(QResizeEvent *event)
 
256
{
 
257
 
 
258
    KPushButton::resizeEvent(event);
 
259
    emit sizeChanged();
 
260
 
 
261
}
 
262
 
 
263
 
 
264
#include "mousebutton.moc"