00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "pointers.h"
00020
00021 namespace SaX {
00022
00023
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
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
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
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
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
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
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.isNull()) {
00148
00149
00150
00151 mImport->setItem ("Option",key);
00152 } else {
00153
00154
00155
00156 mImport->setRawItem ("RawOption",
00157 "\""+key+"\"","\""+val+"\""
00158 );
00159 }
00160 }
00161
00162
00163
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.isNull()) {
00180
00181
00182
00183 mImport->addItem ("Option",key);
00184 } else {
00185
00186
00187
00188 mImport->addRawItem ("RawOption",
00189 "\""+key+"\"","\""+val+"\""
00190 );
00191 }
00192 }
00193
00194
00195
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
00212
00213 mImport->removeItem ("Option",val);
00214 } else {
00215
00216
00217
00218 mImport->removeRawItem ("RawOption","\""+val+"\"");
00219 }
00220 }
00221
00222
00223
00224
00225 QString SaXManipulatePointers::getDevice ( void ) {
00226
00230
00231 if (! mImport) {
00232 QString* nope = new QString;
00233 return *nope;
00234 }
00235 return mImport -> getItem ("Device");
00236 }
00237
00238
00239
00240
00241 QString SaXManipulatePointers::getDriver ( void ) {
00242
00244
00245 if (! mImport) {
00246 QString* nope = new QString;
00247 return *nope;
00248 }
00249 return mImport -> getItem ("Driver");
00250 }
00251
00252
00253
00254
00255 QString SaXManipulatePointers::getProtocol ( void ) {
00256
00258
00259 if (! mImport) {
00260 QString* nope = new QString;
00261 return *nope;
00262 }
00263 return mImport -> getItem ("Protocol");
00264 }
00265
00266
00267
00268
00269 Q3Dict<QString> SaXManipulatePointers::getOptions (void) {
00270
00276
00277 if (! mImport) {
00278 Q3Dict<QString>* nope = new Q3Dict<QString>;
00279 return *nope;
00280 }
00281 Q3Dict<QString> result;
00282 QString stdOptions = mImport -> getItem ("Option");
00283 QString rawOptions = mImport -> getItem ("RawOption");
00284
00285
00286
00287 QStringList stdlist = QStringList::split ( ",", stdOptions );
00288 for ( QStringList::Iterator
00289 in = stdlist.begin(); in != stdlist.end(); ++in
00290 ) {
00291 QString item (*in);
00292 result.insert (item,new QString);
00293 }
00294
00295
00296
00297 QStringList rawlist = QStringList::split ( ",", rawOptions );
00298 for ( QStringList::Iterator
00299 in = rawlist.begin(); in != rawlist.end(); ++in
00300 ) {
00301 QString item (*in);
00302 QRegExp itemExp ("\"(.*)\" \"(.*)\"");
00303 int pos = itemExp.search (item);
00304 if (pos >= 0) {
00305 QString key = itemExp.cap(1);
00306 QString* val = new QString (itemExp.cap(2));
00307 result.insert (key,val);
00308 }
00309 }
00310 return result;
00311 }
00312
00313
00314
00315
00316 SaXManipulateMice::SaXManipulateMice (
00317 SaXImport* in, int ptr
00318 ) : SaXManipulateMiceIF (in,ptr) {
00319
00322
00323 mCDBMice = 0;
00324 }
00325
00326
00327
00328
00329 void SaXManipulateMice::enableWheelEmulation (int btn) {
00330
00334
00335 if (! mImport) {
00336 return;
00337 }
00338 QString button;
00339 button.sprintf ("%d",btn);
00340 mImport -> setItem ("EmulateWheel",button);
00341 }
00342
00343
00344
00345
00346 void SaXManipulateMice::disableWheelEmulation (void) {
00347
00351
00352 if (! mImport) {
00353 return;
00354 }
00355 mImport -> setItem ("EmulateWheel","");
00356 }
00357
00358
00359
00360
00361 void SaXManipulateMice::enable3ButtonEmulation (void) {
00362
00366
00367 if (! mImport) {
00368 return;
00369 }
00370 mImport -> setItem ("Emulate3Buttons","on");
00371 }
00372
00373
00374
00375
00376 void SaXManipulateMice::disable3ButtonEmulation (void) {
00377
00379
00380 if (! mImport) {
00381 return;
00382 }
00383 mImport -> setItem ("Emulate3Buttons","");
00384 }
00385
00386
00387
00388
00389 void SaXManipulateMice::enableWheel (void) {
00390
00395
00396 if (! mImport) {
00397 return;
00398 }
00399 mImport -> setItem ("ZAxisMapping","4 5");
00400 }
00401
00402
00403
00404
00405 void SaXManipulateMice::enableWheelOn (int b1, int b2) {
00406
00409
00410 if (! mImport) {
00411 return;
00412 }
00413 QString val;
00414 QTextOStream (&val) << b1 << " " << b2;
00415 mImport -> setItem ("ZAxisMapping",val);
00416 }
00417
00418
00419
00420
00421 void SaXManipulateMice::enableXAxisInvertation (void) {
00422
00425
00426 if (! mImport) {
00427 return;
00428 }
00429 mImport -> setItem ("InvX","on");
00430 }
00431
00432
00433
00434
00435 void SaXManipulateMice::enableYAxisInvertation (void) {
00436
00439
00440 if (! mImport) {
00441 return;
00442 }
00443 mImport -> setItem ("InvY","on");
00444 }
00445
00446
00447
00448
00449 void SaXManipulateMice::disableWheel (void) {
00450
00453
00454 if (! mImport) {
00455 return;
00456 }
00457 mImport -> setItem ("ZAxisMapping","");
00458 }
00459
00460
00461
00462
00463 void SaXManipulateMice::disableXAxisInvertation (void) {
00464
00467
00468 if (! mImport) {
00469 return;
00470 }
00471 mImport -> setItem ("InvX","");
00472 }
00473
00474
00475
00476
00477 void SaXManipulateMice::disableYAxisInvertation (void) {
00478
00481
00482 if (! mImport) {
00483 return;
00484 }
00485 mImport -> setItem ("InvY","");
00486 }
00487
00488
00489
00490
00491 void SaXManipulateMice::enableLeftHandMapping ( void ) {
00492
00495
00496 if (! mImport) {
00497 return;
00498 }
00499 mImport -> setItem ("ButtonMapping","3 2 1");
00500 }
00501
00502
00503
00504
00505 void SaXManipulateMice::disableLeftHandMapping ( void ) {
00506
00509
00510 if (! mImport) {
00511 return;
00512 }
00513 mImport -> setItem ("ButtonMapping","");
00514 }
00515
00516
00517
00518
00519 bool SaXManipulateMice::isMouse (void) {
00520
00525
00526 if (! mImport) {
00527 return false;
00528 }
00529 QString driver = getDriver();
00530 QString fashion = mImport -> getItem ("InputFashion");
00531 if ((driver == "mouse") || (driver == "evdev")) {
00532 if (fashion != "MultiSeat") {
00533 return true;
00534 }
00535 return false;
00536 }
00537 if ((fashion != "Tablet") &&
00538 (fashion != "Pen") &&
00539 (fashion != "Eraser") &&
00540 (fashion != "Touch") &&
00541 (fashion != "Pad") &&
00542 (fashion != "VNC") &&
00543 (fashion != "Keyboard") &&
00544 (fashion != "Touchpanel")
00545 ) {
00546 return true;
00547 }
00548 return false;
00549 }
00550
00551
00552
00553
00554 bool SaXManipulateMice::isWheelEnabled (void) {
00555
00558
00559 if (! mImport) {
00560 return false;
00561 }
00562 QString zaxis = mImport -> getItem ("ZAxisMapping");
00563 if (! zaxis.isEmpty()) {
00564 return true;
00565 }
00566 return false;
00567 }
00568
00569
00570
00571
00572 bool SaXManipulateMice::isLeftHandEnabled (void) {
00573
00576
00577 if (! mImport) {
00578 return false;
00579 }
00580 QString mapping = mImport -> getItem ("ButtonMapping");
00581 if (mapping.contains("3 2 1")) {
00582 return true;
00583 }
00584 return false;
00585 }
00586
00587
00588
00589
00590 bool SaXManipulateMice::isXAxisInverted (void) {
00591
00594
00595 if (! mImport) {
00596 return false;
00597 }
00598 QString xaxis = mImport -> getItem ("InvX");
00599 if (xaxis == "on") {
00600 return true;
00601 }
00602 return false;
00603 }
00604
00605
00606
00607
00608 bool SaXManipulateMice::isYAxisInverted (void) {
00609
00612
00613 if (! mImport) {
00614 return false;
00615 }
00616 QString yaxis = mImport -> getItem ("InvY");
00617 if (yaxis == "on") {
00618 return true;
00619 }
00620 return false;
00621 }
00622
00623
00624
00625
00626 bool SaXManipulateMice::isWheelEmulated (void) {
00627
00630
00631 if (! mImport) {
00632 return false;
00633 }
00634 QString emulate = mImport -> getItem ("EmulateWheel");
00635 if (! emulate.isEmpty()) {
00636 return true;
00637 }
00638 return false;
00639 }
00640
00641
00642
00643
00644 bool SaXManipulateMice::isButtonEmulated (void) {
00645
00648
00649 if (! mImport) {
00650 return false;
00651 }
00652 QString emulate = mImport -> getItem ("Emulate3Buttons");
00653 if (emulate == "on") {
00654 return true;
00655 }
00656 return false;
00657 }
00658
00659
00660
00661
00662 int SaXManipulateMice::getWheelEmulatedButton (void) {
00663
00667
00668 if (! isWheelEmulated()) {
00669 return -1;
00670 }
00671 int btn = mImport -> getItem ("EmulateWheel").toInt();
00672 return btn;
00673 }
00674
00675
00676
00677
00678 QList<QString> SaXManipulateMice::getMouseList (void) {
00679
00683
00684 mCDBMouseList.clear();
00685 if ( ! mCDBMice ) {
00686 mCDBMice = new SaXProcess ();
00687 mCDBMice -> start (CDB_POINTERS);
00688 }
00689 Q3Dict< Q3Dict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00690 Q3DictIterator< Q3Dict<QString> > it (CDBData);
00691 for (; it.current(); ++it) {
00692 mCDBMouseList.append (QString (it.currentKey()));
00693 }
00694 return mCDBMouseList;
00695 }
00696
00697
00698
00699
00700 QList<QString> SaXManipulateMice::getMouseVendorList (void) {
00701
00704
00705 QList<QString> mouseList = getMouseList();
00706 mCDBMouseList.clear();
00707 QString it;
00708 foreach (it,mouseList) {
00709 QStringList vnlist = QStringList::split ( ":", it );
00710 QString* vendorName = new QString (vnlist.first());
00711 int hasVendor = false;
00712 QString io;
00713 foreach (io,mCDBMouseList) {
00714 if ( io == *vendorName ) {
00715 hasVendor = true;
00716 break;
00717 }
00718 }
00719 if (! hasVendor ) {
00720 mCDBMouseList.append ( *vendorName );
00721 }
00722 }
00723 return mCDBMouseList;
00724 }
00725
00726
00727
00728
00729 QList<QString> SaXManipulateMice::getMouseModelList (
00730 const QString& vendor
00731 ) {
00732
00735
00736 QList<QString> mouseList = getMouseList();
00737 mCDBMouseList.clear();
00738 QString it;
00739 foreach (it,mouseList) {
00740 QStringList vnlist = QStringList::split ( ":", it );
00741 QString vendorName = vnlist.first();
00742 QString* modelName = new QString (vnlist.last());
00743 if ( vendorName == vendor ) {
00744 mCDBMouseList.append ( *modelName );
00745 }
00746 }
00747 return mCDBMouseList;
00748 }
00749
00750
00751
00752
00753 void SaXManipulateMice::setMouse ( const QString& group ) {
00754
00758
00759 if ( ! mCDBMice ) {
00760 mCDBMice = new SaXProcess ();
00761 mCDBMice -> start (CDB_POINTERS);
00762 }
00763 Q3PtrList< Q3Dict<QString> > data;
00764 data = mCDBMice -> getTablePointerCDB_DATA (
00765 group
00766 );
00767
00768
00769
00770
00771 Q3Dict<QString>* record = data.take(0);
00772 for (int n=0;n < mPointer;n++) {
00773 data.append(new Q3Dict<QString>());
00774 }
00775 data.append ( record );
00776
00777
00778
00779 if (data.isEmpty()) {
00780 excCDBRecordNotFound (group);
00781 qError (errorString(),EXC_CDBRECORDNOTFOUND);
00782 return;
00783 }
00784 mImport -> merge ( data );
00785
00786
00787
00788 QStringList nameList = QStringList::split ( ":", group );
00789 mImport -> setItem ( "Vendor", nameList.first() );
00790 mImport -> setItem ( "Name" , nameList.last() );
00791 }
00792
00793
00794
00795
00796 void SaXManipulateMice::setMouse (
00797 const QString& vendor, const QString& model
00798 ) {
00799
00802
00803 setMouse (vendor+":"+model);
00804 }
00805
00806
00807
00808
00809 Q3Dict<QString> SaXManipulateMice::getMouseData (
00810 const QString& group
00811 ) {
00812
00815
00816 mCDBMouseData.clear();
00817 if ( ! mCDBMice ) {
00818 mCDBMice = new SaXProcess ();
00819 mCDBMice -> start (CDB_POINTERS);
00820 }
00821 Q3Dict< Q3Dict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00822 Q3DictIterator< Q3Dict<QString> > it (CDBData);
00823 for (; it.current(); ++it) {
00824 if ( it.currentKey() == group ) {
00825 mCDBMouseData = *it.current();
00826 break;
00827 }
00828 }
00829 return mCDBMouseData;
00830 }
00831
00832
00833
00834
00835 Q3Dict<QString> SaXManipulateMice::getMouseData (
00836 const QString& vendor, const QString& name
00837 ) {
00838
00841
00842 return getMouseData (vendor+":"+name);
00843 }
00844
00845
00846
00847
00848
00849 SaXManipulateTablets::SaXManipulateTablets (
00850 SaXImport* pointer, SaXImport* layout, int id
00851 ) : SaXManipulateTabletsIF (pointer,id) {
00852
00855
00856 mManipInputDevices = new SaXManipulateDevices (pointer,layout);
00857 mCDBTabletModules = 0;
00858 mCDBTablets = 0;
00859 mCDBPens = 0;
00860 mCDBPads = 0;
00861 }
00862
00863
00864
00865
00866 void SaXManipulateTablets::setType (const QString& type) {
00867
00870
00871 if (! mImport) {
00872 return;
00873 }
00874 mImport -> setItem ("TabletType",type);
00875 }
00876
00877
00878
00879
00880 void SaXManipulateTablets::setMode (const QString& mode) {
00881
00884
00885 if (! mImport) {
00886 return;
00887 }
00888 mImport -> setItem ("TabletMode",mode);
00889 }
00890
00891
00892
00893
00894 bool SaXManipulateTablets::isTablet (void) {
00895
00898
00899 if (! mImport) {
00900 return false;
00901 }
00902 QString fashion = mImport -> getItem ("InputFashion");
00903 if (fashion == "Tablet") {
00904 return true;
00905 }
00906 return false;
00907 }
00908
00909
00910
00911
00912 bool SaXManipulateTablets::isPen (void) {
00913
00916
00917 if (! mImport) {
00918 return false;
00919 }
00920 QString fashion = mImport -> getItem ("InputFashion");
00921 if (fashion == "Pen") {
00922 return true;
00923 }
00924 return false;
00925 }
00926
00927
00928
00929
00930 bool SaXManipulateTablets::isEraser (void) {
00931
00935
00936 if (! mImport) {
00937 return false;
00938 }
00939 QString fashion = mImport -> getItem ("InputFashion");
00940 if (fashion == "Eraser") {
00941 return true;
00942 }
00943 return false;
00944 }
00945
00946
00947
00948
00949 bool SaXManipulateTablets::isTouch (void) {
00950
00954
00955 if (! mImport) {
00956 return false;
00957 }
00958 QString fashion = mImport -> getItem ("InputFashion");
00959 if (fashion == "Touch") {
00960 return true;
00961 }
00962 return false;
00963 }
00964
00965
00966
00967
00968 bool SaXManipulateTablets::isPad (void) {
00969
00972
00973 if (! mImport) {
00974 return false;
00975 }
00976 QString fashion = mImport -> getItem ("InputFashion");
00977 if (fashion == "Pad") {
00978 return true;
00979 }
00980 return false;
00981 }
00982
00983
00984
00985
00986 QString SaXManipulateTablets::getName (void) {
00987
00989
00990 if (! mImport) {
00991 QString* nope = new QString;
00992 return *nope;
00993 }
00994 return mImport -> getItem ("Name");
00995 }
00996
00997
00998
00999
01000 QString SaXManipulateTablets::getVendor (void) {
01001
01003
01004 if (! mImport) {
01005 QString* nope = new QString;
01006 return *nope;
01007 }
01008 return mImport -> getItem ("Vendor");
01009 }
01010
01011
01012
01013
01014 QString SaXManipulateTablets::getType (void) {
01015
01018
01019 if (! mImport) {
01020 QString* nope = new QString;
01021 return *nope;
01022 }
01023 return mImport -> getItem ("TabletType");
01024 }
01025
01026
01027
01028
01029 QString SaXManipulateTablets::getMode (void) {
01030
01033
01034 if (! mImport) {
01035 QString* nope = new QString;
01036 return *nope;
01037 }
01038 return mImport -> getItem ("TabletMode");
01039 }
01040
01041
01042
01043
01044 QList<QString> SaXManipulateTablets::getTabletDrivers (void) {
01045
01048
01049 mCDBTabletDrivers.clear();
01050 if ( ! mCDBTabletModules ) {
01051 mCDBTabletModules = new SaXProcess ();
01052 mCDBTabletModules -> start (CDB_TABLETMODULES);
01053 }
01054 Q3Dict< Q3Dict<QString> > CDBModules=mCDBTabletModules->getTablePointerCDB();
01055 Q3DictIterator< Q3Dict<QString> > it (CDBModules);
01056 for (; it.current(); ++it) {
01057 mCDBTabletDrivers.append (QString(it.currentKey()));
01058 }
01059 return mCDBTabletDrivers;
01060 }
01061
01062
01063
01064
01065 Q3Dict<QString> SaXManipulateTablets::getTabletOptions (const QString& driver) {
01066
01072
01073 mCDBTabletOptions.clear();
01074 if ( ! mCDBTabletModules ) {
01075 mCDBTabletModules = new SaXProcess ();
01076 mCDBTabletModules -> start (CDB_TABLETMODULES);
01077 }
01078 Q3PtrList< Q3Dict<QString> > opts;
01079 opts = mCDBTabletModules -> getTablePointerCDB_DATA (
01080 driver
01081 );
01082 if (opts.isEmpty()) {
01083 excCDBRecordNotFound (driver);
01084 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01085 Q3Dict<QString>* nope = new Q3Dict<QString>;
01086 return *nope;
01087 }
01088 mCDBTabletOptions = *opts.at(0);
01089 return mCDBTabletOptions;
01090 }
01091
01092
01093
01094
01095 QList<QString> SaXManipulateTablets::getTabletList (void) {
01096
01100
01101 mCDBTabletList.clear();
01102 if ( ! mCDBTablets ) {
01103 mCDBTablets = new SaXProcess ();
01104 mCDBTablets -> start (CDB_TABLETS);
01105 }
01106 Q3Dict< Q3Dict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01107 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01108 for (; it.current(); ++it) {
01109 mCDBTabletList.append (QString (it.currentKey()));
01110 }
01111 return mCDBTabletList;
01112 }
01113
01114
01115
01116
01117 QList<QString> SaXManipulateTablets::getTabletVendorList (void) {
01118
01121
01122 QList<QString> tabletList = getTabletList();
01123 mCDBTabletList.clear();
01124 QString it;
01125 foreach (it,tabletList) {
01126 QStringList vnlist = QStringList::split ( ":", it );
01127 QString* vendorName = new QString (vnlist.first());
01128 int hasVendor = false;
01129 QString io;
01130 foreach (io,mCDBTabletList) {
01131 if ( io == *vendorName ) {
01132 hasVendor = true;
01133 break;
01134 }
01135 }
01136 if (! hasVendor ) {
01137 mCDBTabletList.append ( *vendorName );
01138 }
01139 }
01140 return mCDBTabletList;
01141 }
01142
01143
01144
01145
01146 QList<QString> SaXManipulateTablets::getTabletModelList (
01147 const QString& vendor
01148 ) {
01149
01152
01153 QList<QString> tabletList = getTabletList();
01154 mCDBTabletList.clear();
01155 QString it;
01156 foreach (it,tabletList) {
01157 QStringList vnlist = QStringList::split ( ":", it );
01158 QString vendorName = vnlist.first();
01159 QString* modelName = new QString (vnlist.last());
01160 if ( vendorName == vendor ) {
01161 mCDBTabletList.append ( *modelName );
01162 }
01163 }
01164 return mCDBTabletList;
01165 }
01166
01167
01168
01169
01170 Q3Dict<QString> SaXManipulateTablets::getTabletData ( const QString& group ) {
01171
01174
01175 mCDBTabletData.clear();
01176 if ( ! mCDBTablets ) {
01177 mCDBTablets = new SaXProcess ();
01178 mCDBTablets -> start (CDB_TABLETS);
01179 }
01180 Q3Dict< Q3Dict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01181 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01182 for (; it.current(); ++it) {
01183 if ( it.currentKey() == group ) {
01184 mCDBTabletData = *it.current();
01185 break;
01186 }
01187 }
01188 return mCDBTabletData;
01189 }
01190
01191
01192
01193
01194 Q3Dict<QString> SaXManipulateTablets::getTabletData (
01195 const QString& vendor,const QString& name
01196 ) {
01197
01200
01201 return getTabletData (vendor+":"+name);
01202 }
01203
01204
01205
01206
01207 Q3Dict<QString> SaXManipulateTablets::getPenData ( const QString& group ) {
01208
01211
01212 mCDBTabletData.clear();
01213 if ( ! mCDBPens ) {
01214 mCDBPens = new SaXProcess ();
01215 mCDBPens -> start (CDB_PENS);
01216 }
01217 Q3Dict< Q3Dict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01218 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01219 for (; it.current(); ++it) {
01220 if ( it.currentKey() == group ) {
01221 mCDBTabletData = *it.current();
01222 break;
01223 }
01224 }
01225 return mCDBTabletData;
01226 }
01227
01228
01229
01230
01231 Q3Dict<QString> SaXManipulateTablets::getPenData (
01232 const QString& vendor,const QString& name
01233 ) {
01234
01237
01238 return getPenData (vendor+":"+name);
01239 }
01240
01241
01242
01243
01244 QList<QString> SaXManipulateTablets::getPenList (void) {
01245
01249
01250 mCDBPenList.clear();
01251 if ( ! mCDBPens ) {
01252 mCDBPens = new SaXProcess ();
01253 mCDBPens -> start (CDB_PENS);
01254 }
01255 Q3Dict< Q3Dict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01256 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01257 for (; it.current(); ++it) {
01258 mCDBPenList.append (QString (it.currentKey()));
01259 }
01260 return mCDBPenList;
01261 }
01262
01263
01264
01265
01266 void SaXManipulateTablets::setTablet (const QString& group) {
01267
01271
01272 if ( ! mCDBTablets ) {
01273 mCDBTablets = new SaXProcess ();
01274 mCDBTablets -> start (CDB_TABLETS);
01275 }
01276 Q3PtrList< Q3Dict<QString> > data;
01277 data = mCDBTablets -> getTablePointerCDB_DATA (
01278 group
01279 );
01280
01281
01282
01283
01284 Q3Dict<QString>* record = data.take(0);
01285 for (int n=0;n < mPointer;n++) {
01286 data.append(new Q3Dict<QString>());
01287 }
01288 data.append ( record );
01289
01290
01291
01292 if (data.isEmpty()) {
01293 excCDBRecordNotFound (group);
01294 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01295 return;
01296 }
01297 mImport -> merge ( data );
01298
01299
01300
01301 QStringList nameList = QStringList::split ( ":", group );
01302 mImport -> setItem ( "Vendor", nameList.first() );
01303 mImport -> setItem ( "Name" , nameList.last() );
01304 }
01305
01306
01307
01308 void SaXManipulateTablets::setTablet (
01309 const QString& vendor, const QString& model
01310 ) {
01311
01314
01315 setTablet (vendor+":"+model);
01316 }
01317
01318
01319
01320
01321 int SaXManipulateTablets::addPad (const QString& group) {
01322
01328
01329 if ( ! mCDBPads ) {
01330 mCDBPads = new SaXProcess ();
01331 mCDBPads -> start (CDB_PADS);
01332 }
01333 Q3PtrList< Q3Dict<QString> > data;
01334 data = mCDBPads -> getTablePointerCDB_DATA (
01335 group
01336 );
01337 if (data.isEmpty()) {
01338 excCDBRecordNotFound (group);
01339 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01340 return -1;
01341 }
01342
01343
01344
01345 Q3Dict<QString> penData = *data.at(0);
01346 QString* type = penData["TabletType"];
01347 if (! type) {
01348 excPointerFashionTypeFailed ("undefined");
01349 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01350 return -1;
01351 }
01352 if (*type != "pad") {
01353 excPointerFashionTypeFailed (*type);
01354 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01355 return -1;
01356 }
01357 QString fashion (SAX_INPUT_PAD);
01358
01359
01360
01361
01362 int newPad = mManipInputDevices->addInputDevice (fashion);
01363 if ( ! selectPointer (newPad)) {
01364 return -1;
01365 }
01366
01367
01368
01369
01370 Q3Dict<QString>* record = data.take(0);
01371 for (int n=0;n < mPointer;n++) {
01372 data.append(new Q3Dict<QString>());
01373 }
01374 data.append ( record );
01375
01376
01377
01378 mImport -> merge ( data );
01379
01380
01381
01382 QStringList nameList = QStringList::split ( ":", group );
01383 mImport -> setItem ( "Vendor", nameList.first() );
01384 mImport -> setItem ( "Name" , nameList.last() );
01385 return newPad;
01386 }
01387
01388
01389
01390 int SaXManipulateTablets::addPad (
01391 const QString& vendor, const QString& model
01392 ) {
01393
01399
01400 return addPad (vendor+":"+model);
01401 }
01402
01403
01404
01405
01406 int SaXManipulateTablets::addPen (const QString& group) {
01407
01413
01414 if ( ! mCDBPens ) {
01415 mCDBPens = new SaXProcess ();
01416 mCDBPens -> start (CDB_PENS);
01417 }
01418 Q3PtrList< Q3Dict<QString> > data;
01419 data = mCDBPens -> getTablePointerCDB_DATA (
01420 group
01421 );
01422 if (data.isEmpty()) {
01423 excCDBRecordNotFound (group);
01424 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01425 return -1;
01426 }
01427
01428
01429
01430 Q3Dict<QString> penData = *data.at(0);
01431 QString* type = penData["TabletType"];
01432 if (! type) {
01433 excPointerFashionTypeFailed ("undefined");
01434 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01435 return -1;
01436 }
01437 if ((*type != "stylus") && (*type != "eraser") && (*type != "touch")) {
01438 excPointerFashionTypeFailed (*type);
01439 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01440 return -1;
01441 }
01442 QString fashion (SAX_INPUT_PEN);
01443 if (*type == "eraser") {
01444 fashion = SAX_INPUT_ERASER;
01445 }
01446 if (*type == "touch") {
01447 fashion = SAX_INPUT_TOUCH;
01448 }
01449
01450
01451
01452
01453 int newPen = mManipInputDevices->addInputDevice (fashion);
01454 if ( ! selectPointer (newPen)) {
01455 return -1;
01456 }
01457
01458
01459
01460
01461 Q3Dict<QString>* record = data.take(0);
01462 for (int n=0;n < mPointer;n++) {
01463 data.append(new Q3Dict<QString>());
01464 }
01465 data.append ( record );
01466
01467
01468
01469 mImport -> merge ( data );
01470
01471
01472
01473 QStringList nameList = QStringList::split ( ":", group );
01474 mImport -> setItem ( "Vendor", nameList.first() );
01475 mImport -> setItem ( "Name" , nameList.last() );
01476 return newPen;
01477 }
01478
01479
01480
01481 int SaXManipulateTablets::addPen (
01482 const QString& vendor, const QString& model
01483 ) {
01484
01489
01490 return addPen (vendor+":"+model);
01491 }
01492
01493
01494
01495
01496 int SaXManipulateTablets::removePen ( int id ) {
01497
01502
01503 if (! selectPointer ( id )) {
01504 return -1;
01505 }
01506 QString fashion (
01507 mImport->getItem("InputFashion")
01508 );
01509 if (
01510 (fashion != QString(SAX_INPUT_PEN )) &&
01511 (fashion != QString(SAX_INPUT_ERASER))
01512 ) {
01513 excPointerFashionTypeFailed (fashion);
01514 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01515 return -1;
01516 }
01517 return mManipInputDevices->removeInputDevice (id);
01518 }
01519
01520
01521
01522
01523 int SaXManipulateTablets::removeTouch ( int id ) {
01524
01529
01530 if (! selectPointer ( id )) {
01531 return -1;
01532 }
01533 QString fashion (
01534 mImport->getItem("InputFashion")
01535 );
01536 if (fashion != QString(SAX_INPUT_TOUCH)) {
01537 excPointerFashionTypeFailed (fashion);
01538 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01539 return -1;
01540 }
01541 return mManipInputDevices->removeInputDevice (id);
01542 }
01543
01544
01545
01546
01547 int SaXManipulateTablets::removePad ( int id ) {
01548
01553
01554 if (! selectPointer ( id )) {
01555 return -1;
01556 }
01557 QString fashion (
01558 mImport->getItem("InputFashion")
01559 );
01560 if (fashion != QString(SAX_INPUT_PAD)) {
01561 excPointerFashionTypeFailed (fashion);
01562 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01563 return -1;
01564 }
01565 return mManipInputDevices->removeInputDevice (id);
01566 }
01567
01568
01569
01570
01571 SaXManipulateTouchscreens::SaXManipulateTouchscreens (
01572 SaXImport* in, int ptr
01573 ) : SaXManipulateTouchscreensIF (in,ptr) {
01574
01578
01579 mCDBPanels = 0;
01580 }
01581
01582
01583
01584
01585 bool SaXManipulateTouchscreens::isTouchpanel (void) {
01586
01590
01591 if (! mImport) {
01592 return false;
01593 }
01594 QString fashion = mImport -> getItem ("InputFashion");
01595 if (fashion == "Touchpanel") {
01596 return true;
01597 }
01598 return false;
01599 }
01600
01601
01602
01603
01604 QString SaXManipulateTouchscreens::getName ( void ) {
01605
01609
01610 if (! mImport) {
01611 QString* nope = new QString;
01612 return *nope;
01613 }
01614 QString name = mImport -> getItem ("Name");
01615 QStringList vnlist = QStringList::split ( ";", name );
01616 return vnlist.last();
01617 }
01618
01619
01620
01621
01622 QString SaXManipulateTouchscreens::getVendor ( void ) {
01623
01627
01628 if (! mImport) {
01629 QString* nope = new QString;
01630 return *nope;
01631 }
01632 QString name = mImport -> getItem ("Name");
01633 QStringList vnlist = QStringList::split ( ";", name );
01634 return vnlist.first();
01635 }
01636
01637
01638
01639
01640 QString SaXManipulateTouchscreens::getType (void) {
01641
01645
01646 if (! mImport) {
01647 QString* nope = new QString;
01648 return *nope;
01649 }
01650 return mImport -> getItem ("TabletType");
01651 }
01652
01653
01654
01655
01656 QList<QString> SaXManipulateTouchscreens::getPanelList (void) {
01657
01661
01662 mCDBPanelList.clear();
01663 if ( ! mCDBPanels ) {
01664 mCDBPanels = new SaXProcess ();
01665 mCDBPanels -> start (CDB_TOUCHERS);
01666 }
01667 Q3Dict< Q3Dict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01668 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01669 for (; it.current(); ++it) {
01670 mCDBPanelList.append (QString (it.currentKey()));
01671 }
01672 return mCDBPanelList;
01673 }
01674
01675
01676
01677
01678 QList<QString> SaXManipulateTouchscreens::getPanelVendorList (void) {
01679
01682
01683 QList<QString> panelList = getPanelList();
01684 mCDBPanelList.clear();
01685 QString it;
01686 foreach (it,panelList) {
01687 QStringList vnlist = QStringList::split ( ":", it );
01688 QString* vendorName = new QString (vnlist.first());
01689 int hasVendor = false;
01690 QString io;
01691 foreach (io,mCDBPanelList) {
01692 if ( io == *vendorName ) {
01693 hasVendor = true;
01694 break;
01695 }
01696 }
01697 if (! hasVendor ) {
01698 mCDBPanelList.append ( *vendorName );
01699 }
01700 }
01701 return mCDBPanelList;
01702 }
01703
01704
01705
01706
01707 QList<QString> SaXManipulateTouchscreens::getPanelModelList (
01708 const QString& vendor
01709 ) {
01710
01713
01714 QList<QString> panelList = getPanelList();
01715 mCDBPanelList.clear();
01716 QString it;
01717 foreach (it,panelList) {
01718 QStringList vnlist = QStringList::split ( ":", it );
01719 QString vendorName = vnlist.first();
01720 QString* modelName = new QString (vnlist.last());
01721 if ( vendorName == vendor ) {
01722 mCDBPanelList.append ( *modelName );
01723 }
01724 }
01725 return mCDBPanelList;
01726 }
01727
01728
01729
01730
01731 Q3Dict<QString> SaXManipulateTouchscreens::getPanelData (
01732 const QString& group
01733 ) {
01734
01737
01738 mCDBPanelData.clear();
01739 if ( ! mCDBPanels ) {
01740 mCDBPanels = new SaXProcess ();
01741 mCDBPanels -> start (CDB_TOUCHERS);
01742 }
01743 Q3Dict< Q3Dict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01744 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01745 for (; it.current(); ++it) {
01746 if ( it.currentKey() == group ) {
01747 mCDBPanelData = *it.current();
01748 break;
01749 }
01750 }
01751 return mCDBPanelData;
01752 }
01753
01754
01755
01756
01757 Q3Dict<QString> SaXManipulateTouchscreens::getPanelData (
01758 const QString& vendor,const QString& name
01759 ) {
01760
01763
01764 return getPanelData (vendor+":"+name);
01765 }
01766
01767
01768
01769
01770 void SaXManipulateTouchscreens::setTouchPanel (const QString& group) {
01771
01775
01776 if ( ! mCDBPanels ) {
01777 mCDBPanels = new SaXProcess ();
01778 mCDBPanels -> start (CDB_TOUCHERS);
01779 }
01780 Q3PtrList< Q3Dict<QString> > data;
01781 data = mCDBPanels -> getTablePointerCDB_DATA (
01782 group
01783 );
01784 if (data.isEmpty()) {
01785 excCDBRecordNotFound (group);
01786 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01787 return;
01788 }
01789
01790
01791
01792
01793 Q3Dict<QString>* record = data.take(0);
01794 for (int n=0;n < mPointer;n++) {
01795 data.append(new Q3Dict<QString>());
01796 }
01797 data.append ( record );
01798
01799
01800
01801 mImport -> merge ( data );
01802
01803
01804
01805 QStringList nameList = QStringList::split ( ":", group );
01806 setNamePair (
01807 nameList.first(),
01808 nameList.last()
01809 );
01810 }
01811
01812
01813
01814
01815 void SaXManipulateTouchscreens::setTouchPanel (
01816 const QString& vendor, const QString& model
01817 ) {
01818
01821
01822 setTouchPanel (vendor+":"+model);
01823 }
01824 }