summaryrefslogtreecommitdiff
path: root/protocols/MRA/MraSelectEMail.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/MRA/MraSelectEMail.cpp')
-rw-r--r--protocols/MRA/MraSelectEMail.cpp187
1 files changed, 187 insertions, 0 deletions
diff --git a/protocols/MRA/MraSelectEMail.cpp b/protocols/MRA/MraSelectEMail.cpp
new file mode 100644
index 0000000000..ba9da3d471
--- /dev/null
+++ b/protocols/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