summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Lantsev <aunsane@gmail.com>2015-04-03 20:53:10 +0000
committerAlexander Lantsev <aunsane@gmail.com>2015-04-03 20:53:10 +0000
commit77633ec5799b374a1899d05ae69a2e5f978f2a7c (patch)
tree495918b4f9fe4afabd3327bd31ded2b51c99cc1d
parent62d9ae35f2621f77a8f5c2bd34bef66553ac6036 (diff)
Steam: moved to core ui
git-svn-id: http://svn.miranda-ng.org/main/trunk@12594 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--protocols/Steam/Steam_12.vcxproj1
-rw-r--r--protocols/Steam/Steam_12.vcxproj.filters7
-rw-r--r--protocols/Steam/res/Resource.rc23
-rw-r--r--protocols/Steam/src/Steam/authorization.h2
-rw-r--r--protocols/Steam/src/common.h4
-rw-r--r--protocols/Steam/src/resource.h2
-rw-r--r--protocols/Steam/src/steam_account.cpp34
-rw-r--r--protocols/Steam/src/steam_dialogs.cpp652
-rw-r--r--protocols/Steam/src/steam_dialogs.h137
-rw-r--r--protocols/Steam/src/steam_events.cpp18
-rw-r--r--protocols/Steam/src/steam_options.h29
-rw-r--r--protocols/Steam/src/steam_proto.h29
-rw-r--r--protocols/Steam/src/version.h2
13 files changed, 426 insertions, 514 deletions
diff --git a/protocols/Steam/Steam_12.vcxproj b/protocols/Steam/Steam_12.vcxproj
index 325b031a0f..02b74b1588 100644
--- a/protocols/Steam/Steam_12.vcxproj
+++ b/protocols/Steam/Steam_12.vcxproj
@@ -205,6 +205,7 @@
<ClInclude Include="src\Steam\rsa_key.h" />
<ClInclude Include="src\Steam\session.h" />
<ClInclude Include="src\Steam\steam.h" />
+ <ClInclude Include="src\steam_dialogs.h" />
<ClInclude Include="src\steam_proto.h" />
<ClInclude Include="src\version.h" />
<ClInclude Include="src\resource.h" />
diff --git a/protocols/Steam/Steam_12.vcxproj.filters b/protocols/Steam/Steam_12.vcxproj.filters
index d1cfed825f..8dd369638a 100644
--- a/protocols/Steam/Steam_12.vcxproj.filters
+++ b/protocols/Steam/Steam_12.vcxproj.filters
@@ -57,7 +57,7 @@
<ClCompile Include="src\steam_pooling.cpp">
<Filter>Source Files</Filter>
</ClCompile>
- <ClCompile Include="src\steam_xstatus.cpp">
+ <ClCompile Include="src\steam_xstatus.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
@@ -110,6 +110,9 @@
<ClInclude Include="src\Steam\captcha.h">
<Filter>Header Files\Steam</Filter>
</ClInclude>
+ <ClInclude Include="src\steam_dialogs.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="res\resource.rc">
@@ -123,7 +126,7 @@
<None Include="res\steam.ico">
<Filter>Resource Files\Icon</Filter>
</None>
- <None Include="res\gaming.ico">
+ <None Include="res\gaming.ico">
<Filter>Resource Files\Icon</Filter>
</None>
</ItemGroup>
diff --git a/protocols/Steam/res/Resource.rc b/protocols/Steam/res/Resource.rc
index 66d4075412..c01563d92d 100644
--- a/protocols/Steam/res/Resource.rc
+++ b/protocols/Steam/res/Resource.rc
@@ -7,7 +7,7 @@
//
// Generated from the TEXTINCLUDE 2 resource.
//
-#include "afxres.h"
+#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
@@ -17,7 +17,7 @@
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEUD)
LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT
-#pragma code_page(1250)
+#pragma code_page(1251)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
@@ -32,7 +32,7 @@ END
2 TEXTINCLUDE
BEGIN
- "#include ""afxres.h""\r\n"
+ "#include ""winres.h""\r\n"
"\0"
END
@@ -141,6 +141,19 @@ BEGIN
PUSHBUTTON "Block",IDC_BLOCK,230,206,68,13,WS_DISABLED
END
+IDD_PASSWORD_EDITOR DIALOGEX 0, 0, 209, 75
+STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_TOOLWINDOW | WS_EX_APPWINDOW
+CAPTION "Enter password"
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ EDITTEXT 102,7,24,197,12,ES_PASSWORD | ES_AUTOHSCROLL
+ CONTROL "Save password",IDC_SAVEPERMANENTLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,40,197,12
+ DEFPUSHBUTTON "OK",IDOK,101,56,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,154,56,50,14
+ LTEXT "Enter the password to continue.",IDC_STATIC,7,5,197,18
+END
+
/////////////////////////////////////////////////////////////////////////////
//
@@ -195,6 +208,10 @@ BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 223
END
+
+ IDD_PASSWORD_EDITOR, DIALOG
+ BEGIN
+ END
END
#endif // APSTUDIO_INVOKED
diff --git a/protocols/Steam/src/Steam/authorization.h b/protocols/Steam/src/Steam/authorization.h
index e72eef1a11..047b408b05 100644
--- a/protocols/Steam/src/Steam/authorization.h
+++ b/protocols/Steam/src/Steam/authorization.h
@@ -44,7 +44,7 @@ namespace SteamWebApi
char data[1024];
mir_snprintf(data, SIZEOF(data),
- "username=%s&password=%s&captchagid=%s&captcha_text=%s&oauth_client_id=3638BFB1&oauth_scope=read_profile write_profile read_client write_client&rsatimestamp=%s",
+ "username=%s&password=%s&emailauth=&captchagid=%s&captcha_text=%s&oauth_client_id=3638BFB1&oauth_scope=read_profile write_profile read_client write_client&rsatimestamp=%s",
ptrA(mir_urlEncode(username)),
ptrA(mir_urlEncode(password)),
captchaId,
diff --git a/protocols/Steam/src/common.h b/protocols/Steam/src/common.h
index 086879e365..d39881dbd2 100644
--- a/protocols/Steam/src/common.h
+++ b/protocols/Steam/src/common.h
@@ -3,6 +3,7 @@
#include <windows.h>
#include <commctrl.h>
+#include <malloc.h>
#include <time.h>
#include <newpluginapi.h>
@@ -28,7 +29,7 @@
#include <m_idle.h>
#include <m_xstatus.h>
#include <m_extraicons.h>
-#include <win2k.h>
+#include <m_gui.h>
#include <map>
#include <vector>
@@ -51,6 +52,7 @@ extern HANDLE hExtraXStatus;
#include "Steam\steam.h"
+#include "steam_dialogs.h"
#include "steam_proto.h"
#endif //_COMMON_H_ \ No newline at end of file
diff --git a/protocols/Steam/src/resource.h b/protocols/Steam/src/resource.h
index ec80b9a7ce..e2b1aa120d 100644
--- a/protocols/Steam/src/resource.h
+++ b/protocols/Steam/src/resource.h
@@ -9,6 +9,8 @@
#define IDD_IGNORE_LIST 21
#define IDI_STEAM 100
#define IDI_GAMING 101
+#define IDD_PASSWORD_EDITOR 107
+#define IDC_SAVEPERMANENTLY 108
#define IDD_CAPTCHA 118
#define IDD_GUARD 119
#define IDC_SN 1001
diff --git a/protocols/Steam/src/steam_account.cpp b/protocols/Steam/src/steam_account.cpp
index 01adca1cf6..2ed21e78dc 100644
--- a/protocols/Steam/src/steam_account.cpp
+++ b/protocols/Steam/src/steam_account.cpp
@@ -104,18 +104,18 @@ void CSteamProto::OnAuthorization(const NETLIBHTTPREQUEST *response, void *arg)
node = json_get(root, "emaildomain");
ptrA emailDomain(mir_utf8encodeW(ptrT(json_as_string(node))));
- GuardParam guard;
- mir_strncpy(guard.domain, emailDomain, SIZEOF(guard.domain));
-
- if (DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_GUARD), NULL, CSteamProto::GuardProc, (LPARAM)&guard) != IDOK)
+ CSteamGuardDialog guardDialog(this, emailDomain);
+ if (!guardDialog.DoModal())
+ {
return;
+ }
ptrA username(mir_utf8encodeW(getWStringA("Username")));
ptrA password(getStringA("EncryptedPassword"));
ptrA timestamp(getStringA("RsaTimestamp"));
PushRequest(
- new SteamWebApi::AuthorizationRequest(username, password, timestamp, guard.code),
+ new SteamWebApi::AuthorizationRequest(username, password, timestamp, ptrA(guardDialog.GetGuardCode())),
&CSteamProto::OnAuthorization);
return;
}
@@ -130,34 +130,22 @@ void CSteamProto::OnAuthorization(const NETLIBHTTPREQUEST *response, void *arg)
NETLIBHTTPREQUEST *response = request->Send(m_hNetlibUser);
delete request;
- CaptchaParam captcha = { 0 };
- captcha.size = response->dataLength;
- captcha.data = (BYTE*)mir_alloc(captcha.size);
- memcpy(captcha.data, response->pData, captcha.size);
-
- CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response);
-
- int res = DialogBoxParam(
- g_hInstance,
- MAKEINTRESOURCE(IDD_CAPTCHA),
- NULL,
- CSteamProto::CaptchaProc,
- (LPARAM)&captcha);
-
- mir_free(captcha.data);
-
- if (res != 1)
+ CSteamCaptchaDialog captchaDialog(this, (BYTE*)response->pData, response->dataLength);
+ if (!captchaDialog.DoModal())
{
+ CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response);
SetStatus(ID_STATUS_OFFLINE);
return;
}
+ CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM)response);
+
ptrA username(mir_utf8encodeW(getWStringA("Username")));
ptrA password(getStringA("EncryptedPassword"));
ptrA timestamp(getStringA("RsaTimestamp"));
PushRequest(
- new SteamWebApi::AuthorizationRequest(username, password, timestamp, captchaId, captcha.text),
+ new SteamWebApi::AuthorizationRequest(username, password, timestamp, captchaId, ptrA(captchaDialog.GetCaptchaText())),
&CSteamProto::OnAuthorization);
return;
}
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)&param) != 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
diff --git a/protocols/Steam/src/steam_dialogs.h b/protocols/Steam/src/steam_dialogs.h
new file mode 100644
index 0000000000..dd919fa365
--- /dev/null
+++ b/protocols/Steam/src/steam_dialogs.h
@@ -0,0 +1,137 @@
+#ifndef _STEAM_DIALOGS_H_
+#define _STEAM_DIALOGS_H_
+
+class CSteamDlgBase : public CProtoDlgBase<CSteamProto>
+{
+private:
+ typedef CProtoDlgBase<CSteamProto> CSuper;
+
+protected:
+ __inline CSteamDlgBase(CSteamProto *proto, int idDialog, HWND parent, bool show_label = true) :
+ CSuper(proto, idDialog, parent, show_label) { }
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+
+class CSteamPasswordEditor : public CSteamDlgBase
+{
+private:
+ typedef CSteamDlgBase CSuper;
+
+ CCtrlEdit m_password;
+ CCtrlCheck m_savePermanently;
+
+ CCtrlButton m_ok;
+
+protected:
+ void OnInitDialog();
+ void OnOk(CCtrlButton*);
+ void OnClose();
+
+public:
+ CSteamPasswordEditor(CSteamProto *proto);
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+
+class CSteamGuardDialog : public CSteamDlgBase
+{
+private:
+ typedef CSteamDlgBase CSuper;
+
+ char m_domain[32];
+
+ CCtrlEdit m_text;
+ CCtrlButton m_ok;
+ CCtrlHyperlink m_link;
+
+protected:
+ void OnInitDialog();
+ void OnOk(CCtrlButton*);
+ void OnClose();
+
+public:
+ CSteamGuardDialog(CSteamProto *proto, char *domain);
+
+ char *GetGuardCode();
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+
+class CSteamCaptchaDialog : public CSteamDlgBase
+{
+private:
+ typedef CSteamDlgBase CSuper;
+
+ BYTE *m_captchaImage;
+ int m_captchaImageSize;
+
+ CCtrlEdit m_text;
+ CCtrlButton m_ok;
+
+protected:
+ void OnInitDialog();
+ void OnOk(CCtrlButton*);
+ void OnClose();
+
+ INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam);
+
+public:
+ CSteamCaptchaDialog(CSteamProto *proto, BYTE *captchaImage, int captchaImageSize);
+ ~CSteamCaptchaDialog();
+
+ char *GetCaptchaText();
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+
+class CSteamOptionsMain : public CSteamDlgBase
+{
+private:
+ typedef CSteamDlgBase CSuper;
+
+ CCtrlEdit m_username;
+ CCtrlEdit m_password;
+ CCtrlEdit m_group;
+
+ CCtrlCheck m_biggerAvatars;
+
+protected:
+ CSteamOptionsMain(CSteamProto *proto, int idDialog, HWND hwndParent = NULL);
+
+ void OnInitDialog();
+ void OnApply();
+
+public:
+ static CDlgBase *CreateAccountManagerPage(void *param, HWND owner)
+ {
+ CSteamOptionsMain *page = new CSteamOptionsMain((CSteamProto*)param, IDD_ACCMGR, owner);
+ page->Show();
+ return page;
+ }
+
+ static CDlgBase *CreateOptionsPage(void *param) { return new CSteamOptionsMain((CSteamProto*)param, IDD_OPT_MAIN); }
+};
+
+////////////////////////////////////////////////////////////////////////////////
+
+class CSteamOptionsBlockList : public CSteamDlgBase
+{
+private:
+ typedef CSteamDlgBase CSuper;
+
+ CCtrlListView m_list;
+ CCtrlCombo m_contacts;
+ CCtrlButton m_add;
+
+protected:
+ CSteamOptionsBlockList(CSteamProto *proto);
+
+ void OnInitDialog();
+ void OnBlock(CCtrlButton*);
+
+public:
+ static CDlgBase *CreateOptionsPage(void *param) { return new CSteamOptionsBlockList((CSteamProto*)param); }
+};
+
+#endif //_STEAM_DIALOGS_H_ \ No newline at end of file
diff --git a/protocols/Steam/src/steam_events.cpp b/protocols/Steam/src/steam_events.cpp
index c03fc3bb91..bbf707886e 100644
--- a/protocols/Steam/src/steam_events.cpp
+++ b/protocols/Steam/src/steam_events.cpp
@@ -31,12 +31,7 @@ int CSteamProto::OnPreShutdown(WPARAM, LPARAM)
INT_PTR CSteamProto::OnAccountManagerInit(WPARAM wParam, LPARAM lParam)
{
- return (int)CreateDialogParam(
- g_hInstance,
- MAKEINTRESOURCE(IDD_ACCMGR),
- (HWND)lParam,
- CSteamProto::MainOptionsProc,
- (LPARAM)this);
+ return (INT_PTR)(CSteamOptionsMain::CreateAccountManagerPage(this, (HWND)lParam))->GetHwnd();
}
int CSteamProto::OnOptionsInit(void *obj, WPARAM wParam, LPARAM lParam)
@@ -48,18 +43,23 @@ int CSteamProto::OnOptionsInit(void *obj, WPARAM wParam, LPARAM lParam)
OPTIONSDIALOGPAGE odp = { sizeof(odp) };
odp.hInstance = g_hInstance;
odp.pszTitle = title;
- odp.dwInitParam = LPARAM(obj);
odp.flags = ODPF_BOLDGROUPS;
odp.pszGroup = LPGEN("Network");
odp.pszTab = LPGEN("Account");
odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_MAIN);
- odp.pfnDlgProc = MainOptionsProc;
+ odp.pfnDlgProc = CSteamOptionsMain::DynamicDlgProc;
+ odp.dwInitParam = (LPARAM)&instance->SteamMainOptionsParam;
+ instance->SteamMainOptionsParam.create = CSteamOptionsMain::CreateOptionsPage;
+ instance->SteamMainOptionsParam.param = instance;
Options_AddPage(wParam, &odp);
odp.pszTab = LPGEN("Blocked contacts");
odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_BLOCK_LIST);
- odp.pfnDlgProc = BlockListOptionsProc;
+ odp.pfnDlgProc = CSteamOptionsMain::DynamicDlgProc;
+ odp.dwInitParam = (LPARAM)&instance->SteamBlockListOptionsParam;
+ instance->SteamBlockListOptionsParam.create = CSteamOptionsBlockList::CreateOptionsPage;
+ instance->SteamBlockListOptionsParam.param = instance;
Options_AddPage(wParam, &odp);
mir_free(title);
diff --git a/protocols/Steam/src/steam_options.h b/protocols/Steam/src/steam_options.h
new file mode 100644
index 0000000000..86bd7a183e
--- /dev/null
+++ b/protocols/Steam/src/steam_options.h
@@ -0,0 +1,29 @@
+#ifndef _SKYPE_OPTIONS_H_
+#define _SKYPE_OPTIONS_H_
+
+class CSkypeOptionsMain : public CSkypeDlgBase
+{
+private:
+ typedef CSkypeDlgBase CSuper;
+
+ CCtrlEdit m_skypename;
+ CCtrlEdit m_password;
+ CCtrlEdit m_group;
+
+protected:
+ CSkypeOptionsMain(CSkypeProto *proto, int idDialog, HWND hwndParent = NULL);
+
+ void OnInitDialog();
+ void OnApply();
+
+public:
+ static CDlgBase *CreateAccountManagerPage(void *param, HWND owner)
+ {
+ CSkypeOptionsMain *page = new CSkypeOptionsMain((CSkypeProto*)param, IDD_ACCOUNT_MANAGER, owner);
+ page->Show();
+ }
+
+ static CDlgBase *CreateMainOptionsPage(void *param) { return new CSkypeOptionsMain((CSkypeProto*)param, IDD_OPTIONS_MAIN); }
+};
+
+#endif //_SKYPE_OPTIONS_H_ \ No newline at end of file
diff --git a/protocols/Steam/src/steam_proto.h b/protocols/Steam/src/steam_proto.h
index 34560349e8..0c06e708ca 100644
--- a/protocols/Steam/src/steam_proto.h
+++ b/protocols/Steam/src/steam_proto.h
@@ -11,20 +11,6 @@ struct PasswordParam
char timestamp[16];
};
-
-struct GuardParam
-{
- char code[10];
- char domain[32];
-};
-
-struct CaptchaParam
-{
- BYTE *data;
- size_t size;
- char text[10];
-};
-
struct SendAuthParam
{
MCONTACT hContact;
@@ -118,6 +104,9 @@ struct QueueItem
class CSteamProto : public PROTO<CSteamProto>
{
+ friend CSteamPasswordEditor;
+ friend CSteamOptionsMain;
+
public:
// PROTO_INTERFACE
CSteamProto(const char *protoName, const wchar_t *userName);
@@ -154,6 +143,7 @@ public:
static void UninitMenus();
protected:
+ TCHAR *password;
bool isTerminated;
time_t m_idleTS;
HANDLE m_evRequestsQueue, m_hQueueThread;
@@ -256,6 +246,10 @@ protected:
void OnInitStatusMenu();
+ // options
+ CSteamDlgBase::CreateParam SteamMainOptionsParam;
+ CSteamDlgBase::CreateParam SteamBlockListOptionsParam;
+
// avatars
TCHAR* GetAvatarFilePath(MCONTACT hContact);
bool GetDbAvatarInfo(PROTO_AVATAR_INFORMATIONT &pai);
@@ -290,13 +284,6 @@ protected:
static void CSteamProto::ShowNotification(const wchar_t *message, int flags = 0, MCONTACT hContact = NULL);
static void CSteamProto::ShowNotification(const wchar_t *caption, const wchar_t *message, int flags = 0, MCONTACT hContact = NULL);
- // dialog procs
- static INT_PTR CALLBACK GuardProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
- static INT_PTR CALLBACK CaptchaProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
- static INT_PTR CALLBACK MainOptionsProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
- static LRESULT CALLBACK BlockListOptionsSubProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
- static INT_PTR CALLBACK BlockListOptionsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
-
// helpers
inline int IdleSeconds() {
// Based on idle time we report Steam server will mark us as online/away/snooze
diff --git a/protocols/Steam/src/version.h b/protocols/Steam/src/version.h
index 007f994986..fb21edaeb0 100644
--- a/protocols/Steam/src/version.h
+++ b/protocols/Steam/src/version.h
@@ -1,7 +1,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 11
#define __RELEASE_NUM 3
-#define __BUILD_NUM 1
+#define __BUILD_NUM 2
#include <stdver.h>