Qt 4.8
Public Functions | Protected Variables | List of all members
QIntMouseListenThread Class Reference
Inheritance diagram for QIntMouseListenThread:
QThread QObject

Public Functions

 QIntMouseListenThread (QIntMousePrivate *im)
 
void run ()
 The starting point for the thread. More...
 
bool setup (QString driverName, uint32_t index)
 
void stoploop ()
 
 ~QIntMouseListenThread ()
 
- Public Functions inherited from QThread
void exit (int retcode=0)
 Tells the thread's event loop to exit with a return code. More...
 
bool isFinished () const
 Returns true if the thread is finished; otherwise returns false. More...
 
bool isRunning () const
 Returns true if the thread is running; otherwise returns false. More...
 
Priority priority () const
 Returns the priority for a running thread. More...
 
 QThread (QObject *parent=0)
 Constructs a new QThread to manage a new thread. More...
 
void setPriority (Priority priority)
 This function sets the priority for a running thread. More...
 
void setStackSize (uint stackSize)
 Sets the maximum stack size for the thread to stackSize. More...
 
uint stackSize () const
 Returns the maximum stack size for the thread (if set with setStackSize()); otherwise returns zero. More...
 
bool wait (unsigned long time=ULONG_MAX)
 Blocks the thread until either of these conditions is met: More...
 
 ~QThread ()
 Destroys the QThread. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Protected Variables

QList< Activity > actList
 
QList< HIDHandle > handleList
 
QIntMousePrivateimp
 
bool loop
 
Semaphore loopsem
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 

Additional Inherited Members

- Public Types inherited from QThread
enum  Priority {
  IdlePriority, LowestPriority, LowPriority, NormalPriority,
  HighPriority, HighestPriority, TimeCriticalPriority, InheritPriority
}
 This enum type indicates how the operating system should schedule newly created threads. More...
 
- Public Slots inherited from QThread
void quit ()
 Tells the thread's event loop to exit with return code 0 (success). More...
 
void start (Priority=InheritPriority)
 Begins execution of the thread by calling run(). More...
 
void terminate ()
 Terminates the execution of the thread. More...
 
- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QThread
void finished ()
 This signal is emitted when the thread has finished executing. More...
 
void started ()
 This signal is emitted when the thread starts executing. More...
 
void terminated ()
 This signal is emitted when the thread is terminated. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 
- Static Public Functions inherited from QThread
static QThreadcurrentThread ()
 Returns a pointer to a QThread which manages the currently executing thread. More...
 
static Qt::HANDLE currentThreadId ()
 Returns the thread handle of the currently executing thread. More...
 
static int idealThreadCount ()
 Returns the ideal number of threads that can be run on the system. More...
 
static void yieldCurrentThread ()
 Yields execution of the current thread to another runnable thread, if any. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Functions inherited from QThread
int exec ()
 Enters the event loop and waits until exit() is called, returning the value that was passed to exit(). More...
 
 QThread (QThreadPrivate &dd, QObject *parent=0)
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 
- Static Protected Functions inherited from QThread
static void msleep (unsigned long)
 Forces the current thread to sleep for msecs milliseconds. More...
 
static void setTerminationEnabled (bool enabled=true)
 Enables or disables termination of the current thread based on the enabled parameter. More...
 
static void sleep (unsigned long)
 Forces the current thread to sleep for secs seconds. More...
 
static void usleep (unsigned long)
 Forces the current thread to sleep for usecs microseconds. More...
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

Definition at line 76 of file qmouseintegrity_qws.cpp.

Constructors and Destructors

◆ QIntMouseListenThread()

QIntMouseListenThread::QIntMouseListenThread ( QIntMousePrivate im)
inline

Definition at line 85 of file qmouseintegrity_qws.cpp.

85 : QThread(), imp(im) {};
QThread(QObject *parent=0)
Constructs a new QThread to manage a new thread.
Definition: qthread.cpp:433

◆ ~QIntMouseListenThread()

QIntMouseListenThread::~QIntMouseListenThread ( )
inline

Definition at line 86 of file qmouseintegrity_qws.cpp.

86 {};

Functions

◆ run()

void QIntMouseListenThread::run ( void  )
virtual

The starting point for the thread.

After calling start(), the newly created thread calls this function. The default implementation simply calls exec().

You can reimplement this function to facilitate advanced thread management. Returning from this method will end the execution of the thread.

See also
start() wait()

Reimplemented from QThread.

Definition at line 180 of file qmouseintegrity_qws.cpp.

181 {
182  Value id;
183  HIDEvent event;
184  Activity loopact;
185  QPoint currentpos(0,0);
186  Qt::MouseButtons currentbutton = Qt::NoButton;
187  Qt::KeyboardModifiers keymod;
188 
189  /* first create all Activities for the main loop.
190  * We couldn't do this in setup() because this Task is different */
191  Activity act;
192  int i = 0;
193  foreach (HIDHandle h, handleList) {
194  CheckSuccess(CreateActivity(CurrentTask(), 2, false, i, &act));
195  actList.append(act);
196  i++;
197  CheckSuccess(gh_hid_async_wait_for_event(h, act));
198  }
199 
200  /* setup a Semaphore used to watch for a request for exit */
201  CheckSuccess(CreateSemaphore(0, &loopsem));
202  CheckSuccess(CreateActivity(CurrentTask(), 2, false, 0, &loopact));
203  CheckSuccess(AsynchronousReceive(loopact, (Object)loopsem, NULL));
204 
205  loop = true;
206  do {
207  uint32_t num_events = 1;
208 
209  WaitForActivity(&id);
210  if (loop) {
211  while (gh_hid_get_event(handleList.at(id), &event, &num_events) == Success) {
212  if (event.type == HID_TYPE_AXIS) {
213  switch (event.index) {
214  case HID_AXIS_ABSX:
215  currentpos.setX(event.value);
216  break;
217  case HID_AXIS_ABSY:
218  currentpos.setY(event.value);
219  break;
220  case HID_AXIS_RELX:
221  currentpos.setX(currentpos.x() + event.value);
222  break;
223  case HID_AXIS_RELY:
224  currentpos.setY(currentpos.y() + event.value);
225  break;
226  default:
227  break;
228  }
229  } else if (event.type == HID_TYPE_KEY) {
230  switch (event.index) {
231  case HID_BUTTON_LEFT:
232  if (event.value)
233  currentbutton |= Qt::LeftButton;
234  else
235  currentbutton &= ~Qt::LeftButton;
236  break;
237  case HID_BUTTON_MIDDLE:
238  if (event.value)
239  currentbutton |= Qt::MiddleButton;
240  else
241  currentbutton &= ~Qt::MiddleButton;
242  break;
243  case HID_BUTTON_RIGHT:
244  if (event.value)
245  currentbutton |= Qt::RightButton;
246  else
247  currentbutton &= ~Qt::RightButton;
248  break;
249  }
250  } else if (event.type == HID_TYPE_SYNC) {
251  /* sync events are sent by mouses and not by keyboards.
252  * this should probably be changed */
253  imp->dataReady(currentpos.x(), currentpos.y(), currentbutton);
254  //QWindowSystemInterface::handleMouseEvent(0, currentpos, currentpos, currentbutton);
255  }
256  }
257  CheckSuccess(gh_hid_async_wait_for_event(handleList.at(id), actList.at(id)));
258  }
259  } while (loop);
260  CloseSemaphore(loopsem);
261  QThread::exit(0);
262 }
virtual bool event(QEvent *)
This virtual function receives events to an object and should return true if the event e was recogniz...
Definition: qobject.cpp:1200
void append(const T &t)
Inserts value at the end of the list.
Definition: qlist.h:507
const T & at(int i) const
Returns the item at index position i in the list.
Definition: qlist.h:468
void dataReady(int x, int y, int buttons)
The QPoint class defines a point in the plane using integer precision.
Definition: qpoint.h:53
Definition: qnamespace.h:54
QList< HIDHandle > handleList
void exit(int retcode=0)
Tells the thread&#39;s event loop to exit with a return code.
Definition: qthread.cpp:592

◆ setup()

bool QIntMouseListenThread::setup ( QString  driverName,
uint32_t  index 
)

Definition at line 146 of file qmouseintegrity_qws.cpp.

Referenced by QIntMouseHandler::QIntMouseHandler().

147 {
148  int i;
149  int devices;
150  Error driverError, deviceError;
151  HIDDriver *driver;
152  HIDHandle handle;
153  /* FIXME : take a list of driver names/indexes for setup */
154  devices = 0;
155  i = 0;
156  do {
157  driverError = gh_hid_get_driver(i, &driver);
158  if (driverError == Success) {
159  int j = 0;
160  do {
161  deviceError = gh_hid_init_device(driver, j, &handle);
162  if (deviceError == Success) {
163  int32_t type;
164  /* only accept pointing devices */
165  deviceError = gh_hid_get_setting(handle, HID_SETTING_CAPABILITIES, &type);
166  if ((deviceError == Success) && (type & HID_TYPE_AXIS)) {
167  handleList.append(handle);
168  devices++;
169  } else
170  gh_hid_close(handle);
171  j++;
172  }
173  } while (deviceError == Success);
174  i++;
175  }
176  } while (driverError == Success);
177  return (devices > 0);
178 }
Error
Definition: qaudio.h:58
int type
Definition: qmetatype.cpp:239
void append(const T &t)
Inserts value at the end of the list.
Definition: qlist.h:507
QList< HIDHandle > handleList

◆ stoploop()

void QIntMouseListenThread::stoploop ( )
inline

Definition at line 89 of file qmouseintegrity_qws.cpp.

Referenced by QIntMousePrivate::~QIntMousePrivate().

89 { loop = false; ReleaseSemaphore(loopsem); };

Properties

◆ actList

QList<Activity> QIntMouseListenThread::actList
protected

Definition at line 82 of file qmouseintegrity_qws.cpp.

◆ handleList

QList<HIDHandle> QIntMouseListenThread::handleList
protected

Definition at line 81 of file qmouseintegrity_qws.cpp.

◆ imp

QIntMousePrivate* QIntMouseListenThread::imp
protected

Definition at line 79 of file qmouseintegrity_qws.cpp.

◆ loop

bool QIntMouseListenThread::loop
protected

Definition at line 80 of file qmouseintegrity_qws.cpp.

◆ loopsem

Semaphore QIntMouseListenThread::loopsem
protected

Definition at line 83 of file qmouseintegrity_qws.cpp.


The documentation for this class was generated from the following file: