From 036428b1f75d480617d5df454dc28a5adb941d26 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Wed, 4 May 2011 19:12:23 +0000 Subject: added MRA git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@67 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- MRA/MraSelectEMail.cpp | 187 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 MRA/MraSelectEMail.cpp (limited to 'MRA/MraSelectEMail.cpp') diff --git a/MRA/MraSelectEMail.cpp b/MRA/MraSelectEMail.cpp new file mode 100644 index 0000000..ba9da3d --- /dev/null +++ b/MRA/MraSelectEMail.cpp @@ -0,0 +1,187 @@ +#include "Mra.h" +#include "MraSelectEMail.h" +#include "BuffToLowerCase.h" + + + +struct MraSelectEMailDlgData +{ + 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 *pmrasemddDlgData=(MraSelectEMailDlgData*)GetWindowLongPtr(hWndDlg,GWLP_USERDATA); + + if (pmrasemddDlgData) + { + switch(message){ + case WM_CLOSE: + DestroyWindow(hWndDlg); + break; + case WM_DESTROY: + SetWindowLongPtr(hWndDlg,GWLP_USERDATA,(LONG_PTR)0); + MEMFREE(pmrasemddDlgData); + EndDialog(hWndDlg,NO_ERROR); + break; + case WM_COMMAND: + switch(LOWORD(wParam)){ + case IDC_LIST_EMAILS: + if (HIWORD(wParam)==LBN_DBLCLK) + { + //switch(pmrasemddDlgData->dwType){ + //case MRA_SELECT_EMAIL_TYPE_SEND_POSTCARD: + // break; + //case MRA_SELECT_EMAIL_TYPE_VIEW_ALBUM: + //case MRA_SELECT_EMAIL_TYPE_READ_BLOG: + SendMessage(hWndDlg,WM_COMMAND,MAKEWPARAM(IDOK,BN_CLICKED),(LPARAM)GetDlgItem(hWndDlg,IDOK)); + // break; + //} + } + 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(pmrasemddDlgData->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(pmrasemddDlgData->hContact),szEMail); + MraMPopSessionQueueAddUrl(masMraSettings.hMPopSessionQueue,szUrl,dwUrlSize); + } + break; + case MRA_SELECT_EMAIL_TYPE_VIEW_ALBUM: + MraMPopSessionQueueAddUrlAndEMail(masMraSettings.hMPopSessionQueue,MRA_FOTO_URL,sizeof(MRA_FOTO_URL),szEMail,dwEMailSize); + break; + case MRA_SELECT_EMAIL_TYPE_READ_BLOG: + MraMPopSessionQueueAddUrlAndEMail(masMraSettings.hMPopSessionQueue,MRA_BLOGS_URL,sizeof(MRA_BLOGS_URL),szEMail,dwEMailSize); + break; + case MRA_SELECT_EMAIL_TYPE_VIEW_VIDEO: + MraMPopSessionQueueAddUrlAndEMail(masMraSettings.hMPopSessionQueue,MRA_VIDEO_URL,sizeof(MRA_VIDEO_URL),szEMail,dwEMailSize); + break; + case MRA_SELECT_EMAIL_TYPE_ANSWERS: + MraMPopSessionQueueAddUrlAndEMail(masMraSettings.hMPopSessionQueue,MRA_ANSWERS_URL,sizeof(MRA_ANSWERS_URL),szEMail,dwEMailSize); + break; + case MRA_SELECT_EMAIL_TYPE_WORLD: + MraMPopSessionQueueAddUrlAndEMail(masMraSettings.hMPopSessionQueue,MRA_WORLD_URL,sizeof(MRA_WORLD_URL),szEMail,dwEMailSize); + break; + } + } + //break; + case IDCANCEL: + DestroyWindow(hWndDlg); + break; + default: + break; + } + break; + default: + break; + } + }else{ + pmrasemddDlgData=(MraSelectEMailDlgData*)lParam; + + if (message==WM_INITDIALOG) + { + HWND hWndList; + BOOL bMRAOnly; + LPSTR lpszProto; + + SetWindowLongPtr(hWndDlg,GWLP_USERDATA,(LONG_PTR)lParam); + hWndList=GetDlgItem(hWndDlg,IDC_LIST_EMAILS); + //SendMessage(hWndList,CB_RESETCONTENT,0,0); + + switch(pmrasemddDlgData->dwType){ + case MRA_SELECT_EMAIL_TYPE_SEND_POSTCARD: + // SetWindowLongPtr(hWndList,GWL_STYLE,(GetWindowLongPtr(hWndList,GWL_STYLE)|LBS_MULTIPLESEL)); + // SetWindowLongPtr(hWndList,GWL_STYLE,(GetWindowLongPtr(hWndList,GWL_STYLE)&~LBS_SORT)); + bMRAOnly=FALSE; + break; + case MRA_SELECT_EMAIL_TYPE_VIEW_ALBUM: + case MRA_SELECT_EMAIL_TYPE_READ_BLOG: + // SetWindowLongPtr(hWndList,GWL_STYLE,(LONG)(GetWindowLong(hWndList,GWL_STYLE)|LBS_NOSEL)); + bMRAOnly=TRUE; + break; + default: + bMRAOnly=FALSE; + break; + } + + if (pmrasemddDlgData->hContact) + { + lpszProto=(LPSTR)CallService(MS_PROTO_GETCONTACTBASEPROTO,(WPARAM)pmrasemddDlgData->hContact,0); + }else{ + lpszProto=PROTOCOL_NAMEA; + } + AddContactEMailToListParam(pmrasemddDlgData->hContact,bMRAOnly,lpszProto,"e-mail",hWndList); + AddContactEMailToListParam(pmrasemddDlgData->hContact,bMRAOnly,"UserInfo","e-mail",hWndList); + AddContactEMailToListParam(pmrasemddDlgData->hContact,bMRAOnly,"UserInfo","Mye-mail",hWndList); + AddContactEMailToListParam(pmrasemddDlgData->hContact,bMRAOnly,"UserInfo","Companye-mail",hWndList); + AddContactEMailToListParam(pmrasemddDlgData->hContact,bMRAOnly,"UserInfo","MyCompanye-mail",hWndList); + + TranslateDialogDefault(hWndDlg); + } + + //return(DefWindowProc(hWndDlg,message,wParam,lParam)); + } +return(FALSE); +} + + +DWORD MraSelectEMailDlgShow(HANDLE hContact,DWORD dwType) +{ + MraSelectEMailDlgData *pmrasemddDlgData; + + pmrasemddDlgData=(MraSelectEMailDlgData*)MEMALLOC(sizeof(MraSelectEMailDlgData)); + if (pmrasemddDlgData) + { + pmrasemddDlgData->hContact=hContact; + pmrasemddDlgData->dwType=dwType; + DialogBoxParam(masMraSettings.hInstance,MAKEINTRESOURCE(IDD_DIALOG_SELECT_EMAIL),NULL,MraSelectEMailDlgProc,(LPARAM)pmrasemddDlgData); + } +return(0); +} \ No newline at end of file -- cgit v1.2.3