From fa5f0cd808f246bfb146efb233394296bed718fe Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Fri, 9 Mar 2018 02:05:20 +0300 Subject: NewsAggregator: use m_gui (mostly working) --- plugins/NewsAggregator/Src/ExportImport.cpp | 689 ---------------------------- 1 file changed, 689 deletions(-) delete mode 100644 plugins/NewsAggregator/Src/ExportImport.cpp (limited to 'plugins/NewsAggregator/Src/ExportImport.cpp') diff --git a/plugins/NewsAggregator/Src/ExportImport.cpp b/plugins/NewsAggregator/Src/ExportImport.cpp deleted file mode 100644 index b2c22b55d3..0000000000 --- a/plugins/NewsAggregator/Src/ExportImport.cpp +++ /dev/null @@ -1,689 +0,0 @@ -/* -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 "stdafx.h" - -INT_PTR CALLBACK DlgProcImportOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - HWND FeedsList = GetDlgItem(hwndDlg, IDC_FEEDSLIST); - HWND FeedsImportList = GetDlgItem(hwndDlg, IDC_FEEDSIMPORTLIST); - - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG)lParam); - Utils_RestoreWindowPositionNoSize(hwndDlg, NULL, MODULE, "ImportDlg"); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), FALSE); - return TRUE; - - case WM_COMMAND: - switch (LOWORD(wParam)) { - case IDOK: - { - wchar_t FileName[MAX_PATH]; - GetDlgItemText(hwndDlg, IDC_IMPORTFILEPATH, FileName, _countof(FileName)); - int bytesParsed = 0; - HXML hXml = xmlParseFile(FileName, &bytesParsed, nullptr); - if(hXml != nullptr) { - HWND hwndList = (HWND)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - bool isTextUTF = false, isURLUTF = false, isSiteURLUTF = false, isGroupUTF = false; - HXML node = xmlGetChildByPath(hXml, L"opml/body/outline", 0); - if ( !node) - node = xmlGetChildByPath(hXml, L"body/outline", 0); - int count = (int)SendMessage(FeedsImportList, LB_GETCOUNT, 0, 0); - int DUPES = 0; - if (node) { - while (node) { - int outlineAttr = xmlGetAttrCount(node); - int outlineChildsCount = xmlGetChildCount(node); - wchar_t *xmlUrl = (wchar_t *)xmlGetAttrValue(node, L"xmlUrl"); - if (!xmlUrl && !outlineChildsCount) { - HXML tmpnode = node; - node = xmlGetNextNode(node); - if ( !node) { - do { - node = tmpnode; - node = xmlGetParent(node); - tmpnode = node; - node = xmlGetNextNode(node); - if (node) - break; - } while (mir_wstrcmpi(xmlGetName(node), L"body")); - } - } - else if (!xmlUrl && outlineChildsCount) - node = xmlGetFirstChild(node); - else if (xmlUrl) { - wchar_t *text = nullptr, *url = nullptr, *siteurl = nullptr, *group = nullptr; - BYTE NeedToImport = FALSE; - for (int i = 0; i < outlineAttr; i++) { - if (!mir_wstrcmpi(xmlGetAttrName(node, i), L"text")) { - text = mir_utf8decodeW(_T2A(xmlGetAttrValue(node, xmlGetAttrName(node, i)))); - if (!text) { - isTextUTF = 0; - text = (wchar_t *)xmlGetAttrValue(node, xmlGetAttrName(node, i)); - } else - isTextUTF = 1; - - for (int j = 0; j < count; j++) { - wchar_t item[MAX_PATH]; - SendMessage(FeedsImportList, LB_GETTEXT, (WPARAM)j, (LPARAM)item); - if (!mir_wstrcmpi(item, text)) { - NeedToImport = TRUE; - break; - } - } - continue; - } - if (!mir_wstrcmpi(xmlGetAttrName(node, i), L"xmlUrl")) { - url = mir_utf8decodeW(_T2A(xmlGetAttrValue(node, xmlGetAttrName(node, i)))); - if ( !url) { - isURLUTF = false; - url = (wchar_t *)xmlGetAttrValue(node, xmlGetAttrName(node, i)); - } else - isURLUTF = true; - if (GetContactByURL(url) && NeedToImport) { - NeedToImport = FALSE; - DUPES++; - } - continue; - } - if (!mir_wstrcmpi(xmlGetAttrName(node, i), L"htmlUrl")) { - siteurl = mir_utf8decodeW(_T2A(xmlGetAttrValue(node, xmlGetAttrName(node, i)))); - if ( !siteurl) { - isSiteURLUTF = false; - siteurl = (wchar_t *)xmlGetAttrValue(node, xmlGetAttrName(node, i)); - } else - isSiteURLUTF = true; - continue; - } - if (text && url && siteurl) - break; - } - - if (NeedToImport) { - HXML parent = xmlGetParent(node); - wchar_t tmpgroup[1024]; - while (mir_wstrcmpi(xmlGetName(parent), L"body")) { - for (int i = 0; i < xmlGetAttrCount(parent); i++) { - if (!mir_wstrcmpi(xmlGetAttrName(parent, i), L"text")) { - if ( !group) - group = (wchar_t *)xmlGetAttrValue(parent, xmlGetAttrName(parent, i)); - else { - mir_snwprintf(tmpgroup, L"%s\\%s", xmlGetAttrValue(parent, xmlGetAttrName(parent, i)), group); - group = tmpgroup; - } - break; - } - } - parent = xmlGetParent(parent); - } - - wchar_t *ptszGroup = nullptr; - if (group) { - ptszGroup = mir_utf8decodeW(_T2A(group)); - if ( !ptszGroup) { - isGroupUTF = false; - ptszGroup = group; - } else - isGroupUTF = 1; - } - - MCONTACT hContact = db_add_contact(); - Proto_AddToContact(hContact, MODULE); - db_set_ws(hContact, MODULE, "Nick", text); - db_set_ws(hContact, MODULE, "URL", url); - db_set_ws(hContact, MODULE, "Homepage", siteurl); - db_set_b(hContact, MODULE, "CheckState", 1); - db_set_dw(hContact, MODULE, "UpdateTime", DEFAULT_UPDATE_TIME); - db_set_ws(hContact, MODULE, "MsgFormat", TAGSDEFAULT); - db_set_w(hContact, MODULE, "Status", CallProtoService(MODULE, PS_GETSTATUS, 0, 0)); - if (ptszGroup) { - db_set_ws(hContact, "CList", "Group", ptszGroup); - Clist_GroupCreate(0, ptszGroup); - } - if (isGroupUTF) - mir_free(ptszGroup); - } - if (isTextUTF) - mir_free(text); - if (isURLUTF) - mir_free(url); - if (isSiteURLUTF) - mir_free(siteurl); - - HXML tmpnode = node; - node = xmlGetNextNode(node); - if ( !node) { - do { - node = tmpnode; - node = xmlGetParent(node); - tmpnode = node; - node = xmlGetNextNode(node); - if (node) - break; - } - while (mir_wstrcmpi(xmlGetName(tmpnode), L"body")); - } - } - } - } - xmlDestroyNode(hXml); - if (hwndList) { - DeleteAllItems(hwndList); - UpdateList(hwndList); - } - wchar_t mes[MAX_PATH]; - if (DUPES) - mir_snwprintf(mes, TranslateT("Imported %d feed(s)\r\nNot imported %d duplicate(s)."), count - DUPES, DUPES); - else - mir_snwprintf(mes, TranslateT("Imported %d feed(s)."), count); - MessageBox(hwndDlg, mes, TranslateT("News Aggregator"), MB_OK | MB_ICONINFORMATION); - } - } - // fall through - case IDCANCEL: - DestroyWindow(hwndDlg); - break; - - case IDC_BROWSEIMPORTFILE: - { - wchar_t FileName[MAX_PATH]; - VARSW tszMirDir(L"%miranda_path%"); - - OPENFILENAME ofn = {0}; - ofn.lStructSize = sizeof(ofn); - wchar_t tmp[MAX_PATH]; - mir_snwprintf(tmp, L"%s (*.opml, *.xml)%c*.opml;*.xml%c%c", TranslateT("OPML files"), 0, 0, 0); - ofn.lpstrFilter = tmp; - ofn.hwndOwner = nullptr; - ofn.lpstrFile = FileName; - ofn.nMaxFile = MAX_PATH; - ofn.nMaxFileTitle = MAX_PATH; - ofn.Flags = OFN_HIDEREADONLY; - ofn.lpstrInitialDir = tszMirDir; - *FileName = '\0'; - ofn.lpstrDefExt = L""; - - if (GetOpenFileName(&ofn)) { - int bytesParsed = 0; - HXML hXml = xmlParseFile(FileName, &bytesParsed, nullptr); - if(hXml != nullptr) { - HXML node = xmlGetChildByPath(hXml, L"opml/body/outline", 0); - if ( !node) - node = xmlGetChildByPath(hXml, L"body/outline", 0); - if (node) { - while (node) { - int outlineAttr = xmlGetAttrCount(node); - int outlineChildsCount = xmlGetChildCount(node); - wchar_t *xmlUrl = (wchar_t *)xmlGetAttrValue(node, L"xmlUrl"); - if (!xmlUrl && !outlineChildsCount) { - HXML tmpnode = node; - node = xmlGetNextNode(node); - if ( !node) { - do { - node = tmpnode; - node = xmlGetParent(node); - tmpnode = node; - node = xmlGetNextNode(node); - if (node) - break; - } while (mir_wstrcmpi(xmlGetName(node), L"body")); - } - } - else if (!xmlUrl && outlineChildsCount) - node = xmlGetFirstChild(node); - else if (xmlUrl) { - for (int i = 0; i < outlineAttr; i++) { - if (!mir_wstrcmpi(xmlGetAttrName(node, i), L"text")) { - wchar_t *text = mir_utf8decodeW(_T2A(xmlGetAttrValue(node, xmlGetAttrName(node, i)))); - bool isTextUTF; - if (!text) { - isTextUTF = false; - text = (wchar_t *)xmlGetAttrValue(node, xmlGetAttrName(node, i)); - } else - isTextUTF = true; - SendMessage(FeedsList, LB_ADDSTRING, 0, (LPARAM)text); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), TRUE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), TRUE); - if (isTextUTF) - mir_free(text); - } - } - - - HXML tmpnode = node; - node = xmlGetNextNode(node); - if ( !node) { - do { - node = tmpnode; - node = xmlGetParent(node); - tmpnode = node; - node = xmlGetNextNode(node); - if (node) - break; - } while (mir_wstrcmpi(xmlGetName(tmpnode), L"body")); - } - } - } - } - else - MessageBox(hwndDlg, TranslateT("Not valid import file."), TranslateT("Error"), MB_OK | MB_ICONERROR); - xmlDestroyNode(hXml); - SetDlgItemText(hwndDlg, IDC_IMPORTFILEPATH, FileName); - } - else - MessageBox(hwndDlg, TranslateT("Not valid import file."), TranslateT("Error"), MB_OK | MB_ICONERROR); - - break; - } - break; - } - break; - - case IDC_ADDFEED: - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDOK))) - EnableWindow(GetDlgItem(hwndDlg, IDOK), TRUE); - int cursel = (int)SendMessage(FeedsList, LB_GETCURSEL, 0, 0); - wchar_t item[MAX_PATH]; - SendMessage(FeedsList, LB_GETTEXT, (WPARAM)cursel, (LPARAM)item); - SendMessage(FeedsImportList, LB_ADDSTRING, 0, (LPARAM)item); - SendMessage(FeedsList, LB_DELETESTRING, (WPARAM)cursel, 0); - if (!SendMessage(FeedsList, LB_GETCOUNT, 0, 0)) { - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), FALSE); - } - } - break; - - case IDC_REMOVEFEED: - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), TRUE); - int cursel = (int)SendMessage(FeedsImportList, LB_GETCURSEL, 0, 0); - wchar_t item[MAX_PATH]; - SendMessage(FeedsImportList, LB_GETTEXT, (WPARAM)cursel, (LPARAM)item); - SendMessage(FeedsList, LB_ADDSTRING, 0, (LPARAM)item); - SendMessage(FeedsImportList, LB_DELETESTRING, (WPARAM)cursel, 0); - if (!SendMessage(FeedsImportList, LB_GETCOUNT, 0, 0)) - { - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); - } - } - break; - - case IDC_ADDALLFEEDS: - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDOK))) - EnableWindow(GetDlgItem(hwndDlg, IDOK), TRUE); - int count = (int)SendMessage(FeedsList, LB_GETCOUNT, 0, 0); - for (int i = 0; i < count; i++) { - wchar_t item[MAX_PATH]; - SendMessage(FeedsList, LB_GETTEXT, (WPARAM)i, (LPARAM)item); - SendMessage(FeedsImportList, LB_ADDSTRING, 0, (LPARAM)item); - } - for (int i = count - 1; i > -1; i--) - SendMessage(FeedsList, LB_DELETESTRING, (WPARAM)i, 0); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), FALSE); - } - break; - - case IDC_REMOVEALLFEEDS: - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), TRUE); - int count = (int)SendMessage(FeedsImportList, LB_GETCOUNT, 0, 0); - for (int i = 0; i < count; i++) { - wchar_t item[MAX_PATH]; - SendMessage(FeedsImportList, LB_GETTEXT, (WPARAM)i, (LPARAM)item); - SendMessage(FeedsList, LB_ADDSTRING, 0, (LPARAM)item); - } - for (int i = count - 1; i > -1; i--) - SendMessage(FeedsImportList, LB_DELETESTRING, (WPARAM)i, 0); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); - } - break; - - case IDC_FEEDSLIST: - { - if (HIWORD(wParam) == LBN_DBLCLK) - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDOK))) - EnableWindow(GetDlgItem(hwndDlg, IDOK), TRUE); - int cursel = (int)SendMessage(FeedsList, LB_GETCURSEL, 0, 0); - wchar_t item[MAX_PATH]; - SendMessage(FeedsList, LB_GETTEXT, (WPARAM)cursel, (LPARAM)item); - SendMessage(FeedsImportList, LB_ADDSTRING, 0, (LPARAM)item); - SendMessage(FeedsList, LB_DELETESTRING, (WPARAM)cursel, 0); - if (!SendMessage(FeedsList, LB_GETCOUNT, 0, 0)) { - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), FALSE); - } - } - } - break; - - case IDC_FEEDSIMPORTLIST: - { - if (HIWORD(wParam) == LBN_DBLCLK) - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), TRUE); - int cursel = (int)SendMessage(FeedsImportList, LB_GETCURSEL, 0, 0); - wchar_t item[MAX_PATH]; - SendMessage(FeedsImportList, LB_GETTEXT, (WPARAM)cursel, (LPARAM)item); - SendMessage(FeedsList, LB_ADDSTRING, 0, (LPARAM)item); - SendMessage(FeedsImportList, LB_DELETESTRING, (WPARAM)cursel, 0); - if (!SendMessage(FeedsImportList, LB_GETCOUNT, 0, 0)) - { - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); - } - } - } - break; - } - break; - - case WM_CLOSE: - DestroyWindow(hwndDlg); - break; - - case WM_DESTROY: - Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "ImportDlg"); - break; - } - - return FALSE; -} - -INT_PTR CALLBACK DlgProcExportOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM) -{ - HWND FeedsList = GetDlgItem(hwndDlg, IDC_FEEDSLIST); - HWND FeedsExportList = GetDlgItem(hwndDlg, IDC_FEEDSEXPORTLIST); - - switch (msg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - Utils_RestoreWindowPositionNoSize(hwndDlg, NULL, MODULE, "ExportDlg"); - for (MCONTACT hContact = db_find_first(MODULE); hContact; hContact = db_find_next(hContact, MODULE)) { - wchar_t *message = db_get_wsa(hContact, MODULE, "Nick"); - if (message != nullptr) { - SendMessage(FeedsList, LB_ADDSTRING, 0, (LPARAM)message); - mir_free(message); - } - } - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); - if (!SendMessage(FeedsList, LB_GETCOUNT, 0, 0)) { - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), FALSE); - } - return TRUE; - - case WM_COMMAND: - switch (LOWORD(wParam)) { - case IDOK: - { - wchar_t FileName[MAX_PATH]; - VARSW tszMirDir(L"%miranda_path%"); - - OPENFILENAME ofn = {0}; - ofn.lStructSize = sizeof(ofn); - wchar_t tmp[MAX_PATH]; - mir_snwprintf(tmp, L"%s (*.opml)%c*.opml%c%c", TranslateT("OPML files"), 0, 0, 0); - ofn.lpstrFilter = tmp; - ofn.hwndOwner = nullptr; - ofn.lpstrFile = FileName; - ofn.nMaxFile = MAX_PATH; - ofn.nMaxFileTitle = MAX_PATH; - ofn.Flags = OFN_HIDEREADONLY | OFN_SHAREAWARE | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT; - ofn.lpstrInitialDir = tszMirDir; - *FileName = '\0'; - ofn.lpstrDefExt = L""; - - if (GetSaveFileName(&ofn)) { - HXML hXml = xmlCreateNode(L"opml", nullptr, FALSE); - xmlAddAttr(hXml, L"version", L"1.0"); - HXML header = xmlAddChild(hXml, L"head", nullptr); - xmlAddChild(header, L"title", L"Miranda NG NewsAggregator plugin export"); - header = xmlAddChild(hXml, L"body", nullptr); - - int count = (int)SendMessage(FeedsExportList, LB_GETCOUNT, 0, 0); - for (int i = 0; i < count; i++) { - wchar_t item[MAX_PATH]; - SendMessage(FeedsExportList, LB_GETTEXT, (WPARAM)i, (LPARAM)item); - MCONTACT hContact = GetContactByNick(item); - wchar_t - *title = db_get_wsa(hContact, MODULE, "Nick"), - *url = db_get_wsa(hContact, MODULE, "URL"), - *siteurl = db_get_wsa(hContact, MODULE, "Homepage"), - *group = db_get_wsa(hContact, "CList", "Group"); - - HXML elem = header; - if (group) - { - wchar_t *section = wcstok(group, L"\\"); - while (section != nullptr) - { - HXML existgroup = xmlGetChildByAttrValue(header, L"outline", L"title", section); - if ( !existgroup) - { - elem = xmlAddChild(elem, L"outline", nullptr); - xmlAddAttr(elem, L"title", section); - xmlAddAttr(elem, L"text", section); - } else { - elem = existgroup; - } - section = wcstok(nullptr, L"\\"); - } - elem = xmlAddChild(elem, L"outline", nullptr); - } - else - elem = xmlAddChild(elem, L"outline", nullptr); - xmlAddAttr(elem, L"text", title); - xmlAddAttr(elem, L"title", title); - xmlAddAttr(elem, L"type", L"rss"); - xmlAddAttr(elem, L"xmlUrl", url); - xmlAddAttr(elem, L"htmlUrl", siteurl); - - mir_free(title); - mir_free(url); - mir_free(siteurl); - mir_free(group); - } - xmlToFile(hXml, FileName, 1); - xmlDestroyNode(hXml); - } - } - // fall through - case IDCANCEL: - DestroyWindow(hwndDlg); - break; - - case IDC_ADDFEED: - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDOK))) - EnableWindow(GetDlgItem(hwndDlg, IDOK), TRUE); - int cursel = (int)SendMessage(FeedsList, LB_GETCURSEL, 0, 0); - wchar_t item[MAX_PATH]; - SendMessage(FeedsList, LB_GETTEXT, (WPARAM)cursel, (LPARAM)item); - SendMessage(FeedsExportList, LB_ADDSTRING, 0, (LPARAM)item); - SendMessage(FeedsList, LB_DELETESTRING, (WPARAM)cursel, 0); - if (!SendMessage(FeedsList, LB_GETCOUNT, 0, 0)) { - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), FALSE); - } - } - break; - - case IDC_REMOVEFEED: - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), TRUE); - int cursel = (int)SendMessage(FeedsExportList, LB_GETCURSEL, 0, 0); - wchar_t item[MAX_PATH]; - SendMessage(FeedsExportList, LB_GETTEXT, (WPARAM)cursel, (LPARAM)item); - SendMessage(FeedsList, LB_ADDSTRING, 0, (LPARAM)item); - SendMessage(FeedsExportList, LB_DELETESTRING, (WPARAM)cursel, 0); - if (!SendMessage(FeedsExportList, LB_GETCOUNT, 0, 0)) - { - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); - } - } - break; - - case IDC_ADDALLFEEDS: - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDOK))) - EnableWindow(GetDlgItem(hwndDlg, IDOK), TRUE); - int count = (int)SendMessage(FeedsList, LB_GETCOUNT, 0, 0); - for (int i = 0; i < count; i++) { - wchar_t item[MAX_PATH]; - SendMessage(FeedsList, LB_GETTEXT, (WPARAM)i, (LPARAM)item); - SendMessage(FeedsExportList, LB_ADDSTRING, 0, (LPARAM)item); - } - for (int i = count - 1; i > -1; i--) - SendMessage(FeedsList, LB_DELETESTRING, (WPARAM)i, 0); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), FALSE); - } - break; - - case IDC_REMOVEALLFEEDS: - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), TRUE); - int count = (int)SendMessage(FeedsExportList, LB_GETCOUNT, 0, 0); - for (int i = 0; i < count; i++) { - wchar_t item[MAX_PATH]; - SendMessage(FeedsExportList, LB_GETTEXT, (WPARAM)i, (LPARAM)item); - SendMessage(FeedsList, LB_ADDSTRING, 0, (LPARAM)item); - } - for (int i = count - 1; i > -1; i--) - SendMessage(FeedsExportList, LB_DELETESTRING, (WPARAM)i, 0); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); - } - break; - - case IDC_FEEDSLIST: - { - if (HIWORD(wParam) == LBN_DBLCLK) - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDOK))) - EnableWindow(GetDlgItem(hwndDlg, IDOK), TRUE); - int cursel = (int)SendMessage(FeedsList, LB_GETCURSEL, 0, 0); - wchar_t item[MAX_PATH]; - SendMessage(FeedsList, LB_GETTEXT, (WPARAM)cursel, (LPARAM)item); - SendMessage(FeedsExportList, LB_ADDSTRING, 0, (LPARAM)item); - SendMessage(FeedsList, LB_DELETESTRING, (WPARAM)cursel, 0); - if (!SendMessage(FeedsList, LB_GETCOUNT, 0, 0)) { - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), FALSE); - } - } - } - break; - - case IDC_FEEDSEXPORTLIST: - { - if (HIWORD(wParam) == LBN_DBLCLK) - { - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDFEED))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDFEED), TRUE); - if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS))) - EnableWindow(GetDlgItem(hwndDlg, IDC_ADDALLFEEDS), TRUE); - int cursel = (int)SendMessage(FeedsExportList, LB_GETCURSEL, 0, 0); - wchar_t item[MAX_PATH]; - SendMessage(FeedsExportList, LB_GETTEXT, (WPARAM)cursel, (LPARAM)item); - SendMessage(FeedsList, LB_ADDSTRING, 0, (LPARAM)item); - SendMessage(FeedsExportList, LB_DELETESTRING, (WPARAM)cursel, 0); - if (!SendMessage(FeedsExportList, LB_GETCOUNT, 0, 0)) - { - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEFEED), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVEALLFEEDS), FALSE); - EnableWindow(GetDlgItem(hwndDlg, IDOK), FALSE); - } - } - } - break; - } - break; - - case WM_CLOSE: - DestroyWindow(hwndDlg); - break; - - case WM_DESTROY: - Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "ExportDlg"); - break; - } - - return FALSE; -} \ No newline at end of file -- cgit v1.2.3