summaryrefslogtreecommitdiff
path: root/plugins/Import/src/miranda.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Import/src/miranda.cpp')
-rw-r--r--plugins/Import/src/miranda.cpp533
1 files changed, 266 insertions, 267 deletions
diff --git a/plugins/Import/src/miranda.cpp b/plugins/Import/src/miranda.cpp
index 6d646f8077..b8de3a69a8 100644
--- a/plugins/Import/src/miranda.cpp
+++ b/plugins/Import/src/miranda.cpp
@@ -29,7 +29,102 @@ wchar_t importFile[MAX_PATH];
//=======================================================================================
// Profile selection dialog
-static void SearchForLists(HWND hwndDlg, const wchar_t *mirandaPath, const wchar_t *mirandaProf)
+CMirandaPageDlg::CMirandaPageDlg() :
+ CWizardPageDlg(IDD_MIRANDADB),
+ list(this, IDC_LIST),
+ btnBack(this, IDC_BACK),
+ btnOther(this, IDC_OTHER)
+{
+ list.OnSelChange = Callback(this, &CMirandaPageDlg::onSelChanged_list);
+
+ btnBack.OnClick = Callback(this, &CMirandaPageDlg::onClick_Back);
+ btnOther.OnClick = Callback(this, &CMirandaPageDlg::onClick_Other);
+}
+
+bool CMirandaPageDlg::OnInitDialog()
+{
+ VARSW pfd(L"%miranda_path%\\Profiles");
+ VARSW pfd1(L"%miranda_path%");
+ VARSW pfd2(L"%miranda_profilesdir%");
+ VARSW pfn(L"%miranda_profilename%");
+
+ SearchForLists(pfd2, pfn);
+ SearchForLists(pfd1, nullptr);
+ if (mir_wstrcmpi(pfd, pfd2))
+ SearchForLists(pfd, nullptr);
+
+ SendDlgItemMessage(m_hwnd, IDC_LIST, LB_SETCURSEL, 0, 0);
+ SendMessage(m_hwnd, WM_COMMAND, MAKELONG(IDC_LIST, LBN_SELCHANGE), 0);
+
+ wchar_t filename[MAX_PATH];
+ GetDlgItemText(m_hwnd, IDC_FILENAME, filename, _countof(filename));
+ if (_waccess(filename, 4))
+ SendMessage(m_hwndParent, WIZM_DISABLEBUTTON, 1, 0);
+ return true;
+}
+
+void CMirandaPageDlg::OnDestroy()
+{
+ for (int i = SendDlgItemMessage(m_hwnd, IDC_LIST, LB_GETCOUNT, 0, 0) - 1; i >= 0; i--)
+ mir_free((char*)SendDlgItemMessage(m_hwnd, IDC_LIST, LB_GETITEMDATA, i, 0));
+}
+
+void CMirandaPageDlg::OnNext()
+{
+ wchar_t filename[MAX_PATH];
+ GetDlgItemText(m_hwnd, IDC_FILENAME, filename, _countof(filename));
+ if (_waccess(filename, 4)) {
+ MessageBox(m_hwnd, TranslateT("The given file does not exist. Please check that you have entered the name correctly."), TranslateT("Miranda Import"), MB_OK);
+ return;
+ }
+ mir_wstrcpy(importFile, filename);
+ PostMessage(m_hwndParent, WIZM_GOTOPAGE, 0, (LPARAM)new CMirandaOptionsPageDlg());
+}
+
+void CMirandaPageDlg::onClick_Back(CCtrlButton*)
+{
+ PostMessage(m_hwndParent, WIZM_GOTOPAGE, 0, (LPARAM)new CIntroPageDlg());
+}
+
+void CMirandaPageDlg::onClick_Other(CCtrlButton*)
+{
+ ptrW pfd(Utils_ReplaceVarsW(L"%miranda_profilesdir%"));
+
+ wchar_t str[MAX_PATH], text[256];
+ GetDlgItemText(m_hwnd, IDC_FILENAME, str, _countof(str));
+ mir_snwprintf(text, L"%s (*.dat, *.bak)%c*.dat;*.bak%c%s (*.*)%c*.*%c%c", TranslateT("Miranda NG database"), 0, 0, TranslateT("All Files"), 0, 0, 0);
+
+ OPENFILENAME ofn = {};
+ ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;
+ ofn.hwndOwner = m_hwnd;
+ ofn.lpstrFilter = text;
+ ofn.lpstrDefExt = L"dat";
+ ofn.lpstrFile = str;
+ ofn.Flags = OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_NOCHANGEDIR | OFN_DONTADDTORECENT;
+ ofn.nMaxFile = _countof(str);
+ ofn.lpstrInitialDir = pfd;
+ if (GetOpenFileName(&ofn)) {
+ if (!mir_wstrcmpi(str, VARSW(L"%miranda_userdata%\\%miranda_profilename%.dat"))) {
+ MessageBoxW(nullptr, TranslateT("You cannot import your current profile into itself"), L"Miranda NG", MB_OK | MB_ICONERROR);
+ return;
+ }
+
+ SetDlgItemText(m_hwnd, IDC_FILENAME, str);
+ list.SetCurSel(-1);
+ SendMessage(m_hwndParent, WIZM_ENABLEBUTTON, 1, 0);
+ }
+}
+
+void CMirandaPageDlg::onSelChanged_list(CCtrlListBox*)
+{
+ int sel = list.GetCurSel();
+ if (sel != -1) {
+ SetDlgItemText(m_hwnd, IDC_FILENAME, (wchar_t*)list.GetItemData(sel));
+ SendMessage(m_hwndParent, WIZM_ENABLEBUTTON, 1, 0);
+ }
+}
+
+void CMirandaPageDlg::SearchForLists(const wchar_t *mirandaPath, const wchar_t *mirandaProf)
{
// find in Miranda profile subfolders
wchar_t searchspec[MAX_PATH];
@@ -53,165 +148,57 @@ static void SearchForLists(HWND hwndDlg, const wchar_t *mirandaPath, const wchar
mir_snwprintf(buf, L"%s\\%s\\%s.dat", mirandaPath, fd.cFileName, fd.cFileName);
if (_waccess(buf, 0) == 0) {
mir_snwprintf(profile, L"%s.dat", fd.cFileName);
-
- int i = SendDlgItemMessage(hwndDlg, IDC_LIST, LB_ADDSTRING, 0, (LPARAM)profile);
- SendDlgItemMessage(hwndDlg, IDC_LIST, LB_SETITEMDATA, i, (LPARAM)mir_wstrdup(buf));
+ list.AddString(profile, (LPARAM)mir_wstrdup(buf));
}
- }
- while (FindNextFile(hFind, &fd));
+ } while (FindNextFile(hFind, &fd));
FindClose(hFind);
}
-INT_PTR CALLBACK MirandaPageProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM)
-{
- wchar_t filename[MAX_PATH];
-
- switch(message) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- {
- VARSW pfd(L"%miranda_path%\\Profiles");
- VARSW pfd1(L"%miranda_path%");
- VARSW pfd2(L"%miranda_profilesdir%");
- VARSW pfn(L"%miranda_profilename%");
-
- SearchForLists(hwndDlg, pfd2, pfn);
- SearchForLists(hwndDlg, pfd1, nullptr);
- if (mir_wstrcmpi(pfd, pfd2))
- SearchForLists(hwndDlg, pfd, nullptr);
- }
- SendDlgItemMessage(hwndDlg, IDC_LIST, LB_SETCURSEL, 0, 0);
- SendMessage(hwndDlg, WM_COMMAND, MAKELONG(IDC_LIST, LBN_SELCHANGE), 0);
- GetDlgItemText(hwndDlg, IDC_FILENAME, filename, _countof(filename));
- if (_waccess(filename, 4))
- SendMessage(GetParent(hwndDlg), WIZM_DISABLEBUTTON, 1, 0);
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDC_BACK:
- PostMessage(GetParent(hwndDlg), WIZM_GOTOPAGE, IDD_WIZARDINTRO, (LPARAM)WizardIntroPageProc);
- break;
-
- case IDOK:
- GetDlgItemText(hwndDlg, IDC_FILENAME, filename, _countof(filename));
- if (_waccess(filename, 4)) {
- MessageBox(hwndDlg, TranslateT("The given file does not exist. Please check that you have entered the name correctly."), TranslateT("Miranda Import"), MB_OK);
- break;
- }
- mir_wstrcpy(importFile, filename);
- PostMessage(GetParent(hwndDlg), WIZM_GOTOPAGE, IDD_OPTIONS, (LPARAM)MirandaOptionsPageProc);
- break;
-
- case IDCANCEL:
- PostMessage(GetParent(hwndDlg), WM_CLOSE, 0, 0);
- break;
-
- case IDC_LIST:
- if (HIWORD(wParam) == LBN_SELCHANGE) {
- int sel = SendDlgItemMessage(hwndDlg, IDC_LIST, LB_GETCURSEL, 0, 0);
- if (sel != LB_ERR) {
- SetDlgItemText(hwndDlg, IDC_FILENAME, (wchar_t*)SendDlgItemMessage(hwndDlg, IDC_LIST, LB_GETITEMDATA, sel, 0));
- SendMessage(GetParent(hwndDlg), WIZM_ENABLEBUTTON, 1, 0);
- }
- }
- break;
-
- case IDC_OTHER:
- ptrW pfd(Utils_ReplaceVarsW(L"%miranda_profilesdir%"));
-
- wchar_t str[MAX_PATH], text[256];
- GetDlgItemText(hwndDlg, IDC_FILENAME, str, _countof(str));
- mir_snwprintf(text, L"%s (*.dat, *.bak)%c*.dat;*.bak%c%s (*.*)%c*.*%c%c", TranslateT("Miranda NG database"), 0, 0, TranslateT("All Files"), 0, 0, 0);
-
- OPENFILENAME ofn = { 0 };
- ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;
- ofn.hwndOwner = hwndDlg;
- ofn.lpstrFilter = text;
- ofn.lpstrDefExt = L"dat";
- ofn.lpstrFile = str;
- ofn.Flags = OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_NOCHANGEDIR | OFN_DONTADDTORECENT;
- ofn.nMaxFile = _countof(str);
- ofn.lpstrInitialDir = pfd;
- if (GetOpenFileName(&ofn)) {
- if (!mir_wstrcmpi(str, VARSW(L"%miranda_userdata%\\%miranda_profilename%.dat"))) {
- MessageBoxW(nullptr, TranslateT("You cannot import your current profile into itself"), L"Miranda NG", MB_OK | MB_ICONERROR);
- break;
- }
-
- SetDlgItemText(hwndDlg, IDC_FILENAME, str);
- SendDlgItemMessage(hwndDlg, IDC_LIST, LB_SETCURSEL, -1, 0);
- SendMessage(GetParent(hwndDlg), WIZM_ENABLEBUTTON, 1, 0);
- }
- }
- break;
+//=======================================================================================
+// Import options dialog
- case WM_DESTROY:
- for (int i = SendDlgItemMessage(hwndDlg, IDC_LIST, LB_GETCOUNT, 0, 0) - 1; i >= 0; i--)
- mir_free((char*)SendDlgItemMessage(hwndDlg, IDC_LIST, LB_GETITEMDATA, i, 0));
- break;
- }
+CMirandaOptionsPageDlg::CMirandaOptionsPageDlg() :
+ CWizardPageDlg(IDD_OPTIONS),
+ btnBack(this, IDC_BACK)
+{
+ btnBack.OnClick = Callback(this, &CMirandaOptionsPageDlg::onClick_Back);
+}
- return FALSE;
+bool CMirandaOptionsPageDlg::OnInitDialog()
+{
+ EnableWindow(GetDlgItem(m_hwnd, IDC_RADIO_COMPLETE), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_RADIO_ALL), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_ALL), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_RADIO_CONTACTS), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_CONTACTS), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_RADIO_CUSTOM), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDC_STATIC_CUSTOM), TRUE);
+ CheckDlgButton(m_hwnd, IDC_RADIO_ALL, BST_CHECKED);
+ return true;
}
-//=======================================================================================
-// Import options dialog
+void CMirandaOptionsPageDlg::onClick_Back(CCtrlButton*)
+{
+ PostMessage(m_hwndParent, WIZM_GOTOPAGE, 0, (LPARAM)new CMirandaPageDlg());
+}
-INT_PTR CALLBACK MirandaOptionsPageProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM)
+void CMirandaOptionsPageDlg::OnNext()
{
- switch (message) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RADIO_COMPLETE), TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RADIO_ALL), TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_ALL), TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RADIO_CONTACTS), TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_CONTACTS), TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RADIO_CUSTOM), TRUE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_CUSTOM), TRUE);
- CheckDlgButton(hwndDlg, IDC_RADIO_ALL, BST_CHECKED);
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDC_BACK:
- PostMessage(GetParent(hwndDlg), WIZM_GOTOPAGE, IDD_MIRANDADB, (LPARAM)MirandaPageProc);
- break;
-
- case IDOK:
- if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_COMPLETE)) {
- g_iImportOptions = IOPT_ADDUNKNOWN | IOPT_COMPLETE | IOPT_CHECKDUPS;
- PostMessage(GetParent(hwndDlg), WIZM_GOTOPAGE, IDD_PROGRESS, (LPARAM)ProgressPageProc);
- break;
- }
-
- if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_ALL)) {
- g_iImportOptions = IOPT_HISTORY | IOPT_SYSTEM | IOPT_GROUPS | IOPT_CONTACTS | IOPT_CHECKDUPS;
- PostMessage(GetParent(hwndDlg), WIZM_GOTOPAGE, IDD_PROGRESS, (LPARAM)ProgressPageProc);
- break;
- }
-
- if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_CONTACTS)) {
- g_iImportOptions = IOPT_CONTACTS;
- PostMessage(GetParent(hwndDlg), WIZM_GOTOPAGE, IDD_PROGRESS, (LPARAM)ProgressPageProc);
- break;
- }
-
- if (IsDlgButtonChecked(hwndDlg, IDC_RADIO_CUSTOM)) {
- PostMessage(GetParent(hwndDlg), WIZM_GOTOPAGE, IDD_ADVOPTIONS, (LPARAM)MirandaAdvOptionsPageProc);
- break;
- }
- break;
-
- case IDCANCEL:
- PostMessage(GetParent(hwndDlg), WM_CLOSE, 0, 0);
- break;
- }
- break;
+ if (IsDlgButtonChecked(m_hwnd, IDC_RADIO_COMPLETE)) {
+ g_iImportOptions = IOPT_ADDUNKNOWN | IOPT_COMPLETE | IOPT_CHECKDUPS;
+ PostMessage(m_hwndParent, WIZM_GOTOPAGE, IDD_PROGRESS, (LPARAM)new CProgressPageDlg());
+ }
+ else if (IsDlgButtonChecked(m_hwnd, IDC_RADIO_ALL)) {
+ g_iImportOptions = IOPT_HISTORY | IOPT_SYSTEM | IOPT_GROUPS | IOPT_CONTACTS | IOPT_CHECKDUPS;
+ PostMessage(m_hwndParent, WIZM_GOTOPAGE, IDD_PROGRESS, (LPARAM)new CProgressPageDlg());
}
- return FALSE;
+ else if (IsDlgButtonChecked(m_hwnd, IDC_RADIO_CONTACTS)) {
+ g_iImportOptions = IOPT_CONTACTS;
+ PostMessage(m_hwndParent, WIZM_GOTOPAGE, IDD_PROGRESS, (LPARAM)new CProgressPageDlg());
+ }
+ else if (IsDlgButtonChecked(m_hwnd, IDC_RADIO_CUSTOM))
+ PostMessage(m_hwndParent, WIZM_GOTOPAGE, IDD_ADVOPTIONS, (LPARAM)new CMirandaAdvOptionsPageDlg());
}
//=======================================================================================
@@ -221,126 +208,138 @@ static const UINT InControls[] = { IDC_IN_MSG, IDC_IN_URL, IDC_IN_FT, IDC_IN_OTH
static const UINT OutControls[] = { IDC_OUT_MSG, IDC_OUT_URL, IDC_OUT_FT, IDC_OUT_OTHER };
static const UINT SysControls[] = { IDC_CONTACTS, IDC_SYSTEM };
-INT_PTR CALLBACK MirandaAdvOptionsPageProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM)
+CMirandaAdvOptionsPageDlg::CMirandaAdvOptionsPageDlg() :
+ CWizardPageDlg(IDD_ADVOPTIONS),
+ btnBack(this, IDC_BACK),
+ chkFT(this, IDC_FT),
+ chkAll(this, IDC_ALL),
+ chkMsg(this, IDC_MSG),
+ chkUrl(this, IDC_URL),
+ chkOther(this, IDC_OTHER),
+ chkSince(this, IDC_SINCE),
+ chkOutgoing(this, IDC_OUTGOING),
+ chkIncoming(this, IDC_INCOMING)
{
- switch (message) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- {
- dwSinceDate = db_get_dw(NULL, IMPORT_MODULE, "ImportSinceTS", time(0));
- struct tm *TM = localtime(&dwSinceDate);
-
- struct _SYSTEMTIME ST = { 0 };
- ST.wYear = TM->tm_year + 1900;
- ST.wMonth = TM->tm_mon + 1;
- ST.wDay = TM->tm_mday;
-
- DateTime_SetSystemtime(GetDlgItem(hwndDlg, IDC_DATETIMEPICKER), GDT_VALID, &ST);
- }
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDC_BACK:
- PostMessage(GetParent(hwndDlg), WIZM_GOTOPAGE, IDD_OPTIONS, (LPARAM)MirandaOptionsPageProc);
- break;
-
- case IDOK:
- g_iImportOptions = 0;
-
- if (IsDlgButtonChecked(hwndDlg, IDC_CONTACTS))
- g_iImportOptions |= IOPT_CONTACTS | IOPT_GROUPS;
- if (IsDlgButtonChecked(hwndDlg, IDC_SYSTEM))
- g_iImportOptions |= IOPT_SYSTEM;
-
- // incoming
- if (IsDlgButtonChecked(hwndDlg, IDC_IN_MSG))
- g_iImportOptions |= IOPT_MSGRECV;
- if (IsDlgButtonChecked(hwndDlg, IDC_IN_URL))
- g_iImportOptions |= IOPT_URLRECV;
- if (IsDlgButtonChecked(hwndDlg, IDC_IN_FT))
- g_iImportOptions |= IOPT_FILERECV;
- if (IsDlgButtonChecked(hwndDlg, IDC_IN_OTHER))
- g_iImportOptions |= IOPT_OTHERRECV;
-
- // outgoing
- if (IsDlgButtonChecked(hwndDlg, IDC_OUT_MSG))
- g_iImportOptions |= IOPT_MSGSENT;
- if (IsDlgButtonChecked(hwndDlg, IDC_OUT_URL))
- g_iImportOptions |= IOPT_URLSENT;
- if (IsDlgButtonChecked(hwndDlg, IDC_OUT_FT))
- g_iImportOptions |= IOPT_FILESENT;
- if (IsDlgButtonChecked(hwndDlg, IDC_OUT_OTHER))
- g_iImportOptions |= IOPT_OTHERSENT;
-
- // since date
- dwSinceDate = 0;
-
- if (IsDlgButtonChecked(hwndDlg, IDC_SINCE)) {
- struct _SYSTEMTIME ST = { 0 };
-
- if (DateTime_GetSystemtime(GetDlgItem(hwndDlg, IDC_DATETIMEPICKER), &ST) == GDT_VALID) {
- struct tm TM = { 0 };
-
- TM.tm_mday = ST.wDay;
- TM.tm_mon = ST.wMonth - 1;
- TM.tm_year = ST.wYear - 1900;
-
- dwSinceDate = mktime(&TM);
-
- db_set_dw(NULL, IMPORT_MODULE, "ImportSinceTS", dwSinceDate);
- }
- }
-
- if (g_iImportOptions)
- PostMessage(GetParent(hwndDlg), WIZM_GOTOPAGE, IDD_PROGRESS, (LPARAM)ProgressPageProc);
- break;
-
- case IDCANCEL:
- PostMessage(GetParent(hwndDlg), WM_CLOSE, 0, 0);
- break;
-
- case IDC_SINCE:
- EnableWindow(GetDlgItem(hwndDlg, IDC_DATETIMEPICKER), IsDlgButtonChecked(hwndDlg, IDC_SINCE));
- break;
-
- case IDC_ALL:
- case IDC_INCOMING:
- case IDC_OUTGOING:
- if (LOWORD(wParam) == IDC_ALL)
- for (auto &it : SysControls)
- CheckDlgButton(hwndDlg, it, IsDlgButtonChecked(hwndDlg, it) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
-
- if (LOWORD(wParam) != IDC_OUTGOING)
- for (auto &it : InControls)
- CheckDlgButton(hwndDlg, it, IsDlgButtonChecked(hwndDlg, it) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
-
- if (LOWORD(wParam) != IDC_INCOMING)
- for (auto &it : OutControls)
- CheckDlgButton(hwndDlg, it, IsDlgButtonChecked(hwndDlg, it) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
- break;
-
- case IDC_MSG:
- CheckDlgButton(hwndDlg, IDC_IN_MSG, IsDlgButtonChecked(hwndDlg, IDC_IN_MSG) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_OUT_MSG, IsDlgButtonChecked(hwndDlg, IDC_OUT_MSG) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
- break;
-
- case IDC_URL:
- CheckDlgButton(hwndDlg, IDC_IN_URL, IsDlgButtonChecked(hwndDlg, IDC_IN_URL) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_OUT_URL, IsDlgButtonChecked(hwndDlg, IDC_OUT_URL) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
- break;
-
- case IDC_FT:
- CheckDlgButton(hwndDlg, IDC_IN_FT, IsDlgButtonChecked(hwndDlg, IDC_IN_FT) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_OUT_FT, IsDlgButtonChecked(hwndDlg, IDC_OUT_FT) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
- break;
-
- case IDC_OTHER:
- CheckDlgButton(hwndDlg, IDC_IN_OTHER, IsDlgButtonChecked(hwndDlg, IDC_IN_OTHER) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
- CheckDlgButton(hwndDlg, IDC_OUT_OTHER, IsDlgButtonChecked(hwndDlg, IDC_OUT_OTHER) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
- break;
+ btnBack.OnClick = Callback(this, &CMirandaAdvOptionsPageDlg::onClick_Back);
+
+ chkSince.OnChange = Callback(this, &CMirandaAdvOptionsPageDlg::onChange_Since);
+ chkAll.OnChange = chkOutgoing.OnChange = chkIncoming.OnChange = Callback(this, &CMirandaAdvOptionsPageDlg::onChange_All);
+ chkMsg.OnChange = Callback(this, &CMirandaAdvOptionsPageDlg::onChange_Msg);
+ chkUrl.OnChange = Callback(this, &CMirandaAdvOptionsPageDlg::onChange_Url);
+ chkFT.OnChange = Callback(this, &CMirandaAdvOptionsPageDlg::onChange_FT);
+ chkOther.OnChange = Callback(this, &CMirandaAdvOptionsPageDlg::onChange_Other);
+}
+
+bool CMirandaAdvOptionsPageDlg::OnInitDialog()
+{
+ dwSinceDate = db_get_dw(NULL, IMPORT_MODULE, "ImportSinceTS", time(0));
+ struct tm *TM = localtime(&dwSinceDate);
+
+ struct _SYSTEMTIME ST = { 0 };
+ ST.wYear = TM->tm_year + 1900;
+ ST.wMonth = TM->tm_mon + 1;
+ ST.wDay = TM->tm_mday;
+ DateTime_SetSystemtime(GetDlgItem(m_hwnd, IDC_DATETIMEPICKER), GDT_VALID, &ST);
+ return true;
+}
+
+void CMirandaAdvOptionsPageDlg::onClick_Back(CCtrlButton*)
+{
+ PostMessage(m_hwndParent, WIZM_GOTOPAGE, 0, (LPARAM)new CMirandaOptionsPageDlg());
+}
+
+void CMirandaAdvOptionsPageDlg::OnNext()
+{
+ g_iImportOptions = 0;
+
+ if (IsDlgButtonChecked(m_hwnd, IDC_CONTACTS))
+ g_iImportOptions |= IOPT_CONTACTS | IOPT_GROUPS;
+ if (IsDlgButtonChecked(m_hwnd, IDC_SYSTEM))
+ g_iImportOptions |= IOPT_SYSTEM;
+
+ // incoming
+ if (IsDlgButtonChecked(m_hwnd, IDC_IN_MSG))
+ g_iImportOptions |= IOPT_MSGRECV;
+ if (IsDlgButtonChecked(m_hwnd, IDC_IN_URL))
+ g_iImportOptions |= IOPT_URLRECV;
+ if (IsDlgButtonChecked(m_hwnd, IDC_IN_FT))
+ g_iImportOptions |= IOPT_FILERECV;
+ if (IsDlgButtonChecked(m_hwnd, IDC_IN_OTHER))
+ g_iImportOptions |= IOPT_OTHERRECV;
+
+ // outgoing
+ if (IsDlgButtonChecked(m_hwnd, IDC_OUT_MSG))
+ g_iImportOptions |= IOPT_MSGSENT;
+ if (IsDlgButtonChecked(m_hwnd, IDC_OUT_URL))
+ g_iImportOptions |= IOPT_URLSENT;
+ if (IsDlgButtonChecked(m_hwnd, IDC_OUT_FT))
+ g_iImportOptions |= IOPT_FILESENT;
+ if (IsDlgButtonChecked(m_hwnd, IDC_OUT_OTHER))
+ g_iImportOptions |= IOPT_OTHERSENT;
+
+ // since date
+ dwSinceDate = 0;
+
+ if (chkSince.IsChecked()) {
+ struct _SYSTEMTIME ST = { 0 };
+
+ if (DateTime_GetSystemtime(GetDlgItem(m_hwnd, IDC_DATETIMEPICKER), &ST) == GDT_VALID) {
+ struct tm TM = { 0 };
+
+ TM.tm_mday = ST.wDay;
+ TM.tm_mon = ST.wMonth - 1;
+ TM.tm_year = ST.wYear - 1900;
+
+ dwSinceDate = mktime(&TM);
+
+ db_set_dw(NULL, IMPORT_MODULE, "ImportSinceTS", dwSinceDate);
}
- break;
}
- return FALSE;
+
+ if (g_iImportOptions)
+ PostMessage(m_hwndParent, WIZM_GOTOPAGE, 0, (LPARAM)new CProgressPageDlg());
+}
+
+void CMirandaAdvOptionsPageDlg::onChange_Since(CCtrlCheck*)
+{
+ EnableWindow(GetDlgItem(m_hwnd, IDC_DATETIMEPICKER), chkSince.IsChecked());
+}
+
+void CMirandaAdvOptionsPageDlg::onChange_All(CCtrlCheck *pCheck)
+{
+ if (pCheck->GetCtrlId() == IDC_ALL)
+ for (auto &it : SysControls)
+ CheckDlgButton(m_hwnd, it, IsDlgButtonChecked(m_hwnd, it) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+
+ if (pCheck->GetCtrlId() != IDC_OUTGOING)
+ for (auto &it : InControls)
+ CheckDlgButton(m_hwnd, it, IsDlgButtonChecked(m_hwnd, it) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+
+ if (pCheck->GetCtrlId() != IDC_INCOMING)
+ for (auto &it : OutControls)
+ CheckDlgButton(m_hwnd, it, IsDlgButtonChecked(m_hwnd, it) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+}
+
+void CMirandaAdvOptionsPageDlg::onChange_Msg(CCtrlCheck*)
+{
+ CheckDlgButton(m_hwnd, IDC_IN_MSG, IsDlgButtonChecked(m_hwnd, IDC_IN_MSG) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_OUT_MSG, IsDlgButtonChecked(m_hwnd, IDC_OUT_MSG) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+}
+
+void CMirandaAdvOptionsPageDlg::onChange_Url(CCtrlCheck*)
+{
+ CheckDlgButton(m_hwnd, IDC_IN_URL, IsDlgButtonChecked(m_hwnd, IDC_IN_URL) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_OUT_URL, IsDlgButtonChecked(m_hwnd, IDC_OUT_URL) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+}
+
+void CMirandaAdvOptionsPageDlg::onChange_FT(CCtrlCheck*)
+{
+ CheckDlgButton(m_hwnd, IDC_IN_FT, IsDlgButtonChecked(m_hwnd, IDC_IN_FT) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_OUT_FT, IsDlgButtonChecked(m_hwnd, IDC_OUT_FT) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+}
+
+void CMirandaAdvOptionsPageDlg::onChange_Other(CCtrlCheck*)
+{
+ CheckDlgButton(m_hwnd, IDC_IN_OTHER, IsDlgButtonChecked(m_hwnd, IDC_IN_OTHER) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(m_hwnd, IDC_OUT_OTHER, IsDlgButtonChecked(m_hwnd, IDC_OUT_OTHER) == BST_UNCHECKED ? BST_CHECKED : BST_UNCHECKED);
}