straight copy of qt4 branch over to trunk, merge refused to work
git-svn-id: svn://svn.code.sf.net/p/qjoypad/code/trunk@95 c05e91a0-76c8-4ec0-b377-ef19ce7cc080
This commit is contained in:
committed by
virtuoussin13
parent
c1ef3fa0b7
commit
345bb5748e
19
src/axis.h
19
src/axis.h
@ -4,11 +4,11 @@
|
|||||||
//abs()
|
//abs()
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
//parent of Axis
|
#include <QTimer>
|
||||||
#include "component.h"
|
#include <QTextStream>
|
||||||
|
#include <QRegExp>
|
||||||
//to request a periodic tap on the shoulder for gradient mode
|
#include <QStringList>
|
||||||
#include "timer.h"
|
#include "constant.h"
|
||||||
|
|
||||||
//default and arbitrary values for dZone and xZone
|
//default and arbitrary values for dZone and xZone
|
||||||
#define DZONE 3000
|
#define DZONE 3000
|
||||||
@ -18,7 +18,8 @@
|
|||||||
enum AxisMode {keybd, mousepv, mousenv, mouseph, mousenh};
|
enum AxisMode {keybd, mousepv, mousenv, mouseph, mousenh};
|
||||||
|
|
||||||
//represents one joystick axis
|
//represents one joystick axis
|
||||||
class Axis : public Component {
|
class Axis : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
//so AxisEdit can manipulate fields directly.
|
//so AxisEdit can manipulate fields directly.
|
||||||
friend class AxisEdit;
|
friend class AxisEdit;
|
||||||
public:
|
public:
|
||||||
@ -45,11 +46,12 @@ class Axis : public Component {
|
|||||||
void setKey(bool positive, int value);
|
void setKey(bool positive, int value);
|
||||||
//happens every MSEC milliseconds (constant.h)
|
//happens every MSEC milliseconds (constant.h)
|
||||||
//uses tick to decide if key events should be generated
|
//uses tick to decide if key events should be generated
|
||||||
void timer( int tick );
|
void timerTick( int tick );
|
||||||
//recalculates the gradient curve. This should be run every time
|
//recalculates the gradient curve. This should be run every time
|
||||||
//maxSpeed, xZone, or dZone are changed.
|
//maxSpeed, xZone, or dZone are changed.
|
||||||
void adjustGradient();
|
void adjustGradient();
|
||||||
protected:
|
protected:
|
||||||
|
int tick;
|
||||||
//This axis is logically depressed (positive or negative)
|
//This axis is logically depressed (positive or negative)
|
||||||
//if the axis is gradient, this is true even if it is not
|
//if the axis is gradient, this is true even if it is not
|
||||||
//currently generating a keypress at the instant.
|
//currently generating a keypress at the instant.
|
||||||
@ -84,6 +86,9 @@ class Axis : public Component {
|
|||||||
//note, the key is still clicked at the same pace no matter what,
|
//note, the key is still clicked at the same pace no matter what,
|
||||||
//this just decides how long it stays down each cycle.
|
//this just decides how long it stays down each cycle.
|
||||||
int duration;
|
int duration;
|
||||||
|
QTimer *timer;
|
||||||
|
public slots:
|
||||||
|
void timerCalled();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
#include "axis_edit.h"
|
#include "axis_edit.h"
|
||||||
|
|
||||||
|
|
||||||
AxisEdit::AxisEdit( Axis* ax )
|
AxisEdit::AxisEdit( Axis* ax )
|
||||||
:QDialog() {
|
:QDialog() {
|
||||||
//build the dialog, display current axis settings :)
|
//build the dialog, display current axis settings :)
|
||||||
axis = ax;
|
axis = ax;
|
||||||
setCaption("Set " + axis->getName());
|
setWindowTitle("Set " + axis->getName());
|
||||||
setIcon(QPixmap(ICON24));
|
setWindowIcon(QPixmap(ICON24));
|
||||||
|
|
||||||
//h, v, and v2 are all references to layouts. They are used to refer to
|
//h, v, and v2 are all references to layouts. They are used to refer to
|
||||||
//various layouts as the dialog is built and are not pointing to the same
|
//various layouts as the dialog is built and are not pointing to the same
|
||||||
@ -13,32 +14,42 @@ AxisEdit::AxisEdit( Axis* ax )
|
|||||||
//after I have placed the widgets within them and there's no reasno to
|
//after I have placed the widgets within them and there's no reasno to
|
||||||
//keep track of them.
|
//keep track of them.
|
||||||
|
|
||||||
QVBoxLayout* v = new QVBoxLayout(this, 5, 5);
|
QVBoxLayout* v = new QVBoxLayout(this);
|
||||||
|
v->setMargin(5);
|
||||||
|
v->setSpacing(5);
|
||||||
|
|
||||||
QHBoxLayout* h = new QHBoxLayout();
|
QHBoxLayout* h = new QHBoxLayout();
|
||||||
QVBoxLayout* v2 = new QVBoxLayout(0,5,5);
|
QVBoxLayout* v2 = new QVBoxLayout();
|
||||||
|
v2->setMargin(5);
|
||||||
|
v2->setSpacing(5);
|
||||||
CGradient = new QCheckBox("Gradient", this);
|
CGradient = new QCheckBox("Gradient", this);
|
||||||
CGradient->setChecked(axis->gradient);
|
CGradient->setChecked(axis->gradient);
|
||||||
v2->addWidget(CGradient);
|
v2->addWidget(CGradient);
|
||||||
|
|
||||||
CMode = new QComboBox(this);
|
CMode = new QComboBox(this);
|
||||||
CMode->insertItem("Keyboard",keybd);
|
CMode->insertItem((int)keybd, QString("Keyboard"), QVariant(NULL));
|
||||||
CMode->insertItem("Mouse (Vert.)",mousepv);
|
CMode->insertItem((int) mousepv,QString("Mouse (Vert.)"),QVariant(NULL));
|
||||||
CMode->insertItem("Mouse (Vert. Rev.)", mousenv);
|
CMode->insertItem((int) mousenv, QString("Mouse (Vert. Rev.)"), QVariant(NULL));
|
||||||
CMode->insertItem("Mouse (Hor.)", mouseph);
|
CMode->insertItem((int) mouseph, "Mouse (Hor.)", QVariant(NULL));
|
||||||
CMode->insertItem("Mouse (Hor. Rev.)", mousenh);
|
CMode->insertItem((int)mousenh, QString("Mouse (Hor. Rev.)"), NULL);
|
||||||
CMode->setCurrentItem( axis->mode );
|
CMode->setCurrentIndex( axis->mode );
|
||||||
connect(CMode, SIGNAL(activated(int)), this, SLOT( CModeChanged( int )));
|
connect(CMode, SIGNAL(activated(int)), this, SLOT( CModeChanged( int )));
|
||||||
v2->addWidget(CMode);
|
v2->addWidget(CMode);
|
||||||
h->addLayout(v2);
|
h->addLayout(v2);
|
||||||
|
|
||||||
MouseBox = new QFrame(this);
|
MouseBox = new QFrame(this);
|
||||||
MouseBox->setFrameStyle( QFrame::Box | QFrame::Sunken );
|
MouseBox->setFrameStyle( QFrame::Box | QFrame::Sunken );
|
||||||
v2 = new QVBoxLayout(MouseBox,5,5);
|
v2 = new QVBoxLayout(MouseBox);
|
||||||
v2->setAutoAdd(true);
|
v2->setSpacing(5);
|
||||||
new QLabel("Mouse Speed", MouseBox);
|
v2->setMargin(5);
|
||||||
SSpeed = new QSpinBox(0,MAXMOUSESPEED,1,MouseBox);
|
//v2->setAutoAdd(true);
|
||||||
|
QLabel *mouseLabel = new QLabel("Mouse Speed", MouseBox);
|
||||||
|
v2->addWidget(mouseLabel);
|
||||||
|
SSpeed = new QSpinBox(MouseBox);
|
||||||
|
SSpeed->setRange(0,MAXMOUSESPEED);
|
||||||
|
SSpeed->setSingleStep(1);
|
||||||
SSpeed->setValue(axis->maxSpeed);
|
SSpeed->setValue(axis->maxSpeed);
|
||||||
|
v2->addWidget(SSpeed);
|
||||||
h->addWidget(MouseBox);
|
h->addWidget(MouseBox);
|
||||||
v->addLayout(h);
|
v->addLayout(h);
|
||||||
|
|
||||||
@ -47,18 +58,23 @@ AxisEdit::AxisEdit( Axis* ax )
|
|||||||
|
|
||||||
KeyBox = new QFrame(this);
|
KeyBox = new QFrame(this);
|
||||||
KeyBox->setFrameStyle( QFrame::Box | QFrame::Sunken );
|
KeyBox->setFrameStyle( QFrame::Box | QFrame::Sunken );
|
||||||
h = new QHBoxLayout(KeyBox, 5, 5);
|
h = new QHBoxLayout(KeyBox);
|
||||||
h->setAutoAdd(true);
|
h->setSpacing(5);
|
||||||
|
h->setMargin(5);
|
||||||
|
//h->setAutoAdd(true);
|
||||||
BNeg = new KeyButton(axis->getName(),axis->nkeycode,KeyBox);
|
BNeg = new KeyButton(axis->getName(),axis->nkeycode,KeyBox);
|
||||||
|
|
||||||
CThrottle = new QComboBox(KeyBox);
|
CThrottle = new QComboBox(KeyBox);
|
||||||
CThrottle->insertItem("Neg. Throttle",0);
|
CThrottle->insertItem(0,"Neg. Throttle",QVariant(NULL));
|
||||||
CThrottle->insertItem("No Throttle",1);
|
CThrottle->insertItem(1,"No Throttle",QVariant(NULL));
|
||||||
CThrottle->insertItem("Pos. Throttle",2);
|
CThrottle->insertItem(2,"Pos. Throttle",QVariant(NULL));
|
||||||
CThrottle->setCurrentItem(axis->throttle + 1);
|
CThrottle->setCurrentIndex(axis->throttle + 1);
|
||||||
connect( CThrottle, SIGNAL( activated( int )), this, SLOT( CThrottleChanged( int )));
|
connect( CThrottle, SIGNAL( activated( int )), this, SLOT( CThrottleChanged( int )));
|
||||||
|
|
||||||
BPos = new KeyButton(axis->getName(),axis->pkeycode,KeyBox);
|
BPos = new KeyButton(axis->getName(),axis->pkeycode,KeyBox);
|
||||||
|
h->addWidget(BNeg);
|
||||||
|
h->addWidget(CThrottle);
|
||||||
|
h->addWidget(BPos);
|
||||||
v->addWidget( KeyBox );
|
v->addWidget( KeyBox );
|
||||||
|
|
||||||
h = new QHBoxLayout();
|
h = new QHBoxLayout();
|
||||||
@ -96,13 +112,16 @@ void AxisEdit::CModeChanged( int index ) {
|
|||||||
|
|
||||||
void AxisEdit::CThrottleChanged( int index ) {
|
void AxisEdit::CThrottleChanged( int index ) {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0: BNeg->setEnabled(true);
|
case 0:
|
||||||
|
BNeg->setEnabled(true);
|
||||||
BPos->setEnabled(false);
|
BPos->setEnabled(false);
|
||||||
break;
|
break;
|
||||||
case 1: BNeg->setEnabled(true);
|
case 1:
|
||||||
|
BNeg->setEnabled(true);
|
||||||
BPos->setEnabled(true);
|
BPos->setEnabled(true);
|
||||||
break;
|
break;
|
||||||
case 2: BNeg->setEnabled(false);
|
case 2:
|
||||||
|
BNeg->setEnabled(false);
|
||||||
BPos->setEnabled(true);
|
BPos->setEnabled(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -111,18 +130,18 @@ void AxisEdit::CThrottleChanged( int index ) {
|
|||||||
|
|
||||||
void AxisEdit::accept() {
|
void AxisEdit::accept() {
|
||||||
//if the gradient status has changed, either request a timer or turn it down.
|
//if the gradient status has changed, either request a timer or turn it down.
|
||||||
if (axis->gradient) {
|
/*if (axis->gradient) {
|
||||||
if (!CGradient->isChecked()) tossTimer(axis);
|
if (!CGradient->isChecked()) tossTimer(axis);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (CGradient->isChecked()) takeTimer(axis);
|
if (CGradient->isChecked()) takeTimer(axis);
|
||||||
}
|
}*/
|
||||||
axis->gradient = CGradient->isChecked();
|
axis->gradient = CGradient->isChecked();
|
||||||
axis->maxSpeed = SSpeed->value();
|
axis->maxSpeed = SSpeed->value();
|
||||||
axis->throttle = CThrottle->currentItem() - 1;
|
axis->throttle = CThrottle->currentIndex() - 1;
|
||||||
axis->dZone = Slider->dZone();
|
axis->dZone = Slider->dZone();
|
||||||
axis->xZone = Slider->xZone();
|
axis->xZone = Slider->xZone();
|
||||||
axis->mode = (AxisMode) CMode->currentItem();
|
axis->mode = (AxisMode) CMode->currentIndex();
|
||||||
axis->pkeycode = BPos->getValue();
|
axis->pkeycode = BPos->getValue();
|
||||||
axis->nkeycode = BNeg->getValue();
|
axis->nkeycode = BNeg->getValue();
|
||||||
axis->adjustGradient();
|
axis->adjustGradient();
|
||||||
|
@ -1,22 +1,16 @@
|
|||||||
#ifndef AXIS_EDIT_H
|
#ifndef AXIS_EDIT_H
|
||||||
#define AXIS_EDIT_H
|
#define AXIS_EDIT_H
|
||||||
|
//to refer to the axis we're editing
|
||||||
//for building up the dialog we need
|
//for building up the dialog we need
|
||||||
#include <qdialog.h>
|
#include "axis.h"
|
||||||
#include <qcheckbox.h>
|
#include <QComboBox>
|
||||||
#include <qcombobox.h>
|
#include <QSpinBox>
|
||||||
#include <qframe.h>
|
#include <QCheckBox>
|
||||||
#include <qspinbox.h>
|
#include <QLabel>
|
||||||
#include <qlayout.h>
|
|
||||||
#include <qlabel.h>
|
|
||||||
|
|
||||||
//for my home-brewed widgets
|
//for my home-brewed widgets
|
||||||
#include "joyslider.h"
|
#include "joyslider.h"
|
||||||
#include "keycode.h"
|
#include "keycode.h"
|
||||||
|
|
||||||
//to refer to the axis we're editing
|
|
||||||
#include "axis.h"
|
|
||||||
|
|
||||||
class AxisEdit : public QDialog {
|
class AxisEdit : public QDialog {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include "axisw.h"
|
#include "axisw.h"
|
||||||
|
|
||||||
|
|
||||||
AxisWidget::AxisWidget( Axis* a, QWidget* parent )
|
AxisWidget::AxisWidget( Axis* a, QWidget* parent )
|
||||||
: FlashButton( "",parent) {
|
: FlashButton( "",parent) {
|
||||||
axis = a;
|
axis = a;
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
#ifndef AXIS_WIDGET_H
|
#ifndef AXIS_WIDGET_H
|
||||||
#define AXIS_WIDGET_H
|
#define AXIS_WIDGET_H
|
||||||
|
|
||||||
|
#include <QMouseEvent>
|
||||||
//so we can interact with the axis this refers to
|
//so we can interact with the axis this refers to
|
||||||
#include "axis.h"
|
#include "axis.h"
|
||||||
//so we can edit this axis when the user clicks the button
|
|
||||||
#include "axis_edit.h"
|
|
||||||
//for the FlashButton widget
|
//for the FlashButton widget
|
||||||
#include "flash.h"
|
#include "flash.h"
|
||||||
|
|
||||||
|
//so we can edit this axis when the user clicks the button
|
||||||
|
#include "axis_edit.h"
|
||||||
|
|
||||||
class AxisWidget : public FlashButton {
|
class AxisWidget : public FlashButton {
|
||||||
public:
|
public:
|
||||||
AxisWidget( Axis* a, QWidget* parent );
|
AxisWidget( Axis* a, QWidget* parent );
|
||||||
|
@ -1,25 +1,28 @@
|
|||||||
#include "button.h"
|
#include "button.h"
|
||||||
|
#include "event.h"
|
||||||
|
|
||||||
Button::Button( int i ) {
|
Button::Button( int i ) {
|
||||||
index = i;
|
index = i;
|
||||||
isOn = false;
|
isButtonPressed = false;
|
||||||
//to keep toDefault from calling tossTimer without first calling takeTimer
|
isDown = false;
|
||||||
rapidfire = false;
|
rapidfire = false;
|
||||||
|
timer = new QTimer(this);
|
||||||
toDefault();
|
toDefault();
|
||||||
|
tick = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Button::~Button() {
|
Button::~Button() {
|
||||||
release();
|
release();
|
||||||
|
//delete timer;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Button::read( QTextStream* stream ) {
|
bool Button::read( QTextStream* stream ) {
|
||||||
// at this point, toDefault() has just been called.
|
// at this point, toDefault() has just been called.
|
||||||
|
|
||||||
//read in a line of text and break it into words
|
//read in a line of text and break it into words
|
||||||
QString input = stream->readLine().lower();
|
QString input = stream->readLine().toLower();
|
||||||
QRegExp regex("[\\s,]+");
|
QRegExp regex("[\\s,]+");
|
||||||
QStringList words = QStringList::split(regex,input);
|
QStringList words = input.split(regex);
|
||||||
|
|
||||||
//used to assure correct conversion of QStrings -> ints
|
//used to assure correct conversion of QStrings -> ints
|
||||||
bool ok;
|
bool ok;
|
||||||
@ -49,7 +52,6 @@ bool Button::read( QTextStream* stream ) {
|
|||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
else if (*it == "rapidfire") {
|
else if (*it == "rapidfire") {
|
||||||
if (rapidfire == false) takeTimer( this );
|
|
||||||
rapidfire = true;
|
rapidfire = true;
|
||||||
}
|
}
|
||||||
else if (*it == "sticky") {
|
else if (*it == "sticky") {
|
||||||
@ -77,27 +79,43 @@ void Button::jsevent( int value ) {
|
|||||||
bool newval = (value == 1);
|
bool newval = (value == 1);
|
||||||
if (sticky) {
|
if (sticky) {
|
||||||
//the state of a sticky key only changes on button press, not button release.
|
//the state of a sticky key only changes on button press, not button release.
|
||||||
if (newval) isOn = !isOn;
|
if (value == 1) {
|
||||||
|
isButtonPressed = !isButtonPressed;
|
||||||
|
}
|
||||||
else return;
|
else return;
|
||||||
}
|
}
|
||||||
//if the received event indicates a change in state,
|
//if the received event indicates a change in state,
|
||||||
else if (newval != isOn) {
|
else if (newval != isButtonPressed) {
|
||||||
isOn = newval; //change state
|
isButtonPressed = newval; //change state
|
||||||
|
if (isButtonPressed && rapidfire) {
|
||||||
|
tick = 0;
|
||||||
|
connect(timer, SIGNAL(timeout()), this, SLOT(timerCalled()));
|
||||||
|
timer->start(MSEC);
|
||||||
|
}
|
||||||
|
if (!isButtonPressed && rapidfire) {
|
||||||
|
timer->stop();
|
||||||
|
if(isDown) {
|
||||||
|
click(false);
|
||||||
|
}
|
||||||
|
tick = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//otherwise... we don't care. This shouldn't happen.
|
//otherwise... we don't care. This shouldn't happen.
|
||||||
else return;
|
else return;
|
||||||
//if rapidfire is on, then timer() will do its job. Otherwise we must
|
//if rapidfire is on, then timer() will do its job. Otherwise we must
|
||||||
//manually triger the key event.
|
//manually triger the key event.
|
||||||
if (!rapidfire) click(isOn);
|
if (!rapidfire) {
|
||||||
|
click(isButtonPressed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Button::toDefault() {
|
void Button::toDefault() {
|
||||||
if (rapidfire == true) tossTimer( this );
|
|
||||||
rapidfire = false;
|
rapidfire = false;
|
||||||
sticky = false;
|
sticky = false;
|
||||||
useMouse = false;
|
useMouse = false;
|
||||||
keycode = 0;
|
keycode = 0;
|
||||||
mousecode = 0;
|
mousecode = 0;
|
||||||
|
timer->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Button::isDefault() {
|
bool Button::isDefault() {
|
||||||
@ -128,8 +146,8 @@ void Button::setKey( bool mouse, int value ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Button::timer( int tick ) {
|
void Button::timerTick( int tick ) {
|
||||||
if (isOn) {
|
if (isButtonPressed) {
|
||||||
//originally I just clicked true and then false right after, but this
|
//originally I just clicked true and then false right after, but this
|
||||||
//was not recognized by some programs. I need a delay in between.
|
//was not recognized by some programs. I need a delay in between.
|
||||||
if (tick % FREQ == 0) {
|
if (tick % FREQ == 0) {
|
||||||
@ -154,3 +172,7 @@ void Button::click( bool press ) {
|
|||||||
//and send it.
|
//and send it.
|
||||||
sendevent( click );
|
sendevent( click );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Button::timerCalled() {
|
||||||
|
timerTick(++tick);
|
||||||
|
}
|
||||||
|
18
src/button.h
18
src/button.h
@ -1,18 +1,17 @@
|
|||||||
#ifndef BUTTON_H
|
#ifndef BUTTON_H
|
||||||
#define BUTTON_H
|
#define BUTTON_H
|
||||||
|
|
||||||
//parent of Button
|
#include <QTimer>
|
||||||
#include "component.h"
|
#include <QTextStream>
|
||||||
|
|
||||||
//to request a periodic tap on the shoulder for rapidfire
|
|
||||||
#include "timer.h"
|
|
||||||
|
|
||||||
//for getting a key name in status()
|
//for getting a key name in status()
|
||||||
#include "keycode.h"
|
#include "keycode.h"
|
||||||
|
|
||||||
//note that the Button class, unlike the axis class, does not need a release
|
//note that the Button class, unlike the axis class, does not need a release
|
||||||
//function because it releases the key as soon as it is pressed.
|
//function because it releases the key as soon as it is pressed.
|
||||||
class Button : public Component {
|
class Button : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
friend class ButtonEdit;
|
friend class ButtonEdit;
|
||||||
public:
|
public:
|
||||||
Button( int i );
|
Button( int i );
|
||||||
@ -36,23 +35,26 @@ class Button : public Component {
|
|||||||
//set the key code for this axis. Used by quickset.
|
//set the key code for this axis. Used by quickset.
|
||||||
void setKey(bool mouse, int value);
|
void setKey(bool mouse, int value);
|
||||||
//happens every MSEC (constant.h) milliseconds
|
//happens every MSEC (constant.h) milliseconds
|
||||||
void timer( int tick );
|
void timerTick( int tick );
|
||||||
protected:
|
protected:
|
||||||
//true iff this button is physically depressed.
|
//true iff this button is physically depressed.
|
||||||
bool isOn;
|
bool isButtonPressed;
|
||||||
//the index of this button on the joystick
|
//the index of this button on the joystick
|
||||||
int index;
|
int index;
|
||||||
//actually sends a key press/release
|
//actually sends a key press/release
|
||||||
virtual void click( bool press );
|
virtual void click( bool press );
|
||||||
//is a simulated key currently depressed?
|
//is a simulated key currently depressed?
|
||||||
bool isDown;
|
bool isDown;
|
||||||
|
int tick;
|
||||||
//button settings
|
//button settings
|
||||||
bool rapidfire;
|
bool rapidfire;
|
||||||
bool sticky;
|
bool sticky;
|
||||||
bool useMouse;
|
bool useMouse;
|
||||||
int keycode;
|
int keycode;
|
||||||
int mousecode; //like keycode, only mousebutton ;)
|
int mousecode; //like keycode, only mousebutton ;)
|
||||||
|
QTimer *timer;
|
||||||
|
public slots:
|
||||||
|
void timerCalled();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,13 +1,19 @@
|
|||||||
#include "button_edit.h"
|
#include "button_edit.h"
|
||||||
|
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
ButtonEdit::ButtonEdit(Button* butt)
|
ButtonEdit::ButtonEdit(Button* butt)
|
||||||
:QDialog(0,0,true) {
|
:QDialog(0) {
|
||||||
|
setModal(true);
|
||||||
//build the dialog!
|
//build the dialog!
|
||||||
button = butt;
|
button = butt;
|
||||||
setCaption("Set " + button->getName());
|
setWindowTitle("Set " + button->getName());
|
||||||
setIcon(QPixmap(ICON24));
|
setWindowIcon(QPixmap(ICON24));
|
||||||
|
|
||||||
QVBoxLayout* v = new QVBoxLayout(this, 5, 5);
|
QVBoxLayout* v = new QVBoxLayout(this);
|
||||||
|
v->setMargin(5);
|
||||||
|
v->setSpacing(5);
|
||||||
|
|
||||||
BKKey = new KeyButton( button->getName(), button->useMouse?button->mousecode:button->keycode, this, true, button->useMouse);
|
BKKey = new KeyButton( button->getName(), button->useMouse?button->mousecode:button->keycode, this, true, button->useMouse);
|
||||||
v->addWidget(BKKey);
|
v->addWidget(BKKey);
|
||||||
@ -38,12 +44,12 @@ void ButtonEdit::show() {
|
|||||||
|
|
||||||
void ButtonEdit::accept() {
|
void ButtonEdit::accept() {
|
||||||
//if the rapidfire status has changed, either request a timer or turn it down.
|
//if the rapidfire status has changed, either request a timer or turn it down.
|
||||||
if (button->rapidfire) {
|
/*if (button->rapidfire) {
|
||||||
if (!CRapid->isChecked()) tossTimer(button);
|
if (!CRapid->isChecked()) tossTimer(button);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (CRapid->isChecked()) takeTimer(button);
|
if (CRapid->isChecked()) takeTimer(button);
|
||||||
}
|
}*/
|
||||||
button->rapidfire = CRapid->isChecked();
|
button->rapidfire = CRapid->isChecked();
|
||||||
button->sticky = (CSticky->isChecked());
|
button->sticky = (CSticky->isChecked());
|
||||||
//if the user chose a mouse button...
|
//if the user chose a mouse button...
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
#ifndef BUTTON_EDIT_H
|
#ifndef BUTTON_EDIT_H
|
||||||
#define BUTTON_EDIT_H
|
#define BUTTON_EDIT_H
|
||||||
|
|
||||||
//used to build the dialog:
|
#include <QPushButton>
|
||||||
#include <qdialog.h>
|
#include <QCheckBox>
|
||||||
#include <qpushbutton.h>
|
|
||||||
#include <qcheckbox.h>
|
|
||||||
#include <qlayout.h>
|
|
||||||
|
|
||||||
//we need to edit a Button
|
//we need to edit a Button
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
|
|
||||||
|
|
||||||
//to get a new key for the button.
|
//to get a new key for the button.
|
||||||
#include "keycode.h"
|
#include "keycode.h"
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include "buttonw.h"
|
#include "buttonw.h"
|
||||||
|
|
||||||
|
|
||||||
ButtonWidget::ButtonWidget( Button* b, QWidget* parent )
|
ButtonWidget::ButtonWidget( Button* b, QWidget* parent )
|
||||||
: FlashButton( "", parent) {
|
: FlashButton( "", parent) {
|
||||||
button = b;
|
button = b;
|
||||||
|
@ -7,6 +7,11 @@
|
|||||||
#include "button_edit.h"
|
#include "button_edit.h"
|
||||||
//this IS a FlashButton
|
//this IS a FlashButton
|
||||||
#include "flash.h"
|
#include "flash.h"
|
||||||
|
#ifdef Bool
|
||||||
|
#undef Bool
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <QMouseEvent>
|
||||||
|
|
||||||
class ButtonWidget : public FlashButton {
|
class ButtonWidget : public FlashButton {
|
||||||
public:
|
public:
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
#ifndef COMPONENT_H
|
|
||||||
#define COMPONENT_H
|
|
||||||
|
|
||||||
|
|
||||||
//for parsing data from a file
|
|
||||||
#include <qstringlist.h>
|
|
||||||
#include <qtextstream.h>
|
|
||||||
#include <qregexp.h>
|
|
||||||
|
|
||||||
//parent of Component
|
|
||||||
#include <qobject.h>
|
|
||||||
|
|
||||||
#include "event.h"
|
|
||||||
#include "constant.h"
|
|
||||||
|
|
||||||
|
|
||||||
//just a general blanket class to cover Button and Axis
|
|
||||||
//it is completely worthless in itself.
|
|
||||||
class Component : public QObject {
|
|
||||||
public:
|
|
||||||
virtual bool read( QTextStream* ) {return true; };
|
|
||||||
virtual void write( QTextStream* ) {};
|
|
||||||
virtual void release() {};
|
|
||||||
virtual void jsevent( int ) {};
|
|
||||||
virtual void toDefault() {};
|
|
||||||
virtual bool isDefault() { return true; };
|
|
||||||
virtual QString getName() { return ""; };
|
|
||||||
virtual QString status() { return ""; };
|
|
||||||
virtual void timer( int ) {};
|
|
||||||
protected:
|
|
||||||
bool isOn;
|
|
||||||
bool isDown;
|
|
||||||
int index;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -24,4 +24,6 @@
|
|||||||
|
|
||||||
#define NAME "QJoyPad 3.4"
|
#define NAME "QJoyPad 3.4"
|
||||||
|
|
||||||
|
#define MOUSE_OFFSET 400
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
#ifndef JOY_DEVICE_H
|
#ifndef JOY_DEVICE_H
|
||||||
#define JOY_DEVICE_H
|
#define JOY_DEVICE_H
|
||||||
|
|
||||||
#include <qintdict.h>
|
|
||||||
#include "joypad.h"
|
#include "joypad.h"
|
||||||
|
|
||||||
//the purpose of this file is to make device information available to what
|
//the purpose of this file is to make device information available to what
|
||||||
//needs it.
|
//needs it.
|
||||||
|
|
||||||
//a collection of joysticks currently available on this computer
|
//a collection of joysticks currently available on this computer
|
||||||
extern QIntDict<JoyPad> available;
|
extern QHash<int, JoyPad*> available;
|
||||||
|
|
||||||
//a collection of joypad objects representing all the available joysticks
|
//a collection of joypad objects representing all the available joysticks
|
||||||
//as well as the ones defined in a layout buy not currently plugged in.
|
//as well as the ones defined in a layout buy not currently plugged in.
|
||||||
extern QIntDict<JoyPad> joypads;
|
extern QHash<int, JoyPad*> joypads;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
static void error(QString type, QString message ) {
|
static void error(QString type, QString message ) {
|
||||||
QMessageBox::warning(0,NAME" - " + type,
|
QMessageBox::warning(0,NAME" - " + type,
|
||||||
message, QMessageBox::Ok, QMessageBox::NoButton);
|
message, QMessageBox::Ok, Qt::NoButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -13,7 +13,7 @@ void sendevent( xevent e ) {
|
|||||||
if (e.type == KREL || e.type == KPRESS) {
|
if (e.type == KREL || e.type == KPRESS) {
|
||||||
XTestFakeKeyEvent(display, e.value1, (e.type == KPRESS), 0);
|
XTestFakeKeyEvent(display, e.value1, (e.type == KPRESS), 0);
|
||||||
}
|
}
|
||||||
else if (e.type == BREL | e.type == BPRESS) {
|
else if (e.type == BREL || e.type == BPRESS) {
|
||||||
XTestFakeButtonEvent(display, e.value1, (e.type == BPRESS), 0);
|
XTestFakeButtonEvent(display, e.value1, (e.type == BPRESS), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,30 @@
|
|||||||
#include "flash.h"
|
#include "flash.h"
|
||||||
|
//Added by qt3to4:
|
||||||
|
|
||||||
//Modified here (and in .h) to not have default arguments for 2 and 3.
|
//Modified here (and in .h) to not have default arguments for 2 and 3.
|
||||||
//This caused an error with a development version of g++ on a Mandrake system
|
//This caused an error with a development version of g++ on a Mandrake system
|
||||||
//in Sweden.
|
//in Sweden.
|
||||||
FlashButton::FlashButton( QString text, QWidget* parent, QString name )
|
FlashButton::FlashButton( QString text, QWidget* parent, QString name )
|
||||||
:QPushButton( text, parent, name )
|
:QPushButton( text, parent )
|
||||||
{
|
{
|
||||||
|
this->setObjectName(name);
|
||||||
//record the base palette for posterity.
|
//record the base palette for posterity.
|
||||||
Normal = palette();
|
Normal = palette();
|
||||||
|
|
||||||
//define the palette the button will have when it flashes.
|
//define the palette the button will have when it flashes.
|
||||||
QColorGroup cg = this->palette().inactive();
|
QPalette cg = this->palette();
|
||||||
cg.setColor(QColorGroup::Button, HIGHLIGHT);
|
cg.setCurrentColorGroup(QPalette::Inactive);
|
||||||
cg.setColor(QColorGroup::Light, HIGHLIGHT.light(150));
|
cg.setColor(QPalette::Button, HIGHLIGHT);
|
||||||
cg.setColor(QColorGroup::Midlight, HIGHLIGHT.light(125));
|
cg.setColor(QPalette::Light, HIGHLIGHT.light(150));
|
||||||
cg.setColor(QColorGroup::Dark, HIGHLIGHT.dark(200));
|
cg.setColor(QPalette::Midlight, HIGHLIGHT.light(125));
|
||||||
cg.setColor(QColorGroup::Mid, HIGHLIGHT.dark(150));
|
cg.setColor(QPalette::Dark, HIGHLIGHT.dark(200));
|
||||||
Flash = QPalette(cg,cg,cg);
|
cg.setColor(QPalette::Mid, HIGHLIGHT.dark(150));
|
||||||
|
Flash = cg;
|
||||||
isflash=false;
|
isflash=false;
|
||||||
|
|
||||||
setAutoDefault( false );
|
setAutoDefault( false );
|
||||||
setFocusPolicy(QWidget::NoFocus);
|
setFocusPolicy(Qt::NoFocus);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlashButton::flash()
|
void FlashButton::flash()
|
||||||
@ -39,21 +43,18 @@ void FlashButton::flash()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FlashRadioArray::FlashRadioArray( int count, QString names[], bool horizontal, QWidget* parent)
|
FlashRadioArray::FlashRadioArray( int count, QString names[], bool horizontal, QWidget* parent)
|
||||||
:QWidget( parent )
|
:QWidget( parent )
|
||||||
{
|
{
|
||||||
if (horizontal)
|
if (horizontal) {
|
||||||
LMain = new QHBoxLayout( this, 5, 5 );
|
LMain = new QHBoxLayout( this);
|
||||||
else
|
LMain->setMargin(5);
|
||||||
LMain = new QVBoxLayout( this, 5, 5 );
|
LMain->setSpacing(5);
|
||||||
LMain->setAutoAdd( true );
|
} else {
|
||||||
|
LMain = new QVBoxLayout( this);
|
||||||
|
LMain->setMargin(5);
|
||||||
|
LMain->setSpacing(5);
|
||||||
|
}
|
||||||
|
|
||||||
Buttons = new FlashButton*[count];
|
Buttons = new FlashButton*[count];
|
||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
@ -61,6 +62,7 @@ FlashRadioArray::FlashRadioArray( int count, QString names[], bool horizontal, Q
|
|||||||
Buttons[i] = new FlashButton( names[i], this, "" );
|
Buttons[i] = new FlashButton( names[i], this, "" );
|
||||||
//when any of the buttons is clicked, it calls the same function on this.
|
//when any of the buttons is clicked, it calls the same function on this.
|
||||||
connect( Buttons[i], SIGNAL( clicked() ), this, SLOT( clicked() ));
|
connect( Buttons[i], SIGNAL( clicked() ), this, SLOT( clicked() ));
|
||||||
|
LMain->addWidget(Buttons[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Count = count;
|
Count = count;
|
||||||
|
@ -15,8 +15,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <qpushbutton.h>
|
#include <QPushButton>
|
||||||
#include <qlayout.h>
|
#include <QPalette>
|
||||||
|
#include <QBoxLayout>
|
||||||
|
|
||||||
|
|
||||||
//A QPushButton that can flash a color
|
//A QPushButton that can flash a color
|
||||||
|
15
src/icon.cpp
15
src/icon.cpp
@ -1,11 +1,14 @@
|
|||||||
#include "icon.h"
|
#include "icon.h"
|
||||||
|
|
||||||
#include <qpopupmenu.h>
|
|
||||||
|
|
||||||
FloatingIcon::FloatingIcon( const QPixmap &icon, QPopupMenu *popup, QWidget *parent, const char *name)
|
FloatingIcon::FloatingIcon( const QPixmap &icon, QMenu *popup, QWidget *parent, const char *name)
|
||||||
: QDialog( parent, name ) {
|
: QDialog( parent ) {
|
||||||
setCaption(NAME);
|
this->setObjectName(name);
|
||||||
setPaletteBackgroundPixmap(icon);
|
setWindowTitle(NAME);
|
||||||
|
QPalette palette;
|
||||||
|
palette.setBrush(backgroundRole(), QBrush(icon));
|
||||||
|
setPalette(palette);
|
||||||
|
//setPaletteBackgroundPixmap(icon);
|
||||||
pop = popup;
|
pop = popup;
|
||||||
|
|
||||||
setFixedSize(64,64);
|
setFixedSize(64,64);
|
||||||
@ -13,7 +16,7 @@ FloatingIcon::FloatingIcon( const QPixmap &icon, QPopupMenu *popup, QWidget *par
|
|||||||
|
|
||||||
void FloatingIcon::mousePressEvent( QMouseEvent* e ) {
|
void FloatingIcon::mousePressEvent( QMouseEvent* e ) {
|
||||||
//if it was the right mouse button,
|
//if it was the right mouse button,
|
||||||
if (e->button() == RightButton) {
|
if (e->button() == Qt::RightButton) {
|
||||||
//bring up the popup menu.
|
//bring up the popup menu.
|
||||||
pop->popup( e->globalPos() );
|
pop->popup( e->globalPos() );
|
||||||
e->accept();
|
e->accept();
|
||||||
|
16
src/icon.h
16
src/icon.h
@ -1,27 +1,25 @@
|
|||||||
#ifndef JOY_ICON_H
|
#ifndef JOY_ICON_H
|
||||||
#define JOY_ICON_H
|
#define JOY_ICON_H
|
||||||
|
|
||||||
//for creating a floating icon in notray mode :)
|
#include <QDialog>
|
||||||
#include <qdialog.h>
|
#include <QMenu>
|
||||||
//the pixmap to load
|
#include <QPixmap>
|
||||||
#include <qpixmap.h>
|
#include <QMouseEvent>
|
||||||
|
#include <QCloseEvent>
|
||||||
|
|
||||||
#include "constant.h"
|
#include "constant.h"
|
||||||
|
|
||||||
//A quirk in QT forbids me from simply including qpopupmenu.h
|
|
||||||
class QPopupMenu;
|
|
||||||
|
|
||||||
class FloatingIcon : public QDialog {
|
class FloatingIcon : public QDialog {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
FloatingIcon( const QPixmap &icon, QPopupMenu *popup = 0, QWidget *parent = 0, const char *name = 0);
|
FloatingIcon( const QPixmap &icon, QMenu *popup = 0, QWidget *parent = 0, const char *name = 0);
|
||||||
signals:
|
signals:
|
||||||
void closed();
|
void closed();
|
||||||
void clicked();
|
void clicked();
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent( QMouseEvent* e );
|
void mousePressEvent( QMouseEvent* e );
|
||||||
void closeEvent( QCloseEvent* e );
|
void closeEvent( QCloseEvent* e );
|
||||||
QPopupMenu* pop;
|
QMenu* pop;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,39 +1,48 @@
|
|||||||
#include "joypadw.h"
|
#include "joypadw.h"
|
||||||
|
//Added by qt3to4:
|
||||||
|
|
||||||
JoyPadWidget::JoyPadWidget( JoyPad* jp, int i, QWidget* parent )
|
JoyPadWidget::JoyPadWidget( JoyPad* jp, int i, QWidget* parent )
|
||||||
: QWidget(parent) {
|
: QWidget(parent) {
|
||||||
//initialize things, build the dialog
|
//initialize things, build the dialog
|
||||||
joypad = jp;
|
joypad = jp;
|
||||||
index = i;
|
index = i;
|
||||||
LMain = new QGridLayout(this, (joypad->axes+1)/2 +(joypad->buttons+1)/2 + 2, 2, 5, 5);
|
/* This was in below, no idea what it does :( ...
|
||||||
LMain->setAutoAdd( true );
|
* (joypad->axes+1)/2 +(joypad->buttons+1)/2 + 2
|
||||||
|
*/
|
||||||
|
LMain = new QGridLayout(this);
|
||||||
|
LMain->setSpacing(5);
|
||||||
|
LMain->setMargin(5);
|
||||||
flashcount = 0;
|
flashcount = 0;
|
||||||
|
int insertCounter = 0;
|
||||||
quickset = NULL;
|
quickset = NULL;
|
||||||
|
|
||||||
Axes = new AxisWidget*[joypad->axes];
|
Axes = new AxisWidget*[joypad->axes];
|
||||||
for (int i = 0; i < joypad->axes; i++) {
|
for (int i = 0; i < joypad->axes; i++) {
|
||||||
Axes[i] = new AxisWidget(joypad->Axes[i],this);
|
Axes[i] = new AxisWidget(joypad->Axes[i],this);
|
||||||
connect( Axes[i], SIGNAL( flashed( bool ) ), this, SLOT( flash( bool )));
|
connect( Axes[i], SIGNAL( flashed( bool ) ), this, SLOT( flash( bool )));
|
||||||
}
|
LMain->addWidget(Axes[i], insertCounter / 2, insertCounter %2);
|
||||||
if (joypad->axes % 2 == 1) {
|
insertCounter++;
|
||||||
new QWidget(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Buttons = new ButtonWidget*[joypad->buttons];
|
Buttons = new ButtonWidget*[joypad->buttons];
|
||||||
for (int i = 0; i < joypad->buttons; i++) {
|
for (int i = 0; i < joypad->buttons; i++) {
|
||||||
Buttons[i] = new ButtonWidget(joypad->Buttons[i],this);
|
Buttons[i] = new ButtonWidget(joypad->Buttons[i],this);
|
||||||
connect( Buttons[i], SIGNAL( flashed( bool ) ), this, SLOT( flash( bool )));
|
connect( Buttons[i], SIGNAL( flashed( bool ) ), this, SLOT( flash( bool )));
|
||||||
}
|
LMain->addWidget(Buttons[i], insertCounter/2, insertCounter%2);
|
||||||
if (joypad->buttons % 2 == 1) {
|
insertCounter++;
|
||||||
new QWidget(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
new QWidget(this);
|
|
||||||
new QWidget(this);
|
|
||||||
|
|
||||||
|
if(insertCounter % 2 == 1) {
|
||||||
|
insertCounter++;
|
||||||
|
}
|
||||||
|
insertCounter+=2;
|
||||||
BClear = new QPushButton("Clear", this);
|
BClear = new QPushButton("Clear", this);
|
||||||
connect(BClear, SIGNAL(clicked()), this, SLOT(clear()));
|
connect(BClear, SIGNAL(clicked()), this, SLOT(clear()));
|
||||||
|
LMain->addWidget(BClear, insertCounter / 2, insertCounter %2);
|
||||||
|
insertCounter++;
|
||||||
BAll = new QPushButton("Quick Set", this);
|
BAll = new QPushButton("Quick Set", this);
|
||||||
|
LMain->addWidget(BAll, insertCounter /2, insertCounter%2);
|
||||||
connect(BAll, SIGNAL(clicked()), this, SLOT(setAll()));
|
connect(BAll, SIGNAL(clicked()), this, SLOT(setAll()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
#define JOYPAD_WIDGET_H
|
#define JOYPAD_WIDGET_H
|
||||||
|
|
||||||
//parts for the widget
|
//parts for the widget
|
||||||
#include <qpushbutton.h>
|
//Added by qt3to4:
|
||||||
#include <qlayout.h>
|
|
||||||
|
|
||||||
|
#include <linux/joystick.h>
|
||||||
|
#include "axisw.h"
|
||||||
//this all relates to a JoyPad
|
//this all relates to a JoyPad
|
||||||
#include "joypad.h"
|
#include "joypad.h"
|
||||||
//and a JoyPadWidget is composed of AxisWidgets and ButtonWidgets
|
//and a JoyPadWidget is composed of AxisWidgets and ButtonWidgets
|
||||||
#include "axisw.h"
|
|
||||||
#include "buttonw.h"
|
#include "buttonw.h"
|
||||||
//JoyPadWidget also is what initiates the whole QuickSet procedure :)
|
//JoyPadWidget also is what initiates the whole QuickSet procedure :)
|
||||||
#include "quickset.h"
|
#include "quickset.h"
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "joyslider.h"
|
#include "joyslider.h"
|
||||||
|
//Added by qt3to4:
|
||||||
|
|
||||||
JoySlider::JoySlider( int dz, int xz, int val, QWidget* parent )
|
JoySlider::JoySlider( int dz, int xz, int val, QWidget* parent )
|
||||||
:QWidget( parent )
|
:QWidget( parent )
|
||||||
@ -87,23 +88,23 @@ void JoySlider::drawBox( int x, int width ) {
|
|||||||
//widget but is defined by x-coordinate and width
|
//widget but is defined by x-coordinate and width
|
||||||
QPainter paint( this );
|
QPainter paint( this );
|
||||||
|
|
||||||
paint.setPen( (isEnabled())?white:colorGroup().background() );
|
paint.setPen( (isEnabled())?Qt::white:palette().background().color() );
|
||||||
paint.setBrush( (isEnabled())?white:colorGroup().background() );
|
paint.setBrush( (isEnabled())?Qt::white:palette().background() );
|
||||||
paint.drawRect( x, 1, width, boxheight);
|
paint.drawRect( x, 1, width, boxheight);
|
||||||
|
|
||||||
paint.setPen( colorGroup().dark() );
|
paint.setPen( palette().dark().color() );
|
||||||
paint.drawLine( x, 1 + boxheight, x, 1 );
|
paint.drawLine( x, 1 + boxheight, x, 1 );
|
||||||
paint.drawLine( x, 1, x + width - 1, 1);
|
paint.drawLine( x, 1, x + width - 1, 1);
|
||||||
|
|
||||||
paint.setPen( colorGroup().shadow() );
|
paint.setPen( palette().shadow().color() );
|
||||||
paint.drawLine( x + 1, 1 + boxheight - 1, x + 1, 2);
|
paint.drawLine( x + 1, 1 + boxheight - 1, x + 1, 2);
|
||||||
paint.drawLine( x + 1, 2, x + width - 2, 2);
|
paint.drawLine( x + 1, 2, x + width - 2, 2);
|
||||||
|
|
||||||
paint.setPen( colorGroup().light() );
|
paint.setPen( palette().light().color() );
|
||||||
paint.drawLine( x + 2, 1 + boxheight - 1, x + width - 1, 1 + boxheight - 1);
|
paint.drawLine( x + 2, 1 + boxheight - 1, x + width - 1, 1 + boxheight - 1);
|
||||||
paint.drawLine( x + width - 1, 1 + boxheight - 1, x + width - 1, 2);
|
paint.drawLine( x + width - 1, 1 + boxheight - 1, x + width - 1, 2);
|
||||||
|
|
||||||
paint.setPen( colorGroup().midlight() );
|
paint.setPen( palette().midlight().color() );
|
||||||
paint.drawLine( x + 1, 1 + boxheight, x + width, 1 + boxheight );
|
paint.drawLine( x + 1, 1 + boxheight, x + width, 1 + boxheight );
|
||||||
paint.drawLine( x + width, 1 + boxheight, x + width, 1 );
|
paint.drawLine( x + width, 1 + boxheight, x + width, 1 );
|
||||||
}
|
}
|
||||||
@ -129,9 +130,9 @@ void JoySlider::paintEvent( QPaintEvent* )
|
|||||||
|
|
||||||
//prepare to draw a bar of the appropriate color
|
//prepare to draw a bar of the appropriate color
|
||||||
QColor bar;
|
QColor bar;
|
||||||
if (abs(JoyVal) < DeadZone) bar = gray;
|
if (abs(JoyVal) < DeadZone) bar = Qt::gray;
|
||||||
else if (abs(JoyVal) < XZone) bar = blue;
|
else if (abs(JoyVal) < XZone) bar = Qt::blue;
|
||||||
else bar = red;
|
else bar = Qt::red;
|
||||||
paint.setPen( bar );
|
paint.setPen( bar );
|
||||||
paint.setBrush( bar );
|
paint.setBrush( bar );
|
||||||
|
|
||||||
@ -148,10 +149,10 @@ void JoySlider::paintEvent( QPaintEvent* )
|
|||||||
//but we need two if we're not. However, it's important to draw the right
|
//but we need two if we're not. However, it's important to draw the right
|
||||||
//set of tabs depending on the mode! Negative throttle gets negative tabs.
|
//set of tabs depending on the mode! Negative throttle gets negative tabs.
|
||||||
int point;
|
int point;
|
||||||
QPointArray shape;
|
QPolygon shape;
|
||||||
|
|
||||||
paint.setPen( black );
|
paint.setPen( Qt::black );
|
||||||
paint.setBrush( blue );
|
paint.setBrush( Qt::blue );
|
||||||
if (throttle >= 0) {
|
if (throttle >= 0) {
|
||||||
point = pointFor(DeadZone, false);
|
point = pointFor(DeadZone, false);
|
||||||
shape.putPoints(0,5,
|
shape.putPoints(0,5,
|
||||||
@ -176,7 +177,7 @@ void JoySlider::paintEvent( QPaintEvent* )
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
paint.setBrush( red );
|
paint.setBrush( Qt::red );
|
||||||
if (throttle >= 0) {
|
if (throttle >= 0) {
|
||||||
point = pointFor(XZone, false);
|
point = pointFor(XZone, false);
|
||||||
shape.putPoints(0,5,
|
shape.putPoints(0,5,
|
||||||
|
@ -2,12 +2,17 @@
|
|||||||
#define Q_JOYSLIDER_H
|
#define Q_JOYSLIDER_H
|
||||||
|
|
||||||
//the parent of this
|
//the parent of this
|
||||||
#include <qwidget.h>
|
|
||||||
//for drawing the widget :)
|
|
||||||
#include <qpainter.h>
|
|
||||||
//for abs()
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <QResizeEvent>
|
||||||
|
#include <QPaintEvent>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QFrame>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QComboBox>
|
||||||
|
#include <QSpinBox>
|
||||||
#include "constant.h"
|
#include "constant.h"
|
||||||
|
|
||||||
//dragging constants.
|
//dragging constants.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include "keycode.h"
|
#include "keycode.h"
|
||||||
|
#include "getkey.h"
|
||||||
|
|
||||||
const QString ktos( int keycode )
|
const QString ktos( int keycode )
|
||||||
{
|
{
|
||||||
@ -21,7 +21,7 @@ const QString ktos( int keycode )
|
|||||||
QRegExp rx;
|
QRegExp rx;
|
||||||
rx.setPattern("^\\w$");
|
rx.setPattern("^\\w$");
|
||||||
//"a-z" -> "A-Z"
|
//"a-z" -> "A-Z"
|
||||||
if (rx.exactMatch(xname)) return xname.upper();
|
if (rx.exactMatch(xname)) return xname.toUpper();
|
||||||
|
|
||||||
rx.setPattern("(.*)_(.*)");
|
rx.setPattern("(.*)_(.*)");
|
||||||
if (rx.exactMatch(xname)) {
|
if (rx.exactMatch(xname)) {
|
||||||
@ -78,71 +78,6 @@ const QString ktos( int keycode )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GetKey::GetKey( QString button, bool m )
|
|
||||||
:QDialog( )
|
|
||||||
{
|
|
||||||
//prepare the dialog
|
|
||||||
mouse = m;
|
|
||||||
setCaption( "Choose a key" );
|
|
||||||
setIcon(QPixmap(ICON24));
|
|
||||||
|
|
||||||
//I'd use a QLabel, but that steals x11Events!
|
|
||||||
//So, I'll draw the text directly. That means
|
|
||||||
//I need to resolve the size of the dialog by hand:
|
|
||||||
Text = "Choose a new key ";
|
|
||||||
if (mouse) Text += "or mouse button ";
|
|
||||||
Text += "for " + button;
|
|
||||||
QRect rect = fontMetrics().boundingRect( Text );
|
|
||||||
//I calculate the size based on the first line of text, which is longer.
|
|
||||||
//The fontMetrics function is dumb and would treat the string with a
|
|
||||||
//newline in it as a continues flow of characters if I did the whole string
|
|
||||||
//at once.
|
|
||||||
Text += "\n(Ctrl-X for no key)";
|
|
||||||
//now I add 20 pixels of padding and double the height to make room for
|
|
||||||
//two lines.
|
|
||||||
setFixedSize( QSize( rect.width() + 20, rect.height()*2 + 20 ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetKey::x11Event( XEvent* e )
|
|
||||||
{
|
|
||||||
//keep Qt from closing the dialog upon seeing Esc pressed.
|
|
||||||
if (e->type == KeyPress) return true;
|
|
||||||
|
|
||||||
//On a key press, return the key and quit
|
|
||||||
//Ctrl+X == [No Key]
|
|
||||||
if (e->type == KeyRelease) {
|
|
||||||
if (XKeycodeToKeysym(display,e->xkey.keycode,0) == XK_x ) {
|
|
||||||
if (e->xkey.state & ControlMask) done( 0 );
|
|
||||||
else done( e->xkey.keycode );
|
|
||||||
}
|
|
||||||
else done( e->xkey.keycode );
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
//if we're accepting mouse clicks and a mouse button was clicked...
|
|
||||||
if (mouse && e->type == ButtonRelease) {
|
|
||||||
done ( e->xbutton.button + MOUSE_OFFSET);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//any other events we will pass on to the dialog. This allows for closing
|
|
||||||
//the window and easy redrawing :)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GetKey::paintEvent ( QPaintEvent * ) {
|
|
||||||
//whenever we need to repaint, draw in our text.
|
|
||||||
QPainter paint( this );
|
|
||||||
paint.drawText( rect(), AlignCenter, Text );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
KeyButton::KeyButton( QString name, int val, QWidget* parent, bool m, bool nowMouse)
|
KeyButton::KeyButton( QString name, int val, QWidget* parent, bool m, bool nowMouse)
|
||||||
:QPushButton(nowMouse?"Mouse " + QString::number(val):QString(ktos(val)), parent) {
|
:QPushButton(nowMouse?"Mouse " + QString::number(val):QString(ktos(val)), parent) {
|
||||||
mouse = m;
|
mouse = m;
|
||||||
|
@ -2,21 +2,11 @@
|
|||||||
#define KEYCODE_H
|
#define KEYCODE_H
|
||||||
|
|
||||||
//To create the "press a key" dialog:
|
//To create the "press a key" dialog:
|
||||||
#include <qdialog.h>
|
#include <QPushButton>
|
||||||
#include <qpainter.h>
|
#include <QDialog>
|
||||||
|
#include <QPaintEvent>
|
||||||
|
#include <QPainter>
|
||||||
|
|
||||||
//For the KeyButton widget
|
|
||||||
#include <qpushbutton.h>
|
|
||||||
|
|
||||||
//For converting X Windows key names to something nicer.
|
|
||||||
#include <qregexp.h>
|
|
||||||
|
|
||||||
//Defines constants needed for x11Event
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
//The KeySym for "x"
|
|
||||||
#define XK_x 0x078
|
|
||||||
|
|
||||||
#define MOUSE_OFFSET 400
|
|
||||||
|
|
||||||
#include "constant.h"
|
#include "constant.h"
|
||||||
|
|
||||||
@ -26,23 +16,6 @@ const QString ktos( int keycode );
|
|||||||
//The X11 display, taken from main.cpp
|
//The X11 display, taken from main.cpp
|
||||||
extern Display* display;
|
extern Display* display;
|
||||||
|
|
||||||
//a keycode dialog box
|
|
||||||
class GetKey : public QDialog {
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
GetKey( QString button, bool m = false );
|
|
||||||
protected:
|
|
||||||
//to filter through every event this thing sees, before QT does.
|
|
||||||
bool x11Event( XEvent* e );
|
|
||||||
//to avoid focus issues, there is only the dialog widget, all the
|
|
||||||
//rest is painted on. So, I need to know when to repaint.
|
|
||||||
void paintEvent ( QPaintEvent * );
|
|
||||||
private:
|
|
||||||
//the dialog's message
|
|
||||||
QString Text;
|
|
||||||
//does this dialog accept mouse clicks?
|
|
||||||
bool mouse;
|
|
||||||
};
|
|
||||||
|
|
||||||
//a button that requests a keycode from the user when clicked.
|
//a button that requests a keycode from the user when clicked.
|
||||||
class KeyButton : public QPushButton {
|
class KeyButton : public QPushButton {
|
||||||
|
30
src/layout.h
30
src/layout.h
@ -1,22 +1,6 @@
|
|||||||
#ifndef JOY_LAYOUT_H
|
#ifndef JOY_LAYOUT_H
|
||||||
#define JOY_LAYOUT_H
|
#define JOY_LAYOUT_H
|
||||||
|
|
||||||
//for file i/o
|
|
||||||
#include <qdir.h>
|
|
||||||
#include <qfile.h>
|
|
||||||
#include <qtextstream.h>
|
|
||||||
#include <qstringlist.h>
|
|
||||||
|
|
||||||
//to get a name for a new layout
|
|
||||||
#include <qinputdialog.h>
|
|
||||||
|
|
||||||
//qpopup is a REAL pain to include ;) This is because of some
|
|
||||||
//odd complications and reciprocalities in QT... unfortunately, this is the
|
|
||||||
//best way I've found to get around it.
|
|
||||||
#ifndef MAIN
|
|
||||||
//the layout manager is responsible for the tray icon and its popup
|
|
||||||
#include <qpopupmenu.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//to allow for interprocess communications (ie, signaling a running instance of
|
//to allow for interprocess communications (ie, signaling a running instance of
|
||||||
//qjoypad by running "qjoypad layout-name", etc.) QJoyPad uses signals to
|
//qjoypad by running "qjoypad layout-name", etc.) QJoyPad uses signals to
|
||||||
@ -24,6 +8,14 @@
|
|||||||
//the joystick device list.
|
//the joystick device list.
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QInputDialog>
|
||||||
|
#include <poll.h>
|
||||||
|
|
||||||
//a layout handles several joypads
|
//a layout handles several joypads
|
||||||
#include "joypad.h"
|
#include "joypad.h"
|
||||||
//for errors
|
//for errors
|
||||||
@ -41,7 +33,7 @@
|
|||||||
#define NL "[NO LAYOUT]"
|
#define NL "[NO LAYOUT]"
|
||||||
|
|
||||||
//where QJoyPad saves its settings!
|
//where QJoyPad saves its settings!
|
||||||
const QString settingsDir(QDir::homeDirPath() + "/.qjoypad3/");
|
const QString settingsDir(QDir::homePath() + "/.qjoypad3/");
|
||||||
|
|
||||||
//handles loading, saving, and changing of layouts
|
//handles loading, saving, and changing of layouts
|
||||||
class LayoutManager : public QObject {
|
class LayoutManager : public QObject {
|
||||||
@ -74,7 +66,7 @@ class LayoutManager : public QObject {
|
|||||||
//when the tray icon is clicked
|
//when the tray icon is clicked
|
||||||
void trayClick();
|
void trayClick();
|
||||||
//when the user selects an item on the tray's popup menu
|
//when the user selects an item on the tray's popup menu
|
||||||
void trayMenu(int id);
|
void trayMenu(QAction* menuItemAction);
|
||||||
//rebuild the popup menu with the current information
|
//rebuild the popup menu with the current information
|
||||||
void fillPopup();
|
void fillPopup();
|
||||||
//update the list of available joystick devices
|
//update the list of available joystick devices
|
||||||
@ -87,7 +79,7 @@ class LayoutManager : public QObject {
|
|||||||
//the layout that is currently in use
|
//the layout that is currently in use
|
||||||
QString CurrentLayout;
|
QString CurrentLayout;
|
||||||
//the popup menu from the tray/floating icon
|
//the popup menu from the tray/floating icon
|
||||||
QPopupMenu* Popup;
|
QMenu* Popup;
|
||||||
|
|
||||||
//if there is a LayoutEdit open, this points to it. Otherwise, NULL.
|
//if there is a LayoutEdit open, this points to it. Otherwise, NULL.
|
||||||
LayoutEdit* le;
|
LayoutEdit* le;
|
||||||
|
65
src/loop.cpp
65
src/loop.cpp
@ -1,65 +0,0 @@
|
|||||||
#include "loop.h"
|
|
||||||
|
|
||||||
JoyLoop::JoyLoop() {
|
|
||||||
//I like to start from zero, though, in all honesty, this doesn't matter.
|
|
||||||
tick = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool JoyLoop::processEvents( ProcessEventsFlags ) {
|
|
||||||
//standard event processing, except we get to throw in a few things of
|
|
||||||
//our own!
|
|
||||||
|
|
||||||
int joydev;
|
|
||||||
JoyPad* pad;
|
|
||||||
js_event msg;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
//go through the currently plugged-in joysticks
|
|
||||||
QIntDictIterator<JoyPad> it( available );
|
|
||||||
for ( ; it.current(); ++it ) {
|
|
||||||
pad = it.current();
|
|
||||||
//get the file descriptor for the device
|
|
||||||
joydev = pad->joydev;
|
|
||||||
//and try reading an event, non-blocking
|
|
||||||
len = read( joydev, &msg, sizeof(js_event));
|
|
||||||
//if there was a real event waiting,
|
|
||||||
if (len == (int) sizeof(js_event)) {
|
|
||||||
//pass that event on to the joypad!
|
|
||||||
pad->jsevent(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//sleep for a moment. This is just to keep us from throwing all the
|
|
||||||
//available processer power into madly checking for new events.
|
|
||||||
usleep(1);
|
|
||||||
|
|
||||||
//now we can let QT process all of its events, like GUI events and timers.
|
|
||||||
return QEventLoop::processEvents(AllEvents);
|
|
||||||
}
|
|
||||||
|
|
||||||
void JoyLoop::takeTimer( Component* c ) {
|
|
||||||
//if this is the first Component asking for a timer, then we can start
|
|
||||||
//up the timer! It isn't running unless someone needs it.
|
|
||||||
if (timerList.isEmpty()) startTimer( MSEC );
|
|
||||||
//remember this Component so we can signal it.
|
|
||||||
timerList.append( c );
|
|
||||||
}
|
|
||||||
|
|
||||||
void JoyLoop::tossTimer( Component* c ) {
|
|
||||||
//forget that Component, it doesn't NEED us any more :(
|
|
||||||
timerList.remove( c );
|
|
||||||
//if that means there are no longer any Components listening for timer
|
|
||||||
//events, then we can go ahead and stop timing.
|
|
||||||
if (timerList.isEmpty()) killTimers();
|
|
||||||
}
|
|
||||||
|
|
||||||
void JoyLoop::timerEvent( QTimerEvent* ) {
|
|
||||||
//ever MSEC miliseconds...
|
|
||||||
|
|
||||||
//increment the counter (used for timing in axis.cpp and button.cpp)
|
|
||||||
++tick;
|
|
||||||
//and notify every Component in the list.
|
|
||||||
for ( Component* c = timerList.first(); c; c = timerList.next() ) {
|
|
||||||
c->timer(tick);
|
|
||||||
}
|
|
||||||
}
|
|
39
src/loop.h
39
src/loop.h
@ -1,39 +0,0 @@
|
|||||||
#ifndef JOY_LOOP_H
|
|
||||||
#define JOY_LOOP_H
|
|
||||||
|
|
||||||
//this is an event loop
|
|
||||||
#include <qeventloop.h>
|
|
||||||
|
|
||||||
//for reading events from the joysticks
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <linux/joystick.h>
|
|
||||||
|
|
||||||
//to pass events on to the joypads
|
|
||||||
#include "joypad.h"
|
|
||||||
//to know which devices need to be checked for joystick events
|
|
||||||
#include "device.h"
|
|
||||||
|
|
||||||
//A Component is either an Axis or a Button
|
|
||||||
class Component;
|
|
||||||
|
|
||||||
//the main event loop of QJoyPad; its main distinction from a regular event loop
|
|
||||||
//is that it reads joystick events on every iteration and also provides a timer
|
|
||||||
//to any Components that need it.
|
|
||||||
class JoyLoop : public QEventLoop {
|
|
||||||
public:
|
|
||||||
JoyLoop();
|
|
||||||
bool processEvents( ProcessEventsFlags );
|
|
||||||
//provide a timer to the requesting Component
|
|
||||||
void takeTimer( Component* c );
|
|
||||||
//stop providing a timer to the given Component
|
|
||||||
void tossTimer( Component* c );
|
|
||||||
protected:
|
|
||||||
//happens ever MSEC miliseconds :)
|
|
||||||
virtual void timerEvent( QTimerEvent* );
|
|
||||||
//just a counter, nothing more.
|
|
||||||
int tick;
|
|
||||||
//a list of the Components that need a timer
|
|
||||||
QPtrList<Component> timerList;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,184 +0,0 @@
|
|||||||
Log for qt3to4 on Fri Dec 26 18:59:56 2008. Number of log entries: 101
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis.cpp at line 21 column 28: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis.cpp at line 115 column 29: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis.cpp: Added the following include directives:
|
|
||||||
#include <Q3TextStream>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 22 column 12: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 22 column 33: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 24 column 12: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 24 column 33: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 25 column 13: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 25 column 35: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 41 column 23: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 42 column 33: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 42 column 47: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 43 column 22: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 54 column 20: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 55 column 30: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 55 column 44: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 56 column 20: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp at line 70 column 20: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.cpp: Added the following include directives:
|
|
||||||
#include <QPixmap> #include <Q3HBoxLayout> #include <Q3VBoxLayout> #include <QLabel> #include <Q3Frame>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axisw.cpp: Added the following include directives:
|
|
||||||
#include <QMouseEvent>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button.cpp at line 18 column 30: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button.cpp at line 64 column 31: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button.cpp: Added the following include directives:
|
|
||||||
#include <Q3TextStream>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button_edit.cpp at line 14 column 12: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button_edit.cpp at line 14 column 33: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button_edit.cpp at line 19 column 12: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button_edit.cpp at line 19 column 33: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button_edit.cpp at line 28 column 20: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button_edit.cpp: Added the following include directives:
|
|
||||||
#include <Q3VBoxLayout> #include <QPixmap> #include <Q3HBoxLayout>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/buttonw.cpp: Added the following include directives:
|
|
||||||
#include <QMouseEvent>
|
|
||||||
No changes made to file /home/john/qjoypad-3.4.1/src/event.cpp
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/flash.cpp at line 56 column 25: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/flash.cpp at line 58 column 25: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/flash.cpp: Added the following include directives:
|
|
||||||
#include <Q3VBoxLayout> #include <Q3HBoxLayout>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/icon.cpp at line 7 column 20: qpopupmenu.h -> q3popupmenu.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/icon.cpp at line 9 column 59: QPopupMenu -> Q3PopupMenu
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/icon.cpp: Added the following include directives:
|
|
||||||
#include <QPixmap> #include <QCloseEvent> #include <QMouseEvent>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 42 column 26: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 44 column 26: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 50 column 26: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 52 column 26: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 57 column 30: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 114 column 31: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 117 column 12: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 117 column 33: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 117 column 55: IO_WriteOnly -> QIODevice::WriteOnly
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 119 column 26: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 126 column 26: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 139 column 26: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp at line 142 column 26: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.cpp: Added the following include directives:
|
|
||||||
#include <Q3TextStream>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypadw.cpp at line 10 column 24: QGridLayout -> Q3GridLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypadw.cpp: Added the following include directives:
|
|
||||||
#include <Q3GridLayout>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joyslider.cpp at line 156 column 12: QPointArray -> Q3PointArray
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joyslider.cpp: Added the following include directives:
|
|
||||||
#include <QResizeEvent> #include <Q3PointArray> #include <QMouseEvent> #include <QPaintEvent>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/keycode.cpp: Added the following include directives:
|
|
||||||
#include <QPixmap> #include <QPaintEvent>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 13 column 26: QPopupMenu -> Q3PopupMenu
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 54 column 27: IO_ReadOnly -> QIODevice::ReadOnly
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 63 column 20: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 69 column 12: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 115 column 26: IO_ReadOnly -> QIODevice::ReadOnly
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 116 column 13: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 137 column 22: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 154 column 27: IO_WriteOnly -> QIODevice::WriteOnly
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 155 column 13: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 157 column 23: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 194 column 27: IO_WriteOnly -> QIODevice::WriteOnly
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 195 column 13: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp at line 276 column 17: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.cpp: Added the following include directives:
|
|
||||||
#include <QPixmap> #include <Q3TextStream> #include <Q3PopupMenu>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 17 column 24: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 19 column 7: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 19 column 27: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 20 column 28: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 20 column 42: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 21 column 12: QGridLayout -> Q3GridLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 21 column 33: QGridLayout -> Q3GridLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 42 column 28: QWidgetStack -> Q3WidgetStack
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 43 column 31: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 43 column 45: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 52 column 20: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 77 column 12: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 77 column 33: QHBoxLayout -> Q3HBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp at line 112 column 17: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.cpp: Added the following include directives:
|
|
||||||
#include <QPixmap> #include <Q3GridLayout> #include <Q3HBoxLayout> #include <Q3VBoxLayout> #include <Q3Frame>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/loop.cpp at line 21 column 17: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/loop.cpp: Added the following include directives:
|
|
||||||
#include <QTimerEvent> #include <QEventLoop>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 34 column 8: QIntDict -> Q3IntDict
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 35 column 8: QIntDict -> Q3IntDict
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 36 column 8: QPtrList -> Q3PtrList
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 56 column 20: QIntDictIterator -> Q3IntDictIterator
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 192 column 28: IO_WriteOnly -> QIODevice::WriteOnly
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 194 column 14: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 210 column 33: IO_ReadOnly -> QIODevice::ReadOnly
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 213 column 14: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 235 column 31: IO_WriteOnly -> QIODevice::WriteOnly
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp at line 237 column 13: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/main.cpp: Added the following include directives:
|
|
||||||
#include <Q3TextStream> #include <Q3PtrList>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/quickset.cpp at line 12 column 12: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/quickset.cpp at line 12 column 37: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/quickset.cpp: Added the following include directives:
|
|
||||||
#include <Q3VBoxLayout> #include <QLabel>
|
|
||||||
|
|
||||||
Log for qt3to4 on Fri Dec 26 19:23:39 2008. Number of log entries: 47
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis.h at line 30 column 24: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis.h at line 32 column 25: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis.h: Added the following include directives:
|
|
||||||
#include <Q3TextStream>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.h at line 8 column 16: qframe.h -> q3frame.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axis_edit.h at line 40 column 8: QFrame -> Q3Frame
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/axisw.h: Added the following include directives:
|
|
||||||
#include <QMouseEvent>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button.h at line 23 column 24: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button.h at line 25 column 25: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/button.h: Added the following include directives:
|
|
||||||
#include <Q3TextStream>
|
|
||||||
No changes made to file /home/john/qjoypad-3.4.1/src/button_edit.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/buttonw.h: Added the following include directives:
|
|
||||||
#include <QMouseEvent>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/component.h at line 7 column 21: qtextstream.h -> q3textstream.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/component.h at line 21 column 32: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/component.h at line 22 column 33: QTextStream -> Q3TextStream
|
|
||||||
No changes made to file /home/john/qjoypad-3.4.1/src/constant.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/device.h at line 4 column 18: qintdict.h -> q3intdict.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/device.h at line 11 column 15: QIntDict -> Q3IntDict
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/device.h at line 15 column 15: QIntDict -> Q3IntDict
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/error.h at line 10 column 39: QMessageBox -> Qt
|
|
||||||
No changes made to file /home/john/qjoypad-3.4.1/src/event.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/flash.h at line 75 column 12: QBoxLayout -> Q3BoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/flash.h: Added the following include directives:
|
|
||||||
#include <Q3BoxLayout>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/icon.h at line 16 column 16: QPopupMenu -> Q3PopupMenu
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/icon.h at line 21 column 47: QPopupMenu -> Q3PopupMenu
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/icon.h at line 28 column 12: QPopupMenu -> Q3PopupMenu
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/icon.h: Added the following include directives:
|
|
||||||
#include <QCloseEvent> #include <Q3PopupMenu> #include <QMouseEvent>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.h at line 7 column 18: qintdict.h -> q3intdict.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.h at line 38 column 24: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.h at line 40 column 25: QTextStream -> Q3TextStream
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.h at line 71 column 10: QIntDict -> Q3IntDict
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.h at line 72 column 10: QIntDict -> Q3IntDict
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypad.h: Added the following include directives:
|
|
||||||
#include <Q3TextStream>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypadw.h at line 58 column 13: QGridLayout -> Q3GridLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joypadw.h: Added the following include directives:
|
|
||||||
#include <Q3GridLayout>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/joyslider.h: Added the following include directives:
|
|
||||||
#include <QPaintEvent> #include <QResizeEvent> #include <QMouseEvent>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/keycode.h: Added the following include directives:
|
|
||||||
#include <QPaintEvent>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.h at line 7 column 21: qtextstream.h -> q3textstream.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.h at line 18 column 21: qpopupmenu.h -> q3popupmenu.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout.h at line 90 column 12: QPopupMenu -> Q3PopupMenu
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.h at line 10 column 22: qwidgetstack.h -> q3widgetstack.h
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.h at line 39 column 13: QVBoxLayout -> Q3VBoxLayout
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.h at line 40 column 14: QWidgetStack -> Q3WidgetStack
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/layout_edit.h: Added the following include directives:
|
|
||||||
#include <Q3VBoxLayout>
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/loop.h at line 39 column 10: QPtrList -> Q3PtrList
|
|
||||||
In file /home/john/qjoypad-3.4.1/src/loop.h: Added the following include directives:
|
|
||||||
#include <Q3PtrList> #include <QTimerEvent>
|
|
||||||
No changes made to file /home/john/qjoypad-3.4.1/src/quickset.h
|
|
||||||
No changes made to file /home/john/qjoypad-3.4.1/src/timer.h
|
|
||||||
|
|
||||||
Log for qt3to4 on Fri Dec 26 19:24:31 2008. Number of log entries: 1
|
|
||||||
No changes made to file /home/john/qjoypad-3.4.1/src/Makefile
|
|
||||||
|
|
@ -27,8 +27,8 @@ doc.extra = cp ../README.txt ../LICENSE.txt $${doc.path}
|
|||||||
##### Setup Compile #####
|
##### Setup Compile #####
|
||||||
|
|
||||||
DEFINES += DEVDIR='"$$DEVDIR"'
|
DEFINES += DEVDIR='"$$DEVDIR"'
|
||||||
DEFINES += ICON24='"$${icons.path}/icon24.png"'
|
DEFINES += ICON24='\"$${icons.path}/icon24.png\"'
|
||||||
DEFINES += ICON64='"$${icons.path}/icon64.png"'
|
DEFINES += ICON64='\"$${icons.path}/icon64.png\"'
|
||||||
|
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
DEPENDPATH += trayicon
|
DEPENDPATH += trayicon
|
||||||
@ -42,7 +42,6 @@ HEADERS += axis.h \
|
|||||||
button.h \
|
button.h \
|
||||||
button_edit.h \
|
button_edit.h \
|
||||||
buttonw.h \
|
buttonw.h \
|
||||||
component.h \
|
|
||||||
constant.h \
|
constant.h \
|
||||||
device.h \
|
device.h \
|
||||||
error.h \
|
error.h \
|
||||||
@ -54,10 +53,9 @@ HEADERS += axis.h \
|
|||||||
joyslider.h \
|
joyslider.h \
|
||||||
keycode.h \
|
keycode.h \
|
||||||
layout.h \
|
layout.h \
|
||||||
|
getkey.h \
|
||||||
layout_edit.h \
|
layout_edit.h \
|
||||||
loop.h \
|
|
||||||
quickset.h \
|
quickset.h \
|
||||||
timer.h \
|
|
||||||
trayicon/trayicon.h
|
trayicon/trayicon.h
|
||||||
SOURCES += axis.cpp \
|
SOURCES += axis.cpp \
|
||||||
axis_edit.cpp \
|
axis_edit.cpp \
|
||||||
@ -74,9 +72,9 @@ SOURCES += axis.cpp \
|
|||||||
keycode.cpp \
|
keycode.cpp \
|
||||||
layout.cpp \
|
layout.cpp \
|
||||||
layout_edit.cpp \
|
layout_edit.cpp \
|
||||||
loop.cpp \
|
|
||||||
main.cpp \
|
main.cpp \
|
||||||
quickset.cpp \
|
quickset.cpp \
|
||||||
|
getkey.cpp \
|
||||||
trayicon/trayicon.cpp \
|
trayicon/trayicon.cpp \
|
||||||
trayicon/trayicon_x11.cpp
|
trayicon/trayicon_x11.cpp
|
||||||
|
|
||||||
|
@ -2,12 +2,14 @@
|
|||||||
#define QUICKSET_H
|
#define QUICKSET_H
|
||||||
|
|
||||||
//for building the dialog
|
//for building the dialog
|
||||||
#include <qlayout.h>
|
#include <QLayout>
|
||||||
#include <qlabel.h>
|
#include <QLabel>
|
||||||
#include <qpushbutton.h>
|
#include <QPushButton>
|
||||||
|
|
||||||
|
#include <linux/joystick.h>
|
||||||
|
|
||||||
//to request new keycodes
|
//to request new keycodes
|
||||||
#include "keycode.h"
|
//#include "keycode.h"
|
||||||
//to actually set the joypad
|
//to actually set the joypad
|
||||||
#include "joypad.h"
|
#include "joypad.h"
|
||||||
|
|
||||||
|
11
src/timer.h
11
src/timer.h
@ -1,11 +0,0 @@
|
|||||||
#ifndef JTIMER_H
|
|
||||||
#define JTIMER_H
|
|
||||||
|
|
||||||
#include "component.h"
|
|
||||||
|
|
||||||
//the purpose of this file is to make a list of Components that need timer
|
|
||||||
//notification available to JoyLoop, Axis, and Buttons
|
|
||||||
extern void takeTimer( Component* ); //taken from main.cpp
|
|
||||||
extern void tossTimer( Component* ); //taken from main.cpp
|
|
||||||
|
|
||||||
#endif
|
|
@ -19,7 +19,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "trayicon.h"
|
#include "trayicon.h"
|
||||||
#include "qpopupmenu.h"
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class TrayIcon qtrayicon.h
|
\class TrayIcon qtrayicon.h
|
||||||
@ -33,7 +32,7 @@
|
|||||||
\sa show
|
\sa show
|
||||||
*/
|
*/
|
||||||
TrayIcon::TrayIcon( QObject *parent, const char *name )
|
TrayIcon::TrayIcon( QObject *parent, const char *name )
|
||||||
: QObject(parent, name), pop(0), d(0)
|
: QObject(parent/*, name*/), pop(0), d(0)
|
||||||
{
|
{
|
||||||
v_isWMDock = FALSE;
|
v_isWMDock = FALSE;
|
||||||
}
|
}
|
||||||
@ -45,8 +44,8 @@ TrayIcon::TrayIcon( QObject *parent, const char *name )
|
|||||||
|
|
||||||
\sa show
|
\sa show
|
||||||
*/
|
*/
|
||||||
TrayIcon::TrayIcon( const QPixmap &icon, const QString &tooltip, QPopupMenu *popup, QObject *parent, const char *name )
|
TrayIcon::TrayIcon( const QPixmap &icon, const QString &tooltip, QMenu *popup, QObject *parent, const char *name )
|
||||||
: QObject(parent, name), pop(popup), pm(icon), tip(tooltip), d(0)
|
: QObject(parent/*, name*/), pop(popup), pm(icon), tip(tooltip), d(0)
|
||||||
{
|
{
|
||||||
v_isWMDock = FALSE;
|
v_isWMDock = FALSE;
|
||||||
}
|
}
|
||||||
@ -63,7 +62,7 @@ TrayIcon::~TrayIcon()
|
|||||||
Sets the context menu to \a popup. The context menu will pop up when the
|
Sets the context menu to \a popup. The context menu will pop up when the
|
||||||
user clicks the system tray entry with the right mouse button.
|
user clicks the system tray entry with the right mouse button.
|
||||||
*/
|
*/
|
||||||
void TrayIcon::setPopup( QPopupMenu* popup )
|
void TrayIcon::setPopup( QMenu* popup )
|
||||||
{
|
{
|
||||||
pop = popup;
|
pop = popup;
|
||||||
}
|
}
|
||||||
@ -73,7 +72,7 @@ void TrayIcon::setPopup( QPopupMenu* popup )
|
|||||||
|
|
||||||
\sa setPopup
|
\sa setPopup
|
||||||
*/
|
*/
|
||||||
QPopupMenu* TrayIcon::popup() const
|
QMenu* TrayIcon::popup() const
|
||||||
{
|
{
|
||||||
return pop;
|
return pop;
|
||||||
}
|
}
|
||||||
@ -184,14 +183,14 @@ void TrayIcon::mousePressEvent( QMouseEvent *e )
|
|||||||
// This is for X11, menus appear on mouse press
|
// This is for X11, menus appear on mouse press
|
||||||
// I'm not sure whether Mac should be here or below.. Somebody check?
|
// I'm not sure whether Mac should be here or below.. Somebody check?
|
||||||
switch ( e->button() ) {
|
switch ( e->button() ) {
|
||||||
case RightButton:
|
case Qt::RightButton:
|
||||||
if ( pop ) {
|
if ( pop ) {
|
||||||
pop->popup( e->globalPos() );
|
pop->popup( e->globalPos() );
|
||||||
e->accept();
|
e->accept();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LeftButton:
|
case Qt::LeftButton:
|
||||||
case MidButton:
|
case Qt::MidButton:
|
||||||
emit clicked( e->globalPos(), e->button() );
|
emit clicked( e->globalPos(), e->button() );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -216,7 +215,7 @@ void TrayIcon::mouseReleaseEvent( QMouseEvent *e )
|
|||||||
#ifdef Q_WS_WIN
|
#ifdef Q_WS_WIN
|
||||||
// This is for Windows, where menus appear on mouse release
|
// This is for Windows, where menus appear on mouse release
|
||||||
switch ( e->button() ) {
|
switch ( e->button() ) {
|
||||||
case RightButton:
|
case Qt::RightButton:
|
||||||
if ( pop ) {
|
if ( pop ) {
|
||||||
// Necessary to make keyboard focus
|
// Necessary to make keyboard focus
|
||||||
// and menu closing work on Windows.
|
// and menu closing work on Windows.
|
||||||
@ -226,8 +225,8 @@ void TrayIcon::mouseReleaseEvent( QMouseEvent *e )
|
|||||||
e->accept();
|
e->accept();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LeftButton:
|
case Qt::LeftButton:
|
||||||
case MidButton:
|
case Qt::MidButton:
|
||||||
emit clicked( e->globalPos(), e->button() );
|
emit clicked( e->globalPos(), e->button() );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -249,7 +248,7 @@ void TrayIcon::mouseReleaseEvent( QMouseEvent *e )
|
|||||||
*/
|
*/
|
||||||
void TrayIcon::mouseDoubleClickEvent( QMouseEvent *e )
|
void TrayIcon::mouseDoubleClickEvent( QMouseEvent *e )
|
||||||
{
|
{
|
||||||
if ( e->button() == LeftButton )
|
if ( e->button() == Qt::LeftButton )
|
||||||
emit doubleClicked( e->globalPos() );
|
emit doubleClicked( e->globalPos() );
|
||||||
e->accept();
|
e->accept();
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,12 @@
|
|||||||
|
|
||||||
#include <qobject.h>
|
#include <qobject.h>
|
||||||
#include <qimage.h>
|
#include <qimage.h>
|
||||||
|
#include <QPixmap>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
|
||||||
|
|
||||||
class QPopupMenu;
|
|
||||||
|
|
||||||
class TrayIcon : public QObject
|
class TrayIcon : public QObject
|
||||||
{
|
{
|
||||||
@ -35,7 +39,7 @@ class TrayIcon : public QObject
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
TrayIcon( QObject *parent = 0, const char *name = 0 );
|
TrayIcon( QObject *parent = 0, const char *name = 0 );
|
||||||
TrayIcon( const QPixmap &, const QString &, QPopupMenu *popup = 0, QObject *parent = 0, const char *name = 0 );
|
TrayIcon( const QPixmap &, const QString &, QMenu *popup = 0, QObject *parent = 0, const char *name = 0 );
|
||||||
~TrayIcon();
|
~TrayIcon();
|
||||||
|
|
||||||
// use WindowMaker dock mode. ignored on non-X11 platforms
|
// use WindowMaker dock mode. ignored on non-X11 platforms
|
||||||
@ -43,8 +47,8 @@ public:
|
|||||||
bool isWMDock() { return v_isWMDock; }
|
bool isWMDock() { return v_isWMDock; }
|
||||||
|
|
||||||
// Set a popup menu to handle RMB
|
// Set a popup menu to handle RMB
|
||||||
void setPopup( QPopupMenu * );
|
void setPopup( QMenu * );
|
||||||
QPopupMenu* popup() const;
|
QMenu* popup() const;
|
||||||
|
|
||||||
QPixmap icon() const;
|
QPixmap icon() const;
|
||||||
QString toolTip() const;
|
QString toolTip() const;
|
||||||
@ -71,7 +75,7 @@ protected:
|
|||||||
virtual void mouseDoubleClickEvent( QMouseEvent *e );
|
virtual void mouseDoubleClickEvent( QMouseEvent *e );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPopupMenu *pop;
|
QMenu *pop;
|
||||||
QPixmap pm;
|
QPixmap pm;
|
||||||
QString tip;
|
QString tip;
|
||||||
bool v_isWMDock;
|
bool v_isWMDock;
|
||||||
|
@ -21,18 +21,15 @@
|
|||||||
|
|
||||||
#include "trayicon.h"
|
#include "trayicon.h"
|
||||||
|
|
||||||
#include<qapplication.h>
|
#include <QX11Info>
|
||||||
#include<qimage.h>
|
#include <QApplication>
|
||||||
#include<qpixmap.h>
|
#include <QPainter>
|
||||||
#include<qtooltip.h>
|
|
||||||
#include<qpainter.h>
|
|
||||||
|
|
||||||
#include<X11/Xlib.h>
|
#include<X11/Xlib.h>
|
||||||
#include<X11/Xutil.h>
|
#include<X11/Xutil.h>
|
||||||
#include<X11/Xatom.h>
|
#include<X11/Xatom.h>
|
||||||
|
|
||||||
//#if QT_VERSION < 0x030200
|
//#if QT_VERSION < 0x030200
|
||||||
extern Time qt_x_time;
|
//extern Time;// qt_x_time;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
@ -120,13 +117,13 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
TrayIcon::TrayIconPrivate::TrayIconPrivate(TrayIcon *object, int _size)
|
TrayIcon::TrayIconPrivate::TrayIconPrivate(TrayIcon *object, int _size)
|
||||||
: QWidget(0, object->name(), WRepaintNoErase)
|
: QWidget(0/*, object->name(), Qt::WRepaintNoErase*/)
|
||||||
{
|
{
|
||||||
iconObject = object;
|
iconObject = object;
|
||||||
size = _size;
|
size = _size;
|
||||||
|
setAttribute(Qt::WA_NoBackground);
|
||||||
setFocusPolicy(NoFocus);
|
setFocusPolicy(Qt::NoFocus);
|
||||||
setBackgroundMode(X11ParentRelative);
|
//setBackgroundMode(X11ParentRelative);
|
||||||
|
|
||||||
setMinimumSize(size, size);
|
setMinimumSize(size, size);
|
||||||
setMaximumSize(size, size);
|
setMaximumSize(size, size);
|
||||||
@ -135,7 +132,7 @@ TrayIcon::TrayIconPrivate::TrayIconPrivate(TrayIcon *object, int _size)
|
|||||||
// This base stuff is required by both FreeDesktop specification and WindowMaker
|
// This base stuff is required by both FreeDesktop specification and WindowMaker
|
||||||
void TrayIcon::TrayIconPrivate::initWM(WId icon)
|
void TrayIcon::TrayIconPrivate::initWM(WId icon)
|
||||||
{
|
{
|
||||||
Display *dsp = x11Display();
|
Display *dsp = x11Info().display();
|
||||||
WId leader = winId();
|
WId leader = winId();
|
||||||
|
|
||||||
// set the class hint
|
// set the class hint
|
||||||
@ -160,7 +157,7 @@ void TrayIcon::TrayIconPrivate::initWM(WId icon)
|
|||||||
void TrayIcon::TrayIconPrivate::setPixmap(const QPixmap &pm)
|
void TrayIcon::TrayIconPrivate::setPixmap(const QPixmap &pm)
|
||||||
{
|
{
|
||||||
pix = pm;
|
pix = pm;
|
||||||
setIcon(pix);
|
setWindowIcon(pix);
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,15 +174,17 @@ void TrayIcon::TrayIconPrivate::enterEvent(QEvent *e)
|
|||||||
//if ( !qApp->focusWidget() ) {
|
//if ( !qApp->focusWidget() ) {
|
||||||
XEvent ev;
|
XEvent ev;
|
||||||
memset(&ev, 0, sizeof(ev));
|
memset(&ev, 0, sizeof(ev));
|
||||||
ev.xfocus.display = qt_xdisplay();
|
ev.xfocus.display = x11Info().display();//qt_xdisplay();
|
||||||
ev.xfocus.type = FocusIn;
|
ev.xfocus.type = FocusIn;
|
||||||
ev.xfocus.window = winId();
|
ev.xfocus.window = winId();
|
||||||
ev.xfocus.mode = NotifyNormal;
|
ev.xfocus.mode = NotifyNormal;
|
||||||
ev.xfocus.detail = NotifyAncestor;
|
ev.xfocus.detail = NotifyAncestor;
|
||||||
Time time = qt_x_time;
|
Time time = x11Info().appTime();//qt_x_time;
|
||||||
qt_x_time = 1;
|
//qt_x_time = 1;
|
||||||
|
x11Info().setAppTime(1);
|
||||||
qApp->x11ProcessEvent( &ev );
|
qApp->x11ProcessEvent( &ev );
|
||||||
qt_x_time = time;
|
//qt_x_time = time;
|
||||||
|
x11Info().setAppTime(time);
|
||||||
//}
|
//}
|
||||||
//#endif
|
//#endif
|
||||||
QWidget::enterEvent(e);
|
QWidget::enterEvent(e);
|
||||||
@ -233,7 +232,7 @@ TrayIconFreeDesktop::TrayIconFreeDesktop(TrayIcon *object, const QPixmap &pm)
|
|||||||
initWM( winId() );
|
initWM( winId() );
|
||||||
|
|
||||||
// initialize NetWM
|
// initialize NetWM
|
||||||
Display *dsp = x11Display();
|
Display *dsp = x11Info().display();//x11Display();
|
||||||
|
|
||||||
// dock the widget (adapted from SIM-ICQ)
|
// dock the widget (adapted from SIM-ICQ)
|
||||||
Screen *screen = XDefaultScreenOfDisplay(dsp); // get the screen
|
Screen *screen = XDefaultScreenOfDisplay(dsp); // get the screen
|
||||||
@ -279,16 +278,16 @@ public:
|
|||||||
void setPixmap(const QPixmap &_pm)
|
void setPixmap(const QPixmap &_pm)
|
||||||
{
|
{
|
||||||
QPixmap pm;
|
QPixmap pm;
|
||||||
QImage i = _pm.convertToImage();
|
QImage i = _pm.toImage();
|
||||||
i = i.scale(i.width() * 2, i.height() * 2);
|
i = i.scaled(i.width() * 2, i.height() * 2);
|
||||||
pm.convertFromImage(i);
|
pm = QPixmap::fromImage(i);
|
||||||
|
|
||||||
TrayIconPrivate::setPixmap(pm);
|
TrayIconPrivate::setPixmap(pm);
|
||||||
|
|
||||||
// thanks to Robert Spier for this:
|
// thanks to Robert Spier for this:
|
||||||
// for some reason the repaint() isn't being honored, or isn't for
|
// for some reason the repaint() isn't being honored, or isn't for
|
||||||
// the icon. So force one on the widget behind the icon
|
// the icon. So force one on the widget behind the icon
|
||||||
erase();
|
//erase();
|
||||||
QPaintEvent pe( rect() );
|
QPaintEvent pe( rect() );
|
||||||
paintEvent(&pe);
|
paintEvent(&pe);
|
||||||
}
|
}
|
||||||
@ -365,8 +364,11 @@ void TrayIcon::sysUpdateToolTip()
|
|||||||
if ( !d )
|
if ( !d )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( tip.isEmpty() )
|
if ( tip.isEmpty() ) {
|
||||||
QToolTip::remove(d);
|
//QToolTip::remove(d);
|
||||||
else
|
d->setToolTip(QString());
|
||||||
QToolTip::add(d, tip);
|
} else {
|
||||||
|
//QToolTip::add(d, tip);
|
||||||
|
d->setToolTip(tip);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user