summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Side-by-side diff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp63
-rw-r--r--kaddressbook/viewmanager.cpp9
-rw-r--r--kaddressbook/viewmanager.h2
3 files changed, 47 insertions, 27 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index c6288fa..c5a36e2 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -2862,16 +2862,21 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
// PENDING fixme later when implemented
#if 0
if ( mCurrentSyncDevice == "deleteaftersync" ) {
mLastAddressbookSync = loadedFileVersion;
qDebug("setting mLastAddressbookSync ");
}
#endif
+
+ // ********** setting filters ****************
+ Filter filterIN = mViewManager->getFilterByName( syncManager->mFilterInAB );
+ Filter filterOUT = mViewManager->getFilterByName( syncManager->mFilterOutAB );
+
//qDebug("*************************** ");
// qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
QStringList er = remote->uidList();
Addressee inR ;//= er.first();
Addressee inL;
syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count());
@@ -2941,44 +2946,46 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
}
inL.setResource( 0 );
local->insertAddressee( inL , false );
++changedLocal;
}
}
}
} else { // no conflict ********** add or delete remote
- if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
- QString des = addresseeLSync.note();
- if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
- inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
- remote->insertAddressee( inR, false );
- ++deletedAddresseeR;
- } else {
- inR.setRevision( modifiedCalendar );
- remote->insertAddressee( inR, false );
- inL = inR;
- inL.setIDStr( ":" );
- inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
- inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
- inL.setResource( 0 );
- local->insertAddressee( inL , false);
- ++addedAddressee;
- }
- } else {
- if ( inR.revision() > mLastAddressbookSync || mode == 5 ) {
- inR.setRevision( modifiedCalendar );
- remote->insertAddressee( inR, false );
- inR.setResource( 0 );
- local->insertAddressee( inR, false );
- ++addedAddressee;
+ if ( filterIN.name().isEmpty() || filterIN.filterAddressee( inR ) ) {
+ if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
+ QString des = addresseeLSync.note();
+ if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
+ inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
+ remote->insertAddressee( inR, false );
+ ++deletedAddresseeR;
+ } else {
+ inR.setRevision( modifiedCalendar );
+ remote->insertAddressee( inR, false );
+ inL = inR;
+ inL.setIDStr( ":" );
+ inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
+ inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
+ inL.setResource( 0 );
+ local->insertAddressee( inL , false);
+ ++addedAddressee;
+ }
} else {
- // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
- remote->removeAddressee( inR );
- ++deletedAddresseeR;
+ if ( inR.revision() > mLastAddressbookSync || mode == 5 ) {
+ inR.setRevision( modifiedCalendar );
+ remote->insertAddressee( inR, false );
+ inR.setResource( 0 );
+ local->insertAddressee( inR, false );
+ ++addedAddressee;
+ } else {
+ // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
+ remote->removeAddressee( inR );
+ ++deletedAddresseeR;
+ }
}
}
}
}
++incCounter;
}
er.clear();
QStringList el = local->uidList();
@@ -2991,16 +2998,18 @@ bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBo
if (syncManager->isProgressBarCanceled())
return false;
if ( incCounter % modulo == 0 )
syncManager->showProgressBar(incCounter);
uid = el[ incCounter ];
bool skipIncidence = false;
if ( uid.left(19) == QString("last-syncAddressee-") )
skipIncidence = true;
+ if ( !filterOUT.name().isEmpty() && ! filterOUT.filterAddressee( inL ) )
+ skipIncidence = true;
if ( !skipIncidence ) {
inL = local->findByUid( uid );
if ( !inL.resource() || inL.resource()->includeInSync() ) {
inR = remote->findByUid( uid );
if ( inR.isEmpty() ) { // no conflict ********** add or delete local
if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
// pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
diff --git a/kaddressbook/viewmanager.cpp b/kaddressbook/viewmanager.cpp
index 59bddd9..9c3a641 100644
--- a/kaddressbook/viewmanager.cpp
+++ b/kaddressbook/viewmanager.cpp
@@ -613,16 +613,25 @@ QStringList ViewManager::filterNames() const
QStringList names( i18n( "No Filter" ) );
Filter::List::ConstIterator it;
for ( it = mFilterList.begin(); it != mFilterList.end(); ++it )
names.append( (*it).name() );
return names;
}
+Filter ViewManager::getFilterByName( const QString &name ) const
+{
+ Filter::List::ConstIterator it;
+ for ( it = mFilterList.begin(); it != mFilterList.end(); ++it )
+ if ( name == (*it).name() )
+ return (*it);
+
+ return Filter();
+}
int ViewManager::filterPosition( const QString &name ) const
{
int pos = 0;
Filter::List::ConstIterator it;
for ( it = mFilterList.begin(); it != mFilterList.end(); ++it, ++pos )
if ( name == (*it).name() )
diff --git a/kaddressbook/viewmanager.h b/kaddressbook/viewmanager.h
index a03a83f..272e1b0 100644
--- a/kaddressbook/viewmanager.h
+++ b/kaddressbook/viewmanager.h
@@ -23,16 +23,17 @@
#ifndef VIEWMANAGER_H
#define VIEWMANAGER_H
#include <qwidget.h>
#include <qstringlist.h>
#include <kaddressbookview.h>
#include <qdict.h>
+#include "filter.h"
class KAction;
class KSelectAction;
class KABCore;
class QWidgetStack;
class QDropEvent;
@@ -54,16 +55,17 @@ class ViewManager : public QWidget
~ViewManager();
void restoreSettings();
void saveSettings();
void doSearch( const QString& s ,KABC::Field *field );
void unloadViews();
KSelectAction * getFilterAction() { return mActionSelectFilter; }
+ Filter getFilterByName( const QString &name ) const;
QStringList selectedUids() const;
QStringList selectedEmails() const;
KABC::Addressee::List selectedAddressees() const;
void setListSelected(QStringList);
void setFocusAV();
public slots: