From de6eb3e4bc30eff928dc932c03812ede3077926a Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Sat, 13 Oct 2012 08:54:34 +0000 Subject: MRA: folders restructurization git-svn-id: http://svn.miranda-ng.org/main/trunk@1900 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/MRA/src/MraSelectEMail.cpp | 158 +++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 protocols/MRA/src/MraSelectEMail.cpp (limited to 'protocols/MRA/src/MraSelectEMail.cpp') diff --git a/protocols/MRA/src/MraSelectEMail.cpp b/protocols/MRA/src/MraSelectEMail.cpp new file mode 100644 index 0000000000..a3c9bfd313 --- /dev/null +++ b/protocols/MRA/src/MraSelectEMail.cpp @@ -0,0 +1,158 @@ +#include "Mra.h" +#include "MraSelectEMail.h" +#include "BuffToLowerCase.h" + +struct MraSelectEMailDlgData +{ + CMraProto *ppro; + HANDLE hContact; + DWORD dwType; +}; + +void AddContactEMailToListParam(HANDLE hContact, BOOL bMRAOnly, LPSTR lpszModule, LPSTR lpszValueName, HWND hWndList) +{ + CHAR szBuff[MAX_PATH], szEMail[MAX_EMAIL_LEN]; + WCHAR wszBuff[MAX_PATH]; + size_t i, dwEMailSize; + + if (DB_GetStaticStringA(hContact, lpszModule, lpszValueName, szEMail, SIZEOF(szEMail), &dwEMailSize)) { + if (bMRAOnly == FALSE || IsEMailMR(szEMail, dwEMailSize)) { + MultiByteToWideChar(MRA_CODE_PAGE, 0, szEMail, (dwEMailSize+1), wszBuff, SIZEOF(wszBuff)); + if (SendMessage(hWndList, LB_FINDSTRING, -1, (LPARAM)wszBuff) == LB_ERR) SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM)wszBuff); + } + } + + for (i = 0;TRUE;i++) { + mir_snprintf(szBuff, SIZEOF(szBuff), "%s%lu", lpszValueName, i); + if (DB_GetStaticStringA(hContact, lpszModule, szBuff, szEMail, SIZEOF(szEMail), &dwEMailSize)) { + if (bMRAOnly == FALSE || IsEMailMR(szEMail, dwEMailSize)) { + MultiByteToWideChar(MRA_CODE_PAGE, 0, szEMail, (dwEMailSize+1), wszBuff, SIZEOF(wszBuff)); + if (SendMessage(hWndList, LB_FINDSTRING, -1, (LPARAM)wszBuff) == LB_ERR) SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM)wszBuff); + } + } + else if (i > EMAILS_MIN_COUNT) + break; + } +} + +INT_PTR CALLBACK MraSelectEMailDlgProc(HWND hWndDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + MraSelectEMailDlgData *dat = (MraSelectEMailDlgData*)GetWindowLongPtr(hWndDlg, GWLP_USERDATA); + + switch (message) { + case WM_INITDIALOG: + TranslateDialogDefault(hWndDlg); + dat = (MraSelectEMailDlgData*)lParam; + { + HWND hWndList; + BOOL bMRAOnly; + LPSTR lpszProto; + + SetWindowLongPtr(hWndDlg, GWLP_USERDATA, (LONG_PTR)lParam); + hWndList = GetDlgItem(hWndDlg, IDC_LIST_EMAILS); + + switch (dat->dwType) { + case MRA_SELECT_EMAIL_TYPE_SEND_POSTCARD: + bMRAOnly = FALSE; + break; + case MRA_SELECT_EMAIL_TYPE_VIEW_ALBUM: + case MRA_SELECT_EMAIL_TYPE_READ_BLOG: + bMRAOnly = TRUE; + break; + default: + bMRAOnly = FALSE; + break; + } + + if (dat->hContact) + lpszProto = (LPSTR)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)dat->hContact, 0); + else + lpszProto = dat->ppro->m_szModuleName; + + AddContactEMailToListParam(dat->hContact, bMRAOnly, lpszProto, "e-mail", hWndList); + AddContactEMailToListParam(dat->hContact, bMRAOnly, "UserInfo", "e-mail", hWndList); + AddContactEMailToListParam(dat->hContact, bMRAOnly, "UserInfo", "Mye-mail", hWndList); + AddContactEMailToListParam(dat->hContact, bMRAOnly, "UserInfo", "Companye-mail", hWndList); + AddContactEMailToListParam(dat->hContact, bMRAOnly, "UserInfo", "MyCompanye-mail", hWndList); + } + return TRUE; + + case WM_CLOSE: + DestroyWindow(hWndDlg); + break; + + case WM_DESTROY: + SetWindowLongPtr(hWndDlg, GWLP_USERDATA, (LONG_PTR)0); + mir_free(dat); + EndDialog(hWndDlg, NO_ERROR); + break; + + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDC_LIST_EMAILS: + if (HIWORD(wParam) == LBN_DBLCLK) + SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(IDOK, BN_CLICKED), (LPARAM)GetDlgItem(hWndDlg, IDOK)); + break; + + case IDOK: + { + CHAR szEMail[MAX_EMAIL_LEN]; + WCHAR wszBuff[MAX_PATH]; + size_t dwEMailSize; + + dwEMailSize = SendMessage(GetDlgItem(hWndDlg, IDC_LIST_EMAILS), LB_GETTEXT, SendMessage(GetDlgItem(hWndDlg, IDC_LIST_EMAILS), LB_GETCURSEL, 0, 0), (LPARAM)wszBuff); + WideCharToMultiByte(MRA_CODE_PAGE, 0, wszBuff, (dwEMailSize+1), szEMail, SIZEOF(szEMail), NULL, NULL); + BuffToLowerCase(szEMail, szEMail, dwEMailSize); + + switch (dat->dwType) { + case MRA_SELECT_EMAIL_TYPE_SEND_POSTCARD: + { + size_t dwUrlSize; + CHAR szUrl[BUFF_SIZE_URL]; + dwUrlSize = mir_snprintf(szUrl, SIZEOF(szUrl), "http://cards.mail.ru/event.html?rcptname = %s&rcptemail = %s", GetContactNameA(dat->hContact), szEMail); + dat->ppro->MraMPopSessionQueueAddUrl(dat->ppro->hMPopSessionQueue, szUrl, dwUrlSize); + } + break; + case MRA_SELECT_EMAIL_TYPE_VIEW_ALBUM: + dat->ppro->MraMPopSessionQueueAddUrlAndEMail(dat->ppro->hMPopSessionQueue, MRA_FOTO_URL, sizeof(MRA_FOTO_URL), szEMail, dwEMailSize); + break; + case MRA_SELECT_EMAIL_TYPE_READ_BLOG: + dat->ppro->MraMPopSessionQueueAddUrlAndEMail(dat->ppro->hMPopSessionQueue, MRA_BLOGS_URL, sizeof(MRA_BLOGS_URL), szEMail, dwEMailSize); + break; + case MRA_SELECT_EMAIL_TYPE_VIEW_VIDEO: + dat->ppro->MraMPopSessionQueueAddUrlAndEMail(dat->ppro->hMPopSessionQueue, MRA_VIDEO_URL, sizeof(MRA_VIDEO_URL), szEMail, dwEMailSize); + break; + case MRA_SELECT_EMAIL_TYPE_ANSWERS: + dat->ppro->MraMPopSessionQueueAddUrlAndEMail(dat->ppro->hMPopSessionQueue, MRA_ANSWERS_URL, sizeof(MRA_ANSWERS_URL), szEMail, dwEMailSize); + break; + case MRA_SELECT_EMAIL_TYPE_WORLD: + dat->ppro->MraMPopSessionQueueAddUrlAndEMail(dat->ppro->hMPopSessionQueue, MRA_WORLD_URL, sizeof(MRA_WORLD_URL), szEMail, dwEMailSize); + break; + } + } + //break; + case IDCANCEL: + DestroyWindow(hWndDlg); + break; + default: + break; + } + break; + default: + break; + } + + return FALSE; +} + +DWORD CMraProto::MraSelectEMailDlgShow(HANDLE hContact, DWORD dwType) +{ + MraSelectEMailDlgData *dat = (MraSelectEMailDlgData*)mir_calloc(sizeof(MraSelectEMailDlgData)); + if (dat) { + dat->ppro = this; + dat->hContact = hContact; + dat->dwType = dwType; + DialogBoxParam(masMraSettings.hInstance, MAKEINTRESOURCE(IDD_DIALOG_SELECT_EMAIL), NULL, MraSelectEMailDlgProc, (LPARAM)dat); + } + return 0; +} -- cgit v1.2.3