summaryrefslogtreecommitdiffabout
path: root/libkdepim/ksyncmanager.cpp
Side-by-side diff
Diffstat (limited to 'libkdepim/ksyncmanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/ksyncmanager.cpp42
1 files changed, 40 insertions, 2 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 4390a06..feb184b 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -84,21 +84,26 @@ void KSyncManager::fillSyncMenu()
{
if ( mSyncMenu->count() )
mSyncMenu->clear();
mSyncMenu->insertItem( i18n("Configure..."), 0 );
mSyncMenu->insertSeparator();
+ QPopupMenu *clearMenu = new QPopupMenu ( mSyncMenu );
+ mSyncMenu->insertItem( i18n("Remove sync info"),clearMenu, 5000 );
+ clearMenu->insertItem( i18n("For all profiles"), 1 );
+ clearMenu->insertSeparator();
+ connect ( clearMenu, SIGNAL( activated ( int ) ), this, SLOT (slotClearMenu( int ) ) );
+ mSyncMenu->insertSeparator();
if ( mServerSocket == 0 ) {
mSyncMenu->insertItem( i18n("Enable Pi-Sync"), 2 );
} else {
mSyncMenu->insertItem( i18n("Disable Pi-Sync"), 3 );
}
mSyncMenu->insertSeparator();
mSyncMenu->insertItem( i18n("Multiple sync"), 1 );
mSyncMenu->insertSeparator();
-
KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
config.setGroup("General");
QStringList prof = config.readListEntry("SyncProfileNames");
mLocalMachineName = config.readEntry("LocalMachineName","undefined");
if ( prof.count() < 2 ) {
prof.clear();
@@ -129,32 +134,59 @@ void KSyncManager::fillSyncMenu()
delete temp;
}
mExternSyncProfiles = config.readListEntry("ExternSyncProfiles");
mSyncProfileNames = prof;
unsigned int i;
for ( i = 0; i < prof.count(); ++i ) {
- mSyncMenu->insertItem( prof[i], 1000+i );
+ mSyncMenu->insertItem( prof[i], 1000+i );
+ clearMenu->insertItem( prof[i], 1000+i );
if ( i == 2 )
mSyncMenu->insertSeparator();
}
QDir app_dir;
//US do not display SharpDTM if app is pwmpi, or no sharpfiles available
if ( mTargetApp == PWMPI) {
mSyncMenu->removeItem( 1000 );
+ clearMenu->removeItem( 1000 );
}
#ifndef DESKTOP_VERSION
else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) {
mSyncMenu->removeItem( 1000 );
+ clearMenu->removeItem( 1000 );
}
#endif
mSyncMenu->removeItem( 1002 );
+ clearMenu->removeItem( 1002 );
}
+void KSyncManager::slotClearMenu( int action )
+{
+ QString syncDevice;
+ if ( action > 999 ) {
+ syncDevice = mSyncProfileNames[action - 1000] ;
+ }
+
+
+ int result = 0;
+ QString sd;
+ if ( syncDevice.isEmpty() )
+ sd = i18n("Do you want to\nclear all sync info\nof all profiles?");
+ else
+ sd = i18n("Do you want to\nclear the sync\ninfo of profile\n%1?\n"). arg( syncDevice );
+
+ result = QMessageBox::warning( mParent, i18n("Warning!"),sd,i18n("OK"), i18n("Cancel"), 0,
+ 0, 1 );
+ if ( result )
+ return;
+ mImplementation->removeSyncInfo( syncDevice );
+}
void KSyncManager::slotSyncMenu( int action )
{
qDebug("syncaction %d ", action);
+ if ( action == 5000 )
+ return;
if ( action == 0 ) {
// seems to be a Qt2 event handling bug
// syncmenu.clear causes a segfault at first time
// when we call it after the main event loop, it is ok
// same behaviour when calling OM/Pi via QCOP for the first time
@@ -832,14 +864,20 @@ void KSyncManager::confSync()
#ifndef DESKTOP_VERSION
sp->showMaximized();
#else
sp->show();
#endif
sp->exec();
+ QStringList oldSyncProfileNames = mSyncProfileNames;
mSyncProfileNames = sp->getSyncProfileNames();
mLocalMachineName = sp->getLocalMachineName ();
+ int ii;
+ for ( ii = 0; ii < oldSyncProfileNames.count(); ++ii ) {
+ if ( ! mSyncProfileNames.contains( oldSyncProfileNames[ii] ) )
+ mImplementation->removeSyncInfo( oldSyncProfileNames[ii] );
+ }
QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
}
void KSyncManager::syncKDE()
{
emit save();
switch(mTargetApp)