summaryrefslogtreecommitdiff
path: root/protocols/Tox/src
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Tox/src')
-rw-r--r--protocols/Tox/src/resource.h8
-rw-r--r--protocols/Tox/src/tox_account.cpp3
-rw-r--r--protocols/Tox/src/tox_contacts.cpp92
-rw-r--r--protocols/Tox/src/tox_proto.h4
4 files changed, 105 insertions, 2 deletions
diff --git a/protocols/Tox/src/resource.h b/protocols/Tox/src/resource.h
index 3d68c6c90a..16a0f30593 100644
--- a/protocols/Tox/src/resource.h
+++ b/protocols/Tox/src/resource.h
@@ -2,6 +2,9 @@
// Microsoft Visual C++ generated include file.
// Used by e:\Projects\C++\MirandaNG\protocols\Tox\res\resource.rc
//
+#define IDD_INFO_JABBER 103
+#define IDD_ACCOUNT_INFO 103
+#define IDD_USER_INFO 103
#define IDI_TOX 1000
#define IDD_PROFILE_MANAGER 1001
#define IDD_PROFILE_IMPORT 1001
@@ -18,6 +21,9 @@
#define IDC_DISABLE_UDP 1013
#define IDC_DISABLE_IPV6 1014
#define IDD_SEARCH 1015
+#define IDC_EDIT1 1016
+#define IDC_DNS_ID 1016
+#define IDC_TV_INFO 1276
// Next default values for new objects
//
@@ -25,7 +31,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1016
+#define _APS_NEXT_CONTROL_VALUE 1017
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
diff --git a/protocols/Tox/src/tox_account.cpp b/protocols/Tox/src/tox_account.cpp
index 5cd08f59b7..6a40a14526 100644
--- a/protocols/Tox/src/tox_account.cpp
+++ b/protocols/Tox/src/tox_account.cpp
@@ -9,9 +9,10 @@ bool CToxProto::IsOnline()
int CToxProto::OnAccountLoaded(WPARAM, LPARAM)
{
HookProtoEvent(ME_OPT_INITIALISE, &CToxProto::OnOptionsInit);
+ HookProtoEvent(ME_USERINFO_INITIALISE, &CToxProto::OnUserInfoInit);
HookProtoEvent(ME_PROTO_ACCLISTCHANGED, &CToxProto::OnAccountListChanged);
HookProtoEvent(ME_DB_CONTACT_SETTINGCHANGED, &CToxProto::OnSettingsChanged);
- HookProtoEvent(ME_MSG_PRECREATEEVENT, &CToxProto::OnPreCreateMessage);
+ HookProtoEvent(ME_MSG_PRECREATEEVENT, &CToxProto::OnPreCreateMessage);
InitNetlib();
diff --git a/protocols/Tox/src/tox_contacts.cpp b/protocols/Tox/src/tox_contacts.cpp
index c474b0a89a..02549f4abb 100644
--- a/protocols/Tox/src/tox_contacts.cpp
+++ b/protocols/Tox/src/tox_contacts.cpp
@@ -268,4 +268,96 @@ void CToxProto::OnConnectionStatusChanged(Tox *tox, const int number, const uint
proto->delSetting(hContact, "Auth");
}
}
+}
+
+int CToxProto::OnUserInfoInit(WPARAM wParam, LPARAM lParam)
+{
+ if (!CallService(MS_PROTO_ISPROTOCOLLOADED, 0, (LPARAM)m_szModuleName))
+ {
+ return 0;
+ }
+
+ MCONTACT hContact = lParam;
+ char *szProto = GetContactProto(hContact);
+ if (szProto != NULL && !strcmp(szProto, m_szModuleName))
+ {
+ OPTIONSDIALOGPAGE odp = { sizeof(odp) };
+ odp.flags = ODPF_TCHAR | ODPF_DONTTRANSLATE;
+ odp.hInstance = g_hInstance;
+ odp.dwInitParam = (LPARAM)this;
+ odp.ptszTitle = m_tszUserName;
+
+ odp.pfnDlgProc = UserInfoProc;
+ odp.position = -2000000000;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_USER_INFO);
+ UserInfo_AddPage(wParam, &odp);
+ }
+
+ return 0;
+}
+
+INT_PTR CToxProto::UserInfoProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ CToxProto *proto = (CToxProto*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
+
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ TranslateDialogDefault(hwnd);
+ {
+ proto = (CToxProto*)lParam;
+ SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam);
+ }
+ break;
+
+ case WM_NOTIFY:
+ switch (((LPNMHDR)lParam)->idFrom)
+ {
+ case 0:
+ switch (((LPNMHDR)lParam)->code)
+ {
+ case PSN_INFOCHANGED:
+ {
+ MCONTACT hContact = (MCONTACT)((LPPSHNOTIFY)lParam)->lParam;
+ char *szProto = (hContact == NULL) ? szProto = proto->m_szModuleName : (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, hContact, 0);
+ if (szProto == NULL)
+ {
+ break;
+ }
+
+ SetDlgItemText(hwnd, IDC_DNS_ID, ptrT(proto->getTStringA(hContact, TOX_SETTINGS_DNS)));
+ }
+ break;
+
+ case PSN_PARAMCHANGED:
+ SetWindowLongPtr(hwnd, GWLP_USERDATA, ((PSHNOTIFY*)lParam)->lParam);
+ break;
+
+ case PSN_APPLY:
+ MCONTACT hContact = (MCONTACT)((LPPSHNOTIFY)lParam)->lParam;
+ char *szProto = (hContact == NULL) ? szProto = proto->m_szModuleName : (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, hContact, 0);
+ if (szProto == NULL)
+ {
+ break;
+ }
+ TCHAR dnsId[MAX_PATH];
+ GetDlgItemText(hwnd, IDC_DNS_ID, dnsId, MAX_PATH);
+ proto->setTString(hContact, TOX_SETTINGS_DNS, dnsId);
+ break;
+ }
+ break;
+ }
+ break;
+
+ case WM_COMMAND:
+ if ((HWND)lParam == GetFocus() && HIWORD(wParam) == EN_CHANGE)
+ {
+ SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0);
+ }
+ break;
+
+ break;
+ }
+
+ return FALSE;
} \ No newline at end of file
diff --git a/protocols/Tox/src/tox_proto.h b/protocols/Tox/src/tox_proto.h
index 901344a933..608f439365 100644
--- a/protocols/Tox/src/tox_proto.h
+++ b/protocols/Tox/src/tox_proto.h
@@ -156,6 +156,10 @@ private:
INT_PTR __cdecl OnAccountManagerInit(WPARAM, LPARAM);
+ // userinfo
+ static INT_PTR CALLBACK UserInfoProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+ int __cdecl OnUserInfoInit(WPARAM wParam, LPARAM lParam);
+
// contacts
WORD GetContactStatus(MCONTACT hContact);
void SetContactStatus(MCONTACT hContact, WORD status);