summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore 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
@@ -1987,24 +1987,28 @@ void Addressee::setResource( Resource *resource )
1987} 1987}
1988 1988
1989Resource *Addressee::resource() const 1989Resource *Addressee::resource() const
1990{ 1990{
1991 return mData->resource; 1991 return mData->resource;
1992} 1992}
1993 1993
1994//US 1994//US
1995QString Addressee::resourceLabel() 1995QString Addressee::resourceLabel()
1996{ 1996{
1997 return i18n("Resource"); 1997 return i18n("Resource");
1998} 1998}
1999QString Addressee::categoryLabel()
2000{
2001 return i18n("Category");
2002}
1999 2003
2000void Addressee::setChanged( bool value ) 2004void Addressee::setChanged( bool value )
2001{ 2005{
2002 detach(); 2006 detach();
2003 mData->changed = value; 2007 mData->changed = value;
2004} 2008}
2005 2009
2006bool Addressee::changed() const 2010bool Addressee::changed() const
2007{ 2011{
2008 return mData->changed; 2012 return mData->changed;
2009} 2013}
2010 2014
diff --git a/kabc/addressee.h b/kabc/addressee.h
index 2c81c1a..08d2f56 100644
--- a/kabc/addressee.h
+++ b/kabc/addressee.h
@@ -814,25 +814,25 @@ class Addressee
814 void setResource( Resource *resource ); 814 void setResource( Resource *resource );
815 815
816 /** 816 /**
817 Return pointer to resource. 817 Return pointer to resource.
818 */ 818 */
819 Resource *resource() const; 819 Resource *resource() const;
820 820
821 /** 821 /**
822 Return resourcelabel. 822 Return resourcelabel.
823 */ 823 */
824 //US 824 //US
825 static QString resourceLabel(); 825 static QString resourceLabel();
826 826 static QString categoryLabel();
827 /** 827 /**
828 Mark addressee as changed. 828 Mark addressee as changed.
829 */ 829 */
830 void setChanged( bool value ); 830 void setChanged( bool value );
831 831
832 /** 832 /**
833 Return whether the addressee is changed. 833 Return whether the addressee is changed.
834 */ 834 */
835 bool changed() const; 835 bool changed() const;
836 836
837 void setTagged( bool value ); 837 void setTagged( bool value );
838 bool tagged() const; 838 bool tagged() const;
diff --git a/kabc/field.cpp b/kabc/field.cpp
index d95cd19..89d0b77 100644
--- a/kabc/field.cpp
+++ b/kabc/field.cpp
@@ -48,24 +48,25 @@ class Field::FieldImpl
48 48
49 enum FieldId 49 enum FieldId
50 { 50 {
51 CustomField, 51 CustomField,
52 FormattedName, 52 FormattedName,
53 FamilyName, 53 FamilyName,
54 GivenName, 54 GivenName,
55 AdditionalName, 55 AdditionalName,
56 Prefix, 56 Prefix,
57 Suffix, 57 Suffix,
58 NickName, 58 NickName,
59 Birthday, 59 Birthday,
60 Category,
60 HomeAddressStreet, 61 HomeAddressStreet,
61 HomeAddressLocality, 62 HomeAddressLocality,
62 HomeAddressRegion, 63 HomeAddressRegion,
63 HomeAddressPostalCode, 64 HomeAddressPostalCode,
64 HomeAddressCountry, 65 HomeAddressCountry,
65 HomeAddressLabel, 66 HomeAddressLabel,
66 BusinessAddressStreet, 67 BusinessAddressStreet,
67 BusinessAddressLocality, 68 BusinessAddressLocality,
68 BusinessAddressRegion, 69 BusinessAddressRegion,
69 BusinessAddressPostalCode, 70 BusinessAddressPostalCode,
70 BusinessAddressCountry, 71 BusinessAddressCountry,
71 BusinessAddressLabel, 72 BusinessAddressLabel,
@@ -186,24 +187,26 @@ QString Field::label()
186 case FieldImpl::Title: 187 case FieldImpl::Title:
187 return Addressee::titleLabel(); 188 return Addressee::titleLabel();
188 case FieldImpl::Role: 189 case FieldImpl::Role:
189 return Addressee::roleLabel(); 190 return Addressee::roleLabel();
190 case FieldImpl::Organization: 191 case FieldImpl::Organization:
191 return Addressee::organizationLabel(); 192 return Addressee::organizationLabel();
192 case FieldImpl::Note: 193 case FieldImpl::Note:
193 return Addressee::noteLabel(); 194 return Addressee::noteLabel();
194 case FieldImpl::Url: 195 case FieldImpl::Url:
195 return Addressee::urlLabel(); 196 return Addressee::urlLabel();
196 case FieldImpl::Resource: 197 case FieldImpl::Resource:
197 return Addressee::resourceLabel(); 198 return Addressee::resourceLabel();
199 case FieldImpl::Category:
200 return Addressee::categoryLabel();
198 case FieldImpl::Sip: 201 case FieldImpl::Sip:
199 return Addressee::sipLabel(); 202 return Addressee::sipLabel();
200 case FieldImpl::CustomField: 203 case FieldImpl::CustomField:
201 return mImpl->label(); 204 return mImpl->label();
202 default: 205 default:
203 return i18n("Unknown Field"); 206 return i18n("Unknown Field");
204 } 207 }
205} 208}
206 209
207int Field::category() 210int Field::category()
208{ 211{
209 return mImpl->category(); 212 return mImpl->category();
@@ -268,24 +271,26 @@ QString Field::value( const KABC::Addressee &a )
268// KGlobal::locale()->setDateFormat("%Y-%m-%d"); // = Qt::ISODate 271// KGlobal::locale()->setDateFormat("%Y-%m-%d"); // = Qt::ISODate
269 QString dt = KGlobal::locale()->formatDate(a.birthday().date(), false, KLocale::ISODate); 272 QString dt = KGlobal::locale()->formatDate(a.birthday().date(), false, KLocale::ISODate);
270// KGlobal::locale()->setDateFormat(_oldFormat); 273// KGlobal::locale()->setDateFormat(_oldFormat);
271 return dt; 274 return dt;
272 } 275 }
273 else 276 else
274 return QString::null; 277 return QString::null;
275 case FieldImpl::Url: 278 case FieldImpl::Url:
276 return a.url().prettyURL(); 279 return a.url().prettyURL();
277//US 280//US
278 case FieldImpl::Resource: 281 case FieldImpl::Resource:
279 return a.resource()->resourceName(); 282 return a.resource()->resourceName();
283 case FieldImpl::Category:
284 return a.categories().join(",");
280 case FieldImpl::HomePhone: 285 case FieldImpl::HomePhone:
281 return a.phoneNumber( PhoneNumber::Home ).number(); 286 return a.phoneNumber( PhoneNumber::Home ).number();
282 case FieldImpl::BusinessPhone: 287 case FieldImpl::BusinessPhone:
283 return a.phoneNumber( PhoneNumber::Work ).number(); 288 return a.phoneNumber( PhoneNumber::Work ).number();
284 case FieldImpl::MobilePhone: 289 case FieldImpl::MobilePhone:
285 return a.phoneNumber( PhoneNumber::Cell ).number(); 290 return a.phoneNumber( PhoneNumber::Cell ).number();
286 case FieldImpl::HomeFax: 291 case FieldImpl::HomeFax:
287 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number(); 292 return a.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax ).number();
288 case FieldImpl::BusinessFax: 293 case FieldImpl::BusinessFax:
289 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number(); 294 return a.phoneNumber( PhoneNumber::Work | PhoneNumber::Fax ).number();
290 case FieldImpl::CarPhone: 295 case FieldImpl::CarPhone:
291 return a.phoneNumber( PhoneNumber::Car ).number(); 296 return a.phoneNumber( PhoneNumber::Car ).number();
@@ -386,24 +391,25 @@ bool Field::isCustom()
386 391
387Field::List Field::allFields() 392Field::List Field::allFields()
388{ 393{
389 if ( mAllFields.isEmpty() ) { 394 if ( mAllFields.isEmpty() ) {
390 createField( FieldImpl::FormattedName, Frequent ); 395 createField( FieldImpl::FormattedName, Frequent );
391 createField( FieldImpl::FamilyName, Frequent ); 396 createField( FieldImpl::FamilyName, Frequent );
392 createField( FieldImpl::GivenName, Frequent ); 397 createField( FieldImpl::GivenName, Frequent );
393 createField( FieldImpl::AdditionalName ); 398 createField( FieldImpl::AdditionalName );
394 createField( FieldImpl::Prefix ); 399 createField( FieldImpl::Prefix );
395 createField( FieldImpl::Suffix ); 400 createField( FieldImpl::Suffix );
396 createField( FieldImpl::NickName, Personal ); 401 createField( FieldImpl::NickName, Personal );
397 createField( FieldImpl::Birthday, Personal ); 402 createField( FieldImpl::Birthday, Personal );
403 createField( FieldImpl::Category );
398 createField( FieldImpl::HomeAddressStreet, Address|Personal ); 404 createField( FieldImpl::HomeAddressStreet, Address|Personal );
399 createField( FieldImpl::HomeAddressLocality, Address|Personal ); 405 createField( FieldImpl::HomeAddressLocality, Address|Personal );
400 createField( FieldImpl::HomeAddressRegion, Address|Personal ); 406 createField( FieldImpl::HomeAddressRegion, Address|Personal );
401 createField( FieldImpl::HomeAddressPostalCode, Address|Personal ); 407 createField( FieldImpl::HomeAddressPostalCode, Address|Personal );
402 createField( FieldImpl::HomeAddressCountry, Address|Personal ); 408 createField( FieldImpl::HomeAddressCountry, Address|Personal );
403 createField( FieldImpl::HomeAddressLabel, Address|Personal ); 409 createField( FieldImpl::HomeAddressLabel, Address|Personal );
404 createField( FieldImpl::BusinessAddressStreet, Address|Organization ); 410 createField( FieldImpl::BusinessAddressStreet, Address|Organization );
405 createField( FieldImpl::BusinessAddressLocality, Address|Organization ); 411 createField( FieldImpl::BusinessAddressLocality, Address|Organization );
406 createField( FieldImpl::BusinessAddressRegion, Address|Organization ); 412 createField( FieldImpl::BusinessAddressRegion, Address|Organization );
407 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization ); 413 createField( FieldImpl::BusinessAddressPostalCode, Address|Organization );
408 createField( FieldImpl::BusinessAddressCountry, Address|Organization ); 414 createField( FieldImpl::BusinessAddressCountry, Address|Organization );
409 createField( FieldImpl::BusinessAddressLabel, Address|Organization ); 415 createField( FieldImpl::BusinessAddressLabel, Address|Organization );
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index e6bdde9..2c2f1a0 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1867,33 +1867,41 @@ void KABCore::initActions()
1867 "ldap_lookup" ); 1867 "ldap_lookup" );
1868 } 1868 }
1869#else //KAB_EMBEDDED 1869#else //KAB_EMBEDDED
1870 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1870 //qDebug("KABCore::initActions() LDAP has to be implemented");
1871#endif //KAB_EMBEDDED 1871#endif //KAB_EMBEDDED
1872 1872
1873 1873
1874 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1874 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1875 SLOT( setWhoAmI() ), actionCollection(), 1875 SLOT( setWhoAmI() ), actionCollection(),
1876 "set_personal" ); 1876 "set_personal" );
1877 1877
1878 1878
1879
1880
1881 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1879 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
1882 SLOT( setCategories() ), actionCollection(), 1880 SLOT( setCategories() ), actionCollection(),
1883 "edit_set_categories" ); 1881 "edit_set_categories" );
1884 1882
1885 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 1883 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
1886 SLOT( removeVoice() ), actionCollection(), 1884 SLOT( removeVoice() ), actionCollection(),
1887 "remove_voice" ); 1885 "remove_voice" );
1886
1887 mActionSetCat= new KAction( i18n( "Set categories..." ), 0, this,
1888 SLOT( setCat() ), actionCollection(),
1889 "remove_voice" );
1890
1891
1892 mActionAddCat= new KAction( i18n( "Add categories..." ), 0, this,
1893 SLOT( addCat() ), actionCollection(),
1894 "remove_voice" );
1895
1888 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 1896 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
1889 SLOT( importFromOL() ), actionCollection(), 1897 SLOT( importFromOL() ), actionCollection(),
1890 "import_OL" ); 1898 "import_OL" );
1891#ifdef KAB_EMBEDDED 1899#ifdef KAB_EMBEDDED
1892 mActionLicence = new KAction( i18n( "Licence" ), 0, 1900 mActionLicence = new KAction( i18n( "Licence" ), 0,
1893 this, SLOT( showLicence() ), actionCollection(), 1901 this, SLOT( showLicence() ), actionCollection(),
1894 "licence_about_data" ); 1902 "licence_about_data" );
1895 mActionFaq = new KAction( i18n( "Faq" ), 0, 1903 mActionFaq = new KAction( i18n( "Faq" ), 0,
1896 this, SLOT( faq() ), actionCollection(), 1904 this, SLOT( faq() ), actionCollection(),
1897 "faq_about_data" ); 1905 "faq_about_data" );
1898 mActionWN = new KAction( i18n( "What's New?" ), 0, 1906 mActionWN = new KAction( i18n( "What's New?" ), 0,
1899 this, SLOT( whatsnew() ), actionCollection(), 1907 this, SLOT( whatsnew() ), actionCollection(),
@@ -2005,24 +2013,26 @@ void KABCore::addActionsManually()
2005 // edit menu 2013 // edit menu
2006 mActionUndo->plug( editMenu ); 2014 mActionUndo->plug( editMenu );
2007 mActionRedo->plug( editMenu ); 2015 mActionRedo->plug( editMenu );
2008 editMenu->insertSeparator(); 2016 editMenu->insertSeparator();
2009 mActionCut->plug( editMenu ); 2017 mActionCut->plug( editMenu );
2010 mActionCopy->plug( editMenu ); 2018 mActionCopy->plug( editMenu );
2011 mActionPaste->plug( editMenu ); 2019 mActionPaste->plug( editMenu );
2012 mActionDelete->plug( editMenu ); 2020 mActionDelete->plug( editMenu );
2013 editMenu->insertSeparator(); 2021 editMenu->insertSeparator();
2014 mActionSelectAll->plug( editMenu ); 2022 mActionSelectAll->plug( editMenu );
2015 2023
2016 mActionRemoveVoice->plug( changeMenu ); 2024 mActionRemoveVoice->plug( changeMenu );
2025 mActionSetCat->plug( changeMenu );
2026 mActionAddCat->plug( changeMenu );
2017 // settings menu 2027 // settings menu
2018//US special menuentry to configure the addressbook resources. On KDE 2028//US special menuentry to configure the addressbook resources. On KDE
2019// you do that through the control center !!! 2029// you do that through the control center !!!
2020 mActionConfigResources->plug( settingsMenu ); 2030 mActionConfigResources->plug( settingsMenu );
2021 settingsMenu->insertSeparator(); 2031 settingsMenu->insertSeparator();
2022 2032
2023 mActionConfigKAddressbook->plug( settingsMenu ); 2033 mActionConfigKAddressbook->plug( settingsMenu );
2024 2034
2025 if ( mIsPart ) { 2035 if ( mIsPart ) {
2026 //US not implemented yet 2036 //US not implemented yet
2027 //mActionConfigShortcuts->plug( settingsMenu ); 2037 //mActionConfigShortcuts->plug( settingsMenu );
2028 //mActionConfigureToolbars->plug( settingsMenu ); 2038 //mActionConfigureToolbars->plug( settingsMenu );
@@ -2087,24 +2097,64 @@ void KABCore::addActionsManually()
2087 2097
2088#endif //KAB_EMBEDDED 2098#endif //KAB_EMBEDDED
2089 2099
2090 mActionExport2phone->plug( ExportMenu ); 2100 mActionExport2phone->plug( ExportMenu );
2091 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2101 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2092 syncManager->fillSyncMenu(); 2102 syncManager->fillSyncMenu();
2093 2103
2094} 2104}
2095void KABCore::showLicence() 2105void KABCore::showLicence()
2096{ 2106{
2097 KApplication::showLicence(); 2107 KApplication::showLicence();
2098} 2108}
2109void KABCore::setCat()
2110{
2111 setCategories( true );
2112}
2113void KABCore::addCat()
2114{
2115 setCategories( false );
2116}
2117void KABCore::setCategories( bool removeOld )
2118{
2119 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KABPrefs::instance(), 0 );
2120 if (! csd->exec()) {
2121 message( i18n("Setting categories cancelled") );
2122 delete csd;
2123 return;
2124 }
2125 message( i18n("Setting categories ... please wait!") );
2126 QStringList catList = csd->selectedCategories();
2127 delete csd;
2128 catList.sort();
2129 QStringList newList;
2130 KABC::Addressee::List list = mViewManager->selectedAddressees();
2131 KABC::Addressee::List::Iterator it;
2132 for ( it = list.begin(); it != list.end(); ++it ) {
2133 if ( removeOld ) {
2134 (*it).setCategories( catList );
2135 } else {
2136 newList = (*it).categories();
2137 int i;
2138 for( i = 0; i< catList.count(); ++i ) {
2139 if ( !newList.contains (catList[i]))
2140 newList.append( catList[i] );
2141 }
2142 newList.sort();
2143 (*it).setCategories( newList );
2144 }
2145 contactModified((*it) );
2146 }
2147 message( i18n("Setting categories completed!") );
2148}
2099void KABCore::removeVoice() 2149void KABCore::removeVoice()
2100{ 2150{
2101 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No ) 2151 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No )
2102 return; 2152 return;
2103 KABC::Addressee::List list = mViewManager->selectedAddressees(); 2153 KABC::Addressee::List list = mViewManager->selectedAddressees();
2104 KABC::Addressee::List::Iterator it; 2154 KABC::Addressee::List::Iterator it;
2105 for ( it = list.begin(); it != list.end(); ++it ) { 2155 for ( it = list.begin(); it != list.end(); ++it ) {
2106 2156
2107 if ( (*it).removeVoice() ) 2157 if ( (*it).removeVoice() )
2108 contactModified((*it) ); 2158 contactModified((*it) );
2109 } 2159 }
2110} 2160}
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index c01d598..1bdae5f 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -361,24 +361,27 @@ class KABCore : public QWidget, public KSyncInterface
361 void receive( const QCString& cmsg, const QByteArray& data ); 361 void receive( const QCString& cmsg, const QByteArray& data );
362 void toggleBeamReceive( ); 362 void toggleBeamReceive( );
363 void disableBR(bool); 363 void disableBR(bool);
364 void setJumpButtonBarVisible( bool visible ); 364 void setJumpButtonBarVisible( bool visible );
365 void setCaptionBack(); 365 void setCaptionBack();
366 void importFromOL(); 366 void importFromOL();
367 void extensionModified( const KABC::Addressee::List &list ); 367 void extensionModified( const KABC::Addressee::List &list );
368 void extensionChanged( int id ); 368 void extensionChanged( int id );
369 void clipboardDataChanged(); 369 void clipboardDataChanged();
370 void updateActionMenu(); 370 void updateActionMenu();
371 void configureKeyBindings(); 371 void configureKeyBindings();
372 void removeVoice(); 372 void removeVoice();
373 void setCat();
374 void addCat();
375 void setCategories( bool removeOld );
373#ifdef KAB_EMBEDDED 376#ifdef KAB_EMBEDDED
374 void configureResources(); 377 void configureResources();
375#endif //KAB_EMBEDDED 378#endif //KAB_EMBEDDED
376 379
377 void slotEditorDestroyed( const QString &uid ); 380 void slotEditorDestroyed( const QString &uid );
378 void configurationChanged(); 381 void configurationChanged();
379 void addressBookChanged(); 382 void addressBookChanged();
380 383
381 private: 384 private:
382 bool mBRdisabled; 385 bool mBRdisabled;
383#ifndef DESKTOP_VERSION 386#ifndef DESKTOP_VERSION
384 QCopChannel* infrared; 387 QCopChannel* infrared;
@@ -461,24 +464,26 @@ class KABCore : public QWidget, public KSyncInterface
461 464
462 KAction *mActionDeleteView; 465 KAction *mActionDeleteView;
463 466
464 QPopupMenu *viewMenu; 467 QPopupMenu *viewMenu;
465 QPopupMenu *filterMenu; 468 QPopupMenu *filterMenu;
466 QPopupMenu *settingsMenu; 469 QPopupMenu *settingsMenu;
467 QPopupMenu *changeMenu; 470 QPopupMenu *changeMenu;
468//US QAction *mActionSave; 471//US QAction *mActionSave;
469 QPopupMenu *ImportMenu; 472 QPopupMenu *ImportMenu;
470 QPopupMenu *ExportMenu; 473 QPopupMenu *ExportMenu;
471 //LR additional methods 474 //LR additional methods
472 KAction *mActionRemoveVoice; 475 KAction *mActionRemoveVoice;
476 KAction *mActionSetCat;
477 KAction *mActionAddCat;
473 KAction * mActionImportOL; 478 KAction * mActionImportOL;
474 479
475#ifndef KAB_EMBEDDED 480#ifndef KAB_EMBEDDED
476 KAddressBookService *mAddressBookService; 481 KAddressBookService *mAddressBookService;
477#endif //KAB_EMBEDDED 482#endif //KAB_EMBEDDED
478 483
479 class KABCorePrivate; 484 class KABCorePrivate;
480 KABCorePrivate *d; 485 KABCorePrivate *d;
481 //US bool mBlockSaveFlag; 486 //US bool mBlockSaveFlag;
482 487
483#ifdef KAB_EMBEDDED 488#ifdef KAB_EMBEDDED
484 KAddressBookMain *mMainWindow; // should be the same like mGUIClient 489 KAddressBookMain *mMainWindow; // should be the same like mGUIClient