diff options
author | Kirill Volinsky <mataes2007@gmail.com> | 2018-03-09 02:05:20 +0300 |
---|---|---|
committer | Kirill Volinsky <mataes2007@gmail.com> | 2018-03-09 02:06:25 +0300 |
commit | fa5f0cd808f246bfb146efb233394296bed718fe (patch) | |
tree | 455e29e3174a9f9105bb615997f2f26152d9832f /plugins/NewsAggregator/Src/ExportImport.cpp | |
parent | af674186fdd23be4a293db0a66b21aa890ce2fd1 (diff) |
NewsAggregator: use m_gui (mostly working)
Diffstat (limited to 'plugins/NewsAggregator/Src/ExportImport.cpp')
-rw-r--r-- | plugins/NewsAggregator/Src/ExportImport.cpp | 689 |
1 files changed, 0 insertions, 689 deletions
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 |