Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members

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 // disableWheel
00400 //------------------------------------
00401 void SaXManipulateMice::disableWheel (void) {
00402         // .../
00405         // ----
00406         if (! mImport) {
00407                 return;
00408         }
00409         mImport -> setItem ("ZAxisMapping","");
00410 }
00411 
00412 //====================================
00413 // isMouse
00414 //------------------------------------
00415 bool SaXManipulateMice::isMouse (void) {
00416         // .../
00421         // ----
00422         if (! mImport) {
00423                 return false;
00424         }
00425         QString driver = getDriver();
00426         if (driver == "mouse") {
00427                 return true;
00428         }
00429         QString fashion = mImport -> getItem ("InputFashion");
00430         if ((fashion != "Tablet")     &&
00431                 (fashion != "Pen")        &&
00432                 (fashion != "Eraser")     &&
00433                 (fashion != "VNC")        &&
00434                 (fashion != "Keyboard")   &&
00435                 (fashion != "Touchpanel")
00436         ) {
00437                 return true;
00438         }
00439         return false;
00440 }
00441 
00442 //====================================
00443 // wheelEnabled
00444 //------------------------------------
00445 bool SaXManipulateMice::isWheelEnabled (void) {
00446         // .../
00449         // ----
00450         if (! mImport) {
00451                 return false;
00452         }
00453         QString zaxis = mImport -> getItem ("ZAxisMapping");
00454         if (! zaxis.isEmpty()) {
00455                 return true;
00456         }
00457         return false;
00458 }
00459 
00460 //====================================
00461 // wheelEmulated
00462 //------------------------------------
00463 bool SaXManipulateMice::isWheelEmulated (void) {
00464         // .../
00467         // ----
00468         if (! mImport) {
00469                 return false;
00470         }
00471         QString emulate = mImport -> getItem ("EmulateWheel");
00472         if (! emulate.isEmpty()) {
00473                 return true;
00474         }
00475         return false;
00476 }
00477 
00478 //====================================
00479 // buttonEmulation
00480 //------------------------------------
00481 bool SaXManipulateMice::isButtonEmulated (void) {
00482         // .../
00485         // ----
00486         if (! mImport) {
00487                 return false;
00488         }
00489         QString emulate = mImport -> getItem ("Emulate3Buttons");
00490         if (emulate == "on") {
00491                 return true;
00492         }
00493         return false;
00494 }
00495 
00496 //====================================
00497 // getWheelEmulatedButton
00498 //------------------------------------
00499 int SaXManipulateMice::getWheelEmulatedButton (void) {
00500         // .../
00504         // ----
00505         if (! isWheelEmulated()) {
00506                 return -1;
00507         }
00508         int btn = mImport -> getItem ("EmulateWheel").toInt();
00509         return btn;
00510 }
00511 
00512 //====================================
00513 // getMouseList
00514 //------------------------------------
00515 QList<QString> SaXManipulateMice::getMouseList (void) {
00516         // .../
00520         // ----
00521         mCDBMouseList.clear();
00522         if ( ! mCDBMice ) {
00523                 mCDBMice = new SaXProcess ();
00524                 mCDBMice -> start (CDB_POINTERS);
00525         }
00526         QDict< QDict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00527         QDictIterator< QDict<QString> > it (CDBData);
00528         for (; it.current(); ++it) {
00529                 mCDBMouseList.append (new QString (it.currentKey()));
00530         }
00531         return mCDBMouseList;
00532 }
00533 
00534 //====================================
00535 // getMouseVendorList
00536 //------------------------------------
00537 QList<QString> SaXManipulateMice::getMouseVendorList (void) {
00538         // .../
00541         // ----
00542         QList<QString> mouseList = getMouseList();
00543         mCDBMouseList.clear();
00544         QListIterator<QString> it (mouseList);
00545         for (; it.current(); ++it) {
00546                 QStringList vnlist = QStringList::split ( ":", *it.current() );
00547                 QString* vendorName = new QString (vnlist.first());
00548                 int hasVendor = false;
00549                 QListIterator<QString> io (mCDBMouseList);
00550                 for (; io.current(); ++io) {
00551                 if ( *io.current() == *vendorName ) {
00552                         hasVendor = true;
00553                         break;
00554                 }
00555                 }
00556                 if (! hasVendor ) {
00557                         mCDBMouseList.append ( vendorName );
00558                 }
00559         }
00560         return mCDBMouseList;
00561 }
00562 
00563 //====================================
00564 // getMouseModelList
00565 //------------------------------------
00566 QList<QString> SaXManipulateMice::getMouseModelList (
00567         const QString& vendor
00568 ) {
00569         // .../
00572         // ----
00573         QList<QString> mouseList = getMouseList();
00574         mCDBMouseList.clear();
00575         QListIterator<QString> it (mouseList);
00576         for (; it.current(); ++it) {
00577                 QStringList vnlist = QStringList::split ( ":", *it.current() );
00578                 QString vendorName = vnlist.first();
00579                 QString* modelName = new QString (vnlist.last());
00580                 if ( vendorName == vendor ) {
00581                         mCDBMouseList.append ( modelName );
00582                 }
00583         }
00584         return mCDBMouseList;
00585 }
00586 
00587 //====================================
00588 // setMouse
00589 //------------------------------------
00590 void SaXManipulateMice::setMouse ( const QString& group ) {
00591         // .../
00595         // ----
00596         if ( ! mCDBMice ) {
00597                 mCDBMice = new SaXProcess ();
00598                 mCDBMice -> start (CDB_POINTERS);
00599         }
00600         QList< QDict<QString> > data;
00601         data = mCDBMice -> getTablePointerCDB_DATA (
00602                 group
00603         );
00604         // .../
00605         // move the data record to the correct position
00606         // refering to the section ID -> mPointer
00607         // ----
00608         QDict<QString>* record = data.take(0);
00609         for (int n=0;n < mPointer;n++) {
00610                 data.append(new QDict<QString>());
00611         }
00612         data.append ( record );
00613         // .../
00614         // merge the data into the current section now
00615         // ----
00616         if (data.isEmpty()) {
00617                 excCDBRecordNotFound (group);
00618                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
00619                 return;
00620         }
00621         mImport -> merge ( data );
00622         // .../
00623         // set vendor and name tag
00624         // ----
00625         QStringList nameList = QStringList::split ( ":", group );
00626         mImport -> setItem ( "Vendor", nameList.first() );
00627         mImport -> setItem ( "Name"  , nameList.last()  );
00628 }
00629 
00630 //====================================
00631 // setMouse
00632 //------------------------------------
00633 void SaXManipulateMice::setMouse (
00634         const QString& vendor, const QString& model
00635 ) {
00636         // .../
00639         // ----
00640         setMouse (vendor+":"+model);
00641 }
00642 
00643 //====================================
00644 // getMouseData
00645 //------------------------------------
00646 QDict<QString> SaXManipulateMice::getMouseData (
00647         const QString& group
00648 ) {
00649         // .../
00652         // ----
00653         mCDBMouseData.clear();
00654         if ( ! mCDBMice ) {
00655                 mCDBMice = new SaXProcess ();
00656                 mCDBMice -> start (CDB_POINTERS);
00657         }
00658         QDict< QDict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00659         QDictIterator< QDict<QString> > it (CDBData);
00660         for (; it.current(); ++it) {
00661                 if ( it.currentKey() == group ) {
00662                         mCDBMouseData = *it.current();
00663                         break;
00664                 }
00665         }
00666         return mCDBMouseData;
00667 }
00668 
00669 //====================================
00670 // getMouseData
00671 //------------------------------------
00672 QDict<QString> SaXManipulateMice::getMouseData (
00673         const QString& vendor, const QString& name
00674 ) {
00675         // .../
00678         // ----
00679         return getMouseData (vendor+":"+name);
00680 }
00681 
00682 
00683 //====================================
00684 // Constructor...
00685 //------------------------------------
00686 SaXManipulateTablets::SaXManipulateTablets (
00687         SaXImport* pointer, SaXImport* layout, int id
00688 ) : SaXManipulateTabletsIF (pointer,id) {
00689         // .../
00692         // ----
00693         mManipInputDevices = new SaXManipulateDevices (pointer,layout);
00694         mCDBTabletModules = 0;
00695         mCDBTablets = 0;
00696         mCDBPens = 0;
00697 }
00698 
00699 //====================================
00700 // setType
00701 //------------------------------------
00702 void SaXManipulateTablets::setType (const QString& type) {
00703         // .../
00706         // ----
00707         if (! mImport) {
00708                 return;
00709         }
00710         mImport -> setItem ("TabletType",type);
00711 }
00712 
00713 //====================================
00714 // setMode
00715 //------------------------------------
00716 void SaXManipulateTablets::setMode (const QString& mode) {
00717         // .../
00720         // ----
00721         if (! mImport) {
00722                 return;
00723         }
00724         mImport -> setItem ("TabletMode",mode);
00725 }
00726 
00727 //====================================
00728 // isTablet
00729 //------------------------------------
00730 bool SaXManipulateTablets::isTablet (void) {
00731         // .../ 
00734         // ----
00735         if (! mImport) {
00736                 return false;
00737         }
00738         QString fashion = mImport -> getItem ("InputFashion");
00739         if (fashion == "Tablet") {
00740                 return true;
00741         }
00742         return false;
00743 }
00744 
00745 //====================================
00746 // isPen
00747 //------------------------------------
00748 bool SaXManipulateTablets::isPen (void) {
00749         // .../
00752         // ----
00753         if (! mImport) {
00754                 return false;
00755         }
00756         QString fashion = mImport -> getItem ("InputFashion");
00757         if (fashion == "Pen") {
00758                 return true;
00759         }
00760         return false;
00761 }
00762 
00763 //====================================
00764 // isEraser
00765 //------------------------------------
00766 bool SaXManipulateTablets::isEraser (void) {
00767         // .../
00771         // ----
00772         if (! mImport) {
00773                 return false;
00774         }
00775         QString fashion = mImport -> getItem ("InputFashion");
00776         if (fashion == "Eraser") {
00777                 return true;
00778         }
00779         return false;
00780 }
00781 
00782 //====================================
00783 // getName
00784 //------------------------------------
00785 QString SaXManipulateTablets::getName (void) {
00786         // .../
00788         // ----
00789         if (! mImport) {
00790                 return QString();
00791         }
00792         return mImport -> getItem ("Name");
00793 }
00794 
00795 //====================================
00796 // getVendor
00797 //------------------------------------
00798 QString SaXManipulateTablets::getVendor (void) {
00799         // .../
00801         // ----
00802         if (! mImport) {
00803                 return QString();
00804         }
00805         return mImport -> getItem ("Vendor");
00806 }
00807 
00808 //====================================
00809 // getType
00810 //------------------------------------
00811 QString SaXManipulateTablets::getType (void) {
00812         // .../
00815         // ----
00816         if (! mImport) {
00817                 return QString();
00818         }
00819         return mImport -> getItem ("TabletType");
00820 }
00821 
00822 //====================================
00823 // getMode
00824 //------------------------------------
00825 QString SaXManipulateTablets::getMode (void) {
00826         // .../
00829         // ----
00830         if (! mImport) {
00831                 return QString();
00832         }
00833         return mImport -> getItem ("TabletMode");       
00834 }
00835 
00836 //====================================
00837 // getOptions
00838 //------------------------------------
00839 QDict<QString> SaXManipulateTablets::getOptions ( void ) {
00840         // .../
00844         // ----
00845         QDict<QString> result;
00846         //====================================
00847         // (1) save the bool options
00848         //------------------------------------
00849         QDict<QString> boolOptions = SaXManipulatePointers::getOptions();
00850         QDictIterator<QString> ib (boolOptions);
00851         for (; ib.current(); ++ib) {
00852                 result.insert (ib.currentKey(), new QString(""));
00853         }
00854         //====================================
00855         // (2) check for the tablet options
00856         //------------------------------------
00857         QDict<QString> tabletOptions = getTabletOptions ( getDriver() );
00858         QDictIterator<QString> it (tabletOptions);
00859         for (; it.current(); ++it) {
00860                 QString option = mImport -> getItem (it.currentKey());
00861                 if ( ! option.isEmpty() ) {
00862                         result.insert (it.currentKey(),new QString (option));
00863                 }
00864         }
00865         return result;
00866 }
00867 
00868 //====================================
00869 // getTabletDrivers
00870 //------------------------------------
00871 QList<QString> SaXManipulateTablets::getTabletDrivers (void) {
00872         // .../
00875         // ----
00876         mCDBTabletDrivers.clear();
00877         if ( ! mCDBTabletModules ) {
00878                 mCDBTabletModules = new SaXProcess ();
00879                 mCDBTabletModules -> start (CDB_TABLETMODULES);
00880         }
00881         QDict< QDict<QString> > CDBModules=mCDBTabletModules->getTablePointerCDB();
00882         QDictIterator< QDict<QString> > it (CDBModules);
00883         for (; it.current(); ++it) {
00884                 mCDBTabletDrivers.append (new QString(it.currentKey()));
00885         }
00886         return mCDBTabletDrivers;
00887 }
00888 
00889 //====================================
00890 // getTabletOptions
00891 //------------------------------------
00892 QDict<QString> SaXManipulateTablets::getTabletOptions (const QString& driver) {
00893         // .../
00899         // ----
00900         mCDBTabletOptions.clear();
00901         if ( ! mCDBTabletModules ) {
00902                 mCDBTabletModules = new SaXProcess ();
00903                 mCDBTabletModules -> start (CDB_TABLETMODULES);
00904         }
00905         QList< QDict<QString> > opts;
00906         opts = mCDBTabletModules -> getTablePointerCDB_DATA (
00907                 driver
00908         );
00909         if (opts.isEmpty()) {
00910                 excCDBRecordNotFound (driver);
00911                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
00912                 return QDict<QString>();
00913         }
00914         mCDBTabletOptions = *opts.at(0);
00915         return mCDBTabletOptions;
00916 }
00917 
00918 //====================================
00919 // getTabletList
00920 //------------------------------------
00921 QList<QString> SaXManipulateTablets::getTabletList (void) {
00922         // .../
00926         // ----
00927         mCDBTabletList.clear();
00928         if ( ! mCDBTablets ) {
00929                 mCDBTablets = new SaXProcess ();
00930                 mCDBTablets -> start (CDB_TABLETS);
00931         }
00932         QDict< QDict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
00933         QDictIterator< QDict<QString> > it (CDBData);
00934         for (; it.current(); ++it) {
00935                 mCDBTabletList.append (new QString (it.currentKey()));
00936         }
00937         return mCDBTabletList;
00938 }
00939 
00940 //====================================
00941 // getTabletVendorList
00942 //------------------------------------
00943 QList<QString> SaXManipulateTablets::getTabletVendorList (void) {
00944         // .../
00947         // ----
00948         QList<QString> tabletList = getTabletList();
00949         mCDBTabletList.clear();
00950         QListIterator<QString> it (tabletList);
00951         for (; it.current(); ++it) {
00952                 QStringList vnlist = QStringList::split ( ":", *it.current() );
00953                 QString* vendorName = new QString (vnlist.first());
00954                 int hasVendor = false;
00955                 QListIterator<QString> io (mCDBTabletList);
00956                 for (; io.current(); ++io) {
00957                 if ( *io.current() == *vendorName ) {
00958                         hasVendor = true;
00959                         break;
00960                 }
00961                 }
00962                 if (! hasVendor ) {
00963                         mCDBTabletList.append ( vendorName );
00964                 }
00965         }
00966         return mCDBTabletList;
00967 }
00968 
00969 //====================================
00970 // getTabletModelList
00971 //------------------------------------
00972 QList<QString> SaXManipulateTablets::getTabletModelList (
00973         const QString& vendor
00974 ) {
00975         // .../
00978         // ----
00979         QList<QString> tabletList = getTabletList();
00980         mCDBTabletList.clear();
00981         QListIterator<QString> it (tabletList);
00982         for (; it.current(); ++it) {
00983                 QStringList vnlist = QStringList::split ( ":", *it.current() );
00984                 QString vendorName = vnlist.first();
00985                 QString* modelName = new QString (vnlist.last());
00986                 if ( vendorName == vendor ) {
00987                         mCDBTabletList.append ( modelName );
00988                 }
00989         }
00990         return mCDBTabletList;
00991 }
00992 
00993 //====================================
00994 // getTabletData
00995 //------------------------------------
00996 QDict<QString> SaXManipulateTablets::getTabletData ( const QString& group ) {
00997         // .../
01000         // ----
01001         mCDBTabletData.clear();
01002         if ( ! mCDBTablets ) {
01003                 mCDBTablets = new SaXProcess ();
01004                 mCDBTablets -> start (CDB_TABLETS);
01005         }
01006         QDict< QDict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01007         QDictIterator< QDict<QString> > it (CDBData);
01008         for (; it.current(); ++it) {
01009                 if ( it.currentKey() == group ) {
01010                         mCDBTabletData = *it.current();
01011                         break;
01012                 }
01013         }
01014         return mCDBTabletData;
01015 }
01016 
01017 //====================================
01018 // getTabletData
01019 //------------------------------------
01020 QDict<QString> SaXManipulateTablets::getTabletData (
01021         const QString& vendor,const QString& name
01022 ) {
01023         // .../
01026         // ----
01027         return getTabletData (vendor+":"+name);
01028 }
01029 
01030 //====================================
01031 // getPenData
01032 //------------------------------------
01033 QDict<QString> SaXManipulateTablets::getPenData ( const QString& group ) {
01034         // .../
01037         // ----
01038         mCDBTabletData.clear();
01039         if ( ! mCDBPens ) {
01040                 mCDBPens = new SaXProcess ();
01041                 mCDBPens -> start (CDB_PENS);
01042         }
01043         QDict< QDict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01044         QDictIterator< QDict<QString> > it (CDBData);
01045         for (; it.current(); ++it) {
01046                 if ( it.currentKey() == group ) {
01047                         mCDBTabletData = *it.current();
01048                         break;
01049                 }
01050         }
01051         return mCDBTabletData;
01052 }
01053 
01054 //====================================
01055 // getPenData
01056 //------------------------------------
01057 QDict<QString> SaXManipulateTablets::getPenData (
01058         const QString& vendor,const QString& name
01059 ) {
01060         // .../
01063         // ----
01064         return getPenData (vendor+":"+name);
01065 }
01066 
01067 //====================================
01068 // getPenList
01069 //------------------------------------
01070 QList<QString> SaXManipulateTablets::getPenList (void) {
01071         // .../
01075         // ----
01076         mCDBPenList.clear();
01077         if ( ! mCDBPens ) {
01078                 mCDBPens = new SaXProcess ();
01079                 mCDBPens -> start (CDB_PENS);
01080         }
01081         QDict< QDict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01082         QDictIterator< QDict<QString> > it (CDBData);
01083         for (; it.current(); ++it) {
01084                 mCDBPenList.append (new QString (it.currentKey()));
01085         }
01086         return mCDBPenList;
01087 }
01088 
01089 //====================================
01090 // setTablet
01091 //------------------------------------
01092 void SaXManipulateTablets::setTablet (const QString& group) {
01093         // .../
01097         // ----
01098         if ( ! mCDBTablets ) {
01099                 mCDBTablets = new SaXProcess ();
01100                 mCDBTablets -> start (CDB_TABLETS);
01101         }
01102         QList< QDict<QString> > data;
01103         data = mCDBTablets -> getTablePointerCDB_DATA (
01104                 group
01105         );
01106         // .../
01107         // move the data record to the correct position
01108         // refering to the section ID -> mPointer
01109         // ----
01110         QDict<QString>* record = data.take(0);
01111         for (int n=0;n < mPointer;n++) {
01112                 data.append(new QDict<QString>());
01113         }
01114         data.append ( record );
01115         // .../
01116         // merge the data into the current section now
01117         // ----
01118         if (data.isEmpty()) {
01119                 excCDBRecordNotFound (group);
01120                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01121                 return;
01122         }
01123         mImport -> merge ( data );
01124         // .../
01125         // set vendor and name tag
01126         // ----
01127         QStringList nameList = QStringList::split ( ":", group );
01128         mImport -> setItem ( "Vendor", nameList.first() );
01129         mImport -> setItem ( "Name"  , nameList.last()  );
01130 }
01131 //====================================
01132 // setTablet
01133 //------------------------------------
01134 void SaXManipulateTablets::setTablet (
01135         const QString& vendor, const QString& model
01136 ) {
01137         // .../
01140         // ----
01141         setTablet (vendor+":"+model);
01142 }
01143 
01144 //====================================
01145 // addPen
01146 //------------------------------------
01147 int SaXManipulateTablets::addPen (const QString& group) {
01148         // .../
01154         // ----
01155         if ( ! mCDBPens ) {
01156                 mCDBPens = new SaXProcess ();
01157                 mCDBPens -> start (CDB_PENS);
01158         }
01159         QList< QDict<QString> > data;
01160         data = mCDBPens -> getTablePointerCDB_DATA (
01161                 group
01162         );
01163         if (data.isEmpty()) {
01164                 excCDBRecordNotFound (group);
01165                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01166                 return -1;
01167         }
01168         // .../
01169         // set input fashion type for the selected pen
01170         // ----
01171         QDict<QString> penData = *data.at(0);
01172         QString* type = penData["TabletType"];
01173         if (! type) {
01174                 excPointerFashionTypeFailed ("undefined");
01175                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01176                 return -1;
01177         }
01178         if ((*type != "stylus") && (*type != "eraser")) {
01179                 excPointerFashionTypeFailed (*type);
01180                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01181                 return -1;
01182         }
01183         QString fashion (SAX_INPUT_PEN);
01184         if (*type == "eraser") {
01185                 fashion = SAX_INPUT_ERASER;
01186         }
01187         // .../
01188         // create new input device for the pen and make
01189         // it the current pointer device
01190         // ----
01191         int newPen = mManipInputDevices->addInputDevice (fashion);
01192         if ( ! selectPointer (newPen)) {
01193                 return -1;
01194         }
01195         // .../
01196         // move the data record to the correct position
01197         // refering to the section ID -> mPointer
01198         // ----
01199         QDict<QString>* record = data.take(0);
01200         for (int n=0;n < mPointer;n++) {
01201                 data.append(new QDict<QString>());
01202         }
01203         data.append ( record );
01204         // .../
01205         // merge the pen data now into the current section
01206         // ----
01207         mImport -> merge ( data );
01208         // .../
01209         // set vendor and name tag
01210         // ----
01211         QStringList nameList = QStringList::split ( ":", group );
01212         mImport -> setItem ( "Vendor", nameList.first() );
01213         mImport -> setItem ( "Name"  , nameList.last()  );
01214         return newPen;
01215 }
01216 //====================================
01217 // addPen
01218 //------------------------------------
01219 int SaXManipulateTablets::addPen (
01220         const QString& vendor, const QString& model
01221 ) {
01222         // .../
01227         // ----
01228         return addPen (vendor+":"+model);
01229 }
01230 
01231 //====================================
01232 // removePen
01233 //------------------------------------
01234 int SaXManipulateTablets::removePen ( int id ) {
01235         // .../
01240         // ----
01241         if (! selectPointer ( id )) {
01242                 return -1;
01243         }
01244         QString fashion (
01245                 mImport->getItem("InputFashion")
01246         );
01247         if (
01248                 (fashion != QString(SAX_INPUT_PEN ))   &&
01249                 (fashion != QString(SAX_INPUT_ERASER))
01250         ) {
01251                 excPointerFashionTypeFailed (fashion);
01252                 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01253                 return -1;
01254         }
01255         return mManipInputDevices->removeInputDevice (id);
01256 }
01257 
01258 //====================================
01259 // Constructor...
01260 //------------------------------------
01261 SaXManipulateTouchscreens::SaXManipulateTouchscreens (
01262         SaXImport* in, int ptr
01263 ) : SaXManipulateTouchscreensIF (in,ptr) {
01264         // .../
01268         // ----
01269         mCDBPanels = 0;
01270 }
01271 
01272 //====================================
01273 // isTouchpanel
01274 //------------------------------------
01275 bool SaXManipulateTouchscreens::isTouchpanel (void) {
01276         // .../
01280         // ----
01281         if (! mImport) {
01282                 return false;
01283         }
01284         QString fashion = mImport -> getItem ("InputFashion");
01285         if (fashion == "Touchpanel") {
01286                 return true;
01287         }
01288         return false;
01289 }
01290 
01291 //====================================
01292 // getName
01293 //------------------------------------
01294 QString SaXManipulateTouchscreens::getName ( void ) {
01295         // .../
01299         // ----
01300         if (! mImport) {
01301                 return QString();
01302         }
01303         QString name = mImport -> getItem ("Name");
01304         QStringList vnlist = QStringList::split ( ";", name );
01305         return vnlist.last();
01306 }
01307 
01308 //====================================
01309 // getVendor
01310 //------------------------------------
01311 QString SaXManipulateTouchscreens::getVendor ( void ) {
01312         // .../
01316         // ----
01317         if (! mImport) {
01318                 return QString();
01319         }
01320         QString name = mImport -> getItem ("Name");
01321         QStringList vnlist = QStringList::split ( ";", name );
01322         return vnlist.first();
01323 }
01324 
01325 //====================================
01326 // getType
01327 //------------------------------------
01328 QString SaXManipulateTouchscreens::getType (void) {
01329         // .../
01333         // ----
01334         if (! mImport) {
01335                 return QString();
01336         }
01337         return mImport -> getItem ("TabletType");
01338 }
01339 
01340 //====================================
01341 // getCDBPanelList
01342 //------------------------------------
01343 QList<QString> SaXManipulateTouchscreens::getPanelList (void) {
01344         // .../
01348         // ----
01349         mCDBPanelList.clear();
01350         if ( ! mCDBPanels ) {
01351                 mCDBPanels = new SaXProcess ();
01352                 mCDBPanels -> start (CDB_TOUCHERS);
01353         }
01354         QDict< QDict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01355         QDictIterator< QDict<QString> > it (CDBData);
01356         for (; it.current(); ++it) {
01357                 mCDBPanelList.append (new QString (it.currentKey()));
01358         }
01359         return mCDBPanelList;
01360 }
01361 
01362 //====================================
01363 // getCDBPanelVendorList
01364 //------------------------------------
01365 QList<QString> SaXManipulateTouchscreens::getPanelVendorList (void) {
01366         // .../
01369         // ----
01370         QList<QString> panelList = getPanelList();
01371         mCDBPanelList.clear();
01372         QListIterator<QString> it (panelList);
01373         for (; it.current(); ++it) {
01374                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01375                 QString* vendorName = new QString (vnlist.first());
01376                 int hasVendor = false;
01377                 QListIterator<QString> io (mCDBPanelList);
01378                 for (; io.current(); ++io) {
01379                 if ( *io.current() == *vendorName ) {
01380                         hasVendor = true;
01381                         break;
01382                 }
01383                 }
01384                 if (! hasVendor ) {
01385                         mCDBPanelList.append ( vendorName );
01386                 }
01387         }
01388         return mCDBPanelList;
01389 }
01390 
01391 //====================================
01392 // getCDBPanelModelList
01393 //------------------------------------
01394 QList<QString> SaXManipulateTouchscreens::getPanelModelList (
01395         const QString& vendor
01396 ) {
01397         // .../
01400         // ----
01401         QList<QString> panelList = getPanelList();
01402         mCDBPanelList.clear();
01403         QListIterator<QString> it (panelList);
01404         for (; it.current(); ++it) {
01405                 QStringList vnlist = QStringList::split ( ":", *it.current() );
01406                 QString vendorName = vnlist.first();
01407                 QString* modelName = new QString (vnlist.last());
01408                 if ( vendorName == vendor ) {
01409                         mCDBPanelList.append ( modelName );
01410                 }
01411         }
01412         return mCDBPanelList;
01413 }
01414 
01415 //====================================
01416 // getPanelData
01417 //------------------------------------
01418 QDict<QString> SaXManipulateTouchscreens::getPanelData (
01419         const QString& group
01420 ) {
01421         // .../
01424         // ----
01425         mCDBPanelData.clear();
01426         if ( ! mCDBPanels ) {
01427                 mCDBPanels = new SaXProcess ();
01428                 mCDBPanels -> start (CDB_TOUCHERS);
01429         }
01430         QDict< QDict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01431         QDictIterator< QDict<QString> > it (CDBData);
01432         for (; it.current(); ++it) {
01433                 if ( it.currentKey() == group ) {
01434                         mCDBPanelData = *it.current();
01435                         break;
01436                 }
01437         }
01438         return mCDBPanelData;
01439 }
01440 
01441 //====================================
01442 // getPanelData
01443 //------------------------------------
01444 QDict<QString> SaXManipulateTouchscreens::getPanelData (
01445         const QString& vendor,const QString& name
01446 ) {
01447         // .../
01450         // ----
01451         return getPanelData (vendor+":"+name);
01452 }
01453 
01454 //====================================
01455 // setTouchPanel
01456 //------------------------------------
01457 void SaXManipulateTouchscreens::setTouchPanel (const QString& group) {
01458         // .../
01462         // ----
01463         if ( ! mCDBPanels ) {
01464                 mCDBPanels = new SaXProcess ();
01465                 mCDBPanels -> start (CDB_TOUCHERS);
01466         }
01467         QList< QDict<QString> > data;
01468         data = mCDBPanels -> getTablePointerCDB_DATA (
01469                 group
01470         );
01471         if (data.isEmpty()) {
01472                 excCDBRecordNotFound (group);
01473                 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01474                 return;
01475         }
01476         // .../
01477         // move the data record to the correct position
01478         // refering to the section ID -> mPointer
01479         // ----
01480         QDict<QString>* record = data.take(0);
01481         for (int n=0;n < mPointer;n++) {
01482                 data.append(new QDict<QString>());
01483         }
01484         data.append ( record );
01485         // .../
01486         // merge the toucher data into the current section
01487         // ----
01488         mImport -> merge ( data );
01489         // .../
01490         // set vendor and name tag
01491         // ----
01492         QStringList nameList = QStringList::split ( ":", group );
01493         setNamePair (
01494                 nameList.first(),
01495                 nameList.last()
01496         );
01497 }
01498 
01499 //====================================
01500 // setTouchPanel
01501 //------------------------------------
01502 void SaXManipulateTouchscreens::setTouchPanel (
01503         const QString& vendor, const QString& model
01504 ) {
01505         // .../
01508         // ----
01509         setTouchPanel (vendor+":"+model);
01510 }
01511 } // end namespace

Generated on Wed Sep 14 10:27:01 2005 for libsax by  doxygen 1.4.4