diff options
author | Alexander Lantsev <aunsane@gmail.com> | 2015-04-03 20:53:10 +0000 |
---|---|---|
committer | Alexander Lantsev <aunsane@gmail.com> | 2015-04-03 20:53:10 +0000 |
commit | 77633ec5799b374a1899d05ae69a2e5f978f2a7c (patch) | |
tree | 495918b4f9fe4afabd3327bd31ded2b51c99cc1d /protocols/Steam/src/steam_dialogs.cpp | |
parent | 62d9ae35f2621f77a8f5c2bd34bef66553ac6036 (diff) |
Steam: moved to core ui
git-svn-id: http://svn.miranda-ng.org/main/trunk@12594 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/Steam/src/steam_dialogs.cpp')
-rw-r--r-- | protocols/Steam/src/steam_dialogs.cpp | 652 |
1 files changed, 199 insertions, 453 deletions
diff --git a/protocols/Steam/src/steam_dialogs.cpp b/protocols/Steam/src/steam_dialogs.cpp index 023045da6e..238230fe1e 100644 --- a/protocols/Steam/src/steam_dialogs.cpp +++ b/protocols/Steam/src/steam_dialogs.cpp @@ -1,488 +1,234 @@ #include "common.h"
-INT_PTR CALLBACK CSteamProto::GuardProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
+CSteamPasswordEditor::CSteamPasswordEditor(CSteamProto *proto) :
+ CSuper(proto, IDD_PASSWORD_EDITOR, NULL, false), m_ok(this, IDOK),
+ m_password(this, IDC_PASSWORD), m_savePermanently(this, IDC_SAVEPERMANENTLY)
{
- GuardParam *guard = (GuardParam*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
+ m_ok.OnClick = Callback(this, &CSteamPasswordEditor::OnOk);
+}
- switch (message)
- {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwnd);
- {
- guard = (GuardParam*)lParam;
- SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam);
- // load steam icon
- char iconName[100];
- mir_snprintf(iconName, SIZEOF(iconName), "%s_%s", MODULE, "main");
- SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)Skin_GetIcon(iconName, 16));
- SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)Skin_GetIcon(iconName, 32));
- }
- Utils_RestoreWindowPosition(hwnd, NULL, "STEAM", "GuardWindow");
- return TRUE;
+void CSteamPasswordEditor::OnInitDialog()
+{
+ char iconName[100];
+ mir_snprintf(iconName, SIZEOF(iconName), "%s_%s", MODULE, "main");
+ SendMessage(m_hwnd, WM_SETICON, ICON_BIG, (LPARAM)Skin_GetIcon(iconName, 16));
+ SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, (LPARAM)Skin_GetIcon(iconName, 32));
- case WM_CLOSE:
- Skin_ReleaseIcon((HICON)SendMessage(hwnd, WM_SETICON, ICON_BIG, 0));
- Skin_ReleaseIcon((HICON)SendMessage(hwnd, WM_SETICON, ICON_SMALL, 0));
- Utils_SaveWindowPosition(hwnd, NULL, "STEAM", "GuardWindow");
- EndDialog(hwnd, 0);
- break;
+ SendMessage(m_password.GetHwnd(), EM_LIMITTEXT, 64, 0);
- case WM_COMMAND:
- {
- switch (LOWORD(wParam))
- {
- case IDC_GETDOMAIN:
- CallService(MS_UTILS_OPENURL, 0, (LPARAM)guard->domain);
- SetFocus(GetDlgItem(hwnd, IDC_TEXT));
- break;
-
- case IDOK:
- GetDlgItemTextA(hwnd, IDC_TEXT, guard->code, sizeof(guard->code));
- EndDialog(hwnd, IDOK);
- break;
-
- case IDCANCEL:
- EndDialog(hwnd, IDCANCEL);
- break;
- }
- }
- break;
- }
+ Utils_RestoreWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "PasswordWindow");
+}
+
+void CSteamPasswordEditor::OnOk(CCtrlButton*)
+{
+ if (m_savePermanently.Enabled())
+ m_proto->setTString("Password", m_password.GetText());
+ if (m_proto->password != NULL)
+ mir_free(m_proto->password);
+ m_proto->password = m_password.GetText();
- return FALSE;
+ EndDialog(m_hwnd, 1);
}
-INT_PTR CALLBACK CSteamProto::CaptchaProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
+void CSteamPasswordEditor::OnClose()
{
- CaptchaParam *captcha = (CaptchaParam*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
+ Utils_SaveWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "PasswordWindow");
+}
- switch (message)
- {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwnd);
- {
- captcha = (CaptchaParam*)lParam;
- SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam);
- }
- return TRUE;
-
- case WM_CLOSE:
- EndDialog(hwnd, 0);
- break;
-
- case WM_PAINT:
- {
- FI_INTERFACE *fei = 0;
-
- INT_PTR result = CALLSERVICE_NOTFOUND;
- if (ServiceExists(MS_IMG_GETINTERFACE))
- result = CallService(MS_IMG_GETINTERFACE, FI_IF_VERSION, (LPARAM)&fei);
-
- if (fei == NULL || result != S_OK) {
- MessageBox(0, TranslateT("Fatal error, image services not found. Avatar services will be disabled."), TranslateT("Avatar Service"), MB_OK);
- return 0;
- }
-
- FIMEMORY *stream = fei->FI_OpenMemory(captcha->data, captcha->size);
- FREE_IMAGE_FORMAT fif = fei->FI_GetFileTypeFromMemory(stream, 0);
- FIBITMAP *bitmap = fei->FI_LoadFromMemory(fif, stream, 0);
- fei->FI_CloseMemory(stream);
-
- PAINTSTRUCT ps;
- HDC hDC = BeginPaint(hwnd, &ps);
-
- //SetStretchBltMode(hDC, COLORONCOLOR);
- StretchDIBits(
- hDC,
- 11, 11,
- fei->FI_GetWidth(bitmap) - 13,
- fei->FI_GetHeight(bitmap),
- 0, 0,
- fei->FI_GetWidth(bitmap),
- fei->FI_GetHeight(bitmap),
- fei->FI_GetBits(bitmap),
- fei->FI_GetInfo(bitmap),
- DIB_RGB_COLORS, SRCCOPY);
-
- fei->FI_Unload(bitmap);
- //fei->FI_DeInitialise();
-
- EndPaint(hwnd, &ps);
- }
- return 0;
-
- case WM_COMMAND:
- {
- switch(LOWORD(wParam))
- {
- case IDOK:
- GetDlgItemTextA(hwnd, IDC_TEXT, captcha->text, sizeof(captcha->text));
- EndDialog(hwnd, IDOK);
- break;
-
- case IDCANCEL:
- EndDialog(hwnd, IDCANCEL);
- break;
- }
- }
- break;
- }
+/////////////////////////////////////////////////////////////////////////////////
- return FALSE;
+CSteamGuardDialog::CSteamGuardDialog(CSteamProto *proto, char *domain) :
+ CSuper(proto, IDD_GUARD, NULL, false), m_ok(this, IDOK),
+ m_text(this, IDC_TEXT), m_link(this, IDC_GETDOMAIN, domain)
+{
+ mir_strcpy(m_domain, domain);
+ m_ok.OnClick = Callback(this, &CSteamGuardDialog::OnOk);
}
-INT_PTR CALLBACK CSteamProto::MainOptionsProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
+void CSteamGuardDialog::OnInitDialog()
{
- CSteamProto *proto = (CSteamProto*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
+ char iconName[100];
+ mir_snprintf(iconName, SIZEOF(iconName), "%s_%s", MODULE, "main");
+ SendMessage(m_hwnd, WM_SETICON, ICON_BIG, (LPARAM)Skin_GetIcon(iconName, 16));
+ SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, (LPARAM)Skin_GetIcon(iconName, 32));
- switch (message)
- {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwnd);
- {
- proto = (CSteamProto*)lParam;
- SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam);
-
- ptrW username(proto->getWStringA("Username"));
- SetDlgItemText(hwnd, IDC_USERNAME, username);
-
- ptrA password(proto->getStringA("Password"));
- SetDlgItemTextA(hwnd, IDC_PASSWORD, password);
-
- ptrW groupName(proto->getWStringA("DefaultGroup"));
- SetDlgItemText(hwnd, IDC_GROUP, groupName);
- SendDlgItemMessage(hwnd, IDC_GROUP, EM_LIMITTEXT, 64, 0);
-
- BOOL biggerAvatars = proto->getBool("UseBigAvatars", false);
- CheckDlgButton(hwnd, IDC_BIGGER_AVATARS, biggerAvatars ? BST_CHECKED : BST_UNCHECKED);
-
- if (proto->IsOnline())
- {
- EnableWindow(GetDlgItem(hwnd, IDC_USERNAME), FALSE);
- EnableWindow(GetDlgItem(hwnd, IDC_PASSWORD), FALSE);
- }
- }
- return TRUE;
-
- case WM_COMMAND:
- {
- switch(LOWORD(wParam))
- {
- case IDC_USERNAME:
- if ((HWND)lParam == GetFocus())
- {
- EnableWindow(GetDlgItem(hwnd, IDC_USERNAME), !proto->IsOnline());
- if (HIWORD(wParam) != EN_CHANGE) return 0;
- proto->delSetting("SteamID");
- proto->delSetting("Cookies");
- proto->delSetting("TokenSecret");
- wchar_t username[128];
- GetDlgItemText(hwnd, IDC_USERNAME, username, SIZEOF(username));
- SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0);
- }
- break;
-
- case IDC_PASSWORD:
- if ((HWND)lParam == GetFocus())
- {
- EnableWindow(GetDlgItem(hwnd, IDC_PASSWORD), !proto->IsOnline());
- if (HIWORD(wParam) != EN_CHANGE) return 0;
- proto->delSetting("Cookie");
- proto->delSetting("TokenSecret");
- char password[128];
- GetDlgItemTextA(hwnd, IDC_PASSWORD, password, SIZEOF(password));
- SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0);
- }
- break;
-
- case IDC_GROUP:
- {
- if ((HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()))
- return 0;
- SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0);
- }
- break;
-
- default:
- SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0);
- break;
- }
- }
- break;
-
- case WM_NOTIFY:
- if (reinterpret_cast<NMHDR*>(lParam)->code == PSN_APPLY)
- {
- if (!proto->IsOnline())
- {
- wchar_t username[128];
- GetDlgItemText(hwnd, IDC_USERNAME, username, SIZEOF(username));
- proto->setWString("Username", username);
-
- char password[128];
- GetDlgItemTextA(hwnd, IDC_PASSWORD, password, SIZEOF(password));
- proto->setString("Password", password);
- }
-
- wchar_t groupName[128];
- GetDlgItemText(hwnd, IDC_GROUP, groupName, SIZEOF(groupName));
- if (groupName[0] != '\0')
- {
- proto->setWString(NULL, "DefaultGroup", groupName);
- Clist_CreateGroup(0, groupName);
- }
- else
- proto->delSetting(NULL, "DefaultGroup");
-
- BOOL biggerAvatars = IsDlgButtonChecked(hwnd, IDC_BIGGER_AVATARS);
- proto->setByte("UseBigAvatars", biggerAvatars);
-
- return TRUE;
- }
- break;
- }
+ SendMessage(m_text.GetHwnd(), EM_LIMITTEXT, 5, 0);
+
+ Utils_RestoreWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "GuardWindow");
+}
+
+void CSteamGuardDialog::OnOk(CCtrlButton*)
+{
+ EndDialog(m_hwnd, 1);
+}
+
+void CSteamGuardDialog::OnClose()
+{
+ Utils_SaveWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "GuardWindow");
+}
+
+char * CSteamGuardDialog::GetGuardCode()
+{
+ return m_text.GetTextA();
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+
+CSteamCaptchaDialog::CSteamCaptchaDialog(CSteamProto *proto, BYTE *captchaImage, int captchaImageSize) :
+ CSuper(proto, IDD_GUARD, NULL, false),
+ m_ok(this, IDOK), m_text(this, IDC_TEXT)
+{
+ m_captchaImageSize = captchaImageSize;
+ m_captchaImage = (BYTE*)mir_alloc(captchaImageSize);
+ memcpy(m_captchaImage, captchaImage, captchaImageSize);
+ m_ok.OnClick = Callback(this, &CSteamCaptchaDialog::OnOk);
+}
+
+CSteamCaptchaDialog::~CSteamCaptchaDialog()
+{
+ mir_free(m_captchaImage);
+}
- return FALSE;
+void CSteamCaptchaDialog::OnInitDialog()
+{
+ char iconName[100];
+ mir_snprintf(iconName, SIZEOF(iconName), "%s_%s", MODULE, "main");
+ SendMessage(m_hwnd, WM_SETICON, ICON_BIG, (LPARAM)Skin_GetIcon(iconName, 16));
+ SendMessage(m_hwnd, WM_SETICON, ICON_SMALL, (LPARAM)Skin_GetIcon(iconName, 32));
+
+ SendMessage(m_text.GetHwnd(), EM_LIMITTEXT, 5, 0);
+
+ Utils_RestoreWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "CaptchaWindow");
}
-static WNDPROC oldWndProc = NULL;
+void CSteamCaptchaDialog::OnOk(CCtrlButton*)
+{
+ EndDialog(m_hwnd, 1);
+}
-LRESULT CALLBACK CSteamProto::BlockListOptionsSubProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+void CSteamCaptchaDialog::OnClose()
{
- if (msg == WM_LBUTTONDOWN)
+ Utils_SaveWindowPosition(m_hwnd, NULL, m_proto->m_szModuleName, "CaptchaWindow");
+}
+
+INT_PTR CSteamCaptchaDialog::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ if (msg == WM_PAINT)
{
- LVHITTESTINFO hi;
- hi.pt.x = LOWORD(lParam); hi.pt.y = HIWORD(lParam);
- ListView_SubItemHitTest(hwnd, &hi);
- if (hi.iSubItem == 1)
- {
- LVITEM lvi = { 0 };
- lvi.mask = LVIF_IMAGE | LVIF_PARAM;
- lvi.stateMask = -1;
- lvi.iItem = hi.iItem;
- if (ListView_GetItem(hwnd, &lvi))
- {
- /*ContactParam *param = (ContactParam *)lvi.lParam;
-
- if (param->contact->SetBlocked(false))
- {
- SEString data;
- param->contact->GetIdentity(data);
- ptrW sid(mir_utf8decodeW(data));
-
- MCONTACT hContact = param->ppro->GetContactBySid(sid);
- if (db_get_b(hContact, param->ppro->m_szModuleName, "IsSkypeOut", 0) > 0)
- db_set_w(hContact, param->ppro->m_szModuleName, "Status", ID_STATUS_ONTHEPHONE);
-
- ListView_DeleteItem(hwnd, lvi.iItem);
-
- int nItem = ::SendDlgItemMessage(GetParent(hwnd), IDC_CONTACTS, CB_ADDSTRING, 0, (LPARAM)sid);
- SendDlgItemMessage(GetParent(hwnd), IDC_CONTACTS, CB_SETITEMDATA, nItem, hContact);
- }*/
- }
+ FI_INTERFACE *fei = 0;
+
+ INT_PTR result = CALLSERVICE_NOTFOUND;
+ if (ServiceExists(MS_IMG_GETINTERFACE))
+ result = CallService(MS_IMG_GETINTERFACE, FI_IF_VERSION, (LPARAM)&fei);
+
+ if (fei == NULL || result != S_OK) {
+ MessageBox(0, TranslateT("Fatal error, image services not found. Avatar services will be disabled."), TranslateT("Avatar Service"), MB_OK);
+ return 0;
}
+
+ FIMEMORY *stream = fei->FI_OpenMemory(m_captchaImage, m_captchaImageSize);
+ FREE_IMAGE_FORMAT fif = fei->FI_GetFileTypeFromMemory(stream, 0);
+ FIBITMAP *bitmap = fei->FI_LoadFromMemory(fif, stream, 0);
+ fei->FI_CloseMemory(stream);
+
+ PAINTSTRUCT ps;
+ HDC hDC = BeginPaint(m_hwnd, &ps);
+
+ //SetStretchBltMode(hDC, COLORONCOLOR);
+ StretchDIBits(
+ hDC,
+ 11, 11,
+ fei->FI_GetWidth(bitmap) - 13,
+ fei->FI_GetHeight(bitmap),
+ 0, 0,
+ fei->FI_GetWidth(bitmap),
+ fei->FI_GetHeight(bitmap),
+ fei->FI_GetBits(bitmap),
+ fei->FI_GetInfo(bitmap),
+ DIB_RGB_COLORS, SRCCOPY);
+
+ fei->FI_Unload(bitmap);
+ //fei->FI_DeInitialise();
+
+ EndPaint(m_hwnd, &ps);
+
+ return FALSE;
}
+ CSuper::DlgProc(msg, wParam, lParam);
+}
- return CallWindowProc(oldWndProc, hwnd, msg, wParam, lParam);
+char * CSteamCaptchaDialog::GetCaptchaText()
+{
+ return m_text.GetTextA();
}
-INT_PTR CALLBACK CSteamProto::BlockListOptionsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+/////////////////////////////////////////////////////////////////////////////////
+
+CSteamOptionsMain::CSteamOptionsMain(CSteamProto *proto, int idDialog, HWND hwndParent)
+ : CSuper(proto, idDialog, hwndParent, false),
+ m_username(this, IDC_USERNAME), m_password(this, IDC_PASSWORD),
+ m_group(this, IDC_GROUP), m_biggerAvatars(this, IDC_BIGGER_AVATARS)
{
- CSteamProto *ppro = (CSteamProto*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
+ CreateLink(m_username, "Username", _T(""));
+ CreateLink(m_password, "Password", _T(""));
+ CreateLink(m_group, "DefaultGroup", _T("Steam"));
+ CreateLink(m_biggerAvatars, "UseBigAvatars", FALSE);
+}
- switch (msg)
- {
- case WM_INITDIALOG:
- if (lParam)
- {
- ppro = (CSteamProto*)lParam;
- SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam);
-
- TranslateDialogDefault(hwndDlg);
-
- HWND hwndList = ::GetDlgItem(hwndDlg, IDC_LIST);
- { // IDC_BM_LIST setup
- oldWndProc = (WNDPROC)SetWindowLongPtr(hwndList, GWLP_WNDPROC, (LONG_PTR)BlockListOptionsSubProc);
-
- HIMAGELIST hIml = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR32, 4, 0);
- //ImageList_AddIconFromIconLib(hIml, "Skype_contact");
- //ImageList_AddIconFromIconLib(hIml, "Skype_delete");
- ListView_SetImageList(hwndList, hIml, LVSIL_SMALL);
-
- LVCOLUMN lvc = { 0 };
- lvc.mask = LVCF_WIDTH | LVCF_TEXT;
- //lvc.fmt = LVCFMT_JUSTIFYMASK;
- lvc.pszText = TranslateT("Name");
- lvc.cx = 220; // width of column in pixels
- ListView_InsertColumn(hwndList, 0, &lvc);
- //lvc.fmt = LVCFMT_RIGHT;
- lvc.pszText = L"";
- lvc.cx = 32 - GetSystemMetrics(SM_CXVSCROLL); // width of column in pixels
- ListView_InsertColumn(hwndList, 1, &lvc);
-
- SendMessage(hwndList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_SUBITEMIMAGES | LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP);
-
- if (!ppro->IsOnline())
- {
- EnableWindow(hwndList, FALSE);
- EnableWindow(::GetDlgItem(hwndDlg, IDC_CONTACTS), FALSE);
- }
- }
-
- if (ppro->IsOnline())
- {
- /*SEString data;
- ContactGroupRef blockedList;
- ppro->GetHardwiredContactGroup(ContactGroup::CONTACTS_BLOCKED_BY_ME, blockedList);
-
- CContact::Refs contacts;
- blockedList->GetContacts(contacts);
- for (size_t i = 0; i < contacts.size(); i++)
- {
- auto contact = contacts[i];
-
- ptrW sid(::mir_utf8decodeW(contact->GetSid()));
-
- LVITEM lvi = { 0 };
- lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
- lvi.iItem = (int)i;
- lvi.iImage = 0;
- lvi.lParam = (LPARAM)new ContactParam(contact, ppro);
- lvi.pszText = sid;
- int iRow = ListView_InsertItem(hwndList, &lvi);
-
- if (iRow != -1)
- {
- lvi.iItem = iRow;
- lvi.mask = LVIF_IMAGE;
- lvi.iSubItem = 1;
- lvi.iImage = 1;
- ListView_SetItem(hwndList, &lvi);
- }
- }*/
-
- /*int nItem = 0;
- MCONTACT hContact = NULL;
-
- EnterCriticalSection(&ppro->contact_search_lock);
-
- for (hContact = ::db_find_first(ppro->m_szModuleName); hContact && !ppro->isChatRoom(hContact); hContact = ::db_find_next(hContact, ppro->m_szModuleName))
- {
- ptrW sid(::db_get_wsa(hContact, ppro->m_szModuleName, SKYPE_SETTINGS_SID));
-
- ContactRef contact;
- ppro->GetContact((char *)_T2A(sid), contact);
- if (!contacts.contains(contact))
- {
- nItem = ::SendDlgItemMessage(hwndDlg, IDC_CONTACTS, CB_ADDSTRING, 0, (LPARAM)sid);
- ::SendDlgItemMessage(hwndDlg, IDC_CONTACTS, CB_SETITEMDATA, nItem, hContact);
- }
- }
-
- LeaveCriticalSection(&ppro->contact_search_lock);*/
- }
+void CSteamOptionsMain::OnInitDialog()
+{
+ CSuper::OnInitDialog();
- }
- break;
+ SendMessage(m_username.GetHwnd(), EM_LIMITTEXT, 64, 0);
+ SendMessage(m_password.GetHwnd(), EM_LIMITTEXT, 64, 0);
+ SendMessage(m_group.GetHwnd(), EM_LIMITTEXT, 64, 0);
+}
+
+void CSteamOptionsMain::OnApply()
+{
+ TCHAR *group = m_group.GetText();
+ if (mir_tstrlen(group) > 0 && Clist_GroupExists(group))
+ Clist_CreateGroup(0, group);
- case WM_COMMAND:
+ if (m_proto->IsOnline())
{
- switch (LOWORD(wParam))
- {
- case IDC_CONTACTS:
- EnableWindow(GetDlgItem(hwndDlg, IDC_BLOCK), TRUE);
- break;
-
- case IDC_BLOCK:
- {
- int i = ::SendDlgItemMessage(hwndDlg, IDC_CONTACTS, CB_GETCURSEL, 0, 0);
-
- MCONTACT hContact = (MCONTACT)::SendDlgItemMessage(hwndDlg, IDC_CONTACTS, CB_GETITEMDATA, i, 0);
- if (!hContact)
- break;
-
- ptrA steamId(ppro->getStringA(hContact, "SteamID"));
-
- /*SEString data;
- ContactRef contact;
- if (!ppro->GetContact((char *)_T2A(sid), contact) || !contact)
- break;
-
- BlockParam param(hContact, ppro);
- if (::DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_BLOCK), NULL, CSkypeProto::SkypeBlockProc, (LPARAM)¶m) != IDOK)
- break;
-
- contact->SetBlocked(true, param.abuse);
- if (::db_get_b(hContact, ppro->m_szModuleName, "IsSkypeOut", 0) > 0)
- ::db_set_w(hContact, ppro->m_szModuleName, "Status", ID_STATUS_OFFLINE);
-
- if (param.remove)
- {
- contact->SetBuddyStatus(false);
- ppro->contactList.remove_val(contact);
- ::CallService(MS_DB_CONTACT_DELETE, wParam, 0);
- }
-
- if (contact->SetBlocked(true))
- {
- LVITEM lvi = { 0 };
- lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
- lvi.iItem = (int)i;
- lvi.iImage = 0;
- lvi.lParam = (LPARAM)new ContactParam(contact, ppro);
- lvi.pszText = sid;
- int iRow = ListView_InsertItem(::GetDlgItem(hwndDlg, IDC_LIST), &lvi);
-
- if (iRow != -1)
- {
- lvi.iItem = iRow;
- lvi.mask = LVIF_IMAGE;
- lvi.iSubItem = 1;
- lvi.iImage = 1;
- ListView_SetItem(::GetDlgItem(hwndDlg, IDC_LIST), &lvi);
- }
- ::SendDlgItemMessage(hwndDlg, IDC_CONTACTS, CB_DELETESTRING, i, 0);
- }*/
- }
- break;
- }
+ // may be we should show message box with warning?
+ m_proto->SetStatus(ID_STATUS_OFFLINE);
}
- break;
-
- case WM_NOTIFY:
- if (reinterpret_cast<NMHDR*>(lParam)->code == PSN_APPLY && !ppro->IsOnline())
- {
- return TRUE;
- }
- break;
-
- switch (LOWORD(wParam))
- {
- case IDC_LIST:
- if (((LPNMHDR)lParam)->code == NM_DBLCLK)
- {
- HWND hwndList = ::GetDlgItem(hwndDlg, IDC_BM_LIST);
- int iItem = ListView_GetNextItem(hwndList, -1, LVNI_ALL | LVNI_SELECTED);
- if (iItem < 0) break;
- LVITEM lvi = { 0 };
- lvi.mask = LVIF_PARAM | LVIF_GROUPID;
- lvi.stateMask = -1;
- lvi.iItem = iItem;
- if (ListView_GetItem(hwndList, &lvi))
- {
- /*SEString data;
- if (lvi.iGroupId == 1)
- {
- ContactParam *param = (ContactParam *)lvi.lParam;
-
- param->contact->GetIdentity(data);
- ptrW sid(::mir_utf8decodeW(data));
- ::CallService(MS_MSG_SENDMESSAGE, (WPARAM)ppro->GetContactBySid(sid), 0);
- }*/
- }
- }
- }
- break;
+ if (m_username.IsChanged())
+ {
+ m_proto->delSetting("SteamID");
+ m_proto->delSetting("Cookies");
+ m_proto->delSetting("TokenSecret");
+ }
+ if (m_password.IsChanged())
+ {
+ m_proto->delSetting("Cookie");
+ m_proto->delSetting("TokenSecret");
}
- return FALSE;
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+
+CSteamOptionsBlockList::CSteamOptionsBlockList(CSteamProto *proto)
+ : CSuper(proto, IDD_OPT_BLOCK_LIST, NULL, false), m_list(this, IDC_LIST),
+ m_contacts(this, IDC_CONTACTS), m_add(this, IDC_BLOCK)
+{
+ m_add.OnClick = Callback(this, &CSteamOptionsBlockList::OnBlock);
+}
+
+void CSteamOptionsBlockList::OnInitDialog()
+{
+ m_list.SetExtendedListViewStyle(LVS_EX_SUBITEMIMAGES | LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP);
+
+ HIMAGELIST hIml = m_list.CreateImageList(LVSIL_SMALL);
+ //ImageList_AddIcon_Icolib(hIml, m_proto->LoadIconEx("group"));
+ //ImageList_AddIcon_Icolib(hIml, LoadSkinnedIcon(SKINICON_EVENT_URL));
+
+ m_list.AddColumn(0, TranslateT("Name"), 220);
+ m_list.AddColumn(1, _T(""), 32 - GetSystemMetrics(SM_CXVSCROLL));
+}
+
+void CSteamOptionsBlockList::OnBlock(CCtrlButton*)
+{
}
\ No newline at end of file |