summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--kabc/addressee.cpp4
-rw-r--r--kabc/addressee.h2
-rw-r--r--kabc/field.cpp6
-rw-r--r--kaddressbook/kabcore.cpp54
-rw-r--r--kaddressbook/kabcore.h5
5 files changed, 68 insertions, 3 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index eec0f1f..3ce733d 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -1998,2 +1998,6 @@ QString Addressee::resourceLabel()
}
+QString Addressee::categoryLabel()
+{
+ return i18n("Category");
+}
diff --git a/kabc/addressee.h b/kabc/addressee.h
index 2c81c1a..08d2f56 100644
--- a/kabc/addressee.h
+++ b/kabc/addressee.h
@@ -825,3 +825,3 @@ class Addressee
static QString resourceLabel();
-
+ static QString categoryLabel();
/**
diff --git a/kabc/field.cpp b/kabc/field.cpp
index d95cd19..89d0b77 100644
--- a/kabc/field.cpp
+++ b/kabc/field.cpp
@@ -59,2 +59,3 @@ class Field::FieldImpl
Birthday,
+ Category,
HomeAddressStreet,
@@ -197,2 +198,4 @@ QString Field::label()
return Addressee::resourceLabel();
+ case FieldImpl::Category:
+ return Addressee::categoryLabel();
case FieldImpl::Sip:
@@ -279,2 +282,4 @@ QString Field::value( const KABC::Addressee &a )
return a.resource()->resourceName();
+ case FieldImpl::Category:
+ return a.categories().join(",");
case FieldImpl::HomePhone:
@@ -397,2 +402,3 @@ Field::List Field::allFields()
createField( FieldImpl::Birthday, Personal );
+ createField( FieldImpl::Category );
createField( FieldImpl::HomeAddressStreet, Address|Personal );
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index e6bdde9..2c2f1a0 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1878,4 +1878,2 @@ void KABCore::initActions()
-
-
mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
@@ -1887,2 +1885,12 @@ void KABCore::initActions()
"remove_voice" );
+
+ mActionSetCat= new KAction( i18n( "Set categories..." ), 0, this,
+ SLOT( setCat() ), actionCollection(),
+ "remove_voice" );
+
+
+ mActionAddCat= new KAction( i18n( "Add categories..." ), 0, this,
+ SLOT( addCat() ), actionCollection(),
+ "remove_voice" );
+
mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
@@ -2016,2 +2024,4 @@ void KABCore::addActionsManually()
mActionRemoveVoice->plug( changeMenu );
+ mActionSetCat->plug( changeMenu );
+ mActionAddCat->plug( changeMenu );
// settings menu
@@ -2098,2 +2108,42 @@ void KABCore::showLicence()
}
+void KABCore::setCat()
+{
+ setCategories( true );
+}
+void KABCore::addCat()
+{
+ setCategories( false );
+}
+void KABCore::setCategories( bool removeOld )
+{
+ KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KABPrefs::instance(), 0 );
+ if (! csd->exec()) {
+ message( i18n("Setting categories cancelled") );
+ delete csd;
+ return;
+ }
+ message( i18n("Setting categories ... please wait!") );
+ QStringList catList = csd->selectedCategories();
+ delete csd;
+ catList.sort();
+ QStringList newList;
+ KABC::Addressee::List list = mViewManager->selectedAddressees();
+ KABC::Addressee::List::Iterator it;
+ for ( it = list.begin(); it != list.end(); ++it ) {
+ if ( removeOld ) {
+ (*it).setCategories( catList );
+ } else {
+ newList = (*it).categories();
+ int i;
+ for( i = 0; i< catList.count(); ++i ) {
+ if ( !newList.contains (catList[i]))
+ newList.append( catList[i] );
+ }
+ newList.sort();
+ (*it).setCategories( newList );
+ }
+ contactModified((*it) );
+ }
+ message( i18n("Setting categories completed!") );
+}
void KABCore::removeVoice()
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index c01d598..1bdae5f 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -372,2 +372,5 @@ class KABCore : public QWidget, public KSyncInterface
void removeVoice();
+ void setCat();
+ void addCat();
+ void setCategories( bool removeOld );
#ifdef KAB_EMBEDDED
@@ -472,2 +475,4 @@ class KABCore : public QWidget, public KSyncInterface
KAction *mActionRemoveVoice;
+ KAction *mActionSetCat;
+ KAction *mActionAddCat;
KAction * mActionImportOL;