From f04d64869f3b1de54fb343f28f955584780001b8 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 26 Nov 2011 15:41:10 +0000 Subject: Project folders rename part 3 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@215 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- UserInfoEx/svc_constants.cpp | 471 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 471 insertions(+) create mode 100644 UserInfoEx/svc_constants.cpp (limited to 'UserInfoEx/svc_constants.cpp') diff --git a/UserInfoEx/svc_constants.cpp b/UserInfoEx/svc_constants.cpp new file mode 100644 index 0000000..2fb2316 --- /dev/null +++ b/UserInfoEx/svc_constants.cpp @@ -0,0 +1,471 @@ +/* +UserinfoEx plugin for Miranda IM + +Copyright: +ฉ 2006-2010 DeathAxe, Yasnovidyashii, Merlin, K. Romanov, Kreol + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +=============================================================================== + +File name : $HeadURL: https://userinfoex.googlecode.com/svn/trunk/svc_constants.cpp $ +Revision : $Revision: 187 $ +Last change on : $Date: 2010-09-08 16:05:54 +0400 (ะกั€, 08 ัะตะฝ 2010) $ +Last change by : $Author: ing.u.horn $ + +=============================================================================== +*/ +#include "commonheaders.h" + +static IDSTRLIST TmplLanguages[] = { + { 0, LPGEN("Unspecified"), 0}, + {55, LPGEN("Afrikaans"), 0}, + {58, LPGEN("Albanian"), 0}, + { 1, LPGEN("Arabic"), 0}, + {59, LPGEN("Armenian"), 0}, + {68, LPGEN("Azerbaijani"), 0}, + {72, LPGEN("Belorussian"), 0}, + { 2, LPGEN("Bhojpuri"), 0}, + {56, LPGEN("Bosnian"), 0}, + { 3, LPGEN("Bulgarian"), 0}, + { 4, LPGEN("Burmese"), 0}, + { 5, LPGEN("Cantonese"), 0}, + { 6, LPGEN("Catalan"), 0}, + {61, LPGEN("Chamorro"), 0}, + { 7, LPGEN("Chinese"), 0}, + { 8, LPGEN("Croatian"), 0}, + { 9, LPGEN("Czech"), 0}, + {10, LPGEN("Danish"), 0}, + {11, LPGEN("Dutch"), 0}, + {12, LPGEN("English"), 0}, + {13, LPGEN("Esperanto"), 0}, + {14, LPGEN("Estonian"), 0}, + {15, LPGEN("Farsi"), 0}, + {16, LPGEN("Finnish"), 0}, + {17, LPGEN("French"), 0}, + {18, LPGEN("Gaelic"), 0}, + {19, LPGEN("German"), 0}, + {20, LPGEN("Greek"), 0}, + {70, LPGEN("Gujarati"), 0}, + {21, LPGEN("Hebrew"), 0}, + {22, LPGEN("Hindi"), 0}, + {23, LPGEN("Hungarian"), 0}, + {24, LPGEN("Icelandic"), 0}, + {25, LPGEN("Indonesian"), 0}, + {26, LPGEN("Italian"), 0}, + {27, LPGEN("Japanese"), 0}, + {28, LPGEN("Khmer"), 0}, + {29, LPGEN("Korean"), 0}, + {69, LPGEN("Kurdish"), 0}, + {30, LPGEN("Lao"), 0}, + {31, LPGEN("Latvian"), 0}, + {32, LPGEN("Lithuanian"), 0}, + {65, LPGEN("Macedonian"), 0}, + {33, LPGEN("Malay"), 0}, + {63, LPGEN("Mandarin"), 0}, + {62, LPGEN("Mongolian"), 0}, + {34, LPGEN("Norwegian"), 0}, + {57, LPGEN("Persian"), 0}, + {35, LPGEN("Polish"), 0}, + {36, LPGEN("Portuguese"), 0}, + {60, LPGEN("Punjabi"), 0}, + {37, LPGEN("Romanian"), 0}, + {38, LPGEN("Russian"), 0}, + {39, LPGEN("Serbo-Croatian"), 0}, + {66, LPGEN("Sindhi"), 0}, + {40, LPGEN("Slovak"), 0}, + {41, LPGEN("Slovenian"), 0}, + {42, LPGEN("Somali"), 0}, + {43, LPGEN("Spanish"), 0}, + {44, LPGEN("Swahili"), 0}, + {45, LPGEN("Swedish"), 0}, + {46, LPGEN("Tagalog"), 0}, + {64, LPGEN("Taiwanese"), 0}, + {71, LPGEN("Tamil"), 0}, + {47, LPGEN("Tatar"), 0}, + {48, LPGEN("Thai"), 0}, + {49, LPGEN("Turkish"), 0}, + {50, LPGEN("Ukrainian"), 0}, + {51, LPGEN("Urdu"), 0}, + {52, LPGEN("Vietnamese"), 0}, + {67, LPGEN("Welsh"), 0}, + {53, LPGEN("Yiddish"), 0}, + {54, LPGEN("Yoruba"), 0}, +}; + +static IDSTRLIST TmplOccupations[] = { + { 0, LPGEN("Unspecified"), 0}, + { 1, LPGEN("Academic"), 0}, + { 2, LPGEN("Administrative"), 0}, + { 3, LPGEN("Art/Entertainment"), 0}, + { 4, LPGEN("College Student"), 0}, + { 5, LPGEN("Computers"), 0}, + { 6, LPGEN("Community & Social"), 0}, + { 7, LPGEN("Education"), 0}, + { 8, LPGEN("Engineering"), 0}, + { 9, LPGEN("Financial Services"), 0}, + {10, LPGEN("Government"), 0}, + {11, LPGEN("High School Student"), 0}, + {12, LPGEN("Home"), 0}, + {13, LPGEN("ICQ - Providing Help"), 0}, + {14, LPGEN("Law"), 0}, + {15, LPGEN("Managerial"), 0}, + {16, LPGEN("Manufacturing"), 0}, + {17, LPGEN("Medical/Health"), 0}, + {18, LPGEN("Military"), 0}, + {19, LPGEN("Non-Government Organization"), 0}, + {20, LPGEN("Professional"), 0}, + {21, LPGEN("Retail"), 0}, + {22, LPGEN("Retired"), 0}, + {23, LPGEN("Science & Research"), 0}, + {24, LPGEN("Sports"), 0}, + {25, LPGEN("Technical"), 0}, + {26, LPGEN("University Student"), 0}, + {27, LPGEN("Web Building"), 0}, + {99, LPGEN("Other Services"), 0} +}; + +static IDSTRLIST TmplInterests[] = { + { 0, LPGEN("Unspecified"), 0}, + {100, LPGEN("Art"), 0}, + {101, LPGEN("Cars"), 0}, + {102, LPGEN("Celebrity Fans"), 0}, + {103, LPGEN("Collections"), 0}, + {104, LPGEN("Computers"), 0}, + {105, LPGEN("Culture & Literature"), 0}, + {106, LPGEN("Fitness"), 0}, + {107, LPGEN("Games"), 0}, + {108, LPGEN("Hobbies"), 0}, + {109, LPGEN("ICQ - Providing Help"), 0}, + {110, LPGEN("Internet"), 0}, + {111, LPGEN("Lifestyle"), 0}, + {112, LPGEN("Movies/TV"), 0}, + {113, LPGEN("Music"), 0}, + {114, LPGEN("Outdoor Activities"), 0}, + {115, LPGEN("Parenting"), 0}, + {116, LPGEN("Pets/Animals"), 0}, + {117, LPGEN("Religion"), 0}, + {118, LPGEN("Science/Technology"), 0}, + {119, LPGEN("Skills"), 0}, + {120, LPGEN("Sports"), 0}, + {121, LPGEN("Web Design"), 0}, + {122, LPGEN("Nature and Environment"), 0}, + {123, LPGEN("News & Media"), 0}, + {124, LPGEN("Government"), 0}, + {125, LPGEN("Business & Economy"), 0}, + {126, LPGEN("Mystics"), 0}, + {127, LPGEN("Travel"), 0}, + {128, LPGEN("Astronomy"), 0}, + {129, LPGEN("Space"), 0}, + {130, LPGEN("Clothing"), 0}, + {131, LPGEN("Parties"), 0}, + {132, LPGEN("Women"), 0}, + {133, LPGEN("Social science"), 0}, + {134, LPGEN("60's"), 0}, + {135, LPGEN("70's"), 0}, + {136, LPGEN("80's"), 0}, + {137, LPGEN("50's"), 0}, + {138, LPGEN("Finance and corporate"), 0}, + {139, LPGEN("Entertainment"), 0}, + {140, LPGEN("Consumer electronics"), 0}, + {141, LPGEN("Retail stores"), 0}, + {142, LPGEN("Health and beauty"), 0}, + {143, LPGEN("Media"), 0}, + {144, LPGEN("Household products"), 0}, + {145, LPGEN("Mail order catalog"), 0}, + {146, LPGEN("Business services"), 0}, + {147, LPGEN("Audio and visual"), 0}, + {148, LPGEN("Sporting and athletic"), 0}, + {149, LPGEN("Publishing"), 0}, + {150, LPGEN("Home automation"), 0} +}; + +static IDSTRLIST TmplAffiliations[] = { + { 0, LPGEN("Unspecified"), 0}, + {200, LPGEN("Alumni Org."), 0}, + {201, LPGEN("Charity Org."), 0}, + {202, LPGEN("Club/Social Org."), 0}, + {203, LPGEN("Community Org."), 0}, + {204, LPGEN("Cultural Org."), 0}, + {205, LPGEN("Fan Clubs"), 0}, + {206, LPGEN("Fraternity/Sorority"), 0}, + {207, LPGEN("Hobbyists Org."), 0}, + {208, LPGEN("International Org."), 0}, + {209, LPGEN("Nature and Environment Org."), 0}, + {210, LPGEN("Professional Org."), 0}, + {211, LPGEN("Scientific/Technical Org."), 0}, + {212, LPGEN("Self Improvement Group"), 0}, + {213, LPGEN("Spiritual/Religious Org."), 0}, + {214, LPGEN("Sports Org."), 0}, + {215, LPGEN("Support Org."), 0}, + {216, LPGEN("Trade and Business Org."), 0}, + {217, LPGEN("Union"), 0}, + {218, LPGEN("Volunteer Org."), 0}, + {299, LPGEN("Other"), 0}, +}; + +static IDSTRLIST TmplPast[] = { + { 0, LPGEN("Unspecified"), 0}, + {300, LPGEN("Elementary School"), 0}, + {301, LPGEN("High School"), 0}, + {302, LPGEN("College"), 0}, + {303, LPGEN("University"), 0}, + {304, LPGEN("Military"), 0}, + {305, LPGEN("TmplPast Work Place"), 0}, + {306, LPGEN("TmplPast Organization"), 0}, + {399, LPGEN("Other"), 0} +}; + +static IDSTRLIST TmplMarital[]={ + { 0, LPGEN("Unspecified"), 0}, + {10, LPGEN("Single"), 0}, + {11, LPGEN("Close relationships"), 0}, + {12, LPGEN("Engaged"), 0}, + {20, LPGEN("Married"), 0}, + {30, LPGEN("Divorced"), 0}, + {31, LPGEN("Separated"), 0}, + {40, LPGEN("Widowed"), 0} +}; + +static IDSTRLIST TmplPrefixes[]={ + { 0, LPGEN("Unspecified"), 0}, + {'j', LPGEN("jun."), 0}, + {'s', LPGEN("sen."), 0} +}; + +static IDSTRLIST *MyCountries = NULL; +static UINT MyCountriesCount = 0; + +/** + * Class CService + * This class supersed miranda CreateServiceFunction + * it automtic call DestroyService in destructor + * it is used for OBJLIST services wich unregister + * all services during unload + * + * @param name - (const char *) service name to register + * @param serviceProc - (MIRANDASERVICE) + **/ +CService::CService( const char * name, MIRANDASERVICE serviceProc) +{ + m_hService = CreateServiceFunction(name, serviceProc); + m_name = m_hService ? name : NULL; +} + +CService::~CService() +{ + if(this->m_hService) + DestroyServiceFunction(this->m_hService); +} + +/** + * sort function for OBJLIST + * + * @param p1 - (const CService*) + * @param p2 - (const CService*) + **/ +static int compareServices( const CService* p1, const CService* p2 ) +{ + return strcmp( p1->m_name, p2->m_name ); +} +OBJLIST services( 30, compareServices ); + + +/** + * This is a sort procedure, which compares two items of an IDSTRLIST array. + * It is used by qsort in SvcConstantsTranslateList and cares about the + * locale, which was set up in OS. This prevents e.g. ฤ,ึ to be put onto + * the end of the list., but being sorted to the right position. + * + * @param p1 - (LPIDSTRLIST) first item to compare + * @param p2 - (LPIDSTRLIST) second item to compare + * + * returns -1, 0, 1 according to the comparison result of _tcscmp. + **/ +static int __cdecl ListSortProc(const LPIDSTRLIST p1, const LPIDSTRLIST p2) +{ + return lstrcmpi(p1->ptszTranslated, p2->ptszTranslated); +} + +/** + * Translates the text of each item of an IDStrinList to users locale + * language and saves result in szTranslated member for later use and + * faster access to translated strings later. + * + * @param pList - pointer to list to translate + * @param nListCount - number of list items + * + * @return nothing + **/ +static VOID SvcConstantsTranslateList(LPIDSTRLIST pList, UINT nListCount/*, SortedList *pSorted*/) +{ + if (!pList[0].ptszTranslated) + { + for (UINT i = 0; i < nListCount; i++) + { + pList[i].ptszTranslated = (LPTSTR)CallService(MS_LANGPACK_PCHARTOTCHAR, 0, (LPARAM)pList[i].pszText); + } + // Ignore last item, if it is a "Other" item. + if (!strcmp(pList[nListCount-1].pszText, LPGEN("Other"))) nListCount--; + + // Sort list according translated text and ignore first item. + qsort(pList+1, nListCount-1, sizeof(pList[0]), + (INT (*)(const VOID*, const VOID*))ListSortProc); + } +} + +/** + * This function uses the country list provided by the core to create ower own one. + * The core's list is extended by a translated value. The cached translation is meant + * to improve speed uppon adding items to a combobox. + * + * @param pList - LPIDSTRLIST pointer, which retrieves the list pointer. + * @param pnListSize - pointer to an unsigned integer, which retrieves the number of items. + * + * @retval MIR_OK - indicates success + * @retval MIR_FAIL - indicates error + **/ +INT_PTR GetCountryList(LPUINT pnListSize, LPIDSTRLIST *pList) +{ + INT_PTR rc = MIR_OK; + if (!MyCountries) + { + struct CountryListEntry *country; + + if (!CallService(MS_UTILS_GETCOUNTRYLIST, (WPARAM)&MyCountriesCount, (LPARAM)&country)) + { + MyCountries = (IDSTRLIST*)mir_alloc(MyCountriesCount * sizeof(IDSTRLIST)); + if (MyCountries) + { + for (UINT i = 0; i < MyCountriesCount; i++) + { + MyCountries[i].nID = country[i].id; + MyCountries[i].pszText = country[i].szName; + MyCountries[i].ptszTranslated = (LPTSTR)CallService(MS_LANGPACK_PCHARTOTCHAR, 0, (LPARAM)country[i].szName); + } + // Sort list according translated text and ignore first item. + qsort(MyCountries+1, MyCountriesCount-1, sizeof(MyCountries[0]), + (INT (*)(const VOID*, const VOID*))ListSortProc); + } + else + { + rc = MIR_FAIL; + } + } + else + { + rc = MIR_FAIL; + } + } + *pnListSize = MyCountriesCount; + *pList = MyCountries; + return rc; +} + +INT_PTR GetMaritalList(LPUINT pnListSize, LPIDSTRLIST *pList) +{ + *pnListSize = SIZEOF(TmplMarital); + *pList = TmplMarital; + SvcConstantsTranslateList(TmplMarital, *pnListSize); + return MIR_OK; +} + +INT_PTR GetLanguageList(LPUINT pnListSize, LPIDSTRLIST *pList) +{ + *pnListSize = SIZEOF(TmplLanguages); + *pList = TmplLanguages; + SvcConstantsTranslateList(TmplLanguages, *pnListSize); + return MIR_OK; +} + +INT_PTR GetOccupationList(LPUINT pnListSize, LPIDSTRLIST *pList) +{ + *pnListSize = SIZEOF(TmplOccupations); + *pList = TmplOccupations; + SvcConstantsTranslateList(TmplOccupations, *pnListSize); + return MIR_OK; +} + +INT_PTR GetInterestsList(LPUINT pnListSize, LPIDSTRLIST *pList) +{ + *pnListSize = SIZEOF(TmplInterests); + *pList = TmplInterests; + SvcConstantsTranslateList(TmplInterests, *pnListSize); + return MIR_OK; +} + +INT_PTR GetPastList(LPUINT pnListSize, LPIDSTRLIST *pList) +{ + *pnListSize = SIZEOF(TmplPast); + *pList = TmplPast; + SvcConstantsTranslateList(TmplPast, *pnListSize); + return MIR_OK; +} + +INT_PTR GetAffiliationsList(LPUINT pnListSize, LPIDSTRLIST *pList) +{ + *pnListSize = SIZEOF(TmplAffiliations); + *pList = TmplAffiliations; + SvcConstantsTranslateList(TmplAffiliations, *pnListSize); + return MIR_OK; +} + +INT_PTR GetNamePrefixList(LPUINT pnListSize, LPIDSTRLIST *pList) +{ + *pnListSize = SIZEOF(TmplPrefixes); + *pList = TmplPrefixes; + SvcConstantsTranslateList(TmplPrefixes, *pnListSize); + return MIR_OK; +} + +VOID SvcConstantsLoadModule(VOID) +{ + UINT nListSize; + LPIDSTRLIST pList; + + // precache translation + GetMaritalList(&nListSize, &pList); + GetLanguageList(&nListSize, &pList); + GetCountryList(&nListSize, &pList); + GetOccupationList(&nListSize, &pList); + GetInterestsList(&nListSize, &pList); + GetPastList(&nListSize, &pList); + GetAffiliationsList(&nListSize, &pList); + GetNamePrefixList(&nListSize, &pList); +} + +static VOID FORCEINLINE SvcConstantsClearList(UINT pnListSize, LPIDSTRLIST pList) +{ + if (pList) + { + for (UINT i = 0; i < pnListSize; i++) + { + MIR_FREE(pList[i].ptszTranslated); + } + } +} + +VOID SvcConstantsUnloadModule(VOID) +{ + SvcConstantsClearList(SIZEOF(TmplMarital), TmplMarital); + SvcConstantsClearList(SIZEOF(TmplLanguages), TmplLanguages); + SvcConstantsClearList(SIZEOF(TmplOccupations), TmplOccupations); + SvcConstantsClearList(SIZEOF(TmplInterests), TmplInterests); + SvcConstantsClearList(SIZEOF(TmplPast), TmplPast); + SvcConstantsClearList(SIZEOF(TmplAffiliations), TmplAffiliations); + SvcConstantsClearList(SIZEOF(TmplPrefixes), TmplPrefixes); + SvcConstantsClearList(MyCountriesCount, MyCountries); + MIR_FREE(MyCountries); +} \ No newline at end of file -- cgit v1.2.3