|
|
|
|
|
|
||
|
/****************************************************************************/ /**
**/ /** Copyright
(c) 2005 Diodia Software (http://www.diodia.com/) **/ /**
**/ /** Use in any
form with or without modification for commercial and non- **/ /** commercial
purposes is permitted. **/ /**
**/ /****************************************************************************/ #include "stdafx.h"
#include "RSS.h" #include "Helper.h" #include "ContextC.h" #include "DlgEditFeedC.h" #include "DlgManageFeedsC.h" #include "RssDownloaderC.h"
/****************************************************************************/ /* /* DESCRIPTION : DlgManageFeedsC constructor. /* /* RETURN VALUE: - /* /****************************************************************************/ IMPLEMENT_DYNAMIC(DlgManageFeedsC, CDialog) DlgManageFeedsC::DlgManageFeedsC(CWnd* pParent /*=NULL*/) : CDialog(DlgManageFeedsC::IDD, pParent) { }
/****************************************************************************/ /* /* DESCRIPTION : DlgManageFeedsC destructor. /* /* RETURN VALUE: - /* /****************************************************************************/ DlgManageFeedsC::~DlgManageFeedsC() { }
/****************************************************************************/ /* /* DESCRIPTION : Called by MFC to exchange and validate dialog data. /* /* RETURN VALUE: None /* /****************************************************************************/ void DlgManageFeedsC::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_FEEDLIST, mFeedList); DDX_Control(pDX, IDC_MINS, mMins); DDX_Control(pDX, IDOK, mOK); DDX_Control(pDX, IDC_DELETE, mDeleteButton); DDX_Control(pDX, IDC_EDIT, mEditButton); }
BEGIN_MESSAGE_MAP(DlgManageFeedsC, CDialog) ON_BN_CLICKED(IDC_ADD, OnBnClickedAdd) ON_BN_CLICKED(IDC_DELETE, OnBnClickedDelete) ON_BN_CLICKED(IDC_EDIT, OnBnClickedEdit) ON_BN_CLICKED(IDOK, OnBnClickedOk) ON_EN_CHANGE(IDC_MINS, OnEnChangeMins) ON_NOTIFY(LVN_ITEMCHANGED, IDC_FEEDLIST, OnLvnItemchangedFeedlist) END_MESSAGE_MAP()
/****************************************************************************/ /* /* DESCRIPTION : Fill feed list. /* /* RETURN VALUE: None /* /****************************************************************************/ void DlgManageFeedsC::FillList() { std::string Name; std::string Address; char NameVal[32]; char AddressVal[32]; int Index = 0; int ListIndex;
if (!RssDownloader.LockRegistry()) return;
mFeedList.SetRedraw(0);
while (true) { sprintf(NameVal, "Name%d", Index); sprintf(AddressVal, "Address%d", Index);
Name = RegistryReadString(HKEY_CURRENT_USER, REG_KEY "\\Feeds", NameVal); Address = RegistryReadString(HKEY_CURRENT_USER, REG_KEY "\\Feeds", AddressVal);
if (Name.empty() || Address.empty()) break;
ListIndex = mFeedList.InsertItem(LVIF_TEXT | LVIF_PARAM, mFeedList.GetItemCount(), Name.c_str(), 0, 0, 0, NULL);
mFeedList.SetItemText(ListIndex, 1, Address.c_str());
Index++; }
mFeedList.SetRedraw(1);
RssDownloader.UnlockRegistry(); }
/****************************************************************************/ /* /* DESCRIPTION : Handle dialog sensitivity. /* /* RETURN VALUE: None /* /****************************************************************************/ void DlgManageFeedsC::UpdateSensitivity() { CString Mins; int Count;
mMins.GetWindowText(Mins); Count = mFeedList.GetSelectedCount();
mOK.EnableWindow(atoi(Mins) > 0); mDeleteButton.EnableWindow(Count == 1); mEditButton.EnableWindow(Count == 1); }
/****************************************************************************/ /* /* DESCRIPTION : Message handler. /* /* RETURN VALUE: None /* /****************************************************************************/ BOOL DlgManageFeedsC::OnInitDialog() { char Mins[64];
CDialog::OnInitDialog();
DWORD Style = mFeedList.GetExtendedStyle(); Style |= LVS_EX_FULLROWSELECT; mFeedList.SetExtendedStyle(Style);
mFeedList.InsertColumn(0, _T("Name"), LVCFMT_LEFT, 120); mFeedList.InsertColumn(1, _T("Address"), LVCFMT_LEFT, 271);
if (RegistryReadInt(HKEY_CURRENT_USER, REG_KEY, "UpdateFrequency") > 0) sprintf(Mins, "%d", RegistryReadInt(HKEY_CURRENT_USER, REG_KEY, "UpdateFrequency")); else strcpy(Mins, "5");
mMins.SetWindowText(Mins);
FillList();
return TRUE; }
/****************************************************************************/ /* /* DESCRIPTION : Message handler. /* /* RETURN VALUE: None /* /****************************************************************************/ void DlgManageFeedsC::OnBnClickedAdd() { DlgEditFeedC Dlg; int ListIndex;
Dlg.mIsAdd = true;
if (Dlg.DoModal() != IDOK) return;
mFeedList.SetRedraw(0);
ListIndex = mFeedList.InsertItem(LVIF_TEXT | LVIF_PARAM, mFeedList.GetItemCount(), Dlg.mName, 0, 0, 0, NULL);
mFeedList.SetItemText(ListIndex, 1, Dlg.mAddress);
mFeedList.SetRedraw(1); }
/****************************************************************************/ /* /* DESCRIPTION : Message handler. /* /* RETURN VALUE: None /* /****************************************************************************/ void DlgManageFeedsC::OnBnClickedDelete() { int Count; int *SelItems; int Index; POSITION Pos;
Count = mFeedList.GetSelectedCount(); if (Count <= 0) return;
SelItems = new int[Count]; Index = 0;
Pos = mFeedList.GetFirstSelectedItemPosition(); while (Pos && Index < Count) SelItems[Index++] = mFeedList.GetNextSelectedItem(Pos);
for (Index = Count - 1; Index >= 0; Index--) mFeedList.DeleteItem(SelItems[Index]);
mFeedList.SetFocus();
if (SelItems[Count - 1] < (int) mFeedList.GetItemCount()) mFeedList.SetItemState(SelItems[Count - 1], LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
delete[] SelItems;
UpdateSensitivity(); }
/****************************************************************************/ /* /* DESCRIPTION : Message handler. /* /* RETURN VALUE: None /* /****************************************************************************/ void DlgManageFeedsC::OnBnClickedEdit() { DlgEditFeedC Dlg; int Count; int SelItem; POSITION Pos;
Count = mFeedList.GetSelectedCount(); if (Count != 1) return;
Pos = mFeedList.GetFirstSelectedItemPosition(); if (!Pos) return;
SelItem = mFeedList.GetNextSelectedItem(Pos);
Dlg.mName = mFeedList.GetItemText(SelItem, 0); Dlg.mAddress = mFeedList.GetItemText(SelItem, 1);
if (Dlg.DoModal() != IDOK) return;
mFeedList.SetItemText(SelItem, 0, Dlg.mName); }
/****************************************************************************/ /* /* DESCRIPTION : Message handler. /* /* RETURN VALUE: None /* /****************************************************************************/ void DlgManageFeedsC::OnBnClickedOk() { CString Mins; char NameVal[32]; char AddressVal[32]; int Index = 0;
mMins.GetWindowText(Mins);
RegistrySaveInt(HKEY_CURRENT_USER, REG_KEY, "UpdateFrequency", atoi(Mins));
RegDeleteKey(HKEY_CURRENT_USER, REG_KEY "\\Feeds");
if (RssDownloader.LockRegistry()) { for (Index = 0; Index < mFeedList.GetItemCount(); Index++) { sprintf(NameVal, "Name%d", Index); sprintf(AddressVal, "Address%d", Index);
RegistrySaveString(HKEY_CURRENT_USER, REG_KEY "\\Feeds", NameVal, mFeedList.GetItemText(Index, 0)); RegistrySaveString(HKEY_CURRENT_USER, REG_KEY "\\Feeds", AddressVal, mFeedList.GetItemText(Index, 1)); }
RssDownloader.UnlockRegistry(); }
OnOK(); }
/****************************************************************************/ /* /* DESCRIPTION : Message handler. /* /* RETURN VALUE: None /* /****************************************************************************/ void DlgManageFeedsC::OnEnChangeMins() { UpdateSensitivity(); }
/****************************************************************************/ /* /* DESCRIPTION : Message handler. /* /* RETURN VALUE: None /* /****************************************************************************/ void DlgManageFeedsC::OnLvnItemchangedFeedlist(NMHDR *pNMHDR, LRESULT *pResult) { UpdateSensitivity(); *pResult = 0; }
|
Source Files Commands.cpp Context.cpp CreatePath.cpp DateParser.cpp DlgEditFeedC.cpp DlgManageFeedsC.cpp Hook.cpp Iso8601.cpp MsXmlMisc.cpp MsXmlSelect.cpp RegistryNotify.cpp RegistryUtil.cpp RSS.cpp RSS.def RSS.idl RssAction.cpp RssDownloader.cpp RssFeed.cpp RssHelpers.cpp RssInit.cpp RssItem.cpp RssMultiFeed.cpp RssTimer.cpp RssXml.cpp StdAfx.cpp Header Files Commands.h ContextC.h DateParser.h DlgEditFeedC.h DlgManageFeedsC.h Helper.h HookC.h RegistryNotify.h RegistryNotifyC.h Resource.h RssDownloaderC.h RssFeedC.h RssHelpers.h RssItemC.h RssMultiFeedC.h StdAfx.h ThreadObject.h XmlHelpers.h Resource Files about.htm DiodiaLogoSmall.gif logo.bmp manifest.xml read.bmp RSS.rc RSS.rgs ToolBandLayout.xml |
|
|
© 2002-2008 Diodia Software |
||