From d7c18eb91b752af0a617feb08151ba6ec73b7332 Mon Sep 17 00:00:00 2001 From: sje Date: Sat, 30 Jun 2007 15:08:22 +0000 Subject: set nick dialog git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@222 4f64403b-2f21-0410-a795-97e2b3489a10 --- MySpace/nick_dialog.cpp | 137 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 MySpace/nick_dialog.cpp (limited to 'MySpace/nick_dialog.cpp') diff --git a/MySpace/nick_dialog.cpp b/MySpace/nick_dialog.cpp new file mode 100644 index 0000000..3dad545 --- /dev/null +++ b/MySpace/nick_dialog.cpp @@ -0,0 +1,137 @@ +#include "common.h" +#include "nick_dialog.h" +#include "resource.h" +#include "server_con.h" + +int check_rid = 0; +int set_rid = 0; + +HWND nick_dialog = 0; + + +void CheckAvailable(HWND hwndDlg, TCHAR *nick) { + ClientNetMessage msg; + msg.add_int("persist", 1); + msg.add_int("sesskey", sesskey); + msg.add_int("cmd", 1); + msg.add_int("dsn", 5); + msg.add_int("uid", my_uid); + msg.add_int("lid", 7); + msg.add_int("rid", check_rid = req_id++); + + char an[256]; +#ifdef _UNICODE + WideCharToMultiByte(CP_UTF8, 0, nick, -1, an, 256, 0, 0); +#else + strncpy(an, nick, 256); +#endif + char body[512]; + mir_snprintf(body, 512, "UserName=%s", an); + msg.add_string("body", body); + + SendMessage(msg); +} + +void SetNick(HWND hwndDlg, TCHAR *nick) { + ClientNetMessage msg; + msg.add_int("persist", 1); + msg.add_int("sesskey", sesskey); + msg.add_int("cmd", 2); + msg.add_int("dsn", 9); + msg.add_int("uid", my_uid); + msg.add_int("lid", 14); + msg.add_int("rid", set_rid = req_id++); + + char an[256]; +#ifdef _UNICODE + WideCharToMultiByte(CP_UTF8, 0, nick, -1, an, 256, 0, 0); +#else + strncpy(an, nick, 256); +#endif + char body[512]; + mir_snprintf(body, 512, "UserName=%s", an); + msg.add_string("body", body); + + SendMessage(msg); +} + +BOOL CALLBACK DlgProcNick(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { + switch ( msg ) { + case WM_INITDIALOG: + TranslateDialogDefault( hwndDlg ); + nick_dialog = hwndDlg; + return FALSE; + case WM_COMMAND: + if ( HIWORD( wParam ) == EN_CHANGE && LOWORD(wParam) == IDC_ED_NICK) { + TCHAR buff[256]; + GetDlgItemText(hwndDlg, IDC_ED_NICK, buff, 256); + EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_CHECK), _tcslen(buff) != 0); + EnableWindow(GetDlgItem(hwndDlg, IDOK), false); + } else { + switch(LOWORD(wParam)) { + case IDC_BTN_CHECK: + { + TCHAR buff[256]; + GetDlgItemText(hwndDlg, IDC_ED_NICK, buff, 256); + CheckAvailable(hwndDlg, buff); + SetDlgItemText(hwndDlg, IDC_ST_MSG, TranslateT("Checking availability. Please wait.")); + EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_CHECK), false); + } + break; + case IDOK: + { + TCHAR buff[256]; + GetDlgItemText(hwndDlg, IDC_ED_NICK, buff, 256); + SetNick(hwndDlg, buff); + SetDlgItemText(hwndDlg, IDC_ST_MSG, TranslateT("Setting your nick name. Please wait.")); + EnableWindow(GetDlgItem(hwndDlg, IDOK), false); + } + break; + case IDCANCEL: + nick_dialog = 0; + EndDialog(hwndDlg, IDCANCEL); + break; + } + } + break; + case WMU_NICKEXISTS: + if(lParam == check_rid) { + check_rid = 0; + if(wParam) { + SetDlgItemText(hwndDlg, IDC_ST_MSG, TranslateT("Sorry, that nick name is already taken.")); + } else { + SetDlgItemText(hwndDlg, IDC_ST_MSG, TranslateT("That nick name is available. Press OK to use it as your personal nick name.")); + EnableWindow(GetDlgItem(hwndDlg, IDOK), true); + } + } + break; + case WMU_CHANGEOK: + if(lParam == set_rid) { + set_rid = 0; + if(wParam) { + TCHAR buff[256]; + GetDlgItemText(hwndDlg, IDC_ED_NICK, buff, 256); + DBWriteContactSettingTString(0, MODULE, "Nick", buff); + + nick_dialog = 0; + EndDialog(hwndDlg, IDOK); + } else { + SetDlgItemText(hwndDlg, IDC_ST_MSG, TranslateT("Failed to set your nick name.")); + EnableWindow(GetDlgItem(hwndDlg, IDOK), false); + } + } + break; + } + + return 0; +} + +void CALLBACK sttMainMakeDialogCallback( ULONG dwParam ) { + HWND dlg = CreateDialog(hInst, MAKEINTRESOURCE(IDD_NICK), GetDesktopWindow(), DlgProcNick); + ShowWindow(dlg, SW_SHOW); + UpdateWindow(dlg); +} + +void ShowNickDialog() { + QueueUserAPC(sttMainMakeDialogCallback, mainThread, 0); +} \ No newline at end of file -- cgit v1.2.3