summaryrefslogtreecommitdiff
path: root/plugins/NewsAggregator/Src
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/NewsAggregator/Src')
-rw-r--r--plugins/NewsAggregator/Src/NewsAggregator.cpp7
-rw-r--r--plugins/NewsAggregator/Src/Options.cpp35
-rw-r--r--plugins/NewsAggregator/Src/Options.h2
-rw-r--r--plugins/NewsAggregator/Src/Services.cpp29
-rw-r--r--plugins/NewsAggregator/Src/stdafx.h9
-rw-r--r--plugins/NewsAggregator/Src/version.h2
6 files changed, 38 insertions, 46 deletions
diff --git a/plugins/NewsAggregator/Src/NewsAggregator.cpp b/plugins/NewsAggregator/Src/NewsAggregator.cpp
index c96acd118c..e30d9b7f02 100644
--- a/plugins/NewsAggregator/Src/NewsAggregator.cpp
+++ b/plugins/NewsAggregator/Src/NewsAggregator.cpp
@@ -23,11 +23,12 @@ HINSTANCE hInst = nullptr;
int hLangpack;
HANDLE hPrebuildMenuHook = nullptr;
-CDlgBase *pAddFeedDialog = nullptr, *pChangeFeedDialog = nullptr, *pImportDialog = nullptr, *pExportDialog = nullptr;
-//MWindowList hChangeFeedDlgList = nullptr;
+CDlgBase *pAddFeedDialog = nullptr, *pImportDialog = nullptr, *pExportDialog = nullptr;
wchar_t tszRoot[MAX_PATH] = {0};
HANDLE hUpdateMutex;
+LIST<CFeedEditor> g_arFeeds(1, PtrKeySortT);
+
PLUGININFOEX pluginInfoEx = {
sizeof(PLUGININFOEX),
__PLUGIN_NAME,
@@ -62,7 +63,6 @@ extern "C" __declspec(dllexport) int Load(void)
HookEvent(ME_SYSTEM_PRESHUTDOWN, NewsAggrPreShutdown);
hUpdateMutex = CreateMutex(nullptr, FALSE, nullptr);
- //hChangeFeedDlgList = WindowList_Create();
// register weather protocol
PROTOCOLDESCRIPTOR pd = { 0 };
@@ -104,7 +104,6 @@ extern "C" __declspec(dllexport) int Load(void)
extern "C" __declspec(dllexport) int Unload(void)
{
- //WindowList_Destroy(hChangeFeedDlgList);
DestroyUpdateList();
CloseHandle(hUpdateMutex);
return 0;
diff --git a/plugins/NewsAggregator/Src/Options.cpp b/plugins/NewsAggregator/Src/Options.cpp
index 8abf2657e8..01b2262edc 100644
--- a/plugins/NewsAggregator/Src/Options.cpp
+++ b/plugins/NewsAggregator/Src/Options.cpp
@@ -687,7 +687,7 @@ void CFeedEditor::OnInitDialog()
m_checktime.SetMaxLength(3);
m_checktimespin.SetRange(999, 0);
- if (m_iItem > -1 && m_hContact == NULL) {
+ if (m_iItem > -1 && m_hContact == 0) {
wchar_t SelNick[MAX_PATH], SelUrl[MAX_PACKAGE_NAME];
m_list->GetItemText(m_iItem, 0, SelNick, _countof(SelNick));
m_list->GetItemText(m_iItem, 1, SelUrl, _countof(SelNick));
@@ -724,7 +724,7 @@ void CFeedEditor::OnInitDialog()
pass_ptrA pwd(db_get_sa(hContact, MODULE, "Password"));
m_password.SetTextA(pwd);
}
- //WindowList_Add(hChangeFeedDlgList, m_hwnd, hContact);
+ g_arFeeds.insert(this);
Utils_RestoreWindowPositionNoSize(m_hwnd, hContact, MODULE, "ChangeDlg");
break;
}
@@ -761,7 +761,7 @@ void CFeedEditor::OnInitDialog()
pass_ptrA pwd(db_get_sa(m_hContact, MODULE, "Password"));
m_password.SetTextA(pwd);
}
- //WindowList_Add(hChangeFeedDlgList, m_hwnd, m_hContact);
+ g_arFeeds.insert(this);
Utils_RestoreWindowPositionNoSize(m_hwnd, m_hContact, MODULE, "ChangeDlg");
}
}
@@ -860,10 +860,9 @@ void CFeedEditor::OnOk(CCtrlBase*)
void CFeedEditor::OnClose()
{
+ g_arFeeds.remove(this);
Utils_SaveWindowPosition(m_hwnd, NULL, MODULE, m_iItem == -1 ? "AddDlg" : "ChangeDlg");
- if (pChangeFeedDialog)
- pChangeFeedDialog = nullptr;
- if (pAddFeedDialog)
+ if (pAddFeedDialog == this)
pAddFeedDialog = nullptr;
}
@@ -950,19 +949,17 @@ void COptionsMain::OnAddButtonClick(CCtrlBase*)
{
if (pAddFeedDialog == nullptr) {
pAddFeedDialog = new CFeedEditor(-1, &m_feeds, NULL);
- pAddFeedDialog->Show();
pAddFeedDialog->SetParent(m_hwnd);
+ pAddFeedDialog->Show();
}
}
void COptionsMain::OnChangeButtonClick(CCtrlBase*)
{
- if (pChangeFeedDialog == nullptr) {
- int isel = m_feeds.GetSelectionMark();
- pChangeFeedDialog = new CFeedEditor(isel, &m_feeds, NULL);
- pChangeFeedDialog->Show();
- pChangeFeedDialog->SetParent(m_hwnd);
- }
+ int isel = m_feeds.GetSelectionMark();
+ CFeedEditor *pDlg = new CFeedEditor(isel, &m_feeds, NULL);
+ pDlg->SetParent(m_hwnd);
+ pDlg->Show();
}
void COptionsMain::OnDeleteButtonClick(CCtrlBase*)
@@ -1028,13 +1025,11 @@ void COptionsMain::OnFeedListItemChanged(CCtrlListView::TEventInfo *evt)
void COptionsMain::OnFeedListDoubleClick(CCtrlBase*)
{
- if (pChangeFeedDialog == nullptr) {
- int isel = m_feeds.GetHotItem();
- if (isel != -1) {
- pChangeFeedDialog = new CFeedEditor(isel, &m_feeds, NULL);
- pChangeFeedDialog->Show();
- pChangeFeedDialog->SetParent(m_hwnd);
- }
+ int isel = m_feeds.GetHotItem();
+ if (isel != -1) {
+ CFeedEditor *pDlg = new CFeedEditor(isel, &m_feeds, 0);
+ pDlg->SetParent(m_hwnd);
+ pDlg->Show();
}
}
diff --git a/plugins/NewsAggregator/Src/Options.h b/plugins/NewsAggregator/Src/Options.h
index 41d2274db5..51bafad7b3 100644
--- a/plugins/NewsAggregator/Src/Options.h
+++ b/plugins/NewsAggregator/Src/Options.h
@@ -64,6 +64,8 @@ protected:
public:
CFeedEditor(int iItem, CCtrlListView *m_list, MCONTACT Contact);
+
+ __inline MCONTACT getContact() const { return m_hContact; }
};
class CImportFeed : public CDlgBase
diff --git a/plugins/NewsAggregator/Src/Services.cpp b/plugins/NewsAggregator/Src/Services.cpp
index ad96232894..07a40ef28f 100644
--- a/plugins/NewsAggregator/Src/Services.cpp
+++ b/plugins/NewsAggregator/Src/Services.cpp
@@ -157,20 +157,19 @@ INT_PTR AddFeed(WPARAM, LPARAM)
INT_PTR ChangeFeed(WPARAM hContact, LPARAM)
{
- //HWND hChangeFeedDlg = WindowList_Find(hChangeFeedDlgList, hContact);
-
- if (pChangeFeedDialog == nullptr) {
- pChangeFeedDialog = new CFeedEditor(-1, nullptr, hContact);
- pChangeFeedDialog->Show();
+ CFeedEditor *pDlg = nullptr;
+ for (auto &it : g_arFeeds)
+ if (it->getContact() == hContact)
+ pDlg = it;
+
+ if (pDlg == nullptr) {
+ pDlg = new CFeedEditor(-1, nullptr, hContact);
+ pDlg->Show();
+ }
+ else {
+ SetForegroundWindow(pDlg->GetHwnd());
+ SetFocus(pDlg->GetHwnd());
}
-
- /*if (!hChangeFeedDlg) {
- hChangeFeedDlg = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_ADDFEED), nullptr, DlgProcChangeFeedMenu, hContact);
- ShowWindow(hChangeFeedDlg, SW_SHOW);
- } else {
- SetForegroundWindow(hChangeFeedDlg);
- SetFocus(hChangeFeedDlg);
- }*/
return 0;
}
@@ -179,8 +178,6 @@ INT_PTR ImportFeeds(WPARAM, LPARAM)
if (pImportDialog == nullptr)
pImportDialog = new CImportFeed(nullptr);
pImportDialog->Show();
-
- //CreateDialog(hInst, MAKEINTRESOURCE(IDD_FEEDIMPORT), nullptr, DlgProcImportOpts);
return 0;
}
@@ -189,8 +186,6 @@ INT_PTR ExportFeeds(WPARAM, LPARAM)
if (pExportDialog == nullptr)
pExportDialog = new CExportFeed();
pExportDialog->Show();
-
- //CreateDialog(hInst, MAKEINTRESOURCE(IDD_FEEDEXPORT), nullptr, DlgProcExportOpts);
return 0;
}
diff --git a/plugins/NewsAggregator/Src/stdafx.h b/plugins/NewsAggregator/Src/stdafx.h
index bbce47d74d..cc1978b908 100644
--- a/plugins/NewsAggregator/Src/stdafx.h
+++ b/plugins/NewsAggregator/Src/stdafx.h
@@ -60,14 +60,15 @@ Boston, MA 02111-1307, USA.
#define DEFAULT_UPDATE_TIME 60
extern HINSTANCE hInst;
-extern CDlgBase *pAddFeedDialog, *pChangeFeedDialog, *pImportDialog, *pExportDialog;
-//extern MWindowList hChangeFeedDlgList;
+extern CDlgBase *pAddFeedDialog, *pImportDialog, *pExportDialog;
extern HNETLIBUSER hNetlibUser;
extern UINT_PTR timerId;
+extern LIST<CFeedEditor> g_arFeeds;
// check if Feeds is currently updating
extern bool ThreadRunning;
extern bool UpdateListFlag;
extern wchar_t tszRoot[MAX_PATH];
+
struct ItemInfo
{
HWND hwndList;
@@ -90,7 +91,7 @@ extern UPDATELIST *UpdateListHead;
extern UPDATELIST *UpdateListTail;
void UpdateListAdd(MCONTACT hContact);
-void UpdateThreadProc(LPVOID AvatarCheck);
+void UpdateThreadProc(void*);
void DestroyUpdateList(void);
extern HANDLE hUpdateMutex;
@@ -167,4 +168,4 @@ MCONTACT GetContactByURL(const wchar_t *url);
// Enable/disable getting feed info
// WPARAM = LPARAM = NULL
-#define MS_NEWSAGGREGATOR_ENABLED "NewsAggregator/Enabled" \ No newline at end of file
+#define MS_NEWSAGGREGATOR_ENABLED "NewsAggregator/Enabled"
diff --git a/plugins/NewsAggregator/Src/version.h b/plugins/NewsAggregator/Src/version.h
index 3d2eb2d0a3..0654d0be1d 100644
--- a/plugins/NewsAggregator/Src/version.h
+++ b/plugins/NewsAggregator/Src/version.h
@@ -1,7 +1,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 1
#define __RELEASE_NUM 0
-#define __BUILD_NUM 3
+#define __BUILD_NUM 4
#include <stdver.h>