summaryrefslogtreecommitdiff
path: root/plugins/MetaContacts
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2012-11-29 18:38:28 +0000
committerGeorge Hazan <george.hazan@gmail.com>2012-11-29 18:38:28 +0000
commitdba46ff81f211542c359349371c1d932977b5e36 (patch)
tree05792df32d6d0a68b6e43af50fba7ae6a25ba8b0 /plugins/MetaContacts
parent5d5e4961ad8360b33dc8b363eae8e94c85b4c5cf (diff)
unicode metacontacts
git-svn-id: http://svn.miranda-ng.org/main/trunk@2561 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/MetaContacts')
-rw-r--r--plugins/MetaContacts/MetaContacts_10.vcxproj8
-rw-r--r--plugins/MetaContacts/src/addto.cpp204
-rw-r--r--plugins/MetaContacts/src/edit.cpp650
-rw-r--r--plugins/MetaContacts/src/icons.cpp6
-rw-r--r--plugins/MetaContacts/src/meta_main.cpp4
-rw-r--r--plugins/MetaContacts/src/meta_menu.cpp438
-rw-r--r--plugins/MetaContacts/src/meta_options.cpp338
-rw-r--r--plugins/MetaContacts/src/meta_services.cpp579
-rw-r--r--plugins/MetaContacts/src/meta_utils.cpp501
-rw-r--r--plugins/MetaContacts/src/metacontacts.h26
10 files changed, 1125 insertions, 1629 deletions
diff --git a/plugins/MetaContacts/MetaContacts_10.vcxproj b/plugins/MetaContacts/MetaContacts_10.vcxproj
index 2688d89597..81185178d8 100644
--- a/plugins/MetaContacts/MetaContacts_10.vcxproj
+++ b/plugins/MetaContacts/MetaContacts_10.vcxproj
@@ -25,21 +25,21 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
+ <CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
+ <CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
+ <CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>MultiByte</CharacterSet>
+ <CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
diff --git a/plugins/MetaContacts/src/addto.cpp b/plugins/MetaContacts/src/addto.cpp
index 7be0f40a6f..bfe3098bf4 100644
--- a/plugins/MetaContacts/src/addto.cpp
+++ b/plugins/MetaContacts/src/addto.cpp
@@ -73,12 +73,12 @@ int FillList(HWND list, BOOL sort)
char *szCDN = (char *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hMetaUser, 0);
if (os_unicode_enabled) {
- wchar_t *swzCDN = (wchar_t *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hMetaUser, GCDNF_UNICODE),
+ wchar_t *ptszCDN = (wchar_t *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hMetaUser, GCDNF_UNICODE),
*swzContactDisplayName;
// detect if the clist provided unicode display name by comparing with non-unicode
- if (szCDN && swzCDN && strncmp(szCDN, (char *)swzCDN, strlen(szCDN)) != 0) {
- swzContactDisplayName = swzCDN;
+ if (szCDN && ptszCDN && strncmp(szCDN, (char *)ptszCDN, strlen(szCDN)) != 0) {
+ swzContactDisplayName = ptszCDN;
} else {
// no? convert to unicode
if (szCDN) {
@@ -162,139 +162,99 @@ int BuildList(HWND list, BOOL sort)
*
* @return \c TRUE if the dialog processed the message, \c FALSE if it did not.
*/
+
+#define szConvMsg "Either there is no MetaContact in the database (in this case you should first convert a contact into one)\n\
+or there is none that can host this contact.\n\
+Another solution could be to convert this contact into a new MetaContact.\n\nConvert this contact into a new MetaContact?"
+
INT_PTR CALLBACK Meta_SelectDialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
- switch(msg)
- {
- case WM_INITDIALOG:
- {
- TranslateDialogDefault( hwndDlg );
+ switch(msg) {
+ case WM_INITDIALOG:
+ TranslateDialogDefault( hwndDlg );
+
+ if ( db_get_dw((HANDLE)lParam, META_PROTO, META_ID, (DWORD)-1) != (DWORD)-1) {
+ MessageBox(hwndDlg,
+ TranslateT("This contact is a MetaContact.\nYou can't add a MetaContact to another MetaContact.\n\nPlease choose another."),
+ TranslateT("MetaContact Conflict"),MB_ICONERROR);
+ DestroyWindow(hwndDlg);
+ return TRUE;
+ }
+ if (db_get_dw((HANDLE)lParam, META_PROTO, META_LINK, (DWORD)-1) != (DWORD)-1) {
+ MessageBox(hwndDlg,
+ TranslateT("This contact is already associated to a MetaContact.\nYou cannot add a contact to multiple MetaContacts."),
+ TranslateT("Multiple MetaContacts"),MB_ICONERROR);
+ DestroyWindow(hwndDlg);
+ return TRUE;
+ }
- if (db_get_dw((HANDLE)lParam, META_PROTO, META_ID,(DWORD)-1)!=(DWORD)-1)
- {
- MessageBox(hwndDlg,Translate("This contact is a MetaContact.\nYou can't add a MetaContact to another MetaContact.\n\nPlease choose another."),
- Translate("MetaContact Conflict"),MB_ICONERROR);
- DestroyWindow(hwndDlg);
- return TRUE;
- }
- if (db_get_dw((HANDLE)lParam, META_PROTO, META_LINK,(DWORD)-1)!=(DWORD)-1)
- {
- MessageBox(hwndDlg,Translate("This contact is already associated to a MetaContact.\nYou cannot add a contact to multiple MetaContacts."),
- Translate("Multiple MetaContacts"),MB_ICONERROR);
- DestroyWindow(hwndDlg);
- return TRUE;
- }
+ SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); // user data is contact handle
- SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); // user data is contact handle
+ SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIconEx(I_ADD));
- SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIconEx(I_ADD));
- //SendMessage(GetDlgItem(hwndDlg,IDC_METALIST),LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_FULLROWSELECT);
+ // Initialize the graphical part
+ CheckDlgButton(hwndDlg, IDC_ONLYAVAIL, BST_CHECKED); // Initially checked; display all metacontacts is only an option
+ // Besides, we can check if there is at least one metacontact to add the contact to.
+ if ( BuildList(GetDlgItem(hwndDlg, IDC_METALIST), FALSE) <= 0) {
+ if ( MessageBox(hwndDlg, TranslateT(szConvMsg), TranslateT("No suitable MetaContact found"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1) == IDYES)
+ Meta_Convert((WPARAM)lParam,0);
+ DestroyWindow(hwndDlg);
+ return TRUE;
+ }
+ else {
+ // get contact display name from clist
+ TCHAR *ptszCDN = (TCHAR*) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, lParam, GCDNF_TCHAR);
+ if (!ptszCDN)
+ ptszCDN = TranslateT("a contact");
+
+ // ... and set it to the Window title.
+ TCHAR buf[256];
+ mir_sntprintf(buf, SIZEOF(buf), TranslateT("Adding %s..."), ptszCDN);
+ SetWindowText(hwndDlg, buf);
+ }
+ ShowWindow(hwndDlg,SW_SHOWNORMAL);
+ return TRUE;
+
+ case WM_COMMAND:
+ if (HIWORD(wParam)!=BN_CLICKED)
+ break; // Only clicks of buttons are relevant, let other COMMANDs through
- // Initialize the graphical part
- CheckDlgButton(hwndDlg,IDC_ONLYAVAIL,BST_CHECKED); // Initially checked; display all metacontacts is only an option
- // Besides, we can check if there is at least one metacontact to add the contact to.
- if (BuildList(GetDlgItem(hwndDlg,IDC_METALIST), FALSE)<=0)
+ switch(LOWORD(wParam)) {
+ case IDOK:
{
- if (MessageBox(hwndDlg,Translate("Either there is no MetaContact in the database (in this case you should first convert a contact into one)\n"
- "or there is none that can host this contact.\n"
- "Another solution could be to convert this contact into a new MetaContact.\n\nConvert this contact into a new MetaContact?"),
- Translate("No suitable MetaContact found"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1)==IDYES)
- Meta_Convert((WPARAM)lParam,0);
- DestroyWindow(hwndDlg);
- return TRUE;
+ HANDLE hContact = (HANDLE)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
+ int item; // Get the index of the selected metacontact
+ if ((item = SendMessage(GetDlgItem(hwndDlg, IDC_METALIST),LB_GETCURSEL, 0, 0))==-1)
+ return IDOK == MessageBox(hwndDlg, TranslateT("Please select a MetaContact"), TranslateT("No MetaContact selected"), MB_ICONHAND);
+
+ HANDLE hMeta = (HANDLE)SendMessage(GetDlgItem(hwndDlg, IDC_METALIST), LB_GETITEMDATA, (WPARAM)item, 0);
+ if ( !Meta_Assign(hContact,hMeta, FALSE))
+ MessageBox(hwndDlg, TranslateT("Assignment to the MetaContact failed."), TranslateT("Assignment failure"),MB_ICONERROR);
}
- else
- {
- // Get the name displayed in the CList...
-
- // get contact display name from clist
- char *szCDN = (char *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)lParam, 0);
- if (os_unicode_enabled) {
- wchar_t *swzCDN = (wchar_t *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)lParam, GCDNF_UNICODE),
- *swzContactDisplayName;
- wchar_t buf[256];
-
- // detect if the clist provided unicode display name by comparing with non-unicode
- if (szCDN && swzCDN && strncmp(szCDN, (char *)swzCDN, strlen(szCDN)) != 0) {
- swzContactDisplayName = swzCDN;
- } else {
- // no? convert to unicode
- if (szCDN) {
- swzContactDisplayName = (wchar_t *) _alloca(sizeof(wchar_t) * (strlen(szCDN) + 1));
- MultiByteToWideChar(CP_ACP, 0, (char *) szCDN, -1, swzContactDisplayName, (int)strlen((char *)szCDN) + 1);
- } else {
- swzContactDisplayName = TranslateW(L"a contact");
- }
- }
-
- // ... and set it to the Window title.
- //MessageBoxW(hwndDlg, swzContactDisplayName, L"Setting window title", MB_OK);
-
- // note - the swprintf function has changed (includes size_t for vc8+)
- //swprintf(buf, 256, TranslateW(L"Adding %s..."), swzContactDisplayName);
- // this *should* work for vc6, 7, and 8 (thx George)
- _snwprintf(buf, 256, TranslateW(L"Adding %s..."), swzContactDisplayName);
-
- SetWindowTextW(hwndDlg, buf);
- } else {
- char buf[256];
- sprintf(buf,Translate("Adding %s..."), szCDN);
- SetWindowText(hwndDlg, buf);
- }
+ case IDCANCEL:
+ DestroyWindow(hwndDlg);
+ break;
- ShowWindow(hwndDlg,SW_SHOWNORMAL);
+ case IDC_CHK_SRT:
+ SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_METALIST), GWL_STYLE, GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_METALIST), GWL_STYLE) ^ LBS_SORT);
+ if (BuildList(GetDlgItem(hwndDlg,IDC_METALIST), IsDlgButtonChecked(hwndDlg, IDC_CHK_SRT) ? TRUE : FALSE) <= 0) {
+ if (MessageBox(hwndDlg, TranslateT(szConvMsg), TranslateT("No suitable MetaContact found"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1) == IDYES)
+ Meta_Convert((WPARAM)lParam, 0);
+ DestroyWindow(hwndDlg);
return TRUE;
}
- }
- case WM_COMMAND:
- if (HIWORD(wParam)!=BN_CLICKED)
- break; // Only clicks of buttons are relevant, let other COMMANDs through
- switch(LOWORD(wParam))
- {
- case IDOK:
- {
- HANDLE hMeta, hContact = (HANDLE)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
- int item; // Get the index of the selected metacontact
- if ((item = SendMessage(GetDlgItem(hwndDlg, IDC_METALIST),LB_GETCURSEL, 0, 0))==-1)
- return IDOK == MessageBox(hwndDlg,Translate("Please select a MetaContact"),Translate("No MetaContact selected"),MB_ICONHAND);
-
- hMeta = (HANDLE)SendMessage(GetDlgItem(hwndDlg, IDC_METALIST), LB_GETITEMDATA, (WPARAM)item, 0);
-
- {
- if ( !Meta_Assign(hContact,hMeta, FALSE))
- {
- MessageBox(hwndDlg, Translate("Assignment to the MetaContact failed."), Translate("Assignment failure"),MB_ICONERROR);
- }
- }
- }
- case IDCANCEL:
- DestroyWindow(hwndDlg);
- break;
-
- case IDC_CHK_SRT:
- SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_METALIST), GWL_STYLE, GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_METALIST), GWL_STYLE) ^ LBS_SORT);
- if (BuildList(GetDlgItem(hwndDlg,IDC_METALIST), IsDlgButtonChecked(hwndDlg, IDC_CHK_SRT) ? TRUE : FALSE)<=0)
- {
- if (MessageBox(hwndDlg,Translate("Either there is no MetaContact in the database (in this case you should first convert a contact into one)\n"
- "or there is none that can host this contact.\n"
- "Another solution could be to convert this contact into a new MetaContact.\n\nConvert this contact into a new MetaContact?"),
- Translate("No suitable MetaContact found"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1)==IDYES)
- Meta_Convert((WPARAM)lParam,0);
- DestroyWindow(hwndDlg);
- return TRUE;
- }
- break;
- }
break;
- case WM_DESTROY:
- { // Free all allocated memory and return the focus to the CList
- HWND clist = GetParent(hwndDlg);
- ReleaseIconEx((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0));
- EndDialog(hwndDlg,TRUE);
- SetFocus(clist);
- return TRUE;
}
+ break;
+
+ case WM_DESTROY:
+ // Free all allocated memory and return the focus to the CList
+ HWND clist = GetParent(hwndDlg);
+ ReleaseIconEx((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0));
+ EndDialog(hwndDlg,TRUE);
+ SetFocus(clist);
+ return TRUE;
}
return FALSE; // All other Message are not handled
}
diff --git a/plugins/MetaContacts/src/edit.cpp b/plugins/MetaContacts/src/edit.cpp
index cf21c42edb..a908734c50 100644
--- a/plugins/MetaContacts/src/edit.cpp
+++ b/plugins/MetaContacts/src/edit.cpp
@@ -24,6 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* Contains all the functions and all the structures
* needed to display and control the <b>'Edit'</b> Dialog.
*/
+
#include "metacontacts.h"
//! Holds the differents changes that have to made
@@ -44,132 +45,93 @@ CHANGES changes; //!< \c global CHANGES structure
*
* @param chg : Structure holding all the change info (See CHANGES).
*/
-void FillContactList(HWND hWndDlg, CHANGES *chg) {
- HWND hList = GetDlgItem(hWndDlg, IDC_LST_CONTACTS);
- char *proto, *field, buff[256];
- int i;
- LVITEM LvItem;
- DBVARIANT dbv;
- LVITEMW LvItemW; // for unicode nicks
+void FillContactList(HWND hWndDlg, CHANGES *chg)
+{
+ HWND hList = GetDlgItem(hWndDlg, IDC_LST_CONTACTS);
+ TCHAR buff[256];
- SendMessage(hList,LVM_DELETEALLITEMS,0,0);
+ SendMessage(hList, LVM_DELETEALLITEMS, 0, 0);
- ZeroMemory(&LvItem, sizeof(LvItem));
- LvItem.mask=LVIF_TEXT; // Text Style
+ LVITEM LvItem = { 0 };
+ LvItem.mask = LVIF_TEXT; // Text Style
LvItem.cchTextMax = 256; // Max size of test
- ZeroMemory(&LvItemW, sizeof(LvItemW));
- LvItemW.mask=LVIF_TEXT; // Text Style
- LvItemW.cchTextMax = 256; // Max size of test
-
- for (i = 0; i < chg->num_contacts; i++) {
+ for (int i = 0; i < chg->num_contacts; i++) {
LvItem.iItem = i;
- LvItemW.iItem = i;
-
- {
-
- char *szCDN = (char *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)chg->hContact[i], 0);
-
- if (os_unicode_enabled) {
- wchar_t *swzCDN = (wchar_t *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)chg->hContact[i], GCDNF_UNICODE),
- *swzContactDisplayName;
-
- LvItemW.iSubItem = 0; // clist display name
-
- // detect if the clist provided unicode display name by comparing with non-unicode
- if (szCDN && swzCDN && strncmp(szCDN, (char *)swzCDN, strlen(szCDN)) != 0 && wcslen(swzCDN) >= strlen(szCDN)) {
- swzContactDisplayName = swzCDN;
- } else {
- // no? convert to unicode
- if (szCDN) {
- swzContactDisplayName = (wchar_t *) _alloca(sizeof(wchar_t) * (strlen(szCDN) + 1));
- MultiByteToWideChar(CP_ACP, 0, (char *) szCDN, -1, swzContactDisplayName, (int)strlen((char *)szCDN) + 1);
- } else {
- swzContactDisplayName = TranslateW(L"(Unknown Contact)");
- }
- }
-
- LvItemW.pszText = swzContactDisplayName;
- SendMessageW(hList, LVM_INSERTITEMW, 0, (LPARAM)&LvItemW);
- } else {
- LvItem.iSubItem = 0; // clist display name
- LvItem.pszText = szCDN;
- SendMessage(hList, LVM_INSERTITEM, 0, (LPARAM)&LvItem);
- }
- }
-
+
+ TCHAR *ptszCDN = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)chg->hContact[i], GCDNF_TCHAR);
+ if (ptszCDN == NULL)
+ ptszCDN = TranslateT("(Unknown Contact)");
+ LvItem.iSubItem = 0; // clist display name
+ LvItem.pszText = ptszCDN;
+ ListView_InsertItem(hList, &LvItem);
LvItem.iSubItem = 1; // id
+ char *szProto = GetContactProto(chg->hContact[i]);
+ if (szProto) {
+ char *szField = (char *)CallProtoService(szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
- proto = GetContactProto(chg->hContact[i]);
- if (proto) {
- field = (char *)CallProtoService(proto,PS_GETCAPS,PFLAG_UNIQUEIDSETTING,0);
-
- db_get(chg->hContact[i],proto,field,&dbv);
- switch(dbv.type)
- {
+ DBVARIANT dbv;
+ if ( !db_get(chg->hContact[i], szProto, szField, &dbv)) {
+ switch(dbv.type) {
case DBVT_ASCIIZ:
- sprintf(buff,"%s",dbv.pszVal);
+ _tcsncpy(buff, _A2T(dbv.pszVal), SIZEOF(buff));
+ break;
+ case DBVT_WCHAR:
+ _tcsncpy(buff, dbv.ptszVal, SIZEOF(buff));
break;
case DBVT_BYTE:
- sprintf(buff,"%d",dbv.bVal);
+ _itot(dbv.bVal, buff, 10);
break;
case DBVT_WORD:
- sprintf(buff,"%d",dbv.wVal);
+ _itot(dbv.wVal, buff, 10);
break;
case DBVT_DWORD:
- sprintf(buff,"%d",(int)dbv.dVal);
+ _itot(dbv.dVal, buff, 10);
break;
default:
- //sprintf(buff,"");
buff[0] = 0;
+ }
+ db_free(&dbv);
}
- db_free(&dbv);
+ else buff[0] = 0;
LvItem.pszText = buff;
SendMessage(hList,LVM_SETITEM,0,(LPARAM)&LvItem); // Enter text to SubItems
LvItem.iSubItem = 2; // protocol
- LvItem.pszText = proto;
- SendMessage(hList,LVM_SETITEM,0,(LPARAM)&LvItem); // Enter text to SubItems
- } else {
- LvItem.pszText = "Unknown";
- SendMessage(hList,LVM_SETITEM,0,(LPARAM)&LvItem); // Enter text to SubItems
+ _tcsncpy(buff, _A2T(szProto), SIZEOF(buff));
+ ListView_SetItem(hList, &LvItem);
+ }
+ else {
+ LvItem.pszText = _T("Unknown");
+ ListView_SetItem(hList, &LvItem);
LvItem.iSubItem = 2; // protocol
- LvItem.pszText = "Unknown";
- SendMessage(hList,LVM_SETITEM,0,(LPARAM)&LvItem); // Enter text to SubItems
+ ListView_SetItem(hList, &LvItem);
}
LvItem.iSubItem = 3; // Default (Yes/No)
- LvItem.pszText = (chg->hContact[i] == chg->hDefaultContact ? Translate("Yes") : Translate("No"));
- SendMessage(hList,LVM_SETITEM,0,(LPARAM)&LvItem); // Enter text to SubItems
+ LvItem.pszText = (chg->hContact[i] == chg->hDefaultContact ? TranslateT("Yes") : TranslateT("No"));
+ ListView_SetItem(hList, &LvItem);
LvItem.iSubItem = 4; // Offline (Yes/No)
- LvItem.pszText = (chg->hContact[i] == chg->hOfflineContact ? Translate("Yes") : Translate("No"));
- SendMessage(hList,LVM_SETITEM,0,(LPARAM)&LvItem); // Enter text to SubItems
+ LvItem.pszText = (chg->hContact[i] == chg->hOfflineContact ? TranslateT("Yes") : TranslateT("No"));
+ ListView_SetItem(hList, &LvItem);
}
}
-
-void SetListSelection(HWND hList, int sel) {
- LVITEM LvItem;
-
- ZeroMemory(&LvItem, sizeof(LvItem));
- LvItem.iItem = sel;
- LvItem.mask = LVIF_STATE;
- LvItem.stateMask = LVIS_SELECTED|LVIS_FOCUSED;
- LvItem.state = LVIS_SELECTED|LVIS_FOCUSED;
-
- SendMessage(hList, LVM_SETITEMSTATE, (WPARAM)sel, (LPARAM)&LvItem);
-
+void SetListSelection(HWND hList, int sel)
+{
+ ListView_SetItemState(hList, sel, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}
/** Scans the \c CHANGES and call the appropriate function for each change.
*
* @param chg : Structure holding all the change info (See CHANGES).
*/
+
void ApplyChanges(CHANGES *chg)
{
HANDLE most_online;
@@ -223,7 +185,7 @@ void ApplyChanges(CHANGES *chg)
_tcscpy(AI.filename, _T("X"));
if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS)
- DBWriteContactSettingTString(chg->hMeta, "ContactPhoto", "File",AI.filename);
+ db_set_ts(chg->hMeta, "ContactPhoto", "File",AI.filename);
}
if (MetaAPI_GetForceState((WPARAM)chg->hMeta, 0) != chg->force_default)
@@ -233,33 +195,19 @@ void ApplyChanges(CHANGES *chg)
LRESULT ProcessCustomDraw (LPARAM lParam)
{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam;
-
- switch(lplvcd->nmcd.dwDrawStage)
- {
- case CDDS_PREPAINT : //Before the paint cycle begins
- //request notifications for individual listview items
- return CDRF_NOTIFYITEMDRAW;
-
- case CDDS_ITEMPREPAINT: //Before an item is drawn
- /*
- if (((int)lplvcd->nmcd.dwItemSpec%2)==0)
- {
- //customize item appearance
- //lplvcd->clrText = RGB(255,0,0);
- lplvcd->clrTextBk = RGB(200,200,200);
- }
- else{
- //lplvcd->clrText = RGB(0,0,255);
- lplvcd->clrTextBk = RGB(255,255,255);
- }
- */
- if (changes.hContact[(int)lplvcd->nmcd.dwItemSpec] == changes.hDefaultContact) {
- lplvcd->clrText = RGB(255, 0, 0);
- }
- return CDRF_NEWFONT;
- }
-
- return 0;
+ switch(lplvcd->nmcd.dwDrawStage) {
+ case CDDS_PREPAINT : //Before the paint cycle begins
+ //request notifications for individual listview items
+ return CDRF_NOTIFYITEMDRAW;
+
+ case CDDS_ITEMPREPAINT: //Before an item is drawn
+ if (changes.hContact[(int)lplvcd->nmcd.dwItemSpec] == changes.hDefaultContact) {
+ lplvcd->clrText = RGB(255, 0, 0);
+ }
+ return CDRF_NEWFONT;
+ }
+
+ return 0;
}
/** Callback function for the <b>'Edit'</b> Dialog.
@@ -273,73 +221,59 @@ LRESULT ProcessCustomDraw (LPARAM lParam)
*
* @return \c TRUE if the dialog processed the message, \c FALSE if it did not.
*/
+
#define WMU_SETTITLE (WM_USER + 1)
INT_PTR CALLBACK Meta_EditDialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
HWND hwnd;
- char *str;
int sel, i;
- switch(msg)
- {
- case WM_INITDIALOG:
+ switch(msg) {
+ case WM_INITDIALOG:
+ TranslateDialogDefault( hwndDlg );
+ SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIconEx(I_EDIT));
{
- // Font necessary for all controls created with CreateWindowsEx
- //HFONT hfDefault = GetStockObject(DEFAULT_GUI_FONT);
- //HWND combo = GetDlgItem(hwndDlg,IDC_DEFAULT);
- int nb_contacts, default_contact_number, offline_contact_number;
- LVCOLUMN LvCol;
-
- TranslateDialogDefault( hwndDlg );
-
- SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadIconEx(I_EDIT));
-
// Disable the 'Apply' button.
EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),FALSE);
- // (from http://www.codeproject.com/listctrl/listview.asp)
- // initialize list
hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
- SendMessage(hwnd,LVM_SETEXTENDEDLISTVIEWSTYLE, 0,LVS_EX_FULLROWSELECT); // Set style
+ ListView_SetExtendedListViewStyle(hwnd, LVS_EX_FULLROWSELECT);
// Create list columns
- ZeroMemory(&LvCol, sizeof(LvCol));
- LvCol.mask=LVCF_TEXT|LVCF_WIDTH|LVCF_SUBITEM; // Type of mask
-
- // Inserting Couloms as much as we want
- LvCol.pszText=Translate("Contact"); // First Header Text
- LvCol.cx=100; // width of column
- SendMessage(hwnd,LVM_INSERTCOLUMN,0,(LPARAM)&LvCol); // Insert/Show the coloum
-
- LvCol.pszText=Translate("Id"); // Next coloum
- LvCol.cx=130; // width of column
- SendMessage(hwnd,LVM_INSERTCOLUMN,1,(LPARAM)&LvCol); // ...
- LvCol.pszText=Translate("Protocol"); //
- LvCol.cx=100; // width of column
- SendMessage(hwnd,LVM_INSERTCOLUMN,2,(LPARAM)&LvCol); //
- LvCol.pszText=Translate("Default"); //
- LvCol.cx=60; // width of column
- SendMessage(hwnd,LVM_INSERTCOLUMN,3,(LPARAM)&LvCol); //
- LvCol.pszText=Translate("Send Offline"); //
- LvCol.cx=85; // width of column
- SendMessage(hwnd,LVM_INSERTCOLUMN,4,(LPARAM)&LvCol); //
-
+ LVCOLUMN LvCol = { 0 };
+ LvCol.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
+
+ LvCol.pszText = TranslateT("Contact");
+ LvCol.cx = 100;
+ ListView_InsertColumn(hwnd, 0, &LvCol);
+
+ LvCol.pszText = TranslateT("Id");
+ LvCol.cx = 130;
+ ListView_InsertColumn(hwnd, 1, &LvCol);
+
+ LvCol.pszText = TranslateT("Protocol");
+ LvCol.cx = 100;
+ ListView_InsertColumn(hwnd, 2, &LvCol);
+
+ LvCol.pszText = TranslateT("Default");
+ LvCol.cx = 60;
+ ListView_InsertColumn(hwnd, 3, &LvCol);
+
+ LvCol.pszText = TranslateT("Send Offline");
+ LvCol.cx = 85;
+ ListView_InsertColumn(hwnd, 4, &LvCol);
+
// disable buttons until a selection is made in the list
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_REM);
- EnableWindow(hwnd, FALSE);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_SETDEFAULT);
- EnableWindow(hwnd, FALSE);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_SETOFFLINE);
- EnableWindow(hwnd, FALSE);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_UP);
- EnableWindow(hwnd, FALSE);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_DOWN);
- EnableWindow(hwnd, FALSE);
-
- nb_contacts = db_get_dw((HANDLE)lParam, META_PROTO, "NumContacts", 0);
- default_contact_number = db_get_dw((HANDLE)lParam, META_PROTO, "Default", (DWORD)-1);
- offline_contact_number = db_get_dw((HANDLE)lParam, META_PROTO, "OfflineSend", (DWORD)-1);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_REM), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETDEFAULT), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETOFFLINE), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), FALSE);
+
+ int nb_contacts = db_get_dw((HANDLE)lParam, META_PROTO, "NumContacts", 0);
+ int default_contact_number = db_get_dw((HANDLE)lParam, META_PROTO, "Default", (DWORD)-1);
+ int offline_contact_number = db_get_dw((HANDLE)lParam, META_PROTO, "OfflineSend", (DWORD)-1);
changes.hMeta = (HANDLE)lParam;
changes.num_contacts = nb_contacts;
@@ -355,230 +289,178 @@ INT_PTR CALLBACK Meta_EditDialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR
CheckDlgButton(hwndDlg, IDC_CHK_FORCEDEFAULT, changes.force_default);
FillContactList(hwndDlg, &changes);
- return TRUE;
}
- case WMU_SETTITLE:
- {
-
- char *szCDN = (char *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)lParam, 0);
- if (os_unicode_enabled) {
- wchar_t *swzCDN = (wchar_t *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)lParam, GCDNF_UNICODE),
- *swzContactDisplayName;
-
- // detect if the clist provided unicode display name by comparing with non-unicode
- if (szCDN && swzCDN && strncmp(szCDN, (char *)swzCDN, strlen(szCDN)) != 0 && wcslen(swzCDN) >= strlen(szCDN)) {
- swzContactDisplayName = swzCDN;
- } else {
- // no? convert to unicode
- if (szCDN) {
- swzContactDisplayName = (wchar_t *) _alloca(sizeof(wchar_t) * (strlen(szCDN) + 1));
- MultiByteToWideChar(CP_ACP, 0, (char *) szCDN, -1, swzContactDisplayName, (int)strlen((char *)szCDN) + 1);
- } else {
- swzContactDisplayName = TranslateW(L"(Unknown Contact)");
- }
- }
+ return TRUE;
+
+ case WMU_SETTITLE:
+ {
+ TCHAR *ptszCDN = (TCHAR*) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)lParam, GCDNF_UNICODE);
+ if (ptszCDN == NULL)
+ ptszCDN = TranslateT("(Unknown Contact)");
- SetWindowTextW(GetDlgItem(hwndDlg,IDC_ED_NAME), swzContactDisplayName);
- } else {
- SetWindowText(GetDlgItem(hwndDlg,IDC_ED_NAME), szCDN);
+ SetWindowText(GetDlgItem(hwndDlg, IDC_ED_NAME), ptszCDN);
+ }
+ return TRUE;
+
+ case WM_NOTIFY: // the message that is being sent always
+ switch(LOWORD(wParam)) { // hit control
+ case IDC_LST_CONTACTS: // did we hit our ListView contorl?
+ if (((LPNMHDR)lParam)->code == NM_CLICK) {
+ sel = ListView_GetNextItem(GetDlgItem(hwndDlg, IDC_LST_CONTACTS), -1, LVNI_FOCUSED|LVNI_SELECTED); // return item selected
+
+ // enable buttons
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_REM), sel != -1);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETDEFAULT), sel != -1 && changes.hContact[sel] != changes.hDefaultContact);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETOFFLINE), sel != -1 && changes.hContact[sel] != changes.hOfflineContact);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), sel > 0);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), (sel != -1 && sel < changes.num_contacts - 1));
+ }
+ }
+ break;
+
+ case WM_COMMAND:
+ switch(HIWORD(wParam)) {
+ case BN_CLICKED: // A button ('Remove', 'Ok', 'Cancel' or 'Apply', normally) has been clicked
+ switch(LOWORD(wParam)) {
+ case IDC_VALIDATE: // Apply changes, if there is still one contact attached to the metacontact.
+ if (changes.num_contacts == 0) { // Otherwise, delete the metacontact.
+ if (IDYES == MessageBox(hwndDlg, TranslateT(szDelMsg), TranslateT("Delete MetaContact?"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1)) {
+ Meta_Delete((WPARAM)changes.hMeta, 0);
+ DestroyWindow(hwndDlg);
+ }
+ return TRUE;
}
- }
- return TRUE;
- case WM_NOTIFY: // the message that is being sent always
- switch(LOWORD(wParam)) // hit control
- {
- case IDC_LST_CONTACTS: // did we hit our ListView contorl?
- if (((LPNMHDR)lParam)->code == NM_CLICK) {
- hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
- sel=SendMessage(hwnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED|LVNI_SELECTED); // return item selected
- // enable buttons
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_REM);
- EnableWindow(hwnd, sel!=-1);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_SETDEFAULT);
- EnableWindow(hwnd, sel!=-1 && changes.hContact[sel] != changes.hDefaultContact);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_SETOFFLINE);
- EnableWindow(hwnd, sel!=-1 && changes.hContact[sel] != changes.hOfflineContact);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_UP);
- EnableWindow(hwnd, (sel > 0));
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_DOWN);
- EnableWindow(hwnd, (sel != -1) && (sel < changes.num_contacts - 1));
-/*
- // custom draw stuff - change colour of listview things - doesn't affect selection :(
- } else if (((LPNMHDR)lParam)->code == NM_CUSTOMDRAW) {
- SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, (LONG)ProcessCustomDraw(lParam));
- return TRUE;
-*/
- }
- break;
- }
- break;
- case WM_COMMAND:
- switch(HIWORD(wParam))
- {
- case BN_CLICKED: // A button ('Remove', 'Ok', 'Cancel' or 'Apply', normally) has been clicked
- switch(LOWORD(wParam))
- {
- case IDC_VALIDATE: // Apply changes, if there is still one contact attached to the metacontact.
- if (changes.num_contacts == 0) // Otherwise, delete the metacontact.
- {
- if (MessageBox(hwndDlg,Translate("You are going to remove all the contacts associated with this MetaContact.\nThis will delete the MetaContact.\n\nProceed Anyway?"),
- Translate("Delete MetaContact?"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1)!=IDYES)
- return TRUE;
- else
- {
- Meta_Delete((WPARAM)changes.hMeta,0);
- DestroyWindow(hwndDlg);
- return TRUE;
- }
- }
- ApplyChanges(&changes);
-
- // Disable the 'Apply' button.
- EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),FALSE);
- break;
- case IDOK:
- if (IsWindowEnabled(GetDlgItem(hwndDlg,IDC_VALIDATE)))
- { // If there are changes that could be made,
- if (changes.num_contacts == 0) // do the work that would have be done if
- { // the button 'Apply' has been clicked.
- if (MessageBox(hwndDlg,Translate("You are going to remove all the contacts associated with this MetaContact.\nThis will delete the MetaContact.\n\nProceed Anyway?"),
- Translate("Delete MetaContact?"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1)!=IDYES)
- {
- return TRUE;
- } else {
- Meta_Delete((WPARAM)changes.hMeta,0);
- DestroyWindow(hwndDlg);
- return TRUE;
- }
- }
- ApplyChanges(&changes);
- }
- EndDialog(hwndDlg, IDOK);
- return TRUE;
- case IDCANCEL: // Simply close the dialog
- EndDialog(hwndDlg, IDCANCEL);
- return TRUE;
- case IDC_BTN_SETDEFAULT:
- hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
- sel=SendMessage(hwnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED|LVNI_SELECTED); // return item selected
- InvalidateRect(hwnd, 0, TRUE);
- changes.hDefaultContact = changes.hContact[sel];
- SendMessage(hwndDlg, WMU_SETTITLE, 0, (LPARAM)changes.hContact[sel]);
-
- FillContactList(hwndDlg, &changes);
- SetListSelection(hwnd, sel);
- // Disable set default button
- EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_SETDEFAULT),FALSE);
- // Enable the 'Apply' button.
- EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
-
- // repaint list
- return TRUE;
- case IDC_BTN_SETOFFLINE:
- hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
- sel=SendMessage(hwnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED|LVNI_SELECTED); // return item selected
- InvalidateRect(hwnd, 0, TRUE);
- changes.hOfflineContact = changes.hContact[sel];
-
- FillContactList(hwndDlg, &changes);
- SetListSelection(hwnd, sel);
- // Disable set offline button
- EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_SETOFFLINE),FALSE);
- // Enable the 'Apply' button.
- EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
-
- // repaint list
- return TRUE;
- case IDC_BTN_REM:
- hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
- sel=SendMessage(hwnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED|LVNI_SELECTED); // return item selected
- changes.num_contacts--;
- changes.hDeletedContacts[changes.num_deleted++] = changes.hContact[sel];
- if (changes.hDefaultContact == changes.hContact[sel]) {
- if (changes.num_contacts > 0) {
- changes.hDefaultContact = changes.hContact[0];
- str = (char *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)changes.hDefaultContact, 0);
- SetWindowText(GetDlgItem(hwndDlg,IDC_ED_DEFAULT),str);
- } else {
- changes.hDefaultContact = 0;
- SetWindowText(GetDlgItem(hwndDlg,IDC_ED_DEFAULT),"None");
- }
-
- }
-
- for (i = sel; i < changes.num_contacts; i++)
- changes.hContact[i] = changes.hContact[i + 1];
- FillContactList(hwndDlg, &changes);
- // disable buttons
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_REM);
- EnableWindow(hwnd, FALSE);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_SETDEFAULT);
- EnableWindow(hwnd, FALSE);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_SETOFFLINE);
- EnableWindow(hwnd, FALSE);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_UP);
- EnableWindow(hwnd, FALSE);
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_DOWN);
- EnableWindow(hwnd, FALSE);
- // Enable the 'Apply' button.
- EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
- return TRUE;
- case IDC_BTN_UP:
- hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
- sel=SendMessage(hwnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED|LVNI_SELECTED); // return item selected
-
- {
- HANDLE temp = changes.hContact[sel];
- changes.hContact[sel] = changes.hContact[sel - 1];
- changes.hContact[sel - 1] = temp;
- }
- FillContactList(hwndDlg, &changes);
- sel--;
- SetListSelection(hwnd, sel);
-
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_UP);
- EnableWindow(hwnd, (sel > 0));
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_DOWN);
- EnableWindow(hwnd, (sel < changes.num_contacts - 1));
- // Enable the 'Apply' button.
- EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
- return TRUE;
- case IDC_BTN_DOWN:
- hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
- sel=SendMessage(hwnd,LVM_GETNEXTITEM,-1,LVNI_FOCUSED|LVNI_SELECTED); // return item selected
-
- {
- HANDLE temp = changes.hContact[sel];
- changes.hContact[sel] = changes.hContact[sel + 1];
- changes.hContact[sel + 1] = temp;
- }
- FillContactList(hwndDlg, &changes);
- sel++;
- SetListSelection(hwnd, sel);
-
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_UP);
- EnableWindow(hwnd, (sel > 0));
- hwnd = GetDlgItem(hwndDlg, IDC_BTN_DOWN);
- EnableWindow(hwnd, (sel < changes.num_contacts - 1));
- // Enable the 'Apply' button.
- EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
- return TRUE;
- case IDC_CHK_FORCEDEFAULT:
- changes.force_default = IsDlgButtonChecked(hwndDlg, IDC_CHK_FORCEDEFAULT);
- // Enable the 'Apply' button.
- EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
- return TRUE;
+ ApplyChanges(&changes);
+
+ // Disable the 'Apply' button.
+ EnableWindow(GetDlgItem(hwndDlg, IDC_VALIDATE), FALSE);
+ break;
+
+ case IDOK:
+ if ( IsWindowEnabled(GetDlgItem(hwndDlg, IDC_VALIDATE))) { // If there are changes that could be made,
+ if (changes.num_contacts == 0) { // do the work that would have be done if the 'Apply' button was clicked.
+ if (IDYES == MessageBox(hwndDlg, TranslateT(szDelMsg), TranslateT("Delete MetaContact?"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1)) {
+ Meta_Delete((WPARAM)changes.hMeta,0);
+ DestroyWindow(hwndDlg);
+ }
+ return TRUE;
+ }
+ ApplyChanges(&changes);
+ }
+ EndDialog(hwndDlg, IDOK);
+ return TRUE;
+
+ case IDCANCEL: // Simply close the dialog
+ EndDialog(hwndDlg, IDCANCEL);
+ return TRUE;
+
+ case IDC_BTN_SETDEFAULT:
+ hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
+ sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED);
+ InvalidateRect(hwnd, 0, TRUE);
+ changes.hDefaultContact = changes.hContact[sel];
+ SendMessage(hwndDlg, WMU_SETTITLE, 0, (LPARAM)changes.hContact[sel]);
+
+ FillContactList(hwndDlg, &changes);
+ SetListSelection(hwnd, sel);
+ EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_SETDEFAULT),FALSE);
+ EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
+ return TRUE;
+
+ case IDC_BTN_SETOFFLINE:
+ hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
+ sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED);
+ InvalidateRect(hwnd, 0, TRUE);
+ changes.hOfflineContact = changes.hContact[sel];
+
+ FillContactList(hwndDlg, &changes);
+ SetListSelection(hwnd, sel);
+ EnableWindow(GetDlgItem(hwndDlg,IDC_BTN_SETOFFLINE),FALSE);
+ EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
+ return TRUE;
+
+ case IDC_BTN_REM:
+ hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
+ sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED);
+ changes.num_contacts--;
+ changes.hDeletedContacts[changes.num_deleted++] = changes.hContact[sel];
+ if (changes.hDefaultContact == changes.hContact[sel]) {
+ if (changes.num_contacts > 0) {
+ changes.hDefaultContact = changes.hContact[0];
+ TCHAR *str = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)changes.hDefaultContact, GCDNF_TCHAR);
+ SetWindowText(GetDlgItem(hwndDlg,IDC_ED_DEFAULT),str);
}
+ else {
+ changes.hDefaultContact = 0;
+ SetWindowText(GetDlgItem(hwndDlg,IDC_ED_DEFAULT), _T("None"));
+ }
+ }
+
+ for (i = sel; i < changes.num_contacts; i++)
+ changes.hContact[i] = changes.hContact[i + 1];
+ FillContactList(hwndDlg, &changes);
+
+ // disable buttons
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_REM), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETDEFAULT), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_SETOFFLINE), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), FALSE);
+
+ // Enable the 'Apply' button.
+ EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
+ return TRUE;
+
+ case IDC_BTN_UP:
+ hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
+ sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED);
+ {
+ HANDLE temp = changes.hContact[sel];
+ changes.hContact[sel] = changes.hContact[sel - 1];
+ changes.hContact[sel - 1] = temp;
+ }
+ FillContactList(hwndDlg, &changes);
+ sel--;
+ SetListSelection(hwnd, sel);
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), (sel > 0));
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), (sel < changes.num_contacts - 1));
+ EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
+ return TRUE;
+
+ case IDC_BTN_DOWN:
+ hwnd = GetDlgItem(hwndDlg, IDC_LST_CONTACTS);
+ sel = ListView_GetNextItem(hwnd, -1, LVNI_FOCUSED | LVNI_SELECTED);
+ {
+ HANDLE temp = changes.hContact[sel];
+ changes.hContact[sel] = changes.hContact[sel + 1];
+ changes.hContact[sel + 1] = temp;
+ }
+ FillContactList(hwndDlg, &changes);
+ sel++;
+ SetListSelection(hwnd, sel);
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_UP), (sel > 0));
+ EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_DOWN), (sel < changes.num_contacts - 1));
+ EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
+ return TRUE;
+
+ case IDC_CHK_FORCEDEFAULT:
+ changes.force_default = IsDlgButtonChecked(hwndDlg, IDC_CHK_FORCEDEFAULT);
+ EnableWindow(GetDlgItem(hwndDlg,IDC_VALIDATE),TRUE);
+ return TRUE;
}
- break;
- case WM_CLOSE:
- DestroyWindow(hwndDlg);
- return TRUE;
-
- case WM_DESTROY:
- ReleaseIconEx((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0));
- EndDialog(hwndDlg, IDCANCEL);
- break;
+ }
+ break;
+
+ case WM_CLOSE:
+ DestroyWindow(hwndDlg);
+ return TRUE;
+
+ case WM_DESTROY:
+ ReleaseIconEx((HICON)SendMessage(hwndDlg, WM_SETICON, ICON_BIG, 0));
+ EndDialog(hwndDlg, IDCANCEL);
+ break;
}
return FALSE;
diff --git a/plugins/MetaContacts/src/icons.cpp b/plugins/MetaContacts/src/icons.cpp
index 54f56e2a84..e56aab6195 100644
--- a/plugins/MetaContacts/src/icons.cpp
+++ b/plugins/MetaContacts/src/icons.cpp
@@ -65,10 +65,10 @@ void InitIcons(void)
TCHAR path[MAX_PATH];
GetModuleFileName(hInstance, path, SIZEOF(path));
- SKINICONDESC sid = {0};
- sid.cbSize = sizeof(SKINICONDESC);
+ SKINICONDESC sid = { sizeof(sid) };
+ sid.flags = SIDF_PATH_TCHAR;
sid.pszSection = META_PROTO;
- sid.pszDefaultFile = path;
+ sid.ptszDefaultFile = path;
for (int i=0; i < SIZEOF(iconList); ++i) {
sid.pszDescription = iconList[i].szDescr;
diff --git a/plugins/MetaContacts/src/meta_main.cpp b/plugins/MetaContacts/src/meta_main.cpp
index 5ff2d14878..cf98970716 100644
--- a/plugins/MetaContacts/src/meta_main.cpp
+++ b/plugins/MetaContacts/src/meta_main.cpp
@@ -164,7 +164,7 @@ extern "C" __declspec(dllexport) int Load(void)
HANDLE hContact = db_find_first();
while (hContact != NULL) {
char *proto = GetContactProto(hContact);
- if (proto && !lstrcmp( META_PROTO, proto)) {
+ if (proto && !lstrcmpA( META_PROTO, proto)) {
db_set_w(hContact, META_PROTO, "Status", ID_STATUS_OFFLINE);
db_set_dw(hContact, META_PROTO, "IdleTS", 0);
db_set_b(hContact, META_PROTO, "ContactCountCheck", 0);
@@ -189,7 +189,7 @@ extern "C" __declspec(dllexport) int Load(void)
if (Meta_SetHandles()) {
// error - db corruption
if ( !db_get_b(0, META_PROTO, "DisabledMessageShown", 0)) {
- MessageBox(0, Translate("Error - Database corruption.\nPlugin disabled."), Translate("MetaContacts"), MB_OK | MB_ICONERROR);
+ MessageBox(0, TranslateT("Error - Database corruption.\nPlugin disabled."), TranslateT("MetaContacts"), MB_OK | MB_ICONERROR);
db_set_b(0, META_PROTO, "DisabledMessageShown", 1);
}
//Meta_HideMetaContacts(TRUE);
diff --git a/plugins/MetaContacts/src/meta_menu.cpp b/plugins/MetaContacts/src/meta_menu.cpp
index 0d7d82d7a7..18f446b0cc 100644
--- a/plugins/MetaContacts/src/meta_menu.cpp
+++ b/plugins/MetaContacts/src/meta_menu.cpp
@@ -35,43 +35,34 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* @param wParam : \c HANDLE to the contact that has been chosen.
* @param lParam : Allways set to 0.
*/
-INT_PTR Meta_Convert(WPARAM wParam,LPARAM lParam)
+
+INT_PTR Meta_Convert(WPARAM wParam, LPARAM lParam)
{
- HANDLE hMetaContact;
DBVARIANT dbv;
- char *group = 0;//, *proto;
+ char *group = 0;
// Get some information about the selected contact.
-// proto = GetContactProto(wParam,0);
- if ( !DBGetContactSettingStringUtf((HANDLE)wParam,"CList","Group",&dbv)) {
+ if ( !db_get_utf((HANDLE)wParam, "CList", "Group", &dbv)) {
group = _strdup(dbv.pszVal);
db_free(&dbv);
}
// Create a new metacontact
- hMetaContact = (HANDLE)CallService(MS_DB_CONTACT_ADD,0,0);
-
- // Add the info for the metacontact
- if (hMetaContact)
- {
-
+ HANDLE hMetaContact = (HANDLE)CallService(MS_DB_CONTACT_ADD,0,0);
+ if (hMetaContact) {
db_set_dw(hMetaContact, META_PROTO, META_ID,nextMetaID);
db_set_dw(hMetaContact, META_PROTO, "NumContacts",0);
- db_set_dw(NULL, META_PROTO, "NextMetaID",++nextMetaID);
+ db_set_dw(NULL, META_PROTO, "NextMetaID", ++nextMetaID);
// Add the MetaContact protocol to the new meta contact
- CallService( MS_PROTO_ADDTOCONTACT, ( WPARAM )hMetaContact, ( LPARAM )META_PROTO );
+ CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hMetaContact, (LPARAM)META_PROTO);
- if (group) {
- if (ServiceExists(MS_DB_CONTACT_GETSETTING_STR))
- DBWriteContactSettingStringUtf(hMetaContact,"CList","Group",group);
- else
- db_set_s(hMetaContact,"CList","Group",group);
- }
+ if (group)
+ db_set_utf(hMetaContact, "CList", "Group", group);
// Assign the contact to the MetaContact just created (and make default).
- if ( !Meta_Assign((HANDLE)wParam,hMetaContact,TRUE)) {
- MessageBox(0,Translate("There was a problem in assigning the contact to the MetaContact"),Translate("Error"),MB_ICONEXCLAMATION);
+ if ( !Meta_Assign((HANDLE)wParam, hMetaContact, TRUE)) {
+ MessageBox(0, TranslateT("There was a problem in assigning the contact to the MetaContact"), TranslateT("Error"), MB_ICONEXCLAMATION);
CallService(MS_DB_CONTACT_DELETE, (WPARAM)hMetaContact, 0);
return 0;
}
@@ -79,14 +70,13 @@ INT_PTR Meta_Convert(WPARAM wParam,LPARAM lParam)
// hide the contact if clist groups disabled (shouldn't create one anyway since menus disabled)
if ( !Meta_IsEnabled())
db_set_b(hMetaContact, "CList", "Hidden", 1);
-
}
// Update the graphics
- CallService(MS_CLUI_SORTLIST,0,0);
+ CallService(MS_CLUI_SORTLIST, 0, 0);
free(group);
- return (int)hMetaContact;
+ return (INT_PTR)hMetaContact;
}
/** Display the <b>'Add to'</b> Dialog
@@ -97,10 +87,11 @@ INT_PTR Meta_Convert(WPARAM wParam,LPARAM lParam)
* @param wParam : \c HANDLE to the contact that has been chosen.
* @param lParam : Allways set to 0.
*/
+
INT_PTR Meta_AddTo(WPARAM wParam, LPARAM lParam)
{
- HWND clui = (HWND)CallService(MS_CLUI_GETHWND,0,0);
- DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_METASELECT),clui,&Meta_SelectDialogProc,(LPARAM)wParam);
+ HWND clui = (HWND)CallService(MS_CLUI_GETHWND, 0, 0);
+ DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_METASELECT), clui, &Meta_SelectDialogProc, (LPARAM)wParam);
return 0;
}
@@ -113,8 +104,8 @@ INT_PTR Meta_AddTo(WPARAM wParam, LPARAM lParam)
*/
INT_PTR Meta_Edit(WPARAM wParam,LPARAM lParam)
{
- HWND clui = (HWND)CallService(MS_CLUI_GETHWND,0,0);
- DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_METAEDIT),clui, Meta_EditDialogProc,(LPARAM)wParam);
+ HWND clui = (HWND)CallService(MS_CLUI_GETHWND, 0, 0);
+ DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_METAEDIT), clui, Meta_EditDialogProc, (LPARAM)wParam);
return 0;
}
@@ -141,99 +132,88 @@ Triggers a db/contact/settingchanged event just before it returns.
void Meta_RemoveContactNumber(HANDLE hMeta, int number)
{
- int i, num_contacts, default_contact;
- HANDLE hContact;//, handle;
-
- char buffer[512], buffer2[512];
-
- num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", 0);
- default_contact = db_get_dw(hMeta, META_PROTO, "Default", -1);
- if (number >= 0 && number < num_contacts) {
-
- // get the handle
- hContact = Meta_GetContactHandle(hMeta, number);
-
- // make sure this contact thinks it's part of this metacontact
- if ((HANDLE)db_get_dw(hContact, META_PROTO, "Handle", 0) == hMeta) {
+ int num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", 0);
+ int default_contact = db_get_dw(hMeta, META_PROTO, "Default", -1);
+ if (number < 0 && number >= num_contacts)
+ return;
+
+ // get the handle
+ HANDLE hContact = Meta_GetContactHandle(hMeta, number);
+
+ // make sure this contact thinks it's part of this metacontact
+ if ((HANDLE)db_get_dw(hContact, META_PROTO, "Handle", 0) == hMeta) {
+ // remove link to meta contact
+ db_unset(hContact, META_PROTO, "IsSubcontact");
+ db_unset(hContact, META_PROTO, META_LINK);
+ db_unset(hContact, META_PROTO, "Handle");
+ db_unset(hContact, META_PROTO, "ContactNumber");
+ // unhide - must be done after removing link (see meta_services.c:Meta_ChangeStatus)
+ Meta_RestoreGroup(hContact);
+ db_unset(hContact, META_PROTO, "OldCListGroup");
+
+ // stop ignoring, if we were
+ if (options.suppress_status)
+ CallService(MS_IGNORE_UNIGNORE, (WPARAM)hContact, (WPARAM)IGNOREEVENT_USERONLINE);
+ }
- // remove link to meta contact
- db_unset(hContact, META_PROTO, "IsSubcontact");
- db_unset(hContact, META_PROTO, META_LINK);
- db_unset(hContact, META_PROTO, "Handle");
- db_unset(hContact, META_PROTO, "ContactNumber");
- // unhide - must be done after removing link (see meta_services.c:Meta_ChangeStatus)
- Meta_RestoreGroup(hContact);
- db_unset(hContact, META_PROTO, "OldCListGroup");
+ // each contact from 'number' upwards will be moved down one
+ // and the last one will be deleted
+ for (int i = number + 1; i < num_contacts; i++)
+ Meta_SwapContacts(hMeta, i, i-1);
- // stop ignoring, if we were
- if (options.suppress_status)
- CallService(MS_IGNORE_UNIGNORE, (WPARAM)hContact, (WPARAM)IGNOREEVENT_USERONLINE);
- }
+ // remove the last one
+ char buffer[512], idStr[20];
+ _itoa(num_contacts-1, idStr, 10);
+ strcpy(buffer, "Protocol"); strcat(buffer, idStr);
+ db_unset(hMeta, META_PROTO, buffer);
- // remove history from metacontact
- //Meta_RemoveHistory(hMeta, hContact);
+ strcpy(buffer, "Status"); strcat(buffer, idStr);
+ db_unset(hMeta, META_PROTO, buffer);
- // each contact from 'number' upwards will be moved down one
- // and the last one will be deleted
- for (i = number + 1; i < num_contacts; i++) {
- Meta_SwapContacts(hMeta, i, i-1);
- }
+ strcpy(buffer, "Handle"); strcat(buffer, idStr);
+ db_unset(hMeta, META_PROTO, buffer);
- // remove the last one
- strcpy(buffer, "Protocol");
- strcat(buffer, _itoa((num_contacts - 1), buffer2, 10));
- db_unset(hMeta, META_PROTO, buffer);
- strcpy(buffer, "Status");
- strcat(buffer, _itoa((num_contacts - 1), buffer2, 10));
- db_unset(hMeta, META_PROTO, buffer);
- strcpy(buffer, "Handle");
- strcat(buffer, _itoa((num_contacts - 1), buffer2, 10));
- db_unset(hMeta, META_PROTO, buffer);
- strcpy(buffer, "StatusString");
- strcat(buffer, _itoa((num_contacts - 1), buffer2, 10));
- db_unset(hMeta, META_PROTO, buffer);
- strcpy(buffer, "Login");
- strcat(buffer, _itoa((num_contacts - 1), buffer2, 10));
- db_unset(hMeta, META_PROTO, buffer);
- strcpy(buffer, "Nick");
- strcat(buffer, _itoa((num_contacts - 1), buffer2, 10));
- db_unset(hMeta, META_PROTO, buffer);
- strcpy(buffer, "CListName");
- strcat(buffer, _itoa((num_contacts - 1), buffer2, 10));
- db_unset(hMeta, META_PROTO, buffer);
-
- // if the default contact was equal to or greater than 'number', decrement it (and deal with ends)
- if (default_contact >= number) {
- default_contact--;
- if (default_contact < 0)
- default_contact = 0;
-
- db_set_dw(hMeta, META_PROTO, "Default", (DWORD)default_contact);
- NotifyEventHooks(hEventDefaultChanged, (WPARAM)hMeta, (LPARAM)Meta_GetContactHandle(hMeta, default_contact));
- }
- num_contacts--;
- db_set_dw(hMeta, META_PROTO, "NumContacts", (DWORD)num_contacts);
+ strcpy(buffer, "StatusString"); strcat(buffer, idStr);
+ db_unset(hMeta, META_PROTO, buffer);
- // fix nick
- hContact = Meta_GetMostOnline(hMeta);
- Meta_CopyContactNick(hMeta, hContact);
+ strcpy(buffer, "Login"); strcat(buffer, idStr);
+ db_unset(hMeta, META_PROTO, buffer);
- // fix status
- Meta_FixStatus(hMeta);
+ strcpy(buffer, "Nick"); strcat(buffer, idStr);
+ db_unset(hMeta, META_PROTO, buffer);
- // fix avatar
- hContact = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_4, PF4_AVATARS);
- if (hContact) {
- PROTO_AVATAR_INFORMATIONT AI;
+ strcpy(buffer, "CListName"); strcat(buffer, idStr);
+ db_unset(hMeta, META_PROTO, buffer);
- AI.cbSize = sizeof(AI);
- AI.hContact = hMeta;
- AI.format = PA_FORMAT_UNKNOWN;
- _tcscpy(AI.filename, _T("X"));
+ // if the default contact was equal to or greater than 'number', decrement it (and deal with ends)
+ if (default_contact >= number) {
+ default_contact--;
+ if (default_contact < 0)
+ default_contact = 0;
- if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS)
- DBWriteContactSettingTString(hMeta, "ContactPhoto", "File",AI.filename);
- }
+ db_set_dw(hMeta, META_PROTO, "Default", (DWORD)default_contact);
+ NotifyEventHooks(hEventDefaultChanged, (WPARAM)hMeta, (LPARAM)Meta_GetContactHandle(hMeta, default_contact));
+ }
+ num_contacts--;
+ db_set_dw(hMeta, META_PROTO, "NumContacts", (DWORD)num_contacts);
+
+ // fix nick
+ hContact = Meta_GetMostOnline(hMeta);
+ Meta_CopyContactNick(hMeta, hContact);
+
+ // fix status
+ Meta_FixStatus(hMeta);
+
+ // fix avatar
+ hContact = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_4, PF4_AVATARS);
+ if (hContact) {
+ PROTO_AVATAR_INFORMATIONT AI = { sizeof(AI) };
+ AI.hContact = hMeta;
+ AI.format = PA_FORMAT_UNKNOWN;
+ _tcscpy(AI.filename, _T("X"));
+
+ if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS)
+ db_set_ts(hMeta, "ContactPhoto", "File",AI.filename);
}
}
@@ -245,30 +225,29 @@ void Meta_RemoveContactNumber(HANDLE hMeta, int number)
* @param wParam : \c HANDLE to the MetaContact to be deleted, or to the subcontact to be removed from the MetaContact
* @param lParam : \c BOOL flag indicating whether to ask 'are you sure' when deleting a MetaContact
*/
+
INT_PTR Meta_Delete(WPARAM wParam,LPARAM lParam)
{
DWORD metaID;
- HANDLE hContact;
- if ((metaID=db_get_dw((HANDLE)wParam, META_PROTO, META_ID,(DWORD)-1))!=(DWORD)-1)
- {// The wParam is a metacontact
+ // The wParam is a metacontact
+ if ((metaID = db_get_dw((HANDLE)wParam, META_PROTO, META_ID, (DWORD)-1)) != (DWORD)-1) {
if ( !lParam) { // check from recursion - see second half of this function
- if (MessageBox((HWND)CallService(MS_CLUI_GETHWND,0,0),Translate("This will remove the MetaContact permanently.\n\nProceed Anyway?"),
- Translate("Are you sure?"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2)!=IDYES)
- {
+ if ( MessageBox((HWND)CallService(MS_CLUI_GETHWND,0,0),
+ TranslateT("This will remove the MetaContact permanently.\n\nProceed Anyway?"),
+ TranslateT("Are you sure?"),MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2) != IDYES)
return 0;
- }
}
- hContact = db_find_first();
- while(hContact)
- { // Scans the database to get all the contacts that have been previously linked to this MetaContact
- if (db_get_dw(hContact, META_PROTO, META_LINK,(DWORD)-1)==metaID)
- { // This contact is assigned to the MetaContact that will be deleted, clear the "MetaContacts" information
+ HANDLE hContact = db_find_first();
+ while(hContact) {
+ // This contact is assigned to the MetaContact that will be deleted, clear the "MetaContacts" information
+ if ( db_get_dw(hContact, META_PROTO, META_LINK,(DWORD)-1) == metaID) {
db_unset(hContact, META_PROTO, "IsSubcontact");
db_unset(hContact, META_PROTO, META_LINK);
db_unset(hContact, META_PROTO, "Handle");
db_unset(hContact, META_PROTO, "ContactNumber");
+
// unhide - must be done after removing link (see meta_services.c:Meta_ChangeStatus)
Meta_RestoreGroup(hContact);
db_unset(hContact, META_PROTO, "OldCListGroup");
@@ -279,35 +258,24 @@ INT_PTR Meta_Delete(WPARAM wParam,LPARAM lParam)
}
hContact = db_find_next(hContact);
}
- //db_unset((HANDLE)wParam, META_PROTO, META_ID);
- //db_unset((HANDLE)wParam, META_PROTO, "NumContacts");
- //CallService(MS_PROTO_REMOVEFROMCONTACT,wParam,(LPARAM)META_PROTO);
+
NotifyEventHooks(hSubcontactsChanged, (WPARAM)wParam, 0);
CallService(MS_DB_CONTACT_DELETE,wParam,0);
}
- else
- {// The wParam is a simple contact
- //if (lParam == 0)
- // return 1; // The function has been called by the menu of a simple contact. Should not happen.
- //else
- {// The function has been called by the edit dialog
- HANDLE hMeta = (HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle", 0);
-
-
- DWORD num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", -1);
-
- if (num_contacts == 1) {
- if (MessageBox(0,Translate("You are going to remove all the contacts associated with this MetaContact.\nThis will delete the MetaContact.\n\nProceed Anyway?"),
- Translate("Delete MetaContact?"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1)==IDYES)
- {
- // recurse - once
- Meta_Delete((WPARAM)hMeta,(LPARAM)1);
- }
- return 0;
- }
+ else {
+ HANDLE hMeta = (HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle", 0);
+
+
+ DWORD num_contacts = db_get_dw(hMeta, META_PROTO, "NumContacts", -1);
- Meta_RemoveContactNumber(hMeta, db_get_dw((HANDLE)wParam, META_PROTO, "ContactNumber", -1));
+ if (num_contacts == 1) {
+ if (IDYES == MessageBox(0, TranslateT(szDelMsg), TranslateT("Delete MetaContact?"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1))
+ Meta_Delete((WPARAM)hMeta,(LPARAM)1);
+
+ return 0;
}
+
+ Meta_RemoveContactNumber(hMeta, db_get_dw((HANDLE)wParam, META_PROTO, "ContactNumber", -1));
}
return 0;
}
@@ -324,8 +292,8 @@ INT_PTR Meta_Default(WPARAM wParam,LPARAM lParam)
{
HANDLE hMeta;
- if ((hMeta = (HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle",0)) != 0)
- { // the wParam is a subcontact
+ // the wParam is a subcontact
+ if ((hMeta = (HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle",0)) != 0) {
db_set_dw(hMeta, META_PROTO, "Default", (DWORD)Meta_GetContactNumber((HANDLE)wParam));
NotifyEventHooks(hEventDefaultChanged, (WPARAM)hMeta, (LPARAM)(HANDLE)wParam);
}
@@ -340,50 +308,27 @@ INT_PTR Meta_Default(WPARAM wParam,LPARAM lParam)
* @param lParam : \c HWND to the clist window
(This means the function has been called via the contact menu).
*/
+
INT_PTR Meta_ForceDefault(WPARAM wParam,LPARAM lParam)
{
- if (db_get_dw((HANDLE)wParam, META_PROTO, META_ID, (DWORD)-1) != (DWORD)-1)
- { // the wParam is a MetaContact
-
+ // the wParam is a MetaContact
+ if (db_get_dw((HANDLE)wParam, META_PROTO, META_ID, (DWORD)-1) != (DWORD)-1) {
BOOL current = db_get_b((HANDLE)wParam, META_PROTO, "ForceDefault", 0);
current = !current;
db_set_b((HANDLE)wParam, META_PROTO, "ForceDefault", (BYTE)current);
db_set_dw((HANDLE)wParam, META_PROTO, "ForceSend", 0);
- if (current) NotifyEventHooks(hEventForceSend, wParam, (LPARAM)Meta_GetContactHandle((HANDLE)wParam, db_get_dw((HANDLE)wParam, META_PROTO, "Default", -1)));
- else NotifyEventHooks(hEventUnforceSend, wParam, 0);
+ if (current)
+ NotifyEventHooks(hEventForceSend, wParam, (LPARAM)Meta_GetContactHandle((HANDLE)wParam, db_get_dw((HANDLE)wParam, META_PROTO, "Default", -1)));
+ else
+ NotifyEventHooks(hEventUnforceSend, wParam, 0);
}
return 0;
}
-INT_PTR MenuFunc0(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 0);}
-INT_PTR MenuFunc1(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 1);}
-INT_PTR MenuFunc2(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 2);}
-INT_PTR MenuFunc3(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 3);}
-INT_PTR MenuFunc4(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 4);}
-INT_PTR MenuFunc5(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 5);}
-INT_PTR MenuFunc6(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 6);}
-INT_PTR MenuFunc7(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 7);}
-INT_PTR MenuFunc8(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 8);}
-INT_PTR MenuFunc9(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 9);}
-INT_PTR MenuFunc10(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 10);}
-INT_PTR MenuFunc11(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 11);}
-INT_PTR MenuFunc12(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 12);}
-INT_PTR MenuFunc13(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 13);}
-INT_PTR MenuFunc14(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 14);}
-INT_PTR MenuFunc15(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 15);}
-INT_PTR MenuFunc16(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 16);}
-INT_PTR MenuFunc17(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 17);}
-INT_PTR MenuFunc18(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 18);}
-INT_PTR MenuFunc19(WPARAM wParam, LPARAM lParam) {return TranslateMenuFunc((HANDLE)wParam, 19);}
-
HANDLE hMenuContact[MAX_CONTACTS];
-INT_PTR TranslateMenuFunc(HANDLE hMeta, int contact_number) {
- return Meta_ContactMenuFunc((WPARAM)hMeta, (LPARAM) contact_number);
-}
-
/** Called when the context-menu of a contact is about to be displayed
*
* This will test which of the 4 menu item should be displayed, depending
@@ -392,20 +337,19 @@ INT_PTR TranslateMenuFunc(HANDLE hMeta, int contact_number) {
* @param wParam : \c HANDLE to the contact that triggered the event
* @param lParam : Always set to 0;
*/
+
int Meta_ModifyMenu(WPARAM wParam, LPARAM lParam)
{
DBVARIANT dbv;
HANDLE hContact;
- char *proto;
- char buf[512], buffer2[512];
+ char buf[512], idStr[512];
int i, iconIndex;
WORD status;
CLISTMENUITEM mi = { sizeof(mi) };
mi.flags = CMIM_FLAGS;
- if (db_get_dw((HANDLE)wParam, META_PROTO, META_ID,-1) != (DWORD)-1)
- {
+ if (db_get_dw((HANDLE)wParam, META_PROTO, META_ID,-1) != (DWORD)-1) {
int num_contacts, i;
// save the mouse pos in case they open a subcontact menu
@@ -413,103 +357,82 @@ int Meta_ModifyMenu(WPARAM wParam, LPARAM lParam)
// This is a MetaContact, show the edit, force default, and the delete menu, and hide the others
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuEdit, (LPARAM)&mi);
- //mi.flags |= CMIM_NAME;
- //if (db_get_b((HANDLE)wParam, META_PROTO, "ForceDefault", 0))
- // mi.pszName = Translate("Unforce Default");
- //else
- // mi.pszName = Translate("Force Default");
- //CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuForceDefault, (LPARAM)&mi);
+
mi.flags = CMIM_FLAGS | CMIF_HIDDEN;
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuAdd, (LPARAM)&mi);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuConvert, (LPARAM)&mi);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDefault, (LPARAM)&mi);
+
mi.flags = CMIM_FLAGS | CMIM_NAME | CMIF_HIDDEN; // we don't need delete - already in contact menu
mi.pszName = Translate("Delete MetaContact");
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDelete, (LPARAM)&mi);
-
//show subcontact menu items
num_contacts = db_get_dw((HANDLE)wParam, META_PROTO, "NumContacts", 0);
for (i = 0; i < MAX_CONTACTS; i++) {
if (i < num_contacts) {
hContact = Meta_GetContactHandle((HANDLE)wParam, i);
- proto = _strdup(GetContactProto(hContact));
-
- if ( !proto)
+ char *szProto = GetContactProto(hContact);
+ if ( !szProto)
status = ID_STATUS_OFFLINE;
else
- status = db_get_w(hContact, proto, "Status", ID_STATUS_OFFLINE);
+ status = db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE);
if (options.menu_contact_label == DNT_UID) {
strcpy(buf, "Login");
- strcat(buf, _itoa(i, buffer2, 10));
-
- db_get((HANDLE)wParam, META_PROTO, buf,&dbv);
- switch(dbv.type)
- {
- case DBVT_ASCIIZ:
- mir_snprintf(buf,512,"%s",dbv.pszVal);
- break;
- case DBVT_BYTE:
- mir_snprintf(buf,512,"%d",dbv.bVal);
- break;
- case DBVT_WORD:
- mir_snprintf(buf,512,"%d",dbv.wVal);
- break;
- case DBVT_DWORD:
- mir_snprintf(buf,512,"%d",dbv.dVal);
- break;
- default:
- buf[0] = 0;
+ strcat(buf, _itoa(i, idStr, 10));
+
+ db_get((HANDLE)wParam, META_PROTO, buf, &dbv);
+ switch(dbv.type) {
+ case DBVT_ASCIIZ:
+ mir_snprintf(buf,512,"%s",dbv.pszVal);
+ break;
+ case DBVT_BYTE:
+ mir_snprintf(buf,512,"%d",dbv.bVal);
+ break;
+ case DBVT_WORD:
+ mir_snprintf(buf,512,"%d",dbv.wVal);
+ break;
+ case DBVT_DWORD:
+ mir_snprintf(buf,512,"%d",dbv.dVal);
+ break;
+ default:
+ buf[0] = 0;
}
db_free(&dbv);
mi.pszName = buf;
mi.flags = 0;
- } else {
- char *name = (char *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, 0);
- char *wname = (char *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_UNICODE);
-
- if (wname && strncmp(name, wname, strlen(name)) != 0) {
- mi.pszName = wname;
- mi.flags = CMIF_UNICODE;
- }
- else {
- mi.pszName = name;
- mi.flags = 0;
- }
+ }
+ else {
+ mi.ptszName = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR);
+ mi.flags = CMIF_TCHAR;
}
mi.flags |= CMIM_FLAGS | CMIM_NAME | CMIM_ICON;
- //mi.hIcon = LoadSkinnedProtoIcon(proto, status);
iconIndex = (int)CallService(MS_CLIST_GETCONTACTICON, (WPARAM)hContact, 0);
mi.hIcon = ImageList_GetIcon((HIMAGELIST)CallService(MS_CLIST_GETICONSIMAGELIST, 0, 0), iconIndex, 0);;
- free(proto);
-
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuContact[i], (LPARAM)&mi);
DestroyIcon(mi.hIcon);
- } else {
+ }
+ else {
mi.flags = CMIM_FLAGS | CMIF_HIDDEN;
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuContact[i], (LPARAM)&mi);
}
}
// show hide nudge menu item
-#define MS_NUDGE_SHOWMENU "NudgeShowMenu"
-// wParam = char *szProto
-// lParam = BOOL show
- {
- char serviceFunc[256];
- hContact = Meta_GetMostOnline((HANDLE)wParam);
- mir_snprintf(serviceFunc, 256, "%s/SendNudge", GetContactProto(hContact));
- CallService(MS_NUDGE_SHOWMENU, (WPARAM)META_PROTO, (LPARAM)ServiceExists(serviceFunc));
- }
+ #define MS_NUDGE_SHOWMENU "NudgeShowMenu"
+ // wParam = char *szProto
+ // lParam = BOOL show
+ char serviceFunc[256];
+ hContact = Meta_GetMostOnline((HANDLE)wParam);
+ mir_snprintf(serviceFunc, 256, "%s/SendNudge", GetContactProto(hContact));
+ CallService(MS_NUDGE_SHOWMENU, (WPARAM)META_PROTO, (LPARAM)ServiceExists(serviceFunc));
}
- else
- {// This is a simple contact
- if ( !Meta_IsEnabled())
- {
+ else { // This is a simple contact
+ if ( !Meta_IsEnabled()) {
// groups disabled - all meta menu options hidden
mi.flags = CMIM_FLAGS | CMIF_HIDDEN;
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDefault, (LPARAM)&mi);
@@ -517,26 +440,19 @@ int Meta_ModifyMenu(WPARAM wParam, LPARAM lParam)
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuAdd, (LPARAM)&mi);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuConvert, (LPARAM)&mi);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuEdit, (LPARAM)&mi);
- for (i = 0; i < MAX_CONTACTS; i++) {
- mi.flags = CMIM_FLAGS | CMIF_HIDDEN;
- CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuContact[i], (LPARAM)&mi);
- }
-
- } else if (db_get_dw((HANDLE)wParam, META_PROTO, META_LINK,(DWORD)-1)!=(DWORD)-1) {
+ }
+ else if (db_get_dw((HANDLE)wParam, META_PROTO, META_LINK,(DWORD)-1)!=(DWORD)-1) {
// The contact is affected to a metacontact.
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDefault, (LPARAM)&mi);
- mi.flags |= CMIM_NAME;
- mi.pszName = (char *)Translate("Remove from MetaContact");
+ mi.flags |= CMIM_NAME | CMIF_TCHAR;
+ mi.ptszName = (TCHAR*)TranslateT("Remove from MetaContact");
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDelete, (LPARAM)&mi);
mi.flags = CMIM_FLAGS | CMIF_HIDDEN;
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuAdd, (LPARAM)&mi);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuConvert, (LPARAM)&mi);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuEdit, (LPARAM)&mi);
- for (i = 0; i < MAX_CONTACTS; i++) {
- mi.flags = CMIM_FLAGS | CMIF_HIDDEN;
- CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuContact[i], (LPARAM)&mi);
- }
- } else {
+ }
+ else {
// The contact is neutral
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuAdd, (LPARAM)&mi);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuConvert, (LPARAM)&mi);
@@ -544,14 +460,12 @@ int Meta_ModifyMenu(WPARAM wParam, LPARAM lParam)
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuEdit, (LPARAM)&mi);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDelete, (LPARAM)&mi);
CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDefault, (LPARAM)&mi);
- for (i = 0; i < MAX_CONTACTS; i++) {
- mi.flags = CMIM_FLAGS | CMIF_HIDDEN;
- CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuContact[i], (LPARAM)&mi);
- }
+ }
+
+ for (i = 0; i < MAX_CONTACTS; i++) {
+ mi.flags = CMIM_FLAGS | CMIF_HIDDEN;
+ CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuContact[i], (LPARAM)&mi);
}
}
return 0;
}
-
-
-
diff --git a/plugins/MetaContacts/src/meta_options.cpp b/plugins/MetaContacts/src/meta_options.cpp
index 0db9eed1b0..b4b5ecd330 100644
--- a/plugins/MetaContacts/src/meta_options.cpp
+++ b/plugins/MetaContacts/src/meta_options.cpp
@@ -33,18 +33,18 @@ MetaOptions options_changes;
INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
HWND hw;
- char buff[512];
+ TCHAR buff[40];
switch ( msg ) {
- case WM_INITDIALOG: {
+ case WM_INITDIALOG:
TranslateDialogDefault( hwndDlg );
options_changes = options;
-
+
CheckDlgButton(hwndDlg, IDC_CHK_SETDEFAULTRECV, options_changes.set_default_on_recv ? TRUE : FALSE);
hw = GetDlgItem(hwndDlg, IDC_CHK_TEMPDEFAULT);
EnableWindow(hw, options_changes.set_default_on_recv);
CheckDlgButton(hwndDlg, IDC_CHK_TEMPDEFAULT, options_changes.temp_default ? TRUE : FALSE);
-
+
CheckDlgButton(hwndDlg, IDC_CHK_ALWAYSUSEDEFAULT, options_changes.always_use_default ? TRUE : FALSE);
CheckDlgButton(hwndDlg, IDC_CHK_SUPPRESSSTATUS, options_changes.suppress_status ? TRUE : FALSE);
CheckDlgButton(hwndDlg, IDC_CHK_SUPPRESSPROTO, options_changes.suppress_proto ? TRUE : FALSE);
@@ -75,156 +75,136 @@ INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPara
CheckDlgButton(hwndDlg, IDC_CHK_COPYHISTORY, options_changes.copy_subcontact_history ? TRUE : FALSE);
hw = GetDlgItem(hwndDlg, IDC_ED_DAYS);
- _itoa(options_changes.days_history, buff, 10);
+ _itot(options_changes.days_history, buff, 10);
SetWindowText(hw, buff);
-
return TRUE;
- }
+
case WM_COMMAND:
if ( HIWORD( wParam ) == BN_CLICKED ) {
switch( LOWORD( wParam )) {
case IDC_CHK_SETDEFAULTRECV:
options_changes.set_default_on_recv = IsDlgButtonChecked(hwndDlg, IDC_CHK_SETDEFAULTRECV);
- hw = GetDlgItem(hwndDlg, IDC_CHK_TEMPDEFAULT);
- EnableWindow(hw, options_changes.set_default_on_recv);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_TEMPDEFAULT), options_changes.set_default_on_recv);
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_CHK_TEMPDEFAULT:
- hw = GetDlgItem(hwndDlg, IDC_CHK_TEMPDEFAULT);
options_changes.temp_default = IsDlgButtonChecked(hwndDlg, IDC_CHK_TEMPDEFAULT);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_CHK_ALWAYSUSEDEFAULT:
- hw = GetDlgItem(hwndDlg, IDC_CHK_ALWAYSUSEDEFAULT);
options_changes.always_use_default = IsDlgButtonChecked(hwndDlg, IDC_CHK_ALWAYSUSEDEFAULT);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_CHK_SUPPRESSSTATUS:
- hw = GetDlgItem(hwndDlg, IDC_CHK_SUPPRESSSTATUS);
options_changes.suppress_status = IsDlgButtonChecked(hwndDlg, IDC_CHK_SUPPRESSSTATUS);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_CHK_SUPPRESSPROTO:
- hw = GetDlgItem(hwndDlg, IDC_CHK_SUPPRESSPROTO);
options_changes.suppress_proto = IsDlgButtonChecked(hwndDlg, IDC_CHK_SUPPRESSPROTO);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_CHK_COPYHISTORY:
- hw = GetDlgItem(hwndDlg, IDC_CHK_COPYHISTORY);
options_changes.copy_subcontact_history = IsDlgButtonChecked(hwndDlg, IDC_CHK_COPYHISTORY);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_CHK_METAHISTORY:
- hw = GetDlgItem(hwndDlg, IDC_CHK_METAHISTORY);
options_changes.metahistory = IsDlgButtonChecked(hwndDlg, IDC_CHK_METAHISTORY);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_CHK_SUBHISTORY:
- hw = GetDlgItem(hwndDlg, IDC_CHK_SUBHISTORY);
options_changes.subhistory = IsDlgButtonChecked(hwndDlg, IDC_CHK_SUBHISTORY);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_CHK_COPYDATA:
- hw = GetDlgItem(hwndDlg, IDC_CHK_COPYDATA);
options_changes.copydata = IsDlgButtonChecked(hwndDlg, IDC_CHK_COPYDATA);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_RAD_UID:
- hw = GetDlgItem(hwndDlg, IDC_RAD_UID);
if (IsDlgButtonChecked(hwndDlg, IDC_RAD_UID)) {
options_changes.menu_contact_label = DNT_UID;
CheckDlgButton(hwndDlg, IDC_RAD_DID, FALSE);
}
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_RAD_DID:
- hw = GetDlgItem(hwndDlg, IDC_RAD_DID);
if (IsDlgButtonChecked(hwndDlg, IDC_RAD_DID)) {
options_changes.menu_contact_label = DNT_DID;
CheckDlgButton(hwndDlg, IDC_RAD_UID, FALSE);
}
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_RAD_MSG:
- hw = GetDlgItem(hwndDlg, IDC_RAD_MSG);
if (IsDlgButtonChecked(hwndDlg, IDC_RAD_MSG)) {
options_changes.menu_function = FT_MSG;
CheckDlgButton(hwndDlg, IDC_RAD_MENU, FALSE);
CheckDlgButton(hwndDlg, IDC_RAD_INFO, FALSE);
}
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_RAD_MENU:
- hw = GetDlgItem(hwndDlg, IDC_RAD_MENU);
if (IsDlgButtonChecked(hwndDlg, IDC_RAD_MENU)) {
options_changes.menu_function = FT_MENU;
CheckDlgButton(hwndDlg, IDC_RAD_MSG, FALSE);
CheckDlgButton(hwndDlg, IDC_RAD_INFO, FALSE);
}
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_RAD_INFO:
- hw = GetDlgItem(hwndDlg, IDC_RAD_INFO);
if (IsDlgButtonChecked(hwndDlg, IDC_RAD_INFO)) {
options_changes.menu_function = FT_INFO;
CheckDlgButton(hwndDlg, IDC_RAD_MSG, FALSE);
CheckDlgButton(hwndDlg, IDC_RAD_MENU, FALSE);
}
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_RAD_NICK:
- hw = GetDlgItem(hwndDlg, IDC_RAD_NICK);
if (IsDlgButtonChecked(hwndDlg, IDC_RAD_NICK)) {
options_changes.clist_contact_name = CNNT_NICK;
CheckDlgButton(hwndDlg, IDC_RAD_NAME, FALSE);
}
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_RAD_NAME:
- hw = GetDlgItem(hwndDlg, IDC_RAD_NAME);
if (IsDlgButtonChecked(hwndDlg, IDC_RAD_NAME)) {
options_changes.clist_contact_name = CNNT_DISPLAYNAME;
CheckDlgButton(hwndDlg, IDC_RAD_NICK, FALSE);
}
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case IDC_CHK_SUBWINDOW:
- hw = GetDlgItem(hwndDlg, IDC_CHK_SUBWINDOW);
options_changes.subcontact_windows = IsDlgButtonChecked(hwndDlg, IDC_CHK_SUBWINDOW);
if (options_changes.subcontact_windows) {
- hw = GetDlgItem(hwndDlg, IDC_CHK_METAHISTORY);
- EnableWindow(hw, TRUE);
- hw = GetDlgItem(hwndDlg, IDC_CHK_SUBHISTORY);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_METAHISTORY), TRUE);
CheckDlgButton(hwndDlg, IDC_CHK_SUBHISTORY, TRUE);
- EnableWindow(hw, FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_SUBHISTORY), FALSE);
options_changes.subhistory = TRUE;
} else {
- hw = GetDlgItem(hwndDlg, IDC_CHK_SUBHISTORY);
- EnableWindow(hw, TRUE);
- hw = GetDlgItem(hwndDlg, IDC_CHK_METAHISTORY);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_SUBHISTORY), TRUE);
CheckDlgButton(hwndDlg, IDC_CHK_METAHISTORY, TRUE);
- EnableWindow(hw, FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_METAHISTORY), FALSE);
options_changes.metahistory = TRUE;
}
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
+
case IDC_CHK_LOCKHANDLE:
options_changes.lockHandle = IsDlgButtonChecked(hwndDlg, IDC_CHK_LOCKHANDLE);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
}
- } else if ( HIWORD( wParam ) == EN_CHANGE && ( HWND )lParam == GetFocus()) {
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ }
+ else if ( HIWORD( wParam ) == EN_CHANGE && ( HWND )lParam == GetFocus()) {
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
}
break;
case WM_NOTIFY:
if (((LPNMHDR)lParam)->code == PSN_APPLY ) {
hw = GetDlgItem(hwndDlg, IDC_ED_DAYS);
- GetWindowText(hw, buff, 512);
- if (strlen(buff) > 0)
- options_changes.days_history = atoi(buff);
+ GetWindowText(hw, buff, SIZEOF(buff));
+ if (buff[0] != 0)
+ options_changes.days_history = _ttoi(buff);
options = options_changes;
Meta_WriteOptions(&options);
@@ -239,7 +219,8 @@ INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPara
return FALSE;
}
-int Meta_WriteOptions(MetaOptions *opt) {
+int Meta_WriteOptions(MetaOptions *opt)
+{
db_set_b(NULL, META_PROTO, "SetDefaultOnRecv", (BYTE)(opt->set_default_on_recv ? 1 : 0));
db_set_b(NULL, META_PROTO, "TempDefault", (BYTE)(opt->temp_default ? 1 : 0));
db_set_b(NULL, META_PROTO, "AlwaysUseDefault", (BYTE)(opt->always_use_default ? 1 : 0));
@@ -271,7 +252,8 @@ int Meta_WriteOptions(MetaOptions *opt) {
db_set_b(NULL, META_PROTO, "UseProtoRecv", (BYTE)(opt->use_proto_recv ? 1 : 0));
}
-int Meta_ReadOptions(MetaOptions *opt) {
+int Meta_ReadOptions(MetaOptions *opt)
+{
opt->set_default_on_recv = (db_get_b(NULL, META_PROTO, "SetDefaultOnRecv", 1) == 1 ? TRUE : FALSE);
opt->temp_default = (db_get_b(NULL, META_PROTO, "TempDefault", 1) == 1 ? TRUE : FALSE);
opt->always_use_default = (db_get_b(NULL, META_PROTO, "AlwaysUseDefault", 1) == 1 ? TRUE : FALSE);
@@ -288,7 +270,7 @@ int Meta_ReadOptions(MetaOptions *opt) {
opt->lockHandle = (db_get_b(NULL, META_PROTO, "LockHandle", 0) == 1 ? TRUE : FALSE);
opt->flash_meta_message_icon = (db_get_b(NULL, META_PROTO, "MetaMessageIcon", 1) == 1 ? TRUE : FALSE);
opt->copy_userinfo = (db_get_b(NULL, META_PROTO, "CopyUserInfo", 1) == 1 ? TRUE : FALSE);
-
+
if ( !opt->subcontact_windows)
opt->metahistory = TRUE;
else
@@ -316,7 +298,8 @@ int Meta_ReadOptions(MetaOptions *opt) {
#define ID_STATUS_OUTTOLUNCH 40080 ->3
*/
-int GetDefaultPrio(int status) {
+int GetDefaultPrio(int status)
+{
switch( status ) {
case ID_STATUS_OFFLINE: return 8;
case ID_STATUS_AWAY: return 4;
@@ -338,39 +321,37 @@ typedef struct {
ProtoStatusPrio *priorities = 0;
-int GetRealPriority(char *proto, int status) {
+int GetRealPriority(char *proto, int status)
+{
char szSetting[256];
if ( !proto) {
mir_snprintf(szSetting, 256, "DefaultPrio_%d", status);
return db_get_w(0, META_PROTO, szSetting, GetDefaultPrio(status));
- } else {
- int prio;
- mir_snprintf(szSetting, 256, "ProtoPrio_%s%d", proto, status);
- prio = db_get_w(0, META_PROTO, szSetting, 0xFFFF);
- if (prio == 0xFFFF) {
- mir_snprintf(szSetting, 256, "DefaultPrio_%d", status);
- return db_get_w(0, META_PROTO, szSetting, GetDefaultPrio(status));
- } else
- return prio;
}
- return 0xFFFF;
+
+ mir_snprintf(szSetting, 256, "ProtoPrio_%s%d", proto, status);
+ int prio = db_get_w(0, META_PROTO, szSetting, 0xFFFF);
+ if (prio == 0xFFFF) {
+ mir_snprintf(szSetting, 256, "DefaultPrio_%d", status);
+ return db_get_w(0, META_PROTO, szSetting, GetDefaultPrio(status));
+ }
+ return prio;
}
-void ReadPriorities() {
- int num_protocols;
- PROTOACCOUNT **pppDesc;
+void ReadPriorities()
+{
char szSetting[256];
- ProtoStatusPrio * current;
- int i, j;
-
+ int num_protocols, i, j;
+ PROTOACCOUNT **pppDesc;
ProtoEnumAccounts(&num_protocols, &pppDesc);
- current = priorities = (ProtoStatusPrio *)malloc((num_protocols + 1) * sizeof(ProtoStatusPrio));
+ ProtoStatusPrio *current = priorities = (ProtoStatusPrio *)malloc((num_protocols + 1) * sizeof(ProtoStatusPrio));
for (i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) {
mir_snprintf(szSetting, 256, "DefaultPrio_%d", i);
current->def[i - ID_STATUS_OFFLINE] = TRUE;
current->prio[i - ID_STATUS_OFFLINE] = db_get_w(0, META_PROTO, szSetting, GetDefaultPrio(i));
}
+
for (i = 0; i < num_protocols; i++) {
current = priorities + (i + 1);
for (j = ID_STATUS_OFFLINE; j <= ID_STATUS_OUTTOLUNCH; j++) {
@@ -381,13 +362,14 @@ void ReadPriorities() {
}
}
-void WritePriorities() {
- int num_protocols;
- PROTOACCOUNT **pppDesc;
+void WritePriorities()
+{
char szSetting[256];
- ProtoStatusPrio * current = priorities;
+ ProtoStatusPrio *current = priorities;
int i, j;
+ int num_protocols;
+ PROTOACCOUNT **pppDesc;
ProtoEnumAccounts(&num_protocols, &pppDesc);
for (i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) {
@@ -409,54 +391,49 @@ void WritePriorities() {
}
}
-int GetIsDefault(int proto_index, int status) {
+int GetIsDefault(int proto_index, int status)
+{
return (priorities + (proto_index + 1))->def[status - ID_STATUS_OFFLINE];
}
-BOOL GetPriority(int proto_index, int status) {
- ProtoStatusPrio * current;
- if (proto_index == -1) {
+BOOL GetPriority(int proto_index, int status)
+{
+ if (proto_index == -1)
+ return priorities->prio[status - ID_STATUS_OFFLINE];
+
+ ProtoStatusPrio *current = priorities + (proto_index + 1);
+ if (current->def[status - ID_STATUS_OFFLINE])
current = priorities;
- return current->prio[status - ID_STATUS_OFFLINE];
- } else {
- current = priorities + (proto_index + 1);
- if (current->def[status - ID_STATUS_OFFLINE]) {
- current = priorities;
- }
- return current->prio[status - ID_STATUS_OFFLINE];
- }
- return 0xFFFF;
+
+ return current->prio[status - ID_STATUS_OFFLINE];
}
-void SetPriority(int proto_index, int status, BOOL def, int prio) {
- ProtoStatusPrio * current;
+void SetPriority(int proto_index, int status, BOOL def, int prio)
+{
if (prio < 0) prio = 0;
if (prio > 500) prio = 500;
- if (proto_index == -1) {
- current = priorities;
- current->prio[status - ID_STATUS_OFFLINE] = prio;
- } else {
- current = priorities + (proto_index + 1);
+ if (proto_index == -1)
+ priorities->prio[status - ID_STATUS_OFFLINE] = prio;
+ else {
+ ProtoStatusPrio *current = priorities + (proto_index + 1);
current->def[status - ID_STATUS_OFFLINE] = def;
- if ( !def) {
+ if ( !def)
current->prio[status - ID_STATUS_OFFLINE] = prio;
- }
}
}
-void ResetPriorities() {
- int num_protocols;
+void ResetPriorities()
+{
+ int i, j, num_protocols;
PROTOACCOUNT **pppDesc;
- ProtoStatusPrio * current;
- int i, j;
-
ProtoEnumAccounts(&num_protocols, &pppDesc);
- current = priorities;
+ ProtoStatusPrio *current = priorities;
for (i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) {
current->def[i - ID_STATUS_OFFLINE] = TRUE;
current->prio[i - ID_STATUS_OFFLINE] = GetDefaultPrio(i);
}
+
for (i = 0; i < num_protocols; i++) {
current = priorities + (i + 1);
for (j = ID_STATUS_OFFLINE; j <= ID_STATUS_OUTTOLUNCH; j++) {
@@ -471,6 +448,7 @@ void ResetPriorities() {
INT_PTR CALLBACK DlgProcOptsPriorities(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
HWND hw;
+ int sel;
switch ( msg ) {
case WM_INITDIALOG:
@@ -480,13 +458,12 @@ INT_PTR CALLBACK DlgProcOptsPriorities(HWND hwndDlg, UINT msg, WPARAM wParam, LP
{
int num_protocols;
PROTOACCOUNT **pppDesc;
- int i, index;
-
ProtoEnumAccounts(&num_protocols, &pppDesc);
+
hw = GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL);
- index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)Translate("<default>"));
+ int index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)Translate("<default>"));
SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, -1);
- for (i = 0; i < num_protocols; i++) {
+ for (int i = 0; i < num_protocols; i++) {
if (strcmp(pppDesc[i]->szModuleName, META_PROTO) != 0) {
index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)pppDesc[i]->szModuleName);
SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, i);
@@ -498,105 +475,106 @@ INT_PTR CALLBACK DlgProcOptsPriorities(HWND hwndDlg, UINT msg, WPARAM wParam, LP
SendMessage(hwndDlg, WMU_FILLPRIODATA, 0, 0);
}
return FALSE;
+
case WMU_FILLPRIODATA:
- {
- int sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0);
+ sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0);
+ if (sel != -1) {
+ int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0);
+ sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETCURSEL, 0, 0);
if (sel != -1) {
- int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0);
- sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETCURSEL, 0, 0);
- if (sel != -1) {
- int status = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETITEMDATA, (WPARAM)sel, 0);
- SetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, GetPriority(index, status), FALSE);
- if (index == -1) {
+ int status = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETITEMDATA, (WPARAM)sel, 0);
+ SetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, GetPriority(index, status), FALSE);
+ if (index == -1) {
+ EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), TRUE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), TRUE);
+ CheckDlgButton(hwndDlg, IDC_CHK_DEFAULT, TRUE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_DEFAULT), FALSE);
+ }
+ else {
+ if (GetIsDefault(index, status)) {
+ CheckDlgButton(hwndDlg, IDC_CHK_DEFAULT, TRUE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), FALSE);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), FALSE);
+ }
+ else {
+ CheckDlgButton(hwndDlg, IDC_CHK_DEFAULT, FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), TRUE);
EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), TRUE);
- CheckDlgButton(hwndDlg, IDC_CHK_DEFAULT, TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_DEFAULT), FALSE);
- } else {
- if (GetIsDefault(index, status)) {
- CheckDlgButton(hwndDlg, IDC_CHK_DEFAULT, TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), FALSE);
- } else {
- CheckDlgButton(hwndDlg, IDC_CHK_DEFAULT, FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), TRUE);
- }
-
- EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_DEFAULT), TRUE);
}
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_CHK_DEFAULT), TRUE);
}
}
}
return TRUE;
+
case WMU_FILLSTATUSCMB:
- {
- int sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0);
- if (sel != -1) {
- int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0);
- HWND hw = GetDlgItem(hwndDlg, IDC_CMB_STATUS);
- SendMessage(hw, CB_RESETCONTENT, 0, 0);
- if (index == -1) {
- int i;
- for (i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) {
- index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)(char *)CallService(MS_CLIST_GETSTATUSMODEDESCRIPTION, i, 0));
- SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, i);
- }
- } else {
- int num_protocols, caps, i;
- PROTOACCOUNT **pppDesc;
- ProtoEnumAccounts(&num_protocols, &pppDesc);
+ sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0);
+ if (sel != -1) {
+ int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0);
+ HWND hw = GetDlgItem(hwndDlg, IDC_CMB_STATUS);
+ SendMessage(hw, CB_RESETCONTENT, 0, 0);
+ if (index == -1) {
+ for (int i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) {
+ index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)(char *)CallService(MS_CLIST_GETSTATUSMODEDESCRIPTION, i, 0));
+ SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, i);
+ }
+ }
+ else {
+ int num_protocols;
+ PROTOACCOUNT **pppDesc;
+ ProtoEnumAccounts(&num_protocols, &pppDesc);
- caps = CallProtoService(pppDesc[index]->szModuleName, PS_GETCAPS, PFLAGNUM_2, 0);
+ int caps = CallProtoService(pppDesc[index]->szModuleName, PS_GETCAPS, PFLAGNUM_2, 0);
- for (i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) {
- if (caps & Proto_Status2Flag(i)) {
- index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)(char *)CallService(MS_CLIST_GETSTATUSMODEDESCRIPTION, i, 0));
- SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, i);
- }
+ for (int i = ID_STATUS_OFFLINE; i <= ID_STATUS_OUTTOLUNCH; i++) {
+ if (caps & Proto_Status2Flag(i)) {
+ index = SendMessage(hw, CB_INSERTSTRING, (WPARAM)-1, (LPARAM)(char *)CallService(MS_CLIST_GETSTATUSMODEDESCRIPTION, i, 0));
+ SendMessage(hw, CB_SETITEMDATA, (WPARAM)index, i);
}
}
- SendMessage(hw, CB_SETCURSEL, 0, 0);
- SendMessage(hwndDlg, WMU_FILLPRIODATA, 0, 0);
}
+ SendMessage(hw, CB_SETCURSEL, 0, 0);
+ SendMessage(hwndDlg, WMU_FILLPRIODATA, 0, 0);
}
return TRUE;
+
case WM_COMMAND:
if ( HIWORD( wParam ) == BN_CLICKED ) {
switch( LOWORD( wParam )) {
case IDC_CHK_DEFAULT:
- {
- int sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0);
+ sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0);
+ if (sel != -1) {
+ int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0);
+ sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETCURSEL, 0, 0);
if (sel != -1) {
- int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0);
- sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETCURSEL, 0, 0);
- if (sel != -1) {
- BOOL checked = IsDlgButtonChecked(hwndDlg, IDC_CHK_DEFAULT);
- int status = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETITEMDATA, (WPARAM)sel, 0);
- if (checked) {
- SetPriority(index, status, TRUE, 0);
- SetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, GetPriority(index, status), FALSE);
- } else {
- SetPriority(index, status, FALSE, GetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, 0, FALSE));
- }
- EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), !checked);
- EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), !checked);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ BOOL checked = IsDlgButtonChecked(hwndDlg, IDC_CHK_DEFAULT);
+ int status = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETITEMDATA, (WPARAM)sel, 0);
+ if (checked) {
+ SetPriority(index, status, TRUE, 0);
+ SetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, GetPriority(index, status), FALSE);
}
+ else SetPriority(index, status, FALSE, GetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, 0, FALSE));
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_ED_PRIORITY), !checked);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_SP_PRIORITY), !checked);
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
}
}
break;
+
case IDC_BTN_RESET:
ResetPriorities();
SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_SETCURSEL, 0, 0);
SendMessage(hwndDlg, WMU_FILLSTATUSCMB, 0, 0);
SendMessage(hwndDlg, WMU_FILLPRIODATA, 0, 0);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
}
}
+
if ( HIWORD( wParam ) == EN_CHANGE && LOWORD(wParam) == IDC_ED_PRIORITY && ( HWND )lParam == GetFocus()) {
- int sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0);
+ sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETCURSEL, 0, 0);
if (sel != -1) {
int index = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_PROTOCOL), CB_GETITEMDATA, (WPARAM)sel, 0);
sel = SendMessage(GetDlgItem(hwndDlg, IDC_CMB_STATUS), CB_GETCURSEL, 0, 0);
@@ -606,7 +584,7 @@ INT_PTR CALLBACK DlgProcOptsPriorities(HWND hwndDlg, UINT msg, WPARAM wParam, LP
SetPriority(index, status, FALSE, prio);
if (prio != GetPriority(index, status))
SetDlgItemInt(hwndDlg, IDC_ED_PRIORITY, GetPriority(index, status), FALSE);
- SendMessage( GetParent( hwndDlg ), PSM_CHANGED, 0, 0 );
+ SendMessage( GetParent(hwndDlg), PSM_CHANGED, 0, 0);
}
}
}
@@ -621,7 +599,7 @@ INT_PTR CALLBACK DlgProcOptsPriorities(HWND hwndDlg, UINT msg, WPARAM wParam, LP
}
}
break;
-
+
case WM_NOTIFY:
if (((LPNMHDR)lParam)->code == PSN_APPLY ) {
WritePriorities();
diff --git a/plugins/MetaContacts/src/meta_services.cpp b/plugins/MetaContacts/src/meta_services.cpp
index d205ff9a6e..6e8318b0af 100644
--- a/plugins/MetaContacts/src/meta_services.cpp
+++ b/plugins/MetaContacts/src/meta_services.cpp
@@ -571,7 +571,7 @@ int Meta_HandleACK(WPARAM wParam, LPARAM lParam)
//if ( !db_get(AI.hContact, "ContactPhoto", "File", &dbv)) {
if ( !db_get(ack->hContact, "ContactPhoto", "File", &dbv)) {
- DBWriteContactSettingTString(hUser, "ContactPhoto", "File", dbv.ptszVal);
+ db_set_ts(hUser, "ContactPhoto", "File", dbv.ptszVal);
db_free(&dbv);
}
@@ -605,11 +605,11 @@ static DWORD sttHideContacts( BOOL param )
int Meta_SettingChanged(WPARAM wParam, LPARAM lParam)
{
DBCONTACTWRITESETTING *dcws = (DBCONTACTWRITESETTING *)lParam;
- char buffer[512], buffer2[512];
+ char buffer[512], szId[40];
+ TCHAR buffer2[512];
int contact_number;
HANDLE hMeta, most_online;
-
// hide metacontacts when groups disabled
if (wParam == 0
&& ((strcmp(dcws->szModule, "CList") == 0 && strcmp(dcws->szSetting, "UseGroups") == 0)
@@ -639,20 +639,17 @@ int Meta_SettingChanged(WPARAM wParam, LPARAM lParam)
Meta_SuppressStatus(options.suppress_status);
}
- if (wParam == 0
- && strcmp(dcws->szModule, "CListGroups") == 0 && dcws->value.type != DBVT_DELETED && strcmp(dcws->value.pszVal, META_HIDDEN_GROUP) == 0)
+ if (wParam == 0 && strcmp(dcws->szModule, "CListGroups") == 0 && dcws->value.type != DBVT_DELETED && strcmp(dcws->value.pszVal, META_HIDDEN_GROUP) == 0)
{
// someone is creating our hidden group!!
-
}
// from here on, we're just interested in contact settings
if (wParam == 0) return 0;
- if ((hMeta=(HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle",0))!=0
- && CallService(MS_DB_CONTACT_IS, (WPARAM)hMeta, 0)) // just to be safe
-
- { // This contact is attached to a MetaContact.
+ if ((hMeta=(HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle",0))!=0 && CallService(MS_DB_CONTACT_IS, (WPARAM)hMeta, 0)) // just to be safe
+ {
+ // This contact is attached to a MetaContact.
contact_number = Meta_GetContactNumber((HANDLE)wParam);
if (contact_number == -1) return 0; // exit - db corruption
@@ -667,210 +664,190 @@ int Meta_SettingChanged(WPARAM wParam, LPARAM lParam)
db_unset((HANDLE)wParam, META_PROTO, "OldCListGroup");
db_set_s((HANDLE)wParam, "CList", "Group", META_HIDDEN_GROUP);
}
- } else
+ }
+ else if ( !strcmp(dcws->szSetting, "IP")) {
+ if (dcws->value.type == DBVT_DWORD)
+ db_set_dw(hMeta, META_PROTO, "IP", dcws->value.dVal);
+ else
+ db_unset(hMeta, META_PROTO, "IP");
+ }
+ else if ( !strcmp(dcws->szSetting, "RealIP")) {
+ if (dcws->value.type == DBVT_DWORD)
+ db_set_dw(hMeta, META_PROTO, "RealIP", dcws->value.dVal);
+ else
+ db_unset(hMeta, META_PROTO, "RealIP");
- // copy IP
- if ( !strcmp(dcws->szSetting, "IP")) {
- if (dcws->value.type == DBVT_DWORD)
- db_set_dw(hMeta, META_PROTO, "IP", dcws->value.dVal);
- else
- db_unset(hMeta, META_PROTO, "IP");
- } else
+ }
+ else if ( !strcmp(dcws->szSetting, "ListeningTo")) {
+ switch(dcws->value.type) {
+ case DBVT_ASCIIZ:
+ db_set_s(hMeta, META_PROTO, "ListeningTo", dcws->value.pszVal);
+ break;
+ case DBVT_UTF8:
+ db_set_utf(hMeta, META_PROTO, "ListeningTo", dcws->value.pszVal);
+ break;
+ case DBVT_WCHAR:
+ DBWriteContactSettingWString(hMeta, META_PROTO, "ListeningTo", dcws->value.pwszVal);
+ break;
+ case DBVT_DELETED:
+ db_unset(hMeta, META_PROTO, "ListeningTo");
+ break;
+ }
+ }
+ else if ( !strcmp(dcws->szSetting, "Nick") && !dcws->value.type == DBVT_DELETED) {
+ DBVARIANT dbv;
+ HANDLE most_online;
+
+ // subcontact nick has changed - update metacontact
+ strcpy(buffer, "Nick");
+ strcat(buffer, _itoa(contact_number, szId, 10));
+ MyDBWriteContactSetting(hMeta, META_PROTO, buffer, &dcws->value);
+
+ if (Mydb_get((HANDLE)wParam, "CList", "MyHandle", &dbv)) {
+ strcpy(buffer, "CListName");
+ strcat(buffer, _itoa(contact_number, szId, 10));
+ MyDBWriteContactSetting(hMeta, META_PROTO, buffer, &dcws->value);
+ }
+ else db_free(&dbv);
+
+ // copy nick to metacontact, if it's the most online
+ most_online = Meta_GetMostOnline(hMeta);
+ Meta_CopyContactNick(hMeta, most_online);
+
+ return 0;
+ }
+ else if ( !strcmp(dcws->szSetting, "IdleTS")) {
+ if (dcws->value.type == DBVT_DWORD)
+ db_set_dw(hMeta, META_PROTO, "IdleTS", dcws->value.dVal);
+ else if (dcws->value.type == DBVT_DELETED)
+ db_set_dw(hMeta, META_PROTO, "IdleTS", 0);
+ }
+ else if ( !strcmp(dcws->szSetting, "LogonTS")) {
+ if (dcws->value.type == DBVT_DWORD)
+ db_set_dw(hMeta, META_PROTO, "LogonTS", dcws->value.dVal);
+ else if (dcws->value.type == DBVT_DELETED)
+ db_set_dw(hMeta, META_PROTO, "LogonTS", 0);
+ }
+ else if ( !strcmp(dcws->szModule, "CList") && !strcmp(dcws->szSetting, "MyHandle")) {
+ HANDLE most_online;
- // copy RealIP
- if ( !strcmp(dcws->szSetting, "RealIP")) {
- if (dcws->value.type == DBVT_DWORD)
- db_set_dw(hMeta, META_PROTO, "RealIP", dcws->value.dVal);
- else
- db_unset(hMeta, META_PROTO, "RealIP");
-
- } else
- // copy ListeningTo
- if ( !strcmp(dcws->szSetting, "ListeningTo")) {
- switch(dcws->value.type) {
- case DBVT_ASCIIZ:
- db_set_s(hMeta, META_PROTO, "ListeningTo", dcws->value.pszVal);
- break;
- case DBVT_UTF8:
- DBWriteContactSettingStringUtf(hMeta, META_PROTO, "ListeningTo", dcws->value.pszVal);
- break;
- case DBVT_WCHAR:
- DBWriteContactSettingWString(hMeta, META_PROTO, "ListeningTo", dcws->value.pwszVal);
- break;
- case DBVT_DELETED:
- db_unset(hMeta, META_PROTO, "ListeningTo");
- break;
- }
- } else
-
- if ( !strcmp(dcws->szSetting, "Nick") && !dcws->value.type == DBVT_DELETED) {
- DBVARIANT dbv;
- HANDLE most_online;
-
- // subcontact nick has changed - update metacontact
- strcpy(buffer, "Nick");
- strcat(buffer, _itoa(contact_number, buffer2, 10));
- MyDBWriteContactSetting(hMeta, META_PROTO, buffer, &dcws->value);
-
- if (Mydb_get((HANDLE)wParam, "CList", "MyHandle", &dbv)) {
- strcpy(buffer, "CListName");
- strcat(buffer, _itoa(contact_number, buffer2, 10));
- MyDBWriteContactSetting(hMeta, META_PROTO, buffer, &dcws->value);
- } else {
- db_free(&dbv);
- }
-
- // copy nick to metacontact, if it's the most online
- most_online = Meta_GetMostOnline(hMeta);
- Meta_CopyContactNick(hMeta, most_online);
-
- return 0;
- } else
-
- if ( !strcmp(dcws->szSetting, "IdleTS")) {
- if (dcws->value.type == DBVT_DWORD)
- db_set_dw(hMeta, META_PROTO, "IdleTS", dcws->value.dVal);
- else if (dcws->value.type == DBVT_DELETED)
- db_set_dw(hMeta, META_PROTO, "IdleTS", 0);
- } else
-
- if ( !strcmp(dcws->szSetting, "LogonTS")) {
- if (dcws->value.type == DBVT_DWORD)
- db_set_dw(hMeta, META_PROTO, "LogonTS", dcws->value.dVal);
- else if (dcws->value.type == DBVT_DELETED)
- db_set_dw(hMeta, META_PROTO, "LogonTS", 0);
- } else
-
- if ( !strcmp(dcws->szModule, "CList") && !strcmp(dcws->szSetting, "MyHandle")) {
- HANDLE most_online;
-
- if (dcws->value.type == DBVT_DELETED) {
- DBVARIANT dbv;
-
- char *proto = GetContactProto((HANDLE)wParam);
- strcpy(buffer, "CListName");
- strcat(buffer, _itoa(contact_number, buffer2, 10));
- if (proto && !Mydb_get((HANDLE)wParam, proto, "Nick", &dbv)) {
- MyDBWriteContactSetting(hMeta, META_PROTO, buffer, &dbv);
- db_free(&dbv);
- } else {
- db_unset(hMeta, META_PROTO, buffer);
- }
- } else {
- // subcontact clist displayname has changed - update metacontact
- strcpy(buffer, "CListName");
- strcat(buffer, _itoa(contact_number, buffer2, 10));
-
- MyDBWriteContactSetting(hMeta, META_PROTO, buffer, &dcws->value);
- }
-
- // copy nick to metacontact, if it's the most online
- most_online = Meta_GetMostOnline(hMeta);
- Meta_CopyContactNick(hMeta, most_online);
-
- return 0;
- } else
-
- if ( !strcmp(dcws->szSetting, "Status") && !dcws->value.type == DBVT_DELETED) {
- // subcontact changing status
-
- // update subcontact status setting
- strcpy(buffer, "Status");
- strcat(buffer, _itoa(contact_number, buffer2, 10));
- db_set_w(hMeta, META_PROTO, buffer, dcws->value.wVal);
- strcpy(buffer, "StatusString");
- strcat(buffer, _itoa(contact_number, buffer2, 10));
- Meta_GetStatusString(dcws->value.wVal, buffer2, 512);
- db_set_s(hMeta, META_PROTO, buffer, buffer2);
-
- // if the contact was forced, unforce it (which updates status)
- if ((HANDLE)db_get_dw(hMeta, META_PROTO, "ForceSend", 0) == (HANDLE)wParam) {
- MetaAPI_UnforceSendContact((WPARAM)hMeta, 0);
- } else {
- // set status to that of most online contact
- most_online = Meta_GetMostOnline(hMeta);
- Meta_CopyContactNick(hMeta, most_online);
-
- Meta_FixStatus(hMeta);
-
- Meta_CopyData(hMeta);
- }
-
- // most online contact with avatar support might have changed - update avatar
- most_online = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_4, PF4_AVATARS);
- if (most_online) {
- PROTO_AVATAR_INFORMATIONT AI;
-
- AI.cbSize = sizeof(AI);
- AI.hContact = hMeta;
- AI.format = PA_FORMAT_UNKNOWN;
- _tcscpy(AI.filename, _T("X"));
-
- if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS)
- DBWriteContactSettingTString(hMeta, "ContactPhoto", "File",AI.filename);
- }
- } else
-
- if (strcmp(dcws->szSetting, "XStatusId") == 0 || strcmp(dcws->szSetting, "XStatusMsg") == 0 || strcmp(dcws->szSetting, "XStatusName") == 0 || strcmp(dcws->szSetting, "StatusMsg") == 0) {
- Meta_CopyData(hMeta);
- } else
-
- if (strcmp(dcws->szSetting, "MirVer") == 0) {
- Meta_CopyData(hMeta);
- } else
-
- if ( !meta_group_hack_disabled && !strcmp(dcws->szModule, "CList") && !strcmp(dcws->szSetting, "Hidden")) {
- if ((dcws->value.type == DBVT_DELETED || db_get_b((HANDLE)wParam, "CList", "Hidden", 0) == 0)
- && db_get_b((HANDLE)wParam, META_PROTO, "Hidden", 0) == 1)
- {
- // a subcontact we hid (e.g. jabber) has been unhidden - hide it again :(
- db_set_b((HANDLE)wParam, "CList", "Hidden", 1);
- }
- }
+ if (dcws->value.type == DBVT_DELETED) {
+ DBVARIANT dbv;
+
+ char *proto = GetContactProto((HANDLE)wParam);
+ strcpy(buffer, "CListName");
+ strcat(buffer, _itoa(contact_number, szId, 10));
+ if (proto && !Mydb_get((HANDLE)wParam, proto, "Nick", &dbv)) {
+ MyDBWriteContactSetting(hMeta, META_PROTO, buffer, &dbv);
+ db_free(&dbv);
+ } else {
+ db_unset(hMeta, META_PROTO, buffer);
+ }
+ } else {
+ // subcontact clist displayname has changed - update metacontact
+ strcpy(buffer, "CListName");
+ strcat(buffer, _itoa(contact_number, szId, 10));
+
+ MyDBWriteContactSetting(hMeta, META_PROTO, buffer, &dcws->value);
+ }
+
+ // copy nick to metacontact, if it's the most online
+ most_online = Meta_GetMostOnline(hMeta);
+ Meta_CopyContactNick(hMeta, most_online);
+
+ return 0;
+ }
+ else if ( !strcmp(dcws->szSetting, "Status") && !dcws->value.type == DBVT_DELETED) {
+ // subcontact changing status
+
+ // update subcontact status setting
+ strcpy(buffer, "Status");
+ strcat(buffer, _itoa(contact_number, szId, 10));
+ db_set_w(hMeta, META_PROTO, buffer, dcws->value.wVal);
+
+ strcpy(buffer, "StatusString");
+ strcat(buffer, _itoa(contact_number, szId, 10));
+ Meta_GetStatusString(dcws->value.wVal, buffer2, 512);
+ db_set_ts(hMeta, META_PROTO, buffer, buffer2);
+
+ // if the contact was forced, unforce it (which updates status)
+ if ((HANDLE)db_get_dw(hMeta, META_PROTO, "ForceSend", 0) == (HANDLE)wParam) {
+ MetaAPI_UnforceSendContact((WPARAM)hMeta, 0);
+ } else {
+ // set status to that of most online contact
+ most_online = Meta_GetMostOnline(hMeta);
+ Meta_CopyContactNick(hMeta, most_online);
+
+ Meta_FixStatus(hMeta);
+
+ Meta_CopyData(hMeta);
+ }
+
+ // most online contact with avatar support might have changed - update avatar
+ most_online = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_4, PF4_AVATARS);
+ if (most_online) {
+ PROTO_AVATAR_INFORMATIONT AI;
+
+ AI.cbSize = sizeof(AI);
+ AI.hContact = hMeta;
+ AI.format = PA_FORMAT_UNKNOWN;
+ _tcscpy(AI.filename, _T("X"));
+
+ if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS)
+ db_set_ts(hMeta, "ContactPhoto", "File",AI.filename);
+ }
+ }
+ else if (strcmp(dcws->szSetting, "XStatusId") == 0 || strcmp(dcws->szSetting, "XStatusMsg") == 0 || strcmp(dcws->szSetting, "XStatusName") == 0 || strcmp(dcws->szSetting, "StatusMsg") == 0) {
+ Meta_CopyData(hMeta);
+ }
+ else if (strcmp(dcws->szSetting, "MirVer") == 0) {
+ Meta_CopyData(hMeta);
+ }
+ else if ( !meta_group_hack_disabled && !strcmp(dcws->szModule, "CList") && !strcmp(dcws->szSetting, "Hidden")) {
+ if ((dcws->value.type == DBVT_DELETED || db_get_b((HANDLE)wParam, "CList", "Hidden", 0) == 0)
+ && db_get_b((HANDLE)wParam, META_PROTO, "Hidden", 0) == 1)
+ {
+ // a subcontact we hid (e.g. jabber) has been unhidden - hide it again :(
+ db_set_b((HANDLE)wParam, "CList", "Hidden", 1);
+ }
+ }
}
return 0;
}
-int Meta_ContactDeleted(WPARAM wParam, LPARAM lParam) {
- HANDLE hMeta;
-
+int Meta_ContactDeleted(WPARAM wParam, LPARAM lParam)
+{
// is a subcontact - update meta contact
- hMeta = (HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle", 0);
+ HANDLE hMeta = (HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle", 0);
if (hMeta) {
Meta_RemoveContactNumber(hMeta, db_get_dw((HANDLE)wParam, META_PROTO, "ContactNumber", -1));
NotifyEventHooks(hSubcontactsChanged, (WPARAM)hMeta, 0);
return 0;
- } else {
- // not a subcontact - is it a metacontact?
- int num_contacts = db_get_dw((HANDLE)wParam, META_PROTO, "NumContacts", 0);
- int i;
- HANDLE hContact;
-
- if (num_contacts) NotifyEventHooks(hSubcontactsChanged, (WPARAM)wParam, 0);
-
- // remove & restore all subcontacts
- for (i = 0; i < num_contacts; i++) {
- hContact = Meta_GetContactHandle((HANDLE)wParam, i);
-
- if (hContact && (HANDLE)db_get_dw(hContact, META_PROTO, "Handle", 0) == (HANDLE)wParam) {
- if (db_get_b(hContact, META_PROTO, "IsSubcontact", 0) == 1)
- db_unset(hContact, META_PROTO, "IsSubcontact");
- db_unset(hContact, META_PROTO, META_LINK);
- db_unset(hContact, META_PROTO, "Handle");
- db_unset(hContact, META_PROTO, "ContactNumber");
- Meta_RestoreGroup(hContact);
- db_unset(hContact, META_PROTO, "OldCListGroup");
-
- // stop ignoring, if we were
- if (options.suppress_status)
- CallService(MS_IGNORE_UNIGNORE, (WPARAM)hContact, (WPARAM)IGNOREEVENT_USERONLINE);
- }
- }
- return 0;
}
-
+ // not a subcontact - is it a metacontact?
+ int num_contacts = db_get_dw((HANDLE)wParam, META_PROTO, "NumContacts", 0);
+ if (num_contacts)
+ NotifyEventHooks(hSubcontactsChanged, (WPARAM)wParam, 0);
+
+ // remove & restore all subcontacts
+ for (int i = 0; i < num_contacts; i++) {
+ HANDLE hContact = Meta_GetContactHandle((HANDLE)wParam, i);
+ if (hContact && (HANDLE)db_get_dw(hContact, META_PROTO, "Handle", 0) == (HANDLE)wParam) {
+ if (db_get_b(hContact, META_PROTO, "IsSubcontact", 0) == 1)
+ db_unset(hContact, META_PROTO, "IsSubcontact");
+ db_unset(hContact, META_PROTO, META_LINK);
+ db_unset(hContact, META_PROTO, "Handle");
+ db_unset(hContact, META_PROTO, "ContactNumber");
+ Meta_RestoreGroup(hContact);
+ db_unset(hContact, META_PROTO, "OldCListGroup");
+
+ // stop ignoring, if we were
+ if (options.suppress_status)
+ CallService(MS_IGNORE_UNIGNORE, (WPARAM)hContact, (WPARAM)IGNOREEVENT_USERONLINE);
+ }
+ }
return 0;
}
@@ -881,32 +858,24 @@ int Meta_ContactDeleted(WPARAM wParam, LPARAM lParam) {
*/
INT_PTR Meta_UserIsTyping(WPARAM wParam, LPARAM lParam)
{
- char *proto;
- char buff[512];
-
+ // This is a simple contact, let through the stack of protocols
if (db_get_dw((HANDLE)wParam, META_PROTO, META_ID,(DWORD)-1) == (DWORD)-1)
- {
- // This is a simple contact, let through the stack of protocols
return 0;
- }
- else
- {
- // forward to sending protocol, if supported
-
- HANDLE most_online = Meta_GetMostOnline((HANDLE)wParam);
- Meta_CopyContactNick((HANDLE)wParam, most_online);
- if ( !most_online) return 0;
+ // forward to sending protocol, if supported
- proto = GetContactProto(most_online);
- if (proto) {
- strncpy(buff, proto, 512);
- strncpy(buff + strlen(proto), PSS_USERISTYPING, 512 - strlen(proto));
+ HANDLE most_online = Meta_GetMostOnline((HANDLE)wParam);
+ Meta_CopyContactNick((HANDLE)wParam, most_online);
+ if ( !most_online)
+ return 0;
- if (ServiceExists(buff)) {
- CallService(buff, (WPARAM)most_online, (LPARAM)lParam);
- }
- }
+ char *proto = GetContactProto(most_online);
+ if (proto) {
+ char buff[512];
+ strncpy(buff, proto, 512);
+ strncpy(buff + strlen(proto), PSS_USERISTYPING, 512 - strlen(proto));
+ if (ServiceExists(buff))
+ CallService(buff, (WPARAM)most_online, (LPARAM)lParam);
}
return 0;
@@ -920,19 +889,12 @@ INT_PTR Meta_UserIsTyping(WPARAM wParam, LPARAM lParam)
int Meta_ContactIsTyping(WPARAM wParam, LPARAM lParam)
{
HANDLE hMeta;
-
- if ((hMeta = (HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle",0)) != 0
- // check metacontacts enabled
- && Meta_IsEnabled()
- )
- { // This contact is attached to a MetaContact.
+ if ((hMeta = (HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle",0)) != 0 && Meta_IsEnabled()) {
+ // This contact is attached to a MetaContact.
if ( !options.subcontact_windows) { // we don't want clicking on the clist notification icon to open the metacontact message window
-
// try to remove any clist events we added for subcontact
CallServiceSync(MS_CLIST_REMOVEEVENT, wParam, (LPARAM) 1);
-
CallService(MS_PROTO_CONTACTISTYPING, (WPARAM)hMeta, lParam);
-
// stop processing of event
return 1;
}
@@ -946,6 +908,7 @@ int Meta_ContactIsTyping(WPARAM wParam, LPARAM lParam)
* Returns 1 to stop event processing and opens page for metacontact default contact (returning 1 to stop it doesn't work!)
*
*/
+
int Meta_UserInfo(WPARAM wParam, LPARAM lParam)
{
DWORD default_contact_number = db_get_dw((HANDLE)lParam, META_PROTO, "Default", (DWORD)-1);
@@ -954,7 +917,6 @@ int Meta_UserInfo(WPARAM wParam, LPARAM lParam)
return 0;
CallService(MS_USERINFO_SHOWDIALOG, (WPARAM)Meta_GetContactHandle((HANDLE)lParam, default_contact_number), 0);
-
return 1;
}
@@ -994,7 +956,6 @@ int Meta_MessageWindowEvent(WPARAM wParam, LPARAM lParam) {
}
}
}
-
}
return 0;
@@ -1003,73 +964,48 @@ int Meta_MessageWindowEvent(WPARAM wParam, LPARAM lParam) {
int Meta_ClistDoubleClicked(WPARAM wParam, LPARAM lParam)
{
if (db_get_dw((HANDLE)wParam, META_PROTO, "Default",(WORD)-1) == (WORD)-1)
- {
- // This is a simple contact
return 0;
- }
- else
- {
- // -1 indicates no specific capability but respect 'ForceDefault'
- HANDLE most_online = Meta_GetMostOnlineSupporting((HANDLE)wParam, PFLAGNUM_1, -1);
- //DBEVENTINFO dbei;
- char *proto;
- char buffer[512];
- int caps;
- if ( !most_online)
- return 0;
+ // -1 indicates no specific capability but respect 'ForceDefault'
+ HANDLE most_online = Meta_GetMostOnlineSupporting((HANDLE)wParam, PFLAGNUM_1, -1);
+ if ( !most_online)
+ return 0;
- if (options.subcontact_windows) {
- if (lParam) {
- // contact from incoming message in lParam via (at this point) clist message event
- CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)lParam, 0);
- } else {
- // simulate double click on most_online contact and stop event processing
- CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)most_online, 0);
- }
- return 1;
- } else {
- proto = GetContactProto(most_online);
-
- if (proto) {
- strcpy(buffer, proto);
- strcat(buffer, PS_GETCAPS);
-
- // get the contacts messaging capabilities
- caps = CallService(buffer, (WPARAM)PFLAGNUM_1, 0);
-
- if ((caps & PF1_IMSEND) || (caps & PF1_CHAT) || (proto && strcmp(proto, "IRC") == 0))
- // let event process normally
- return 0;
- else {
- // simulate double click on most_online contact and stop event processing
- CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)most_online, 0);
- return 1;
- }
- } else
- return 0;
- }
+ if (options.subcontact_windows) {
+ if (lParam) // contact from incoming message in lParam via (at this point) clist message event
+ CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)lParam, 0);
+ else // simulate double click on most_online contact and stop event processing
+ CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)most_online, 0);
+ return 1;
}
- return 0;
-}
+ char *proto = GetContactProto(most_online);
+ if (proto == NULL)
+ return 0;
-INT_PTR Meta_ClistMessageEventClicked(WPARAM wParam, LPARAM lParam) {
+ char buffer[512];
+ strcpy(buffer, proto);
+ strcat(buffer, PS_GETCAPS);
- HANDLE hContact = ((CLISTEVENT *)lParam)->hContact;
+ // get the contacts messaging capabilities
+ int caps = CallService(buffer, (WPARAM)PFLAGNUM_1, 0);
+ if ((caps & PF1_IMSEND) || (caps & PF1_CHAT) || (proto && strcmp(proto, "IRC") == 0))
+ // let event process normally
+ return 0;
- // hdbevent contains the id of the subcontact
- return Meta_ClistDoubleClicked((WPARAM)hContact, (LPARAM)((CLISTEVENT *)lParam)->hDbEvent);
+ // simulate double click on most_online contact and stop event processing
+ CallService(MS_CLIST_CONTACTDOUBLECLICKED, (WPARAM)most_online, 0);
+ return 1;
}
+INT_PTR Meta_ClistMessageEventClicked(WPARAM wParam, LPARAM lParam)
+{
+ HANDLE hContact = ((CLISTEVENT *)lParam)->hContact;
+ return Meta_ClistDoubleClicked((WPARAM)hContact, (LPARAM)((CLISTEVENT *)lParam)->hDbEvent);
+}
-int NudgeRecieved(WPARAM wParam, LPARAM lParam) {
- /*
- // already being forwarded by someone
- HANDLE hMeta = (HANDLE)db_get_dw((HANDLE)wParam, META_PROTO, "Handle", 0);
- if (hMeta)
- NotifyEventHooks(hEventNudge, (WPARAM)hMeta, 0);
- */
+int NudgeRecieved(WPARAM wParam, LPARAM lParam)
+{
return 0;
}
@@ -1136,10 +1072,6 @@ int Meta_ModulesLoaded(WPARAM wParam, LPARAM lParam)
mi.pszService = "MetaContacts/Delete";
hMenuDelete = Menu_AddContactMenuItem(&mi);
- //mi.pszName = "Force Default";
- //mi.pszService = "MetaContacts/ForceDefault";
- //hMenuForceDefault = Menu_AddContactMenuItem(&mi);
-
mi.flags |= CMIF_HIDDEN;
mi.pszContactOwner = META_PROTO;
@@ -1159,17 +1091,14 @@ int Meta_ModulesLoaded(WPARAM wParam, LPARAM lParam)
nextMetaID = db_get_dw(NULL, META_PROTO, "NextMetaID",0);
- // attemp to subsume userinfo...(returning 1 does not prevent dialog - so disabled)
- //hHooks[] = (HANDLE)HookEvent(ME_USERINFO_INITIALISE, Meta_UserInfo);
-
// loop and copy data from subcontacts
if (options.copydata) {
HANDLE hContact = db_find_first();
int meta_id;
while ( hContact != NULL ) {
- if ((meta_id = db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1))!=(DWORD)-1) {
+ if ((meta_id = db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1))!=(DWORD)-1)
Meta_CopyData(hContact);
- }
+
hContact = db_find_next(hContact);
}
}
@@ -1233,9 +1162,9 @@ static VOID CALLBACK sttMenuThread( PVOID param )
DestroyMenu(hMenu);
}
-INT_PTR Meta_ContactMenuFunc(WPARAM wParam, LPARAM lParam) {
- HANDLE hContact;
- hContact = Meta_GetContactHandle((HANDLE)wParam, (int)lParam);
+INT_PTR Meta_ContactMenuFunc(WPARAM wParam, LPARAM lParam)
+{
+ HANDLE hContact = Meta_GetContactHandle((HANDLE)wParam, (int)lParam);
if (options.menu_function == FT_MSG) {
// open message window if protocol supports message sending or chat, else simulate double click
@@ -1325,7 +1254,8 @@ INT_PTR Meta_FileSend(WPARAM wParam, LPARAM lParam)
return 0; // fail
}
-INT_PTR Meta_GetAwayMsg(WPARAM wParam, LPARAM lParam) {
+INT_PTR Meta_GetAwayMsg(WPARAM wParam, LPARAM lParam)
+{
CCSDATA *ccs = (CCSDATA *) lParam;
char *proto = 0;
DWORD default_contact_number;
@@ -1424,7 +1354,7 @@ INT_PTR Meta_GetInfo(WPARAM wParam, LPARAM lParam) {
AI.format = PA_FORMAT_UNKNOWN;
_tcscpy(AI.filename, _T("X"));
if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS)
- DBWriteContactSettingTString(ccs->hContact, "ContactPhoto", "File",AI.filename);
+ db_set_ts(ccs->hContact, "ContactPhoto", "File",AI.filename);
most_online = Meta_GetMostOnline(ccs->hContact);
Meta_CopyContactNick(ccs->hContact, most_online);
@@ -1448,32 +1378,32 @@ INT_PTR Meta_GetInfo(WPARAM wParam, LPARAM lParam) {
int Meta_OptInit(WPARAM wParam, LPARAM lParam)
{
- OPTIONSDIALOGPAGE odp = { 0 };
- odp.cbSize = sizeof(odp);
+ OPTIONSDIALOGPAGE odp = { sizeof(odp) };
odp.position = -790000000;
odp.hInstance = hInstance;
odp.flags = ODPF_BOLDGROUPS;
- odp.pszTemplate = MAKEINTRESOURCE(IDD_OPTIONS);
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS);
odp.pszTitle = LPGEN("MetaContacts");
odp.pszGroup = LPGEN("Contact List");
odp.pszTab = LPGEN("General");
odp.pfnDlgProc = DlgProcOpts;
Options_AddPage(wParam, &odp);
- odp.pszTemplate = MAKEINTRESOURCE(IDD_PRIORITIES);
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_PRIORITIES);
odp.pszTab = LPGEN("Priorities");
odp.pfnDlgProc = DlgProcOptsPriorities;
Options_AddPage(wParam, &odp);
- odp.pszTemplate = MAKEINTRESOURCE(IDD_HISTORY);
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_HISTORY);
odp.pszTab = LPGEN("History");
odp.pfnDlgProc = DlgProcOpts;
Options_AddPage(wParam, &odp);
return 0;
}
-int Meta_CallMostOnline(WPARAM wParam, LPARAM lParam) {
+int Meta_CallMostOnline(WPARAM wParam, LPARAM lParam)
+{
HANDLE most_online_im = Meta_GetMostOnline((HANDLE)wParam);
// fix nick
@@ -1484,11 +1414,9 @@ int Meta_CallMostOnline(WPARAM wParam, LPARAM lParam) {
// copy all other data
Meta_CopyData((HANDLE) wParam);
-
return 0;
}
-
INT_PTR Meta_OnOff(WPARAM wParam, LPARAM lParam)
{
CLISTMENUITEM mi = { sizeof(mi) };
@@ -1532,10 +1460,16 @@ int Meta_OkToExit(WPARAM wParam, LPARAM lParam) {
return 0;
}
+INT_PTR MenuFunc(WPARAM wParam, LPARAM lParam, LPARAM param)
+{
+ return Meta_ContactMenuFunc(wParam, param);
+}
+
/** Initializes all services provided by the plugin
*
* Creates every function and hooks the event desired.
*/
+
void Meta_InitServices()
{
previousMode = mcStatus = ID_STATUS_OFFLINE;
@@ -1548,26 +1482,11 @@ void Meta_InitServices()
CreateServiceFunction("MetaContacts/ForceDefault", Meta_ForceDefault);
// hidden contact menu items...ho hum
- CreateServiceFunction("MetaContacts/MenuFunc0", MenuFunc0);
- CreateServiceFunction("MetaContacts/MenuFunc1", MenuFunc1);
- CreateServiceFunction("MetaContacts/MenuFunc2", MenuFunc2);
- CreateServiceFunction("MetaContacts/MenuFunc3", MenuFunc3);
- CreateServiceFunction("MetaContacts/MenuFunc4", MenuFunc4);
- CreateServiceFunction("MetaContacts/MenuFunc5", MenuFunc5);
- CreateServiceFunction("MetaContacts/MenuFunc6", MenuFunc6);
- CreateServiceFunction("MetaContacts/MenuFunc7", MenuFunc7);
- CreateServiceFunction("MetaContacts/MenuFunc8", MenuFunc8);
- CreateServiceFunction("MetaContacts/MenuFunc9", MenuFunc9);
- CreateServiceFunction("MetaContacts/MenuFunc10", MenuFunc10);
- CreateServiceFunction("MetaContacts/MenuFunc11", MenuFunc11);
- CreateServiceFunction("MetaContacts/MenuFunc12", MenuFunc12);
- CreateServiceFunction("MetaContacts/MenuFunc13", MenuFunc13);
- CreateServiceFunction("MetaContacts/MenuFunc14", MenuFunc14);
- CreateServiceFunction("MetaContacts/MenuFunc15", MenuFunc15);
- CreateServiceFunction("MetaContacts/MenuFunc16", MenuFunc16);
- CreateServiceFunction("MetaContacts/MenuFunc17", MenuFunc17);
- CreateServiceFunction("MetaContacts/MenuFunc18", MenuFunc18);
- CreateServiceFunction("MetaContacts/MenuFunc19", MenuFunc19);
+ for (int i=0; i < MAX_CONTACTS; i++) {
+ char szServiceName[100];
+ mir_snprintf(szServiceName, SIZEOF(szServiceName), "MetaContacts/MenuFunc%d", i);
+ CreateServiceFunctionParam(szServiceName, MenuFunc, i);
+ }
CreateProtoServiceFunction(META_PROTO, PS_GETCAPS, Meta_GetCaps);
CreateProtoServiceFunction(META_PROTO, PS_GETNAME, Meta_GetName);
diff --git a/plugins/MetaContacts/src/meta_utils.cpp b/plugins/MetaContacts/src/meta_utils.cpp
index a11f28b90b..2217834d22 100644
--- a/plugins/MetaContacts/src/meta_utils.cpp
+++ b/plugins/MetaContacts/src/meta_utils.cpp
@@ -179,41 +179,41 @@ HANDLE Meta_GetHandle(const char *protocol, DBVARIANT *id)
* The login of the "MetaContacts" protocol will be copied from the login
* of the specified protocol.
*
-* @param proto : The name of the protocol used to get the login that will be
+* @param szProto : The name of the protocol used to get the login that will be
* affected to the "MetaContacts" protocol.
*
* @return O on success, 1 otherwise.
*/
-int Meta_SetNick(char *proto)
+int Meta_SetNick(char *szProto)
{
CONTACTINFO ci;
ci.cbSize = sizeof(CONTACTINFO);
ci.dwFlag = CNF_DISPLAY;
ci.hContact = NULL;
- ci.szProto = proto;
+ ci.szProto = szProto;
if (CallService(MS_CONTACT_GETCONTACTINFO,0,(LPARAM)&ci))
return 1;
switch(ci.type) {
case CNFT_BYTE:
- if ( db_set_b(NULL, META_PROTO, "Nick",ci.bVal))
+ if ( db_set_b(NULL, META_PROTO, "Nick", ci.bVal))
return 1;
break;
case CNFT_WORD:
- if ( db_set_w(NULL, META_PROTO, "Nick",ci.wVal))
+ if ( db_set_w(NULL, META_PROTO, "Nick", ci.wVal))
return 1;
break;
case CNFT_DWORD:
- if ( db_set_dw(NULL, META_PROTO, "Nick",ci.dVal))
+ if ( db_set_dw(NULL, META_PROTO, "Nick", ci.dVal))
return 1;
break;
case CNFT_ASCIIZ:
- if ( db_set_s(NULL, META_PROTO, "Nick",ci.pszVal))
+ if ( db_set_ts(NULL, META_PROTO, "Nick", ci.pszVal))
return 1;
mir_free(ci.pszVal);
break;
default:
- if ( db_set_s(NULL, META_PROTO, "Nick",(char *)Translate("Sender")))
+ if ( db_set_s(NULL, META_PROTO, "Nick",(char *)TranslateT("Sender")))
return 1;
break;
}
@@ -231,67 +231,66 @@ int Meta_SetNick(char *proto)
BOOL Meta_Assign(HANDLE src, HANDLE dest, BOOL set_as_default)
{
DBCONTACTWRITESETTING cws;
- DWORD metaID;
- char *proto,
- *field;
- DWORD num_contacts;
- char buffer[512], buffer2[512];
+ DWORD metaID, num_contacts;
+ char buffer[512], szId[40];
+ TCHAR buffer2[512];
WORD status;
HANDLE most_online;
if ((metaID=db_get_dw(dest, META_PROTO, META_ID,(DWORD)-1))==-1) {
- MessageBox(0, Translate("Could not get MetaContact id"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not get MetaContact id"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
if ((num_contacts=db_get_dw(dest, META_PROTO, "NumContacts",(DWORD)-1))==-1) {
- MessageBox(0, Translate("Could not retreive MetaContact contact count"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not retreive MetaContact contact count"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
- if ( !(proto = GetContactProto(src))) {
- MessageBox(0, Translate("Could not retreive contact protocol"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ char *szProto = GetContactProto(src);
+ if (szProto == NULL) {
+ MessageBox(0, TranslateT("Could not retreive contact protocol"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
// Get the login of the subcontact
- field = (char *)CallProtoService(proto,PS_GETCAPS,PFLAG_UNIQUEIDSETTING,0);
- if ( db_get(src,proto,field,&cws.value)) {
- MessageBox(0, Translate("Could not get unique id of contact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ char *field = (char *)CallProtoService(szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
+ if ( db_get(src,szProto,field,&cws.value)) {
+ MessageBox(0, TranslateT("Could not get unique id of contact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
// Check that is is 'on the list'
if ( db_get_b(src, "CList", "NotOnList", 0) == 1) {
- MessageBox(0, Translate("Contact is 'Not on List' - please add the contact to your contact list before assigning."), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Contact is 'Not on List' - please add the contact to your contact list before assigning."), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
db_free(&cws.value);
return FALSE;
}
num_contacts++;
if (num_contacts >= MAX_CONTACTS) {
- MessageBox(0, Translate("MetaContact is full"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("MetaContact is full"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
db_free(&cws.value);
return FALSE;
}
// write the contact's protocol
strcpy(buffer, "Protocol");
- strcat(buffer, _itoa((int)(num_contacts -1), buffer2, 10));
+ strcat(buffer, _itoa((int)(num_contacts -1), szId, 10));
- if ( db_set_s(dest, META_PROTO, buffer, proto)) {
- MessageBox(0, Translate("Could not write contact protocol to MetaContact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ if ( db_set_s(dest, META_PROTO, buffer, szProto)) {
+ MessageBox(0, TranslateT("Could not write contact protocol to MetaContact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
db_free(&cws.value);
return FALSE;
}
// write the login
strcpy(buffer, "Login");
- strcat(buffer, _itoa((int)(num_contacts - 1), buffer2, 10));
+ strcat(buffer, _itoa((int)(num_contacts - 1), szId, 10));
- cws.szModule=META_PROTO;
- cws.szSetting=buffer;
+ cws.szModule = META_PROTO;
+ cws.szSetting = buffer;
if ( CallService(MS_DB_CONTACT_WRITESETTING,(WPARAM)dest,(LPARAM)&cws)) {
- MessageBox(0, Translate("Could not write unique id of contact to MetaContact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not write unique id of contact to MetaContact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
db_free(&cws.value);
return FALSE;
}
@@ -299,16 +298,16 @@ BOOL Meta_Assign(HANDLE src, HANDLE dest, BOOL set_as_default)
db_free(&cws.value);
// If we can get the nickname of the subcontact...
- if ( !db_get(src,proto,"Nick",&cws.value)) {
+ if ( !db_get(src,szProto,"Nick",&cws.value)) {
// write the nickname
strcpy(buffer, "Nick");
- strcat(buffer, _itoa((int)(num_contacts - 1), buffer2, 10));
+ strcat(buffer, _itoa((int)(num_contacts - 1), szId, 10));
cws.szModule=META_PROTO;
cws.szSetting=buffer;
if (CallService(MS_DB_CONTACT_WRITESETTING,(WPARAM)dest,(LPARAM)&cws)) {
- MessageBox(0, Translate("Could not write nickname of contact to MetaContact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not write nickname of contact to MetaContact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
@@ -322,7 +321,7 @@ BOOL Meta_Assign(HANDLE src, HANDLE dest, BOOL set_as_default)
// write the display name
strcpy(buffer, "CListName");
- strcat(buffer, _itoa((int)(num_contacts - 1), buffer2, 10));
+ strcat(buffer, _itoa((int)(num_contacts - 1), szId, 10));
if (wname && strncmp(name, (char *)wname, strlen(name)) != 0) {
DBWriteContactSettingWString(dest, META_PROTO, buffer, wname);
@@ -330,58 +329,58 @@ BOOL Meta_Assign(HANDLE src, HANDLE dest, BOOL set_as_default)
db_set_s(dest, META_PROTO, buffer, name);
// Get the status
- if ( !proto)
+ if ( !szProto)
status = ID_STATUS_OFFLINE;
else
- status = db_get_w(src, proto, "Status", ID_STATUS_OFFLINE);
+ status = db_get_w(src, szProto, "Status", ID_STATUS_OFFLINE);
}
// write the status
strcpy(buffer, "Status");
- strcat(buffer, _itoa((int)(num_contacts - 1), buffer2, 10));
+ strcat(buffer, _itoa((int)(num_contacts - 1), szId, 10));
if (db_set_w(dest, META_PROTO, buffer, status)) {
- MessageBox(0, Translate("Could not write contact status to MetaContact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not write contact status to MetaContact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
// write the handle
strcpy(buffer, "Handle");
- strcat(buffer, _itoa((int)(num_contacts - 1), buffer2, 10));
+ strcat(buffer, _itoa((int)(num_contacts - 1), szId, 10));
if (db_set_dw(dest, META_PROTO, buffer, (DWORD)src)) {
- MessageBox(0, Translate("Could not write contact handle to MetaContact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not write contact handle to MetaContact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
// write status string
strcpy(buffer, "StatusString");
- strcat(buffer, _itoa((int)(num_contacts - 1), buffer2, 10));
+ strcat(buffer, _itoa((int)(num_contacts - 1), szId, 10));
Meta_GetStatusString(status, buffer2, 512);
- if (db_set_s(dest, META_PROTO, buffer, buffer2)) {
- MessageBox(0, Translate("Could not write contact status string to MetaContact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ if (db_set_ts(dest, META_PROTO, buffer, buffer2)) {
+ MessageBox(0, TranslateT("Could not write contact status string to MetaContact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
// Write the link in the contact
if (db_set_dw(src, META_PROTO, META_LINK,metaID)) {
- MessageBox(0, Translate("Could not write MetaContact id to contact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not write MetaContact id to contact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
// Write the contact number in the contact
if (db_set_dw(src, META_PROTO, "ContactNumber",(DWORD)(num_contacts - 1))) {
- MessageBox(0, Translate("Could not write MetaContact contact number to contact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not write MetaContact contact number to contact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
// Write the handle in the contact
if (db_set_dw(src, META_PROTO, "Handle",(DWORD)dest)) {
- MessageBox(0, Translate("Could not write MetaContact contact number to contact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not write MetaContact contact number to contact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
// update count of contacts
if (db_set_dw(dest, META_PROTO, "NumContacts",num_contacts)) {
- MessageBox(0, Translate("Could not write contact count to MetaContact"), Translate("Assignment Error"), MB_OK | MB_ICONWARNING);
+ MessageBox(0, TranslateT("Could not write contact count to MetaContact"), TranslateT("Assignment Error"), MB_OK | MB_ICONWARNING);
return FALSE;
}
@@ -409,7 +408,7 @@ BOOL Meta_Assign(HANDLE src, HANDLE dest, BOOL set_as_default)
_tcscpy(AI.filename, _T("X"));
if ((int)CallProtoService(META_PROTO, PS_GETAVATARINFOT, 0, (LPARAM)&AI) == GAIR_SUCCESS)
- DBWriteContactSettingTString(dest, "ContactPhoto", "File",AI.filename);
+ db_set_ts(dest, "ContactPhoto", "File",AI.filename);
}
// Hide the contact
@@ -450,7 +449,7 @@ HANDLE Meta_GetMostOnlineSupporting(HANDLE hMeta, int pflagnum, unsigned long ca
HANDLE most_online_contact = NULL, hContact;
int i, status, default_contact_number, num_contacts;
unsigned long caps = 0;
- char *proto, *most_online_proto;
+ char *szProto, *most_online_proto;
// you can't get more online than having the default contact ONLINE - so check that first
if ((default_contact_number = db_get_dw(hMeta, META_PROTO, "Default",(DWORD)-1)) == (DWORD)-1)
@@ -465,28 +464,28 @@ HANDLE Meta_GetMostOnlineSupporting(HANDLE hMeta, int pflagnum, unsigned long ca
return NULL;
most_online_contact = Meta_GetContactHandle(hMeta, default_contact_number);
- proto = GetContactProto(most_online_contact);
- caps = proto ? CallProtoService(proto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0;
- if (proto && strcmp(proto, "IRC") == 0) caps |= PF1_IM;
+ szProto = GetContactProto(most_online_contact);
+ caps = szProto ? CallProtoService(szProto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0;
+ if (szProto && strcmp(szProto, "IRC") == 0) caps |= PF1_IM;
// we are forced to do use default for sending - '-1' capability indicates no specific capability, but respect 'Force Default'
- if (proto && db_get_b(hMeta, META_PROTO, "ForceDefault", 0) && capability != 0 && (capability == -1 || (caps & capability) == capability)) // capability is 0 when we're working out status
+ if (szProto && db_get_b(hMeta, META_PROTO, "ForceDefault", 0) && capability != 0 && (capability == -1 || (caps & capability) == capability)) // capability is 0 when we're working out status
return most_online_contact;
// a subcontact is being temporarily 'forced' to do sending
if ((most_online_contact = (HANDLE)db_get_dw(hMeta, META_PROTO, "ForceSend", 0))) {
- caps = proto ? CallProtoService(proto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0;
- if (proto && strcmp(proto, "IRC") == 0) caps |= PF1_IM;
- if (proto && (caps & capability) == capability && capability != 0) // capability is 0 when we're working out status
+ caps = szProto ? CallProtoService(szProto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0;
+ if (szProto && strcmp(szProto, "IRC") == 0) caps |= PF1_IM;
+ if (szProto && (caps & capability) == capability && capability != 0) // capability is 0 when we're working out status
return most_online_contact;
}
most_online_contact = Meta_GetContactHandle(hMeta, default_contact_number);
- proto = GetContactProto(most_online_contact);
- if (proto && CallProtoService(proto, PS_GETSTATUS, 0, 0) >= ID_STATUS_ONLINE) {
- caps = proto ? CallProtoService(proto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0;
- if (proto && strcmp(proto, "IRC") == 0) caps |= PF1_IM;
- if (proto && (capability == -1 || (caps & capability) == capability)) {
- most_online_status = db_get_w(most_online_contact, proto, "Status", ID_STATUS_OFFLINE);
+ szProto = GetContactProto(most_online_contact);
+ if (szProto && CallProtoService(szProto, PS_GETSTATUS, 0, 0) >= ID_STATUS_ONLINE) {
+ caps = szProto ? CallProtoService(szProto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0;
+ if (szProto && strcmp(szProto, "IRC") == 0) caps |= PF1_IM;
+ if (szProto && (capability == -1 || (caps & capability) == capability)) {
+ most_online_status = db_get_w(most_online_contact, szProto, "Status", ID_STATUS_OFFLINE);
// if our default is not offline, and option to use default is set - return default
// and also if our default is online, return it
@@ -498,35 +497,35 @@ HANDLE Meta_GetMostOnlineSupporting(HANDLE hMeta, int pflagnum, unsigned long ca
} else
most_online_status = ID_STATUS_OFFLINE;
- most_online_proto = proto;
+ most_online_proto = szProto;
// otherwise, check all the subcontacts for the one closest to the ONLINE state which supports the required capability
for (i = 0; i < num_contacts; i++) {
if (i == default_contact_number) // already checked that (i.e. initial value of most_online_contact and most_online_status are those of the default contact)
continue;
hContact = Meta_GetContactHandle(hMeta, i);
- proto = GetContactProto(hContact);
+ szProto = GetContactProto(hContact);
- if ( !proto || CallProtoService(proto, PS_GETSTATUS, 0, 0) < ID_STATUS_ONLINE) // proto offline or connecting
+ if ( !szProto || CallProtoService(szProto, PS_GETSTATUS, 0, 0) < ID_STATUS_ONLINE) // szProto offline or connecting
continue;
- caps = proto ? CallProtoService(proto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0;
- if (proto && strcmp(proto, "IRC") == 0) caps |= PF1_IM;
- if (proto && (capability == -1 || (caps & capability) == capability)) {
+ caps = szProto ? CallProtoService(szProto, PS_GETCAPS, (WPARAM)pflagnum, 0) : 0;
+ if (szProto && strcmp(szProto, "IRC") == 0) caps |= PF1_IM;
+ if (szProto && (capability == -1 || (caps & capability) == capability)) {
- status = db_get_w(hContact, proto, "Status", ID_STATUS_OFFLINE);
+ status = db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE);
if (status == ID_STATUS_ONLINE) {
most_online_contact = hContact;
- most_online_proto = proto;
+ most_online_proto = szProto;
return most_online_contact;
} else if (status <= ID_STATUS_OFFLINE) // status below ID_STATUS_OFFLINE is a connecting status
continue;
else {
- if (GetRealPriority(proto, status) < GetRealPriority(most_online_proto, most_online_status)) {
+ if (GetRealPriority(szProto, status) < GetRealPriority(most_online_proto, most_online_status)) {
most_online_status = status;
most_online_contact = hContact;
- most_online_proto = proto;
+ most_online_proto = szProto;
}
}
}
@@ -667,7 +666,7 @@ const char *MBirthdaySettings[3] =
// special handling for status message
// copy from first subcontact with any of these values that has the same status as the most online contact
-// proto:
+// szProto:
// clist: "StatusMsg"
void CopyStatusData(HANDLE hMeta)
@@ -687,24 +686,24 @@ void CopyStatusData(HANDLE hMeta)
else
hContact = Meta_GetContactHandle(hMeta, i);
- char *proto = GetContactProto(hContact);
+ char *szProto = GetContactProto(hContact);
- if (proto && db_get_w(hContact, proto, "Status", ID_STATUS_OFFLINE) == status) {
+ if (szProto && db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE) == status) {
if ( !bDoneStatus && !Mydb_get(hContact, "CList", "StatusMsg", &dbv)) {
MyDBWriteContactSetting(hMeta, "CList", "StatusMsg", &dbv);
db_free(&dbv);
bDoneStatus = TRUE;
}
- if ((!bDoneXStatus) && (!Mydb_get(hContact, proto, "XStatusId", &dbv)) && dbv.type != DBVT_DELETED) {
- db_set_s(hMeta, META_PROTO, "XStatusProto", proto);
+ if ((!bDoneXStatus) && (!Mydb_get(hContact, szProto, "XStatusId", &dbv)) && dbv.type != DBVT_DELETED) {
+ db_set_s(hMeta, META_PROTO, "XStatusProto", szProto);
MyDBWriteContactSetting(hMeta, META_PROTO, "XStatusId", &dbv);
db_free(&dbv);
- if ( !Mydb_get(hContact, proto, "XStatusMsg", &dbv)) {
+ if ( !Mydb_get(hContact, szProto, "XStatusMsg", &dbv)) {
MyDBWriteContactSetting(hMeta, META_PROTO, "XStatusMsg", &dbv);
db_free(&dbv);
}
- if ( !Mydb_get(hContact, proto, "XStatusName", &dbv)) {
+ if ( !Mydb_get(hContact, szProto, "XStatusName", &dbv)) {
MyDBWriteContactSetting(hMeta, META_PROTO, "XStatusName", &dbv);
db_free(&dbv);
}
@@ -750,11 +749,12 @@ HANDLE Meta_GetContactHandle(HANDLE hMeta, int contact_number)
return (HANDLE)db_get_dw(hMeta, META_PROTO, buffer, 0);
}
-int Meta_SetHandles(void) {
+int Meta_SetHandles(void)
+{
DWORD meta_id, num_contacts, contact_number;
HANDLE hContact2, hContact = db_find_first(), hNextContact;
- char buffer[512], buffer2[512];
- char nick_buffer[128];
+ char buffer[512];
+ TCHAR nick_buffer[128], buffer2[40];
BOOL found;
while ( hContact != NULL ) {
@@ -762,16 +762,16 @@ int Meta_SetHandles(void) {
// is a subcontact
// get nick for debug messages
- strcpy(nick_buffer, "meta_id: ");
- strcat(nick_buffer, _itoa(meta_id, buffer2, 10));
+ _tcscpy(nick_buffer, _T("meta_id: "));
+ _tcscat(nick_buffer, _itot(meta_id, buffer2, 10));
contact_number = db_get_dw(hContact, META_PROTO, "ContactNumber", (DWORD)-1);
- strcat(nick_buffer, ", contact num: ");
- strcat(nick_buffer, _itoa(contact_number, buffer2, 10));
+ _tcscat(nick_buffer, _T(", contact num: "));
+ _tcscat(nick_buffer, _itot(contact_number, buffer2, 10));
if (contact_number < 0) {
// problem!
- MessageBox(0, Translate("Subcontact contact number < 0 - deleting MetaContact"), nick_buffer, MB_OK | MB_ICONERROR);
+ MessageBox(0, TranslateT("Subcontact contact number < 0 - deleting MetaContact"), nick_buffer, MB_OK | MB_ICONERROR);
//CallService(MS_DB_CONTACT_DELETE, (WPARMA)hContact, 0);
hNextContact = db_find_next(hContact);
Meta_Delete((WPARAM)hContact, (LPARAM)1);
@@ -783,7 +783,6 @@ int Meta_SetHandles(void) {
// ensure the window open flag is not present
db_unset(hContact, META_PROTO, "WindowOpen");
-
// find metacontact
found = FALSE;
hContact2 = db_find_first();
@@ -791,7 +790,7 @@ int Meta_SetHandles(void) {
while ( hContact2 != NULL ) {
if (db_get_dw(hContact2, META_PROTO, META_ID,(DWORD)-1) == meta_id) {
found = TRUE;
-
+
// set handle
db_set_dw(hContact, META_PROTO, "Handle", (DWORD)hContact2);
@@ -802,20 +801,21 @@ int Meta_SetHandles(void) {
num_contacts = db_get_dw(hContact2, META_PROTO, "NumContacts", (DWORD)-1);
if (contact_number >= 0 && contact_number < num_contacts) {
// set metacontact's handle to us
+ char szId[40];
strcpy(buffer, "Handle");
- strcat(buffer, _itoa((int)contact_number, buffer2, 10));
+ strcat(buffer, _itoa((int)contact_number, szId, 10));
db_set_dw(hContact2, META_PROTO, buffer, (DWORD)hContact);
- } else {
- char buff[256];
+ }
+ else {
+ TCHAR buff[256];
// problem - contact number is greater than meta's number of contacts
- sprintf(buff, Translate("Subcontact contact number (%d) > meta num contacts (%d) - deleting MetaContact"), (int)contact_number, (int)num_contacts);
+ mir_sntprintf(buff, SIZEOF(buff), TranslateT("Subcontact contact number (%d) > meta num contacts (%d) - deleting MetaContact"), contact_number, num_contacts);
MessageBox(0, buff, nick_buffer, MB_OK | MB_ICONERROR);
- //CallService(MS_DB_CONTACT_DELETE, (WPARMA)hContact, 0);
+
hNextContact = db_find_next(hContact);
Meta_Delete((WPARAM)hContact, (LPARAM)1);
hContact = hNextContact;
continue;
- //return 1;
}
}
@@ -824,7 +824,7 @@ int Meta_SetHandles(void) {
if ( !found) {
// problem - subcontact's meta not found
- MessageBox(0, Translate("Subcontact's MetaContact not found - deleting MetaContact data"), nick_buffer, MB_OK | MB_ICONERROR);
+ MessageBox(0, TranslateT("Subcontact's MetaContact not found - deleting MetaContact data"), nick_buffer, MB_OK | MB_ICONERROR);
// delete meta data
db_unset(hContact, META_PROTO, "IsSubcontact");
@@ -833,25 +833,25 @@ int Meta_SetHandles(void) {
db_unset(hContact, META_PROTO, "ContactNumber");
Meta_RestoreGroup(hContact);
db_unset(hContact, META_PROTO, "OldCListGroup");
-
+
// stop ignoring, if we were
if (options.suppress_status)
CallService(MS_IGNORE_UNIGNORE, (WPARAM)hContact, (WPARAM)IGNOREEVENT_USERONLINE);
-
- } else {
+
+ }
+ else {
if ( !db_get_b(hContact, META_PROTO, "IsSubcontact", 0))
db_set_b(hContact, META_PROTO, "IsSubcontact", 1);
}
-
- } else
- db_unset(hContact, META_PROTO, "Handle");
+ }
+ else db_unset(hContact, META_PROTO, "Handle");
if ((meta_id = db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1))!=(DWORD)-1) {
// is a metacontact
// get nick for debug messages
- strcpy(nick_buffer, "meta_id: ");
- strcat(nick_buffer, _itoa(meta_id, buffer2, 10));
+ _tcscpy(nick_buffer, _T("meta_id: "));
+ _tcscat(nick_buffer, _itot(meta_id, buffer2, 10));
// ensure the window open flag is not present
db_unset(hContact, META_PROTO, "WindowOpen");
@@ -862,47 +862,40 @@ int Meta_SetHandles(void) {
if (num_contacts < 0) {
// problem
- MessageBox(0, Translate("MetaContact number of contacts < 0 - deleting MetaContact"), nick_buffer, MB_OK | MB_ICONERROR);
- //CallService(MS_DB_CONTACT_DELETE, (WPARMA)hContact, 0);
+ MessageBox(0, TranslateT("MetaContact number of contacts < 0 - deleting MetaContact"), nick_buffer, MB_OK | MB_ICONERROR);
hNextContact = db_find_next(hContact);
Meta_Delete((WPARAM)hContact, (LPARAM)1);
hContact = hNextContact;
continue;
- //return 1;
}
-
+
if (contact_number < 0 || contact_number >= num_contacts) {
// problem
- MessageBox(0, Translate("MetaContact default contact number out of range - deleting MetaContact"), nick_buffer, MB_OK | MB_ICONERROR);
+ MessageBox(0, TranslateT("MetaContact default contact number out of range - deleting MetaContact"), nick_buffer, MB_OK | MB_ICONERROR);
hNextContact = db_find_next(hContact);
Meta_Delete((WPARAM)hContact, (LPARAM)1);
hContact = hNextContact;
- //CallService(MS_DB_CONTACT_DELETE, (WPARMA)hContact, 0);
continue;
- //return 1;
}
}
hContact = db_find_next(hContact);
}
-
+
// loop through one more time - check contact counts match
hContact = db_find_first();
while ( hContact != NULL ) {
if ((meta_id = db_get_dw(hContact, META_PROTO, META_ID,(DWORD)-1))!=(DWORD)-1) {
// get nick for debug messages
- strcpy(nick_buffer, Translate("MetaId: "));
- strcat(nick_buffer, _itoa(meta_id, buffer2, 10));
num_contacts = db_get_b(hContact, META_PROTO, "ContactCountCheck", -2);
if (num_contacts != (DWORD)db_get_dw(hContact, META_PROTO, "NumContacts", (DWORD)-1)) {
- // mismatch
- //if (MessageBox(0, Translate("MetaContact corrupted - the number of subcontacts is incorrect.\nDelete MetaContact?"), nick_buffer, MB_YESNO | MB_ICONERROR) == IDYES) {
- // Meta_Delete((WPARAM)hContact, (LPARAM)1); // second param prevents confirm dialog
- //} else
- // return 1;
hNextContact = db_find_next(hContact);
- MessageBox(0, Translate("MetaContact corrupted - the number of subcontacts is incorrect.\nDeleting MetaContact."), nick_buffer, MB_OK | MB_ICONERROR);
+
+ _tcscpy(nick_buffer, TranslateT("MetaId: "));
+ _tcscat(nick_buffer, _itot(meta_id, buffer2, 10));
+ MessageBox(0, TranslateT("MetaContact corrupted - the number of subcontacts is incorrect.\nDeleting MetaContact."), nick_buffer, MB_OK | MB_ICONERROR);
+
Meta_Delete((WPARAM)hContact, (LPARAM)1);
hContact = hNextContact;
continue;
@@ -920,12 +913,21 @@ int Meta_SetHandles(void) {
*
* and ensure metafilter in place
*/
+
+#define szMsg "The 'MetaContacts Hidden Group' has been added to your contact list.\n\
+This is most likely due to server-side contact information. To fix this, so that\n\
+MetaContacts continues to function correctly, you should:\n\
+ - disable MetaContacts using the 'Toggle MetaContacts Off' main menu item\n\
+ - move all contacts out of this group\n\
+ - synchronize your contacts with the server\n\
+ - re-enable MetaContacts"
+
int Meta_HideLinkedContacts(void) {
DBVARIANT dbv, dbv2;
DWORD meta_id, num_contacts, contact_number;
WORD status;
char buffer[512], buffer2[512];
- char *proto, *group_name;
+ char *szProto, *group_name;
int hGroup = 1;
HANDLE hContact2, hContact = db_find_first();
@@ -937,26 +939,19 @@ int Meta_HideLinkedContacts(void) {
if (group_name && !strcmp(group_name, META_HIDDEN_GROUP)) {
// disabled because it shows a message box
//CallService(MS_CLIST_GROUPDELETE, (WPARAM)hGroup, 0);
- MessageBox(0, Translate("The 'MetaContacts Hidden Group' has been added to your contact list.\n"
- "This is most likely due to server-side contact information. To fix this, so that\n"
- "MetaContacts continues to function correctly, you should:\n"
- " - disable MetaContacts using the 'Toggle MetaContacts Off' main menu item\n"
- " - move all contacts out of this group\n"
- " - synchronize your contacts with the server\n"
- " - re-enable MetaContacts"), Translate("MetaContacts Warning"), MB_ICONWARNING | MB_OK);
+ MessageBox(0, TranslateT(szMsg), TranslateT("MetaContacts Warning"), MB_ICONWARNING | MB_OK);
break;
}
hGroup++;
} while(group_name);
-
while ( hContact != NULL ) {
if ((meta_id = db_get_dw(hContact, META_PROTO, META_LINK,(DWORD)-1))!=(DWORD)-1) {
// get contact number
contact_number = db_get_dw(hContact, META_PROTO, "ContactNumber", (DWORD)-1);
// prepare to update metacontact record of subcontat status
- proto = GetContactProto(hContact);
+ szProto = GetContactProto(hContact);
// save old group and move to invisible group (i.e. non-existent group)
Meta_SetGroup(hContact);
@@ -969,10 +964,10 @@ int Meta_HideLinkedContacts(void) {
num_contacts = db_get_dw(hContact2, META_PROTO, "NumContacts", (DWORD)-1);
if (contact_number >= 0 && contact_number < num_contacts) {
- if ( !proto)
+ if ( !szProto)
status = ID_STATUS_OFFLINE;
else
- status = db_get_w(hContact, proto, "Status", ID_STATUS_OFFLINE);
+ status = db_get_w(hContact, szProto, "Status", ID_STATUS_OFFLINE);
// update metacontact's record of status for this contact
strcpy(buffer, "Status");
@@ -980,7 +975,7 @@ int Meta_HideLinkedContacts(void) {
db_set_w(hContact2, META_PROTO, buffer, status);
// update metacontact's record of nick for this contact
- if (proto && !db_get(hContact, proto, "Nick", &dbv)) {
+ if (szProto && !db_get(hContact, szProto, "Nick", &dbv)) {
strcpy(buffer, "Nick");
strcat(buffer, _itoa(contact_number, buffer2, 10));
MyDBWriteContactSetting(hContact2, META_PROTO, buffer, &dbv);
@@ -1159,18 +1154,18 @@ void Meta_RestoreGroup(HANDLE hContact) {
}
void Meta_SetGroup(HANDLE hContact) {
- char *proto, *uid;
+ char *szProto, *uid;
if (meta_group_hack_disabled) return; // clist has called api function to disable group hack - yay!
// the existence of this service means that clist_meta_mw is active and will do the hiding for us
if (ServiceExists(MS_CLUI_METASUPPORT)) return;
- proto = GetContactProto(hContact);
- if (proto)
- uid = (char *)CallProtoService(proto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
+ szProto = GetContactProto(hContact);
+ if (szProto)
+ uid = (char *)CallProtoService(szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
- if (proto && uid && (INT_PTR)uid != CALLSERVICE_NOTFOUND && !strcmp(JABBER_UNIQUE_ID_SETTING, uid)) {
+ if (szProto && uid && (INT_PTR)uid != CALLSERVICE_NOTFOUND && !strcmp(JABBER_UNIQUE_ID_SETTING, uid)) {
// if it's a jabber contact, hide it, and record the fact that it was us who did
db_set_b(hContact, META_PROTO, "Hidden", 1);
db_set_b(hContact, "CList", "Hidden", 1);
@@ -1193,44 +1188,45 @@ void Meta_SetGroup(HANDLE hContact) {
}
}
-void Meta_GetStatusString(int status, char *buf, size_t size) {
+void Meta_GetStatusString(int status, TCHAR *buf, size_t size)
+{
switch(status) {
- case ID_STATUS_OFFLINE:
- strncpy(buf, Translate("Offline"), size);
- break;
- case ID_STATUS_ONLINE:
- strncpy(buf, Translate("Online"), size);
- break;
- case ID_STATUS_AWAY:
- strncpy(buf, Translate("Away"), size);
- break;
- case ID_STATUS_DND:
- strncpy(buf, Translate("DND"), size);
- break;
- case ID_STATUS_NA:
- strncpy(buf, Translate("N/A"), size);
- break;
- case ID_STATUS_OCCUPIED:
- strncpy(buf, Translate("Occupied"), size);
- break;
- case ID_STATUS_FREECHAT:
- strncpy(buf, Translate("Free to Chat"), size);
- break;
- case ID_STATUS_INVISIBLE:
- strncpy(buf, Translate("Invisible"), size);
- break;
- case ID_STATUS_ONTHEPHONE:
- strncpy(buf, Translate("On the Phone"), size);
- break;
- case ID_STATUS_OUTTOLUNCH:
- strncpy(buf, Translate("Out to Lunch"), size);
- break;
- case ID_STATUS_IDLE:
- strncpy(buf, Translate("IDLE"), size);
- break;
- default:
- strncpy(buf, Translate("Unknown"), size);
- break;
+ case ID_STATUS_OFFLINE:
+ _tcsncpy(buf, TranslateT("Offline"), size);
+ break;
+ case ID_STATUS_ONLINE:
+ _tcsncpy(buf, TranslateT("Online"), size);
+ break;
+ case ID_STATUS_AWAY:
+ _tcsncpy(buf, TranslateT("Away"), size);
+ break;
+ case ID_STATUS_DND:
+ _tcsncpy(buf, TranslateT("DND"), size);
+ break;
+ case ID_STATUS_NA:
+ _tcsncpy(buf, TranslateT("N/A"), size);
+ break;
+ case ID_STATUS_OCCUPIED:
+ _tcsncpy(buf, TranslateT("Occupied"), size);
+ break;
+ case ID_STATUS_FREECHAT:
+ _tcsncpy(buf, TranslateT("Free to Chat"), size);
+ break;
+ case ID_STATUS_INVISIBLE:
+ _tcsncpy(buf, TranslateT("Invisible"), size);
+ break;
+ case ID_STATUS_ONTHEPHONE:
+ _tcsncpy(buf, TranslateT("On the Phone"), size);
+ break;
+ case ID_STATUS_OUTTOLUNCH:
+ _tcsncpy(buf, TranslateT("Out to Lunch"), size);
+ break;
+ case ID_STATUS_IDLE:
+ _tcsncpy(buf, TranslateT("IDLE"), size);
+ break;
+ default:
+ _tcsncpy(buf, TranslateT("Unknown"), size);
+ break;
}
}
@@ -1254,7 +1250,7 @@ int Meta_SuppressStatus(BOOL suppress) {
int Meta_CopyContactNick(HANDLE hMeta, HANDLE hContact) {
DBVARIANT dbv, dbv_proto;
- char *proto;
+ char *szProto;
if (options.lockHandle) {
hContact = Meta_GetContactHandle(hMeta, 0);
@@ -1262,13 +1258,13 @@ int Meta_CopyContactNick(HANDLE hMeta, HANDLE hContact) {
if ( !hContact) return 1;
- //proto = GetContactProto(hContact);
- // read proto direct from db, since we do this on load and other proto plugins may not be loaded yet
+ //szProto = GetContactProto(hContact);
+ // read szProto direct from db, since we do this on load and other szProto plugins may not be loaded yet
if ( !db_get(hContact, "Protocol", "p", &dbv_proto)) {
- proto = dbv_proto.pszVal;
- if (options.clist_contact_name == CNNT_NICK && proto) {
- if ( !Mydb_get(hContact, proto, "Nick", &dbv)) {
+ szProto = dbv_proto.pszVal;
+ if (options.clist_contact_name == CNNT_NICK && szProto) {
+ if ( !Mydb_get(hContact, szProto, "Nick", &dbv)) {
MyDBWriteContactSetting(hMeta, META_PROTO, "Nick", &dbv);
db_free(&dbv);
//CallService(MS_CLIST_INVALIDATEDISPLAYNAME, (WPARAM)hMeta, 0);
@@ -1277,20 +1273,9 @@ int Meta_CopyContactNick(HANDLE hMeta, HANDLE hContact) {
return 0;
}
} else if (options.clist_contact_name == CNNT_DISPLAYNAME) {
- char *name = (char *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, 0);
- wchar_t *wname = (wchar_t *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_UNICODE);
-
- if (name && strcmp(name, Translate("(Unknown Contact)")) != 0) {
- if (wname && strncmp(name, (char *)wname, strlen(name)) != 0) {
- DBVARIANT dbv;
- dbv.pwszVal = wname;
- dbv.type = DBVT_WCHAR;
-
- MyDBWriteContactSetting(hMeta, META_PROTO, "Nick", &dbv);
- } else
- db_set_s(hMeta, META_PROTO, "Nick", name);
- //CallService(MS_CLIST_INVALIDATEDISPLAYNAME, (WPARAM)hMeta, 0);
- //CallService(MS_CLUI_CONTACTRENAMED, (WPARAM)hMeta, 0);
+ TCHAR *name = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR);
+ if (name && _tcscmp(name, TranslateT("(Unknown Contact)")) != 0) {
+ db_set_ts(hMeta, META_PROTO, "Nick", name);
db_free(&dbv_proto);
return 0;
}
@@ -1535,143 +1520,21 @@ void copyHistory(HANDLE hContactFrom,HANDLE hContactTo)
}
dbei.szModule = META_PROTO;
- //oldBlobSize = dbei.cbBlob;
- //dbei.cbBlob = oldBlobSize + id_length;
dbei.flags &= ~DBEF_FIRST;
- //memcpy(dbei.pBlob + oldBlobSize, id, id_length);
CallService(MS_DB_EVENT_ADD, (WPARAM)hContactTo, (LPARAM)&dbei);
}
- //CallService(MS_DB_SETSAFETYMODE, (WPARAM)TRUE, 0);
DestroyWindow(progress_dialog);
if (buffer) mir_free(buffer);
//mir_free(id);
}
-/*
-void Meta_RemoveHistory(HANDLE hContactRemoveFrom, HANDLE hContactSource) {
- HANDLE hDbEvent;
- DBEVENTINFO dbei = { 0 };
- char *id;
- DWORD id_length;
- BYTE *buffer = 0;
- DWORD time_now = time(0), earliest_time = time_now;
- HWND progress_dialog, prog;
-
- if ( !hContactRemoveFrom || !hContactSource) return;
-
- id = Meta_GetUniqueIdentifier(hContactSource, &id_length);
- if ( !id) return;
-
- progress_dialog = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DELPROGRESS), 0, DlgProcNull);
- ShowWindow(progress_dialog, SW_SHOW);
-
- prog = GetDlgItem(progress_dialog, IDC_PROG);
-
- //CallService(MS_DB_SETSAFETYMODE, (WPARAM)FALSE, 0);
- hDbEvent = (HANDLE)CallService(MS_DB_EVENT_FINDFIRST,(WPARAM)hContactRemoveFrom, 0);
- while (hDbEvent)
- {
- // get the event
- ZeroMemory(&dbei, sizeof(dbei));
- dbei.cbSize = sizeof(dbei);
-
- if ((dbei.cbBlob = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM)hDbEvent, 0)) == -1) {
- break;
- }
-
- buffer = mir_realloc(buffer, dbei.cbBlob + id_length);
- dbei.pBlob = buffer;
-
- if (CallService(MS_DB_EVENT_GET,(WPARAM)hDbEvent,(LPARAM)&dbei)) break;
-
- if (dbei.timestamp < earliest_time)
- earliest_time = dbei.timestamp;
-
- if (dbei.eventType != EVENTTYPE_MESSAGE && dbei.eventType != EVENTTYPE_FILE && dbei.eventType != EVENTTYPE_URL) {
- hDbEvent=(HANDLE)CallService(MS_DB_EVENT_FINDNEXT,(WPARAM)hDbEvent,0);
- continue;
- }
-
- if (dbei.cbBlob >= id_length && strncmp((char *)(dbei.pBlob + dbei.cbBlob - id_length), id, id_length - 1) == 0) {
- // event is tagged with source contact id - remove
- HANDLE hDbEventNext;
-
- if (time_now > earliest_time) { // just in case
- SendMessage(prog, PBM_SETPOS, (WPARAM)(int)(100.0 * (dbei.timestamp - earliest_time) / (time_now - earliest_time)), 0);
- UpdateWindow(progress_dialog);
- }
-
- hDbEventNext = (HANDLE)CallService(MS_DB_EVENT_FINDNEXT,(WPARAM)hDbEvent,0);
- CallService(MS_DB_EVENT_DELETE, (WPARAM)hContactRemoveFrom, (LPARAM)hDbEvent);
- hDbEvent = hDbEventNext;
- continue;
- }
-
- hDbEvent = (HANDLE)CallService(MS_DB_EVENT_FINDNEXT,(WPARAM)hDbEvent,0);
- }
- //CallService(MS_DB_SETSAFETYMODE, (WPARAM)TRUE, 0);
-
- DestroyWindow(progress_dialog);
- if (buffer) mir_free(buffer);
- mir_free(id);
-}
-
-char *Meta_GetUniqueIdentifier(HANDLE hContact, DWORD *pused) {
- char *proto = GetContactProto(hContact);
- char *field;
- char *id;
- char buff[256];
- DWORD used;
- DBVARIANT dbv;
-
- id = (char *)mir_alloc(256);
-
- if ( !proto) return 0;
-
- strncpy(id, proto, 127);
- strcat(id, "*"); // seperate proto & proto id with asterisk to make one long comparable string
-
- used = strlen(id);
-
- field = (char *)CallProtoService(proto,PS_GETCAPS,PFLAG_UNIQUEIDSETTING,0);
- if ( !field) return 0;
-
- db_get(hContact,proto,field,&dbv);
- switch(dbv.type)
- {
- case DBVT_ASCIIZ:
- sprintf(buff,"%s",dbv.pszVal);
- break;
- case DBVT_BYTE:
- sprintf(buff,"%d",dbv.bVal);
- break;
- case DBVT_WORD:
- sprintf(buff,"%d",dbv.wVal);
- break;
- case DBVT_DWORD:
- sprintf(buff,"%d",dbv.dVal);
- break;
- default:
- sprintf(buff,"bugger this");
- }
- db_free(&dbv);
-
- strncpy(id + used, buff, 256 - used);
- if (used) {
- *pused = (DWORD)(used + strlen(buff) + 1);
- if (*pused > 256) *pused = 256;
- }
-
- return id;
-}
-*/
void Meta_FixStatus(HANDLE hMeta) {
HANDLE most_online = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_1, 0);
if (most_online) {
- char *proto = GetContactProto(most_online);
- if (proto) {
- WORD status = (WORD)db_get_w(most_online, proto, "Status", (WORD)ID_STATUS_OFFLINE);
+ char *szProto = GetContactProto(most_online);
+ if (szProto) {
+ WORD status = (WORD)db_get_w(most_online, szProto, "Status", (WORD)ID_STATUS_OFFLINE);
db_set_w(hMeta, META_PROTO, "Status", status);
}
else db_set_w(hMeta, META_PROTO, "Status", (WORD)ID_STATUS_OFFLINE);
diff --git a/plugins/MetaContacts/src/metacontacts.h b/plugins/MetaContacts/src/metacontacts.h
index 5312bdb4ba..8a0abca59f 100644
--- a/plugins/MetaContacts/src/metacontacts.h
+++ b/plugins/MetaContacts/src/metacontacts.h
@@ -78,27 +78,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
INT_PTR TranslateMenuFunc(HANDLE hContact, int i);
extern HANDLE hMenuContact[MAX_CONTACTS];
-INT_PTR MenuFunc0(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc1(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc2(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc3(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc4(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc5(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc6(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc7(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc8(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc9(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc10(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc11(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc12(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc13(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc14(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc15(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc16(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc17(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc18(WPARAM wParam, LPARAM lParam);
-INT_PTR MenuFunc19(WPARAM wParam, LPARAM lParam);
-
extern HINSTANCE hInstance;
extern PLUGININFOEX pluginInfo;
@@ -130,7 +109,7 @@ int Meta_SetHandles(void);
int Meta_UnhideLinkedContacts(void);
int Meta_GetContactNumber(HANDLE hContact);
HANDLE Meta_GetContactHandle(HANDLE hMeta, int contact_number);
-void Meta_GetStatusString(int status, char *buf, size_t size);
+void Meta_GetStatusString(int status, TCHAR *buf, size_t size);
void Meta_RestoreGroup(HANDLE hContact);
void Meta_SetGroup(HANDLE hContact);
int Meta_HideMetaContacts(int hide);
@@ -253,7 +232,8 @@ extern BOOL meta_group_hack_disabled;
#ifndef MS_CLUI_GETVERSION
#define MS_CLUI_GETVERSION "CLUI/GetVersion"
-
extern BOOL os_unicode_enabled;
+#define szDelMsg "You are going to remove all the contacts associated with this MetaContact.\nThis will delete the MetaContact.\n\nProceed Anyway?"
+
#endif