summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-26 22:19:18 (UTC)
committer zautrix <zautrix>2004-10-26 22:19:18 (UTC)
commit6385f303bef3cbcd19d097a7b05c30e144d5dd6e (patch) (side-by-side diff)
tree770795d94ea6ec1dc8bcaa67cc174a9c0add564a
parent13e996beddabc5e88f4f2fe49b2ce6cb8408eb30 (diff)
downloadkdepimpi-6385f303bef3cbcd19d097a7b05c30e144d5dd6e.zip
kdepimpi-6385f303bef3cbcd19d097a7b05c30e144d5dd6e.tar.gz
kdepimpi-6385f303bef3cbcd19d097a7b05c30e144d5dd6e.tar.bz2
implemented remove sync info for kopi and kapi
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--kabc/addressbook.cpp8
-rw-r--r--kabc/addressbook.h1
-rw-r--r--kabc/addressee.cpp3
-rw-r--r--kaddressbook/kabcore.cpp4
-rw-r--r--korganizer/calendarview.cpp1
-rw-r--r--libkcal/calendar.h1
-rw-r--r--libkcal/calendarlocal.cpp23
-rw-r--r--libkcal/calendarlocal.h1
-rw-r--r--libkcal/incidencebase.cpp3
-rw-r--r--libkdepim/ksyncmanager.cpp40
-rw-r--r--libkdepim/ksyncmanager.h1
11 files changed, 82 insertions, 4 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 3641c0c..2785131 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -550,12 +550,20 @@ void AddressBook::smplifyAddressees()
(*ait).simplifyEmails();
(*ait).simplifyPhoneNumbers();
(*ait).simplifyPhoneNumberTypes();
(*ait).simplifyAddresses();
}
}
+void AddressBook::removeSyncInfo( QString syncProfile)
+{
+ Iterator ait;
+ for ( ait = begin(); ait != end(); ++ait ) {
+ (*ait).removeID( syncProfile );
+ }
+
+}
void AddressBook::preparePhoneSync( QString currentSyncDevice, bool isPreSync )
{
Iterator ait;
for ( ait = begin(); ait != end(); ++ait ) {
QString id = (*ait).IDStr();
(*ait).setIDStr( ":");
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index 5edca06..f124dc9 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -141,12 +141,13 @@ class AddressBook : public QObject
@param ticket a ticket object returned by @ref requestSaveTicket()
*/
bool save( Ticket *ticket );
bool saveAB( );
bool saveABphone( QString fileName );
void smplifyAddressees();
+ void removeSyncInfo( QString syncProfile);
void preparePhoneSync( QString currentSyncDevice, bool isPreSync );
void export2File( QString fileName );
bool export2PhoneFormat( QStringList uids ,QString fileName );
int importFromFile( QString fileName, bool replaceLabel = false, bool removeOld = false );
void setUntagged( bool setNonSyncTagged = false );
void removeUntagged();
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 40877ef..a660a9d 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -550,12 +550,15 @@ void Addressee::simplifyPhoneNumberTypes()
++phoneIter )
( *phoneIter ).simplifyType();
}
void Addressee::removeID(const QString &prof)
{
detach();
+ if ( prof.isEmpty() )
+ mData->mExternalId = ":";
+ else
mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof);
}
void Addressee::setID( const QString & prof , const QString & id )
{
detach();
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index efae874..e56e46a 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2809,14 +2809,14 @@ bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
mViewManager->refreshView();
return syncOK;
}
void KABCore::removeSyncInfo( QString syncProfile)
{
- qDebug("removeSyncInfo for profile %s ", syncProfile.latin1());
-
+ qDebug("AB:removeSyncInfo for profile %s ", syncProfile.latin1());
+ mAddressBook->removeSyncInfo( syncProfile );
}
//this is a overwritten callbackmethods from the syncinterface
bool KABCore::syncExternal(KSyncManager* manager, QString resource)
{
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index af01625..a08f243 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -3765,8 +3765,9 @@ void CalendarView::setSyncManager(KSyncManager* manager)
mSyncManager = manager;
}
void CalendarView::removeSyncInfo( QString syncProfile)
{
qDebug("removeSyncInfo for profile %s ", syncProfile.latin1());
+ mCalendar->removeSyncInfo( syncProfile );
}
diff --git a/libkcal/calendar.h b/libkcal/calendar.h
index b801186..b7d6a1f 100644
--- a/libkcal/calendar.h
+++ b/libkcal/calendar.h
@@ -75,12 +75,13 @@ public:
/**
Sync changes in memory to persistant storage.
*/
virtual void save() = 0;
virtual QPtrList<Event> getExternLastSyncEvents() = 0;
+ virtual void removeSyncInfo( QString syncProfile) = 0;
virtual bool isSaving() { return false; }
/**
Return the owner of the calendar's full name.
*/
const QString &getOwner() const;
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 21b4aaf..3f46d53 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -218,13 +218,34 @@ Todo *CalendarLocal::todo( QString syncProf, QString id )
for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
if ( todo->getID( syncProf ) == id ) return todo;
}
return 0;
}
-
+void CalendarLocal::removeSyncInfo( QString syncProfile)
+{
+ QPtrList<Incidence> all = rawIncidences() ;
+ Incidence *inc;
+ for ( inc = all.first(); inc; inc = all.next() ) {
+ inc->removeID( syncProfile );
+ }
+ if ( syncProfile.isEmpty() ) {
+ QPtrList<Event> el;
+ Event *todo;
+ for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
+ if ( todo->uid().left( 15 ) == QString("last-syncEvent-") )
+ el.append( todo );
+ }
+ for ( todo = el.first(); todo; todo = el.next() ) {
+ deleteIncidence ( todo );
+ }
+ } else {
+ Event *lse = event( "last-syncEvent-"+ syncProfile);
+ deleteIncidence ( lse );
+ }
+}
QPtrList<Event> CalendarLocal::getExternLastSyncEvents()
{
QPtrList<Event> el;
Event *todo;
for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
if ( todo->uid().left( 15 ) == QString("last-syncEvent-") )
diff --git a/libkcal/calendarlocal.h b/libkcal/calendarlocal.h
index 5b6c64c..98ec710 100644
--- a/libkcal/calendarlocal.h
+++ b/libkcal/calendarlocal.h
@@ -66,12 +66,13 @@ class CalendarLocal : public Calendar
void save() {}
/**
Add Event to calendar.
*/
+ void removeSyncInfo( QString syncProfile);
bool addAnniversaryNoDup( Event *event );
bool addEventNoDup( Event *event );
bool addEvent( Event *event );
/**
Deletes an event from this calendar.
*/
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp
index b36dc1a..9aa517c 100644
--- a/libkcal/incidencebase.cpp
+++ b/libkcal/incidencebase.cpp
@@ -350,12 +350,15 @@ void IncidenceBase::setTempSyncStat( int id )
if (mReadOnly) return;
mTempSyncStat = id;
}
void IncidenceBase::removeID(const QString &prof)
{
+ if ( prof.isEmpty() )
+ mExternalId = ":";
+ else
mExternalId = KIdManager::removeId ( mExternalId, prof);
}
void IncidenceBase::setID( const QString & prof , const QString & id )
{
mExternalId = KIdManager::setId ( mExternalId, prof, id );
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();
@@ -130,31 +135,58 @@ void KSyncManager::fillSyncMenu()
}
mExternSyncProfiles = config.readListEntry("ExternSyncProfiles");
mSyncProfileNames = prof;
unsigned int i;
for ( i = 0; i < prof.count(); ++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)
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h
index af4f1ab..aa32e28 100644
--- a/libkdepim/ksyncmanager.h
+++ b/libkdepim/ksyncmanager.h
@@ -151,12 +151,13 @@ class KSyncManager : public QObject
void save();
void request_file();
void getFile( bool );
public slots:
void slotSyncMenu( int );
+ void slotClearMenu( int action );
void deleteCommandSocket(KCommandSocket*s, int state);
void readFileFromSocket();
void fillSyncMenu();
private:
void syncPi();