From ab2438d317799cc265c6f392f877947c61ecd585 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Mon, 4 Jun 2012 12:56:59 +0000 Subject: typo fix git-svn-id: http://svn.miranda-ng.org/main/trunk@297 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/NewsAggregator/Src/Options.cpp | 649 +++++++++++++++++++++++++++++++++ 1 file changed, 649 insertions(+) create mode 100644 plugins/NewsAggregator/Src/Options.cpp (limited to 'plugins/NewsAggregator/Src/Options.cpp') diff --git a/plugins/NewsAggregator/Src/Options.cpp b/plugins/NewsAggregator/Src/Options.cpp new file mode 100644 index 0000000000..b9dc78b90c --- /dev/null +++ b/plugins/NewsAggregator/Src/Options.cpp @@ -0,0 +1,649 @@ +/* +Copyright (C) 2012 Mataes + +This is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + +#include "common.h" + +INT_PTR CALLBACK DlgProcAddFeedOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + TranslateDialogDefault(hwndDlg); + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); + SetWindowText(hwndDlg, TranslateT("Add Feed")); + SetDlgItemText(hwndDlg, IDC_FEEDURL, _T("http://")); + SetDlgItemText(hwndDlg, IDC_TAGSEDIT, _T(TAGSDEFAULT)); + SendDlgItemMessage(hwndDlg, IDC_CHECKTIME, EM_LIMITTEXT, 3, 0); + SetDlgItemInt(hwndDlg, IDC_CHECKTIME, 60, TRUE); + SendDlgItemMessage(hwndDlg, IDC_TIMEOUT_VALUE_SPIN, UDM_SETRANGE32, 0, 999); + Utils_RestoreWindowPositionNoSize(hwndDlg,NULL,MODULE,"AddDlg"); + return TRUE; + } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDOK: + { + TCHAR str[MAX_PATH]; + if (!GetDlgItemText(hwndDlg, IDC_FEEDTITLE, str, SIZEOF(str))) + { + MessageBox(hwndDlg, TranslateT("Enter Feed name"), TranslateT("Error"), MB_OK); + break; + } + else if (!GetDlgItemText(hwndDlg, IDC_FEEDURL, str, SIZEOF(str)) || lstrcmp(str, _T("http://")) == 0) + { + MessageBox(hwndDlg, TranslateT("Enter Feed URL"), TranslateT("Error"), MB_OK); + break; + } + else if (GetDlgItemInt(hwndDlg, IDC_CHECKTIME, false, false) < 0) + { + MessageBox(hwndDlg, TranslateT("Enter checking interval"), TranslateT("Error"), MB_OK); + break; + } + else if (!GetDlgItemText(hwndDlg, IDC_TAGSEDIT, str, SIZEOF(str))) + { + MessageBox(hwndDlg, TranslateT("Enter message format"), TranslateT("Error"), MB_OK); + break; + } + else + { + HANDLE hContact = (HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0); + CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hContact, (LPARAM)MODULE); + GetDlgItemText(hwndDlg, IDC_FEEDTITLE, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "Nick", str); + HWND hwndList = (HWND)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + GetDlgItemText(hwndDlg, IDC_FEEDURL, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "URL", str); + DBWriteContactSettingByte(hContact, MODULE, "CheckState", 1); + DBWriteContactSettingDword(hContact, MODULE, "UpdateTime", GetDlgItemInt(hwndDlg, IDC_CHECKTIME, false, false)); + GetDlgItemText(hwndDlg, IDC_TAGSEDIT, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "MsgFormat", str); + DBWriteContactSettingWord(hContact, MODULE, "Status", CallProtoService(MODULE, PS_GETSTATUS, 0, 0)); + if (IsDlgButtonChecked(hwndDlg, IDC_USEAUTH)) + { + DBWriteContactSettingByte(hContact, MODULE, "UseAuth", 1); + GetDlgItemText(hwndDlg, IDC_LOGIN, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "Login", str); + GetDlgItemText(hwndDlg, IDC_PASSWORD, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "Password", str); + } + DeleteAllItems(hwndList); + UpdateList(hwndList); + } + } + + case IDCANCEL: + DestroyWindow(hwndDlg); + break; + + case IDC_USEAUTH: + { + if (IsDlgButtonChecked(hwndDlg, IDC_USEAUTH)) + { + EnableWindow(GetDlgItem(hwndDlg, IDC_LOGIN), TRUE); + EnableWindow(GetDlgItem(hwndDlg, IDC_PASSWORD), TRUE); + } + else + { + EnableWindow(GetDlgItem(hwndDlg, IDC_LOGIN), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_PASSWORD), FALSE); + } + } + break; + + case IDC_TAGHELP: + MessageBox(hwndDlg, TranslateT(TAGSHELP), TranslateT("Feed Tag Help"), MB_OK); + break; + + case IDC_RESET: + if (MessageBox(hwndDlg, TranslateT("Are you sure?"), TranslateT("Tags Mask Reset"), MB_YESNO | MB_ICONWARNING) == IDYES) + SetDlgItemText(hwndDlg, IDC_TAGSEDIT, _T(TAGSDEFAULT)); + break; + + case IDC_DISCOVERY: + { + EnableWindow(GetDlgItem(hwndDlg, IDC_DISCOVERY), FALSE); + SetDlgItemText(hwndDlg, IDC_DISCOVERY, TranslateT("Wait...")); + TCHAR tszURL[MAX_PATH] = {0}, *tszTitle = NULL; + if (GetDlgItemText(hwndDlg, IDC_FEEDURL, tszURL, SIZEOF(tszURL)) || lstrcmp(tszURL, _T("http://")) != 0) + tszTitle = CheckFeed(tszURL, hwndDlg); + else + MessageBox(hwndDlg, TranslateT("Enter Feed URL"), TranslateT("Error"), MB_OK); + SetDlgItemText(hwndDlg, IDC_FEEDTITLE, tszTitle); + EnableWindow(GetDlgItem(hwndDlg, IDC_DISCOVERY), TRUE); + SetDlgItemText(hwndDlg, IDC_DISCOVERY, TranslateT("Check Feed")); + } + break; + } + break; + } + case WM_CLOSE: + { + DestroyWindow(hwndDlg); + break; + } + case WM_DESTROY: + { + Utils_SaveWindowPosition(hwndDlg,NULL,MODULE,"AddDlg"); + } + } + + return FALSE; +} + +INT_PTR CALLBACK DlgProcChangeFeedOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + TranslateDialogDefault(hwndDlg); + ItemInfo &SelItem = *(ItemInfo*)lParam; + ItemInfo *nSelItem = new ItemInfo(SelItem); + SetWindowText(hwndDlg, TranslateT("Change Feed")); + SendDlgItemMessage(hwndDlg, IDC_CHECKTIME, EM_LIMITTEXT, 3, 0); + SendDlgItemMessage(hwndDlg, IDC_TIMEOUT_VALUE_SPIN, UDM_SETRANGE32, 0, 999); + + HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact != NULL) + { + if (IsMyContact(hContact)) + { + DBVARIANT dbNick = {0}; + if (DBGetContactSettingTString(hContact, MODULE, "Nick", &dbNick)) + continue; + else if (lstrcmp(dbNick.ptszVal, SelItem.nick) == 0) + { + DBFreeVariant(&dbNick); + DBVARIANT dbURL = {0}; + if (DBGetContactSettingTString(hContact, MODULE, "URL", &dbURL)) + continue; + else if (lstrcmp(dbURL.ptszVal, SelItem.url) == 0) + { + DBFreeVariant(&dbURL); + nSelItem->hContact = hContact; + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG)nSelItem); + SetDlgItemText(hwndDlg, IDC_FEEDURL, SelItem.url); + SetDlgItemText(hwndDlg, IDC_FEEDTITLE, SelItem.nick); + SetDlgItemInt(hwndDlg, IDC_CHECKTIME, DBGetContactSettingDword(hContact, MODULE, "UpdateTime", 60), TRUE); + DBVARIANT dbMsg = {0}; + if (!DBGetContactSettingTString(hContact, MODULE, "MsgFormat", &dbMsg)) + { + SetDlgItemText(hwndDlg, IDC_TAGSEDIT, dbMsg.ptszVal); + DBFreeVariant(&dbMsg); + } + if (DBGetContactSettingByte(hContact, MODULE, "UseAuth", 0)) + { + CheckDlgButton(hwndDlg, IDC_USEAUTH, BST_CHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_LOGIN), TRUE); + EnableWindow(GetDlgItem(hwndDlg, IDC_PASSWORD), TRUE); + DBVARIANT dbLogin = {0}; + if (!DBGetContactSettingTString(hContact, MODULE, "Login", &dbLogin)) + { + SetDlgItemText(hwndDlg, IDC_LOGIN, dbLogin.ptszVal); + DBFreeVariant(&dbLogin); + } + DBVARIANT dbPass = {0}; + if (!DBGetContactSettingTString(hContact, MODULE, "Password", &dbPass)) + { + SetDlgItemText(hwndDlg, IDC_PASSWORD, dbPass.ptszVal); + DBFreeVariant(&dbPass); + } + } + break; + } + DBFreeVariant(&dbURL); + } + DBFreeVariant(&dbNick); + } + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); + } + WindowList_Add(hChangeFeedDlgList,hwndDlg,hContact); + Utils_RestoreWindowPositionNoSize(hwndDlg,hContact,MODULE,"ChangeDlg"); + return TRUE; + } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDOK: + { + ItemInfo *SelItem = (ItemInfo*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + TCHAR str[MAX_PATH]; + if (!GetDlgItemText(hwndDlg, IDC_FEEDTITLE, str, SIZEOF(str))) + { + MessageBox(hwndDlg, TranslateT("Enter Feed name"), TranslateT("Error"), MB_OK); + break; + } + else if (!GetDlgItemText(hwndDlg, IDC_FEEDURL, str, SIZEOF(str)) || lstrcmp(str, _T("http://")) == 0) + { + MessageBox(hwndDlg, TranslateT("Enter Feed URL"), TranslateT("Error"), MB_OK); + break; + } + else if (GetDlgItemInt(hwndDlg, IDC_CHECKTIME, false, false) < 0) + { + MessageBox(hwndDlg, TranslateT("Enter checking interval"), TranslateT("Error"), MB_OK); + break; + } + else if (!GetDlgItemText(hwndDlg, IDC_TAGSEDIT, str, SIZEOF(str))) + { + MessageBox(hwndDlg, TranslateT("Enter message format"), TranslateT("Error"), MB_OK); + break; + } + else + { + GetDlgItemText(hwndDlg, IDC_FEEDURL, str, SIZEOF(str)); + DBWriteContactSettingTString(SelItem->hContact, MODULE, "URL", str); + GetDlgItemText(hwndDlg, IDC_FEEDTITLE, str, SIZEOF(str)); + DBWriteContactSettingTString(SelItem->hContact, MODULE, "Nick", str); + DBWriteContactSettingDword(SelItem->hContact, MODULE, "UpdateTime", GetDlgItemInt(hwndDlg, IDC_CHECKTIME, false, false)); + GetDlgItemText(hwndDlg, IDC_TAGSEDIT, str, SIZEOF(str)); + DBWriteContactSettingTString(SelItem->hContact, MODULE, "MsgFormat", str); + if (IsDlgButtonChecked(hwndDlg, IDC_USEAUTH)) + { + DBWriteContactSettingByte(SelItem->hContact, MODULE, "UseAuth", 1); + GetDlgItemText(hwndDlg, IDC_LOGIN, str, SIZEOF(str)); + DBWriteContactSettingTString(SelItem->hContact, MODULE, "Login", str); + GetDlgItemText(hwndDlg, IDC_PASSWORD, str, SIZEOF(str)); + DBWriteContactSettingTString(SelItem->hContact, MODULE, "Password", str); + } + DeleteAllItems(SelItem->hwndList); + UpdateList(SelItem->hwndList); + } + } + + case IDCANCEL: + DestroyWindow(hwndDlg); + break; + + case IDC_USEAUTH: + { + if (IsDlgButtonChecked(hwndDlg, IDC_USEAUTH)) + { + EnableWindow(GetDlgItem(hwndDlg, IDC_LOGIN), TRUE); + EnableWindow(GetDlgItem(hwndDlg, IDC_PASSWORD), TRUE); + } + else + { + EnableWindow(GetDlgItem(hwndDlg, IDC_LOGIN), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_PASSWORD), FALSE); + } + break; + } + + case IDC_TAGHELP: + MessageBox(hwndDlg, TranslateT(TAGSHELP), TranslateT("Feed Tag Help"), MB_OK); + break; + + case IDC_RESET: + if (MessageBox(hwndDlg, TranslateT("Are you sure?"), TranslateT("Tags Mask Reset"), MB_YESNO | MB_ICONWARNING) == IDYES) + SetDlgItemText(hwndDlg, IDC_TAGSEDIT, _T(TAGSDEFAULT)); + break; + + case IDC_DISCOVERY: + { + TCHAR tszURL[MAX_PATH] = {0}; + if (GetDlgItemText(hwndDlg, IDC_FEEDURL, tszURL, SIZEOF(tszURL)) || lstrcmp(tszURL, _T("http://")) != 0) + { + EnableWindow(GetDlgItem(hwndDlg, IDC_DISCOVERY), FALSE); + SetDlgItemText(hwndDlg, IDC_DISCOVERY, TranslateT("Wait...")); + TCHAR *tszTitle = CheckFeed(tszURL, hwndDlg); + SetDlgItemText(hwndDlg, IDC_FEEDTITLE, tszTitle); + EnableWindow(GetDlgItem(hwndDlg, IDC_DISCOVERY), TRUE); + SetDlgItemText(hwndDlg, IDC_DISCOVERY, TranslateT("Check Feed")); + } + else + MessageBox(hwndDlg, TranslateT("Enter Feed URL"), TranslateT("Error"), MB_OK); + } + break; + } + break; + } + + case WM_CLOSE: + { + DestroyWindow(hwndDlg); + break; + } + + case WM_DESTROY: + { + HANDLE hContact = (HANDLE) GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + Utils_SaveWindowPosition(hwndDlg,hContact,MODULE,"ChangeDlg"); + WindowList_Remove(hChangeFeedDlgList,hwndDlg); + ItemInfo *SelItem = (ItemInfo*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + delete SelItem; + break; + } + } + + return FALSE; +} + +INT_PTR CALLBACK DlgProcChangeFeedMenu(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + TranslateDialogDefault(hwndDlg); + SetWindowText(hwndDlg, TranslateT("Change Feed")); + SendDlgItemMessage(hwndDlg, IDC_CHECKTIME, UDM_SETRANGE32, 0, 999); + + HANDLE hContact = (HANDLE)lParam; + WindowList_Add(hChangeFeedDlgList,hwndDlg,hContact); + Utils_RestoreWindowPositionNoSize(hwndDlg,hContact,MODULE,"ChangeDlg"); + DBVARIANT dbNick = {0}; + if (!DBGetContactSettingTString(hContact, MODULE, "Nick", &dbNick)) + { + SetDlgItemText(hwndDlg, IDC_FEEDTITLE, dbNick.ptszVal); + DBFreeVariant(&dbNick); + DBVARIANT dbURL = {0}; + if (!DBGetContactSettingTString(hContact, MODULE, "URL", &dbURL)) + { + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG)lParam); + SetDlgItemText(hwndDlg, IDC_FEEDURL, dbURL.ptszVal); + DBFreeVariant(&dbURL); + SetDlgItemInt(hwndDlg, IDC_CHECKTIME, DBGetContactSettingDword(hContact, MODULE, "UpdateTime", 60), TRUE); + DBVARIANT dbMsg = {0}; + if (!DBGetContactSettingTString(hContact, MODULE, "MsgFormat", &dbMsg)) + { + SetDlgItemText(hwndDlg, IDC_TAGSEDIT, dbMsg.ptszVal); + DBFreeVariant(&dbMsg); + } + if (DBGetContactSettingByte(hContact, MODULE, "UseAuth", 0)) + { + CheckDlgButton(hwndDlg, IDC_USEAUTH, BST_CHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_LOGIN), TRUE); + EnableWindow(GetDlgItem(hwndDlg, IDC_PASSWORD), TRUE); + DBVARIANT dbLogin = {0}; + if (!DBGetContactSettingTString(hContact, MODULE, "Login", &dbLogin)) + { + SetDlgItemText(hwndDlg, IDC_LOGIN, dbLogin.ptszVal); + DBFreeVariant(&dbLogin); + } + DBVARIANT dbPass = {0}; + if (!DBGetContactSettingTString(hContact, MODULE, "Password", &dbPass)) + { + SetDlgItemText(hwndDlg, IDC_PASSWORD, dbPass.ptszVal); + DBFreeVariant(&dbPass); + } + } + break; + } + } + return TRUE; + } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDOK: + { + HANDLE hContact = (HANDLE)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + TCHAR str[MAX_PATH]; + if (!GetDlgItemText(hwndDlg, IDC_FEEDTITLE, str, SIZEOF(str))) + { + MessageBox(hwndDlg, TranslateT("Enter Feed name"), TranslateT("Error"), MB_OK); + break; + } + else if (!GetDlgItemText(hwndDlg, IDC_FEEDURL, str, SIZEOF(str)) || lstrcmp(str, _T("http://")) == 0) + { + MessageBox(hwndDlg, TranslateT("Enter Feed URL"), TranslateT("Error"), MB_OK); + break; + } + else if (GetDlgItemInt(hwndDlg, IDC_CHECKTIME, false, false) < 0) + { + MessageBox(hwndDlg, TranslateT("Enter checking interval"), TranslateT("Error"), MB_OK); + break; + } + else if (!GetDlgItemText(hwndDlg, IDC_TAGSEDIT, str, SIZEOF(str))) + { + MessageBox(hwndDlg, TranslateT("Enter message format"), TranslateT("Error"), MB_OK); + break; + } + else + { + GetDlgItemText(hwndDlg, IDC_FEEDURL, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "URL", str); + GetDlgItemText(hwndDlg, IDC_FEEDTITLE, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "Nick", str); + DBWriteContactSettingDword(hContact, MODULE, "UpdateTime", GetDlgItemInt(hwndDlg, IDC_CHECKTIME, false, false)); + GetDlgItemText(hwndDlg, IDC_TAGSEDIT, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "MsgFormat", str); + if (IsDlgButtonChecked(hwndDlg, IDC_USEAUTH)) + { + DBWriteContactSettingByte(hContact, MODULE, "UseAuth", 1); + GetDlgItemText(hwndDlg, IDC_LOGIN, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "Login", str); + GetDlgItemText(hwndDlg, IDC_PASSWORD, str, SIZEOF(str)); + DBWriteContactSettingTString(hContact, MODULE, "Password", str); + } + } + } + + case IDCANCEL: + DestroyWindow(hwndDlg); + break; + + case IDC_USEAUTH: + { + if (IsDlgButtonChecked(hwndDlg, IDC_USEAUTH)) + { + EnableWindow(GetDlgItem(hwndDlg, IDC_LOGIN), TRUE); + EnableWindow(GetDlgItem(hwndDlg, IDC_PASSWORD), TRUE); + } + else + { + EnableWindow(GetDlgItem(hwndDlg, IDC_LOGIN), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_PASSWORD), FALSE); + } + break; + } + + case IDC_TAGHELP: + MessageBox(hwndDlg, TranslateT(TAGSHELP), TranslateT("Feed Tag Help"), MB_OK); + break; + + case IDC_RESET: + if (MessageBox(hwndDlg, TranslateT("Are you sure?"), TranslateT("Tags Mask Reset"), MB_YESNO | MB_ICONWARNING) == IDYES) + SetDlgItemText(hwndDlg, IDC_TAGSEDIT, _T(TAGSDEFAULT)); + break; + + case IDC_DISCOVERY: + { + TCHAR tszURL[MAX_PATH] = {0}; + if (GetDlgItemText(hwndDlg, IDC_FEEDURL, tszURL, SIZEOF(tszURL)) || lstrcmp(tszURL, _T("http://")) != 0) + { + EnableWindow(GetDlgItem(hwndDlg, IDC_DISCOVERY), FALSE); + SetDlgItemText(hwndDlg, IDC_DISCOVERY, TranslateT("Wait...")); + TCHAR *tszTitle = CheckFeed(tszURL, hwndDlg); + SetDlgItemText(hwndDlg, IDC_FEEDTITLE, tszTitle); + EnableWindow(GetDlgItem(hwndDlg, IDC_DISCOVERY), TRUE); + SetDlgItemText(hwndDlg, IDC_DISCOVERY, TranslateT("Check Feed")); + } + else + MessageBox(hwndDlg, TranslateT("Enter Feed URL"), TranslateT("Error"), MB_OK); + } + break; + } + break; + } + + case WM_CLOSE: + { + DestroyWindow(hwndDlg); + break; + } + case WM_DESTROY: + { + HANDLE hContact = (HANDLE) GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + Utils_SaveWindowPosition(hwndDlg,hContact,MODULE,"ChangeDlg"); + WindowList_Remove(hChangeFeedDlgList,hwndDlg); + } + } + + return FALSE; +} + +INT_PTR CALLBACK UpdateNotifyOptsProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + HWND hwndList = GetDlgItem(hwndDlg, IDC_FEEDLIST); + switch (msg) + { + case WM_INITDIALOG: + { + TranslateDialogDefault(hwndDlg); + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); + CreateList(hwndList); + UpdateList(hwndList); + return TRUE; + } + + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDC_ADD: + { + CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADDFEED), hwndDlg, DlgProcAddFeedOpts, (LPARAM)hwndList); + } + return FALSE; + case IDC_CHANGE: + { + ItemInfo SelItem = {0}; + int sel = ListView_GetSelectionMark(hwndList); + ListView_GetItemText(hwndList, sel, 0, SelItem.nick, MAX_PATH); + ListView_GetItemText(hwndList, sel, 1, SelItem.url, MAX_PATH); + SelItem.hwndList = hwndList; + SelItem.SelNumber = sel; + CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADDFEED), hwndDlg, DlgProcChangeFeedOpts, (LPARAM)&SelItem); + } + return FALSE; + case IDC_REMOVE: + { + if (MessageBox(hwndDlg, TranslateT("Are you sure?"), TranslateT("Contact deleting"), MB_YESNO | MB_ICONWARNING) == IDYES) + { + TCHAR nick[MAX_PATH], url[MAX_PATH]; + int sel = ListView_GetSelectionMark(hwndList); + ListView_GetItemText(hwndList, sel, 0, nick, MAX_PATH); + ListView_GetItemText(hwndList, sel, 1, url, MAX_PATH); + + HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + while (hContact != NULL) + { + if(IsMyContact(hContact)) + { + DBVARIANT dbNick = {0}; + if (DBGetContactSettingTString(hContact, MODULE, "Nick", &dbNick)) + break; + else if (lstrcmp(dbNick.ptszVal, nick) == 0) + { + DBFreeVariant(&dbNick); + DBVARIANT dbURL = {0}; + if (DBGetContactSettingTString(hContact, MODULE, "URL", &dbURL)) + break; + else if (lstrcmp(dbURL.ptszVal, url) == 0) + { + DBFreeVariant(&dbURL); + CallService(MS_DB_CONTACT_DELETE, (WPARAM)hContact, 0); + ListView_DeleteItem(hwndList, sel); + break; + } + DBFreeVariant(&dbURL); + } + DBFreeVariant(&dbNick); + } + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); + } + } + return FALSE; + } + } + break; + } + case WM_NOTIFY: + { + NMHDR *hdr = (NMHDR *)lParam; + switch (hdr->code) + { + case PSN_APPLY: + { + HANDLE hContact= (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); + int i = 0; + while (hContact != NULL) + { + if(IsMyContact(hContact)) + { + DBWriteContactSettingByte(hContact, MODULE, "CheckState", ListView_GetCheckState(hwndList, i)); + i += 1; + } + hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0); + } + break; + } + + case NM_DBLCLK: + { + ItemInfo SelItem = {0}; + int sel = ListView_GetHotItem(hwndList); + if (sel != -1) + { + ListView_GetItemText(hwndList, sel, 0, SelItem.nick, MAX_PATH); + ListView_GetItemText(hwndList, sel, 1, SelItem.url, MAX_PATH); + SelItem.hwndList = hwndList; + SelItem.SelNumber = sel; + CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADDFEED), hwndDlg, DlgProcChangeFeedOpts, (LPARAM)&SelItem); + } + break; + } + + case LVN_ITEMCHANGED: + { + NMLISTVIEW *nmlv = (NMLISTVIEW *)lParam; + if (((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK) && !UpdateListFlag) + { + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + break; + } + } + } + }//end* switch (msg) + return FALSE; +} + +INT OptInit(WPARAM wParam, LPARAM lParam) +{ + OPTIONSDIALOGPAGE odp = {0}; + + ZeroMemory(&odp, sizeof(odp)); + odp.cbSize = sizeof(odp); + odp.position = 100000000; + odp.hInstance = hInst; + odp.flags = ODPF_TCHAR | ODPF_BOLDGROUPS; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS); + odp.ptszGroup = LPGENT("Network"); + odp.ptszTitle = LPGENT("News Aggregator"); + odp.pfnDlgProc = UpdateNotifyOptsProc; + CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp); + return 0; +} \ No newline at end of file -- cgit v1.2.3