00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "inputbuffer.h"
00020
00021 #include"inputbufferprivate.h"
00022
00023 #include <QtCore/QQueue>
00024 #include <QtCore/QHash>
00025 #include <QtCore/QDebug>
00026
00027 using namespace GluonInput;
00028
00029 InputBuffer::InputBuffer()
00030 : d( new InputBufferPrivate() )
00031 {
00032 }
00033
00034 InputBuffer::~InputBuffer()
00035 {
00036 }
00037
00038 bool InputBuffer::buttonState( int button )
00039 {
00040 if( d->buttonState[button].isEmpty() )
00041 return false;
00042
00043 bool returnBool = false;
00044 if( d->buttonState[button].count() > 1 )
00045 {
00046 returnBool = d->buttonState[button].dequeue();
00047 d->buttonState[button].clear();
00048 }
00049 else
00050 {
00051 returnBool = d->buttonState[button].head();
00052 }
00053
00054 return returnBool;
00055 }
00056
00057 void InputBuffer::setButtonState( int button, bool pressed )
00058 {
00059 if( pressed && d->buttonState[button].isEmpty() )
00060 {
00061 d->buttonState[button].enqueue( pressed );
00062 }
00063 else if( !pressed && d->buttonState[button].count() == 1 )
00064 {
00065 d->buttonState[button].enqueue( pressed );
00066 }
00067 }
00068
00069 #include "inputbuffer.moc"