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