summaryrefslogtreecommitdiff
path: root/protocols/MRA/MraAdvancedSearch.cpp
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-05-15 10:38:20 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-05-15 10:38:20 +0000
commit48540940b6c28bb4378abfeb500ec45a625b37b6 (patch)
tree2ef294c0763e802f91d868bdef4229b6868527de /protocols/MRA/MraAdvancedSearch.cpp
parent5c350913f011e119127baeb32a6aedeb4f0d33bc (diff)
initial commit
git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/MRA/MraAdvancedSearch.cpp')
-rw-r--r--protocols/MRA/MraAdvancedSearch.cpp361
1 files changed, 361 insertions, 0 deletions
diff --git a/protocols/MRA/MraAdvancedSearch.cpp b/protocols/MRA/MraAdvancedSearch.cpp
new file mode 100644
index 0000000000..86ac51309a
--- /dev/null
+++ b/protocols/MRA/MraAdvancedSearch.cpp
@@ -0,0 +1,361 @@
+#include "Mra.h"
+#include "proto.h"
+#include "MraPlaces.h"
+
+
+
+struct FieldNames
+{
+ BYTE dwCode;
+ LPWSTR lpszText;
+};
+
+
+
+static const FieldNames GenderField[]=
+{
+ {1, L"Male"},
+ {2, L"Female"},
+ {-1, NULL}
+};
+
+static const FieldNames MonthField[]=
+{
+ {1, L"January"},
+ {2, L"February"},
+ {3, L"March"},
+ {4, L"April"},
+ {5, L"May"},
+ {6, L"June"},
+ {7, L"July"},
+ {8, L"August"},
+ {9, L"September"},
+ {10, L"October"},
+ {11, L"November"},
+ {12, L"December"},
+ {-1, NULL}
+};
+
+static const FieldNames ZodiakField[]=
+{
+ {1, L"Aries"},
+ {2, L"Taurus"},
+ {3, L"Gemini"},
+ {4, L"Cancer"},
+ {5, L"Leo"},
+ {6, L"Virgo"},
+ {7, L"Libra"},
+ {8, L"Scorpio"},
+ {9, L"Sagitarius"},
+ {10, L"Capricorn"},
+ {11, L"Aquarius"},
+ {12, L"Pisces"},
+ {-1, NULL}
+};
+
+
+
+
+
+
+void ResetComboBox(HWND hWndCombo)
+{
+ DWORD dwItem;
+
+ SendMessage(hWndCombo,CB_RESETCONTENT,0,0);
+ dwItem=SendMessage(hWndCombo,CB_ADDSTRING,0,(LPARAM)L"");
+ SendMessage(hWndCombo,CB_SETITEMDATA,dwItem,0);
+ SendMessage(hWndCombo,CB_SETCURSEL,dwItem,0);
+}
+
+
+void InitComboBox(HWND hWndCombo,FieldNames *lpNames)
+{
+ DWORD dwItem;
+
+ ResetComboBox(hWndCombo);
+
+ for (SIZE_T i=0;lpNames[i].lpszText;i++)
+ {
+ dwItem=SendMessage(hWndCombo,CB_ADDSTRING,0,(LPARAM)TranslateW(lpNames[i].lpszText));
+ SendMessage(hWndCombo,CB_SETITEMDATA,dwItem,lpNames[i].dwCode);
+ }
+}
+
+
+void InitComboBoxNumders(HWND hWndCombo,DWORD dwStart,DWORD dwEnd)
+{
+ DWORD dwItem;
+ WCHAR szBuff[MAX_PATH];
+
+ ResetComboBox(hWndCombo);
+
+ for (DWORD i=dwStart;i<=dwEnd;i++)
+ {
+ mir_sntprintf(szBuff,SIZEOF(szBuff),L"%lu",i);
+ dwItem=SendMessage(hWndCombo,CB_ADDSTRING,0,(LPARAM)szBuff);
+ SendMessage(hWndCombo,CB_SETITEMDATA,dwItem,i);
+ }
+}
+
+
+INT_PTR CALLBACK AdvancedSearchDlgProc(HWND hWndDlg,UINT message,WPARAM wParam,LPARAM lParam)
+{
+ switch(message){
+ case WM_INITDIALOG:
+ {
+ HWND hWndCombo;
+ DWORD dwItem;
+ WCHAR wszBuff[MAX_PATH];
+ SYSTEMTIME stTime;
+ GetLocalTime(&stTime);
+
+ //InitComboBox(GetDlgItem(hWndDlg,IDC_EMAIL_DOMAIN),(FieldNames*)DomainField);
+ {
+ hWndCombo=GetDlgItem(hWndDlg,IDC_EMAIL_DOMAIN);
+ ResetComboBox(hWndCombo);
+ for (SIZE_T i=0;lpcszMailRuDomains[i];i++)
+ {
+ MultiByteToWideChar(MRA_CODE_PAGE,0,lpcszMailRuDomains[i],-1,wszBuff,SIZEOF(wszBuff));
+ SendMessage(hWndCombo,CB_ADDSTRING,0,(LPARAM)wszBuff);
+ }
+ }
+ InitComboBox(GetDlgItem(hWndDlg,IDC_GENDER),(FieldNames*)GenderField);
+ InitComboBoxNumders(GetDlgItem(hWndDlg,IDC_AGERANGE_FROM),1,100);
+ InitComboBoxNumders(GetDlgItem(hWndDlg,IDC_AGERANGE_TO),1,100);
+ InitComboBoxNumders(GetDlgItem(hWndDlg,IDC_BIRTHDAY_DAY),1,31);
+ InitComboBox(GetDlgItem(hWndDlg,IDC_BIRTHDAY_MONTH),(FieldNames*)MonthField);
+ InitComboBoxNumders(GetDlgItem(hWndDlg,IDC_BIRTHDAY_YEAR),1900,(DWORD)stTime.wYear);
+ InitComboBox(GetDlgItem(hWndDlg,IDC_ZODIAK),(FieldNames*)ZodiakField);
+
+ hWndCombo=GetDlgItem(hWndDlg,IDC_COUNTRY);
+ ResetComboBox(hWndCombo);
+ for(SIZE_T i=0;mrapPlaces[i].lpszData;i++)
+ {
+ if (mrapPlaces[i].dwCityID==0 && mrapPlaces[i].dwPlaceID==0)
+ {
+ dwItem=SendMessage(hWndCombo,CB_ADDSTRING,0,(LPARAM)mrapPlaces[i].lpszData);
+ SendMessage(hWndCombo,CB_SETITEMDATA,dwItem,mrapPlaces[i].dwCountryID);
+ }
+ }
+
+
+ ResetComboBox(GetDlgItem(hWndDlg,IDC_CITY));
+
+ if (DB_Mra_GetByte(NULL,"AdvancedSearchRemember",MRA_DEFAULT_SEARCH_REMEMBER))
+ {
+ SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_GENDER,CB_SETCURSEL,DB_Mra_GetWord(NULL,"AdvancedSearchGender",0),0);
+ SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_AGERANGE_FROM,CB_SETCURSEL,DB_Mra_GetWord(NULL,"AdvancedSearchAgeFrom",0),0);
+ SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_AGERANGE_TO,CB_SETCURSEL,DB_Mra_GetWord(NULL,"AdvancedSearchAgeTo",0),0);
+ SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_BIRTHDAY_MONTH,CB_SETCURSEL,DB_Mra_GetWord(NULL,"AdvancedSearchBirthDayMonth",0),0);
+ SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_BIRTHDAY_DAY,CB_SETCURSEL,DB_Mra_GetWord(NULL,"AdvancedSearchBirthDayDay",0),0);
+
+ SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_ZODIAK,CB_SETCURSEL,DB_Mra_GetWord(NULL,"AdvancedSearchZodiakID",0),0);
+
+
+ SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_COUNTRY,CB_SETCURSEL,DB_Mra_GetWord(NULL,"AdvancedSearchCountryID",0),0);
+ SendMessageW(hWndDlg,WM_COMMAND,(WPARAM)MAKELONG(IDC_COUNTRY,CBN_SELCHANGE),(LPARAM)GetDlgItem(hWndDlg,IDC_COUNTRY));
+
+ SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_STATE,CB_SETCURSEL,DB_Mra_GetWord(NULL,"AdvancedSearchStateID",0),0);
+ SendMessageW(hWndDlg,WM_COMMAND,(WPARAM)MAKELONG(IDC_STATE,CBN_SELCHANGE),(LPARAM)GetDlgItem(hWndDlg,IDC_STATE));
+
+ SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_CITY,CB_SETCURSEL,DB_Mra_GetWord(NULL,"AdvancedSearchCityID",0),0);
+
+
+ CHECK_DLG_BUTTON(hWndDlg,IDC_ONLINEONLY,DB_Mra_GetByte(NULL,"AdvancedSearchOnlineOnly",FALSE));
+ CHECK_DLG_BUTTON(hWndDlg,IDC_CHK_REMEMBER,TRUE);
+ }
+ TranslateDialogDefault(hWndDlg);
+ }
+ return(TRUE);
+ case WM_DESTROY:
+ {
+ /*dwUserSize=GET_DLG_ITEM_TEXTA(hWndDlg,IDC_EMAIL_USER,szUser,SIZEOF(szUser));
+ dwDomainSize=GET_DLG_ITEM_TEXTA(hWndDlg,IDC_EMAIL_DOMAIN,szDomain,SIZEOF(szDomain));
+
+ dwNickNameSize=GET_DLG_ITEM_TEXT(hWndDlg,IDC_NICK,wszNickName,SIZEOF(wszNickName));
+
+ dwFirstNameSize=GET_DLG_ITEM_TEXT(hWndDlg,IDC_FIRSTNAME,wszFirstName,SIZEOF(wszFirstName));
+
+ dwLastNameSize=GET_DLG_ITEM_TEXT(hWndDlg,IDC_LASTNAME,wszLastName,SIZEOF(wszLastName));*/
+
+ DB_Mra_SetWord(NULL,"AdvancedSearchGender",SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_GENDER,CB_GETCURSEL,0,0));
+ DB_Mra_SetWord(NULL,"AdvancedSearchAgeFrom",SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_AGERANGE_FROM,CB_GETCURSEL,0,0));
+ DB_Mra_SetWord(NULL,"AdvancedSearchAgeTo",SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_AGERANGE_TO,CB_GETCURSEL,0,0));
+ DB_Mra_SetWord(NULL,"AdvancedSearchBirthDayMonth",SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_BIRTHDAY_MONTH,CB_GETCURSEL,0,0));
+ DB_Mra_SetWord(NULL,"AdvancedSearchBirthDayDay",SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_BIRTHDAY_DAY,CB_GETCURSEL,0,0));
+
+ DB_Mra_SetWord(NULL,"AdvancedSearchZodiakID",SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_ZODIAK,CB_GETCURSEL,0,0));
+
+ DB_Mra_SetWord(NULL,"AdvancedSearchCityID",SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_CITY,CB_GETCURSEL,0,0));
+ DB_Mra_SetWord(NULL,"AdvancedSearchStateID",SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_STATE,CB_GETCURSEL,0,0));
+ DB_Mra_SetWord(NULL,"AdvancedSearchCountryID",SEND_DLG_ITEM_MESSAGE(hWndDlg,IDC_COUNTRY,CB_GETCURSEL,0,0));
+
+ DB_Mra_SetByte(NULL,"AdvancedSearchOnlineOnly",IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_ONLINEONLY));
+ DB_Mra_SetByte(NULL,"AdvancedSearchRemember",IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_CHK_REMEMBER));
+ }
+ break;
+ case WM_COMMAND:
+ switch(LOWORD(wParam)){
+ case IDOK:
+ SendMessage(GetParent(hWndDlg),WM_COMMAND,MAKEWPARAM(IDOK,BN_CLICKED),(LPARAM)GetDlgItem(GetParent(hWndDlg),IDOK));
+ break;
+ case IDC_AGERANGE_FROM:
+ case IDC_AGERANGE_TO:
+ if (HIWORD(wParam)==CBN_SELCHANGE)
+ {
+ if (LOWORD(wParam)==IDC_AGERANGE_FROM)
+ {
+ DWORD dwAgeFrom,dwAgeTo;
+
+ dwAgeFrom=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_AGERANGE_FROM);
+ dwAgeTo=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_AGERANGE_TO);
+ if (dwAgeFrom==0) dwAgeFrom++;
+ InitComboBoxNumders(GetDlgItem(hWndDlg,IDC_AGERANGE_TO),dwAgeFrom,100);
+ SendMessage(GetDlgItem(hWndDlg,IDC_AGERANGE_TO),CB_SETCURSEL,((dwAgeTo-dwAgeFrom)+1),0);
+ }
+ SendMessage(GetDlgItem(hWndDlg,IDC_BIRTHDAY_YEAR),CB_SETCURSEL,0,0);
+ }
+ break;
+ case IDC_BIRTHDAY_DAY:
+ case IDC_BIRTHDAY_MONTH:
+ case IDC_BIRTHDAY_YEAR:
+ if (HIWORD(wParam)==CBN_SELCHANGE)
+ {
+ DWORD dwAge;
+ SYSTEMTIME stTime={0};
+
+ stTime.wYear=(WORD)GET_CURRENT_COMBO_DATA(hWndDlg,IDC_BIRTHDAY_YEAR);
+ stTime.wMonth=(WORD)GET_CURRENT_COMBO_DATA(hWndDlg,IDC_BIRTHDAY_MONTH);
+ stTime.wDay=(WORD)GET_CURRENT_COMBO_DATA(hWndDlg,IDC_BIRTHDAY_DAY);
+
+ dwAge=GetYears(&stTime);
+ SendMessage(GetDlgItem(hWndDlg,IDC_AGERANGE_FROM),CB_SETCURSEL,dwAge,0);
+ SendMessage(GetDlgItem(hWndDlg,IDC_AGERANGE_TO),CB_SETCURSEL,dwAge,0);
+ SendMessage(GetDlgItem(hWndDlg,IDC_ZODIAK),CB_SETCURSEL,0,0);
+ }
+ break;
+ case IDC_ZODIAK:
+ if (HIWORD(wParam)==CBN_SELCHANGE)
+ {
+ SendMessage(GetDlgItem(hWndDlg,IDC_BIRTHDAY_DAY),CB_SETCURSEL,0,0);
+ SendMessage(GetDlgItem(hWndDlg,IDC_BIRTHDAY_MONTH),CB_SETCURSEL,0,0);
+ //SendMessage(GetDlgItem(hWndDlg,IDC_BIRTHDAY_YEAR),CB_SETCURSEL,0,0);
+ }
+ break;
+ case IDC_COUNTRY:
+ if (HIWORD(wParam)==CBN_SELCHANGE)
+ {
+ HWND hWndCombo;
+ DWORD dwItem,dwCountryID;
+
+ dwCountryID=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_COUNTRY);
+ hWndCombo=GetDlgItem(hWndDlg,IDC_STATE);
+ SendMessage(hWndCombo,CB_RESETCONTENT,0,0);
+ ResetComboBox(GetDlgItem(hWndDlg,IDC_CITY));
+ dwItem=SendMessage(hWndCombo,CB_ADDSTRING,0,(LPARAM)L"");
+ SendMessage(hWndCombo,CB_SETITEMDATA,dwItem,0);
+ SendMessage(hWndCombo,CB_SETCURSEL,dwItem,0);
+
+ for(SIZE_T i=0;mrapPlaces[i].lpszData;i++)
+ {
+ if (mrapPlaces[i].dwCountryID==dwCountryID && mrapPlaces[i].dwCityID && mrapPlaces[i].dwPlaceID==0)
+ {
+ dwItem=SendMessage(hWndCombo,CB_ADDSTRING,0,(LPARAM)mrapPlaces[i].lpszData);
+ SendMessage(hWndCombo,CB_SETITEMDATA,dwItem,mrapPlaces[i].dwCityID);
+ }
+ }
+ }
+ break;
+ case IDC_STATE:
+ if (HIWORD(wParam)==CBN_SELCHANGE)
+ {
+ HWND hWndCombo;
+ DWORD dwItem,dwCountryID,dwStateID;
+
+ dwCountryID=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_COUNTRY);
+ dwStateID=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_STATE);
+ hWndCombo=GetDlgItem(hWndDlg,IDC_CITY);
+ SendMessage(hWndCombo,CB_RESETCONTENT,0,0);
+ dwItem=SendMessage(hWndCombo,CB_ADDSTRING,0,(LPARAM)L"");
+ SendMessage(hWndCombo,CB_SETITEMDATA,dwItem,0);
+ SendMessage(hWndCombo,CB_SETCURSEL,dwItem,0);
+
+ for(SIZE_T i=0;mrapPlaces[i].lpszData;i++)
+ {
+ if (mrapPlaces[i].dwCountryID==dwCountryID && mrapPlaces[i].dwCityID==dwStateID && mrapPlaces[i].dwPlaceID)
+ {
+ dwItem=SendMessage(hWndCombo,CB_ADDSTRING,0,(LPARAM)mrapPlaces[i].lpszData);
+ SendMessage(hWndCombo,CB_SETITEMDATA,dwItem,mrapPlaces[i].dwPlaceID);
+ }
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+return(FALSE);
+}
+
+
+DWORD AdvancedSearchFromDlg(HWND hWndDlg)
+{
+ DWORD dwRequestFlags=0;
+ CHAR szUser[MAX_PATH],szDomain[MAX_PATH];
+ WCHAR wszNickName[MAX_PATH],wszFirstName[MAX_PATH],wszLastName[MAX_PATH];
+ SIZE_T dwUserSize,dwDomainSize,dwNickNameSize,dwFirstNameSize,dwLastNameSize;
+ DWORD dwSex,dwDate1,dwDate2,dwCityID,dwZodiak,dwBirthdayMonth,dwBirthdayDay,dwCountryID,dwOnline;
+
+
+ dwUserSize=GET_DLG_ITEM_TEXTA(hWndDlg,IDC_EMAIL_USER,szUser,SIZEOF(szUser));
+ dwDomainSize=GET_DLG_ITEM_TEXTA(hWndDlg,IDC_EMAIL_DOMAIN,szDomain,SIZEOF(szDomain));
+ if (dwUserSize && dwDomainSize)
+ {
+ SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_USER);
+ SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_DOMAIN);
+ }
+
+ dwNickNameSize=GET_DLG_ITEM_TEXT(hWndDlg,IDC_NICK,wszNickName,SIZEOF(wszNickName));
+ if (dwNickNameSize) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_NICKNAME);
+
+ dwFirstNameSize=GET_DLG_ITEM_TEXT(hWndDlg,IDC_FIRSTNAME,wszFirstName,SIZEOF(wszFirstName));
+ if (dwFirstNameSize) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_FIRSTNAME);
+
+ dwLastNameSize=GET_DLG_ITEM_TEXT(hWndDlg,IDC_LASTNAME,wszLastName,SIZEOF(wszLastName));
+ if (dwLastNameSize) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_LASTNAME);
+
+ dwSex=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_GENDER);
+ if (dwSex) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_SEX);
+
+ dwDate1=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_AGERANGE_FROM);
+ if (dwDate1) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_DATE1);
+
+ dwDate2=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_AGERANGE_TO);
+ if (dwDate2) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_DATE2);
+
+ dwCityID=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_CITY);
+ if (dwCityID==0) dwCityID=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_STATE);
+ if (dwCityID) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_CITY_ID);
+
+ dwZodiak=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_ZODIAK);
+ if (dwZodiak) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_ZODIAC);
+
+ dwBirthdayMonth=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_BIRTHDAY_MONTH);
+ if (dwBirthdayMonth) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_BIRTHDAY_MONTH);
+
+ dwBirthdayDay=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_BIRTHDAY_DAY);
+ if (dwBirthdayMonth) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_BIRTHDAY_DAY);
+
+ dwCountryID=GET_CURRENT_COMBO_DATA(hWndDlg,IDC_COUNTRY);
+ if (dwCountryID) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_COUNTRY_ID);
+
+
+ dwOnline=IS_DLG_BUTTON_CHECKED(hWndDlg,IDC_ONLINEONLY);
+ if (dwOnline) SetBit(dwRequestFlags,MRIM_CS_WP_REQUEST_PARAM_ONLINE);
+
+return(MraSendCommand_WPRequestW(NULL,ACKTYPE_SEARCH,dwRequestFlags,szUser,dwUserSize,szDomain,dwDomainSize,wszNickName,dwNickNameSize,wszFirstName,dwFirstNameSize,wszLastName,dwLastNameSize,dwSex,dwDate1,dwDate2,dwCityID,dwZodiak,dwBirthdayMonth,dwBirthdayDay,dwCountryID,dwOnline));
+} \ No newline at end of file