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 != "VNC") &&
00541 (fashion != "Keyboard") &&
00542 (fashion != "Touchpanel")
00543 ) {
00544 return true;
00545 }
00546 return false;
00547 }
00548
00549
00550
00551
00552 bool SaXManipulateMice::isWheelEnabled (void) {
00553
00556
00557 if (! mImport) {
00558 return false;
00559 }
00560 QString zaxis = mImport -> getItem ("ZAxisMapping");
00561 if (! zaxis.isEmpty()) {
00562 return true;
00563 }
00564 return false;
00565 }
00566
00567
00568
00569
00570 bool SaXManipulateMice::isLeftHandEnabled (void) {
00571
00574
00575 if (! mImport) {
00576 return false;
00577 }
00578 QString mapping = mImport -> getItem ("ButtonMapping");
00579 if (mapping.contains("3 2 1")) {
00580 return true;
00581 }
00582 return false;
00583 }
00584
00585
00586
00587
00588 bool SaXManipulateMice::isXAxisInverted (void) {
00589
00592
00593 if (! mImport) {
00594 return false;
00595 }
00596 QString xaxis = mImport -> getItem ("InvX");
00597 if (xaxis == "on") {
00598 return true;
00599 }
00600 return false;
00601 }
00602
00603
00604
00605
00606 bool SaXManipulateMice::isYAxisInverted (void) {
00607
00610
00611 if (! mImport) {
00612 return false;
00613 }
00614 QString yaxis = mImport -> getItem ("InvY");
00615 if (yaxis == "on") {
00616 return true;
00617 }
00618 return false;
00619 }
00620
00621
00622
00623
00624 bool SaXManipulateMice::isWheelEmulated (void) {
00625
00628
00629 if (! mImport) {
00630 return false;
00631 }
00632 QString emulate = mImport -> getItem ("EmulateWheel");
00633 if (! emulate.isEmpty()) {
00634 return true;
00635 }
00636 return false;
00637 }
00638
00639
00640
00641
00642 bool SaXManipulateMice::isButtonEmulated (void) {
00643
00646
00647 if (! mImport) {
00648 return false;
00649 }
00650 QString emulate = mImport -> getItem ("Emulate3Buttons");
00651 if (emulate == "on") {
00652 return true;
00653 }
00654 return false;
00655 }
00656
00657
00658
00659
00660 int SaXManipulateMice::getWheelEmulatedButton (void) {
00661
00665
00666 if (! isWheelEmulated()) {
00667 return -1;
00668 }
00669 int btn = mImport -> getItem ("EmulateWheel").toInt();
00670 return btn;
00671 }
00672
00673
00674
00675
00676 QList<QString> SaXManipulateMice::getMouseList (void) {
00677
00681
00682 mCDBMouseList.clear();
00683 if ( ! mCDBMice ) {
00684 mCDBMice = new SaXProcess ();
00685 mCDBMice -> start (CDB_POINTERS);
00686 }
00687 Q3Dict< Q3Dict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00688 Q3DictIterator< Q3Dict<QString> > it (CDBData);
00689 for (; it.current(); ++it) {
00690 mCDBMouseList.append (QString (it.currentKey()));
00691 }
00692 return mCDBMouseList;
00693 }
00694
00695
00696
00697
00698 QList<QString> SaXManipulateMice::getMouseVendorList (void) {
00699
00702
00703 QList<QString> mouseList = getMouseList();
00704 mCDBMouseList.clear();
00705 QString it;
00706 foreach (it,mouseList) {
00707 QStringList vnlist = QStringList::split ( ":", it );
00708 QString* vendorName = new QString (vnlist.first());
00709 int hasVendor = false;
00710 QString io;
00711 foreach (io,mCDBMouseList) {
00712 if ( io == *vendorName ) {
00713 hasVendor = true;
00714 break;
00715 }
00716 }
00717 if (! hasVendor ) {
00718 mCDBMouseList.append ( *vendorName );
00719 }
00720 }
00721 return mCDBMouseList;
00722 }
00723
00724
00725
00726
00727 QList<QString> SaXManipulateMice::getMouseModelList (
00728 const QString& vendor
00729 ) {
00730
00733
00734 QList<QString> mouseList = getMouseList();
00735 mCDBMouseList.clear();
00736 QString it;
00737 foreach (it,mouseList) {
00738 QStringList vnlist = QStringList::split ( ":", it );
00739 QString vendorName = vnlist.first();
00740 QString* modelName = new QString (vnlist.last());
00741 if ( vendorName == vendor ) {
00742 mCDBMouseList.append ( *modelName );
00743 }
00744 }
00745 return mCDBMouseList;
00746 }
00747
00748
00749
00750
00751 void SaXManipulateMice::setMouse ( const QString& group ) {
00752
00756
00757 if ( ! mCDBMice ) {
00758 mCDBMice = new SaXProcess ();
00759 mCDBMice -> start (CDB_POINTERS);
00760 }
00761 Q3PtrList< Q3Dict<QString> > data;
00762 data = mCDBMice -> getTablePointerCDB_DATA (
00763 group
00764 );
00765
00766
00767
00768
00769 Q3Dict<QString>* record = data.take(0);
00770 for (int n=0;n < mPointer;n++) {
00771 data.append(new Q3Dict<QString>());
00772 }
00773 data.append ( record );
00774
00775
00776
00777 if (data.isEmpty()) {
00778 excCDBRecordNotFound (group);
00779 qError (errorString(),EXC_CDBRECORDNOTFOUND);
00780 return;
00781 }
00782 mImport -> merge ( data );
00783
00784
00785
00786 QStringList nameList = QStringList::split ( ":", group );
00787 mImport -> setItem ( "Vendor", nameList.first() );
00788 mImport -> setItem ( "Name" , nameList.last() );
00789 }
00790
00791
00792
00793
00794 void SaXManipulateMice::setMouse (
00795 const QString& vendor, const QString& model
00796 ) {
00797
00800
00801 setMouse (vendor+":"+model);
00802 }
00803
00804
00805
00806
00807 Q3Dict<QString> SaXManipulateMice::getMouseData (
00808 const QString& group
00809 ) {
00810
00813
00814 mCDBMouseData.clear();
00815 if ( ! mCDBMice ) {
00816 mCDBMice = new SaXProcess ();
00817 mCDBMice -> start (CDB_POINTERS);
00818 }
00819 Q3Dict< Q3Dict<QString> > CDBData = mCDBMice -> getTablePointerCDB ();
00820 Q3DictIterator< Q3Dict<QString> > it (CDBData);
00821 for (; it.current(); ++it) {
00822 if ( it.currentKey() == group ) {
00823 mCDBMouseData = *it.current();
00824 break;
00825 }
00826 }
00827 return mCDBMouseData;
00828 }
00829
00830
00831
00832
00833 Q3Dict<QString> SaXManipulateMice::getMouseData (
00834 const QString& vendor, const QString& name
00835 ) {
00836
00839
00840 return getMouseData (vendor+":"+name);
00841 }
00842
00843
00844
00845
00846
00847 SaXManipulateTablets::SaXManipulateTablets (
00848 SaXImport* pointer, SaXImport* layout, int id
00849 ) : SaXManipulateTabletsIF (pointer,id) {
00850
00853
00854 mManipInputDevices = new SaXManipulateDevices (pointer,layout);
00855 mCDBTabletModules = 0;
00856 mCDBTablets = 0;
00857 mCDBPens = 0;
00858 mCDBPads = 0;
00859 }
00860
00861
00862
00863
00864 void SaXManipulateTablets::setType (const QString& type) {
00865
00868
00869 if (! mImport) {
00870 return;
00871 }
00872 mImport -> setItem ("TabletType",type);
00873 }
00874
00875
00876
00877
00878 void SaXManipulateTablets::setMode (const QString& mode) {
00879
00882
00883 if (! mImport) {
00884 return;
00885 }
00886 mImport -> setItem ("TabletMode",mode);
00887 }
00888
00889
00890
00891
00892 bool SaXManipulateTablets::isTablet (void) {
00893
00896
00897 if (! mImport) {
00898 return false;
00899 }
00900 QString fashion = mImport -> getItem ("InputFashion");
00901 if (fashion == "Tablet") {
00902 return true;
00903 }
00904 return false;
00905 }
00906
00907
00908
00909
00910 bool SaXManipulateTablets::isPen (void) {
00911
00914
00915 if (! mImport) {
00916 return false;
00917 }
00918 QString fashion = mImport -> getItem ("InputFashion");
00919 if (fashion == "Pen") {
00920 return true;
00921 }
00922 return false;
00923 }
00924
00925
00926
00927
00928 bool SaXManipulateTablets::isEraser (void) {
00929
00933
00934 if (! mImport) {
00935 return false;
00936 }
00937 QString fashion = mImport -> getItem ("InputFashion");
00938 if (fashion == "Eraser") {
00939 return true;
00940 }
00941 return false;
00942 }
00943
00944
00945
00946
00947 bool SaXManipulateTablets::isPad (void) {
00948
00951
00952 if (! mImport) {
00953 return false;
00954 }
00955 QString fashion = mImport -> getItem ("InputFashion");
00956 if (fashion == "Pad") {
00957 return true;
00958 }
00959 return false;
00960 }
00961
00962
00963
00964
00965 QString SaXManipulateTablets::getName (void) {
00966
00968
00969 if (! mImport) {
00970 QString* nope = new QString;
00971 return *nope;
00972 }
00973 return mImport -> getItem ("Name");
00974 }
00975
00976
00977
00978
00979 QString SaXManipulateTablets::getVendor (void) {
00980
00982
00983 if (! mImport) {
00984 QString* nope = new QString;
00985 return *nope;
00986 }
00987 return mImport -> getItem ("Vendor");
00988 }
00989
00990
00991
00992
00993 QString SaXManipulateTablets::getType (void) {
00994
00997
00998 if (! mImport) {
00999 QString* nope = new QString;
01000 return *nope;
01001 }
01002 return mImport -> getItem ("TabletType");
01003 }
01004
01005
01006
01007
01008 QString SaXManipulateTablets::getMode (void) {
01009
01012
01013 if (! mImport) {
01014 QString* nope = new QString;
01015 return *nope;
01016 }
01017 return mImport -> getItem ("TabletMode");
01018 }
01019
01020
01021
01022
01023 QList<QString> SaXManipulateTablets::getTabletDrivers (void) {
01024
01027
01028 mCDBTabletDrivers.clear();
01029 if ( ! mCDBTabletModules ) {
01030 mCDBTabletModules = new SaXProcess ();
01031 mCDBTabletModules -> start (CDB_TABLETMODULES);
01032 }
01033 Q3Dict< Q3Dict<QString> > CDBModules=mCDBTabletModules->getTablePointerCDB();
01034 Q3DictIterator< Q3Dict<QString> > it (CDBModules);
01035 for (; it.current(); ++it) {
01036 mCDBTabletDrivers.append (QString(it.currentKey()));
01037 }
01038 return mCDBTabletDrivers;
01039 }
01040
01041
01042
01043
01044 Q3Dict<QString> SaXManipulateTablets::getTabletOptions (const QString& driver) {
01045
01051
01052 mCDBTabletOptions.clear();
01053 if ( ! mCDBTabletModules ) {
01054 mCDBTabletModules = new SaXProcess ();
01055 mCDBTabletModules -> start (CDB_TABLETMODULES);
01056 }
01057 Q3PtrList< Q3Dict<QString> > opts;
01058 opts = mCDBTabletModules -> getTablePointerCDB_DATA (
01059 driver
01060 );
01061 if (opts.isEmpty()) {
01062 excCDBRecordNotFound (driver);
01063 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01064 Q3Dict<QString>* nope = new Q3Dict<QString>;
01065 return *nope;
01066 }
01067 mCDBTabletOptions = *opts.at(0);
01068 return mCDBTabletOptions;
01069 }
01070
01071
01072
01073
01074 QList<QString> SaXManipulateTablets::getTabletList (void) {
01075
01079
01080 mCDBTabletList.clear();
01081 if ( ! mCDBTablets ) {
01082 mCDBTablets = new SaXProcess ();
01083 mCDBTablets -> start (CDB_TABLETS);
01084 }
01085 Q3Dict< Q3Dict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01086 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01087 for (; it.current(); ++it) {
01088 mCDBTabletList.append (QString (it.currentKey()));
01089 }
01090 return mCDBTabletList;
01091 }
01092
01093
01094
01095
01096 QList<QString> SaXManipulateTablets::getTabletVendorList (void) {
01097
01100
01101 QList<QString> tabletList = getTabletList();
01102 mCDBTabletList.clear();
01103 QString it;
01104 foreach (it,tabletList) {
01105 QStringList vnlist = QStringList::split ( ":", it );
01106 QString* vendorName = new QString (vnlist.first());
01107 int hasVendor = false;
01108 QString io;
01109 foreach (io,mCDBTabletList) {
01110 if ( io == *vendorName ) {
01111 hasVendor = true;
01112 break;
01113 }
01114 }
01115 if (! hasVendor ) {
01116 mCDBTabletList.append ( *vendorName );
01117 }
01118 }
01119 return mCDBTabletList;
01120 }
01121
01122
01123
01124
01125 QList<QString> SaXManipulateTablets::getTabletModelList (
01126 const QString& vendor
01127 ) {
01128
01131
01132 QList<QString> tabletList = getTabletList();
01133 mCDBTabletList.clear();
01134 QString it;
01135 foreach (it,tabletList) {
01136 QStringList vnlist = QStringList::split ( ":", it );
01137 QString vendorName = vnlist.first();
01138 QString* modelName = new QString (vnlist.last());
01139 if ( vendorName == vendor ) {
01140 mCDBTabletList.append ( *modelName );
01141 }
01142 }
01143 return mCDBTabletList;
01144 }
01145
01146
01147
01148
01149 Q3Dict<QString> SaXManipulateTablets::getTabletData ( const QString& group ) {
01150
01153
01154 mCDBTabletData.clear();
01155 if ( ! mCDBTablets ) {
01156 mCDBTablets = new SaXProcess ();
01157 mCDBTablets -> start (CDB_TABLETS);
01158 }
01159 Q3Dict< Q3Dict<QString> > CDBData = mCDBTablets -> getTablePointerCDB ();
01160 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01161 for (; it.current(); ++it) {
01162 if ( it.currentKey() == group ) {
01163 mCDBTabletData = *it.current();
01164 break;
01165 }
01166 }
01167 return mCDBTabletData;
01168 }
01169
01170
01171
01172
01173 Q3Dict<QString> SaXManipulateTablets::getTabletData (
01174 const QString& vendor,const QString& name
01175 ) {
01176
01179
01180 return getTabletData (vendor+":"+name);
01181 }
01182
01183
01184
01185
01186 Q3Dict<QString> SaXManipulateTablets::getPenData ( const QString& group ) {
01187
01190
01191 mCDBTabletData.clear();
01192 if ( ! mCDBPens ) {
01193 mCDBPens = new SaXProcess ();
01194 mCDBPens -> start (CDB_PENS);
01195 }
01196 Q3Dict< Q3Dict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01197 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01198 for (; it.current(); ++it) {
01199 if ( it.currentKey() == group ) {
01200 mCDBTabletData = *it.current();
01201 break;
01202 }
01203 }
01204 return mCDBTabletData;
01205 }
01206
01207
01208
01209
01210 Q3Dict<QString> SaXManipulateTablets::getPenData (
01211 const QString& vendor,const QString& name
01212 ) {
01213
01216
01217 return getPenData (vendor+":"+name);
01218 }
01219
01220
01221
01222
01223 QList<QString> SaXManipulateTablets::getPenList (void) {
01224
01228
01229 mCDBPenList.clear();
01230 if ( ! mCDBPens ) {
01231 mCDBPens = new SaXProcess ();
01232 mCDBPens -> start (CDB_PENS);
01233 }
01234 Q3Dict< Q3Dict<QString> > CDBData = mCDBPens -> getTablePointerCDB ();
01235 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01236 for (; it.current(); ++it) {
01237 mCDBPenList.append (QString (it.currentKey()));
01238 }
01239 return mCDBPenList;
01240 }
01241
01242
01243
01244
01245 void SaXManipulateTablets::setTablet (const QString& group) {
01246
01250
01251 if ( ! mCDBTablets ) {
01252 mCDBTablets = new SaXProcess ();
01253 mCDBTablets -> start (CDB_TABLETS);
01254 }
01255 Q3PtrList< Q3Dict<QString> > data;
01256 data = mCDBTablets -> getTablePointerCDB_DATA (
01257 group
01258 );
01259
01260
01261
01262
01263 Q3Dict<QString>* record = data.take(0);
01264 for (int n=0;n < mPointer;n++) {
01265 data.append(new Q3Dict<QString>());
01266 }
01267 data.append ( record );
01268
01269
01270
01271 if (data.isEmpty()) {
01272 excCDBRecordNotFound (group);
01273 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01274 return;
01275 }
01276 mImport -> merge ( data );
01277
01278
01279
01280 QStringList nameList = QStringList::split ( ":", group );
01281 mImport -> setItem ( "Vendor", nameList.first() );
01282 mImport -> setItem ( "Name" , nameList.last() );
01283 }
01284
01285
01286
01287 void SaXManipulateTablets::setTablet (
01288 const QString& vendor, const QString& model
01289 ) {
01290
01293
01294 setTablet (vendor+":"+model);
01295 }
01296
01297
01298
01299
01300 int SaXManipulateTablets::addPad (const QString& group) {
01301
01307
01308 if ( ! mCDBPads ) {
01309 mCDBPads = new SaXProcess ();
01310 mCDBPads -> start (CDB_PADS);
01311 }
01312 Q3PtrList< Q3Dict<QString> > data;
01313 data = mCDBPads -> getTablePointerCDB_DATA (
01314 group
01315 );
01316 if (data.isEmpty()) {
01317 excCDBRecordNotFound (group);
01318 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01319 return -1;
01320 }
01321
01322
01323
01324 Q3Dict<QString> penData = *data.at(0);
01325 QString* type = penData["TabletType"];
01326 if (! type) {
01327 excPointerFashionTypeFailed ("undefined");
01328 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01329 return -1;
01330 }
01331 if (*type != "pad") {
01332 excPointerFashionTypeFailed (*type);
01333 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01334 return -1;
01335 }
01336 QString fashion (SAX_INPUT_PAD);
01337
01338
01339
01340
01341 int newPad = mManipInputDevices->addInputDevice (fashion);
01342 if ( ! selectPointer (newPad)) {
01343 return -1;
01344 }
01345
01346
01347
01348
01349 Q3Dict<QString>* record = data.take(0);
01350 for (int n=0;n < mPointer;n++) {
01351 data.append(new Q3Dict<QString>());
01352 }
01353 data.append ( record );
01354
01355
01356
01357 mImport -> merge ( data );
01358
01359
01360
01361 QStringList nameList = QStringList::split ( ":", group );
01362 mImport -> setItem ( "Vendor", nameList.first() );
01363 mImport -> setItem ( "Name" , nameList.last() );
01364 return newPad;
01365 }
01366
01367
01368
01369 int SaXManipulateTablets::addPad (
01370 const QString& vendor, const QString& model
01371 ) {
01372
01378
01379 return addPad (vendor+":"+model);
01380 }
01381
01382
01383
01384
01385 int SaXManipulateTablets::addPen (const QString& group) {
01386
01392
01393 if ( ! mCDBPens ) {
01394 mCDBPens = new SaXProcess ();
01395 mCDBPens -> start (CDB_PENS);
01396 }
01397 Q3PtrList< Q3Dict<QString> > data;
01398 data = mCDBPens -> getTablePointerCDB_DATA (
01399 group
01400 );
01401 if (data.isEmpty()) {
01402 excCDBRecordNotFound (group);
01403 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01404 return -1;
01405 }
01406
01407
01408
01409 Q3Dict<QString> penData = *data.at(0);
01410 QString* type = penData["TabletType"];
01411 if (! type) {
01412 excPointerFashionTypeFailed ("undefined");
01413 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01414 return -1;
01415 }
01416 if ((*type != "stylus") && (*type != "eraser")) {
01417 excPointerFashionTypeFailed (*type);
01418 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01419 return -1;
01420 }
01421 QString fashion (SAX_INPUT_PEN);
01422 if (*type == "eraser") {
01423 fashion = SAX_INPUT_ERASER;
01424 }
01425
01426
01427
01428
01429 int newPen = mManipInputDevices->addInputDevice (fashion);
01430 if ( ! selectPointer (newPen)) {
01431 return -1;
01432 }
01433
01434
01435
01436
01437 Q3Dict<QString>* record = data.take(0);
01438 for (int n=0;n < mPointer;n++) {
01439 data.append(new Q3Dict<QString>());
01440 }
01441 data.append ( record );
01442
01443
01444
01445 mImport -> merge ( data );
01446
01447
01448
01449 QStringList nameList = QStringList::split ( ":", group );
01450 mImport -> setItem ( "Vendor", nameList.first() );
01451 mImport -> setItem ( "Name" , nameList.last() );
01452 return newPen;
01453 }
01454
01455
01456
01457 int SaXManipulateTablets::addPen (
01458 const QString& vendor, const QString& model
01459 ) {
01460
01465
01466 return addPen (vendor+":"+model);
01467 }
01468
01469
01470
01471
01472 int SaXManipulateTablets::removePen ( int id ) {
01473
01478
01479 if (! selectPointer ( id )) {
01480 return -1;
01481 }
01482 QString fashion (
01483 mImport->getItem("InputFashion")
01484 );
01485 if (
01486 (fashion != QString(SAX_INPUT_PEN )) &&
01487 (fashion != QString(SAX_INPUT_ERASER))
01488 ) {
01489 excPointerFashionTypeFailed (fashion);
01490 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01491 return -1;
01492 }
01493 return mManipInputDevices->removeInputDevice (id);
01494 }
01495
01496
01497
01498
01499 int SaXManipulateTablets::removePad ( int id ) {
01500
01505
01506 if (! selectPointer ( id )) {
01507 return -1;
01508 }
01509 QString fashion (
01510 mImport->getItem("InputFashion")
01511 );
01512 if (fashion != QString(SAX_INPUT_PAD)) {
01513 excPointerFashionTypeFailed (fashion);
01514 qError (errorString(),EXC_POINTERFASHIONTYPEFAILED);
01515 return -1;
01516 }
01517 return mManipInputDevices->removeInputDevice (id);
01518 }
01519
01520
01521
01522
01523 SaXManipulateTouchscreens::SaXManipulateTouchscreens (
01524 SaXImport* in, int ptr
01525 ) : SaXManipulateTouchscreensIF (in,ptr) {
01526
01530
01531 mCDBPanels = 0;
01532 }
01533
01534
01535
01536
01537 bool SaXManipulateTouchscreens::isTouchpanel (void) {
01538
01542
01543 if (! mImport) {
01544 return false;
01545 }
01546 QString fashion = mImport -> getItem ("InputFashion");
01547 if (fashion == "Touchpanel") {
01548 return true;
01549 }
01550 return false;
01551 }
01552
01553
01554
01555
01556 QString SaXManipulateTouchscreens::getName ( void ) {
01557
01561
01562 if (! mImport) {
01563 QString* nope = new QString;
01564 return *nope;
01565 }
01566 QString name = mImport -> getItem ("Name");
01567 QStringList vnlist = QStringList::split ( ";", name );
01568 return vnlist.last();
01569 }
01570
01571
01572
01573
01574 QString SaXManipulateTouchscreens::getVendor ( void ) {
01575
01579
01580 if (! mImport) {
01581 QString* nope = new QString;
01582 return *nope;
01583 }
01584 QString name = mImport -> getItem ("Name");
01585 QStringList vnlist = QStringList::split ( ";", name );
01586 return vnlist.first();
01587 }
01588
01589
01590
01591
01592 QString SaXManipulateTouchscreens::getType (void) {
01593
01597
01598 if (! mImport) {
01599 QString* nope = new QString;
01600 return *nope;
01601 }
01602 return mImport -> getItem ("TabletType");
01603 }
01604
01605
01606
01607
01608 QList<QString> SaXManipulateTouchscreens::getPanelList (void) {
01609
01613
01614 mCDBPanelList.clear();
01615 if ( ! mCDBPanels ) {
01616 mCDBPanels = new SaXProcess ();
01617 mCDBPanels -> start (CDB_TOUCHERS);
01618 }
01619 Q3Dict< Q3Dict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01620 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01621 for (; it.current(); ++it) {
01622 mCDBPanelList.append (QString (it.currentKey()));
01623 }
01624 return mCDBPanelList;
01625 }
01626
01627
01628
01629
01630 QList<QString> SaXManipulateTouchscreens::getPanelVendorList (void) {
01631
01634
01635 QList<QString> panelList = getPanelList();
01636 mCDBPanelList.clear();
01637 QString it;
01638 foreach (it,panelList) {
01639 QStringList vnlist = QStringList::split ( ":", it );
01640 QString* vendorName = new QString (vnlist.first());
01641 int hasVendor = false;
01642 QString io;
01643 foreach (io,mCDBPanelList) {
01644 if ( io == *vendorName ) {
01645 hasVendor = true;
01646 break;
01647 }
01648 }
01649 if (! hasVendor ) {
01650 mCDBPanelList.append ( *vendorName );
01651 }
01652 }
01653 return mCDBPanelList;
01654 }
01655
01656
01657
01658
01659 QList<QString> SaXManipulateTouchscreens::getPanelModelList (
01660 const QString& vendor
01661 ) {
01662
01665
01666 QList<QString> panelList = getPanelList();
01667 mCDBPanelList.clear();
01668 QString it;
01669 foreach (it,panelList) {
01670 QStringList vnlist = QStringList::split ( ":", it );
01671 QString vendorName = vnlist.first();
01672 QString* modelName = new QString (vnlist.last());
01673 if ( vendorName == vendor ) {
01674 mCDBPanelList.append ( *modelName );
01675 }
01676 }
01677 return mCDBPanelList;
01678 }
01679
01680
01681
01682
01683 Q3Dict<QString> SaXManipulateTouchscreens::getPanelData (
01684 const QString& group
01685 ) {
01686
01689
01690 mCDBPanelData.clear();
01691 if ( ! mCDBPanels ) {
01692 mCDBPanels = new SaXProcess ();
01693 mCDBPanels -> start (CDB_TOUCHERS);
01694 }
01695 Q3Dict< Q3Dict<QString> > CDBData = mCDBPanels -> getTablePointerCDB ();
01696 Q3DictIterator< Q3Dict<QString> > it (CDBData);
01697 for (; it.current(); ++it) {
01698 if ( it.currentKey() == group ) {
01699 mCDBPanelData = *it.current();
01700 break;
01701 }
01702 }
01703 return mCDBPanelData;
01704 }
01705
01706
01707
01708
01709 Q3Dict<QString> SaXManipulateTouchscreens::getPanelData (
01710 const QString& vendor,const QString& name
01711 ) {
01712
01715
01716 return getPanelData (vendor+":"+name);
01717 }
01718
01719
01720
01721
01722 void SaXManipulateTouchscreens::setTouchPanel (const QString& group) {
01723
01727
01728 if ( ! mCDBPanels ) {
01729 mCDBPanels = new SaXProcess ();
01730 mCDBPanels -> start (CDB_TOUCHERS);
01731 }
01732 Q3PtrList< Q3Dict<QString> > data;
01733 data = mCDBPanels -> getTablePointerCDB_DATA (
01734 group
01735 );
01736 if (data.isEmpty()) {
01737 excCDBRecordNotFound (group);
01738 qError (errorString(),EXC_CDBRECORDNOTFOUND);
01739 return;
01740 }
01741
01742
01743
01744
01745 Q3Dict<QString>* record = data.take(0);
01746 for (int n=0;n < mPointer;n++) {
01747 data.append(new Q3Dict<QString>());
01748 }
01749 data.append ( record );
01750
01751
01752
01753 mImport -> merge ( data );
01754
01755
01756
01757 QStringList nameList = QStringList::split ( ":", group );
01758 setNamePair (
01759 nameList.first(),
01760 nameList.last()
01761 );
01762 }
01763
01764
01765
01766
01767 void SaXManipulateTouchscreens::setTouchPanel (
01768 const QString& vendor, const QString& model
01769 ) {
01770
01773
01774 setTouchPanel (vendor+":"+model);
01775 }
01776 }