-rw-r--r-- | libkdepim/ksyncmanager.cpp | 174 | ||||
-rw-r--r-- | libkdepim/ksyncmanager.h | 14 |
2 files changed, 167 insertions, 21 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index 87f200a..07e6761 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp @@ -36,2 +36,3 @@ #include <qdir.h> +#include <qprogressbar.h> #include <qpopupmenu.h> @@ -55,2 +56,12 @@ KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, Targ { + bar = new QProgressBar ( 1, 0 ); + bar->setCaption (""); + + int w = 300; + if ( QApplication::desktop()->width() < 320 ) + w = 220; + int h = bar->sizeHint().height() ; + int dw = QApplication::desktop()->width(); + int dh = QApplication::desktop()->height(); + bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); @@ -60,3 +71,3 @@ KSyncManager::~KSyncManager() { - + delete bar; } @@ -100,3 +111,2 @@ void KSyncManager::fillSyncMenu() for ( i = 0; i < prof.count(); ++i ) { - mSyncMenu->insertItem( prof[i], 1000+i ); @@ -106,4 +116,8 @@ void KSyncManager::fillSyncMenu() QDir app_dir; - if ( !app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { - mSyncMenu->setItemEnabled( false , 1000 ); + //US do not display SharpDTM if app is pwmpi, or no sharpfiles available + if ( mTargetApp == PWMPI) { + mSyncMenu->removeItem( 1000 ); + } + else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { + mSyncMenu->setItemEnabled( 1000, false ); } @@ -163,5 +177,21 @@ void KSyncManager::slotSyncMenu( int action ) if ( temp->getIsLocalFileSync() ) { + switch(mTargetApp) + { + case (KAPI): if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); + break; + case (KOPI): + if ( syncWithFile( temp->getRemoteFileName( ), false ) ) + mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); + break; + case (PWMPI): + if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) + mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); + break; + default: + qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); + break; + } } else { @@ -185,4 +215,22 @@ void KSyncManager::syncLocalFile() QString fn =mPrefs->mLastSyncedLocalFile; + QString ext; - fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), mParent ); + switch(mTargetApp) + { + case (KAPI): + ext = "(*.vcf)"; + break; + case (KOPI): + ext = "(*.ics/*.vcs)"; + break; + case (PWMPI): + ext = "(*.pwm)"; + break; + default: + qDebug("KSyncManager::syncLocalFile: invalid apptype selected"); + break; + + } + + fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); if ( fn == "" ) @@ -286,3 +334,23 @@ int KSyncManager::ringSync() temp->readConfig(&config); - if ( temp->getIncludeInRingSyncAB() && ( i < 1 || i > 2 )) { + + QString includeInRingSync; + switch(mTargetApp) + { + case (KAPI): + includeInRingSync = temp->getIncludeInRingSyncAB(); + break; + case (KOPI): + includeInRingSync = temp->getIncludeInRingSync(); + break; + case (PWMPI): + includeInRingSync = temp->getIncludeInRingSyncPWM(); + break; + default: + qDebug("KSyncManager::ringSync: invalid apptype selected"); + break; + + } + + + if ( includeInRingSync && ( i < 1 || i > 2 )) { mParent->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); @@ -302,4 +370,20 @@ int KSyncManager::ringSync() if ( temp->getIsLocalFileSync() ) { - if ( syncWithFile( temp->getRemoteFileNameAB( ), true ) ) + switch(mTargetApp) + { + case (KAPI): + if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); + break; + case (KOPI): + if ( syncWithFile( temp->getRemoteFileName( ), false ) ) + mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); + break; + case (PWMPI): + if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) + mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); + break; + default: + qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); + break; + } } else { @@ -342,7 +426,34 @@ void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) } - QString command = prof->getPreSyncCommandAB(); + + QString preCommand; + QString localTempFile; + QString postCommand; + + switch(mTargetApp) + { + case (KAPI): + preCommand = prof->getPreSyncCommandAB(); + postCommand = prof->getPostSyncCommandAB(); + localTempFile = prof->getLocalTempFileAB(); + break; + case (KOPI): + preCommand = prof->getPreSyncCommand(); + postCommand = prof->getPostSyncCommand(); + localTempFile = prof->getLocalTempFile(); + break; + case (PWMPI): + preCommand = prof->getPreSyncCommandPWM(); + postCommand = prof->getPostSyncCommandPWM(); + localTempFile = prof->getLocalTempFilePWM(); + break; + default: + qDebug("KSyncManager::syncRemote: invalid apptype selected"); + break; + } + + int fi; - if ( (fi = command.find("$PWD$")) > 0 ) { + if ( (fi = preCommand.find("$PWD$")) > 0 ) { QString pwd = getPassword(); - command = command.left( fi )+ pwd + command.mid( fi+5 ); + preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 ); @@ -354,3 +465,3 @@ void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) int fileSize = 0; - int result = system ( command ); + int result = system ( preCommand ); // 0 : okay @@ -361,7 +472,7 @@ void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) unsigned int len = maxlen; - while ( len < command.length() ) { - command.insert( len , "\n" ); + while ( len < preCommand.length() ) { + preCommand.insert( len , "\n" ); len += maxlen +2; } - question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ; + question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ; QMessageBox::information( mParent, i18n("Sync - ERROR"), @@ -374,3 +485,6 @@ void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); - if ( syncWithFile( prof->getLocalTempFileAB(), true ) ) { + + + + if ( syncWithFile( localTempFile, true ) ) { // Event* e = mView->getLastSyncEvent(); @@ -380,7 +494,6 @@ void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) if ( mPrefs->mWriteBackFile ) { - command = prof->getPostSyncCommandAB(); int fi; - if ( (fi = command.find("$PWD$")) > 0 ) { + if ( (fi = postCommand.find("$PWD$")) > 0 ) { QString pwd = getPassword(); - command = command.left( fi )+ pwd + command.mid( fi+5 ); + postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); @@ -388,3 +501,3 @@ void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) mParent->setCaption ( i18n( "Writing back file ..." ) ); - result = system ( command ); + result = system ( postCommand ); qDebug("Writing back file result: %d ", result); @@ -529 +642,24 @@ void KSyncManager::syncPhone() } + +void KSyncManager::showProgressBar(int percentage, QString caption, int total) +{ + if (!bar->isVisible()) + { + bar->setCaption (caption); + bar->setTotalSteps ( total ) ; + + bar->show(); + } + + bar->setProgress( percentage ); +} + +void KSyncManager::hideProgressBar() +{ + bar->hide(); +} + +bool KSyncManager::isProgressBarCanceled() +{ + return !bar->isVisible(); +} diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h index 389a005..9761107 100644 --- a/libkdepim/ksyncmanager.h +++ b/libkdepim/ksyncmanager.h @@ -33,2 +33,3 @@ class KSyncManager; class KSyncInterface; +class QProgressBar; @@ -56,2 +57,7 @@ class KSyncManager : public QObject + void showProgressBar(int percentage, QString caption = QString::null, int total=100); + void hideProgressBar(); + bool isProgressBarCanceled(); + + public slots: @@ -91,3 +97,3 @@ class KSyncManager : public QObject - + QProgressBar* bar; @@ -104,4 +110,8 @@ class KSyncInterface virtual bool sync(KSyncManager* manager, QString filename, int mode) = 0; - virtual bool syncExternal(KSyncManager* manager, QString resource) = 0; + virtual bool syncExternal(KSyncManager* manager, QString resource) + { + // empty implementation, because some syncable applications do not have an external(sharpdtm) syncmode, like pwmanager. + return false; + } |