1
/***************************************************************************
2
* Copyright (C) 2009 by Kai Dombrowe <just89@gmx.de> *
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. *
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. *
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
***************************************************************************/
22
#include "mousebutton.h"
26
#include <klocalizedstring.h>
29
#include <QtGui/QMouseEvent>
30
#include <QtGui/QFontMetrics>
36
MouseButton::MouseButton(QWidget *parent)
41
connect(this, SIGNAL(clicked()), this, SLOT(getButton()));
43
setIcon(KIcon("input-mouse"));
49
MouseButton::~MouseButton()
57
int MouseButton::getXButton() const
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;
74
MouseButton::Button MouseButton::getMouseButton() const
82
QString MouseButton::getName(const MouseButton::Button &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");
99
MouseButton::Button MouseButton::getButtonFromName(const QString &name)
103
if (name == i18n("Left-Button")) {
107
if (name == i18n("Right-Button")) {
111
if (name == i18n("Middle-Button")) {
115
if (name == i18n("Special-Button 1")) {
116
return SpecialButton1;
119
if (name == i18n("Special-Button 2")) {
120
return SpecialButton2;
123
if (name == i18n("Wheel up")) {
127
if (name == i18n("Wheel down")) {
136
MouseButton::Button MouseButton::getButtonFromXButton(const int &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;
153
void MouseButton::setXButton(const int &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;
170
void MouseButton::setButton(const Button &button)
174
setText(getName(button));
179
void MouseButton::setText(const QString &text)
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());
192
void MouseButton::getButton()
200
void MouseButton::mousePressEvent(QMouseEvent *event)
203
if (!mouseGrabber()) {
204
setText(i18n("Press a mouse button..."));
205
KPushButton::mousePressEvent(event);
211
void MouseButton::mouseReleaseEvent(QMouseEvent *event)
214
if (!mouseGrabber()) {
215
KPushButton::mouseReleaseEvent(event);
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;
229
emit buttonChanged(oldButton, m_button);
235
void MouseButton::wheelEvent(QWheelEvent *event)
238
if (!mouseGrabber()) {
239
KPushButton::wheelEvent(event);
241
const Button oldButton = m_button;
243
if (event->delta() > 0) {
246
setButton(WheelDown);
249
emit buttonChanged(oldButton, m_button);
255
void MouseButton::resizeEvent(QResizeEvent *event)
258
KPushButton::resizeEvent(event);
264
#include "mousebutton.moc"