00001 /* 00002 * Funambol is a mobile platform developed by Funambol, Inc. 00003 * Copyright (C) 2003 - 2007 Funambol, Inc. 00004 * 00005 * This program is free software; you can redistribute it and/or modify it under 00006 * the terms of the GNU Affero General Public License version 3 as published by 00007 * the Free Software Foundation with the addition of the following permission 00008 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED 00009 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE 00010 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. 00011 * 00012 * This program is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00014 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 00015 * details. 00016 * 00017 * You should have received a copy of the GNU Affero General Public License 00018 * along with this program; if not, see http://www.gnu.org/licenses or write to 00019 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 00020 * MA 02110-1301 USA. 00021 * 00022 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite 00023 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com. 00024 * 00025 * The interactive user interfaces in modified source and object code versions 00026 * of this program must display Appropriate Legal Notices, as required under 00027 * Section 5 of the GNU Affero General Public License version 3. 00028 * 00029 * In accordance with Section 7(b) of the GNU Affero General Public License 00030 * version 3, these Appropriate Legal Notices must retain the display of the 00031 * "Powered by Funambol" logo. If the display of the logo is not reasonably 00032 * feasible for technical reasons, the Appropriate Legal Notices must display 00033 * the words "Powered by Funambol". 00034 */ 00035 00036 00037 #ifndef INCL_PIM_BUSINESS_DETAIL 00038 #define INCL_PIM_BUSINESS_DETAIL 00039 /** @cond DEV */ 00040 00041 #include "base/fscapi.h" 00042 #include "base/util/ArrayList.h" 00043 #include "vocl/vCard/Address.h" 00044 #include "vocl/vCard/ContactDetail.h" 00045 #include "vocl/vCard/vCardProperty.h" 00046 #include "base/globalsdef.h" 00047 00048 BEGIN_NAMESPACE 00049 00050 typedef WCHAR* WSTRING; 00051 /** 00052 * An object containing the business details of a contact 00053 * 00054 */ 00055 class BusinessDetail { 00056 00057 // ------------------------------------------------------------ Private data 00058 private: 00059 Address* address; 00060 ContactDetail* contactDetail; 00061 vCardProperty* role; 00062 ArrayList* titles; 00063 vCardProperty* company; 00064 vCardProperty* department; 00065 vCardProperty* logo; 00066 WCHAR* manager; 00067 WCHAR* assistant; 00068 00069 /** 00070 * Sets the given property address to a clone of the given property. If 00071 * oldProperty is not null the pointed object is deleted. 00072 * 00073 * @param oldProperty Property** to the address of the property to set 00074 * @param newProperty the new property to set 00075 */ 00076 void set(vCardProperty** oldProperty, vCardProperty& newProperty); 00077 00078 00079 /** 00080 * Sets internal members releasing the currently allocated memory (if 00081 * any was allocate). The passed value is doplicated so that the caller 00082 * can independently release it. 00083 * 00084 * @param property the address of the pointer to set to the new 00085 * allocated memory 00086 * @param v the value to set into the property 00087 */ 00088 void set(WCHAR** p, WCHAR* v); 00089 00090 00091 // -------------------------------------------- Constructors and Destructors 00092 public: 00093 /** 00094 * Creates an empty list of business details 00095 */ 00096 BusinessDetail(); 00097 ~BusinessDetail(); 00098 00099 // ---------------------------------------------------------- Public methods 00100 00101 /** 00102 * Returns the role for this Businnes Detail 00103 * 00104 * @return the role for this Businnes Detail or NULL if not specified 00105 */ 00106 vCardProperty* getRole(); 00107 00108 /** 00109 * Sets the role. The given property is cloned, so that the 00110 * caller can independently release it as needed. 00111 */ 00112 void setRole(vCardProperty& p); 00113 00114 /** 00115 * Returns the title for this Businnes Detail 00116 * 00117 * @return the title for this Businnes Detail or NULL if not specified 00118 */ 00119 ArrayList* getTitles(); 00120 00121 /** 00122 * Sets the titles. The given titles are cloned, so that the 00123 * caller can independently release them as needed. 00124 */ 00125 void setTitles(WCHAR* titleArray[], int n); 00126 00127 /** 00128 * Returns the address for this Businnes Detail 00129 * 00130 * @return the address for this Businnes Detail or NULL if not specified 00131 */ 00132 Address* getAddress(); 00133 00134 /** 00135 * Sets the address. The given Address is cloned, so that the 00136 * caller can independently release it as needed. 00137 */ 00138 void setAddress(Address& a); 00139 00140 /** 00141 * Returns the company for this Businnes Detail 00142 * 00143 * @return the company for this Businnes Detail or NULL if not specified 00144 */ 00145 vCardProperty* getCompany(); 00146 00147 /** 00148 * Sets the company. The given Property is cloned, so that the 00149 * caller can independently release it as needed. 00150 */ 00151 void setCompany(vCardProperty& a); 00152 00153 /** 00154 * Returns the department for this Businnes Detail 00155 * 00156 * @return the department for this Businnes Detail or NULL if not specified 00157 */ 00158 vCardProperty* getDepartment(); 00159 00160 /** 00161 * Sets the department. The given Property is cloned, so that the 00162 * caller can independently release it as needed. 00163 */ 00164 void setDepartment(vCardProperty& a); 00165 00166 /** 00167 * Returns the contact details for this Businnes Detail 00168 * 00169 * @return the contact details for this Businnes Detail or NULL if not specified 00170 */ 00171 ContactDetail* getContactDetail(); 00172 00173 /** 00174 * Sets the contact detail. The given ContactDetail is cloned, so that the 00175 * caller can independently release it as needed. 00176 */ 00177 void setContactDetail(ContactDetail& a); 00178 00179 /** 00180 * Returns the manager for this Businnes Detail 00181 * 00182 * @param manager if not NULL, the value is copied in this buffer 00183 * @param size manager buffer size 00184 * 00185 * @return the internal buffer if manager was NULL, manager otherwise 00186 * 00187 */ 00188 WCHAR* getManager(WCHAR* manager = NULL, int size=-1); 00189 00190 /** 00191 * Returns the assistant for this Businnes Detail 00192 * 00193 * @param assistant if not NULL, the value is copied in this buffer 00194 * @param size assistant buffer size 00195 * 00196 * @return the internal buffer if manager was NULL, manager otherwise 00197 */ 00198 WCHAR* getAssistant(WCHAR* assistant = NULL, int size=-1); 00199 00200 /** 00201 * Returns the logo for this Businnes Detail 00202 * 00203 * @return the logo for this Businnes Detail or NULL if not specified 00204 */ 00205 vCardProperty* getLogo(); 00206 00207 /** 00208 * Sets the logo. The given Property is cloned, so that the 00209 * caller can independently release it as needed. 00210 */ 00211 void setLogo(vCardProperty& a); 00212 00213 /** 00214 * Sets the manager for this Businnes Detail 00215 * 00216 * @param manager the manager to set 00217 */ 00218 void setManager (WCHAR* manager); 00219 00220 /** 00221 * Sets the assistant for this Businnes Detail 00222 * 00223 * @param assistant the assistant to set 00224 */ 00225 void setAssistant (WCHAR* assistant); 00226 00227 /** 00228 * Creates and returns a new BusinessDetail object. The object is created with 00229 * the C++ new operator and must be deallocated with the delete C++ 00230 * operator 00231 */ 00232 BusinessDetail* clone(); 00233 00234 }; 00235 00236 00237 END_NAMESPACE 00238 00239 /** @endcond */ 00240 #endif