static INT_PTR CALLBACK DlgProcSetNickname(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch ( msg ) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); SendMessage(GetDlgItem(hwndDlg, IDC_NICKNAME), EM_LIMITTEXT, MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE - 1, 0); return TRUE; case WMU_SETDATA: { int proto_num = (int)wParam; SetWindowLong(hwndDlg, GWLP_USERDATA, proto_num); if (proto_num == -1) { SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadSkinnedIcon(SKINICON_OTHER_MIRANDA)); // All protos have the same nick? if (protocols->GetSize() > 0) { TCHAR *nick = protocols->Get(0)->nickname; bool foundDefNick = true; for (int i=1 ; foundDefNick && i < protocols->GetSize() ; i++) { if (_tcsicmp(protocols->Get(i)->nickname, nick) != 0) { foundDefNick = false; break; } } if (foundDefNick) if ( _tcsicmp(protocols->default_nick, nick) != 0) lstrcpy(protocols->default_nick, nick); } SetDlgItemText(hwndDlg, IDC_NICKNAME, protocols->default_nick); SendDlgItemMessage(hwndDlg, IDC_NICKNAME, EM_LIMITTEXT, MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE, 0); } else { Protocol *proto = protocols->Get(proto_num); TCHAR tmp[128]; mir_sntprintf(tmp, SIZEOF(tmp), TranslateT("Set My Nickname for %s"), proto->description); SendMessage(hwndDlg, WM_SETTEXT, 0, (LPARAM)tmp); HICON hIcon = (HICON)CallProtoService(proto->name, PS_LOADICON, PLI_PROTOCOL, 0); if (hIcon != NULL) { SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon); DestroyIcon(hIcon); } SetDlgItemText(hwndDlg, IDC_NICKNAME, proto->nickname); SendDlgItemMessage(hwndDlg, IDC_NICKNAME, EM_LIMITTEXT, min(MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE, proto->GetNickMaxLength()), 0); } return TRUE; } case WM_COMMAND: switch(wParam) { case IDOK: { TCHAR tmp[MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE]; GetDlgItemText(hwndDlg, IDC_NICKNAME, tmp, SIZEOF(tmp)); int proto_num = (int)GetWindowLong(hwndDlg, GWLP_USERDATA); if (proto_num == -1) protocols->SetNicks(tmp); else protocols->Get(proto_num)->SetNick(tmp); DestroyWindow(hwndDlg); break; } case IDCANCEL: DestroyWindow(hwndDlg); break; } break; case WM_CLOSE: DestroyWindow(hwndDlg); break; case WM_DESTROY: InterlockedExchange(&nickname_dialog_open, 0); break; } return FALSE; }
static BOOL CALLBACK DlgProcSetNickname(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch ( msg ) { case WM_INITDIALOG: { TranslateDialogDefault(hwndDlg); SendMessage(GetDlgItem(hwndDlg, IDC_NICKNAME), EM_LIMITTEXT, MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE - 1, 0); return TRUE; } case WMU_SETDATA: { int proto_num = (int)wParam; SetWindowLong(hwndDlg, GWL_USERDATA, proto_num); if (proto_num == -1) { SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)LoadSkinnedIcon(SKINICON_OTHER_MIRANDA)); // All protos have the same nick? std::vector<Protocol> protos; GetProtocols(&protos); int protosSize = protos.size(); if (protosSize > 0) { std::string nick = protos[0].GetNick(); bool foundDefNick = true; for(int i = 1; i < protosSize; i++) { if (stricmp(protos[i].GetNick(), nick.c_str()) != 0) { foundDefNick = false; break; } } if (foundDefNick) { if (stricmp(protocols->default_nick, nick.c_str()) != 0) lstrcpy(protocols->default_nick, nick.c_str()); } } SetDlgItemText(hwndDlg, IDC_NICKNAME, protocols->default_nick); SendDlgItemMessage(hwndDlg, IDC_NICKNAME, EM_LIMITTEXT, MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE, 0); } else { Protocol proto = GetProtocolByIndex(proto_num); char tmp[128]; mir_snprintf(tmp, sizeof(tmp), Translate("Set My Nickname for %s"), proto.GetDescription()); SendMessage(hwndDlg, WM_SETTEXT, 0, (LPARAM)tmp); HICON hIcon = (HICON) proto.Call(PS_LOADICON, PLI_PROTOCOL); if (hIcon != NULL) { SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon); DestroyIcon(hIcon); } SetDlgItemText(hwndDlg, IDC_NICKNAME, proto.GetNick()); SendDlgItemMessage(hwndDlg, IDC_NICKNAME, EM_LIMITTEXT, min(MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE, proto.GetNickMaxLength()), 0); } return TRUE; } case WM_COMMAND: switch(wParam) { case IDOK: { char tmp[MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE]; GetDlgItemText(hwndDlg, IDC_NICKNAME, tmp, sizeof(tmp)); int proto_num = (int) GetWindowLong(hwndDlg, GWL_USERDATA); if (proto_num == -1) { protocols->SetNicks(tmp); } else { GetProtocolByIndex(proto_num).SetNick(tmp); } DestroyWindow(hwndDlg); break; } case IDCANCEL: { DestroyWindow(hwndDlg); break; } } break; case WM_CLOSE: DestroyWindow(hwndDlg); break; case WM_DESTROY: InterlockedExchange(&nickname_dialog_open, 0); break; } return FALSE; }