summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/ocontact.cpp62
-rw-r--r--libopie/pim/ocontact.h1
-rw-r--r--libopie2/opiepim/ocontact.cpp62
-rw-r--r--libopie2/opiepim/ocontact.h1
4 files changed, 126 insertions, 0 deletions
diff --git a/libopie/pim/ocontact.cpp b/libopie/pim/ocontact.cpp
index a63753e..6f648ac 100644
--- a/libopie/pim/ocontact.cpp
+++ b/libopie/pim/ocontact.cpp
@@ -859,192 +859,254 @@ QStringList OContact::fields()
859 list.append( "BusinessStreet" ); 859 list.append( "BusinessStreet" );
860 list.append( "BusinessCity" ); 860 list.append( "BusinessCity" );
861 list.append( "BusinessState" ); 861 list.append( "BusinessState" );
862 list.append( "BusinessZip" ); 862 list.append( "BusinessZip" );
863 list.append( "BusinessCountry" ); 863 list.append( "BusinessCountry" );
864 list.append( "BusinessPager" ); 864 list.append( "BusinessPager" );
865 list.append( "BusinessWebPage" ); 865 list.append( "BusinessWebPage" );
866 866
867 list.append( "Office" ); 867 list.append( "Office" );
868 list.append( "Profession" ); 868 list.append( "Profession" );
869 list.append( "Assistant" ); 869 list.append( "Assistant" );
870 list.append( "Manager" ); 870 list.append( "Manager" );
871 871
872 list.append( "HomeStreet" ); 872 list.append( "HomeStreet" );
873 list.append( "HomeCity" ); 873 list.append( "HomeCity" );
874 list.append( "HomeState" ); 874 list.append( "HomeState" );
875 list.append( "HomeZip" ); 875 list.append( "HomeZip" );
876 list.append( "HomeCountry" ); 876 list.append( "HomeCountry" );
877 list.append( "HomeWebPage" ); 877 list.append( "HomeWebPage" );
878 878
879 list.append( "Spouse" ); 879 list.append( "Spouse" );
880 list.append( "Gender" ); 880 list.append( "Gender" );
881 list.append( "Birthday" ); 881 list.append( "Birthday" );
882 list.append( "Anniversary" ); 882 list.append( "Anniversary" );
883 list.append( "Nickname" ); 883 list.append( "Nickname" );
884 list.append( "Children" ); 884 list.append( "Children" );
885 885
886 list.append( "Notes" ); 886 list.append( "Notes" );
887 list.append( "Groups" ); 887 list.append( "Groups" );
888 888
889 return list; 889 return list;
890} 890}
891 891
892/*! 892/*!
893 \internal 893 \internal
894 Returns a translated list of field names for a contact. 894 Returns a translated list of field names for a contact.
895*/ 895*/
896QStringList OContact::trfields() 896QStringList OContact::trfields()
897{ 897{
898 QStringList list; 898 QStringList list;
899 899
900 list.append( QObject::tr( "Name Title") ); 900 list.append( QObject::tr( "Name Title") );
901 list.append( QObject::tr( "First Name" ) ); 901 list.append( QObject::tr( "First Name" ) );
902 list.append( QObject::tr( "Middle Name" ) ); 902 list.append( QObject::tr( "Middle Name" ) );
903 list.append( QObject::tr( "Last Name" ) ); 903 list.append( QObject::tr( "Last Name" ) );
904 list.append( QObject::tr( "Suffix" ) ); 904 list.append( QObject::tr( "Suffix" ) );
905 list.append( QObject::tr( "File As" ) ); 905 list.append( QObject::tr( "File As" ) );
906 906
907 list.append( QObject::tr( "Job Title" ) ); 907 list.append( QObject::tr( "Job Title" ) );
908 list.append( QObject::tr( "Department" ) ); 908 list.append( QObject::tr( "Department" ) );
909 list.append( QObject::tr( "Company" ) ); 909 list.append( QObject::tr( "Company" ) );
910 list.append( QObject::tr( "Business Phone" ) ); 910 list.append( QObject::tr( "Business Phone" ) );
911 list.append( QObject::tr( "Business Fax" ) ); 911 list.append( QObject::tr( "Business Fax" ) );
912 list.append( QObject::tr( "Business Mobile" ) ); 912 list.append( QObject::tr( "Business Mobile" ) );
913 913
914 list.append( QObject::tr( "Default Email" ) ); 914 list.append( QObject::tr( "Default Email" ) );
915 list.append( QObject::tr( "Emails" ) ); 915 list.append( QObject::tr( "Emails" ) );
916 916
917 list.append( QObject::tr( "Home Phone" ) ); 917 list.append( QObject::tr( "Home Phone" ) );
918 list.append( QObject::tr( "Home Fax" ) ); 918 list.append( QObject::tr( "Home Fax" ) );
919 list.append( QObject::tr( "Home Mobile" ) ); 919 list.append( QObject::tr( "Home Mobile" ) );
920 920
921 list.append( QObject::tr( "Business Street" ) ); 921 list.append( QObject::tr( "Business Street" ) );
922 list.append( QObject::tr( "Business City" ) ); 922 list.append( QObject::tr( "Business City" ) );
923 list.append( QObject::tr( "Business State" ) ); 923 list.append( QObject::tr( "Business State" ) );
924 list.append( QObject::tr( "Business Zip" ) ); 924 list.append( QObject::tr( "Business Zip" ) );
925 list.append( QObject::tr( "Business Country" ) ); 925 list.append( QObject::tr( "Business Country" ) );
926 list.append( QObject::tr( "Business Pager" ) ); 926 list.append( QObject::tr( "Business Pager" ) );
927 list.append( QObject::tr( "Business WebPage" ) ); 927 list.append( QObject::tr( "Business WebPage" ) );
928 928
929 list.append( QObject::tr( "Office" ) ); 929 list.append( QObject::tr( "Office" ) );
930 list.append( QObject::tr( "Profession" ) ); 930 list.append( QObject::tr( "Profession" ) );
931 list.append( QObject::tr( "Assistant" ) ); 931 list.append( QObject::tr( "Assistant" ) );
932 list.append( QObject::tr( "Manager" ) ); 932 list.append( QObject::tr( "Manager" ) );
933 933
934 list.append( QObject::tr( "Home Street" ) ); 934 list.append( QObject::tr( "Home Street" ) );
935 list.append( QObject::tr( "Home City" ) ); 935 list.append( QObject::tr( "Home City" ) );
936 list.append( QObject::tr( "Home State" ) ); 936 list.append( QObject::tr( "Home State" ) );
937 list.append( QObject::tr( "Home Zip" ) ); 937 list.append( QObject::tr( "Home Zip" ) );
938 list.append( QObject::tr( "Home Country" ) ); 938 list.append( QObject::tr( "Home Country" ) );
939 list.append( QObject::tr( "Home Web Page" ) ); 939 list.append( QObject::tr( "Home Web Page" ) );
940 940
941 list.append( QObject::tr( "Spouse" ) ); 941 list.append( QObject::tr( "Spouse" ) );
942 list.append( QObject::tr( "Gender" ) ); 942 list.append( QObject::tr( "Gender" ) );
943 list.append( QObject::tr( "Birthday" ) ); 943 list.append( QObject::tr( "Birthday" ) );
944 list.append( QObject::tr( "Anniversary" ) ); 944 list.append( QObject::tr( "Anniversary" ) );
945 list.append( QObject::tr( "Nickname" ) ); 945 list.append( QObject::tr( "Nickname" ) );
946 list.append( QObject::tr( "Children" ) ); 946 list.append( QObject::tr( "Children" ) );
947 947
948 list.append( QObject::tr( "Notes" ) ); 948 list.append( QObject::tr( "Notes" ) );
949 list.append( QObject::tr( "Groups" ) ); 949 list.append( QObject::tr( "Groups" ) );
950 950
951 return list; 951 return list;
952} 952}
953 953
954/*! 954/*!
955 \internal
956 Returns an untranslated list of field names for a contact.
957*/
958QStringList OContact::untrfields()
959{
960 QStringList list;
961
962 list.append( "Name Title" );
963 list.append( "First Name" );
964 list.append( "Middle Name" );
965 list.append( "Last Name" );
966 list.append( "Suffix" );
967 list.append( "File As" );
968
969 list.append( "Job Title" );
970 list.append( "Department" );
971 list.append( "Company" );
972 list.append( "Business Phone" );
973 list.append( "Business Fax" );
974 list.append( "Business Mobile" );
975
976 list.append( "Default Email" );
977 list.append( "Emails" );
978
979 list.append( "Home Phone" );
980 list.append( "Home Fax" );
981 list.append( "Home Mobile" );
982
983 list.append( "Business Street" );
984 list.append( "Business City" );
985 list.append( "Business State" );
986 list.append( "Business Zip" );
987 list.append( "Business Country" );
988 list.append( "Business Pager" );
989 list.append( "Business WebPage" );
990
991 list.append( "Office" );
992 list.append( "Profession" );
993 list.append( "Assistant" );
994 list.append( "Manager" );
995
996 list.append( "Home Street" );
997 list.append( "Home City" );
998 list.append( "Home State" );
999 list.append( "Home Zip" );
1000 list.append( "Home Country" );
1001 list.append( "Home Web Page" );
1002
1003 list.append( "Spouse" );
1004 list.append( "Gender" );
1005 list.append( "Birthday" );
1006 list.append( "Anniversary" );
1007 list.append( "Nickname" );
1008 list.append( "Children" );
1009
1010 list.append( "Notes" );
1011 list.append( "Groups" );
1012
1013 return list;
1014}
1015
1016/*!
955 Sets the list of email address for contact to those contained in \a str. 1017 Sets the list of email address for contact to those contained in \a str.
956 Email address should be separated by ';'s. 1018 Email address should be separated by ';'s.
957*/ 1019*/
958void OContact::setEmails( const QString &str ) 1020void OContact::setEmails( const QString &str )
959{ 1021{
960 replace( Qtopia::Emails, str ); 1022 replace( Qtopia::Emails, str );
961 if ( str.isEmpty() ) 1023 if ( str.isEmpty() )
962 setDefaultEmail( QString::null ); 1024 setDefaultEmail( QString::null );
963} 1025}
964 1026
965/*! 1027/*!
966 Sets the list of children for the contact to those contained in \a str. 1028 Sets the list of children for the contact to those contained in \a str.
967*/ 1029*/
968void OContact::setChildren( const QString &str ) 1030void OContact::setChildren( const QString &str )
969{ 1031{
970 replace( Qtopia::Children, str ); 1032 replace( Qtopia::Children, str );
971} 1033}
972 1034
973// vcard conversion code 1035// vcard conversion code
974/*! 1036/*!
975 \internal 1037 \internal
976*/ 1038*/
977static inline VObject *safeAddPropValue( VObject *o, const char *prop, const QString &value ) 1039static inline VObject *safeAddPropValue( VObject *o, const char *prop, const QString &value )
978{ 1040{
979 VObject *ret = 0; 1041 VObject *ret = 0;
980 if ( o && !value.isEmpty() ) 1042 if ( o && !value.isEmpty() )
981 ret = addPropValue( o, prop, value.latin1() ); 1043 ret = addPropValue( o, prop, value.latin1() );
982 return ret; 1044 return ret;
983} 1045}
984 1046
985/*! 1047/*!
986 \internal 1048 \internal
987*/ 1049*/
988static inline VObject *safeAddProp( VObject *o, const char *prop) 1050static inline VObject *safeAddProp( VObject *o, const char *prop)
989{ 1051{
990 VObject *ret = 0; 1052 VObject *ret = 0;
991 if ( o ) 1053 if ( o )
992 ret = addProp( o, prop ); 1054 ret = addProp( o, prop );
993 return ret; 1055 return ret;
994} 1056}
995 1057
996/*! 1058/*!
997 \internal 1059 \internal
998*/ 1060*/
999static VObject *createVObject( const OContact &c ) 1061static VObject *createVObject( const OContact &c )
1000{ 1062{
1001 VObject *vcard = newVObject( VCCardProp ); 1063 VObject *vcard = newVObject( VCCardProp );
1002 safeAddPropValue( vcard, VCVersionProp, "2.1" ); 1064 safeAddPropValue( vcard, VCVersionProp, "2.1" );
1003 safeAddPropValue( vcard, VCLastRevisedProp, TimeConversion::toISO8601( QDateTime::currentDateTime() ) ); 1065 safeAddPropValue( vcard, VCLastRevisedProp, TimeConversion::toISO8601( QDateTime::currentDateTime() ) );
1004 safeAddPropValue( vcard, VCUniqueStringProp, QString::number(c.uid()) ); 1066 safeAddPropValue( vcard, VCUniqueStringProp, QString::number(c.uid()) );
1005 1067
1006 // full name 1068 // full name
1007 safeAddPropValue( vcard, VCFullNameProp, c.fullName() ); 1069 safeAddPropValue( vcard, VCFullNameProp, c.fullName() );
1008 1070
1009 // name properties 1071 // name properties
1010 VObject *name = safeAddProp( vcard, VCNameProp ); 1072 VObject *name = safeAddProp( vcard, VCNameProp );
1011 safeAddPropValue( name, VCFamilyNameProp, c.lastName() ); 1073 safeAddPropValue( name, VCFamilyNameProp, c.lastName() );
1012 safeAddPropValue( name, VCGivenNameProp, c.firstName() ); 1074 safeAddPropValue( name, VCGivenNameProp, c.firstName() );
1013 safeAddPropValue( name, VCAdditionalNamesProp, c.middleName() ); 1075 safeAddPropValue( name, VCAdditionalNamesProp, c.middleName() );
1014 safeAddPropValue( name, VCNamePrefixesProp, c.title() ); 1076 safeAddPropValue( name, VCNamePrefixesProp, c.title() );
1015 safeAddPropValue( name, VCNameSuffixesProp, c.suffix() ); 1077 safeAddPropValue( name, VCNameSuffixesProp, c.suffix() );
1016 1078
1017 // home properties 1079 // home properties
1018 VObject *home_adr= safeAddProp( vcard, VCAdrProp ); 1080 VObject *home_adr= safeAddProp( vcard, VCAdrProp );
1019 safeAddProp( home_adr, VCHomeProp ); 1081 safeAddProp( home_adr, VCHomeProp );
1020 safeAddPropValue( home_adr, VCStreetAddressProp, c.homeStreet() ); 1082 safeAddPropValue( home_adr, VCStreetAddressProp, c.homeStreet() );
1021 safeAddPropValue( home_adr, VCCityProp, c.homeCity() ); 1083 safeAddPropValue( home_adr, VCCityProp, c.homeCity() );
1022 safeAddPropValue( home_adr, VCRegionProp, c.homeState() ); 1084 safeAddPropValue( home_adr, VCRegionProp, c.homeState() );
1023 safeAddPropValue( home_adr, VCPostalCodeProp, c.homeZip() ); 1085 safeAddPropValue( home_adr, VCPostalCodeProp, c.homeZip() );
1024 safeAddPropValue( home_adr, VCCountryNameProp, c.homeCountry() ); 1086 safeAddPropValue( home_adr, VCCountryNameProp, c.homeCountry() );
1025 1087
1026 VObject *home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homePhone() ); 1088 VObject *home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homePhone() );
1027 safeAddProp( home_phone, VCHomeProp ); 1089 safeAddProp( home_phone, VCHomeProp );
1028 home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homeMobile() ); 1090 home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homeMobile() );
1029 safeAddProp( home_phone, VCHomeProp ); 1091 safeAddProp( home_phone, VCHomeProp );
1030 safeAddProp( home_phone, VCCellularProp ); 1092 safeAddProp( home_phone, VCCellularProp );
1031 home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homeFax() ); 1093 home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homeFax() );
1032 safeAddProp( home_phone, VCHomeProp ); 1094 safeAddProp( home_phone, VCHomeProp );
1033 safeAddProp( home_phone, VCFaxProp ); 1095 safeAddProp( home_phone, VCFaxProp );
1034 1096
1035 VObject *url = safeAddPropValue( vcard, VCURLProp, c.homeWebpage() ); 1097 VObject *url = safeAddPropValue( vcard, VCURLProp, c.homeWebpage() );
1036 safeAddProp( url, VCHomeProp ); 1098 safeAddProp( url, VCHomeProp );
1037 1099
1038 // work properties 1100 // work properties
1039 VObject *work_adr= safeAddProp( vcard, VCAdrProp ); 1101 VObject *work_adr= safeAddProp( vcard, VCAdrProp );
1040 safeAddProp( work_adr, VCWorkProp ); 1102 safeAddProp( work_adr, VCWorkProp );
1041 safeAddPropValue( work_adr, VCStreetAddressProp, c.businessStreet() ); 1103 safeAddPropValue( work_adr, VCStreetAddressProp, c.businessStreet() );
1042 safeAddPropValue( work_adr, VCCityProp, c.businessCity() ); 1104 safeAddPropValue( work_adr, VCCityProp, c.businessCity() );
1043 safeAddPropValue( work_adr, VCRegionProp, c.businessState() ); 1105 safeAddPropValue( work_adr, VCRegionProp, c.businessState() );
1044 safeAddPropValue( work_adr, VCPostalCodeProp, c.businessZip() ); 1106 safeAddPropValue( work_adr, VCPostalCodeProp, c.businessZip() );
1045 safeAddPropValue( work_adr, VCCountryNameProp, c.businessCountry() ); 1107 safeAddPropValue( work_adr, VCCountryNameProp, c.businessCountry() );
1046 1108
1047 VObject *work_phone = safeAddPropValue( vcard, VCTelephoneProp, c.businessPhone() ); 1109 VObject *work_phone = safeAddPropValue( vcard, VCTelephoneProp, c.businessPhone() );
1048 safeAddProp( work_phone, VCWorkProp ); 1110 safeAddProp( work_phone, VCWorkProp );
1049 work_phone = safeAddPropValue( vcard, VCTelephoneProp, c.businessMobile() ); 1111 work_phone = safeAddPropValue( vcard, VCTelephoneProp, c.businessMobile() );
1050 safeAddProp( work_phone, VCWorkProp ); 1112 safeAddProp( work_phone, VCWorkProp );
diff --git a/libopie/pim/ocontact.h b/libopie/pim/ocontact.h
index 756c87d..f916cf2 100644
--- a/libopie/pim/ocontact.h
+++ b/libopie/pim/ocontact.h
@@ -97,192 +97,193 @@ public:
97 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); } 97 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); }
98 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); } 98 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); }
99 void setBirthday( const QString &v ) { replace( Qtopia::Birthday, v ); } 99 void setBirthday( const QString &v ) { replace( Qtopia::Birthday, v ); }
100 void setAnniversary( const QString &v ) { replace( Qtopia::Anniversary, v ); } 100 void setAnniversary( const QString &v ) { replace( Qtopia::Anniversary, v ); }
101 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); } 101 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); }
102 void setChildren( const QString &v ); 102 void setChildren( const QString &v );
103 103
104 // other 104 // other
105 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); } 105 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); }
106 106
107 bool match( const QString &regexp ) const; 107 bool match( const QString &regexp ) const;
108 108
109// DON'T ATTEMPT TO USE THIS 109// DON'T ATTEMPT TO USE THIS
110#ifdef QTOPIA_INTERNAL_CONTACT_MRE 110#ifdef QTOPIA_INTERNAL_CONTACT_MRE
111 bool match( const QRegExp &regexp ) const; 111 bool match( const QRegExp &regexp ) const;
112#endif 112#endif
113 113
114// // custom 114// // custom
115// void setCustomField( const QString &key, const QString &v ) 115// void setCustomField( const QString &key, const QString &v )
116// { replace(Custom- + key, v ); } 116// { replace(Custom- + key, v ); }
117 117
118 // name 118 // name
119 QString fullName() const; 119 QString fullName() const;
120 QString title() const { return find( Qtopia::Title ); } 120 QString title() const { return find( Qtopia::Title ); }
121 QString firstName() const { return find( Qtopia::FirstName ); } 121 QString firstName() const { return find( Qtopia::FirstName ); }
122 QString middleName() const { return find( Qtopia::MiddleName ); } 122 QString middleName() const { return find( Qtopia::MiddleName ); }
123 QString lastName() const { return find( Qtopia::LastName ); } 123 QString lastName() const { return find( Qtopia::LastName ); }
124 QString suffix() const { return find( Qtopia::Suffix ); } 124 QString suffix() const { return find( Qtopia::Suffix ); }
125 QString fileAs() const { return find( Qtopia::FileAs ); } 125 QString fileAs() const { return find( Qtopia::FileAs ); }
126 126
127 // email 127 // email
128 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); } 128 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); }
129 QStringList emailList() const; 129 QStringList emailList() const;
130 130
131 // home 131 // home
132 QString homeStreet() const { return find( Qtopia::HomeStreet ); } 132 QString homeStreet() const { return find( Qtopia::HomeStreet ); }
133 QString homeCity() const { return find( Qtopia::HomeCity ); } 133 QString homeCity() const { return find( Qtopia::HomeCity ); }
134 QString homeState() const { return find( Qtopia::HomeState ); } 134 QString homeState() const { return find( Qtopia::HomeState ); }
135 QString homeZip() const { return find( Qtopia::HomeZip ); } 135 QString homeZip() const { return find( Qtopia::HomeZip ); }
136 QString homeCountry() const { return find( Qtopia::HomeCountry ); } 136 QString homeCountry() const { return find( Qtopia::HomeCountry ); }
137 QString homePhone() const { return find( Qtopia::HomePhone ); } 137 QString homePhone() const { return find( Qtopia::HomePhone ); }
138 QString homeFax() const { return find( Qtopia::HomeFax ); } 138 QString homeFax() const { return find( Qtopia::HomeFax ); }
139 QString homeMobile() const { return find( Qtopia::HomeMobile ); } 139 QString homeMobile() const { return find( Qtopia::HomeMobile ); }
140 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); } 140 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); }
141 /** Multi line string containing all non-empty address info in the form 141 /** Multi line string containing all non-empty address info in the form
142 * Street 142 * Street
143 * City, State Zip 143 * City, State Zip
144 * Country 144 * Country
145 */ 145 */
146 QString displayHomeAddress() const; 146 QString displayHomeAddress() const;
147 147
148 // business 148 // business
149 QString company() const { return find( Qtopia::Company ); } 149 QString company() const { return find( Qtopia::Company ); }
150 QString businessStreet() const { return find( Qtopia::BusinessStreet ); } 150 QString businessStreet() const { return find( Qtopia::BusinessStreet ); }
151 QString businessCity() const { return find( Qtopia::BusinessCity ); } 151 QString businessCity() const { return find( Qtopia::BusinessCity ); }
152 QString businessState() const { return find( Qtopia::BusinessState ); } 152 QString businessState() const { return find( Qtopia::BusinessState ); }
153 QString businessZip() const { return find( Qtopia::BusinessZip ); } 153 QString businessZip() const { return find( Qtopia::BusinessZip ); }
154 QString businessCountry() const { return find( Qtopia::BusinessCountry ); } 154 QString businessCountry() const { return find( Qtopia::BusinessCountry ); }
155 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); } 155 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); }
156 QString jobTitle() const { return find( Qtopia::JobTitle ); } 156 QString jobTitle() const { return find( Qtopia::JobTitle ); }
157 QString department() const { return find( Qtopia::Department ); } 157 QString department() const { return find( Qtopia::Department ); }
158 QString office() const { return find( Qtopia::Office ); } 158 QString office() const { return find( Qtopia::Office ); }
159 QString businessPhone() const { return find( Qtopia::BusinessPhone ); } 159 QString businessPhone() const { return find( Qtopia::BusinessPhone ); }
160 QString businessFax() const { return find( Qtopia::BusinessFax ); } 160 QString businessFax() const { return find( Qtopia::BusinessFax ); }
161 QString businessMobile() const { return find( Qtopia::BusinessMobile ); } 161 QString businessMobile() const { return find( Qtopia::BusinessMobile ); }
162 QString businessPager() const { return find( Qtopia::BusinessPager ); } 162 QString businessPager() const { return find( Qtopia::BusinessPager ); }
163 QString profession() const { return find( Qtopia::Profession ); } 163 QString profession() const { return find( Qtopia::Profession ); }
164 QString assistant() const { return find( Qtopia::Assistant ); } 164 QString assistant() const { return find( Qtopia::Assistant ); }
165 QString manager() const { return find( Qtopia::Manager ); } 165 QString manager() const { return find( Qtopia::Manager ); }
166 /** Multi line string containing all non-empty address info in the form 166 /** Multi line string containing all non-empty address info in the form
167 * Street 167 * Street
168 * City, State Zip 168 * City, State Zip
169 * Country 169 * Country
170 */ 170 */
171 QString displayBusinessAddress() const; 171 QString displayBusinessAddress() const;
172 172
173 //personal 173 //personal
174 QString spouse() const { return find( Qtopia::Spouse ); } 174 QString spouse() const { return find( Qtopia::Spouse ); }
175 QString gender() const { return find( Qtopia::Gender ); } 175 QString gender() const { return find( Qtopia::Gender ); }
176 QString birthday() const { return find( Qtopia::Birthday ); } 176 QString birthday() const { return find( Qtopia::Birthday ); }
177 QString anniversary() const { return find( Qtopia::Anniversary ); } 177 QString anniversary() const { return find( Qtopia::Anniversary ); }
178 QString nickname() const { return find( Qtopia::Nickname ); } 178 QString nickname() const { return find( Qtopia::Nickname ); }
179 QString children() const { return find( Qtopia::Children ); } 179 QString children() const { return find( Qtopia::Children ); }
180 QStringList childrenList() const; 180 QStringList childrenList() const;
181 181
182 // other 182 // other
183 QString notes() const { return find( Qtopia::Notes ); } 183 QString notes() const { return find( Qtopia::Notes ); }
184 QString groups() const { return find( Qtopia::Groups ); } 184 QString groups() const { return find( Qtopia::Groups ); }
185 QStringList groupList() const; 185 QStringList groupList() const;
186 186
187// // custom 187// // custom
188// const QString &customField( const QString &key ) 188// const QString &customField( const QString &key )
189// { return find( Custom- + key ); } 189// { return find( Custom- + key ); }
190 190
191 static QStringList fields(); 191 static QStringList fields();
192 static QStringList trfields(); 192 static QStringList trfields();
193 static QStringList untrfields();
193 194
194 QString toRichText() const; 195 QString toRichText() const;
195 QMap<int, QString> toMap() const; 196 QMap<int, QString> toMap() const;
196 QString field( int key ) const { return find( key ); } 197 QString field( int key ) const { return find( key ); }
197 198
198 199
199 // journaling... 200 // journaling...
200 void saveJournal( journal_action action, const QString &key = QString::null ); 201 void saveJournal( journal_action action, const QString &key = QString::null );
201 void save( QString &buf ) const; 202 void save( QString &buf ) const;
202 203
203 void setUid( int i ) 204 void setUid( int i )
204{ Record::setUid(i); replace( Qtopia::AddressUid , QString::number(i)); } 205{ Record::setUid(i); replace( Qtopia::AddressUid , QString::number(i)); }
205 206
206 QString toShortText()const; 207 QString toShortText()const;
207 QString OContact::type()const; 208 QString OContact::type()const;
208 QMap<QString,QString> OContact::toExtraMap() const; 209 QMap<QString,QString> OContact::toExtraMap() const;
209 class QString OContact::recordField(int) const; 210 class QString OContact::recordField(int) const;
210 211
211 // Why private ? (eilers,se) 212 // Why private ? (eilers,se)
212 QString emailSeparator() const { return " "; } 213 QString emailSeparator() const { return " "; }
213 // the emails should be seperated by a comma 214 // the emails should be seperated by a comma
214 void setEmails( const QString &v ); 215 void setEmails( const QString &v );
215 QString emails() const { return find( Qtopia::Emails ); } 216 QString emails() const { return find( Qtopia::Emails ); }
216 217
217 218
218private: 219private:
219 friend class AbEditor; 220 friend class AbEditor;
220 friend class AbTable; 221 friend class AbTable;
221 friend class AddressBookAccessPrivate; 222 friend class AddressBookAccessPrivate;
222 friend class XMLIO; 223 friend class XMLIO;
223 224
224 225
225 void insert( int key, const QString &value ); 226 void insert( int key, const QString &value );
226 void replace( int key, const QString &value ); 227 void replace( int key, const QString &value );
227 QString find( int key ) const; 228 QString find( int key ) const;
228 229
229 QString displayAddress( const QString &street, 230 QString displayAddress( const QString &street,
230 const QString &city, 231 const QString &city,
231 const QString &state, 232 const QString &state,
232 const QString &zip, 233 const QString &zip,
233 const QString &country ) const; 234 const QString &country ) const;
234 235
235 Qtopia::UidGen &uidGen() { return sUidGen; } 236 Qtopia::UidGen &uidGen() { return sUidGen; }
236 static Qtopia::UidGen sUidGen; 237 static Qtopia::UidGen sUidGen;
237 QMap<int, QString> mMap; 238 QMap<int, QString> mMap;
238 ContactPrivate *d; 239 ContactPrivate *d;
239}; 240};
240 241
241// these methods are inlined to keep binary compatability with Qtopia 1.5 242// these methods are inlined to keep binary compatability with Qtopia 1.5
242inline void OContact::insertEmail( const QString &v ) 243inline void OContact::insertEmail( const QString &v )
243{ 244{
244 //qDebug("insertEmail %s", v.latin1()); 245 //qDebug("insertEmail %s", v.latin1());
245 QString e = v.simplifyWhiteSpace(); 246 QString e = v.simplifyWhiteSpace();
246 QString def = defaultEmail(); 247 QString def = defaultEmail();
247 248
248 // if no default, set it as the default email and don't insert 249 // if no default, set it as the default email and don't insert
249 if ( def.isEmpty() ) { 250 if ( def.isEmpty() ) {
250 setDefaultEmail( e ); // will insert into the list for us 251 setDefaultEmail( e ); // will insert into the list for us
251 return; 252 return;
252 } 253 }
253 254
254 // otherwise, insert assuming doesn't already exist 255 // otherwise, insert assuming doesn't already exist
255 QString emailsStr = find( Qtopia::Emails ); 256 QString emailsStr = find( Qtopia::Emails );
256 if ( emailsStr.contains( e )) 257 if ( emailsStr.contains( e ))
257 return; 258 return;
258 if ( !emailsStr.isEmpty() ) 259 if ( !emailsStr.isEmpty() )
259 emailsStr += emailSeparator(); 260 emailsStr += emailSeparator();
260 emailsStr += e; 261 emailsStr += e;
261 replace( Qtopia::Emails, emailsStr ); 262 replace( Qtopia::Emails, emailsStr );
262} 263}
263 264
264inline void OContact::removeEmail( const QString &v ) 265inline void OContact::removeEmail( const QString &v )
265{ 266{
266 QString e = v.simplifyWhiteSpace(); 267 QString e = v.simplifyWhiteSpace();
267 QString def = defaultEmail(); 268 QString def = defaultEmail();
268 QString emailsStr = find( Qtopia::Emails ); 269 QString emailsStr = find( Qtopia::Emails );
269 QStringList emails = emailList(); 270 QStringList emails = emailList();
270 271
271 // otherwise, must first contain it 272 // otherwise, must first contain it
272 if ( !emailsStr.contains( e ) ) 273 if ( !emailsStr.contains( e ) )
273 return; 274 return;
274 275
275 // remove it 276 // remove it
276 //qDebug(" removing email from list %s", e.latin1()); 277 //qDebug(" removing email from list %s", e.latin1());
277 emails.remove( e ); 278 emails.remove( e );
278 // reset the string 279 // reset the string
279 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator 280 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator
280 replace( Qtopia::Emails, emailsStr ); 281 replace( Qtopia::Emails, emailsStr );
281 282
282 // if default, then replace the default email with the first one 283 // if default, then replace the default email with the first one
283 if ( def == e ) { 284 if ( def == e ) {
284 //qDebug("removeEmail is default; setting new default"); 285 //qDebug("removeEmail is default; setting new default");
285 if ( !emails.count() ) 286 if ( !emails.count() )
286 clearEmails(); 287 clearEmails();
287 else // setDefaultEmail will remove e from the list 288 else // setDefaultEmail will remove e from the list
288 setDefaultEmail( emails.first() ); 289 setDefaultEmail( emails.first() );
diff --git a/libopie2/opiepim/ocontact.cpp b/libopie2/opiepim/ocontact.cpp
index a63753e..6f648ac 100644
--- a/libopie2/opiepim/ocontact.cpp
+++ b/libopie2/opiepim/ocontact.cpp
@@ -859,192 +859,254 @@ QStringList OContact::fields()
859 list.append( "BusinessStreet" ); 859 list.append( "BusinessStreet" );
860 list.append( "BusinessCity" ); 860 list.append( "BusinessCity" );
861 list.append( "BusinessState" ); 861 list.append( "BusinessState" );
862 list.append( "BusinessZip" ); 862 list.append( "BusinessZip" );
863 list.append( "BusinessCountry" ); 863 list.append( "BusinessCountry" );
864 list.append( "BusinessPager" ); 864 list.append( "BusinessPager" );
865 list.append( "BusinessWebPage" ); 865 list.append( "BusinessWebPage" );
866 866
867 list.append( "Office" ); 867 list.append( "Office" );
868 list.append( "Profession" ); 868 list.append( "Profession" );
869 list.append( "Assistant" ); 869 list.append( "Assistant" );
870 list.append( "Manager" ); 870 list.append( "Manager" );
871 871
872 list.append( "HomeStreet" ); 872 list.append( "HomeStreet" );
873 list.append( "HomeCity" ); 873 list.append( "HomeCity" );
874 list.append( "HomeState" ); 874 list.append( "HomeState" );
875 list.append( "HomeZip" ); 875 list.append( "HomeZip" );
876 list.append( "HomeCountry" ); 876 list.append( "HomeCountry" );
877 list.append( "HomeWebPage" ); 877 list.append( "HomeWebPage" );
878 878
879 list.append( "Spouse" ); 879 list.append( "Spouse" );
880 list.append( "Gender" ); 880 list.append( "Gender" );
881 list.append( "Birthday" ); 881 list.append( "Birthday" );
882 list.append( "Anniversary" ); 882 list.append( "Anniversary" );
883 list.append( "Nickname" ); 883 list.append( "Nickname" );
884 list.append( "Children" ); 884 list.append( "Children" );
885 885
886 list.append( "Notes" ); 886 list.append( "Notes" );
887 list.append( "Groups" ); 887 list.append( "Groups" );
888 888
889 return list; 889 return list;
890} 890}
891 891
892/*! 892/*!
893 \internal 893 \internal
894 Returns a translated list of field names for a contact. 894 Returns a translated list of field names for a contact.
895*/ 895*/
896QStringList OContact::trfields() 896QStringList OContact::trfields()
897{ 897{
898 QStringList list; 898 QStringList list;
899 899
900 list.append( QObject::tr( "Name Title") ); 900 list.append( QObject::tr( "Name Title") );
901 list.append( QObject::tr( "First Name" ) ); 901 list.append( QObject::tr( "First Name" ) );
902 list.append( QObject::tr( "Middle Name" ) ); 902 list.append( QObject::tr( "Middle Name" ) );
903 list.append( QObject::tr( "Last Name" ) ); 903 list.append( QObject::tr( "Last Name" ) );
904 list.append( QObject::tr( "Suffix" ) ); 904 list.append( QObject::tr( "Suffix" ) );
905 list.append( QObject::tr( "File As" ) ); 905 list.append( QObject::tr( "File As" ) );
906 906
907 list.append( QObject::tr( "Job Title" ) ); 907 list.append( QObject::tr( "Job Title" ) );
908 list.append( QObject::tr( "Department" ) ); 908 list.append( QObject::tr( "Department" ) );
909 list.append( QObject::tr( "Company" ) ); 909 list.append( QObject::tr( "Company" ) );
910 list.append( QObject::tr( "Business Phone" ) ); 910 list.append( QObject::tr( "Business Phone" ) );
911 list.append( QObject::tr( "Business Fax" ) ); 911 list.append( QObject::tr( "Business Fax" ) );
912 list.append( QObject::tr( "Business Mobile" ) ); 912 list.append( QObject::tr( "Business Mobile" ) );
913 913
914 list.append( QObject::tr( "Default Email" ) ); 914 list.append( QObject::tr( "Default Email" ) );
915 list.append( QObject::tr( "Emails" ) ); 915 list.append( QObject::tr( "Emails" ) );
916 916
917 list.append( QObject::tr( "Home Phone" ) ); 917 list.append( QObject::tr( "Home Phone" ) );
918 list.append( QObject::tr( "Home Fax" ) ); 918 list.append( QObject::tr( "Home Fax" ) );
919 list.append( QObject::tr( "Home Mobile" ) ); 919 list.append( QObject::tr( "Home Mobile" ) );
920 920
921 list.append( QObject::tr( "Business Street" ) ); 921 list.append( QObject::tr( "Business Street" ) );
922 list.append( QObject::tr( "Business City" ) ); 922 list.append( QObject::tr( "Business City" ) );
923 list.append( QObject::tr( "Business State" ) ); 923 list.append( QObject::tr( "Business State" ) );
924 list.append( QObject::tr( "Business Zip" ) ); 924 list.append( QObject::tr( "Business Zip" ) );
925 list.append( QObject::tr( "Business Country" ) ); 925 list.append( QObject::tr( "Business Country" ) );
926 list.append( QObject::tr( "Business Pager" ) ); 926 list.append( QObject::tr( "Business Pager" ) );
927 list.append( QObject::tr( "Business WebPage" ) ); 927 list.append( QObject::tr( "Business WebPage" ) );
928 928
929 list.append( QObject::tr( "Office" ) ); 929 list.append( QObject::tr( "Office" ) );
930 list.append( QObject::tr( "Profession" ) ); 930 list.append( QObject::tr( "Profession" ) );
931 list.append( QObject::tr( "Assistant" ) ); 931 list.append( QObject::tr( "Assistant" ) );
932 list.append( QObject::tr( "Manager" ) ); 932 list.append( QObject::tr( "Manager" ) );
933 933
934 list.append( QObject::tr( "Home Street" ) ); 934 list.append( QObject::tr( "Home Street" ) );
935 list.append( QObject::tr( "Home City" ) ); 935 list.append( QObject::tr( "Home City" ) );
936 list.append( QObject::tr( "Home State" ) ); 936 list.append( QObject::tr( "Home State" ) );
937 list.append( QObject::tr( "Home Zip" ) ); 937 list.append( QObject::tr( "Home Zip" ) );
938 list.append( QObject::tr( "Home Country" ) ); 938 list.append( QObject::tr( "Home Country" ) );
939 list.append( QObject::tr( "Home Web Page" ) ); 939 list.append( QObject::tr( "Home Web Page" ) );
940 940
941 list.append( QObject::tr( "Spouse" ) ); 941 list.append( QObject::tr( "Spouse" ) );
942 list.append( QObject::tr( "Gender" ) ); 942 list.append( QObject::tr( "Gender" ) );
943 list.append( QObject::tr( "Birthday" ) ); 943 list.append( QObject::tr( "Birthday" ) );
944 list.append( QObject::tr( "Anniversary" ) ); 944 list.append( QObject::tr( "Anniversary" ) );
945 list.append( QObject::tr( "Nickname" ) ); 945 list.append( QObject::tr( "Nickname" ) );
946 list.append( QObject::tr( "Children" ) ); 946 list.append( QObject::tr( "Children" ) );
947 947
948 list.append( QObject::tr( "Notes" ) ); 948 list.append( QObject::tr( "Notes" ) );
949 list.append( QObject::tr( "Groups" ) ); 949 list.append( QObject::tr( "Groups" ) );
950 950
951 return list; 951 return list;
952} 952}
953 953
954/*! 954/*!
955 \internal
956 Returns an untranslated list of field names for a contact.
957*/
958QStringList OContact::untrfields()
959{
960 QStringList list;
961
962 list.append( "Name Title" );
963 list.append( "First Name" );
964 list.append( "Middle Name" );
965 list.append( "Last Name" );
966 list.append( "Suffix" );
967 list.append( "File As" );
968
969 list.append( "Job Title" );
970 list.append( "Department" );
971 list.append( "Company" );
972 list.append( "Business Phone" );
973 list.append( "Business Fax" );
974 list.append( "Business Mobile" );
975
976 list.append( "Default Email" );
977 list.append( "Emails" );
978
979 list.append( "Home Phone" );
980 list.append( "Home Fax" );
981 list.append( "Home Mobile" );
982
983 list.append( "Business Street" );
984 list.append( "Business City" );
985 list.append( "Business State" );
986 list.append( "Business Zip" );
987 list.append( "Business Country" );
988 list.append( "Business Pager" );
989 list.append( "Business WebPage" );
990
991 list.append( "Office" );
992 list.append( "Profession" );
993 list.append( "Assistant" );
994 list.append( "Manager" );
995
996 list.append( "Home Street" );
997 list.append( "Home City" );
998 list.append( "Home State" );
999 list.append( "Home Zip" );
1000 list.append( "Home Country" );
1001 list.append( "Home Web Page" );
1002
1003 list.append( "Spouse" );
1004 list.append( "Gender" );
1005 list.append( "Birthday" );
1006 list.append( "Anniversary" );
1007 list.append( "Nickname" );
1008 list.append( "Children" );
1009
1010 list.append( "Notes" );
1011 list.append( "Groups" );
1012
1013 return list;
1014}
1015
1016/*!
955 Sets the list of email address for contact to those contained in \a str. 1017 Sets the list of email address for contact to those contained in \a str.
956 Email address should be separated by ';'s. 1018 Email address should be separated by ';'s.
957*/ 1019*/
958void OContact::setEmails( const QString &str ) 1020void OContact::setEmails( const QString &str )
959{ 1021{
960 replace( Qtopia::Emails, str ); 1022 replace( Qtopia::Emails, str );
961 if ( str.isEmpty() ) 1023 if ( str.isEmpty() )
962 setDefaultEmail( QString::null ); 1024 setDefaultEmail( QString::null );
963} 1025}
964 1026
965/*! 1027/*!
966 Sets the list of children for the contact to those contained in \a str. 1028 Sets the list of children for the contact to those contained in \a str.
967*/ 1029*/
968void OContact::setChildren( const QString &str ) 1030void OContact::setChildren( const QString &str )
969{ 1031{
970 replace( Qtopia::Children, str ); 1032 replace( Qtopia::Children, str );
971} 1033}
972 1034
973// vcard conversion code 1035// vcard conversion code
974/*! 1036/*!
975 \internal 1037 \internal
976*/ 1038*/
977static inline VObject *safeAddPropValue( VObject *o, const char *prop, const QString &value ) 1039static inline VObject *safeAddPropValue( VObject *o, const char *prop, const QString &value )
978{ 1040{
979 VObject *ret = 0; 1041 VObject *ret = 0;
980 if ( o && !value.isEmpty() ) 1042 if ( o && !value.isEmpty() )
981 ret = addPropValue( o, prop, value.latin1() ); 1043 ret = addPropValue( o, prop, value.latin1() );
982 return ret; 1044 return ret;
983} 1045}
984 1046
985/*! 1047/*!
986 \internal 1048 \internal
987*/ 1049*/
988static inline VObject *safeAddProp( VObject *o, const char *prop) 1050static inline VObject *safeAddProp( VObject *o, const char *prop)
989{ 1051{
990 VObject *ret = 0; 1052 VObject *ret = 0;
991 if ( o ) 1053 if ( o )
992 ret = addProp( o, prop ); 1054 ret = addProp( o, prop );
993 return ret; 1055 return ret;
994} 1056}
995 1057
996/*! 1058/*!
997 \internal 1059 \internal
998*/ 1060*/
999static VObject *createVObject( const OContact &c ) 1061static VObject *createVObject( const OContact &c )
1000{ 1062{
1001 VObject *vcard = newVObject( VCCardProp ); 1063 VObject *vcard = newVObject( VCCardProp );
1002 safeAddPropValue( vcard, VCVersionProp, "2.1" ); 1064 safeAddPropValue( vcard, VCVersionProp, "2.1" );
1003 safeAddPropValue( vcard, VCLastRevisedProp, TimeConversion::toISO8601( QDateTime::currentDateTime() ) ); 1065 safeAddPropValue( vcard, VCLastRevisedProp, TimeConversion::toISO8601( QDateTime::currentDateTime() ) );
1004 safeAddPropValue( vcard, VCUniqueStringProp, QString::number(c.uid()) ); 1066 safeAddPropValue( vcard, VCUniqueStringProp, QString::number(c.uid()) );
1005 1067
1006 // full name 1068 // full name
1007 safeAddPropValue( vcard, VCFullNameProp, c.fullName() ); 1069 safeAddPropValue( vcard, VCFullNameProp, c.fullName() );
1008 1070
1009 // name properties 1071 // name properties
1010 VObject *name = safeAddProp( vcard, VCNameProp ); 1072 VObject *name = safeAddProp( vcard, VCNameProp );
1011 safeAddPropValue( name, VCFamilyNameProp, c.lastName() ); 1073 safeAddPropValue( name, VCFamilyNameProp, c.lastName() );
1012 safeAddPropValue( name, VCGivenNameProp, c.firstName() ); 1074 safeAddPropValue( name, VCGivenNameProp, c.firstName() );
1013 safeAddPropValue( name, VCAdditionalNamesProp, c.middleName() ); 1075 safeAddPropValue( name, VCAdditionalNamesProp, c.middleName() );
1014 safeAddPropValue( name, VCNamePrefixesProp, c.title() ); 1076 safeAddPropValue( name, VCNamePrefixesProp, c.title() );
1015 safeAddPropValue( name, VCNameSuffixesProp, c.suffix() ); 1077 safeAddPropValue( name, VCNameSuffixesProp, c.suffix() );
1016 1078
1017 // home properties 1079 // home properties
1018 VObject *home_adr= safeAddProp( vcard, VCAdrProp ); 1080 VObject *home_adr= safeAddProp( vcard, VCAdrProp );
1019 safeAddProp( home_adr, VCHomeProp ); 1081 safeAddProp( home_adr, VCHomeProp );
1020 safeAddPropValue( home_adr, VCStreetAddressProp, c.homeStreet() ); 1082 safeAddPropValue( home_adr, VCStreetAddressProp, c.homeStreet() );
1021 safeAddPropValue( home_adr, VCCityProp, c.homeCity() ); 1083 safeAddPropValue( home_adr, VCCityProp, c.homeCity() );
1022 safeAddPropValue( home_adr, VCRegionProp, c.homeState() ); 1084 safeAddPropValue( home_adr, VCRegionProp, c.homeState() );
1023 safeAddPropValue( home_adr, VCPostalCodeProp, c.homeZip() ); 1085 safeAddPropValue( home_adr, VCPostalCodeProp, c.homeZip() );
1024 safeAddPropValue( home_adr, VCCountryNameProp, c.homeCountry() ); 1086 safeAddPropValue( home_adr, VCCountryNameProp, c.homeCountry() );
1025 1087
1026 VObject *home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homePhone() ); 1088 VObject *home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homePhone() );
1027 safeAddProp( home_phone, VCHomeProp ); 1089 safeAddProp( home_phone, VCHomeProp );
1028 home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homeMobile() ); 1090 home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homeMobile() );
1029 safeAddProp( home_phone, VCHomeProp ); 1091 safeAddProp( home_phone, VCHomeProp );
1030 safeAddProp( home_phone, VCCellularProp ); 1092 safeAddProp( home_phone, VCCellularProp );
1031 home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homeFax() ); 1093 home_phone = safeAddPropValue( vcard, VCTelephoneProp, c.homeFax() );
1032 safeAddProp( home_phone, VCHomeProp ); 1094 safeAddProp( home_phone, VCHomeProp );
1033 safeAddProp( home_phone, VCFaxProp ); 1095 safeAddProp( home_phone, VCFaxProp );
1034 1096
1035 VObject *url = safeAddPropValue( vcard, VCURLProp, c.homeWebpage() ); 1097 VObject *url = safeAddPropValue( vcard, VCURLProp, c.homeWebpage() );
1036 safeAddProp( url, VCHomeProp ); 1098 safeAddProp( url, VCHomeProp );
1037 1099
1038 // work properties 1100 // work properties
1039 VObject *work_adr= safeAddProp( vcard, VCAdrProp ); 1101 VObject *work_adr= safeAddProp( vcard, VCAdrProp );
1040 safeAddProp( work_adr, VCWorkProp ); 1102 safeAddProp( work_adr, VCWorkProp );
1041 safeAddPropValue( work_adr, VCStreetAddressProp, c.businessStreet() ); 1103 safeAddPropValue( work_adr, VCStreetAddressProp, c.businessStreet() );
1042 safeAddPropValue( work_adr, VCCityProp, c.businessCity() ); 1104 safeAddPropValue( work_adr, VCCityProp, c.businessCity() );
1043 safeAddPropValue( work_adr, VCRegionProp, c.businessState() ); 1105 safeAddPropValue( work_adr, VCRegionProp, c.businessState() );
1044 safeAddPropValue( work_adr, VCPostalCodeProp, c.businessZip() ); 1106 safeAddPropValue( work_adr, VCPostalCodeProp, c.businessZip() );
1045 safeAddPropValue( work_adr, VCCountryNameProp, c.businessCountry() ); 1107 safeAddPropValue( work_adr, VCCountryNameProp, c.businessCountry() );
1046 1108
1047 VObject *work_phone = safeAddPropValue( vcard, VCTelephoneProp, c.businessPhone() ); 1109 VObject *work_phone = safeAddPropValue( vcard, VCTelephoneProp, c.businessPhone() );
1048 safeAddProp( work_phone, VCWorkProp ); 1110 safeAddProp( work_phone, VCWorkProp );
1049 work_phone = safeAddPropValue( vcard, VCTelephoneProp, c.businessMobile() ); 1111 work_phone = safeAddPropValue( vcard, VCTelephoneProp, c.businessMobile() );
1050 safeAddProp( work_phone, VCWorkProp ); 1112 safeAddProp( work_phone, VCWorkProp );
diff --git a/libopie2/opiepim/ocontact.h b/libopie2/opiepim/ocontact.h
index 756c87d..f916cf2 100644
--- a/libopie2/opiepim/ocontact.h
+++ b/libopie2/opiepim/ocontact.h
@@ -97,192 +97,193 @@ public:
97 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); } 97 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); }
98 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); } 98 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); }
99 void setBirthday( const QString &v ) { replace( Qtopia::Birthday, v ); } 99 void setBirthday( const QString &v ) { replace( Qtopia::Birthday, v ); }
100 void setAnniversary( const QString &v ) { replace( Qtopia::Anniversary, v ); } 100 void setAnniversary( const QString &v ) { replace( Qtopia::Anniversary, v ); }
101 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); } 101 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); }
102 void setChildren( const QString &v ); 102 void setChildren( const QString &v );
103 103
104 // other 104 // other
105 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); } 105 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); }
106 106
107 bool match( const QString &regexp ) const; 107 bool match( const QString &regexp ) const;
108 108
109// DON'T ATTEMPT TO USE THIS 109// DON'T ATTEMPT TO USE THIS
110#ifdef QTOPIA_INTERNAL_CONTACT_MRE 110#ifdef QTOPIA_INTERNAL_CONTACT_MRE
111 bool match( const QRegExp &regexp ) const; 111 bool match( const QRegExp &regexp ) const;
112#endif 112#endif
113 113
114// // custom 114// // custom
115// void setCustomField( const QString &key, const QString &v ) 115// void setCustomField( const QString &key, const QString &v )
116// { replace(Custom- + key, v ); } 116// { replace(Custom- + key, v ); }
117 117
118 // name 118 // name
119 QString fullName() const; 119 QString fullName() const;
120 QString title() const { return find( Qtopia::Title ); } 120 QString title() const { return find( Qtopia::Title ); }
121 QString firstName() const { return find( Qtopia::FirstName ); } 121 QString firstName() const { return find( Qtopia::FirstName ); }
122 QString middleName() const { return find( Qtopia::MiddleName ); } 122 QString middleName() const { return find( Qtopia::MiddleName ); }
123 QString lastName() const { return find( Qtopia::LastName ); } 123 QString lastName() const { return find( Qtopia::LastName ); }
124 QString suffix() const { return find( Qtopia::Suffix ); } 124 QString suffix() const { return find( Qtopia::Suffix ); }
125 QString fileAs() const { return find( Qtopia::FileAs ); } 125 QString fileAs() const { return find( Qtopia::FileAs ); }
126 126
127 // email 127 // email
128 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); } 128 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); }
129 QStringList emailList() const; 129 QStringList emailList() const;
130 130
131 // home 131 // home
132 QString homeStreet() const { return find( Qtopia::HomeStreet ); } 132 QString homeStreet() const { return find( Qtopia::HomeStreet ); }
133 QString homeCity() const { return find( Qtopia::HomeCity ); } 133 QString homeCity() const { return find( Qtopia::HomeCity ); }
134 QString homeState() const { return find( Qtopia::HomeState ); } 134 QString homeState() const { return find( Qtopia::HomeState ); }
135 QString homeZip() const { return find( Qtopia::HomeZip ); } 135 QString homeZip() const { return find( Qtopia::HomeZip ); }
136 QString homeCountry() const { return find( Qtopia::HomeCountry ); } 136 QString homeCountry() const { return find( Qtopia::HomeCountry ); }
137 QString homePhone() const { return find( Qtopia::HomePhone ); } 137 QString homePhone() const { return find( Qtopia::HomePhone ); }
138 QString homeFax() const { return find( Qtopia::HomeFax ); } 138 QString homeFax() const { return find( Qtopia::HomeFax ); }
139 QString homeMobile() const { return find( Qtopia::HomeMobile ); } 139 QString homeMobile() const { return find( Qtopia::HomeMobile ); }
140 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); } 140 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); }
141 /** Multi line string containing all non-empty address info in the form 141 /** Multi line string containing all non-empty address info in the form
142 * Street 142 * Street
143 * City, State Zip 143 * City, State Zip
144 * Country 144 * Country
145 */ 145 */
146 QString displayHomeAddress() const; 146 QString displayHomeAddress() const;
147 147
148 // business 148 // business
149 QString company() const { return find( Qtopia::Company ); } 149 QString company() const { return find( Qtopia::Company ); }
150 QString businessStreet() const { return find( Qtopia::BusinessStreet ); } 150 QString businessStreet() const { return find( Qtopia::BusinessStreet ); }
151 QString businessCity() const { return find( Qtopia::BusinessCity ); } 151 QString businessCity() const { return find( Qtopia::BusinessCity ); }
152 QString businessState() const { return find( Qtopia::BusinessState ); } 152 QString businessState() const { return find( Qtopia::BusinessState ); }
153 QString businessZip() const { return find( Qtopia::BusinessZip ); } 153 QString businessZip() const { return find( Qtopia::BusinessZip ); }
154 QString businessCountry() const { return find( Qtopia::BusinessCountry ); } 154 QString businessCountry() const { return find( Qtopia::BusinessCountry ); }
155 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); } 155 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); }
156 QString jobTitle() const { return find( Qtopia::JobTitle ); } 156 QString jobTitle() const { return find( Qtopia::JobTitle ); }
157 QString department() const { return find( Qtopia::Department ); } 157 QString department() const { return find( Qtopia::Department ); }
158 QString office() const { return find( Qtopia::Office ); } 158 QString office() const { return find( Qtopia::Office ); }
159 QString businessPhone() const { return find( Qtopia::BusinessPhone ); } 159 QString businessPhone() const { return find( Qtopia::BusinessPhone ); }
160 QString businessFax() const { return find( Qtopia::BusinessFax ); } 160 QString businessFax() const { return find( Qtopia::BusinessFax ); }
161 QString businessMobile() const { return find( Qtopia::BusinessMobile ); } 161 QString businessMobile() const { return find( Qtopia::BusinessMobile ); }
162 QString businessPager() const { return find( Qtopia::BusinessPager ); } 162 QString businessPager() const { return find( Qtopia::BusinessPager ); }
163 QString profession() const { return find( Qtopia::Profession ); } 163 QString profession() const { return find( Qtopia::Profession ); }
164 QString assistant() const { return find( Qtopia::Assistant ); } 164 QString assistant() const { return find( Qtopia::Assistant ); }
165 QString manager() const { return find( Qtopia::Manager ); } 165 QString manager() const { return find( Qtopia::Manager ); }
166 /** Multi line string containing all non-empty address info in the form 166 /** Multi line string containing all non-empty address info in the form
167 * Street 167 * Street
168 * City, State Zip 168 * City, State Zip
169 * Country 169 * Country
170 */ 170 */
171 QString displayBusinessAddress() const; 171 QString displayBusinessAddress() const;
172 172
173 //personal 173 //personal
174 QString spouse() const { return find( Qtopia::Spouse ); } 174 QString spouse() const { return find( Qtopia::Spouse ); }
175 QString gender() const { return find( Qtopia::Gender ); } 175 QString gender() const { return find( Qtopia::Gender ); }
176 QString birthday() const { return find( Qtopia::Birthday ); } 176 QString birthday() const { return find( Qtopia::Birthday ); }
177 QString anniversary() const { return find( Qtopia::Anniversary ); } 177 QString anniversary() const { return find( Qtopia::Anniversary ); }
178 QString nickname() const { return find( Qtopia::Nickname ); } 178 QString nickname() const { return find( Qtopia::Nickname ); }
179 QString children() const { return find( Qtopia::Children ); } 179 QString children() const { return find( Qtopia::Children ); }
180 QStringList childrenList() const; 180 QStringList childrenList() const;
181 181
182 // other 182 // other
183 QString notes() const { return find( Qtopia::Notes ); } 183 QString notes() const { return find( Qtopia::Notes ); }
184 QString groups() const { return find( Qtopia::Groups ); } 184 QString groups() const { return find( Qtopia::Groups ); }
185 QStringList groupList() const; 185 QStringList groupList() const;
186 186
187// // custom 187// // custom
188// const QString &customField( const QString &key ) 188// const QString &customField( const QString &key )
189// { return find( Custom- + key ); } 189// { return find( Custom- + key ); }
190 190
191 static QStringList fields(); 191 static QStringList fields();
192 static QStringList trfields(); 192 static QStringList trfields();
193 static QStringList untrfields();
193 194
194 QString toRichText() const; 195 QString toRichText() const;
195 QMap<int, QString> toMap() const; 196 QMap<int, QString> toMap() const;
196 QString field( int key ) const { return find( key ); } 197 QString field( int key ) const { return find( key ); }
197 198
198 199
199 // journaling... 200 // journaling...
200 void saveJournal( journal_action action, const QString &key = QString::null ); 201 void saveJournal( journal_action action, const QString &key = QString::null );
201 void save( QString &buf ) const; 202 void save( QString &buf ) const;
202 203
203 void setUid( int i ) 204 void setUid( int i )
204{ Record::setUid(i); replace( Qtopia::AddressUid , QString::number(i)); } 205{ Record::setUid(i); replace( Qtopia::AddressUid , QString::number(i)); }
205 206
206 QString toShortText()const; 207 QString toShortText()const;
207 QString OContact::type()const; 208 QString OContact::type()const;
208 QMap<QString,QString> OContact::toExtraMap() const; 209 QMap<QString,QString> OContact::toExtraMap() const;
209 class QString OContact::recordField(int) const; 210 class QString OContact::recordField(int) const;
210 211
211 // Why private ? (eilers,se) 212 // Why private ? (eilers,se)
212 QString emailSeparator() const { return " "; } 213 QString emailSeparator() const { return " "; }
213 // the emails should be seperated by a comma 214 // the emails should be seperated by a comma
214 void setEmails( const QString &v ); 215 void setEmails( const QString &v );
215 QString emails() const { return find( Qtopia::Emails ); } 216 QString emails() const { return find( Qtopia::Emails ); }
216 217
217 218
218private: 219private:
219 friend class AbEditor; 220 friend class AbEditor;
220 friend class AbTable; 221 friend class AbTable;
221 friend class AddressBookAccessPrivate; 222 friend class AddressBookAccessPrivate;
222 friend class XMLIO; 223 friend class XMLIO;
223 224
224 225
225 void insert( int key, const QString &value ); 226 void insert( int key, const QString &value );
226 void replace( int key, const QString &value ); 227 void replace( int key, const QString &value );
227 QString find( int key ) const; 228 QString find( int key ) const;
228 229
229 QString displayAddress( const QString &street, 230 QString displayAddress( const QString &street,
230 const QString &city, 231 const QString &city,
231 const QString &state, 232 const QString &state,
232 const QString &zip, 233 const QString &zip,
233 const QString &country ) const; 234 const QString &country ) const;
234 235
235 Qtopia::UidGen &uidGen() { return sUidGen; } 236 Qtopia::UidGen &uidGen() { return sUidGen; }
236 static Qtopia::UidGen sUidGen; 237 static Qtopia::UidGen sUidGen;
237 QMap<int, QString> mMap; 238 QMap<int, QString> mMap;
238 ContactPrivate *d; 239 ContactPrivate *d;
239}; 240};
240 241
241// these methods are inlined to keep binary compatability with Qtopia 1.5 242// these methods are inlined to keep binary compatability with Qtopia 1.5
242inline void OContact::insertEmail( const QString &v ) 243inline void OContact::insertEmail( const QString &v )
243{ 244{
244 //qDebug("insertEmail %s", v.latin1()); 245 //qDebug("insertEmail %s", v.latin1());
245 QString e = v.simplifyWhiteSpace(); 246 QString e = v.simplifyWhiteSpace();
246 QString def = defaultEmail(); 247 QString def = defaultEmail();
247 248
248 // if no default, set it as the default email and don't insert 249 // if no default, set it as the default email and don't insert
249 if ( def.isEmpty() ) { 250 if ( def.isEmpty() ) {
250 setDefaultEmail( e ); // will insert into the list for us 251 setDefaultEmail( e ); // will insert into the list for us
251 return; 252 return;
252 } 253 }
253 254
254 // otherwise, insert assuming doesn't already exist 255 // otherwise, insert assuming doesn't already exist
255 QString emailsStr = find( Qtopia::Emails ); 256 QString emailsStr = find( Qtopia::Emails );
256 if ( emailsStr.contains( e )) 257 if ( emailsStr.contains( e ))
257 return; 258 return;
258 if ( !emailsStr.isEmpty() ) 259 if ( !emailsStr.isEmpty() )
259 emailsStr += emailSeparator(); 260 emailsStr += emailSeparator();
260 emailsStr += e; 261 emailsStr += e;
261 replace( Qtopia::Emails, emailsStr ); 262 replace( Qtopia::Emails, emailsStr );
262} 263}
263 264
264inline void OContact::removeEmail( const QString &v ) 265inline void OContact::removeEmail( const QString &v )
265{ 266{
266 QString e = v.simplifyWhiteSpace(); 267 QString e = v.simplifyWhiteSpace();
267 QString def = defaultEmail(); 268 QString def = defaultEmail();
268 QString emailsStr = find( Qtopia::Emails ); 269 QString emailsStr = find( Qtopia::Emails );
269 QStringList emails = emailList(); 270 QStringList emails = emailList();
270 271
271 // otherwise, must first contain it 272 // otherwise, must first contain it
272 if ( !emailsStr.contains( e ) ) 273 if ( !emailsStr.contains( e ) )
273 return; 274 return;
274 275
275 // remove it 276 // remove it
276 //qDebug(" removing email from list %s", e.latin1()); 277 //qDebug(" removing email from list %s", e.latin1());
277 emails.remove( e ); 278 emails.remove( e );
278 // reset the string 279 // reset the string
279 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator 280 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator
280 replace( Qtopia::Emails, emailsStr ); 281 replace( Qtopia::Emails, emailsStr );
281 282
282 // if default, then replace the default email with the first one 283 // if default, then replace the default email with the first one
283 if ( def == e ) { 284 if ( def == e ) {
284 //qDebug("removeEmail is default; setting new default"); 285 //qDebug("removeEmail is default; setting new default");
285 if ( !emails.count() ) 286 if ( !emails.count() )
286 clearEmails(); 287 clearEmails();
287 else // setDefaultEmail will remove e from the list 288 else // setDefaultEmail will remove e from the list
288 setDefaultEmail( emails.first() ); 289 setDefaultEmail( emails.first() );