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