summaryrefslogtreecommitdiff
path: root/Plugins/utils/mir_options.cpp
diff options
context:
space:
mode:
authorpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2009-05-02 00:08:17 +0000
committerpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2009-05-02 00:08:17 +0000
commit7c52bd0b47d68806777152e097f1bf6f3f718170 (patch)
tree2b8bb05622141f9dff4a4fe1b53196b9860c2f1c /Plugins/utils/mir_options.cpp
parent74de73a0d9a2a40ed77ac2ee6a2714ceb7c633b0 (diff)
utils: sync with berliOS
git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@174 c086bb3d-8645-0410-b8da-73a8550f86e7
Diffstat (limited to 'Plugins/utils/mir_options.cpp')
-rw-r--r--Plugins/utils/mir_options.cpp47
1 files changed, 29 insertions, 18 deletions
diff --git a/Plugins/utils/mir_options.cpp b/Plugins/utils/mir_options.cpp
index f9a6e1c..b4dfe05 100644
--- a/Plugins/utils/mir_options.cpp
+++ b/Plugins/utils/mir_options.cpp
@@ -1,5 +1,5 @@
/*
-Copyright (C) 2005 Ricardo Pescuma Domenecci
+Copyright (C) 2005-2009 Ricardo Pescuma Domenecci
This is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -41,7 +41,7 @@ Boston, MA 02111-1307, USA.
static TCHAR* MyDBGetContactSettingTString(HANDLE hContact, char* module, char* setting, TCHAR* out, size_t len, TCHAR *def)
{
- DBVARIANT dbv;
+ DBVARIANT dbv = {0};
out[0] = _T('\0');
@@ -257,9 +257,6 @@ BOOL CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, char *
HWND hwndProtocols = GetDlgItem(hwndDlg, ctrl->nID);
LVCOLUMN lvc;
LVITEM lvi;
- PROTOCOLDESCRIPTOR **protos;
- int i,count;
- char szName[128];
ListView_SetExtendedListViewStyle(hwndProtocols, LVS_EX_CHECKBOXES);
@@ -273,36 +270,50 @@ BOOL CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, char *
lvi.iSubItem = 0;
lvi.iItem = 1000;
- CallService(MS_PROTO_ENUMPROTOCOLS, (WPARAM)&count, (LPARAM)&protos);
+ PROTOACCOUNT **protos;
+ int count;
+
+ BOOL hasAccounts = ServiceExists(MS_PROTO_ENUMACCOUNTS);
+
+ if (hasAccounts)
+ CallService(MS_PROTO_ENUMACCOUNTS, (WPARAM)&count, (LPARAM)&protos);
+ else
+ CallService(MS_PROTO_ENUMPROTOCOLS, (WPARAM)&count, (LPARAM)&protos);
- for (i = 0; i < count; i++)
+ for (int i = 0; i < count; i++)
{
if (protos[i]->type != PROTOTYPE_PROTOCOL)
continue;
- if (protos[i]->szName == NULL || protos[i]->szName[0] == '\0')
+ if (protos[i]->szModuleName == NULL || protos[i]->szModuleName[0] == '\0')
continue;
- if (ctrl->allowProtocol != NULL && !ctrl->allowProtocol(protos[i]->szName))
+ if (ctrl->allowProtocol != NULL && !ctrl->allowProtocol(protos[i]->szModuleName))
continue;
- CallProtoService(protos[i]->szName, PS_GETNAME, sizeof(szName), (LPARAM)szName);
+ TCHAR *name;
+ if (hasAccounts)
+ {
+ name = mir_tstrdup(protos[i]->tszAccountName);
+ }
+ else
+ {
+ char szName[128];
+ CallProtoService(protos[i]->szModuleName, PS_GETNAME, sizeof(szName), (LPARAM)szName);
+ name = mir_a2t(szName);
+ }
char *setting = (char *) mir_alloc(128 * sizeof(char));
- mir_snprintf(setting, 128, ctrl->setting, protos[i]->szName);
+ mir_snprintf(setting, 128, ctrl->setting, protos[i]->szModuleName);
BOOL show = (BOOL)DBGetContactSettingByte(NULL, module, setting, ctrl->dwDefValue);
lvi.lParam = (LPARAM)setting;
-#ifdef UNICODE
- WCHAR szwName[128];
- MultiByteToWideChar(CP_ACP, 0, szName, -1, szwName, 128);
- lvi.pszText = TranslateTS(szwName);
-#else
- lvi.pszText = TranslateTS(szName);
-#endif
+ lvi.pszText = TranslateTS(name);
lvi.iItem = ListView_InsertItem(hwndProtocols, &lvi);
ListView_SetItemState(hwndProtocols, lvi.iItem, INDEXTOSTATEIMAGEMASK(show?2:1), LVIS_STATEIMAGEMASK);
+
+ mir_free(name);
}
ListView_SetColumnWidth(hwndProtocols, 0, LVSCW_AUTOSIZE);