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) {
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) {
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 return QString();
00233 }
00234 return mImport -> getItem ("Device");
00235 }
00236
00237
00238
00239
00240 QString SaXManipulatePointers::getDriver ( void ) {
00241
00243
00244 if (! mImport) {
00245 return QString();
00246 }
00247 return mImport -> getItem ("Driver");
00248 }
00249
00250
00251
00252
00253 QString SaXManipulatePointers::getProtocol ( void ) {
00254
00256
00257 if (! mImport) {
00258 return QString();
00259 }
00260 return mImport -> getItem ("Protocol");
00261 }
00262
00263
00264
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
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
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
00311
00312 SaXManipulateMice::SaXManipulateMice (
00313 SaXImport* in, int ptr
00314 ) : SaXManipulateMiceIF (in,ptr) {
00315
00318
00319 mCDBMice = 0;
00320 }
00321
00322
00323
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
00341
00342 void SaXManipulateMice::disableWheelEmulation (void) {
00343
00347
00348 if (! mImport) {
00349 return;
00350 }
00351 mImport -> setItem ("EmulateWheel","");
00352 }
00353
00354
00355
00356
00357 void SaXManipulateMice::enable3ButtonEmulation (void) {
00358
00362
00363 if (! mImport) {
00364 return;
00365 }
00366 mImport -> setItem ("Emulate3Buttons","on");
00367 }
00368
00369
00370
00371
00372 void SaXManipulateMice::disable3ButtonEmulation (void) {
00373
00375
00376 if (! mImport) {
00377 return;
00378 }
00379 mImport -> setItem ("Emulate3Buttons","");
00380 }
00381
00382
00383
00384
00385 void SaXManipulateMice::enableWheel (void) {
00386
00391
00392 if (! mImport) {
00393 return;
00394 }
00395 mImport -> setItem ("ZAxisMapping","4 5");
00396 }
00397
00398
00399
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
00416
00417 void SaXManipulateMice::enableXAxisInvertation (void) {
00418
00421
00422 if (! mImport) {
00423 return;
00424 }
00425 mImport -> setItem ("InvX","on");
00426 }
00427
00428
00429
00430
00431 void SaXManipulateMice::enableYAxisInvertation (void) {
00432
00435
00436 if (! mImport) {
00437 return;
00438 }
00439 mImport -> setItem ("InvY","on");
00440 }
00441
00442
00443
00444
00445 void SaXManipulateMice::disableWheel (void) {
00446
00449
00450 if (! mImport) {
00451 return;
00452 }
00453 mImport -> setItem ("ZAxisMapping","");
00454 }
00455
00456
00457
00458
00459 void SaXManipulateMice::disableXAxisInvertation (void) {
00460
00463
00464 if (! mImport) {
00465 return;
00466 }
00467 mImport -> setItem ("InvX","");
00468 }
00469
00470
00471
00472
00473 void SaXManipulateMice::disableYAxisInvertation (void) {
00474
00477
00478 if (! mImport) {
00479 return;
00480 }
00481 mImport -> setItem ("InvY","");
00482 }
00483
00484
00485
00486
00487 void SaXManipulateMice::enableLeftHandMapping ( void ) {
00488
00491
00492 if (! mImport) {
00493 return;
00494 }
00495 mImport -> setItem ("ButtonMapping","3 2 1");
00496 }
00497
00498
00499
00500
00501 void SaXManipulateMice::disableLeftHandMapping ( void ) {
00502
00505
00506 if (! mImport) {
00507 return;
00508 }
00509 mImport -> setItem ("ButtonMapping","");
00510 }
00511
00512
00513
00514
00515 bool SaXManipulateMice::isMouse (void) {
00516
00521
00522 if (! mImport) {
00523 return false;
00524 }
00525 QString driver = getDriver();
00526 QString fashion = mImport -> getItem ("InputFashion");
00527 if ((driver == "mouse") || (driver == "evdev")) {
00528 if (fashion != "MultiSeat") {
00529 return true;
00530 }
00531 return false;
00532 }
00533 if ((fashion != "Tablet") &&
00534 (fashion != "Pen") &&
00535 (fashion != "Eraser") &&
00536 (fashion != "VNC") &&
00537 (fashion != "Keyboard") &&
00538 (fashion != "Touchpanel")
00539 ) {
00540 return true;
00541 }
00542 return false;
00543 }
00544
00545
00546
00547
00548 bool SaXManipulateMice::isWheelEnabled (void) {
00549
00552
00553 if (! mImport) {
00554 return false;
00555 }
00556 QString zaxis = mImport -> getItem ("ZAxisMapping");
00557 if (! zaxis.isEmpty()) {
00558 return true;
00559 }
00560 return false;
00561 }
00562
00563
00564
00565
00566 bool SaXManipulateMice::isLeftHandEnabled (void) {
00567
00570
00571 if (! mImport) {
00572 return false;
00573 }
00574 QString mapping = mImport -> getItem ("ButtonMapping");
00575 if (mapping.contains("3 2 1")) {
00576 return true;
00577 }
00578 return false;
00579 }
00580
00581
00582
00583
00584 bool SaXManipulateMice::isXAxisInverted (void) {
00585
00588
00589 if (! mImport) {
00590 return false;
00591 }
00592 QString xaxis = mImport -> getItem ("InvX");
00593 if (xaxis == "on") {
00594 return true;
00595 }
00596 return false;
00597 }
00598
00599
00600
00601
00602 bool SaXManipulateMice::isYAxisInverted (void) {
00603
00606
00607 if (! mImport) {
00608 return false;
00609 }
00610 QString yaxis = mImport -> getItem ("InvY");
00611 if (yaxis == "on") {
00612 return true;
00613 }
00614 return false;
00615 }
00616
00617
00618
00619
00620 bool SaXManipulateMice::isWheelEmulated (void) {
00621
00624
00625 if (! mImport) {
00626 return false;
00627 }
00628 QString emulate = mImport -> getItem ("EmulateWheel");
00629 if (! emulate.isEmpty()) {
00630 return true;
00631 }
00632 return false;
00633 }
00634
00635
00636
00637
00638 bool SaXManipulateMice::isButtonEmulated (void) {
00639
00642
00643 if (! mImport) {
00644 return false;
00645 }
00646 QString emulate = mImport -> getItem ("Emulate3Buttons");
00647 if (emulate == "on") {
00648 return true;
00649 }
00650 return false;
00651 }
00652
00653
00654
00655
00656 int SaXManipulateMice::getWheelEmulatedButton (void) {
00657
00661
00662 if (! isWheelEmulated()) {
00663 return -1;
00664 }
00665 int btn = mImport -> getItem ("EmulateWheel").toInt();
00666 return btn;
00667 }
00668
00669
00670
00671
00672 QList<QString> SaXManipulateMice::getMouseList (void) {
00673
00677
00678 mCDBMouseList.clear();
00679 if ( ! mCDBMice ) {
00680 mCDBMice = new SaXProcess ();
00681 mCDBMice -> start (CDB_POINTERS);
00682 }
00683 QDict< QDict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00684 QDictIterator< QDict<QString> > it (CDBData);
00685 for (; it.current(); ++it) {
00686 mCDBMouseList.append (new QString (it.currentKey()));
00687 }
00688 return mCDBMouseList;
00689 }
00690
00691
00692
00693
00694 QList<QString> SaXManipulateMice::getMouseVendorList (void) {
00695
00698
00699 QList<QString> mouseList = getMouseList();
00700 mCDBMouseList.clear();
00701 QListIterator<QString> it (mouseList);
00702 for (; it.current(); ++it) {
00703 QStringList vnlist = QStringList::split ( ":", *it.current() );
00704 QString* vendorName = new QString (vnlist.first());
00705 int hasVendor = false;
00706 QListIterator<QString> io (mCDBMouseList);
00707 for (; io.current(); ++io) {
00708 if ( *io.current() == *vendorName ) {
00709 hasVendor = true;
00710 break;
00711 }
00712 }
00713 if (! hasVendor ) {
00714 mCDBMouseList.append ( vendorName );
00715 }
00716 }
00717 return mCDBMouseList;
00718 }
00719
00720
00721
00722
00723 QList<QString> SaXManipulateMice::getMouseModelList (
00724 const QString& vendor
00725 ) {
00726
00729
00730 QList<QString> mouseList = getMouseList();
00731 mCDBMouseList.clear();
00732 QListIterator<QString> it (mouseList);
00733 for (; it.current(); ++it) {
00734 QStringList vnlist = QStringList::split ( ":", *it.current() );
00735 QString vendorName = vnlist.first();
00736 QString* modelName = new QString (vnlist.last());
00737 if ( vendorName == vendor ) {
00738 mCDBMouseList.append ( modelName );
00739 }
00740 }
00741 return mCDBMouseList;
00742 }
00743
00744
00745
00746
00747 void SaXManipulateMice::setMouse ( const QString& group ) {
00748
00752
00753 if ( ! mCDBMice ) {
00754 mCDBMice = new SaXProcess ();
00755 mCDBMice -> start (CDB_POINTERS);
00756 }
00757 QList< QDict<QString> > data;
00758 data = mCDBMice -> getTablePointerCDB_DATA (
00759 group
00760 );
00761
00762
00763
00764
00765 QDict<QString>* record = data.take(0);
00766 for (int n=0;n < mPointer;n++) {
00767 data.append(new QDict<QString>());
00768 }
00769 data.append ( record );
00770
00771
00772
00773 if (data.isEmpty()) {
00774 excCDBRecordNotFound (group);
00775 qError (errorString(),EXC_CDBRECORDNOTFOUND);
00776 return;
00777 }
00778 mImport -> merge ( data );
00779
00780
00781
00782 QStringList nameList = QStringList::split ( ":", group );
00783 mImport -> setItem ( "Vendor", nameList.first() );
00784 mImport -> setItem ( "Name" , nameList.last() );
00785 }
00786
00787
00788
00789
00790 void SaXManipulateMice::setMouse (
00791 const QString& vendor, const QString& model
00792 ) {
00793
00796
00797 setMouse (vendor+":"+model);
00798 }
00799
00800
00801
00802
00803 QDict<QString> SaXManipulateMice::getMouseData (
00804 const QString& group
00805 ) {
00806
00809
00810 mCDBMouseData.clear();
00811 if ( ! mCDBMice ) {
00812 mCDBMice = new SaXProcess ();
00813 mCDBMice -> start (CDB_POINTERS);
00814 }
00815 QDict< QDict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00816 QDictIterator< QDict<QString> > it (CDBData);
00817 for (; it.current(); ++it) {
00818 if ( it.currentKey() == group ) {
00819 mCDBMouseData = *it.current();
00820 break;
00821 }
00822 }
00823 return mCDBMouseData;
00824 }
00825
00826
00827
00828
00829 QDict<QString> SaXManipulateMice::getMouseData (
00830 const QString& vendor, const QString& name
00831 ) {
00832
00835
00836 return getMouseData (vendor+":"+name);
00837 }
00838
00839
00840
00841
00842
00843 SaXManipulateTablets::SaXManipulateTablets (
00844 SaXImport* pointer, SaXImport* layout, int id
00845 ) : SaXManipulateTabletsIF (pointer,id) {
00846
00849
00850 mManipInputDevices = new SaXManipulateDevices (pointer,layout);
00851 mCDBTabletModules = 0;
00852 mCDBTablets = 0;
00853 mCDBPens = 0;
00854 mCDBPads = 0;
00855 }
00856
00857
00858
00859
00860 void SaXManipulateTablets::setType (const QString& type) {
00861
00864
00865 if (! mImport) {
00866 return;
00867 }
00868 mImport -> setItem ("TabletType",type);
00869 }
00870
00871
00872
00873
00874 void SaXManipulateTablets::setMode (const QString& mode) {
00875
00878
00879 if (! mImport) {
00880 return;
00881 }
00882 mImport -> setItem ("TabletMode",mode);
00883 }
00884
00885
00886
00887
00888 bool SaXManipulateTablets::isTablet (void) {
00889
00892
00893 if (! mImport) {
00894 return false;
00895 }
00896 QString fashion = mImport -> getItem ("InputFashion");
00897 if (fashion == "Tablet") {
00898 return true;
00899 }
00900 return false;
00901 }
00902
00903
00904
00905
00906 bool SaXManipulateTablets::isPen (void) {
00907
00910
00911 if (! mImport) {
00912 return false;
00913 }
00914 QString fashion = mImport -> getItem ("InputFashion");
00915 if (fashion == "Pen") {
00916 return true;
00917 }
00918 return false;
00919 }
00920
00921
00922
00923
00924 bool SaXManipulateTablets::isEraser (void) {
00925
00929
00930 if (! mImport) {
00931 return false;
00932 }
00933 QString fashion = mImport -> getItem ("InputFashion");
00934 if (fashion == "Eraser") {
00935 return true;
00936 }
00937 return false;
00938 }
00939
00940
00941
00942
00943 bool SaXManipulateTablets::isPad (void) {
00944
00947
00948 if (! mImport) {
00949 return false;
00950 }
00951 QString fashion = mImport -> getItem ("InputFashion");
00952 if (fashion == "Pad") {
00953 return true;
00954 }
00955 return false;
00956 }
00957
00958
00959
00960
00961 QString SaXManipulateTablets::getName (void) {
00962
00964
00965 if (! mImport) {
00966 return QString();
00967 }
00968 return mImport -> getItem ("Name");
00969 }
00970
00971
00972
00973
00974 QString SaXManipulateTablets::getVendor (void) {
00975
00977
00978 if (! mImport) {
00979 return QString();
00980 }
00981 return mImport -> getItem ("Vendor");
00982 }
00983
00984
00985
00986
00987 QString SaXManipulateTablets::getType (void) {
00988
00991
00992 if (! mImport) {
00993 return QString();
00994 }
00995 return mImport -> getItem ("TabletType");
00996 }
00997
00998
00999
01000
01001 QString SaXManipulateTablets::getMode (void) {
01002
01005
01006 if (! mImport) {
01007 return QString();
01008 }
01009 return mImport -> getItem ("TabletMode");
01010 }
01011
01012
01013
01014
01015 QList<QString> SaXManipulateTablets::getTabletDrivers (void) {
01016
01019
01020 mCDBTabletDrivers.clear();
01021 if ( ! mCDBTabletModules ) {
01022 mCDBTabletModules = new SaXProcess ();
01023 mCDBTabletModules -> start (CDB_TABLETMODULES);
01024 }
01025 QDict< QDict<QString> > CDBModules=mCDBTabletModules->getTablePointerCDB();
01026 QDictIterator< QDict<QString> > it (CDBModules);
01027 for (; it.current(); ++it) {
01028 mCDBTabletDrivers.append (new QString(it.currentKey()));
01029 }
01030 return mCDBTabletDrivers;
01031 }
01032
01033
01034
01035
01036 QDict<QString> SaXManipulateTablets::getTabletOptions (const QString& driver) {
01037
01043
01044 mCDBTabletOptions.clear();
01045 if ( ! mCDBTabletModules ) {
01046 mCDBTabletModules = new SaXProcess ();
01047 mCDBTabletModules -> start (CDB_TABLETMODULES);
01048 }
01049 QList< QDict<QString> > opts;
01050 opts = mCDBTabletModules -> getTablePointerCDB_DATA (
01051 driver
01052 );
01053 if (opts.isEmpty()) {
01054 excCDBRecordNotFound (driver);
01055 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01056 return QDict<QString>();
01057 }
01058 mCDBTabletOptions = *opts.at(0);
01059 return mCDBTabletOptions;
01060 }
01061
01062
01063
01064
01065 QList<QString> SaXManipulateTablets::getTabletList (void) {
01066
01070
01071 mCDBTabletList.clear();
01072 if ( ! mCDBTablets ) {
01073 mCDBTablets = new SaXProcess ();
01074 mCDBTablets -> start (CDB_TABLETS);
01075 }
01076 QDict< QDict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01077 QDictIterator< QDict<QString> > it (CDBData);
01078 for (; it.current(); ++it) {
01079 mCDBTabletList.append (new QString (it.currentKey()));
01080 }
01081 return mCDBTabletList;
01082 }
01083
01084
01085
01086
01087 QList<QString> SaXManipulateTablets::getTabletVendorList (void) {
01088
01091
01092 QList<QString> tabletList = getTabletList();
01093 mCDBTabletList.clear();
01094 QListIterator<QString> it (tabletList);
01095 for (; it.current(); ++it) {
01096 QStringList vnlist = QStringList::split ( ":", *it.current() );
01097 QString* vendorName = new QString (vnlist.first());
01098 int hasVendor = false;
01099 QListIterator<QString> io (mCDBTabletList);
01100 for (; io.current(); ++io) {
01101 if ( *io.current() == *vendorName ) {
01102 hasVendor = true;
01103 break;
01104 }
01105 }
01106 if (! hasVendor ) {
01107 mCDBTabletList.append ( vendorName );
01108 }
01109 }
01110 return mCDBTabletList;
01111 }
01112
01113
01114
01115
01116 QList<QString> SaXManipulateTablets::getTabletModelList (
01117 const QString& vendor
01118 ) {
01119
01122
01123 QList<QString> tabletList = getTabletList();
01124 mCDBTabletList.clear();
01125 QListIterator<QString> it (tabletList);
01126 for (; it.current(); ++it) {
01127 QStringList vnlist = QStringList::split ( ":", *it.current() );
01128 QString vendorName = vnlist.first();
01129 QString* modelName = new QString (vnlist.last());
01130 if ( vendorName == vendor ) {
01131 mCDBTabletList.append ( modelName );
01132 }
01133 }
01134 return mCDBTabletList;
01135 }
01136
01137
01138
01139
01140 QDict<QString> SaXManipulateTablets::getTabletData ( const QString& group ) {
01141
01144
01145 mCDBTabletData.clear();
01146 if ( ! mCDBTablets ) {
01147 mCDBTablets = new SaXProcess ();
01148 mCDBTablets -> start (CDB_TABLETS);
01149 }
01150 QDict< QDict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01151 QDictIterator< QDict<QString> > it (CDBData);
01152 for (; it.current(); ++it) {
01153 if ( it.currentKey() == group ) {
01154 mCDBTabletData = *it.current();
01155 break;
01156 }
01157 }
01158 return mCDBTabletData;
01159 }
01160
01161
01162
01163
01164 QDict<QString> SaXManipulateTablets::getTabletData (
01165 const QString& vendor,const QString& name
01166 ) {
01167
01170
01171 return getTabletData (vendor+":"+name);
01172 }
01173
01174
01175
01176
01177 QDict<QString> SaXManipulateTablets::getPenData ( const QString& group ) {
01178
01181
01182 mCDBTabletData.clear();
01183 if ( ! mCDBPens ) {
01184 mCDBPens = new SaXProcess ();
01185 mCDBPens -> start (CDB_PENS);
01186 }
01187 QDict< QDict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01188 QDictIterator< QDict<QString> > it (CDBData);
01189 for (; it.current(); ++it) {
01190 if ( it.currentKey() == group ) {
01191 mCDBTabletData = *it.current();
01192 break;
01193 }
01194 }
01195 return mCDBTabletData;
01196 }
01197
01198
01199
01200
01201 QDict<QString> SaXManipulateTablets::getPenData (
01202 const QString& vendor,const QString& name
01203 ) {
01204
01207
01208 return getPenData (vendor+":"+name);
01209 }
01210
01211
01212
01213
01214 QList<QString> SaXManipulateTablets::getPenList (void) {
01215
01219
01220 mCDBPenList.clear();
01221 if ( ! mCDBPens ) {
01222 mCDBPens = new SaXProcess ();
01223 mCDBPens -> start (CDB_PENS);
01224 }
01225 QDict< QDict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01226 QDictIterator< QDict<QString> > it (CDBData);
01227 for (; it.current(); ++it) {
01228 mCDBPenList.append (new QString (it.currentKey()));
01229 }
01230 return mCDBPenList;
01231 }
01232
01233
01234
01235
01236 void SaXManipulateTablets::setTablet (const QString& group) {
01237
01241
01242 if ( ! mCDBTablets ) {
01243 mCDBTablets = new SaXProcess ();
01244 mCDBTablets -> start (CDB_TABLETS);
01245 }
01246 QList< QDict<QString> > data;
01247 data = mCDBTablets -> getTablePointerCDB_DATA (
01248 group
01249 );
01250
01251
01252
01253
01254 QDict<QString>* record = data.take(0);
01255 for (int n=0;n < mPointer;n++) {
01256 data.append(new QDict<QString>());
01257 }
01258 data.append ( record );
01259
01260
01261
01262 if (data.isEmpty()) {
01263 excCDBRecordNotFound (group);
01264 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01265 return;
01266 }
01267 mImport -> merge ( data );
01268
01269
01270
01271 QStringList nameList = QStringList::split ( ":", group );
01272 mImport -> setItem ( "Vendor", nameList.first() );
01273 mImport -> setItem ( "Name" , nameList.last() );
01274 }
01275
01276
01277
01278 void SaXManipulateTablets::setTablet (
01279 const QString& vendor, const QString& model
01280 ) {
01281
01284
01285 setTablet (vendor+":"+model);
01286 }
01287
01288
01289
01290
01291 int SaXManipulateTablets::addPad (const QString& group) {
01292
01298
01299 if ( ! mCDBPads ) {
01300 mCDBPads = new SaXProcess ();
01301 mCDBPads -> start (CDB_PADS);
01302 }
01303 QList< QDict<QString> > data;
01304 data = mCDBPads -> getTablePointerCDB_DATA (
01305 group
01306 );
01307 if (data.isEmpty()) {
01308 excCDBRecordNotFound (group);
01309 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01310 return -1;
01311 }
01312
01313
01314
01315 QDict<QString> penData = *data.at(0);
01316 QString* type = penData["TabletType"];
01317 if (! type) {
01318 excPointerFashionTypeFailed ("undefined");
01319 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01320 return -1;
01321 }
01322 if (*type != "pad") {
01323 excPointerFashionTypeFailed (*type);
01324 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01325 return -1;
01326 }
01327 QString fashion (SAX_INPUT_PAD);
01328
01329
01330
01331
01332 int newPad = mManipInputDevices->addInputDevice (fashion);
01333 if ( ! selectPointer (newPad)) {
01334 return -1;
01335 }
01336
01337
01338
01339
01340 QDict<QString>* record = data.take(0);
01341 for (int n=0;n < mPointer;n++) {
01342 data.append(new QDict<QString>());
01343 }
01344 data.append ( record );
01345
01346
01347
01348 mImport -> merge ( data );
01349
01350
01351
01352 QStringList nameList = QStringList::split ( ":", group );
01353 mImport -> setItem ( "Vendor", nameList.first() );
01354 mImport -> setItem ( "Name" , nameList.last() );
01355 return newPad;
01356 }
01357
01358
01359
01360 int SaXManipulateTablets::addPad (
01361 const QString& vendor, const QString& model
01362 ) {
01363
01369
01370 return addPad (vendor+":"+model);
01371 }
01372
01373
01374
01375
01376 int SaXManipulateTablets::addPen (const QString& group) {
01377
01383
01384 if ( ! mCDBPens ) {
01385 mCDBPens = new SaXProcess ();
01386 mCDBPens -> start (CDB_PENS);
01387 }
01388 QList< QDict<QString> > data;
01389 data = mCDBPens -> getTablePointerCDB_DATA (
01390 group
01391 );
01392 if (data.isEmpty()) {
01393 excCDBRecordNotFound (group);
01394 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01395 return -1;
01396 }
01397
01398
01399
01400 QDict<QString> penData = *data.at(0);
01401 QString* type = penData["TabletType"];
01402 if (! type) {
01403 excPointerFashionTypeFailed ("undefined");
01404 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01405 return -1;
01406 }
01407 if ((*type != "stylus") && (*type != "eraser")) {
01408 excPointerFashionTypeFailed (*type);
01409 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01410 return -1;
01411 }
01412 QString fashion (SAX_INPUT_PEN);
01413 if (*type == "eraser") {
01414 fashion = SAX_INPUT_ERASER;
01415 }
01416
01417
01418
01419
01420 int newPen = mManipInputDevices->addInputDevice (fashion);
01421 if ( ! selectPointer (newPen)) {
01422 return -1;
01423 }
01424
01425
01426
01427
01428 QDict<QString>* record = data.take(0);
01429 for (int n=0;n < mPointer;n++) {
01430 data.append(new QDict<QString>());
01431 }
01432 data.append ( record );
01433
01434
01435
01436 mImport -> merge ( data );
01437
01438
01439
01440 QStringList nameList = QStringList::split ( ":", group );
01441 mImport -> setItem ( "Vendor", nameList.first() );
01442 mImport -> setItem ( "Name" , nameList.last() );
01443 return newPen;
01444 }
01445
01446
01447
01448 int SaXManipulateTablets::addPen (
01449 const QString& vendor, const QString& model
01450 ) {
01451
01456
01457 return addPen (vendor+":"+model);
01458 }
01459
01460
01461
01462
01463 int SaXManipulateTablets::removePen ( int id ) {
01464
01469
01470 if (! selectPointer ( id )) {
01471 return -1;
01472 }
01473 QString fashion (
01474 mImport->getItem("InputFashion")
01475 );
01476 if (
01477 (fashion != QString(SAX_INPUT_PEN )) &&
01478 (fashion != QString(SAX_INPUT_ERASER))
01479 ) {
01480 excPointerFashionTypeFailed (fashion);
01481 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01482 return -1;
01483 }
01484 return mManipInputDevices->removeInputDevice (id);
01485 }
01486
01487
01488
01489
01490 int SaXManipulateTablets::removePad ( int id ) {
01491
01496
01497 if (! selectPointer ( id )) {
01498 return -1;
01499 }
01500 QString fashion (
01501 mImport->getItem("InputFashion")
01502 );
01503 if (fashion != QString(SAX_INPUT_PAD)) {
01504 excPointerFashionTypeFailed (fashion);
01505 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01506 return -1;
01507 }
01508 return mManipInputDevices->removeInputDevice (id);
01509 }
01510
01511
01512
01513
01514 SaXManipulateTouchscreens::SaXManipulateTouchscreens (
01515 SaXImport* in, int ptr
01516 ) : SaXManipulateTouchscreensIF (in,ptr) {
01517
01521
01522 mCDBPanels = 0;
01523 }
01524
01525
01526
01527
01528 bool SaXManipulateTouchscreens::isTouchpanel (void) {
01529
01533
01534 if (! mImport) {
01535 return false;
01536 }
01537 QString fashion = mImport -> getItem ("InputFashion");
01538 if (fashion == "Touchpanel") {
01539 return true;
01540 }
01541 return false;
01542 }
01543
01544
01545
01546
01547 QString SaXManipulateTouchscreens::getName ( void ) {
01548
01552
01553 if (! mImport) {
01554 return QString();
01555 }
01556 QString name = mImport -> getItem ("Name");
01557 QStringList vnlist = QStringList::split ( ";", name );
01558 return vnlist.last();
01559 }
01560
01561
01562
01563
01564 QString SaXManipulateTouchscreens::getVendor ( void ) {
01565
01569
01570 if (! mImport) {
01571 return QString();
01572 }
01573 QString name = mImport -> getItem ("Name");
01574 QStringList vnlist = QStringList::split ( ";", name );
01575 return vnlist.first();
01576 }
01577
01578
01579
01580
01581 QString SaXManipulateTouchscreens::getType (void) {
01582
01586
01587 if (! mImport) {
01588 return QString();
01589 }
01590 return mImport -> getItem ("TabletType");
01591 }
01592
01593
01594
01595
01596 QList<QString> SaXManipulateTouchscreens::getPanelList (void) {
01597
01601
01602 mCDBPanelList.clear();
01603 if ( ! mCDBPanels ) {
01604 mCDBPanels = new SaXProcess ();
01605 mCDBPanels -> start (CDB_TOUCHERS);
01606 }
01607 QDict< QDict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01608 QDictIterator< QDict<QString> > it (CDBData);
01609 for (; it.current(); ++it) {
01610 mCDBPanelList.append (new QString (it.currentKey()));
01611 }
01612 return mCDBPanelList;
01613 }
01614
01615
01616
01617
01618 QList<QString> SaXManipulateTouchscreens::getPanelVendorList (void) {
01619
01622
01623 QList<QString> panelList = getPanelList();
01624 mCDBPanelList.clear();
01625 QListIterator<QString> it (panelList);
01626 for (; it.current(); ++it) {
01627 QStringList vnlist = QStringList::split ( ":", *it.current() );
01628 QString* vendorName = new QString (vnlist.first());
01629 int hasVendor = false;
01630 QListIterator<QString> io (mCDBPanelList);
01631 for (; io.current(); ++io) {
01632 if ( *io.current() == *vendorName ) {
01633 hasVendor = true;
01634 break;
01635 }
01636 }
01637 if (! hasVendor ) {
01638 mCDBPanelList.append ( vendorName );
01639 }
01640 }
01641 return mCDBPanelList;
01642 }
01643
01644
01645
01646
01647 QList<QString> SaXManipulateTouchscreens::getPanelModelList (
01648 const QString& vendor
01649 ) {
01650
01653
01654 QList<QString> panelList = getPanelList();
01655 mCDBPanelList.clear();
01656 QListIterator<QString> it (panelList);
01657 for (; it.current(); ++it) {
01658 QStringList vnlist = QStringList::split ( ":", *it.current() );
01659 QString vendorName = vnlist.first();
01660 QString* modelName = new QString (vnlist.last());
01661 if ( vendorName == vendor ) {
01662 mCDBPanelList.append ( modelName );
01663 }
01664 }
01665 return mCDBPanelList;
01666 }
01667
01668
01669
01670
01671 QDict<QString> SaXManipulateTouchscreens::getPanelData (
01672 const QString& group
01673 ) {
01674
01677
01678 mCDBPanelData.clear();
01679 if ( ! mCDBPanels ) {
01680 mCDBPanels = new SaXProcess ();
01681 mCDBPanels -> start (CDB_TOUCHERS);
01682 }
01683 QDict< QDict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01684 QDictIterator< QDict<QString> > it (CDBData);
01685 for (; it.current(); ++it) {
01686 if ( it.currentKey() == group ) {
01687 mCDBPanelData = *it.current();
01688 break;
01689 }
01690 }
01691 return mCDBPanelData;
01692 }
01693
01694
01695
01696
01697 QDict<QString> SaXManipulateTouchscreens::getPanelData (
01698 const QString& vendor,const QString& name
01699 ) {
01700
01703
01704 return getPanelData (vendor+":"+name);
01705 }
01706
01707
01708
01709
01710 void SaXManipulateTouchscreens::setTouchPanel (const QString& group) {
01711
01715
01716 if ( ! mCDBPanels ) {
01717 mCDBPanels = new SaXProcess ();
01718 mCDBPanels -> start (CDB_TOUCHERS);
01719 }
01720 QList< QDict<QString> > data;
01721 data = mCDBPanels -> getTablePointerCDB_DATA (
01722 group
01723 );
01724 if (data.isEmpty()) {
01725 excCDBRecordNotFound (group);
01726 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01727 return;
01728 }
01729
01730
01731
01732
01733 QDict<QString>* record = data.take(0);
01734 for (int n=0;n < mPointer;n++) {
01735 data.append(new QDict<QString>());
01736 }
01737 data.append ( record );
01738
01739
01740
01741 mImport -> merge ( data );
01742
01743
01744
01745 QStringList nameList = QStringList::split ( ":", group );
01746 setNamePair (
01747 nameList.first(),
01748 nameList.last()
01749 );
01750 }
01751
01752
01753
01754
01755 void SaXManipulateTouchscreens::setTouchPanel (
01756 const QString& vendor, const QString& model
01757 ) {
01758
01761
01762 setTouchPanel (vendor+":"+model);
01763 }
01764 }