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:
John Toman
2009-08-03 01:01:45 +00:00
committed by virtuoussin13
parent c1ef3fa0b7
commit 345bb5748e
36 changed files with 1152 additions and 1506 deletions

View File

@ -4,11 +4,11 @@
//abs()
#include <stdlib.h>
//parent of Axis
#include "component.h"
//to request a periodic tap on the shoulder for gradient mode
#include "timer.h"
#include <QTimer>
#include <QTextStream>
#include <QRegExp>
#include <QStringList>
#include "constant.h"
//default and arbitrary values for dZone and xZone
#define DZONE 3000
@ -18,7 +18,8 @@
enum AxisMode {keybd, mousepv, mousenv, mouseph, mousenh};
//represents one joystick axis
class Axis : public Component {
class Axis : public QObject {
Q_OBJECT
//so AxisEdit can manipulate fields directly.
friend class AxisEdit;
public:
@ -45,11 +46,12 @@ class Axis : public Component {
void setKey(bool positive, int value);
//happens every MSEC milliseconds (constant.h)
//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
//maxSpeed, xZone, or dZone are changed.
void adjustGradient();
protected:
int tick;
//This axis is logically depressed (positive or negative)
//if the axis is gradient, this is true even if it is not
//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,
//this just decides how long it stays down each cycle.
int duration;
QTimer *timer;
public slots:
void timerCalled();
};
#endif

View File

@ -1,11 +1,12 @@
#include "axis_edit.h"
AxisEdit::AxisEdit( Axis* ax )
:QDialog() {
//build the dialog, display current axis settings :)
axis = ax;
setCaption("Set " + axis->getName());
setIcon(QPixmap(ICON24));
setWindowTitle("Set " + axis->getName());
setWindowIcon(QPixmap(ICON24));
//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
@ -13,32 +14,42 @@ AxisEdit::AxisEdit( Axis* ax )
//after I have placed the widgets within them and there's no reasno to
//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();
QVBoxLayout* v2 = new QVBoxLayout(0,5,5);
QVBoxLayout* v2 = new QVBoxLayout();
v2->setMargin(5);
v2->setSpacing(5);
CGradient = new QCheckBox("Gradient", this);
CGradient->setChecked(axis->gradient);
v2->addWidget(CGradient);
CMode = new QComboBox(this);
CMode->insertItem("Keyboard",keybd);
CMode->insertItem("Mouse (Vert.)",mousepv);
CMode->insertItem("Mouse (Vert. Rev.)", mousenv);
CMode->insertItem("Mouse (Hor.)", mouseph);
CMode->insertItem("Mouse (Hor. Rev.)", mousenh);
CMode->setCurrentItem( axis->mode );
CMode->insertItem((int)keybd, QString("Keyboard"), QVariant(NULL));
CMode->insertItem((int) mousepv,QString("Mouse (Vert.)"),QVariant(NULL));
CMode->insertItem((int) mousenv, QString("Mouse (Vert. Rev.)"), QVariant(NULL));
CMode->insertItem((int) mouseph, "Mouse (Hor.)", QVariant(NULL));
CMode->insertItem((int)mousenh, QString("Mouse (Hor. Rev.)"), NULL);
CMode->setCurrentIndex( axis->mode );
connect(CMode, SIGNAL(activated(int)), this, SLOT( CModeChanged( int )));
v2->addWidget(CMode);
h->addLayout(v2);
MouseBox = new QFrame(this);
MouseBox->setFrameStyle( QFrame::Box | QFrame::Sunken );
v2 = new QVBoxLayout(MouseBox,5,5);
v2->setAutoAdd(true);
new QLabel("Mouse Speed", MouseBox);
SSpeed = new QSpinBox(0,MAXMOUSESPEED,1,MouseBox);
v2 = new QVBoxLayout(MouseBox);
v2->setSpacing(5);
v2->setMargin(5);
//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);
v2->addWidget(SSpeed);
h->addWidget(MouseBox);
v->addLayout(h);
@ -47,18 +58,23 @@ AxisEdit::AxisEdit( Axis* ax )
KeyBox = new QFrame(this);
KeyBox->setFrameStyle( QFrame::Box | QFrame::Sunken );
h = new QHBoxLayout(KeyBox, 5, 5);
h->setAutoAdd(true);
h = new QHBoxLayout(KeyBox);
h->setSpacing(5);
h->setMargin(5);
//h->setAutoAdd(true);
BNeg = new KeyButton(axis->getName(),axis->nkeycode,KeyBox);
CThrottle = new QComboBox(KeyBox);
CThrottle->insertItem("Neg. Throttle",0);
CThrottle->insertItem("No Throttle",1);
CThrottle->insertItem("Pos. Throttle",2);
CThrottle->setCurrentItem(axis->throttle + 1);
CThrottle->insertItem(0,"Neg. Throttle",QVariant(NULL));
CThrottle->insertItem(1,"No Throttle",QVariant(NULL));
CThrottle->insertItem(2,"Pos. Throttle",QVariant(NULL));
CThrottle->setCurrentIndex(axis->throttle + 1);
connect( CThrottle, SIGNAL( activated( int )), this, SLOT( CThrottleChanged( int )));
BPos = new KeyButton(axis->getName(),axis->pkeycode,KeyBox);
h->addWidget(BNeg);
h->addWidget(CThrottle);
h->addWidget(BPos);
v->addWidget( KeyBox );
h = new QHBoxLayout();
@ -96,13 +112,16 @@ void AxisEdit::CModeChanged( int index ) {
void AxisEdit::CThrottleChanged( int index ) {
switch (index) {
case 0: BNeg->setEnabled(true);
case 0:
BNeg->setEnabled(true);
BPos->setEnabled(false);
break;
case 1: BNeg->setEnabled(true);
case 1:
BNeg->setEnabled(true);
BPos->setEnabled(true);
break;
case 2: BNeg->setEnabled(false);
case 2:
BNeg->setEnabled(false);
BPos->setEnabled(true);
break;
}
@ -111,18 +130,18 @@ void AxisEdit::CThrottleChanged( int index ) {
void AxisEdit::accept() {
//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);
}
else {
if (CGradient->isChecked()) takeTimer(axis);
}
}*/
axis->gradient = CGradient->isChecked();
axis->maxSpeed = SSpeed->value();
axis->throttle = CThrottle->currentItem() - 1;
axis->throttle = CThrottle->currentIndex() - 1;
axis->dZone = Slider->dZone();
axis->xZone = Slider->xZone();
axis->mode = (AxisMode) CMode->currentItem();
axis->mode = (AxisMode) CMode->currentIndex();
axis->pkeycode = BPos->getValue();
axis->nkeycode = BNeg->getValue();
axis->adjustGradient();

View File

@ -1,22 +1,16 @@
#ifndef AXIS_EDIT_H
#define AXIS_EDIT_H
//to refer to the axis we're editing
//for building up the dialog we need
#include <qdialog.h>
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qframe.h>
#include <qspinbox.h>
#include <qlayout.h>
#include <qlabel.h>
#include "axis.h"
#include <QComboBox>
#include <QSpinBox>
#include <QCheckBox>
#include <QLabel>
//for my home-brewed widgets
#include "joyslider.h"
#include "keycode.h"
//to refer to the axis we're editing
#include "axis.h"
class AxisEdit : public QDialog {
Q_OBJECT
public:

View File

@ -1,5 +1,6 @@
#include "axisw.h"
AxisWidget::AxisWidget( Axis* a, QWidget* parent )
: FlashButton( "",parent) {
axis = a;

View File

@ -1,13 +1,15 @@
#ifndef AXIS_WIDGET_H
#define AXIS_WIDGET_H
#include <QMouseEvent>
//so we can interact with the axis this refers to
#include "axis.h"
//so we can edit this axis when the user clicks the button
#include "axis_edit.h"
//for the FlashButton widget
#include "flash.h"
//so we can edit this axis when the user clicks the button
#include "axis_edit.h"
class AxisWidget : public FlashButton {
public:
AxisWidget( Axis* a, QWidget* parent );

View File

@ -1,25 +1,28 @@
#include "button.h"
#include "event.h"
Button::Button( int i ) {
index = i;
isOn = false;
//to keep toDefault from calling tossTimer without first calling takeTimer
isButtonPressed = false;
isDown = false;
rapidfire = false;
timer = new QTimer(this);
toDefault();
tick = 0;
}
Button::~Button() {
release();
//delete timer;
}
bool Button::read( QTextStream* stream ) {
// at this point, toDefault() has just been called.
//read in a line of text and break it into words
QString input = stream->readLine().lower();
QString input = stream->readLine().toLower();
QRegExp regex("[\\s,]+");
QStringList words = QStringList::split(regex,input);
QStringList words = input.split(regex);
//used to assure correct conversion of QStrings -> ints
bool ok;
@ -49,7 +52,6 @@ bool Button::read( QTextStream* stream ) {
else return false;
}
else if (*it == "rapidfire") {
if (rapidfire == false) takeTimer( this );
rapidfire = true;
}
else if (*it == "sticky") {
@ -77,27 +79,43 @@ void Button::jsevent( int value ) {
bool newval = (value == 1);
if (sticky) {
//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;
}
//if the received event indicates a change in state,
else if (newval != isOn) {
isOn = newval; //change state
else if (newval != isButtonPressed) {
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.
else return;
//if rapidfire is on, then timer() will do its job. Otherwise we must
//manually triger the key event.
if (!rapidfire) click(isOn);
if (!rapidfire) {
click(isButtonPressed);
}
}
void Button::toDefault() {
if (rapidfire == true) tossTimer( this );
rapidfire = false;
sticky = false;
useMouse = false;
keycode = 0;
mousecode = 0;
timer->stop();
}
bool Button::isDefault() {
@ -128,8 +146,8 @@ void Button::setKey( bool mouse, int value ) {
}
}
void Button::timer( int tick ) {
if (isOn) {
void Button::timerTick( int tick ) {
if (isButtonPressed) {
//originally I just clicked true and then false right after, but this
//was not recognized by some programs. I need a delay in between.
if (tick % FREQ == 0) {
@ -154,3 +172,7 @@ void Button::click( bool press ) {
//and send it.
sendevent( click );
}
void Button::timerCalled() {
timerTick(++tick);
}

View File

@ -1,18 +1,17 @@
#ifndef BUTTON_H
#define BUTTON_H
//parent of Button
#include "component.h"
#include <QTimer>
#include <QTextStream>
//to request a periodic tap on the shoulder for rapidfire
#include "timer.h"
//for getting a key name in status()
#include "keycode.h"
//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.
class Button : public Component {
class Button : public QObject {
Q_OBJECT
friend class ButtonEdit;
public:
Button( int i );
@ -36,23 +35,26 @@ class Button : public Component {
//set the key code for this axis. Used by quickset.
void setKey(bool mouse, int value);
//happens every MSEC (constant.h) milliseconds
void timer( int tick );
void timerTick( int tick );
protected:
//true iff this button is physically depressed.
bool isOn;
bool isButtonPressed;
//the index of this button on the joystick
int index;
//actually sends a key press/release
virtual void click( bool press );
//is a simulated key currently depressed?
bool isDown;
int tick;
//button settings
bool rapidfire;
bool sticky;
bool useMouse;
int keycode;
int mousecode; //like keycode, only mousebutton ;)
QTimer *timer;
public slots:
void timerCalled();
};
#endif

View File

@ -1,13 +1,19 @@
#include "button_edit.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
ButtonEdit::ButtonEdit(Button* butt)
:QDialog(0,0,true) {
:QDialog(0) {
setModal(true);
//build the dialog!
button = butt;
setCaption("Set " + button->getName());
setIcon(QPixmap(ICON24));
setWindowTitle("Set " + button->getName());
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);
v->addWidget(BKKey);
@ -38,12 +44,12 @@ void ButtonEdit::show() {
void ButtonEdit::accept() {
//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);
}
else {
if (CRapid->isChecked()) takeTimer(button);
}
}*/
button->rapidfire = CRapid->isChecked();
button->sticky = (CSticky->isChecked());
//if the user chose a mouse button...

View File

@ -1,14 +1,13 @@
#ifndef BUTTON_EDIT_H
#define BUTTON_EDIT_H
//used to build the dialog:
#include <qdialog.h>
#include <qpushbutton.h>
#include <qcheckbox.h>
#include <qlayout.h>
#include <QPushButton>
#include <QCheckBox>
//we need to edit a Button
#include "button.h"
//to get a new key for the button.
#include "keycode.h"

View File

@ -1,5 +1,6 @@
#include "buttonw.h"
ButtonWidget::ButtonWidget( Button* b, QWidget* parent )
: FlashButton( "", parent) {
button = b;

View File

@ -7,6 +7,11 @@
#include "button_edit.h"
//this IS a FlashButton
#include "flash.h"
#ifdef Bool
#undef Bool
#endif
#include <QMouseEvent>
class ButtonWidget : public FlashButton {
public:

View File

@ -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

View File

@ -24,4 +24,6 @@
#define NAME "QJoyPad 3.4"
#define MOUSE_OFFSET 400
#endif

View File

@ -1,17 +1,16 @@
#ifndef JOY_DEVICE_H
#define JOY_DEVICE_H
#include <qintdict.h>
#include "joypad.h"
//the purpose of this file is to make device information available to what
//needs it.
//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
//as well as the ones defined in a layout buy not currently plugged in.
extern QIntDict<JoyPad> joypads;
extern QHash<int, JoyPad*> joypads;
#endif

View File

@ -7,7 +7,7 @@
static void error(QString type, QString message ) {
QMessageBox::warning(0,NAME" - " + type,
message, QMessageBox::Ok, QMessageBox::NoButton);
message, QMessageBox::Ok, Qt::NoButton);
}
#endif

View File

@ -13,7 +13,7 @@ void sendevent( xevent e ) {
if (e.type == KREL || e.type == KPRESS) {
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);
}
}

View File

@ -1,26 +1,30 @@
#include "flash.h"
//Added by qt3to4:
//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
//in Sweden.
FlashButton::FlashButton( QString text, QWidget* parent, QString name )
:QPushButton( text, parent, name )
:QPushButton( text, parent )
{
this->setObjectName(name);
//record the base palette for posterity.
Normal = palette();
//define the palette the button will have when it flashes.
QColorGroup cg = this->palette().inactive();
cg.setColor(QColorGroup::Button, HIGHLIGHT);
cg.setColor(QColorGroup::Light, HIGHLIGHT.light(150));
cg.setColor(QColorGroup::Midlight, HIGHLIGHT.light(125));
cg.setColor(QColorGroup::Dark, HIGHLIGHT.dark(200));
cg.setColor(QColorGroup::Mid, HIGHLIGHT.dark(150));
Flash = QPalette(cg,cg,cg);
QPalette cg = this->palette();
cg.setCurrentColorGroup(QPalette::Inactive);
cg.setColor(QPalette::Button, HIGHLIGHT);
cg.setColor(QPalette::Light, HIGHLIGHT.light(150));
cg.setColor(QPalette::Midlight, HIGHLIGHT.light(125));
cg.setColor(QPalette::Dark, HIGHLIGHT.dark(200));
cg.setColor(QPalette::Mid, HIGHLIGHT.dark(150));
Flash = cg;
isflash=false;
setAutoDefault( false );
setFocusPolicy(QWidget::NoFocus);
setFocusPolicy(Qt::NoFocus);
}
void FlashButton::flash()
@ -39,21 +43,18 @@ void FlashButton::flash()
}
FlashRadioArray::FlashRadioArray( int count, QString names[], bool horizontal, QWidget* parent)
:QWidget( parent )
{
if (horizontal)
LMain = new QHBoxLayout( this, 5, 5 );
else
LMain = new QVBoxLayout( this, 5, 5 );
LMain->setAutoAdd( true );
if (horizontal) {
LMain = new QHBoxLayout( this);
LMain->setMargin(5);
LMain->setSpacing(5);
} else {
LMain = new QVBoxLayout( this);
LMain->setMargin(5);
LMain->setSpacing(5);
}
Buttons = new FlashButton*[count];
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, "" );
//when any of the buttons is clicked, it calls the same function on this.
connect( Buttons[i], SIGNAL( clicked() ), this, SLOT( clicked() ));
LMain->addWidget(Buttons[i]);
}
Count = count;

View File

@ -15,8 +15,9 @@
#include <qpushbutton.h>
#include <qlayout.h>
#include <QPushButton>
#include <QPalette>
#include <QBoxLayout>
//A QPushButton that can flash a color

View File

@ -1,11 +1,14 @@
#include "icon.h"
#include <qpopupmenu.h>
FloatingIcon::FloatingIcon( const QPixmap &icon, QPopupMenu *popup, QWidget *parent, const char *name)
: QDialog( parent, name ) {
setCaption(NAME);
setPaletteBackgroundPixmap(icon);
FloatingIcon::FloatingIcon( const QPixmap &icon, QMenu *popup, QWidget *parent, const char *name)
: QDialog( parent ) {
this->setObjectName(name);
setWindowTitle(NAME);
QPalette palette;
palette.setBrush(backgroundRole(), QBrush(icon));
setPalette(palette);
//setPaletteBackgroundPixmap(icon);
pop = popup;
setFixedSize(64,64);
@ -13,7 +16,7 @@ FloatingIcon::FloatingIcon( const QPixmap &icon, QPopupMenu *popup, QWidget *par
void FloatingIcon::mousePressEvent( QMouseEvent* e ) {
//if it was the right mouse button,
if (e->button() == RightButton) {
if (e->button() == Qt::RightButton) {
//bring up the popup menu.
pop->popup( e->globalPos() );
e->accept();

View File

@ -1,27 +1,25 @@
#ifndef JOY_ICON_H
#define JOY_ICON_H
//for creating a floating icon in notray mode :)
#include <qdialog.h>
//the pixmap to load
#include <qpixmap.h>
#include <QDialog>
#include <QMenu>
#include <QPixmap>
#include <QMouseEvent>
#include <QCloseEvent>
#include "constant.h"
//A quirk in QT forbids me from simply including qpopupmenu.h
class QPopupMenu;
class FloatingIcon : public QDialog {
Q_OBJECT
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:
void closed();
void clicked();
protected:
void mousePressEvent( QMouseEvent* e );
void closeEvent( QCloseEvent* e );
QPopupMenu* pop;
QMenu* pop;
};
#endif

View File

@ -1,39 +1,48 @@
#include "joypadw.h"
//Added by qt3to4:
JoyPadWidget::JoyPadWidget( JoyPad* jp, int i, QWidget* parent )
: QWidget(parent) {
//initialize things, build the dialog
joypad = jp;
index = i;
LMain = new QGridLayout(this, (joypad->axes+1)/2 +(joypad->buttons+1)/2 + 2, 2, 5, 5);
LMain->setAutoAdd( true );
/* This was in below, no idea what it does :( ...
* (joypad->axes+1)/2 +(joypad->buttons+1)/2 + 2
*/
LMain = new QGridLayout(this);
LMain->setSpacing(5);
LMain->setMargin(5);
flashcount = 0;
int insertCounter = 0;
quickset = NULL;
Axes = new AxisWidget*[joypad->axes];
for (int i = 0; i < joypad->axes; i++) {
Axes[i] = new AxisWidget(joypad->Axes[i],this);
connect( Axes[i], SIGNAL( flashed( bool ) ), this, SLOT( flash( bool )));
}
if (joypad->axes % 2 == 1) {
new QWidget(this);
LMain->addWidget(Axes[i], insertCounter / 2, insertCounter %2);
insertCounter++;
}
Buttons = new ButtonWidget*[joypad->buttons];
for (int i = 0; i < joypad->buttons; i++) {
Buttons[i] = new ButtonWidget(joypad->Buttons[i],this);
connect( Buttons[i], SIGNAL( flashed( bool ) ), this, SLOT( flash( bool )));
}
if (joypad->buttons % 2 == 1) {
new QWidget(this);
LMain->addWidget(Buttons[i], insertCounter/2, insertCounter%2);
insertCounter++;
}
new QWidget(this);
new QWidget(this);
if(insertCounter % 2 == 1) {
insertCounter++;
}
insertCounter+=2;
BClear = new QPushButton("Clear", this);
connect(BClear, SIGNAL(clicked()), this, SLOT(clear()));
LMain->addWidget(BClear, insertCounter / 2, insertCounter %2);
insertCounter++;
BAll = new QPushButton("Quick Set", this);
LMain->addWidget(BAll, insertCounter /2, insertCounter%2);
connect(BAll, SIGNAL(clicked()), this, SLOT(setAll()));
}

View File

@ -2,13 +2,13 @@
#define JOYPAD_WIDGET_H
//parts for the widget
#include <qpushbutton.h>
#include <qlayout.h>
//Added by qt3to4:
#include <linux/joystick.h>
#include "axisw.h"
//this all relates to a JoyPad
#include "joypad.h"
//and a JoyPadWidget is composed of AxisWidgets and ButtonWidgets
#include "axisw.h"
#include "buttonw.h"
//JoyPadWidget also is what initiates the whole QuickSet procedure :)
#include "quickset.h"

View File

@ -1,4 +1,5 @@
#include "joyslider.h"
//Added by qt3to4:
JoySlider::JoySlider( int dz, int xz, int val, QWidget* parent )
:QWidget( parent )
@ -87,23 +88,23 @@ void JoySlider::drawBox( int x, int width ) {
//widget but is defined by x-coordinate and width
QPainter paint( this );
paint.setPen( (isEnabled())?white:colorGroup().background() );
paint.setBrush( (isEnabled())?white:colorGroup().background() );
paint.setPen( (isEnabled())?Qt::white:palette().background().color() );
paint.setBrush( (isEnabled())?Qt::white:palette().background() );
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, 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, 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 + 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 + width, 1 + boxheight, x + width, 1 );
}
@ -129,9 +130,9 @@ void JoySlider::paintEvent( QPaintEvent* )
//prepare to draw a bar of the appropriate color
QColor bar;
if (abs(JoyVal) < DeadZone) bar = gray;
else if (abs(JoyVal) < XZone) bar = blue;
else bar = red;
if (abs(JoyVal) < DeadZone) bar = Qt::gray;
else if (abs(JoyVal) < XZone) bar = Qt::blue;
else bar = Qt::red;
paint.setPen( 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
//set of tabs depending on the mode! Negative throttle gets negative tabs.
int point;
QPointArray shape;
QPolygon shape;
paint.setPen( black );
paint.setBrush( blue );
paint.setPen( Qt::black );
paint.setBrush( Qt::blue );
if (throttle >= 0) {
point = pointFor(DeadZone, false);
shape.putPoints(0,5,
@ -176,7 +177,7 @@ void JoySlider::paintEvent( QPaintEvent* )
paint.setBrush( red );
paint.setBrush( Qt::red );
if (throttle >= 0) {
point = pointFor(XZone, false);
shape.putPoints(0,5,

View File

@ -2,12 +2,17 @@
#define Q_JOYSLIDER_H
//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"
//dragging constants.

View File

@ -1,5 +1,5 @@
#include "keycode.h"
#include "getkey.h"
const QString ktos( int keycode )
{
@ -21,7 +21,7 @@ const QString ktos( int keycode )
QRegExp rx;
rx.setPattern("^\\w$");
//"a-z" -> "A-Z"
if (rx.exactMatch(xname)) return xname.upper();
if (rx.exactMatch(xname)) return xname.toUpper();
rx.setPattern("(.*)_(.*)");
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)
:QPushButton(nowMouse?"Mouse " + QString::number(val):QString(ktos(val)), parent) {
mouse = m;

View File

@ -2,21 +2,11 @@
#define KEYCODE_H
//To create the "press a key" dialog:
#include <qdialog.h>
#include <qpainter.h>
#include <QPushButton>
#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"
@ -26,23 +16,6 @@ const QString ktos( int keycode );
//The X11 display, taken from main.cpp
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.
class KeyButton : public QPushButton {

View File

@ -1,22 +1,6 @@
#ifndef 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
//qjoypad by running "qjoypad layout-name", etc.) QJoyPad uses signals to
@ -24,6 +8,14 @@
//the joystick device list.
#include <signal.h>
#include <QAction>
#include <QDir>
#include <QMenu>
#include <QApplication>
#include <QDialog>
#include <QInputDialog>
#include <poll.h>
//a layout handles several joypads
#include "joypad.h"
//for errors
@ -41,7 +33,7 @@
#define NL "[NO LAYOUT]"
//where QJoyPad saves its settings!
const QString settingsDir(QDir::homeDirPath() + "/.qjoypad3/");
const QString settingsDir(QDir::homePath() + "/.qjoypad3/");
//handles loading, saving, and changing of layouts
class LayoutManager : public QObject {
@ -74,7 +66,7 @@ class LayoutManager : public QObject {
//when the tray icon is clicked
void trayClick();
//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
void fillPopup();
//update the list of available joystick devices
@ -87,7 +79,7 @@ class LayoutManager : public QObject {
//the layout that is currently in use
QString CurrentLayout;
//the popup menu from the tray/floating icon
QPopupMenu* Popup;
QMenu* Popup;
//if there is a LayoutEdit open, this points to it. Otherwise, NULL.
LayoutEdit* le;

View File

@ -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);
}
}

View File

@ -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

View File

@ -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

View File

@ -27,8 +27,8 @@ doc.extra = cp ../README.txt ../LICENSE.txt $${doc.path}
##### Setup Compile #####
DEFINES += DEVDIR='"$$DEVDIR"'
DEFINES += ICON24='"$${icons.path}/icon24.png"'
DEFINES += ICON64='"$${icons.path}/icon64.png"'
DEFINES += ICON24='\"$${icons.path}/icon24.png\"'
DEFINES += ICON64='\"$${icons.path}/icon64.png\"'
TEMPLATE = app
DEPENDPATH += trayicon
@ -42,7 +42,6 @@ HEADERS += axis.h \
button.h \
button_edit.h \
buttonw.h \
component.h \
constant.h \
device.h \
error.h \
@ -54,10 +53,9 @@ HEADERS += axis.h \
joyslider.h \
keycode.h \
layout.h \
getkey.h \
layout_edit.h \
loop.h \
quickset.h \
timer.h \
trayicon/trayicon.h
SOURCES += axis.cpp \
axis_edit.cpp \
@ -74,9 +72,9 @@ SOURCES += axis.cpp \
keycode.cpp \
layout.cpp \
layout_edit.cpp \
loop.cpp \
main.cpp \
quickset.cpp \
getkey.cpp \
trayicon/trayicon.cpp \
trayicon/trayicon_x11.cpp

View File

@ -2,12 +2,14 @@
#define QUICKSET_H
//for building the dialog
#include <qlayout.h>
#include <qlabel.h>
#include <qpushbutton.h>
#include <QLayout>
#include <QLabel>
#include <QPushButton>
#include <linux/joystick.h>
//to request new keycodes
#include "keycode.h"
//#include "keycode.h"
//to actually set the joypad
#include "joypad.h"

View File

@ -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

View File

@ -19,7 +19,6 @@
*/
#include "trayicon.h"
#include "qpopupmenu.h"
/*!
\class TrayIcon qtrayicon.h
@ -33,7 +32,7 @@
\sa show
*/
TrayIcon::TrayIcon( QObject *parent, const char *name )
: QObject(parent, name), pop(0), d(0)
: QObject(parent/*, name*/), pop(0), d(0)
{
v_isWMDock = FALSE;
}
@ -45,8 +44,8 @@ TrayIcon::TrayIcon( QObject *parent, const char *name )
\sa show
*/
TrayIcon::TrayIcon( const QPixmap &icon, const QString &tooltip, QPopupMenu *popup, QObject *parent, const char *name )
: QObject(parent, name), pop(popup), pm(icon), tip(tooltip), d(0)
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)
{
v_isWMDock = FALSE;
}
@ -63,7 +62,7 @@ TrayIcon::~TrayIcon()
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.
*/
void TrayIcon::setPopup( QPopupMenu* popup )
void TrayIcon::setPopup( QMenu* popup )
{
pop = popup;
}
@ -73,7 +72,7 @@ void TrayIcon::setPopup( QPopupMenu* popup )
\sa setPopup
*/
QPopupMenu* TrayIcon::popup() const
QMenu* TrayIcon::popup() const
{
return pop;
}
@ -184,14 +183,14 @@ void TrayIcon::mousePressEvent( QMouseEvent *e )
// This is for X11, menus appear on mouse press
// I'm not sure whether Mac should be here or below.. Somebody check?
switch ( e->button() ) {
case RightButton:
case Qt::RightButton:
if ( pop ) {
pop->popup( e->globalPos() );
e->accept();
}
break;
case LeftButton:
case MidButton:
case Qt::LeftButton:
case Qt::MidButton:
emit clicked( e->globalPos(), e->button() );
break;
default:
@ -216,7 +215,7 @@ void TrayIcon::mouseReleaseEvent( QMouseEvent *e )
#ifdef Q_WS_WIN
// This is for Windows, where menus appear on mouse release
switch ( e->button() ) {
case RightButton:
case Qt::RightButton:
if ( pop ) {
// Necessary to make keyboard focus
// and menu closing work on Windows.
@ -226,8 +225,8 @@ void TrayIcon::mouseReleaseEvent( QMouseEvent *e )
e->accept();
}
break;
case LeftButton:
case MidButton:
case Qt::LeftButton:
case Qt::MidButton:
emit clicked( e->globalPos(), e->button() );
break;
default:
@ -249,7 +248,7 @@ void TrayIcon::mouseReleaseEvent( QMouseEvent *e )
*/
void TrayIcon::mouseDoubleClickEvent( QMouseEvent *e )
{
if ( e->button() == LeftButton )
if ( e->button() == Qt::LeftButton )
emit doubleClicked( e->globalPos() );
e->accept();
}

View File

@ -23,8 +23,12 @@
#include <qobject.h>
#include <qimage.h>
#include <QPixmap>
#include <QDir>
#include <QMenu>
#include <QMouseEvent>
class QPopupMenu;
class TrayIcon : public QObject
{
@ -35,7 +39,7 @@ class TrayIcon : public QObject
public:
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();
// use WindowMaker dock mode. ignored on non-X11 platforms
@ -43,8 +47,8 @@ public:
bool isWMDock() { return v_isWMDock; }
// Set a popup menu to handle RMB
void setPopup( QPopupMenu * );
QPopupMenu* popup() const;
void setPopup( QMenu * );
QMenu* popup() const;
QPixmap icon() const;
QString toolTip() const;
@ -71,7 +75,7 @@ protected:
virtual void mouseDoubleClickEvent( QMouseEvent *e );
private:
QPopupMenu *pop;
QMenu *pop;
QPixmap pm;
QString tip;
bool v_isWMDock;

View File

@ -21,18 +21,15 @@
#include "trayicon.h"
#include<qapplication.h>
#include<qimage.h>
#include<qpixmap.h>
#include<qtooltip.h>
#include<qpainter.h>
#include <QX11Info>
#include <QApplication>
#include <QPainter>
#include<X11/Xlib.h>
#include<X11/Xutil.h>
#include<X11/Xatom.h>
//#if QT_VERSION < 0x030200
extern Time qt_x_time;
//extern Time;// qt_x_time;
//#endif
//----------------------------------------------------------------------------
@ -120,13 +117,13 @@ private:
};
TrayIcon::TrayIconPrivate::TrayIconPrivate(TrayIcon *object, int _size)
: QWidget(0, object->name(), WRepaintNoErase)
: QWidget(0/*, object->name(), Qt::WRepaintNoErase*/)
{
iconObject = object;
size = _size;
setFocusPolicy(NoFocus);
setBackgroundMode(X11ParentRelative);
setAttribute(Qt::WA_NoBackground);
setFocusPolicy(Qt::NoFocus);
//setBackgroundMode(X11ParentRelative);
setMinimumSize(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
void TrayIcon::TrayIconPrivate::initWM(WId icon)
{
Display *dsp = x11Display();
Display *dsp = x11Info().display();
WId leader = winId();
// set the class hint
@ -160,7 +157,7 @@ void TrayIcon::TrayIconPrivate::initWM(WId icon)
void TrayIcon::TrayIconPrivate::setPixmap(const QPixmap &pm)
{
pix = pm;
setIcon(pix);
setWindowIcon(pix);
repaint();
}
@ -177,15 +174,17 @@ void TrayIcon::TrayIconPrivate::enterEvent(QEvent *e)
//if ( !qApp->focusWidget() ) {
XEvent ev;
memset(&ev, 0, sizeof(ev));
ev.xfocus.display = qt_xdisplay();
ev.xfocus.display = x11Info().display();//qt_xdisplay();
ev.xfocus.type = FocusIn;
ev.xfocus.window = winId();
ev.xfocus.mode = NotifyNormal;
ev.xfocus.detail = NotifyAncestor;
Time time = qt_x_time;
qt_x_time = 1;
Time time = x11Info().appTime();//qt_x_time;
//qt_x_time = 1;
x11Info().setAppTime(1);
qApp->x11ProcessEvent( &ev );
qt_x_time = time;
//qt_x_time = time;
x11Info().setAppTime(time);
//}
//#endif
QWidget::enterEvent(e);
@ -233,7 +232,7 @@ TrayIconFreeDesktop::TrayIconFreeDesktop(TrayIcon *object, const QPixmap &pm)
initWM( winId() );
// initialize NetWM
Display *dsp = x11Display();
Display *dsp = x11Info().display();//x11Display();
// dock the widget (adapted from SIM-ICQ)
Screen *screen = XDefaultScreenOfDisplay(dsp); // get the screen
@ -279,16 +278,16 @@ public:
void setPixmap(const QPixmap &_pm)
{
QPixmap pm;
QImage i = _pm.convertToImage();
i = i.scale(i.width() * 2, i.height() * 2);
pm.convertFromImage(i);
QImage i = _pm.toImage();
i = i.scaled(i.width() * 2, i.height() * 2);
pm = QPixmap::fromImage(i);
TrayIconPrivate::setPixmap(pm);
// thanks to Robert Spier for this:
// for some reason the repaint() isn't being honored, or isn't for
// the icon. So force one on the widget behind the icon
erase();
//erase();
QPaintEvent pe( rect() );
paintEvent(&pe);
}
@ -365,8 +364,11 @@ void TrayIcon::sysUpdateToolTip()
if ( !d )
return;
if ( tip.isEmpty() )
QToolTip::remove(d);
else
QToolTip::add(d, tip);
if ( tip.isEmpty() ) {
//QToolTip::remove(d);
d->setToolTip(QString());
} else {
//QToolTip::add(d, tip);
d->setToolTip(tip);
}
}