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 // isMouse
00486 //------------------------------------
00487 bool SaXManipulateMice::isMouse (void) {
00488         // .../
00493         // ----
00494         if (! mImport) {
00495                 return false;
00496         }
00497         QString driver = getDriver();
00498         QString fashion = mImport -> getItem ("InputFashion");
00499         if ((driver == "mouse") || (driver == "evdev")) {
00500                 if (fashion != "MultiSeat") {
00501                         return true;
00502                 }
00503                 return false;
00504         }
00505         if ((fashion != "Tablet")     &&
00506                 (fashion != "Pen")        &&
00507                 (fashion != "Eraser")     &&
00508                 (fashion != "VNC")        &&
00509                 (fashion != "Keyboard")   &&
00510                 (fashion != "Touchpanel")
00511         ) {
00512                 return true;
00513         }
00514         return false;
00515 }
00516 
00517 //====================================
00518 // isWheelEnabled
00519 //------------------------------------
00520 bool SaXManipulateMice::isWheelEnabled (void) {
00521         // .../
00524         // ----
00525         if (! mImport) {
00526                 return false;
00527         }
00528         QString zaxis = mImport -> getItem ("ZAxisMapping");
00529         if (! zaxis.isEmpty()) {
00530                 return true;
00531         }
00532         return false;
00533 }
00534 
00535 //====================================
00536 // isXAxisInverted
00537 //------------------------------------
00538 bool SaXManipulateMice::isXAxisInverted (void) {
00539         // .../
00542         // ----
00543         if (! mImport) {
00544                 return false;
00545         }
00546         QString xaxis = mImport -> getItem ("InvX");
00547         if (xaxis == "on") {                      
00548                 return true; 
00549         }                                                            
00550         return false;
00551 }
00552 
00553 //====================================
00554 // isYAxisInverted
00555 //------------------------------------
00556 bool SaXManipulateMice::isYAxisInverted (void) {
00557         // .../
00560         // ----
00561         if (! mImport) {
00562                 return false;                 
00563         }
00564         QString yaxis = mImport -> getItem ("InvY");
00565         if (yaxis == "on") {  
00566                 return true;                                   
00567         }
00568         return false;
00569 }
00570 
00571 //====================================
00572 // isWheelEmulated
00573 //------------------------------------
00574 bool SaXManipulateMice::isWheelEmulated (void) {
00575         // .../
00578         // ----
00579         if (! mImport) {
00580                 return false;
00581         }
00582         QString emulate = mImport -> getItem ("EmulateWheel");
00583         if (! emulate.isEmpty()) {
00584                 return true;
00585         }
00586         return false;
00587 }
00588 
00589 //====================================
00590 // isButtonEmulated
00591 //------------------------------------
00592 bool SaXManipulateMice::isButtonEmulated (void) {
00593         // .../
00596         // ----
00597         if (! mImport) {
00598                 return false;
00599         }
00600         QString emulate = mImport -> getItem ("Emulate3Buttons");
00601         if (emulate == "on") {
00602                 return true;
00603         }
00604         return false;
00605 }
00606 
00607 //====================================
00608 // getWheelEmulatedButton
00609 //------------------------------------
00610 int SaXManipulateMice::getWheelEmulatedButton (void) {
00611         // .../
00615         // ----
00616         if (! isWheelEmulated()) {
00617                 return -1;
00618         }
00619         int btn = mImport -> getItem ("EmulateWheel").toInt();
00620         return btn;
00621 }
00622 
00623 //====================================
00624 // getMouseList
00625 //------------------------------------
00626 QList<QString> SaXManipulateMice::getMouseList (void) {
00627         // .../
00631         // ----
00632         mCDBMouseList.clear();
00633         if ( ! mCDBMice ) {
00634                 mCDBMice = new SaXProcess ();
00635                 mCDBMice -> start (CDB_POINTERS);
00636         }
00637         QDict< QDict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00638         QDictIterator< QDict<QString> > it (CDBData);
00639         for (; it.current(); ++it) {
00640                 mCDBMouseList.append (new QString (it.currentKey()));
00641         }
00642         return mCDBMouseList;
00643 }
00644 
00645 //====================================
00646 // getMouseVendorList
00647 //------------------------------------
00648 QList<QString> SaXManipulateMice::getMouseVendorList (void) {
00649         // .../
00652         // ----
00653         QList<QString> mouseList = getMouseList();
00654         mCDBMouseList.clear();
00655         QListIterator<QString> it (mouseList);
00656         for (; it.current(); ++it) {
00657                 QStringList vnlist = QStringList::split ( ":", *it.current() );
00658                 QString* vendorName = new QString (vnlist.first());
00659                 int hasVendor = false;
00660                 QListIterator<QString> io (mCDBMouseList);
00661                 for (; io.current(); ++io) {
00662                 if ( *io.current() == *vendorName ) {
00663                         hasVendor = true;
00664                         break;
00665                 }
00666                 }
00667                 if (! hasVendor ) {
00668                         mCDBMouseList.append ( vendorName );
00669                 }
00670         }
00671         return mCDBMouseList;
00672 }
00673 
00674 //====================================
00675 // getMouseModelList
00676 //------------------------------------
00677 QList<QString> SaXManipulateMice::getMouseModelList (
00678         const QString& vendor
00679 ) {
00680         // .../
00683         // ----
00684         QList<QString> mouseList = getMouseList();
00685         mCDBMouseList.clear();
00686         QListIterator<QString> it (mouseList);
00687         for (; it.current(); ++it) {
00688                 QStringList vnlist = QStringList::split ( ":", *it.current() );
00689                 QString vendorName = vnlist.first();
00690                 QString* modelName = new QString (vnlist.last());
00691                 if ( vendorName == vendor ) {
00692                         mCDBMouseList.append ( modelName );
00693                 }
00694         }
00695         return mCDBMouseList;
00696 }
00697 
00698 //====================================
00699 // setMouse
00700 //------------------------------------
00701 void SaXManipulateMice::setMouse ( const QString& group ) {
00702         // .../
00706         // ----
00707         if ( ! mCDBMice ) {
00708                 mCDBMice = new SaXProcess ();
00709                 mCDBMice -> start (CDB_POINTERS);
00710         }
00711         QList< QDict<QString> > data;
00712         data = mCDBMice -> getTablePointerCDB_DATA (
00713                 group
00714         );
00715         // .../
00716         // move the data record to the correct position
00717         // refering to the section ID -> mPointer
00718         // ----
00719         QDict<QString>* record = data.take(0);
00720         for (int n=0;n < mPointer;n++) {
00721                 data.append(new QDict<QString>());
00722         }
00723         data.append ( record );
00724         // .../
00725         // merge the data into the current section now
00726         // ----
00727         if (data.isEmpty()) {
00728                 excCDBRecordNotFound (group);
00729                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
00730                 return;
00731         }
00732         mImport -> merge ( data );
00733         // .../
00734         // set vendor and name tag
00735         // ----
00736         QStringList nameList = QStringList::split ( ":", group );
00737         mImport -> setItem ( "Vendor", nameList.first() );
00738         mImport -> setItem ( "Name"  , nameList.last()  );
00739 }
00740 
00741 //====================================
00742 // setMouse
00743 //------------------------------------
00744 void SaXManipulateMice::setMouse (
00745         const QString& vendor, const QString& model
00746 ) {
00747         // .../
00750         // ----
00751         setMouse (vendor+":"+model);
00752 }
00753 
00754 //====================================
00755 // getMouseData
00756 //------------------------------------
00757 QDict<QString> SaXManipulateMice::getMouseData (
00758         const QString& group
00759 ) {
00760         // .../
00763         // ----
00764         mCDBMouseData.clear();
00765         if ( ! mCDBMice ) {
00766                 mCDBMice = new SaXProcess ();
00767                 mCDBMice -> start (CDB_POINTERS);
00768         }
00769         QDict< QDict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00770         QDictIterator< QDict<QString> > it (CDBData);
00771         for (; it.current(); ++it) {
00772                 if ( it.currentKey() == group ) {
00773                         mCDBMouseData = *it.current();
00774                         break;
00775                 }
00776         }
00777         return mCDBMouseData;
00778 }
00779 
00780 //====================================
00781 // getMouseData
00782 //------------------------------------
00783 QDict<QString> SaXManipulateMice::getMouseData (
00784         const QString& vendor, const QString& name
00785 ) {
00786         // .../
00789         // ----
00790         return getMouseData (vendor+":"+name);
00791 }
00792 
00793 
00794 //====================================
00795 // Constructor...
00796 //------------------------------------
00797 SaXManipulateTablets::SaXManipulateTablets (
00798         SaXImport* pointer, SaXImport* layout, int id
00799 ) : SaXManipulateTabletsIF (pointer,id) {
00800         // .../
00803         // ----
00804         mManipInputDevices = new SaXManipulateDevices (pointer,layout);
00805         mCDBTabletModules = 0;
00806         mCDBTablets = 0;
00807         mCDBPens = 0;
00808 }
00809 
00810 //====================================
00811 // setType
00812 //------------------------------------
00813 void SaXManipulateTablets::setType (const QString& type) {
00814         // .../
00817         // ----
00818         if (! mImport) {
00819                 return;
00820         }
00821         mImport -> setItem ("TabletType",type);
00822 }
00823 
00824 //====================================
00825 // setMode
00826 //------------------------------------
00827 void SaXManipulateTablets::setMode (const QString& mode) {
00828         // .../
00831         // ----
00832         if (! mImport) {
00833                 return;
00834         }
00835         mImport -> setItem ("TabletMode",mode);
00836 }
00837 
00838 //====================================
00839 // isTablet
00840 //------------------------------------
00841 bool SaXManipulateTablets::isTablet (void) {
00842         // .../ 
00845         // ----
00846         if (! mImport) {
00847                 return false;
00848         }
00849         QString fashion = mImport -> getItem ("InputFashion");
00850         if (fashion == "Tablet") {
00851                 return true;
00852         }
00853         return false;
00854 }
00855 
00856 //====================================
00857 // isPen
00858 //------------------------------------
00859 bool SaXManipulateTablets::isPen (void) {
00860         // .../
00863         // ----
00864         if (! mImport) {
00865                 return false;
00866         }
00867         QString fashion = mImport -> getItem ("InputFashion");
00868         if (fashion == "Pen") {
00869                 return true;
00870         }
00871         return false;
00872 }
00873 
00874 //====================================
00875 // isEraser
00876 //------------------------------------
00877 bool SaXManipulateTablets::isEraser (void) {
00878         // .../
00882         // ----
00883         if (! mImport) {
00884                 return false;
00885         }
00886         QString fashion = mImport -> getItem ("InputFashion");
00887         if (fashion == "Eraser") {
00888                 return true;
00889         }
00890         return false;
00891 }
00892 
00893 //====================================
00894 // getName
00895 //------------------------------------
00896 QString SaXManipulateTablets::getName (void) {
00897         // .../
00899         // ----
00900         if (! mImport) {
00901                 return QString();
00902         }
00903         return mImport -> getItem ("Name");
00904 }
00905 
00906 //====================================
00907 // getVendor
00908 //------------------------------------
00909 QString SaXManipulateTablets::getVendor (void) {
00910         // .../
00912         // ----
00913         if (! mImport) {
00914                 return QString();
00915         }
00916         return mImport -> getItem ("Vendor");
00917 }
00918 
00919 //====================================
00920 // getType
00921 //------------------------------------
00922 QString SaXManipulateTablets::getType (void) {
00923         // .../
00926         // ----
00927         if (! mImport) {
00928                 return QString();
00929         }
00930         return mImport -> getItem ("TabletType");
00931 }
00932 
00933 //====================================
00934 // getMode
00935 //------------------------------------
00936 QString SaXManipulateTablets::getMode (void) {
00937         // .../
00940         // ----
00941         if (! mImport) {
00942                 return QString();
00943         }
00944         return mImport -> getItem ("TabletMode");       
00945 }
00946 
00947 //====================================
00948 // getTabletDrivers
00949 //------------------------------------
00950 QList<QString> SaXManipulateTablets::getTabletDrivers (void) {
00951         // .../
00954         // ----
00955         mCDBTabletDrivers.clear();
00956         if ( ! mCDBTabletModules ) {
00957                 mCDBTabletModules = new SaXProcess ();
00958                 mCDBTabletModules -> start (CDB_TABLETMODULES);
00959         }
00960         QDict< QDict<QString> > CDBModules=mCDBTabletModules->getTablePointerCDB();
00961         QDictIterator< QDict<QString> > it (CDBModules);
00962         for (; it.current(); ++it) {
00963                 mCDBTabletDrivers.append (new QString(it.currentKey()));
00964         }
00965         return mCDBTabletDrivers;
00966 }
00967 
00968 //====================================
00969 // getTabletOptions
00970 //------------------------------------
00971 QDict<QString> SaXManipulateTablets::getTabletOptions (const QString& driver) {
00972         // .../
00978         // ----
00979         mCDBTabletOptions.clear();
00980         if ( ! mCDBTabletModules ) {
00981                 mCDBTabletModules = new SaXProcess ();
00982                 mCDBTabletModules -> start (CDB_TABLETMODULES);
00983         }
00984         QList< QDict<QString> > opts;
00985         opts = mCDBTabletModules -> getTablePointerCDB_DATA (
00986                 driver
00987         );
00988         if (opts.isEmpty()) {
00989                 excCDBRecordNotFound (driver);
00990                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
00991                 return QDict<QString>();
00992         }
00993         mCDBTabletOptions = *opts.at(0);
00994         return mCDBTabletOptions;
00995 }
00996 
00997 //====================================
00998 // getTabletList
00999 //------------------------------------
01000 QList<QString> SaXManipulateTablets::getTabletList (void) {
01001         // .../
01005         // ----
01006         mCDBTabletList.clear();
01007         if ( ! mCDBTablets ) {
01008                 mCDBTablets = new SaXProcess ();
01009                 mCDBTablets -> start (CDB_TABLETS);
01010         }
01011         QDict< QDict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01012         QDictIterator< QDict<QString> > it (CDBData);
01013         for (; it.current(); ++it) {
01014                 mCDBTabletList.append (new QString (it.currentKey()));
01015         }
01016         return mCDBTabletList;
01017 }
01018 
01019 //====================================
01020 // getTabletVendorList
01021 //------------------------------------
01022 QList<QString> SaXManipulateTablets::getTabletVendorList (void) {
01023         // .../
01026         // ----
01027         QList<QString> tabletList = getTabletList();
01028         mCDBTabletList.clear();
01029         QListIterator<QString> it (tabletList);
01030         for (; it.current(); ++it) {
01031                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01032                 QString* vendorName = new QString (vnlist.first());
01033                 int hasVendor = false;
01034                 QListIterator<QString> io (mCDBTabletList);
01035                 for (; io.current(); ++io) {
01036                 if ( *io.current() == *vendorName ) {
01037                         hasVendor = true;
01038                         break;
01039                 }
01040                 }
01041                 if (! hasVendor ) {
01042                         mCDBTabletList.append ( vendorName );
01043                 }
01044         }
01045         return mCDBTabletList;
01046 }
01047 
01048 //====================================
01049 // getTabletModelList
01050 //------------------------------------
01051 QList<QString> SaXManipulateTablets::getTabletModelList (
01052         const QString& vendor
01053 ) {
01054         // .../
01057         // ----
01058         QList<QString> tabletList = getTabletList();
01059         mCDBTabletList.clear();
01060         QListIterator<QString> it (tabletList);
01061         for (; it.current(); ++it) {
01062                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01063                 QString vendorName = vnlist.first();
01064                 QString* modelName = new QString (vnlist.last());
01065                 if ( vendorName == vendor ) {
01066                         mCDBTabletList.append ( modelName );
01067                 }
01068         }
01069         return mCDBTabletList;
01070 }
01071 
01072 //====================================
01073 // getTabletData
01074 //------------------------------------
01075 QDict<QString> SaXManipulateTablets::getTabletData ( const QString& group ) {
01076         // .../
01079         // ----
01080         mCDBTabletData.clear();
01081         if ( ! mCDBTablets ) {
01082                 mCDBTablets = new SaXProcess ();
01083                 mCDBTablets -> start (CDB_TABLETS);
01084         }
01085         QDict< QDict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01086         QDictIterator< QDict<QString> > it (CDBData);
01087         for (; it.current(); ++it) {
01088                 if ( it.currentKey() == group ) {
01089                         mCDBTabletData = *it.current();
01090                         break;
01091                 }
01092         }
01093         return mCDBTabletData;
01094 }
01095 
01096 //====================================
01097 // getTabletData
01098 //------------------------------------
01099 QDict<QString> SaXManipulateTablets::getTabletData (
01100         const QString& vendor,const QString& name
01101 ) {
01102         // .../
01105         // ----
01106         return getTabletData (vendor+":"+name);
01107 }
01108 
01109 //====================================
01110 // getPenData
01111 //------------------------------------
01112 QDict<QString> SaXManipulateTablets::getPenData ( const QString& group ) {
01113         // .../
01116         // ----
01117         mCDBTabletData.clear();
01118         if ( ! mCDBPens ) {
01119                 mCDBPens = new SaXProcess ();
01120                 mCDBPens -> start (CDB_PENS);
01121         }
01122         QDict< QDict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01123         QDictIterator< QDict<QString> > it (CDBData);
01124         for (; it.current(); ++it) {
01125                 if ( it.currentKey() == group ) {
01126                         mCDBTabletData = *it.current();
01127                         break;
01128                 }
01129         }
01130         return mCDBTabletData;
01131 }
01132 
01133 //====================================
01134 // getPenData
01135 //------------------------------------
01136 QDict<QString> SaXManipulateTablets::getPenData (
01137         const QString& vendor,const QString& name
01138 ) {
01139         // .../
01142         // ----
01143         return getPenData (vendor+":"+name);
01144 }
01145 
01146 //====================================
01147 // getPenList
01148 //------------------------------------
01149 QList<QString> SaXManipulateTablets::getPenList (void) {
01150         // .../
01154         // ----
01155         mCDBPenList.clear();
01156         if ( ! mCDBPens ) {
01157                 mCDBPens = new SaXProcess ();
01158                 mCDBPens -> start (CDB_PENS);
01159         }
01160         QDict< QDict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01161         QDictIterator< QDict<QString> > it (CDBData);
01162         for (; it.current(); ++it) {
01163                 mCDBPenList.append (new QString (it.currentKey()));
01164         }
01165         return mCDBPenList;
01166 }
01167 
01168 //====================================
01169 // setTablet
01170 //------------------------------------
01171 void SaXManipulateTablets::setTablet (const QString& group) {
01172         // .../
01176         // ----
01177         if ( ! mCDBTablets ) {
01178                 mCDBTablets = new SaXProcess ();
01179                 mCDBTablets -> start (CDB_TABLETS);
01180         }
01181         QList< QDict<QString> > data;
01182         data = mCDBTablets -> getTablePointerCDB_DATA (
01183                 group
01184         );
01185         // .../
01186         // move the data record to the correct position
01187         // refering to the section ID -> mPointer
01188         // ----
01189         QDict<QString>* record = data.take(0);
01190         for (int n=0;n < mPointer;n++) {
01191                 data.append(new QDict<QString>());
01192         }
01193         data.append ( record );
01194         // .../
01195         // merge the data into the current section now
01196         // ----
01197         if (data.isEmpty()) {
01198                 excCDBRecordNotFound (group);
01199                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01200                 return;
01201         }
01202         mImport -> merge ( data );
01203         // .../
01204         // set vendor and name tag
01205         // ----
01206         QStringList nameList = QStringList::split ( ":", group );
01207         mImport -> setItem ( "Vendor", nameList.first() );
01208         mImport -> setItem ( "Name"  , nameList.last()  );
01209 }
01210 //====================================
01211 // setTablet
01212 //------------------------------------
01213 void SaXManipulateTablets::setTablet (
01214         const QString& vendor, const QString& model
01215 ) {
01216         // .../
01219         // ----
01220         setTablet (vendor+":"+model);
01221 }
01222 
01223 //====================================
01224 // addPen
01225 //------------------------------------
01226 int SaXManipulateTablets::addPen (const QString& group) {
01227         // .../
01233         // ----
01234         if ( ! mCDBPens ) {
01235                 mCDBPens = new SaXProcess ();
01236                 mCDBPens -> start (CDB_PENS);
01237         }
01238         QList< QDict<QString> > data;
01239         data = mCDBPens -> getTablePointerCDB_DATA (
01240                 group
01241         );
01242         if (data.isEmpty()) {
01243                 excCDBRecordNotFound (group);
01244                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01245                 return -1;
01246         }
01247         // .../
01248         // set input fashion type for the selected pen
01249         // ----
01250         QDict<QString> penData = *data.at(0);
01251         QString* type = penData["TabletType"];
01252         if (! type) {
01253                 excPointerFashionTypeFailed ("undefined");
01254                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01255                 return -1;
01256         }
01257         if ((*type != "stylus") && (*type != "eraser")) {
01258                 excPointerFashionTypeFailed (*type);
01259                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01260                 return -1;
01261         }
01262         QString fashion (SAX_INPUT_PEN);
01263         if (*type == "eraser") {
01264                 fashion = SAX_INPUT_ERASER;
01265         }
01266         // .../
01267         // create new input device for the pen and make
01268         // it the current pointer device
01269         // ----
01270         int newPen = mManipInputDevices->addInputDevice (fashion);
01271         if ( ! selectPointer (newPen)) {
01272                 return -1;
01273         }
01274         // .../
01275         // move the data record to the correct position
01276         // refering to the section ID -> mPointer
01277         // ----
01278         QDict<QString>* record = data.take(0);
01279         for (int n=0;n < mPointer;n++) {
01280                 data.append(new QDict<QString>());
01281         }
01282         data.append ( record );
01283         // .../
01284         // merge the pen data now into the current section
01285         // ----
01286         mImport -> merge ( data );
01287         // .../
01288         // set vendor and name tag
01289         // ----
01290         QStringList nameList = QStringList::split ( ":", group );
01291         mImport -> setItem ( "Vendor", nameList.first() );
01292         mImport -> setItem ( "Name"  , nameList.last()  );
01293         return newPen;
01294 }
01295 //====================================
01296 // addPen
01297 //------------------------------------
01298 int SaXManipulateTablets::addPen (
01299         const QString& vendor, const QString& model
01300 ) {
01301         // .../
01306         // ----
01307         return addPen (vendor+":"+model);
01308 }
01309 
01310 //====================================
01311 // removePen
01312 //------------------------------------
01313 int SaXManipulateTablets::removePen ( int id ) {
01314         // .../
01319         // ----
01320         if (! selectPointer ( id )) {
01321                 return -1;
01322         }
01323         QString fashion (
01324                 mImport->getItem("InputFashion")
01325         );
01326         if (
01327                 (fashion != QString(SAX_INPUT_PEN ))   &&
01328                 (fashion != QString(SAX_INPUT_ERASER))
01329         ) {
01330                 excPointerFashionTypeFailed (fashion);
01331                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01332                 return -1;
01333         }
01334         return mManipInputDevices->removeInputDevice (id);
01335 }
01336 
01337 //====================================
01338 // Constructor...
01339 //------------------------------------
01340 SaXManipulateTouchscreens::SaXManipulateTouchscreens (
01341         SaXImport* in, int ptr
01342 ) : SaXManipulateTouchscreensIF (in,ptr) {
01343         // .../
01347         // ----
01348         mCDBPanels = 0;
01349 }
01350 
01351 //====================================
01352 // isTouchpanel
01353 //------------------------------------
01354 bool SaXManipulateTouchscreens::isTouchpanel (void) {
01355         // .../
01359         // ----
01360         if (! mImport) {
01361                 return false;
01362         }
01363         QString fashion = mImport -> getItem ("InputFashion");
01364         if (fashion == "Touchpanel") {
01365                 return true;
01366         }
01367         return false;
01368 }
01369 
01370 //====================================
01371 // getName
01372 //------------------------------------
01373 QString SaXManipulateTouchscreens::getName ( void ) {
01374         // .../
01378         // ----
01379         if (! mImport) {
01380                 return QString();
01381         }
01382         QString name = mImport -> getItem ("Name");
01383         QStringList vnlist = QStringList::split ( ";", name );
01384         return vnlist.last();
01385 }
01386 
01387 //====================================
01388 // getVendor
01389 //------------------------------------
01390 QString SaXManipulateTouchscreens::getVendor ( void ) {
01391         // .../
01395         // ----
01396         if (! mImport) {
01397                 return QString();
01398         }
01399         QString name = mImport -> getItem ("Name");
01400         QStringList vnlist = QStringList::split ( ";", name );
01401         return vnlist.first();
01402 }
01403 
01404 //====================================
01405 // getType
01406 //------------------------------------
01407 QString SaXManipulateTouchscreens::getType (void) {
01408         // .../
01412         // ----
01413         if (! mImport) {
01414                 return QString();
01415         }
01416         return mImport -> getItem ("TabletType");
01417 }
01418 
01419 //====================================
01420 // getCDBPanelList
01421 //------------------------------------
01422 QList<QString> SaXManipulateTouchscreens::getPanelList (void) {
01423         // .../
01427         // ----
01428         mCDBPanelList.clear();
01429         if ( ! mCDBPanels ) {
01430                 mCDBPanels = new SaXProcess ();
01431                 mCDBPanels -> start (CDB_TOUCHERS);
01432         }
01433         QDict< QDict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01434         QDictIterator< QDict<QString> > it (CDBData);
01435         for (; it.current(); ++it) {
01436                 mCDBPanelList.append (new QString (it.currentKey()));
01437         }
01438         return mCDBPanelList;
01439 }
01440 
01441 //====================================
01442 // getCDBPanelVendorList
01443 //------------------------------------
01444 QList<QString> SaXManipulateTouchscreens::getPanelVendorList (void) {
01445         // .../
01448         // ----
01449         QList<QString> panelList = getPanelList();
01450         mCDBPanelList.clear();
01451         QListIterator<QString> it (panelList);
01452         for (; it.current(); ++it) {
01453                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01454                 QString* vendorName = new QString (vnlist.first());
01455                 int hasVendor = false;
01456                 QListIterator<QString> io (mCDBPanelList);
01457                 for (; io.current(); ++io) {
01458                 if ( *io.current() == *vendorName ) {
01459                         hasVendor = true;
01460                         break;
01461                 }
01462                 }
01463                 if (! hasVendor ) {
01464                         mCDBPanelList.append ( vendorName );
01465                 }
01466         }
01467         return mCDBPanelList;
01468 }
01469 
01470 //====================================
01471 // getCDBPanelModelList
01472 //------------------------------------
01473 QList<QString> SaXManipulateTouchscreens::getPanelModelList (
01474         const QString& vendor
01475 ) {
01476         // .../
01479         // ----
01480         QList<QString> panelList = getPanelList();
01481         mCDBPanelList.clear();
01482         QListIterator<QString> it (panelList);
01483         for (; it.current(); ++it) {
01484                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01485                 QString vendorName = vnlist.first();
01486                 QString* modelName = new QString (vnlist.last());
01487                 if ( vendorName == vendor ) {
01488                         mCDBPanelList.append ( modelName );
01489                 }
01490         }
01491         return mCDBPanelList;
01492 }
01493 
01494 //====================================
01495 // getPanelData
01496 //------------------------------------
01497 QDict<QString> SaXManipulateTouchscreens::getPanelData (
01498         const QString& group
01499 ) {
01500         // .../
01503         // ----
01504         mCDBPanelData.clear();
01505         if ( ! mCDBPanels ) {
01506                 mCDBPanels = new SaXProcess ();
01507                 mCDBPanels -> start (CDB_TOUCHERS);
01508         }
01509         QDict< QDict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01510         QDictIterator< QDict<QString> > it (CDBData);
01511         for (; it.current(); ++it) {
01512                 if ( it.currentKey() == group ) {
01513                         mCDBPanelData = *it.current();
01514                         break;
01515                 }
01516         }
01517         return mCDBPanelData;
01518 }
01519 
01520 //====================================
01521 // getPanelData
01522 //------------------------------------
01523 QDict<QString> SaXManipulateTouchscreens::getPanelData (
01524         const QString& vendor,const QString& name
01525 ) {
01526         // .../
01529         // ----
01530         return getPanelData (vendor+":"+name);
01531 }
01532 
01533 //====================================
01534 // setTouchPanel
01535 //------------------------------------
01536 void SaXManipulateTouchscreens::setTouchPanel (const QString& group) {
01537         // .../
01541         // ----
01542         if ( ! mCDBPanels ) {
01543                 mCDBPanels = new SaXProcess ();
01544                 mCDBPanels -> start (CDB_TOUCHERS);
01545         }
01546         QList< QDict<QString> > data;
01547         data = mCDBPanels -> getTablePointerCDB_DATA (
01548                 group
01549         );
01550         if (data.isEmpty()) {
01551                 excCDBRecordNotFound (group);
01552                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01553                 return;
01554         }
01555         // .../
01556         // move the data record to the correct position
01557         // refering to the section ID -> mPointer
01558         // ----
01559         QDict<QString>* record = data.take(0);
01560         for (int n=0;n < mPointer;n++) {
01561                 data.append(new QDict<QString>());
01562         }
01563         data.append ( record );
01564         // .../
01565         // merge the toucher data into the current section
01566         // ----
01567         mImport -> merge ( data );
01568         // .../
01569         // set vendor and name tag
01570         // ----
01571         QStringList nameList = QStringList::split ( ":", group );
01572         setNamePair (
01573                 nameList.first(),
01574                 nameList.last()
01575         );
01576 }
01577 
01578 //====================================
01579 // setTouchPanel
01580 //------------------------------------
01581 void SaXManipulateTouchscreens::setTouchPanel (
01582         const QString& vendor, const QString& model
01583 ) {
01584         // .../
01587         // ----
01588         setTouchPanel (vendor+":"+model);
01589 }
01590 } // end namespace

Generated on Tue Nov 28 19:09:12 2006 for libsax by  doxygen 1.5.0