summaryrefslogtreecommitdiff
path: root/plugins/UserInfoEx/src/svc_contactinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/UserInfoEx/src/svc_contactinfo.cpp')
-rw-r--r--plugins/UserInfoEx/src/svc_contactinfo.cpp830
1 files changed, 400 insertions, 430 deletions
diff --git a/plugins/UserInfoEx/src/svc_contactinfo.cpp b/plugins/UserInfoEx/src/svc_contactinfo.cpp
index 43f1522e8e..0c39d10aec 100644
--- a/plugins/UserInfoEx/src/svc_contactinfo.cpp
+++ b/plugins/UserInfoEx/src/svc_contactinfo.cpp
@@ -31,60 +31,61 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
static BYTE gNameOrder[NAMEORDERCOUNT]; // name order as set up for contact list
/**
- * This function translates the DBVARIANT structure to an CONTACTINFO structure
- * and keeps the original data type.
- *
- * @warning ci MUST NOT be NULL and dbv must be freed by caller on failure!
- *
- * @param dbv - DBVARIANT to take the data for translation from
- * @param ci - CONTACTINFO structure to translate to
- *
- * @retval 0 - success
- * @retval 1 - failure
- **/
+* This function translates the DBVARIANT structure to an CONTACTINFO structure
+* and keeps the original data type.
+*
+* @warning ci MUST NOT be NULL and dbv must be freed by caller on failure!
+*
+* @param dbv - DBVARIANT to take the data for translation from
+* @param ci - CONTACTINFO structure to translate to
+*
+* @retval 0 - success
+* @retval 1 - failure
+**/
+
static FORCEINLINE INT_PTR VarToVarCI(const DBVARIANT *dbv, CONTACTINFO *ci)
{
switch (dbv->type) {
case DBVT_ASCIIZ:
- case DBVT_WCHAR: {
- // string translation is to be done by caller!!!
- ci->pszVal = dbv->ptszVal;
- ci->type = (ci->pszVal != NULL) ? CNFT_ASCIIZ : 0;
- } break;
-
- case DBVT_BYTE: {
- ci->type = CNFT_BYTE;
- ci->bVal = dbv->bVal;
- } break;
-
- case DBVT_WORD: {
- ci->type = CNFT_WORD;
- ci->wVal = dbv->wVal;
- } break;
-
- case DBVT_DWORD: {
- ci->type = CNFT_DWORD;
- ci->dVal = dbv->dVal;
- } break;
-
- default: {
- ci->type = 0;
- }
+ case DBVT_WCHAR:
+ // string translation is to be done by caller!!!
+ ci->pszVal = dbv->ptszVal;
+ ci->type = (ci->pszVal != NULL) ? CNFT_ASCIIZ : 0;
+ break;
+
+ case DBVT_BYTE:
+ ci->type = CNFT_BYTE;
+ ci->bVal = dbv->bVal;
+ break;
+
+ case DBVT_WORD:
+ ci->type = CNFT_WORD;
+ ci->wVal = dbv->wVal;
+ break;
+
+ case DBVT_DWORD:
+ ci->type = CNFT_DWORD;
+ ci->dVal = dbv->dVal;
+ break;
+
+ default:
+ ci->type = 0;
}
return ci->type == 0;
}
/**
- * This function tries to read a setting from the contact's protocol module.
- *
- * @warning ci MUST NOT be NULL!
- *
- * @param ci - pointer to a CONTACTINFO structure holding information about the contact
- * @param pszSetting - the desired setting to read
- *
- * @retval 0 - if setting was found and read correctly
- * @retval 1 - if any error occured or setting was not found
- **/
+* This function tries to read a setting from the contact's protocol module.
+*
+* @warning ci MUST NOT be NULL!
+*
+* @param ci - pointer to a CONTACTINFO structure holding information about the contact
+* @param pszSetting - the desired setting to read
+*
+* @retval 0 - if setting was found and read correctly
+* @retval 1 - if any error occured or setting was not found
+**/
+
static FORCEINLINE INT_PTR GCIVar(CONTACTINFO *ci, LPCSTR pszSetting)
{
DBVARIANT dbv;
@@ -95,26 +96,26 @@ static FORCEINLINE INT_PTR GCIVar(CONTACTINFO *ci, LPCSTR pszSetting)
db_free(&dbv);
}
}
- else {
- ci->type = 0;
- }
+ else ci->type = 0;
+
return ci->type == 0;
}
/**
- * This function tries to read a setting from a certain module (e.g. USERINFO) and if failed it
- * tries once again with the baseprotocol of the contact (e.g. ICQ). If nothing was found anyway
- * and this is an metacontact it can have a look into subcontacts to retrieve the information.
- * This depends on the settings the user did.
- *
- * @warning ci MUST NOT be NULL!
- *
- * @param ci - pointer to a CONTACTINFO structure holding information about the contact
- * @param pszSetting - the desired setting to read
- *
- * @retval 0 - if setting was found and read correctly
- * @retval 1 - if any error occured or setting was not found
- **/
+* This function tries to read a setting from a certain module (e.g. USERINFO) and if failed it
+* tries once again with the baseprotocol of the contact (e.g. ICQ). If nothing was found anyway
+* and this is an metacontact it can have a look into subcontacts to retrieve the information.
+* This depends on the settings the user did.
+*
+* @warning ci MUST NOT be NULL!
+*
+* @param ci - pointer to a CONTACTINFO structure holding information about the contact
+* @param pszSetting - the desired setting to read
+*
+* @retval 0 - if setting was found and read correctly
+* @retval 1 - if any error occured or setting was not found
+**/
+
static FORCEINLINE INT_PTR GCIVarEx(CONTACTINFO *ci, LPCSTR pszSetting)
{
DBVARIANT dbv;
@@ -125,26 +126,26 @@ static FORCEINLINE INT_PTR GCIVarEx(CONTACTINFO *ci, LPCSTR pszSetting)
db_free(&dbv);
}
}
- else {
- ci->type = 0;
- }
+ else ci->type = 0;
+
return ci->type == 0;
}
/**
- * This function tries to read a Language from a certain module (e.g. USERINFO) and if failed it
- * tries once again with the baseprotocol of the contact (e.g. ICQ). If nothing was found anyway
- * and this is an metacontact it can have a look into subcontacts to retrieve the information.
- * This depends on the settings the user did.
- *
- * @warning ci MUST NOT be NULL!
- *
- * @param ci - pointer to a CONTACTINFO structure holding information about the contact
- * @param pszSetting - the desired setting to read
- *
- * @retval 0 - if setting was found and read correctly
- * @retval 1 - if any error occured or setting was not found
- **/
+* This function tries to read a Language from a certain module (e.g. USERINFO) and if failed it
+* tries once again with the baseprotocol of the contact (e.g. ICQ). If nothing was found anyway
+* and this is an metacontact it can have a look into subcontacts to retrieve the information.
+* This depends on the settings the user did.
+*
+* @warning ci MUST NOT be NULL!
+*
+* @param ci - pointer to a CONTACTINFO structure holding information about the contact
+* @param pszSetting - the desired setting to read
+*
+* @retval 0 - if setting was found and read correctly
+* @retval 1 - if any error occured or setting was not found
+**/
+
static FORCEINLINE INT_PTR GCILangEx(CONTACTINFO *ci, LPCSTR pszSetting)
{
if (0 == GCIVarEx(ci, pszSetting)) {
@@ -153,18 +154,16 @@ static FORCEINLINE INT_PTR GCILangEx(CONTACTINFO *ci, LPCSTR pszSetting)
LPIDSTRLIST pList;
UINT nList, i, res = 0;
switch (ci->type) {
- case CNFT_BYTE: res = ci->bVal; break;
- case CNFT_WORD: res = ci->wVal; break;
- case CNFT_DWORD: res = ci->dVal; break;
- default: return 1;
+ case CNFT_BYTE: res = ci->bVal; break;
+ case CNFT_WORD: res = ci->wVal; break;
+ case CNFT_DWORD: res = ci->dVal; break;
+ default: return 1;
}
GetLanguageList(&nList, &pList);
for(i = 0; i<nList; i++) {
if (pList[i].nID == res) {
//use untranslate string (pszText member)
- ci->pszVal = (ci->dwFlag & CNF_UNICODE)
- ? (LPTSTR) mir_a2u(pList[i].pszText)
- : (LPTSTR) mir_strdup(pList[i].pszText);
+ ci->pszVal = (ci->dwFlag & CNF_UNICODE) ? (LPTSTR) mir_a2u(pList[i].pszText) : (LPTSTR) mir_strdup(pList[i].pszText);
ci->type = (ci->pszVal != NULL) ? CNFT_ASCIIZ : 0;
return 0;
}
@@ -173,52 +172,51 @@ static FORCEINLINE INT_PTR GCILangEx(CONTACTINFO *ci, LPCSTR pszSetting)
ci->pszVal = NULL;
}
}
- else {
- ci->type = 0;
- }
+ else ci->type = 0;
+
return ci->type == 0;
}
/**
- * This function read a setting from the baseprotocol of the contact (e.g. ICQ).
- *
- * @warning ci MUST NOT be NULL!
- *
- * @param ci - pointer to a CONTACTINFO structure holding information about the contact
- * @param pszSetting - the desired setting to read
- *
- * @retval 0 - if setting was found and read correctly
- * @retval 1 - if any error occured or setting was not found
- **/
+* This function read a setting from the baseprotocol of the contact (e.g. ICQ).
+*
+* @warning ci MUST NOT be NULL!
+*
+* @param ci - pointer to a CONTACTINFO structure holding information about the contact
+* @param pszSetting - the desired setting to read
+*
+* @retval 0 - if setting was found and read correctly
+* @retval 1 - if any error occured or setting was not found
+**/
+
static FORCEINLINE INT_PTR GCIStr(CONTACTINFO *ci, LPCSTR pszSetting)
{
const BYTE type = CI_TCHAR(ci);
DBVARIANT dbv;
if (DB::Setting::Get(ci->hContact, ci->szProto, pszSetting, &dbv, type) == 0) {
- if (DB::Variant::dbv2String(&dbv, type) == 0) {
+ if (DB::Variant::dbv2String(&dbv, type) == 0)
ci->pszVal = dbv.ptszVal;
- }
else {
db_free(&dbv);
ci->pszVal = NULL;
}
}
- else {
- ci->pszVal = NULL;
- }
+ else ci->pszVal = NULL;
+
ci->type = (ci->pszVal) ? CNFT_ASCIIZ : 0;
return ci->type == 0;
}
/**
- * Format the full name for the contact.
- *
- * @params ci - CONTACTINFO structure
- *
- * @retval 0 - if setting was found and read correctly
- * @retval 1 - if any error occured or setting was not found
- **/
+* Format the full name for the contact.
+*
+* @params ci - CONTACTINFO structure
+*
+* @retval 0 - if setting was found and read correctly
+* @retval 1 - if any error occured or setting was not found
+**/
+
static FORCEINLINE INT_PTR GCIFirstLast(CONTACTINFO *ci)
{
DBVARIANT dbvf, dbvl;
@@ -227,79 +225,64 @@ static FORCEINLINE INT_PTR GCIFirstLast(CONTACTINFO *ci)
BYTE type = CI_TCHAR(ci);
if (DB::Setting::GetEx(ci->hContact, USERINFO, ci->szProto, SET_CONTACT_FIRSTNAME, &dbvf, type))
- {
dbvf.type = DBVT_DELETED;
- }
+
if (DB::Setting::GetEx(ci->hContact, USERINFO, ci->szProto, SET_CONTACT_LASTNAME, &dbvl, type))
- {
dbvl.type = DBVT_DELETED;
- }
- if (type == DBVT_WCHAR)
- {
+ if (type == DBVT_WCHAR) {
// both firstname and lastname are valid
- if (dbvf.type == DBVT_WCHAR && dbvl.type == DBVT_WCHAR)
- {
+ if (dbvf.type == DBVT_WCHAR && dbvl.type == DBVT_WCHAR) {
cbf = mir_wcslen(dbvf.pwszVal);
cbl = mir_wcslen(dbvl.pwszVal);
ci->pszVal = (LPTSTR) mir_alloc((cbf + cbl + 2) * sizeof(WCHAR));
if (ci->pszVal)
- {
mir_snwprintf((LPWSTR) ci->pszVal, cbf + cbl + 2, L"%s %s", dbvf.pwszVal, dbvl.pwszVal);
- }
+
db_free(&dbvf);
db_free(&dbvl);
}
// set firstname as result
- else if (dbvf.type == DBVT_WCHAR)
- {
+ else if (dbvf.type == DBVT_WCHAR) {
ci->pszVal = (LPTSTR) dbvf.pwszVal;
db_free(&dbvl);
}
// set lastname as result
- else if (dbvl.type == DBVT_WCHAR)
- {
+ else if (dbvl.type == DBVT_WCHAR) {
ci->pszVal = (LPTSTR) dbvl.pwszVal;
db_free(&dbvf);
}
- else
- {
+ else {
ci->pszVal = NULL;
db_free(&dbvf);
db_free(&dbvl);
}
}
- else
- {
+ else {
// both firstname and lastname are valid
- if (dbvf.type == DBVT_ASCIIZ && dbvl.type == DBVT_ASCIIZ)
- {
+ if (dbvf.type == DBVT_ASCIIZ && dbvl.type == DBVT_ASCIIZ) {
cbf = mir_strlen(dbvf.pszVal);
cbl = mir_strlen(dbvl.pszVal);
ci->pszVal = (LPTSTR) mir_alloc((cbf + cbl + 2) * sizeof(CHAR));
if (ci->pszVal)
- {
mir_snprintf((LPSTR) ci->pszVal, cbf + cbl + 2, "%s %s", dbvf.pszVal, dbvl.pszVal);
- }
+
db_free(&dbvf);
db_free(&dbvl);
}
// set firstname as result
- else if (dbvf.type == DBVT_ASCIIZ)
- {
+ else if (dbvf.type == DBVT_ASCIIZ) {
ci->pszVal = (LPTSTR) dbvf.pszVal;
db_free(&dbvl);
}
// set lastname as result
- else if (dbvl.type == DBVT_ASCIIZ)
- {
+ else if (dbvl.type == DBVT_ASCIIZ) {
ci->pszVal = (LPTSTR) dbvl.pszVal;
db_free(&dbvf);
}
- else
- {
+ else {
ci->pszVal = NULL;
db_free(&dbvf);
db_free(&dbvl);
@@ -310,14 +293,15 @@ static FORCEINLINE INT_PTR GCIFirstLast(CONTACTINFO *ci)
}
/**
- * return the country name
- *
- * @param ci - pointer to a CONTACTINFO structure holding information about the contact
- * @param pszSetting - the desired setting to read the countrys id from
- *
- * @retval 0 - if setting was found and read correctly
- * @retval 1 - if any error occured or setting was not found
- **/
+* return the country name
+*
+* @param ci - pointer to a CONTACTINFO structure holding information about the contact
+* @param pszSetting - the desired setting to read the countrys id from
+*
+* @retval 0 - if setting was found and read correctly
+* @retval 1 - if any error occured or setting was not found
+**/
+
static FORCEINLINE INT_PTR GCICountry(CONTACTINFO *ci, LPCSTR pszSetting)
{
if (0 == GCIVarEx(ci, pszSetting)) {
@@ -331,14 +315,11 @@ static FORCEINLINE INT_PTR GCICountry(CONTACTINFO *ci, LPCSTR pszSetting)
}
LPSTR szCountry = res ? (LPSTR)CallService(MS_UTILS_GETCOUNTRYBYNUMBER, res, 0) : NULL;
- if (szCountry) {
- ci->pszVal = (ci->dwFlag & CNF_UNICODE)
- ? (LPTSTR) mir_a2u(szCountry)
- : (LPTSTR) mir_strdup(szCountry);
- }
- else {
+ if (szCountry)
+ ci->pszVal = (ci->dwFlag & CNF_UNICODE) ? (LPTSTR) mir_a2u(szCountry) : (LPTSTR) mir_strdup(szCountry);
+ else
ci->pszVal = NULL;
- }
+
ci->type = (ci->pszVal != NULL) ? CNFT_ASCIIZ : 0;
}
}
@@ -362,196 +343,204 @@ INT_PTR GetContactInfo(WPARAM wParam, LPARAM lParam)
CONTACTINFO *ci = (CONTACTINFO*) lParam;
INT_PTR result;
- if (ci && ci->cbSize == sizeof(CONTACTINFO) && (ci->szProto != NULL || (ci->szProto = DB::Contact::Proto(ci->hContact)) != NULL))
- {
+ if (ci && ci->cbSize == sizeof(CONTACTINFO) && (ci->szProto != NULL || (ci->szProto = DB::Contact::Proto(ci->hContact)) != NULL)) {
switch (ci->dwFlag & 0x7F) {
//
// contact name
//
- case CNF_FIRSTNAME: {
- result = GCIVarEx(ci, SET_CONTACT_FIRSTNAME);
- } break;
+ case CNF_FIRSTNAME:
+ result = GCIVarEx(ci, SET_CONTACT_FIRSTNAME);
+ break;
- case CNF_LASTNAME: {
- result = GCIVarEx(ci, SET_CONTACT_LASTNAME);
- } break;
+ case CNF_LASTNAME:
+ result = GCIVarEx(ci, SET_CONTACT_LASTNAME);
+ break;
- case CNF_FIRSTLAST: {
- result = GCIVarEx(ci, SET_CONTACT_FIRSTLASTNAME); //first try to read "FullName"
- if (result) result = GCIFirstLast(ci); //fallback to "FirstName" + "LastName"
- } break;
+ case CNF_FIRSTLAST:
+ result = GCIVarEx(ci, SET_CONTACT_FIRSTLASTNAME); //first try to read "FullName"
+ if (result) result = GCIFirstLast(ci); //fallback to "FirstName" + "LastName"
+ break;
- case CNF_NICK: {
- result = GCIVarEx(ci, SET_CONTACT_NICK);
- } break;
+ case CNF_NICK:
+ result = GCIVarEx(ci, SET_CONTACT_NICK);
+ break;
- case CNF_CUSTOMNICK: {
+ case CNF_CUSTOMNICK:
+ {
LPSTR s = ci->szProto;
ci->szProto = MOD_CLIST;
result = GCIVar(ci, SET_CONTACT_MYHANDLE);
ci->szProto = s;
- } break;
+ }
+ break;
- case CNF_LANGUAGE1: {
- result = GCILangEx(ci, SET_CONTACT_LANG1);
- } break;
+ case CNF_LANGUAGE1:
+ result = GCILangEx(ci, SET_CONTACT_LANG1);
+ break;
- case CNF_LANGUAGE2: {
- result = GCILangEx(ci, SET_CONTACT_LANG2);
- } break;
+ case CNF_LANGUAGE2:
+ result = GCILangEx(ci, SET_CONTACT_LANG2);
+ break;
- case CNF_LANGUAGE3: {
- result = GCILangEx(ci, SET_CONTACT_LANG3);
- } break;
+ case CNF_LANGUAGE3:
+ result = GCILangEx(ci, SET_CONTACT_LANG3);
+ break;
//
// private contact
//
- case CNF_STREET: {
- result = GCIVarEx(ci, SET_CONTACT_STREET);
- } break;
+ case CNF_STREET:
+ result = GCIVarEx(ci, SET_CONTACT_STREET);
+ break;
- case CNF_ZIP: {
- result = GCIVarEx(ci, SET_CONTACT_ZIP);
- } break;
+ case CNF_ZIP:
+ result = GCIVarEx(ci, SET_CONTACT_ZIP);
+ break;
- case CNF_CITY: {
- result = GCIVarEx(ci, SET_CONTACT_CITY);
- } break;
+ case CNF_CITY:
+ result = GCIVarEx(ci, SET_CONTACT_CITY);
+ break;
- case CNF_STATE: {
- result = GCIVarEx(ci, SET_CONTACT_STATE);
- } break;
+ case CNF_STATE:
+ result = GCIVarEx(ci, SET_CONTACT_STATE);
+ break;
- case CNF_COUNTRY: {
- result = GCICountry(ci, SET_CONTACT_COUNTRY);
- } break;
+ case CNF_COUNTRY:
+ result = GCICountry(ci, SET_CONTACT_COUNTRY);
+ break;
- case CNF_PHONE: {
- result = GCIVarEx(ci, SET_CONTACT_PHONE);
- } break;
+ case CNF_PHONE:
+ result = GCIVarEx(ci, SET_CONTACT_PHONE);
+ break;
- case CNF_FAX: {
- result = GCIVarEx(ci, SET_CONTACT_FAX);
- } break;
+ case CNF_FAX:
+ result = GCIVarEx(ci, SET_CONTACT_FAX);
+ break;
- case CNF_CELLULAR: {
- result = GCIVarEx(ci, SET_CONTACT_CELLULAR);
- } break;
+ case CNF_CELLULAR:
+ result = GCIVarEx(ci, SET_CONTACT_CELLULAR);
+ break;
- case CNF_EMAIL: {
- result = GCIVarEx(ci, SET_CONTACT_EMAIL);
- } break;
+ case CNF_EMAIL:
+ result = GCIVarEx(ci, SET_CONTACT_EMAIL);
+ break;
- case CNF_HOMEPAGE: {
- result = GCIVarEx(ci, SET_CONTACT_HOMEPAGE);
- } break;
+ case CNF_HOMEPAGE:
+ result = GCIVarEx(ci, SET_CONTACT_HOMEPAGE);
+ break;
//
// company information
//
- case CNF_CONAME: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY);
- } break;
+ case CNF_CONAME:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY);
+ break;
- case CNF_CODEPT: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_DEPARTMENT);
- } break;
+ case CNF_CODEPT:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_DEPARTMENT);
+ break;
- case CNF_COPOSITION: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_POSITION);
- } break;
+ case CNF_COPOSITION:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_POSITION);
+ break;
- case CNF_COSTREET: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_STREET);
- } break;
+ case CNF_COSTREET:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_STREET);
+ break;
- case CNF_COZIP: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_ZIP);
- } break;
+ case CNF_COZIP:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_ZIP);
+ break;
- case CNF_COCITY: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_CITY);
- } break;
+ case CNF_COCITY:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_CITY);
+ break;
- case CNF_COSTATE: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_STATE);
- } break;
+ case CNF_COSTATE:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_STATE);
+ break;
- case CNF_COCOUNTRY: {
- result = GCICountry(ci, SET_CONTACT_COMPANY_COUNTRY);
- } break;
+ case CNF_COCOUNTRY:
+ result = GCICountry(ci, SET_CONTACT_COMPANY_COUNTRY);
+ break;
- case CNF_COPHONE: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_PHONE);
- } break;
+ case CNF_COPHONE:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_PHONE);
+ break;
- case CNF_COFAX: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_FAX);
- } break;
+ case CNF_COFAX:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_FAX);
+ break;
- case CNF_COCELLULAR: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_CELLULAR);
- } break;
+ case CNF_COCELLULAR:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_CELLULAR);
+ break;
- case CNF_COEMAIL: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_EMAIL);
- } break;
+ case CNF_COEMAIL:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_EMAIL);
+ break;
- case CNF_COHOMEPAGE: {
- result = GCIVarEx(ci, SET_CONTACT_COMPANY_HOMEPAGE);
- } break;
+ case CNF_COHOMEPAGE:
+ result = GCIVarEx(ci, SET_CONTACT_COMPANY_HOMEPAGE);
+ break;
//
// personal information
//
- case CNF_ABOUT: {
- result = GCIVarEx(ci, SET_CONTACT_ABOUT);
- } break;
+ case CNF_ABOUT:
+ result = GCIVarEx(ci, SET_CONTACT_ABOUT);
+ break;
- case CNF_MYNOTES: {
- result = GCIVarEx(ci, SET_CONTACT_MYNOTES);
- } break;
+ case CNF_MYNOTES:
+ result = GCIVarEx(ci, SET_CONTACT_MYNOTES);
+ break;
- case CNF_AGE: {
- result = GCIVarEx(ci, SET_CONTACT_AGE);
- } break; // returns age (byte, 0==unspecified) ??
+ case CNF_AGE:
+ result = GCIVarEx(ci, SET_CONTACT_AGE);
+ break; // returns age (byte, 0==unspecified) ??
- case CNF_GENDER: {
- ci->bVal = GenderOf(ci->hContact, ci->szProto);
- ci->type = (ci->bVal != 0) ? CNFT_BYTE : 0;
- result = ci->type == 0;
- } break;
+ case CNF_GENDER:
+ ci->bVal = GenderOf(ci->hContact, ci->szProto);
+ ci->type = (ci->bVal != 0) ? CNFT_BYTE : 0;
+ result = ci->type == 0;
+ break;
- case CNF_BIRTHDAY: {
+ case CNF_BIRTHDAY:
+ {
MAnnivDate mda;
result = mda.DBGetBirthDate(ci->hContact, ci->szProto);
if (result == 0) {
- ci->bVal = (BYTE) mda.Day();
+ ci->bVal = (BYTE)mda.Day();
ci->type = CNFT_BYTE;
}
- } break;
+ }
+ break;
- case CNF_BIRTHMONTH: {
+ case CNF_BIRTHMONTH:
+ {
MAnnivDate mda;
result = mda.DBGetBirthDate(ci->hContact, ci->szProto);
if (result == 0) {
- ci->bVal = (BYTE) mda.Month();
+ ci->bVal = (BYTE)mda.Month();
ci->type = CNFT_BYTE;
}
- } break;
+ }
+ break;
- case CNF_BIRTHYEAR: {
+ case CNF_BIRTHYEAR:
+ {
MAnnivDate mda;
result = mda.DBGetBirthDate(ci->hContact, ci->szProto);
if (result == 0) {
- ci->wVal = (WORD) mda.Year();
+ ci->wVal = (WORD)mda.Year();
ci->type = CNFT_WORD;
}
- } break;
+ }
+ break;
- case CNF_BIRTHDATE: {
+ case CNF_BIRTHDATE:
+ {
MAnnivDate mda;
result = mda.DBGetBirthDate(ci->hContact, ci->szProto);
if (result == 0) {
@@ -559,176 +548,160 @@ INT_PTR GetContactInfo(WPARAM wParam, LPARAM lParam)
ci->pszVal = NULL;
if (ci->dwFlag & CNF_UNICODE) {
WCHAR wszDate[80];
- if (GetDateFormatW(LOCALE_USER_DEFAULT, wParam == 1 ? DATE_LONGDATE : DATE_SHORTDATE, &st, NULL, wszDate, SIZEOF(wszDate))) {
+ if (GetDateFormatW(LOCALE_USER_DEFAULT, wParam == 1 ? DATE_LONGDATE : DATE_SHORTDATE, &st, NULL, wszDate, SIZEOF(wszDate)))
ci->pszVal = (LPTSTR)mir_wcsdup(wszDate);
- }
}
else {
CHAR szDate[80];
- if (GetDateFormatA(LOCALE_USER_DEFAULT, wParam == 1 ? DATE_LONGDATE : DATE_SHORTDATE, &st, NULL, szDate, SIZEOF(szDate))) {
+ if (GetDateFormatA(LOCALE_USER_DEFAULT, wParam == 1 ? DATE_LONGDATE : DATE_SHORTDATE, &st, NULL, szDate, SIZEOF(szDate)))
ci->pszVal = (LPTSTR)mir_strdup(szDate);
- }
}
ci->type = (ci->pszVal != NULL) ? CNFT_ASCIIZ : 0;
result = ci->type == 0;
}
- } break;
-
- case CNF_TIMEZONE: {
- //use new core tz interface
- if (tmi.prepareList) {
- HANDLE hTz = tmi.createByContact(ci->hContact, TZF_KNOWNONLY);
- if (hTz) {
- LPTIME_ZONE_INFORMATION tzi = tmi.getTzi(hTz);
- int offset = tzi->Bias + tzi->StandardBias;
-
- char str[80];
- mir_snprintf(str, SIZEOF(str), offset ? "UTC%+d:%02d" : "UTC", offset / -60, abs(offset % 60));
- ci->pszVal = ci->dwFlag & CNF_UNICODE
- ? (TCHAR*)mir_a2u(str)
- : (TCHAR*)mir_strdup(str);
- ci->type = CNFT_ASCIIZ;
- return 0;
- }
- else {
- ci->pszVal = NULL;
- }
+ }
+ break;
+
+ case CNF_TIMEZONE:
+ //use new core tz interface
+ if (tmi.prepareList) {
+ HANDLE hTz = tmi.createByContact(ci->hContact, TZF_KNOWNONLY);
+ if (hTz) {
+ LPTIME_ZONE_INFORMATION tzi = tmi.getTzi(hTz);
+ int offset = tzi->Bias + tzi->StandardBias;
+
+ char str[80];
+ mir_snprintf(str, SIZEOF(str), offset ? "UTC%+d:%02d" : "UTC", offset / -60, abs(offset % 60));
+ ci->pszVal = ci->dwFlag & CNF_UNICODE ? (TCHAR*)mir_a2u(str) : (TCHAR*)mir_strdup(str);
+ ci->type = CNFT_ASCIIZ;
+ return 0;
+ }
+ ci->pszVal = NULL;
+ }
+ //fallback use old UIEX method
+ else {
+ CTimeZone* ptz = GetContactTimeZone(ci->hContact, ci->szProto);
+ if (ptz) {
+ if (ci->dwFlag & CNF_UNICODE)
+ ci->pszVal = (LPTSTR)mir_t2u(ptz->ptszDisplay);
+ else
+ ci->pszVal = (LPTSTR)mir_t2a(ptz->ptszDisplay);
}
- //fallback use old UIEX method
else {
- CTimeZone* ptz = GetContactTimeZone(ci->hContact, ci->szProto);
- if (ptz) {
- if (ci->dwFlag & CNF_UNICODE) {
- ci->pszVal = (LPTSTR) mir_t2u(ptz->ptszDisplay);
- }
- else {
- ci->pszVal = (LPTSTR) mir_t2a(ptz->ptszDisplay);
- }
- }
- else {
- /* If a timezone does not exist in CTzMgr, it is a invalid timezone,
- because Windows and CTzMgr know all existing timezones and it
- would not be shown anywhere anyway as UserInfoEx displays only
- known windows timezones in the details dialog!
- */
- ci->pszVal = NULL;
- }
+ /* If a timezone does not exist in CTzMgr, it is a invalid timezone,
+ because Windows and CTzMgr know all existing timezones and it
+ would not be shown anywhere anyway as UserInfoEx displays only
+ known windows timezones in the details dialog!
+ */
+ ci->pszVal = NULL;
}
- ci->type = (ci->pszVal != NULL) ? CNFT_ASCIIZ : 0;
- result = ci->type == 0;
- } break;
+ }
+ ci->type = (ci->pszVal != NULL) ? CNFT_ASCIIZ : 0;
+ result = ci->type == 0;
+ break;
//
// information about IM specific stuff
//
- case CNF_UNIQUEID: {
- // protocol must define a PFLAG_UNIQUEIDSETTING
+ case CNF_UNIQUEID:
+ // protocol must define a PFLAG_UNIQUEIDSETTING
+ result = CallProtoService(ci->szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
+ if (result != CALLSERVICE_NOTFOUND && result != NULL)
+ result = GCIVar(ci, (LPCSTR)result);
+ break;
+
+ case CNF_DISPLAYUID:
+ if (!GCIVar(ci, "display_uid"))
+ result = 0;
+ else {
result = CallProtoService(ci->szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
- if (result != CALLSERVICE_NOTFOUND && result != NULL) {
- result = GCIVar(ci, (LPCSTR) result);
- }
- } break;
-
- case CNF_DISPLAYUID: {
- if (!GCIVar(ci, "display_uid"))
- result=0;
- else {
- result = CallProtoService(ci->szProto,PS_GETCAPS,PFLAG_UNIQUEIDSETTING,0);
- if (result != CALLSERVICE_NOTFOUND && result != NULL) {
- result = GCIVar(ci, (LPCSTR) result);
- }
- }
- } break;
+ if (result != CALLSERVICE_NOTFOUND && result != NULL)
+ result = GCIVar(ci, (LPCSTR)result);
+ }
+ break;
case CNF_DISPLAYNC:
- case CNF_DISPLAY: {
- int i;
- for (i = 0; i < NAMEORDERCOUNT; i++) {
- switch (gNameOrder[i]) {
- case 0: // custom name
- {
- // make sure we aren't in CNF_DISPLAYNC mode
- // don't get custom name for NULL contact
- if (ci->hContact != NULL && (ci->dwFlag & 0x7F) == CNF_DISPLAY) {
- BYTE dwFlag = ci->dwFlag;
- ci->dwFlag = (ci->dwFlag & CNF_UNICODE) | CNF_CUSTOMNICK;
- if (!GetContactInfo(NULL, (LPARAM)ci)) {
- ci->dwFlag = dwFlag;
- return 0;
- }
- ci->dwFlag = dwFlag;
- }
- } break;
- case 1: // nick
- {
- if (!GCIVarEx(ci, SET_CONTACT_NICK))
- return 0;
- } break;
- case 2: // First Name
- {
- if (!GCIVarEx(ci, SET_CONTACT_FIRSTNAME))
- return 0;
- } break;
- case 3: // E-mail
- {
- if (!GCIVarEx(ci, SET_CONTACT_EMAIL))
- return 0;
- } break;
- case 4: // Last Name
- {
- if (!GCIVarEx(ci, SET_CONTACT_LASTNAME))
- return 0;
- } break;
- case 5: // Unique id
- {
- // protocol must define a PFLAG_UNIQUEIDSETTING
- result = CallProtoService(ci->szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
- if (result != CALLSERVICE_NOTFOUND && result != NULL) {
- if (!GCIStr(ci, (LPCSTR) result))
- return 0;
- }
- } break;
- case 6: // first + last name
- {
- if (!GCIFirstLast(ci))
- return 0;
- } break;
- default: // unknown contact
- {
- if (ci->dwFlag & CNF_UNICODE) {
- ci->pszVal = (LPTSTR) mir_wcsdup(TranslateW(L"'(Unknown Contact)'"));
- }
- else {
- ci->pszVal = (LPTSTR) mir_strdup(Translate("'(Unknown Contact)'"));
- }
- ci->type = (ci->pszVal != NULL) ? CNFT_ASCIIZ : 0;
- return ci->type == 0;
+ case CNF_DISPLAY:
+ for (int i = 0; i < NAMEORDERCOUNT; i++) {
+ switch (gNameOrder[i]) {
+ case 0: // custom name
+ // make sure we aren't in CNF_DISPLAYNC mode
+ // don't get custom name for NULL contact
+ if (ci->hContact != NULL && (ci->dwFlag & 0x7F) == CNF_DISPLAY) {
+ BYTE dwFlag = ci->dwFlag;
+ ci->dwFlag = (ci->dwFlag & CNF_UNICODE) | CNF_CUSTOMNICK;
+ if (!GetContactInfo(NULL, (LPARAM)ci)) {
+ ci->dwFlag = dwFlag;
+ return 0;
}
+ ci->dwFlag = dwFlag;
}
+ break;
+
+ case 1: // nick
+ if (!GCIVarEx(ci, SET_CONTACT_NICK))
+ return 0;
+ break;
+
+ case 2: // First Name
+ if (!GCIVarEx(ci, SET_CONTACT_FIRSTNAME))
+ return 0;
+ break;
+
+ case 3: // E-mail
+ if (!GCIVarEx(ci, SET_CONTACT_EMAIL))
+ return 0;
+ break;
+
+ case 4: // Last Name
+ if (!GCIVarEx(ci, SET_CONTACT_LASTNAME))
+ return 0;
+ break;
+
+ case 5: // Unique id
+ // protocol must define a PFLAG_UNIQUEIDSETTING
+ result = CallProtoService(ci->szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
+ if (result != CALLSERVICE_NOTFOUND && result != NULL) {
+ if (!GCIStr(ci, (LPCSTR)result))
+ return 0;
+ }
+ break;
+
+ case 6: // first + last name
+ if (!GCIFirstLast(ci))
+ return 0;
+ break;
+
+ default: // unknown contact
+ if (ci->dwFlag & CNF_UNICODE)
+ ci->pszVal = (LPTSTR)mir_wcsdup(TranslateW(L"'(Unknown Contact)'"));
+ else
+ ci->pszVal = (LPTSTR)mir_strdup(Translate("'(Unknown Contact)'"));
+
+ ci->type = (ci->pszVal != NULL) ? CNFT_ASCIIZ : 0;
+ return ci->type == 0;
}
}
- default: {
- result = 1;
- }
+ default:
+ result = 1;
}
}
- else
- {
- result = 1;
- }
+ else result = 1;
+
return result;
}
/**
- * This is the implementation of the MS_DB_CONTACT_GETSETTING_STR_EX service.
- *
- * @param wParam - handle of the contact a setting was written for (must be NULL in this case)
- * @param lParam - DBCONTACTGETSETTING structure holding information about the setting to read
- *
- * @retval 0 - success
- * @retval 1 - error
- **/
+* This is the implementation of the MS_DB_CONTACT_GETSETTING_STR_EX service.
+*
+* @param wParam - handle of the contact a setting was written for (must be NULL in this case)
+* @param lParam - DBCONTACTGETSETTING structure holding information about the setting to read
+*
+* @retval 0 - success
+* @retval 1 - error
+**/
+
static INT_PTR GetContactSettingStrExService(WPARAM wParam, LPARAM lParam)
{
DBCONTACTGETSETTING *cgs = (DBCONTACTGETSETTING*)lParam;
@@ -737,31 +710,30 @@ static INT_PTR GetContactSettingStrExService(WPARAM wParam, LPARAM lParam)
}
/**
- * If the user changes the name order update the global value.
- *
- * @param wParam - handle of the contact a setting was written for (must be NULL in this case)
- * @param lParam - DBCONTACTWRITESETTING structure holding information about the written data
- * @return 0
- **/
+* If the user changes the name order update the global value.
+*
+* @param wParam - handle of the contact a setting was written for (must be NULL in this case)
+* @param lParam - DBCONTACTWRITESETTING structure holding information about the written data
+* @return 0
+**/
+
static int OnSettingChanged(WPARAM wParam, LPARAM lParam)
{
if ((HANDLE)wParam == NULL) {
DBCONTACTWRITESETTING *pdbcws = (DBCONTACTWRITESETTING*) lParam;
- if (!mir_strcmp(pdbcws->szModule, "Contact") &&
- !mir_strcmp(pdbcws->szSetting, "NameOrder"))
- {
- memcpy(gNameOrder, pdbcws->value.pbVal,pdbcws->value.cpbVal);
- }
+ if (!mir_strcmp(pdbcws->szModule, "Contact") && !mir_strcmp(pdbcws->szSetting, "NameOrder"))
+ memcpy(gNameOrder, pdbcws->value.pbVal, pdbcws->value.cpbVal);
}
return 0;
}
/**
- * Loads the module at startup and replaces the service.
- *
- * @param none
- * @return nothing
- **/
+* Loads the module at startup and replaces the service.
+*
+* @param none
+* @return nothing
+**/
+
void SvcContactInfoLoadModule()
{
CreateServiceFunction(MS_DB_CONTACT_GETSETTING_STR_EX, GetContactSettingStrExService);
@@ -769,10 +741,8 @@ void SvcContactInfoLoadModule()
DBVARIANT dbv;
if (DB::Setting::GetAString(NULL, "Contact", "NameOrder", &dbv)) {
- BYTE i;
- for (i = 0; i < NAMEORDERCOUNT; i++) {
+ for (int i = 0; i < NAMEORDERCOUNT; i++)
gNameOrder[i] = i;
- }
}
else {
memcpy(gNameOrder, dbv.pbVal, dbv.cpbVal);