pointers.cpp

00001 /**************
00002 PROJECT       : SaX2 - library interface
00003               :
00004 AUTHOR        : Marcus Schäfer <ms@suse.de>
00005               :
00006 BELONGS TO    : SaX2 - SuSE advanced X11 configuration 
00007               : 
00008               :
00009 DESCRIPTION   : native C++ class library to access SaX2
00010               : functionality. Easy to use interface for
00011               : //.../
00012               : - importing/exporting X11 configurations
00013               : - modifying/creating X11 configurations 
00014               : ---
00015               :
00016               :
00017 STATUS        : Status: Development
00018 **************/
00019 #include "pointers.h"
00020 
00021 namespace SaX {
00022 //====================================
00023 // Constructor...
00024 //------------------------------------
00025 SaXManipulatePointers::SaXManipulatePointers (SaXImport* in, int ptr) {
00026         // .../
00031         // ----
00032         if ( ! in ) {
00033                 excNullPointerArgument ();
00034                 qError (errorString(),EXC_NULLPOINTERARGUMENT);
00035                 return;
00036         }
00037         if ( in->getSectionID() != SAX_POINTERS ) {
00038                 excPointerImportBindFailed ( in->getSectionID() );
00039                 qError (errorString(),EXC_POINTERIMPORTBINDFAILED);
00040                 return;
00041         }
00042         mImport  = in;
00043         mPointer = ptr;
00044         mImport -> setID ( mPointer );
00045 }
00046 
00047 //====================================
00048 // set card ID
00049 //------------------------------------
00050 bool SaXManipulatePointers::selectPointer (int ptr) {
00051         // .../
00054         // ----
00055         if (! mImport) {
00056                 return false;
00057         }
00058         if (mImport -> setID ( ptr )) { 
00059                 mPointer = ptr;
00060                 return true;
00061         }
00062         return false;
00063 }
00064 
00065 //====================================
00066 // setDriver
00067 //------------------------------------
00068 void SaXManipulatePointers::setDriver (const QString& driver) {
00069         // .../
00072         // ----
00073         if (! mImport) {
00074                 return;
00075         }
00076         mImport -> setItem ( "Driver",driver );
00077 }
00078 
00079 //====================================
00080 // setDevice
00081 //------------------------------------
00082 void SaXManipulatePointers::setDevice (const QString& device) {
00083         // .../
00088         // ----
00089         if (! mImport) {
00090                 return;
00091         }
00092         mImport -> setItem ( "Device",device );
00093 }
00094 
00095 //====================================
00096 // setProtocol
00097 //------------------------------------
00098 void SaXManipulatePointers::setProtocol (const QString& protocol) {
00099         // .../
00102         // ----
00103         if (! mImport) {
00104                 return;
00105         }
00106         mImport -> setItem ( "Protocol",protocol );
00107 }
00108 
00109 //====================================
00110 // setVendor
00111 //------------------------------------
00112 void SaXManipulatePointers::setNamePair (
00113         const QString& vendor , const QString& name
00114 ) {
00115         // .../
00121         // ----
00122         if (! mImport) {
00123                 return;
00124         }
00125         QString val;
00126         QTextOStream (&val) << vendor << ";" << name;
00127         mImport -> setItem ( "Name",val );
00128 }
00129 
00130 //====================================
00131 // setOption
00132 //------------------------------------
00133 void SaXManipulatePointers::setOption (
00134         const QString& keyword, const QString& value
00135 ) {
00136         // .../
00141         // ----
00142         if (! mImport) {
00143                 return;
00144         }
00145         QString key (keyword);
00146         QString val (value);
00147         if (! value) {
00148                 //====================================
00149                 // set bool option
00150                 //------------------------------------
00151                 mImport->setItem ("Option",key);
00152         } else {
00153                 //====================================
00154                 // set value added option
00155                 //------------------------------------
00156                 mImport->setRawItem ("RawOption",
00157                         "\""+key+"\"","\""+val+"\""
00158                 );
00159         }
00160 }
00161 
00162 //====================================
00163 // addOption
00164 //------------------------------------
00165 void SaXManipulatePointers::addOption (
00166         const QString& keyword, const QString& value
00167 ) {
00168         // .../
00173         // ----
00174         if (! mImport) {
00175                 return;
00176         }
00177         QString key (keyword);
00178         QString val (value);
00179         if (! value) {
00180                 //====================================
00181                 // add bool option
00182                 //------------------------------------
00183                 mImport->addItem ("Option",key);
00184         } else {
00185                 //====================================
00186                 // add value added option
00187                 //------------------------------------
00188                 mImport->addRawItem ("RawOption",
00189                         "\""+key+"\"","\""+val+"\""
00190                 );
00191         }
00192 }
00193 
00194 //====================================
00195 // removeOption
00196 //------------------------------------
00197 void SaXManipulatePointers::removeOption (const QString& value) {
00198         // .../
00203         // ----
00204         if (! mImport) {
00205                 return;
00206         }
00207         QString val (value);
00208         QString str = mImport->getItem("RawOption");
00209         if (! str.contains ("\""+val+"\"")) {
00210                 //====================================
00211                 // remove bool option
00212                 //------------------------------------
00213                 mImport->removeItem ("Option",val);
00214         } else {
00215                 //====================================
00216                 // remove value added option
00217                 //------------------------------------
00218                 mImport->removeRawItem ("RawOption","\""+val+"\"");
00219         }
00220 }
00221 
00222 //====================================
00223 // getDevice
00224 //------------------------------------
00225 QString SaXManipulatePointers::getDevice ( void ) {
00226         // .../
00230         // ----
00231         if (! mImport) {
00232                 return QString();
00233         }
00234         return mImport -> getItem ("Device");
00235 }
00236 
00237 //====================================
00238 // getDriver
00239 //------------------------------------
00240 QString SaXManipulatePointers::getDriver ( void ) {
00241         // .../
00243         // ----
00244         if (! mImport) {
00245                 return QString();
00246         }
00247         return mImport -> getItem ("Driver");
00248 }
00249 
00250 //====================================
00251 // getProtocol
00252 //------------------------------------
00253 QString SaXManipulatePointers::getProtocol ( void ) {
00254         // .../
00256         // ----
00257         if (! mImport) {
00258                 return QString();
00259         }
00260         return mImport -> getItem ("Protocol");
00261 }
00262 
00263 //====================================
00264 // getOptions
00265 //------------------------------------
00266 QDict<QString> SaXManipulatePointers::getOptions (void) {
00267         // .../
00273         // ----
00274         if (! mImport) {
00275                 return QDict<QString>();
00276         }
00277         QDict<QString> result;
00278         QString stdOptions = mImport -> getItem ("Option");
00279         QString rawOptions = mImport -> getItem ("RawOption");
00280         //====================================
00281         // handle bool options
00282         //------------------------------------
00283         QStringList stdlist = QStringList::split ( ",", stdOptions );
00284         for ( QStringList::Iterator
00285                 in = stdlist.begin(); in != stdlist.end(); ++in
00286         ) {
00287                 QString item (*in);
00288                 result.insert (item,new QString);
00289         }
00290         //====================================
00291         // handle value added options
00292         //------------------------------------
00293         QStringList rawlist = QStringList::split ( ",", rawOptions );
00294         for ( QStringList::Iterator
00295                 in = rawlist.begin(); in != rawlist.end(); ++in
00296         ) {
00297                 QString item (*in);
00298                 QRegExp itemExp ("\"(.*)\" \"(.*)\"");
00299                 int pos = itemExp.search (item);
00300                 if (pos >= 0) {
00301                         QString key = itemExp.cap(1);
00302                         QString* val = new QString (itemExp.cap(2));
00303                         result.insert (key,val);
00304                 }
00305         }
00306         return result;
00307 }
00308 
00309 //====================================
00310 // Constructor...
00311 //------------------------------------
00312 SaXManipulateMice::SaXManipulateMice (
00313         SaXImport* in, int ptr
00314 ) : SaXManipulateMiceIF (in,ptr) {
00315         // .../
00318         // ----
00319         mCDBMice = 0;
00320 }
00321 
00322 //====================================
00323 // enableWheelEmulation
00324 //------------------------------------
00325 void SaXManipulateMice::enableWheelEmulation (int btn) {
00326         // .../
00330         // ----
00331         if (! mImport) {
00332                 return;
00333         }
00334         QString button;
00335         button.sprintf ("%d",btn);
00336         mImport -> setItem ("EmulateWheel",button);
00337 }
00338 
00339 //====================================
00340 // disableWheelEmulation
00341 //------------------------------------
00342 void SaXManipulateMice::disableWheelEmulation (void) {
00343         // .../
00347         // ----
00348         if (! mImport) {
00349                 return;
00350         }
00351         mImport -> setItem ("EmulateWheel","");
00352 }
00353 
00354 //====================================
00355 // enable3ButtonEmulation
00356 //------------------------------------
00357 void SaXManipulateMice::enable3ButtonEmulation (void) {
00358         // .../
00362         // ----
00363         if (! mImport) {
00364                 return;
00365         }
00366         mImport -> setItem ("Emulate3Buttons","on");
00367 }
00368 
00369 //====================================
00370 // disable3ButtonEmulation
00371 //------------------------------------
00372 void SaXManipulateMice::disable3ButtonEmulation (void) {
00373         // .../
00375         // ----
00376         if (! mImport) {
00377                 return;
00378         }
00379         mImport -> setItem ("Emulate3Buttons","");
00380 }
00381 
00382 //====================================
00383 // enableWheel
00384 //------------------------------------
00385 void SaXManipulateMice::enableWheel  (void) {
00386         // .../
00391         // ----
00392         if (! mImport) {
00393                 return;
00394         }
00395         mImport -> setItem ("ZAxisMapping","4 5");
00396 }
00397 
00398 //====================================
00399 // enableWheel
00400 //------------------------------------
00401 void SaXManipulateMice::enableWheelOn  (int b1, int b2) {
00402         // .../
00405         // ----
00406         if (! mImport) {
00407                 return;
00408         }
00409         QString val;
00410         QTextOStream (&val) << b1 << " " << b2;
00411         mImport -> setItem ("ZAxisMapping",val);
00412 }
00413 
00414 //====================================
00415 // enableXAxisInvertation
00416 //------------------------------------
00417 void SaXManipulateMice::enableXAxisInvertation (void) {
00418         // .../
00421         // ----
00422         if (! mImport) {
00423                 return;
00424         }
00425         mImport -> setItem ("InvX","on");
00426 }
00427                                               
00428 //====================================
00429 // enableYAxisInvertation
00430 //------------------------------------
00431 void SaXManipulateMice::enableYAxisInvertation (void) {
00432         // .../
00435         // ----                                               
00436         if (! mImport) {                                       
00437                 return;                                              
00438         }
00439         mImport -> setItem ("InvY","on");
00440 }                   
00441 
00442 //====================================
00443 // disableWheel
00444 //------------------------------------
00445 void SaXManipulateMice::disableWheel (void) {
00446         // .../
00449         // ----
00450         if (! mImport) {
00451                 return;
00452         }
00453         mImport -> setItem ("ZAxisMapping","");
00454 }
00455 
00456 //====================================
00457 // disableXAxisInvertation
00458 //------------------------------------
00459 void SaXManipulateMice::disableXAxisInvertation (void) {
00460         // .../
00463         // ----
00464         if (! mImport) {
00465                 return;
00466         }
00467         mImport -> setItem ("InvX","");
00468 }
00469 
00470 //====================================
00471 // disableYAxisInvertation
00472 //------------------------------------
00473 void SaXManipulateMice::disableYAxisInvertation (void) {
00474         // .../
00477         // ----
00478         if (! mImport) {
00479                 return;
00480         }
00481         mImport -> setItem ("InvY","");
00482 }
00483 
00484 //====================================
00485 // enableLeftHandMapping
00486 //------------------------------------
00487 void SaXManipulateMice::enableLeftHandMapping  ( void ) {
00488         // .../
00491         // ----
00492         if (! mImport) {
00493                 return;
00494         }
00495         mImport -> setItem ("ButtonMapping","3 2 1");
00496 }
00497 
00498 //====================================
00499 // disableLeftHandMapping
00500 //------------------------------------
00501 void SaXManipulateMice::disableLeftHandMapping ( void ) {
00502         // .../
00505         // ----
00506         if (! mImport) {
00507                 return;
00508         }
00509         mImport -> setItem ("ButtonMapping","");
00510 }
00511 
00512 //====================================
00513 // isMouse
00514 //------------------------------------
00515 bool SaXManipulateMice::isMouse (void) {
00516         // .../
00521         // ----
00522         if (! mImport) {
00523                 return false;
00524         }
00525         QString driver = getDriver();
00526         QString fashion = mImport -> getItem ("InputFashion");
00527         if ((driver == "mouse") || (driver == "evdev")) {
00528                 if (fashion != "MultiSeat") {
00529                         return true;
00530                 }
00531                 return false;
00532         }
00533         if ((fashion != "Tablet")     &&
00534                 (fashion != "Pen")        &&
00535                 (fashion != "Eraser")     &&
00536                 (fashion != "VNC")        &&
00537                 (fashion != "Keyboard")   &&
00538                 (fashion != "Touchpanel")
00539         ) {
00540                 return true;
00541         }
00542         return false;
00543 }
00544 
00545 //====================================
00546 // isWheelEnabled
00547 //------------------------------------
00548 bool SaXManipulateMice::isWheelEnabled (void) {
00549         // .../
00552         // ----
00553         if (! mImport) {
00554                 return false;
00555         }
00556         QString zaxis = mImport -> getItem ("ZAxisMapping");
00557         if (! zaxis.isEmpty()) {
00558                 return true;
00559         }
00560         return false;
00561 }
00562 
00563 //====================================
00564 // isLeftHandEnabled
00565 //------------------------------------
00566 bool SaXManipulateMice::isLeftHandEnabled (void) {
00567         // .../
00570         // ----
00571         if (! mImport) {
00572                 return false;
00573         }
00574         QString mapping = mImport -> getItem ("ButtonMapping");
00575         if (mapping.contains("3 2 1")) {
00576                 return true;
00577         }
00578         return false;
00579 }
00580 
00581 //====================================
00582 // isXAxisInverted
00583 //------------------------------------
00584 bool SaXManipulateMice::isXAxisInverted (void) {
00585         // .../
00588         // ----
00589         if (! mImport) {
00590                 return false;
00591         }
00592         QString xaxis = mImport -> getItem ("InvX");
00593         if (xaxis == "on") {                      
00594                 return true; 
00595         }                                                            
00596         return false;
00597 }
00598 
00599 //====================================
00600 // isYAxisInverted
00601 //------------------------------------
00602 bool SaXManipulateMice::isYAxisInverted (void) {
00603         // .../
00606         // ----
00607         if (! mImport) {
00608                 return false;                 
00609         }
00610         QString yaxis = mImport -> getItem ("InvY");
00611         if (yaxis == "on") {  
00612                 return true;                                   
00613         }
00614         return false;
00615 }
00616 
00617 //====================================
00618 // isWheelEmulated
00619 //------------------------------------
00620 bool SaXManipulateMice::isWheelEmulated (void) {
00621         // .../
00624         // ----
00625         if (! mImport) {
00626                 return false;
00627         }
00628         QString emulate = mImport -> getItem ("EmulateWheel");
00629         if (! emulate.isEmpty()) {
00630                 return true;
00631         }
00632         return false;
00633 }
00634 
00635 //====================================
00636 // isButtonEmulated
00637 //------------------------------------
00638 bool SaXManipulateMice::isButtonEmulated (void) {
00639         // .../
00642         // ----
00643         if (! mImport) {
00644                 return false;
00645         }
00646         QString emulate = mImport -> getItem ("Emulate3Buttons");
00647         if (emulate == "on") {
00648                 return true;
00649         }
00650         return false;
00651 }
00652 
00653 //====================================
00654 // getWheelEmulatedButton
00655 //------------------------------------
00656 int SaXManipulateMice::getWheelEmulatedButton (void) {
00657         // .../
00661         // ----
00662         if (! isWheelEmulated()) {
00663                 return -1;
00664         }
00665         int btn = mImport -> getItem ("EmulateWheel").toInt();
00666         return btn;
00667 }
00668 
00669 //====================================
00670 // getMouseList
00671 //------------------------------------
00672 QList<QString> SaXManipulateMice::getMouseList (void) {
00673         // .../
00677         // ----
00678         mCDBMouseList.clear();
00679         if ( ! mCDBMice ) {
00680                 mCDBMice = new SaXProcess ();
00681                 mCDBMice -> start (CDB_POINTERS);
00682         }
00683         QDict< QDict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00684         QDictIterator< QDict<QString> > it (CDBData);
00685         for (; it.current(); ++it) {
00686                 mCDBMouseList.append (new QString (it.currentKey()));
00687         }
00688         return mCDBMouseList;
00689 }
00690 
00691 //====================================
00692 // getMouseVendorList
00693 //------------------------------------
00694 QList<QString> SaXManipulateMice::getMouseVendorList (void) {
00695         // .../
00698         // ----
00699         QList<QString> mouseList = getMouseList();
00700         mCDBMouseList.clear();
00701         QListIterator<QString> it (mouseList);
00702         for (; it.current(); ++it) {
00703                 QStringList vnlist = QStringList::split ( ":", *it.current() );
00704                 QString* vendorName = new QString (vnlist.first());
00705                 int hasVendor = false;
00706                 QListIterator<QString> io (mCDBMouseList);
00707                 for (; io.current(); ++io) {
00708                 if ( *io.current() == *vendorName ) {
00709                         hasVendor = true;
00710                         break;
00711                 }
00712                 }
00713                 if (! hasVendor ) {
00714                         mCDBMouseList.append ( vendorName );
00715                 }
00716         }
00717         return mCDBMouseList;
00718 }
00719 
00720 //====================================
00721 // getMouseModelList
00722 //------------------------------------
00723 QList<QString> SaXManipulateMice::getMouseModelList (
00724         const QString& vendor
00725 ) {
00726         // .../
00729         // ----
00730         QList<QString> mouseList = getMouseList();
00731         mCDBMouseList.clear();
00732         QListIterator<QString> it (mouseList);
00733         for (; it.current(); ++it) {
00734                 QStringList vnlist = QStringList::split ( ":", *it.current() );
00735                 QString vendorName = vnlist.first();
00736                 QString* modelName = new QString (vnlist.last());
00737                 if ( vendorName == vendor ) {
00738                         mCDBMouseList.append ( modelName );
00739                 }
00740         }
00741         return mCDBMouseList;
00742 }
00743 
00744 //====================================
00745 // setMouse
00746 //------------------------------------
00747 void SaXManipulateMice::setMouse ( const QString& group ) {
00748         // .../
00752         // ----
00753         if ( ! mCDBMice ) {
00754                 mCDBMice = new SaXProcess ();
00755                 mCDBMice -> start (CDB_POINTERS);
00756         }
00757         QList< QDict<QString> > data;
00758         data = mCDBMice -> getTablePointerCDB_DATA (
00759                 group
00760         );
00761         // .../
00762         // move the data record to the correct position
00763         // refering to the section ID -> mPointer
00764         // ----
00765         QDict<QString>* record = data.take(0);
00766         for (int n=0;n < mPointer;n++) {
00767                 data.append(new QDict<QString>());
00768         }
00769         data.append ( record );
00770         // .../
00771         // merge the data into the current section now
00772         // ----
00773         if (data.isEmpty()) {
00774                 excCDBRecordNotFound (group);
00775                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
00776                 return;
00777         }
00778         mImport -> merge ( data );
00779         // .../
00780         // set vendor and name tag
00781         // ----
00782         QStringList nameList = QStringList::split ( ":", group );
00783         mImport -> setItem ( "Vendor", nameList.first() );
00784         mImport -> setItem ( "Name"  , nameList.last()  );
00785 }
00786 
00787 //====================================
00788 // setMouse
00789 //------------------------------------
00790 void SaXManipulateMice::setMouse (
00791         const QString& vendor, const QString& model
00792 ) {
00793         // .../
00796         // ----
00797         setMouse (vendor+":"+model);
00798 }
00799 
00800 //====================================
00801 // getMouseData
00802 //------------------------------------
00803 QDict<QString> SaXManipulateMice::getMouseData (
00804         const QString& group
00805 ) {
00806         // .../
00809         // ----
00810         mCDBMouseData.clear();
00811         if ( ! mCDBMice ) {
00812                 mCDBMice = new SaXProcess ();
00813                 mCDBMice -> start (CDB_POINTERS);
00814         }
00815         QDict< QDict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00816         QDictIterator< QDict<QString> > it (CDBData);
00817         for (; it.current(); ++it) {
00818                 if ( it.currentKey() == group ) {
00819                         mCDBMouseData = *it.current();
00820                         break;
00821                 }
00822         }
00823         return mCDBMouseData;
00824 }
00825 
00826 //====================================
00827 // getMouseData
00828 //------------------------------------
00829 QDict<QString> SaXManipulateMice::getMouseData (
00830         const QString& vendor, const QString& name
00831 ) {
00832         // .../
00835         // ----
00836         return getMouseData (vendor+":"+name);
00837 }
00838 
00839 
00840 //====================================
00841 // Constructor...
00842 //------------------------------------
00843 SaXManipulateTablets::SaXManipulateTablets (
00844         SaXImport* pointer, SaXImport* layout, int id
00845 ) : SaXManipulateTabletsIF (pointer,id) {
00846         // .../
00849         // ----
00850         mManipInputDevices = new SaXManipulateDevices (pointer,layout);
00851         mCDBTabletModules = 0;
00852         mCDBTablets = 0;
00853         mCDBPens = 0;
00854         mCDBPads = 0;
00855 }
00856 
00857 //====================================
00858 // setType
00859 //------------------------------------
00860 void SaXManipulateTablets::setType (const QString& type) {
00861         // .../
00864         // ----
00865         if (! mImport) {
00866                 return;
00867         }
00868         mImport -> setItem ("TabletType",type);
00869 }
00870 
00871 //====================================
00872 // setMode
00873 //------------------------------------
00874 void SaXManipulateTablets::setMode (const QString& mode) {
00875         // .../
00878         // ----
00879         if (! mImport) {
00880                 return;
00881         }
00882         mImport -> setItem ("TabletMode",mode);
00883 }
00884 
00885 //====================================
00886 // isTablet
00887 //------------------------------------
00888 bool SaXManipulateTablets::isTablet (void) {
00889         // .../ 
00892         // ----
00893         if (! mImport) {
00894                 return false;
00895         }
00896         QString fashion = mImport -> getItem ("InputFashion");
00897         if (fashion == "Tablet") {
00898                 return true;
00899         }
00900         return false;
00901 }
00902 
00903 //====================================
00904 // isPen
00905 //------------------------------------
00906 bool SaXManipulateTablets::isPen (void) {
00907         // .../
00910         // ----
00911         if (! mImport) {
00912                 return false;
00913         }
00914         QString fashion = mImport -> getItem ("InputFashion");
00915         if (fashion == "Pen") {
00916                 return true;
00917         }
00918         return false;
00919 }
00920 
00921 //====================================
00922 // isEraser
00923 //------------------------------------
00924 bool SaXManipulateTablets::isEraser (void) {
00925         // .../
00929         // ----
00930         if (! mImport) {
00931                 return false;
00932         }
00933         QString fashion = mImport -> getItem ("InputFashion");
00934         if (fashion == "Eraser") {
00935                 return true;
00936         }
00937         return false;
00938 }
00939 
00940 //====================================
00941 // isPad
00942 //------------------------------------
00943 bool SaXManipulateTablets::isPad (void) {
00944         // .../
00947         // ----
00948         if (! mImport) {
00949                 return false;
00950         }
00951         QString fashion = mImport -> getItem ("InputFashion");
00952         if (fashion == "Pad") {
00953                 return true;
00954         }
00955         return false;
00956 }
00957 
00958 //====================================
00959 // getName
00960 //------------------------------------
00961 QString SaXManipulateTablets::getName (void) {
00962         // .../
00964         // ----
00965         if (! mImport) {
00966                 return QString();
00967         }
00968         return mImport -> getItem ("Name");
00969 }
00970 
00971 //====================================
00972 // getVendor
00973 //------------------------------------
00974 QString SaXManipulateTablets::getVendor (void) {
00975         // .../
00977         // ----
00978         if (! mImport) {
00979                 return QString();
00980         }
00981         return mImport -> getItem ("Vendor");
00982 }
00983 
00984 //====================================
00985 // getType
00986 //------------------------------------
00987 QString SaXManipulateTablets::getType (void) {
00988         // .../
00991         // ----
00992         if (! mImport) {
00993                 return QString();
00994         }
00995         return mImport -> getItem ("TabletType");
00996 }
00997 
00998 //====================================
00999 // getMode
01000 //------------------------------------
01001 QString SaXManipulateTablets::getMode (void) {
01002         // .../
01005         // ----
01006         if (! mImport) {
01007                 return QString();
01008         }
01009         return mImport -> getItem ("TabletMode");       
01010 }
01011 
01012 //====================================
01013 // getTabletDrivers
01014 //------------------------------------
01015 QList<QString> SaXManipulateTablets::getTabletDrivers (void) {
01016         // .../
01019         // ----
01020         mCDBTabletDrivers.clear();
01021         if ( ! mCDBTabletModules ) {
01022                 mCDBTabletModules = new SaXProcess ();
01023                 mCDBTabletModules -> start (CDB_TABLETMODULES);
01024         }
01025         QDict< QDict<QString> > CDBModules=mCDBTabletModules->getTablePointerCDB();
01026         QDictIterator< QDict<QString> > it (CDBModules);
01027         for (; it.current(); ++it) {
01028                 mCDBTabletDrivers.append (new QString(it.currentKey()));
01029         }
01030         return mCDBTabletDrivers;
01031 }
01032 
01033 //====================================
01034 // getTabletOptions
01035 //------------------------------------
01036 QDict<QString> SaXManipulateTablets::getTabletOptions (const QString& driver) {
01037         // .../
01043         // ----
01044         mCDBTabletOptions.clear();
01045         if ( ! mCDBTabletModules ) {
01046                 mCDBTabletModules = new SaXProcess ();
01047                 mCDBTabletModules -> start (CDB_TABLETMODULES);
01048         }
01049         QList< QDict<QString> > opts;
01050         opts = mCDBTabletModules -> getTablePointerCDB_DATA (
01051                 driver
01052         );
01053         if (opts.isEmpty()) {
01054                 excCDBRecordNotFound (driver);
01055                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01056                 return QDict<QString>();
01057         }
01058         mCDBTabletOptions = *opts.at(0);
01059         return mCDBTabletOptions;
01060 }
01061 
01062 //====================================
01063 // getTabletList
01064 //------------------------------------
01065 QList<QString> SaXManipulateTablets::getTabletList (void) {
01066         // .../
01070         // ----
01071         mCDBTabletList.clear();
01072         if ( ! mCDBTablets ) {
01073                 mCDBTablets = new SaXProcess ();
01074                 mCDBTablets -> start (CDB_TABLETS);
01075         }
01076         QDict< QDict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01077         QDictIterator< QDict<QString> > it (CDBData);
01078         for (; it.current(); ++it) {
01079                 mCDBTabletList.append (new QString (it.currentKey()));
01080         }
01081         return mCDBTabletList;
01082 }
01083 
01084 //====================================
01085 // getTabletVendorList
01086 //------------------------------------
01087 QList<QString> SaXManipulateTablets::getTabletVendorList (void) {
01088         // .../
01091         // ----
01092         QList<QString> tabletList = getTabletList();
01093         mCDBTabletList.clear();
01094         QListIterator<QString> it (tabletList);
01095         for (; it.current(); ++it) {
01096                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01097                 QString* vendorName = new QString (vnlist.first());
01098                 int hasVendor = false;
01099                 QListIterator<QString> io (mCDBTabletList);
01100                 for (; io.current(); ++io) {
01101                 if ( *io.current() == *vendorName ) {
01102                         hasVendor = true;
01103                         break;
01104                 }
01105                 }
01106                 if (! hasVendor ) {
01107                         mCDBTabletList.append ( vendorName );
01108                 }
01109         }
01110         return mCDBTabletList;
01111 }
01112 
01113 //====================================
01114 // getTabletModelList
01115 //------------------------------------
01116 QList<QString> SaXManipulateTablets::getTabletModelList (
01117         const QString& vendor
01118 ) {
01119         // .../
01122         // ----
01123         QList<QString> tabletList = getTabletList();
01124         mCDBTabletList.clear();
01125         QListIterator<QString> it (tabletList);
01126         for (; it.current(); ++it) {
01127                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01128                 QString vendorName = vnlist.first();
01129                 QString* modelName = new QString (vnlist.last());
01130                 if ( vendorName == vendor ) {
01131                         mCDBTabletList.append ( modelName );
01132                 }
01133         }
01134         return mCDBTabletList;
01135 }
01136 
01137 //====================================
01138 // getTabletData
01139 //------------------------------------
01140 QDict<QString> SaXManipulateTablets::getTabletData ( const QString& group ) {
01141         // .../
01144         // ----
01145         mCDBTabletData.clear();
01146         if ( ! mCDBTablets ) {
01147                 mCDBTablets = new SaXProcess ();
01148                 mCDBTablets -> start (CDB_TABLETS);
01149         }
01150         QDict< QDict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01151         QDictIterator< QDict<QString> > it (CDBData);
01152         for (; it.current(); ++it) {
01153                 if ( it.currentKey() == group ) {
01154                         mCDBTabletData = *it.current();
01155                         break;
01156                 }
01157         }
01158         return mCDBTabletData;
01159 }
01160 
01161 //====================================
01162 // getTabletData
01163 //------------------------------------
01164 QDict<QString> SaXManipulateTablets::getTabletData (
01165         const QString& vendor,const QString& name
01166 ) {
01167         // .../
01170         // ----
01171         return getTabletData (vendor+":"+name);
01172 }
01173 
01174 //====================================
01175 // getPenData
01176 //------------------------------------
01177 QDict<QString> SaXManipulateTablets::getPenData ( const QString& group ) {
01178         // .../
01181         // ----
01182         mCDBTabletData.clear();
01183         if ( ! mCDBPens ) {
01184                 mCDBPens = new SaXProcess ();
01185                 mCDBPens -> start (CDB_PENS);
01186         }
01187         QDict< QDict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01188         QDictIterator< QDict<QString> > it (CDBData);
01189         for (; it.current(); ++it) {
01190                 if ( it.currentKey() == group ) {
01191                         mCDBTabletData = *it.current();
01192                         break;
01193                 }
01194         }
01195         return mCDBTabletData;
01196 }
01197 
01198 //====================================
01199 // getPenData
01200 //------------------------------------
01201 QDict<QString> SaXManipulateTablets::getPenData (
01202         const QString& vendor,const QString& name
01203 ) {
01204         // .../
01207         // ----
01208         return getPenData (vendor+":"+name);
01209 }
01210 
01211 //====================================
01212 // getPenList
01213 //------------------------------------
01214 QList<QString> SaXManipulateTablets::getPenList (void) {
01215         // .../
01219         // ----
01220         mCDBPenList.clear();
01221         if ( ! mCDBPens ) {
01222                 mCDBPens = new SaXProcess ();
01223                 mCDBPens -> start (CDB_PENS);
01224         }
01225         QDict< QDict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01226         QDictIterator< QDict<QString> > it (CDBData);
01227         for (; it.current(); ++it) {
01228                 mCDBPenList.append (new QString (it.currentKey()));
01229         }
01230         return mCDBPenList;
01231 }
01232 
01233 //====================================
01234 // setTablet
01235 //------------------------------------
01236 void SaXManipulateTablets::setTablet (const QString& group) {
01237         // .../
01241         // ----
01242         if ( ! mCDBTablets ) {
01243                 mCDBTablets = new SaXProcess ();
01244                 mCDBTablets -> start (CDB_TABLETS);
01245         }
01246         QList< QDict<QString> > data;
01247         data = mCDBTablets -> getTablePointerCDB_DATA (
01248                 group
01249         );
01250         // .../
01251         // move the data record to the correct position
01252         // refering to the section ID -> mPointer
01253         // ----
01254         QDict<QString>* record = data.take(0);
01255         for (int n=0;n < mPointer;n++) {
01256                 data.append(new QDict<QString>());
01257         }
01258         data.append ( record );
01259         // .../
01260         // merge the data into the current section now
01261         // ----
01262         if (data.isEmpty()) {
01263                 excCDBRecordNotFound (group);
01264                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01265                 return;
01266         }
01267         mImport -> merge ( data );
01268         // .../
01269         // set vendor and name tag
01270         // ----
01271         QStringList nameList = QStringList::split ( ":", group );
01272         mImport -> setItem ( "Vendor", nameList.first() );
01273         mImport -> setItem ( "Name"  , nameList.last()  );
01274 }
01275 //====================================
01276 // setTablet
01277 //------------------------------------
01278 void SaXManipulateTablets::setTablet (
01279         const QString& vendor, const QString& model
01280 ) {
01281         // .../
01284         // ----
01285         setTablet (vendor+":"+model);
01286 }
01287 
01288 //====================================
01289 // addPad
01290 //------------------------------------
01291 int SaXManipulateTablets::addPad (const QString& group) {
01292         // .../
01298         // ----
01299         if ( ! mCDBPads ) {
01300                 mCDBPads = new SaXProcess ();
01301                 mCDBPads -> start (CDB_PADS);
01302         }
01303         QList< QDict<QString> > data;
01304         data = mCDBPads -> getTablePointerCDB_DATA (
01305                 group
01306         );
01307         if (data.isEmpty()) {
01308                 excCDBRecordNotFound (group);
01309                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01310                 return -1;
01311         }
01312         // .../
01313         // set input fashion type for the selected pad
01314         // ----
01315         QDict<QString> penData = *data.at(0);
01316         QString* type = penData["TabletType"];
01317         if (! type) {
01318                 excPointerFashionTypeFailed ("undefined");
01319                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01320                 return -1;
01321         }
01322         if (*type != "pad") {
01323                 excPointerFashionTypeFailed (*type);
01324                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01325                 return -1;
01326         }
01327         QString fashion (SAX_INPUT_PAD);
01328         // .../
01329         // create new input device for the pad and make
01330         // it the current pointer device
01331         // ----
01332         int newPad = mManipInputDevices->addInputDevice (fashion);
01333         if ( ! selectPointer (newPad)) {
01334                 return -1;
01335         }
01336         // .../
01337         // move the data record to the correct position
01338         // refering to the section ID -> mPointer
01339         // ----
01340         QDict<QString>* record = data.take(0);
01341         for (int n=0;n < mPointer;n++) {
01342                 data.append(new QDict<QString>());
01343         }
01344         data.append ( record );
01345         // .../
01346         // merge the pad data now into the current section
01347         // ----
01348         mImport -> merge ( data );
01349         // .../
01350         // set vendor and name tag
01351         // ----
01352         QStringList nameList = QStringList::split ( ":", group );
01353         mImport -> setItem ( "Vendor", nameList.first() );
01354         mImport -> setItem ( "Name"  , nameList.last()  );
01355         return newPad;
01356 }
01357 //====================================
01358 // addPad
01359 //------------------------------------
01360 int SaXManipulateTablets::addPad (
01361         const QString& vendor, const QString& model
01362 ) {
01363         // .../
01369         // ----
01370         return addPad (vendor+":"+model);
01371 }   
01372 
01373 //====================================
01374 // addPen
01375 //------------------------------------
01376 int SaXManipulateTablets::addPen (const QString& group) {
01377         // .../
01383         // ----
01384         if ( ! mCDBPens ) {
01385                 mCDBPens = new SaXProcess ();
01386                 mCDBPens -> start (CDB_PENS);
01387         }
01388         QList< QDict<QString> > data;
01389         data = mCDBPens -> getTablePointerCDB_DATA (
01390                 group
01391         );
01392         if (data.isEmpty()) {
01393                 excCDBRecordNotFound (group);
01394                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01395                 return -1;
01396         }
01397         // .../
01398         // set input fashion type for the selected pen
01399         // ----
01400         QDict<QString> penData = *data.at(0);
01401         QString* type = penData["TabletType"];
01402         if (! type) {
01403                 excPointerFashionTypeFailed ("undefined");
01404                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01405                 return -1;
01406         }
01407         if ((*type != "stylus") && (*type != "eraser")) {
01408                 excPointerFashionTypeFailed (*type);
01409                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01410                 return -1;
01411         }
01412         QString fashion (SAX_INPUT_PEN);
01413         if (*type == "eraser") {
01414                 fashion = SAX_INPUT_ERASER;
01415         }
01416         // .../
01417         // create new input device for the pen and make
01418         // it the current pointer device
01419         // ----
01420         int newPen = mManipInputDevices->addInputDevice (fashion);
01421         if ( ! selectPointer (newPen)) {
01422                 return -1;
01423         }
01424         // .../
01425         // move the data record to the correct position
01426         // refering to the section ID -> mPointer
01427         // ----
01428         QDict<QString>* record = data.take(0);
01429         for (int n=0;n < mPointer;n++) {
01430                 data.append(new QDict<QString>());
01431         }
01432         data.append ( record );
01433         // .../
01434         // merge the pen data now into the current section
01435         // ----
01436         mImport -> merge ( data );
01437         // .../
01438         // set vendor and name tag
01439         // ----
01440         QStringList nameList = QStringList::split ( ":", group );
01441         mImport -> setItem ( "Vendor", nameList.first() );
01442         mImport -> setItem ( "Name"  , nameList.last()  );
01443         return newPen;
01444 }
01445 //====================================
01446 // addPen
01447 //------------------------------------
01448 int SaXManipulateTablets::addPen (
01449         const QString& vendor, const QString& model
01450 ) {
01451         // .../
01456         // ----
01457         return addPen (vendor+":"+model);
01458 }
01459 
01460 //====================================
01461 // removePen
01462 //------------------------------------
01463 int SaXManipulateTablets::removePen ( int id ) {
01464         // .../
01469         // ----
01470         if (! selectPointer ( id )) {
01471                 return -1;
01472         }
01473         QString fashion (
01474                 mImport->getItem("InputFashion")
01475         );
01476         if (
01477                 (fashion != QString(SAX_INPUT_PEN ))   &&
01478                 (fashion != QString(SAX_INPUT_ERASER))
01479         ) {
01480                 excPointerFashionTypeFailed (fashion);
01481                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01482                 return -1;
01483         }
01484         return mManipInputDevices->removeInputDevice (id);
01485 }
01486 
01487 //====================================
01488 // removePad
01489 //------------------------------------
01490 int SaXManipulateTablets::removePad ( int id ) {
01491         // .../
01496         // ----
01497         if (! selectPointer ( id )) {
01498                 return -1;
01499         }
01500         QString fashion (
01501                 mImport->getItem("InputFashion")
01502         );
01503         if (fashion != QString(SAX_INPUT_PAD)) {
01504                 excPointerFashionTypeFailed (fashion);
01505                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01506                 return -1;
01507         }
01508         return mManipInputDevices->removeInputDevice (id);
01509 }
01510 
01511 //====================================
01512 // Constructor...
01513 //------------------------------------
01514 SaXManipulateTouchscreens::SaXManipulateTouchscreens (
01515         SaXImport* in, int ptr
01516 ) : SaXManipulateTouchscreensIF (in,ptr) {
01517         // .../
01521         // ----
01522         mCDBPanels = 0;
01523 }
01524 
01525 //====================================
01526 // isTouchpanel
01527 //------------------------------------
01528 bool SaXManipulateTouchscreens::isTouchpanel (void) {
01529         // .../
01533         // ----
01534         if (! mImport) {
01535                 return false;
01536         }
01537         QString fashion = mImport -> getItem ("InputFashion");
01538         if (fashion == "Touchpanel") {
01539                 return true;
01540         }
01541         return false;
01542 }
01543 
01544 //====================================
01545 // getName
01546 //------------------------------------
01547 QString SaXManipulateTouchscreens::getName ( void ) {
01548         // .../
01552         // ----
01553         if (! mImport) {
01554                 return QString();
01555         }
01556         QString name = mImport -> getItem ("Name");
01557         QStringList vnlist = QStringList::split ( ";", name );
01558         return vnlist.last();
01559 }
01560 
01561 //====================================
01562 // getVendor
01563 //------------------------------------
01564 QString SaXManipulateTouchscreens::getVendor ( void ) {
01565         // .../
01569         // ----
01570         if (! mImport) {
01571                 return QString();
01572         }
01573         QString name = mImport -> getItem ("Name");
01574         QStringList vnlist = QStringList::split ( ";", name );
01575         return vnlist.first();
01576 }
01577 
01578 //====================================
01579 // getType
01580 //------------------------------------
01581 QString SaXManipulateTouchscreens::getType (void) {
01582         // .../
01586         // ----
01587         if (! mImport) {
01588                 return QString();
01589         }
01590         return mImport -> getItem ("TabletType");
01591 }
01592 
01593 //====================================
01594 // getCDBPanelList
01595 //------------------------------------
01596 QList<QString> SaXManipulateTouchscreens::getPanelList (void) {
01597         // .../
01601         // ----
01602         mCDBPanelList.clear();
01603         if ( ! mCDBPanels ) {
01604                 mCDBPanels = new SaXProcess ();
01605                 mCDBPanels -> start (CDB_TOUCHERS);
01606         }
01607         QDict< QDict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01608         QDictIterator< QDict<QString> > it (CDBData);
01609         for (; it.current(); ++it) {
01610                 mCDBPanelList.append (new QString (it.currentKey()));
01611         }
01612         return mCDBPanelList;
01613 }
01614 
01615 //====================================
01616 // getCDBPanelVendorList
01617 //------------------------------------
01618 QList<QString> SaXManipulateTouchscreens::getPanelVendorList (void) {
01619         // .../
01622         // ----
01623         QList<QString> panelList = getPanelList();
01624         mCDBPanelList.clear();
01625         QListIterator<QString> it (panelList);
01626         for (; it.current(); ++it) {
01627                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01628                 QString* vendorName = new QString (vnlist.first());
01629                 int hasVendor = false;
01630                 QListIterator<QString> io (mCDBPanelList);
01631                 for (; io.current(); ++io) {
01632                 if ( *io.current() == *vendorName ) {
01633                         hasVendor = true;
01634                         break;
01635                 }
01636                 }
01637                 if (! hasVendor ) {
01638                         mCDBPanelList.append ( vendorName );
01639                 }
01640         }
01641         return mCDBPanelList;
01642 }
01643 
01644 //====================================
01645 // getCDBPanelModelList
01646 //------------------------------------
01647 QList<QString> SaXManipulateTouchscreens::getPanelModelList (
01648         const QString& vendor
01649 ) {
01650         // .../
01653         // ----
01654         QList<QString> panelList = getPanelList();
01655         mCDBPanelList.clear();
01656         QListIterator<QString> it (panelList);
01657         for (; it.current(); ++it) {
01658                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01659                 QString vendorName = vnlist.first();
01660                 QString* modelName = new QString (vnlist.last());
01661                 if ( vendorName == vendor ) {
01662                         mCDBPanelList.append ( modelName );
01663                 }
01664         }
01665         return mCDBPanelList;
01666 }
01667 
01668 //====================================
01669 // getPanelData
01670 //------------------------------------
01671 QDict<QString> SaXManipulateTouchscreens::getPanelData (
01672         const QString& group
01673 ) {
01674         // .../
01677         // ----
01678         mCDBPanelData.clear();
01679         if ( ! mCDBPanels ) {
01680                 mCDBPanels = new SaXProcess ();
01681                 mCDBPanels -> start (CDB_TOUCHERS);
01682         }
01683         QDict< QDict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01684         QDictIterator< QDict<QString> > it (CDBData);
01685         for (; it.current(); ++it) {
01686                 if ( it.currentKey() == group ) {
01687                         mCDBPanelData = *it.current();
01688                         break;
01689                 }
01690         }
01691         return mCDBPanelData;
01692 }
01693 
01694 //====================================
01695 // getPanelData
01696 //------------------------------------
01697 QDict<QString> SaXManipulateTouchscreens::getPanelData (
01698         const QString& vendor,const QString& name
01699 ) {
01700         // .../
01703         // ----
01704         return getPanelData (vendor+":"+name);
01705 }
01706 
01707 //====================================
01708 // setTouchPanel
01709 //------------------------------------
01710 void SaXManipulateTouchscreens::setTouchPanel (const QString& group) {
01711         // .../
01715         // ----
01716         if ( ! mCDBPanels ) {
01717                 mCDBPanels = new SaXProcess ();
01718                 mCDBPanels -> start (CDB_TOUCHERS);
01719         }
01720         QList< QDict<QString> > data;
01721         data = mCDBPanels -> getTablePointerCDB_DATA (
01722                 group
01723         );
01724         if (data.isEmpty()) {
01725                 excCDBRecordNotFound (group);
01726                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01727                 return;
01728         }
01729         // .../
01730         // move the data record to the correct position
01731         // refering to the section ID -> mPointer
01732         // ----
01733         QDict<QString>* record = data.take(0);
01734         for (int n=0;n < mPointer;n++) {
01735                 data.append(new QDict<QString>());
01736         }
01737         data.append ( record );
01738         // .../
01739         // merge the toucher data into the current section
01740         // ----
01741         mImport -> merge ( data );
01742         // .../
01743         // set vendor and name tag
01744         // ----
01745         QStringList nameList = QStringList::split ( ":", group );
01746         setNamePair (
01747                 nameList.first(),
01748                 nameList.last()
01749         );
01750 }
01751 
01752 //====================================
01753 // setTouchPanel
01754 //------------------------------------
01755 void SaXManipulateTouchscreens::setTouchPanel (
01756         const QString& vendor, const QString& model
01757 ) {
01758         // .../
01761         // ----
01762         setTouchPanel (vendor+":"+model);
01763 }
01764 } // end namespace

Generated on Tue Sep 25 20:18:16 2007 for libsax by  doxygen 1.5.3