author | zautrix <zautrix> | 2004-10-20 16:27:05 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-10-20 16:27:05 (UTC) |
commit | 46ea2933c9f67e77fb5c6cd93237efc755f28b62 (patch) (unidiff) | |
tree | 8025e9caceb2f62cd5b1d4b78b359545d38b39c5 /libkdepim | |
parent | 5cf3c1bce58a6487af166e637e54571e98156fd0 (diff) | |
download | kdepimpi-46ea2933c9f67e77fb5c6cd93237efc755f28b62.zip kdepimpi-46ea2933c9f67e77fb5c6cd93237efc755f28b62.tar.gz kdepimpi-46ea2933c9f67e77fb5c6cd93237efc755f28b62.tar.bz2 |
made KDE sync perfect
-rw-r--r-- | libkdepim/ksyncmanager.cpp | 63 | ||||
-rw-r--r-- | libkdepim/ksyncmanager.h | 4 |
2 files changed, 48 insertions, 19 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index 7ca3ee0..554c6e5 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp | |||
@@ -176,33 +176,48 @@ void KSyncManager::slotSyncMenu( int action ) | |||
176 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); | 176 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); |
177 | return; | 177 | return; |
178 | } | 178 | } |
179 | 179 | ||
180 | if (blockSave()) | 180 | if (blockSave()) |
181 | return; | 181 | return; |
182 | 182 | ||
183 | setBlockSave(true); | 183 | setBlockSave(true); |
184 | bool silent = false; | ||
185 | if ( action == 999 ) { | ||
186 | //special mode for silent syncing | ||
187 | action = 1000; | ||
188 | silent = true; | ||
189 | } | ||
184 | 190 | ||
185 | mCurrentSyncProfile = action - 1000 ; | 191 | mCurrentSyncProfile = action - 1000 ; |
186 | mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; | 192 | mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; |
187 | mCurrentSyncName = mLocalMachineName ; | 193 | mCurrentSyncName = mLocalMachineName ; |
188 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); | 194 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); |
189 | KSyncProfile* temp = new KSyncProfile (); | 195 | KSyncProfile* temp = new KSyncProfile (); |
190 | temp->setName(mSyncProfileNames[mCurrentSyncProfile]); | 196 | temp->setName(mSyncProfileNames[mCurrentSyncProfile]); |
191 | temp->readConfig(&config); | 197 | temp->readConfig(&config); |
192 | mAskForPreferences = temp->getAskForPreferences(); | 198 | if (silent) { |
193 | mSyncAlgoPrefs = temp->getSyncPrefs(); | 199 | mAskForPreferences = false; |
194 | mWriteBackFile = temp->getWriteBackFile(); | 200 | mShowSyncSummary = false; |
201 | mWriteBackFile = true; | ||
202 | mSyncAlgoPrefs = 2;// take newest | ||
203 | } | ||
204 | else { | ||
205 | mAskForPreferences = temp->getAskForPreferences(); | ||
206 | mShowSyncSummary = temp->getShowSummaryAfterSync(); | ||
207 | mWriteBackFile = temp->getWriteBackFile(); | ||
208 | mSyncAlgoPrefs = temp->getSyncPrefs(); | ||
209 | } | ||
195 | mWriteBackExistingOnly = temp->getWriteBackExisting(); | 210 | mWriteBackExistingOnly = temp->getWriteBackExisting(); |
196 | mIsKapiFile = temp->getIsKapiFile(); | 211 | mIsKapiFile = temp->getIsKapiFile(); |
197 | mWriteBackInFuture = 0; | 212 | mWriteBackInFuture = 0; |
198 | if ( temp->getWriteBackFuture() ) | 213 | if ( temp->getWriteBackFuture() ) |
199 | mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); | 214 | mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); |
200 | mShowSyncSummary = temp->getShowSummaryAfterSync(); | 215 | |
201 | if ( action == 1000 ) { | 216 | if ( action == 1000 ) { |
202 | #ifdef DESKTOP_VERSION | 217 | #ifdef DESKTOP_VERSION |
203 | syncKDE(); | 218 | syncKDE(); |
204 | #else | 219 | #else |
205 | syncSharp(); | 220 | syncSharp(); |
206 | #endif | 221 | #endif |
207 | 222 | ||
208 | } else if ( action == 1001 ) { | 223 | } else if ( action == 1001 ) { |
@@ -297,16 +312,17 @@ void KSyncManager::enableQuick( bool ask ) | |||
297 | #ifdef DESKTOP_VERSION | 312 | #ifdef DESKTOP_VERSION |
298 | #ifdef _WIN32_ | 313 | #ifdef _WIN32_ |
299 | QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia ); | 314 | QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia ); |
300 | #else | 315 | #else |
301 | QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); | 316 | QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); |
302 | #endif | 317 | #endif |
303 | lay.addWidget( &syncdesktop); | 318 | lay.addWidget( &syncdesktop); |
304 | #else | 319 | #else |
320 | mPrefs->mPassiveSyncWithDesktop = false; | ||
305 | QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); | 321 | QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); |
306 | syncdesktop.hide(); | 322 | syncdesktop.hide(); |
307 | #endif | 323 | #endif |
308 | syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); | 324 | syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); |
309 | 325 | ||
310 | dia.setFixedSize( 230,120 ); | 326 | dia.setFixedSize( 230,120 ); |
311 | dia.setCaption( i18n("Enter port for Pi-Sync") ); | 327 | dia.setCaption( i18n("Enter port for Pi-Sync") ); |
312 | QPushButton pb ( "OK", &dia); | 328 | QPushButton pb ( "OK", &dia); |
@@ -411,17 +427,20 @@ bool KSyncManager::syncWithFile( QString fn , bool quick ) | |||
411 | result = QMessageBox::warning( mParent, i18n("Warning!"), | 427 | result = QMessageBox::warning( mParent, i18n("Warning!"), |
412 | mess, | 428 | mess, |
413 | i18n("Sync"), i18n("Cancel"), 0, | 429 | i18n("Sync"), i18n("Cancel"), 0, |
414 | 0, 1 ); | 430 | 0, 1 ); |
415 | if ( result ) | 431 | if ( result ) |
416 | return false; | 432 | return false; |
417 | } | 433 | } |
418 | if ( mAskForPreferences ) | 434 | if ( mAskForPreferences ) |
419 | edit_sync_options(); | 435 | if ( !edit_sync_options()) { |
436 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); | ||
437 | return false; | ||
438 | } | ||
420 | if ( result == 0 ) { | 439 | if ( result == 0 ) { |
421 | //qDebug("Now sycing ... "); | 440 | //qDebug("Now sycing ... "); |
422 | if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) ) | 441 | if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) ) |
423 | mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") ); | 442 | mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") ); |
424 | else | 443 | else |
425 | mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); | 444 | mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); |
426 | if ( ! quick ) | 445 | if ( ! quick ) |
427 | mPrefs->mLastSyncedLocalFile = fn; | 446 | mPrefs->mLastSyncedLocalFile = fn; |
@@ -450,17 +469,20 @@ void KSyncManager::multiSync( bool askforPrefs ) | |||
450 | 0, 0 ) != 0 ) { | 469 | 0, 0 ) != 0 ) { |
451 | setBlockSave(false); | 470 | setBlockSave(false); |
452 | mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); | 471 | mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); |
453 | return; | 472 | return; |
454 | } | 473 | } |
455 | mCurrentSyncDevice = i18n("Multiple profiles") ; | 474 | mCurrentSyncDevice = i18n("Multiple profiles") ; |
456 | mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; | 475 | mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; |
457 | if ( askforPrefs ) { | 476 | if ( askforPrefs ) { |
458 | edit_sync_options(); | 477 | if ( !edit_sync_options()) { |
478 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); | ||
479 | return; | ||
480 | } | ||
459 | mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs; | 481 | mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs; |
460 | } | 482 | } |
461 | mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); | 483 | mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); |
462 | qApp->processEvents(); | 484 | qApp->processEvents(); |
463 | int num = ringSync() ; | 485 | int num = ringSync() ; |
464 | if ( num > 1 ) | 486 | if ( num > 1 ) |
465 | ringSync(); | 487 | ringSync(); |
466 | setBlockSave(false); | 488 | setBlockSave(false); |
@@ -682,17 +704,17 @@ void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) | |||
682 | return; | 704 | return; |
683 | } else { | 705 | } else { |
684 | mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); | 706 | mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); |
685 | } | 707 | } |
686 | } | 708 | } |
687 | } | 709 | } |
688 | return; | 710 | return; |
689 | } | 711 | } |
690 | void KSyncManager::edit_pisync_options() | 712 | bool KSyncManager::edit_pisync_options() |
691 | { | 713 | { |
692 | QDialog dia( mParent, "dia", true ); | 714 | QDialog dia( mParent, "dia", true ); |
693 | dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); | 715 | dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); |
694 | QVBoxLayout lay ( &dia ); | 716 | QVBoxLayout lay ( &dia ); |
695 | lay.setSpacing( 5 ); | 717 | lay.setSpacing( 5 ); |
696 | lay.setMargin( 3 ); | 718 | lay.setMargin( 3 ); |
697 | QLabel lab1 ( i18n("Password for remote access:"), &dia); | 719 | QLabel lab1 ( i18n("Password for remote access:"), &dia); |
698 | lay.addWidget( &lab1 ); | 720 | lay.addWidget( &lab1 ); |
@@ -711,20 +733,21 @@ void KSyncManager::edit_pisync_options() | |||
711 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); | 733 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); |
712 | le1.setText( mPassWordPiSync ); | 734 | le1.setText( mPassWordPiSync ); |
713 | le2.setText( mActiveSyncIP ); | 735 | le2.setText( mActiveSyncIP ); |
714 | le3.setText( mActiveSyncPort ); | 736 | le3.setText( mActiveSyncPort ); |
715 | if ( dia.exec() ) { | 737 | if ( dia.exec() ) { |
716 | mPassWordPiSync = le1.text(); | 738 | mPassWordPiSync = le1.text(); |
717 | mActiveSyncPort = le3.text(); | 739 | mActiveSyncPort = le3.text(); |
718 | mActiveSyncIP = le2.text(); | 740 | mActiveSyncIP = le2.text(); |
741 | return true; | ||
719 | } | 742 | } |
720 | 743 | return false; | |
721 | } | 744 | } |
722 | void KSyncManager::edit_sync_options() | 745 | bool KSyncManager::edit_sync_options() |
723 | { | 746 | { |
724 | 747 | ||
725 | QDialog dia( mParent, "dia", true ); | 748 | QDialog dia( mParent, "dia", true ); |
726 | dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); | 749 | dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); |
727 | QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); | 750 | QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); |
728 | QVBoxLayout lay ( &dia ); | 751 | QVBoxLayout lay ( &dia ); |
729 | lay.setSpacing( 2 ); | 752 | lay.setSpacing( 2 ); |
730 | lay.setMargin( 3 ); | 753 | lay.setMargin( 3 ); |
@@ -761,19 +784,19 @@ void KSyncManager::edit_sync_options() | |||
761 | case 6: | 784 | case 6: |
762 | // both.setChecked( true); | 785 | // both.setChecked( true); |
763 | break; | 786 | break; |
764 | default: | 787 | default: |
765 | break; | 788 | break; |
766 | } | 789 | } |
767 | if ( dia.exec() ) { | 790 | if ( dia.exec() ) { |
768 | mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; | 791 | mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; |
792 | return true; | ||
769 | } | 793 | } |
770 | 794 | return false; | |
771 | |||
772 | } | 795 | } |
773 | 796 | ||
774 | QString KSyncManager::getPassword( ) | 797 | QString KSyncManager::getPassword( ) |
775 | { | 798 | { |
776 | QString retfile = ""; | 799 | QString retfile = ""; |
777 | QDialog dia ( mParent, "input-dialog", true ); | 800 | QDialog dia ( mParent, "input-dialog", true ); |
778 | QLineEdit lab ( &dia ); | 801 | QLineEdit lab ( &dia ); |
779 | lab.setEchoMode( QLineEdit::Password ); | 802 | lab.setEchoMode( QLineEdit::Password ); |
@@ -859,18 +882,21 @@ void KSyncManager::syncSharp() | |||
859 | qDebug("ERROR sync sharp "); | 882 | qDebug("ERROR sync sharp "); |
860 | } | 883 | } |
861 | 884 | ||
862 | bool KSyncManager::syncExternalApplication(QString resource) | 885 | bool KSyncManager::syncExternalApplication(QString resource) |
863 | { | 886 | { |
864 | 887 | ||
865 | emit save(); | 888 | emit save(); |
866 | 889 | ||
867 | if ( mAskForPreferences ) | 890 | if ( mAskForPreferences ) |
868 | edit_sync_options(); | 891 | if ( !edit_sync_options()) { |
892 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); | ||
893 | return false; | ||
894 | } | ||
869 | 895 | ||
870 | qDebug("Sync extern %s", resource.latin1()); | 896 | qDebug("Sync extern %s", resource.latin1()); |
871 | 897 | ||
872 | bool syncOK = mImplementation->syncExternal(this, resource); | 898 | bool syncOK = mImplementation->syncExternal(this, resource); |
873 | 899 | ||
874 | return syncOK; | 900 | return syncOK; |
875 | 901 | ||
876 | } | 902 | } |
@@ -930,17 +956,20 @@ QString KSyncManager::syncFileName() | |||
930 | #endif | 956 | #endif |
931 | } | 957 | } |
932 | 958 | ||
933 | void KSyncManager::syncPi() | 959 | void KSyncManager::syncPi() |
934 | { | 960 | { |
935 | mPisyncFinished = false; | 961 | mPisyncFinished = false; |
936 | qApp->processEvents(); | 962 | qApp->processEvents(); |
937 | if ( mAskForPreferences ) | 963 | if ( mAskForPreferences ) |
938 | edit_pisync_options(); | 964 | if ( !edit_pisync_options()) { |
965 | mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); | ||
966 | return; | ||
967 | } | ||
939 | bool ok; | 968 | bool ok; |
940 | Q_UINT16 port = mActiveSyncPort.toUInt(&ok); | 969 | Q_UINT16 port = mActiveSyncPort.toUInt(&ok); |
941 | if ( ! ok ) { | 970 | if ( ! ok ) { |
942 | mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); | 971 | mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); |
943 | return; | 972 | return; |
944 | } | 973 | } |
945 | KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); | 974 | KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); |
946 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); | 975 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); |
@@ -1161,21 +1190,21 @@ void KServerSocket::readBackFileFromSocket() | |||
1161 | QTextStream ts ( &file ); | 1190 | QTextStream ts ( &file ); |
1162 | ts.setEncoding( QTextStream::Latin1 ); | 1191 | ts.setEncoding( QTextStream::Latin1 ); |
1163 | mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); | 1192 | mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); |
1164 | ts << piFileString; | 1193 | ts << piFileString; |
1165 | mSocket->close(); | 1194 | mSocket->close(); |
1166 | if ( mSocket->state() == QSocket::Idle ) | 1195 | if ( mSocket->state() == QSocket::Idle ) |
1167 | QTimer::singleShot( 10, this , SLOT ( discardClient())); | 1196 | QTimer::singleShot( 10, this , SLOT ( discardClient())); |
1168 | file.close(); | 1197 | file.close(); |
1198 | piFileString = ""; | ||
1199 | emit file_received( true ); | ||
1169 | delete mSyncActionDialog; | 1200 | delete mSyncActionDialog; |
1170 | mSyncActionDialog = 0; | 1201 | mSyncActionDialog = 0; |
1171 | piFileString = ""; | ||
1172 | blockRC = false; | 1202 | blockRC = false; |
1173 | emit file_received( true ); | ||
1174 | 1203 | ||
1175 | } | 1204 | } |
1176 | 1205 | ||
1177 | KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) | 1206 | KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) |
1178 | { | 1207 | { |
1179 | mPassWord = password; | 1208 | mPassWord = password; |
1180 | mSocket = 0; | 1209 | mSocket = 0; |
1181 | mPort = port; | 1210 | mPort = port; |
@@ -1194,17 +1223,17 @@ void KCommandSocket::readFile( QString fn ) | |||
1194 | } | 1223 | } |
1195 | mFileString = ""; | 1224 | mFileString = ""; |
1196 | mFileName = fn; | 1225 | mFileName = fn; |
1197 | mFirst = true; | 1226 | mFirst = true; |
1198 | mSocket->connectToHost( mHost, mPort ); | 1227 | mSocket->connectToHost( mHost, mPort ); |
1199 | QTextStream os( mSocket ); | 1228 | QTextStream os( mSocket ); |
1200 | os.setEncoding( QTextStream::Latin1 ); | 1229 | os.setEncoding( QTextStream::Latin1 ); |
1201 | os << "GET " << mPassWord << "\r\n"; | 1230 | os << "GET " << mPassWord << "\r\n"; |
1202 | mTimerSocket->start( 10000 ); | 1231 | mTimerSocket->start( 20000 ); |
1203 | } | 1232 | } |
1204 | 1233 | ||
1205 | void KCommandSocket::writeFile( QString fileName ) | 1234 | void KCommandSocket::writeFile( QString fileName ) |
1206 | { | 1235 | { |
1207 | if ( !mSocket ) { | 1236 | if ( !mSocket ) { |
1208 | mSocket = new QSocket( this ); | 1237 | mSocket = new QSocket( this ); |
1209 | connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); | 1238 | connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); |
1210 | connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); | 1239 | connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); |
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h index 7b9c499..4a610fa 100644 --- a/libkdepim/ksyncmanager.h +++ b/libkdepim/ksyncmanager.h | |||
@@ -169,18 +169,18 @@ class KSyncManager : public QObject | |||
169 | bool syncWithFile( QString fn , bool quick ); | 169 | bool syncWithFile( QString fn , bool quick ); |
170 | void syncLocalFile(); | 170 | void syncLocalFile(); |
171 | void syncPhone(); | 171 | void syncPhone(); |
172 | void syncSharp(); | 172 | void syncSharp(); |
173 | void syncKDE(); | 173 | void syncKDE(); |
174 | bool syncExternalApplication(QString); | 174 | bool syncExternalApplication(QString); |
175 | int mCurrentSyncProfile ; | 175 | int mCurrentSyncProfile ; |
176 | void syncRemote( KSyncProfile* prof, bool ask = true); | 176 | void syncRemote( KSyncProfile* prof, bool ask = true); |
177 | void edit_sync_options(); | 177 | bool edit_sync_options(); |
178 | void edit_pisync_options(); | 178 | bool edit_pisync_options(); |
179 | int ringSync(); | 179 | int ringSync(); |
180 | QString getPassword( ); | 180 | QString getPassword( ); |
181 | bool mPisyncFinished; | 181 | bool mPisyncFinished; |
182 | bool mBlockSaveFlag; | 182 | bool mBlockSaveFlag; |
183 | QWidget* mParent; | 183 | QWidget* mParent; |
184 | KSyncInterface* mImplementation; | 184 | KSyncInterface* mImplementation; |
185 | TargetApp mTargetApp; | 185 | TargetApp mTargetApp; |
186 | QPopupMenu* mSyncMenu; | 186 | QPopupMenu* mSyncMenu; |