summaryrefslogtreecommitdiffabout
path: root/kabc
Side-by-side diff
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp72
-rw-r--r--kabc/addressbook.h4
-rw-r--r--kabc/addressee.cpp12
-rw-r--r--kabc/addressee.h5
4 files changed, 65 insertions, 28 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 1050f55..ff05f7e 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -403,34 +403,54 @@ void AddressBook::export2File( QString fileName )
t << "\r\n\r\n";
outFile.close();
}
-void AddressBook::importFromFile( QString fileName, bool replaceLabel )
-{
-
- KABC::Addressee::List list;
- QFile file( fileName );
-
- file.open( IO_ReadOnly );
- QByteArray rawData = file.readAll();
- file.close();
- QString data;
- if ( replaceLabel ) {
- data = QString::fromLatin1( rawData.data(), rawData.size() + 1 );
- data.replace ( QRegExp("LABEL") , "ADR" );
- data.replace ( QRegExp("CHARSET=ISO-8859-1") , "" );
- } else
- data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
- KABC::VCardTool tool;
- list = tool.parseVCards( data );
- KABC::Addressee::List::Iterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- (*it).setResource( 0 );
- if ( replaceLabel )
- (*it).removeVoice();
- insertAddressee( (*it), false, true );
+void AddressBook::importFromFile( QString fileName, bool replaceLabel, bool removeOld )
+{
+
+ if ( removeOld )
+ setUntagged();
+ KABC::Addressee::List list;
+ QFile file( fileName );
+ file.open( IO_ReadOnly );
+ QByteArray rawData = file.readAll();
+ file.close();
+ QString data;
+ if ( replaceLabel ) {
+ data = QString::fromLatin1( rawData.data(), rawData.size() + 1 );
+ data.replace ( QRegExp("LABEL") , "ADR" );
+ data.replace ( QRegExp("CHARSET=ISO-8859-1") , "" );
+ } else
+ data = QString::fromUtf8( rawData.data(), rawData.size() + 1 );
+ KABC::VCardTool tool;
+ list = tool.parseVCards( data );
+ KABC::Addressee::List::Iterator it;
+ for ( it = list.begin(); it != list.end(); ++it ) {
+ (*it).setResource( 0 );
+ if ( replaceLabel )
+ (*it).removeVoice();
+ if ( removeOld )
+ (*it).setTagged( true );
+ insertAddressee( (*it), false, true );
+ }
+ if ( removeOld )
+ removeUntagged();
+}
+void AddressBook::setUntagged()
+{
+ Iterator ait;
+ for ( ait = begin(); ait != end(); ++ait ) {
+ (*ait).setTagged( false );
+ }
+}
+void AddressBook::removeUntagged()
+{
+ Iterator ait;
+ for ( ait = begin(); ait != end(); ++ait ) {
+ if (!(*ait).tagged())
+ removeAddressee( ait );
}
-
+
+ deleteRemovedAddressees();
}
-
bool AddressBook::saveAB()
{
bool ok = true;
diff --git a/kabc/addressbook.h b/kabc/addressbook.h
index cea1b03..532e05d 100644
--- a/kabc/addressbook.h
+++ b/kabc/addressbook.h
@@ -143,7 +143,9 @@ class AddressBook : public QObject
bool save( Ticket *ticket );
bool saveAB( );
void export2File( QString fileName );
- void importFromFile( QString fileName, bool replaceLabel = false );
+ void importFromFile( QString fileName, bool replaceLabel = false, bool removeOld = false );
+ void setUntagged();
+ void removeUntagged();
/**
Returns a iterator for first entry of address book.
*/
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 3f3d5c0..607ae26 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -88,6 +88,7 @@ struct Addressee::AddresseeData : public KShared
bool empty :1;
bool changed :1;
+ bool tagged :1;
};
Addressee::Addressee()
@@ -1821,6 +1822,17 @@ bool Addressee::changed() const
return mData->changed;
}
+void Addressee::setTagged( bool value )
+{
+ detach();
+ mData->tagged = value;
+}
+
+bool Addressee::tagged() const
+{
+ return mData->tagged;
+}
+
QDataStream &KABC::operator<<( QDataStream &s, const Addressee &a )
{
if (!a.mData) return s;
diff --git a/kabc/addressee.h b/kabc/addressee.h
index 9336edc..0aa2c51 100644
--- a/kabc/addressee.h
+++ b/kabc/addressee.h
@@ -831,7 +831,10 @@ class Addressee
/**
Return whether the addressee is changed.
*/
- bool changed() const;
+ bool changed() const;
+
+ void setTagged( bool value );
+ bool tagged() const;
private:
Addressee copy();