亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mainfrm.cpp.svn-base

?? wince c++ 下 開發(fā)的 rss 閱讀器源代碼
?? SVN-BASE
?? 第 1 頁 / 共 5 頁
字號:
				// virtual folder (unread)
				CFeed *newFeed = si->Feed;
				CFeed *curFeed = UnreadItems.Feed;

				// we need to preserve new items for later caching
				CArray<CFeedItem *, CFeedItem *> newItems;
				FeedDiff(newFeed, curFeed, &newItems);

				m_wndFeedView.SetRedraw(FALSE);
				for (int j = 0; j < newItems.GetSize(); j++) {
					CFeedItem *fi = newItems.GetAt(j);
					if (!fi->IsDeleted() && (fi->IsNew() || fi->IsUnread())) {
						curFeed->Add(fi);
						m_wndFeedView.InsertItem(m_wndFeedView.GetItemCount(), fi);
					}
				}

				m_wndFeedView.SortItems();
				m_wndFeedView.SetRedraw(TRUE);
				m_wndFeedView.UpdateScrollBars();
				m_wndFeedView.Invalidate();

				UpdateSort();
			}
			else if (si == SiteList.GetAt(Config.ActSiteIdx)) {
				// just a site
				SelectSite(Config.ActSiteIdx);
			}
		}
	}
	else if (View == ArticleView) {
		if (Config.ActSiteIdx == SITE_UNREAD) {
			// TODO
		}
		else if (si == SiteList.GetAt(Config.ActSiteIdx)) {
			SelectSite(Config.ActSiteIdx);

			int selectedItem = -1;
			for (int i = 0; i < m_wndFeedView.GetItemCount(); i++) {
				if (m_wndFeedView.GetItem(i)->Hash.CompareNoCase(m_wndArticleView.m_pArticle->Hash) == 0) {
					selectedItem = i;
					break;
				}
			}

			m_wndFeedView.SelectItem(selectedItem);
			if (selectedItem != -1) m_wndFeedView.EnsureVisible(selectedItem);

			SetupBanner(m_wndArticleView.m_pArticle, selectedItem + 1, m_wndFeedView.GetItemCount());
		}
	}

	if (si != NULL) {
		// update item in summary view
		m_wndSummaryView.Invalidate(FALSE);
		UpdateTopBar();
	}

	return 0;
}

void CMainFrame::SaveSite(CSiteItem *si) {
	LOG0(5, "CMainFrame::SaveSite()");

	if (si != NULL && si->Info != NULL && si->Status == CSiteItem::Ok) {
		CString feedPathName = GetCacheFile(FILE_TYPE_FEED, Config.CacheLocation, si->Info->FileName);
		if (si->Feed != NULL) {
			si->Feed->Save(feedPathName);
			SaveSiteItemUnreadCount(si, SiteList.GetIndexOf(si));
			SaveSiteItemFlaggedCount(si, SiteList.GetIndexOf(si));
			si->SetModified(FALSE);
			NotifyTodayPlugin(UpdateFeedFlagsMessage, SiteList.GetIndexOf(si));
		}
	}
}

void CMainFrame::SaveSitesThread() {
	LOG0(1, "CMainFrame::SaveSitesThread() - start");

	// save everything in the list
	while (!SitesToSave.IsEmpty()) {
		CSiteItem *si = SitesToSave.GetHead();
		SaveSite(si);
		SitesToSave.RemoveHead();
	}

	CloseHandle(HSaveSitesThread);
	HSaveSitesThread = NULL;

	LOG0(1, "CMainFrame::SaveSitesThread() - end");
}

void CMainFrame::AddSiteToSave(int siteIdx) {
	if (siteIdx >= 0 && siteIdx < SiteList.GetCount())
		AddSiteToSave(SiteList.GetAt(siteIdx));
	else if (siteIdx == SITE_UNREAD)
		AddSiteToSave(&UnreadItems);
	else if (siteIdx == SITE_FLAGGED)
		AddSiteToSave(&FlaggedItems);
}

void CMainFrame::AddSiteToSave(CSiteItem *si) {
	LOG1(5, "CMainFrame::AddSiteToSave(%p)", si);

	if (si == NULL)
		return;

	if (si->Type == CSiteItem::VFolder) {
		CFeed *feed = si->Feed;
		if (feed != NULL) {
			for (int i = 0; i < feed->GetItemCount(); i++) {
				CFeedItem *fi = feed->GetItem(i);
				if (fi->SiteItem->IsModified() && SitesToSave.Find(fi->SiteItem) == NULL)
					SitesToSave.AddTail(fi->SiteItem);
			}
		}
	}
	else if (si->IsModified() && SitesToSave.Find(si) == NULL) {
		SitesToSave.AddTail(si);
	}

	// start the thread
	if (HSaveSitesThread == NULL && SitesToSave.GetCount() > 0) {
		HSaveSitesThread = CreateThread(NULL, 0, SaveSitesStubProc, this, 0, NULL);
	}
}

void CMainFrame::OnFileInformation() {
	LOG0(1, "CMainFrame::OnFileInformation()");


	HGROUPITEM hItem = m_wndSummaryView.GetSelectedItem();
	if (hItem == NULL)
		return;
	CSiteItem *si = (CSiteItem *) m_wndSummaryView.GetItemData(hItem);

	si->EnsureSiteLoaded();

	CInfoGeneralPg pgGeneral;
	CInfoChannelPg pgChannel;
	CInfoDescriptionPg pgDescription;

	CCePropertySheet sheet(_T(""));
	sheet.SetMenu(IDR_CANCEL);
	sheet.AddPage(&pgGeneral);

	// general
	if (si->Feed != NULL) {
		pgGeneral.m_nTotalItems = si->Feed->GetItemCount();
		pgGeneral.m_nNewItems = si->Feed->GetNewCount();
		pgGeneral.m_nUnreadItems = si->Feed->GetUnreadCount();
	}
	else {
		pgGeneral.m_nTotalItems = 0;
		pgGeneral.m_nNewItems = 0;
		pgGeneral.m_nUnreadItems = 0;
	}

	if (si->Type == CSiteItem::Site) {
		pgGeneral.m_strSiteName = si->Name;

		CString fileName = GetCacheFile(FILE_TYPE_FEED, Config.CacheLocation, si->Info->FileName);
		HANDLE hFile = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
		if (hFile != INVALID_HANDLE_VALUE) {
			// file size
			DWORD size = GetFileSize(hFile, NULL);
			if (size == 0xffffffff) size = 0;
			pgGeneral.m_nFileSize = size;

			// last update
			SYSTEMTIME stLastWrite;
			FILETIME lastWrite = { 0 };
			GetFileTime(hFile, NULL, NULL, &lastWrite);

			FILETIME lastWriteLocal = { 0 };
//			FileTimeToLocalFileTime(&lastWrite, &lastWriteLocal);
			FileTimeToSystemTime(&lastWrite, &stLastWrite);
			CloseHandle(hFile);

			pgGeneral.m_stLastUpdated = stLastWrite;
		}

		if (si->Feed != NULL)
			pgGeneral.m_stPublished = si->Feed->Published;

		// channel
		if (si->Status == CSiteItem::Ok && si->Feed != NULL)
			pgChannel.m_strFormat = si->Feed->Format;
		else
			pgChannel.m_strFormat.LoadString(IDS_UNKNOWN);

		if (si->Feed != NULL)
			pgChannel.m_strWWW = si->Feed->HtmlUrl;
		pgChannel.m_strRSS = si->Info->XmlUrl;

		// description
		if (si->Feed != NULL) {
			pgDescription.m_strDescription = si->Feed->Description;
			pgDescription.m_strCopyright = si->Feed->Copyright;
			pgDescription.m_strLanguage = si->Feed->Language;
		}

		sheet.AddPage(&pgChannel);
		sheet.AddPage(&pgDescription);
	}
	else if (si->Type == CSiteItem::VFolder) {
		pgGeneral.m_strSiteName = si->Name;
		pgGeneral.m_nFileSize = 0;

		memset(&pgGeneral.m_stLastUpdated, 0, sizeof(pgGeneral.m_stLastUpdated));
	}

	sheet.DoModal();
}

void CMainFrame::OnUpdateFileInformation(CCmdUI *pCmdUI) {
	HGROUPITEM hItem = m_wndSummaryView.GetSelectedItem();
	if (hItem != NULL) {
		CSiteItem *si = (CSiteItem *) m_wndSummaryView.GetItemData(hItem);
		pCmdUI->Enable(!Loading && (si->Type == CSiteItem::Site || si->Type == CSiteItem::VFolder));
	}
	else
		pCmdUI->Enable(FALSE);
}

void CMainFrame::OnFileProperties() {
	LOG0(1, "CMainFrame::OnFileProperties()");

	HGROUPITEM hItem = m_wndSummaryView.GetSelectedItem();
	if (hItem != NULL) {
		CSiteItem *si = (CSiteItem *) m_wndSummaryView.GetItemData(hItem);
		if (si->Type == CSiteItem::Site) {
			if (SiteProperties(si, this)) {
				int idx = SiteList.GetIndexOf(si);
				SaveSiteItem(si, idx);										// save changes
				NotifyTodayPlugin(ReloadSubscriptionsMessage, idx);			// notify today plugin
			}
		}
	}
}

void CMainFrame::OnUpdateFileProperties(CCmdUI *pCmdUI) {
	HGROUPITEM hItem = m_wndSummaryView.GetSelectedItem();
	if (hItem != NULL) {
		CSiteItem *si = (CSiteItem *) m_wndSummaryView.GetItemData(hItem);
		pCmdUI->Enable(!Loading && si->Type == CSiteItem::Site);
	}
	else
		pCmdUI->Enable(FALSE);
}

void CMainFrame::UpdateWorkOfflineMenu() {
	// mnu
	TBBUTTON tb;
	::SendMessage(m_hwndCmdBar, TB_GETBUTTON, 1, (LPARAM) &tb);

	CMenu mnu;
	mnu.Attach((HMENU) tb.dwData);

	CMenu *pOfflineMnu = mnu.GetSubMenu(2);		// offline menu
	if (pOfflineMnu != NULL) {
		UINT state = Config.WorkOffline ? MF_CHECKED : MF_UNCHECKED;
		pOfflineMnu->CheckMenuItem(ID_WORK_OFFLINE, state | MF_BYCOMMAND);
	}

	mnu.Detach();
}

void CMainFrame::OnFileWorkOffline() {
	LOG0(1, "CMainFrame::OnFileWorkOffline()");

	Config.WorkOffline = !Config.WorkOffline;
	Config.SaveUI();
	UpdateWorkOfflineMenu();
}

BOOL CMainFrame::CheckOnlineMode() {
	LOG0(3, "CMainFrame::CheckOnlineMode()");

	WorkOffline = Config.WorkOffline;
	if (Config.WorkOffline) {
		CString txt;
		txt.LoadString(IDS_GO_ONLINE);
		int res = AfxMessageBox(txt, MB_YESNO);
		if (res == IDNO)
			return FALSE;

		Config.WorkOffline = FALSE;
		UpdateWorkOfflineMenu();
	}

	return TRUE;
}

LRESULT CMainFrame::OnUpdateFinished(WPARAM wParam, LPARAM lParam) {
	Config.WorkOffline = WorkOffline;
	PostMessage(WM_CANCELMODE);
	UpdateMenu();
	UpdateWorkOfflineMenu();

	return 0;
}

void CMainFrame::OnFileCacheFlagged() {
	LOG0(1, "CMainFrame::OnFileCacheFlagged()");

	if (!CheckOnlineMode())
		return;

	CWaitCursor wait;
	for (int i = 0; i < SiteList.GetCount(); i++) {
		CSiteItem *si = SiteList.GetAt(i);

		si->EnsureSiteLoaded();
		if (si->Feed != NULL && si->Info != NULL) {
			BOOL cacheHtml, cacheImages, cacheEnclosures;
			if (si->Info->UseGlobalCacheOptions) {
				cacheHtml = Config.CacheHtml;
				cacheImages = Config.CacheImages;
			}
			else {
				cacheHtml = si->Info->CacheHtml;
				cacheImages = si->Info->CacheItemImages;
			}
			cacheEnclosures = si->Info->CacheEnclosures;

			CArray<CFeedItem *, CFeedItem *> items;
			// get flagged items in the feed
			for (int j = 0; j < si->Feed->GetItemCount(); j++) {
				CFeedItem *fi = si->Feed->GetItem(j);
				if (fi->IsFlagged())
					items.Add(fi);
			}

			if (cacheImages) m_wndUpdateBar.EnqueueImages(items);
			if (cacheHtml) m_wndUpdateBar.EnqueueHtmls(items);
			if (cacheEnclosures) m_wndUpdateBar.EnqueueEnclosures(items, si->Info->EnclosureLimit);
		}
	}

	m_wndUpdateBar.Redraw();
	m_wndUpdateBar.Start();
}

void CMainFrame::OnFileCacheUnread() {
	LOG0(1, "CMainFrame::OnFileCacheUnread()");

	if (!CheckOnlineMode())
		return;

	CWaitCursor wait;
	for (int i = 0; i < SiteList.GetCount(); i++) {
		CSiteItem *si = SiteList.GetAt(i);

		si->EnsureSiteLoaded();
		if (si->Feed != NULL && si->Info != NULL) {
			//
			BOOL cacheHtml, cacheImages, cacheEnclosures;
			if (si->Info->UseGlobalCacheOptions) {
				cacheHtml = Config.CacheHtml;
				cacheImages = Config.CacheImages;
			}
			else {
				cacheHtml = si->Info->CacheHtml;
				cacheImages = si->Info->CacheItemImages;
			}
			cacheEnclosures = si->Info->CacheEnclosures;

			CArray<CFeedItem *, CFeedItem *> items;
			// get flagged items in the feed
			for (int j = 0; j < si->Feed->GetItemCount(); j++) {
				CFeedItem *fi = si->Feed->GetItem(j);
				if (fi->IsNew() || fi->IsUnread())
					items.Add(fi);
			}

			if (cacheImages) m_wndUpdateBar.EnqueueImages(items);
			if (cacheHtml) m_wndUpdateBar.EnqueueHtmls(items);
			if (cacheEnclosures) m_wndUpdateBar.EnqueueEnclosures(items, si->Info->EnclosureLimit);
		}
	}

	m_wndUpdateBar.Redraw();
	m_wndUpdateBar.Start();
}


void CMainFrame::CollectSelectedFeedItems(CArray<CFeedItem *, CFeedItem *> &items) {
	LOG0(1, "CMainFrame::CollectSelectedFeedItems()");

	int start, end;
	m_wndFeedView.GetSelectedRange(start, end);

	items.SetSize(end - start + 1);
	for (int i = start; i <= end; i++) {
		CFeedItem *fi = m_wndFeedView.GetItem(i);
		items.SetAt(i - start, fi);
	}
}

void CMainFrame::OnCacheGetOnlineContent() {
	LOG0(1, "CMainFrame::OnCacheGetOnlineContent()");

	CArray<CFeedItem *, CFeedItem *> items;

	if (View == FeedView) {
		CollectSelectedFeedItems(items);
		m_wndFeedView.DeselectAllItems();
	}

	if (items.GetSize() > 0) {
		m_wndUpdateBar.EnqueueHtmls(items);
		m_wndUpdateBar.Redraw();
		m_wndUpdateBar.Start();
	}
}

void CMainFrame::OnCacheGetImages() {
	LOG0(1, "CMainFrame::OnCacheGetImages()");

	CArray<CFeedItem *, CFeedItem *> items;

	if (View == FeedView) {
		CollectSelectedFeedItems(items);
		m_wndFeedView.DeselectAllItems();
	}

	if (items.GetSize() > 0) {
		m_wndUpdateBar.EnqueueImages(items);
		m_wndUpdateBar.Redraw();
		m_wndUpdateBar.Start();
	}
}

void CMainFrame::OnEnclosuresOpen() {
	LOG0(1, "CMainFrame::OnEnclosuresOpen()");

	if (View == FeedView) {
		int sel = m_wndFeedView.GetSelectedItem();
		CFeedItem *fi = m_wndFeedView.GetItem(sel);
		if (fi->HasEnclosure()) {
			CEnclosureItem *ei = fi->Enclosures.GetHead();
			OpenEnclosure(ei->URL);
		}
	}
}

void CMainFrame::OnEnclosuresGet() {
	LOG0(1, "CMainFrame::OnEnclosuresGet()");

	CArray<CFeedItem *, CFeedItem *> items;

	if (View == FeedView) {
		CollectSelectedFeedItems(items);
		m_wndFeedView.DeselectAllItems();
	}

	if (items.GetSize() > 0) {
		m_wndUpdateBar.EnqueueEnclosures(items);
		m_wndUpdateBar.Redraw();
		m_wndUpdateBar.Start();
	}
}

void CMainFrame::OnEnclosuresDelete() {
	LOG0(1, "CMainFrame::OnEnclosuresDelete()");

	CArray<CFeedItem *, CFeedItem *> items;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲影院理伦片| 一区二区三区四区蜜桃| 国产精品第四页| 又紧又大又爽精品一区二区| 午夜国产精品一区| 不卡的av电影在线观看| 91精品免费观看| 玉米视频成人免费看| 精品一区二区三区免费毛片爱| 一本色道久久综合亚洲aⅴ蜜桃| 欧美午夜电影网| 国产三级精品视频| 久久精品久久99精品久久| av资源站一区| 久久精品网站免费观看| 亚洲国产精品精华液网站| 99麻豆久久久国产精品免费 | 国产一区二区影院| 一本色道久久综合狠狠躁的推荐| 久久夜色精品一区| 五月天亚洲精品| 欧美在线制服丝袜| 国产精品成人免费| 日本视频在线一区| 91精品国产乱码久久蜜臀| 亚洲欧美偷拍卡通变态| 91免费国产在线观看| 国产亚洲综合在线| 国产成人精品一区二| 欧美日韩精品一区二区三区四区| 日韩欧美一二三| 三级久久三级久久久| 色av一区二区| 亚洲综合色自拍一区| www.综合网.com| 亚洲色图清纯唯美| av电影在线观看一区| 国产精品乱码一区二区三区软件 | 亚洲欧洲成人av每日更新| 久久精品国产久精国产爱| 欧美三级在线播放| 亚洲成人av一区二区三区| 91国内精品野花午夜精品| 中文字幕亚洲欧美在线不卡| 国产成人鲁色资源国产91色综| 成人性生交大片免费看中文网站| 欧美精品一区二区三区蜜桃视频| 日韩精品一级中文字幕精品视频免费观看 | 精品女同一区二区| 爽好久久久欧美精品| 日本三级亚洲精品| 制服丝袜激情欧洲亚洲| 日韩不卡免费视频| 精品视频999| 亚洲电影一区二区三区| 91片在线免费观看| 国产欧美日韩不卡| 北条麻妃一区二区三区| 中文字幕在线视频一区| 北条麻妃国产九九精品视频| 亚洲视频一区二区免费在线观看 | 欧美一区二区播放| 精品一区二区三区影院在线午夜| 久久综合九色综合97婷婷| 国产盗摄女厕一区二区三区| 日韩精品一区在线观看| 国产99久久久国产精品潘金| 中文一区在线播放| 一本久久精品一区二区| 亚洲国产sm捆绑调教视频 | 亚洲人成精品久久久久| 欧洲精品中文字幕| 日本亚洲免费观看| 久久精品一区二区三区av| 国产福利精品导航| 亚洲国产成人一区二区三区| 色中色一区二区| 日韩精品一卡二卡三卡四卡无卡| 欧美午夜免费电影| 老汉av免费一区二区三区| 中文字幕欧美日本乱码一线二线| 91福利在线免费观看| 青娱乐精品视频| 中文字幕第一区综合| 欧美男女性生活在线直播观看| 日本欧美久久久久免费播放网| 久久免费看少妇高潮| 粉嫩av亚洲一区二区图片| 一区二区三区中文在线| 精品电影一区二区| 一本久久a久久精品亚洲| 久久精品理论片| 又紧又大又爽精品一区二区| 国产91在线观看| 亚洲欧洲韩国日本视频| 色综合夜色一区| 五月婷婷久久丁香| 欧美国产欧美综合| 日韩欧美一区二区久久婷婷| 波多野结衣中文字幕一区| 日韩国产高清在线| 最新久久zyz资源站| 日韩你懂的在线观看| 欧美日韩高清不卡| 97久久人人超碰| 日本欧洲一区二区| 亚洲永久免费av| 久久麻豆一区二区| 欧美一区二区三区免费观看视频| 国产a级毛片一区| 美女一区二区三区| 视频一区二区三区入口| 亚洲裸体xxx| 中文一区在线播放| 久久综合久久鬼色中文字| 欧美一区二区三区小说| 欧美亚洲丝袜传媒另类| 色悠悠久久综合| zzijzzij亚洲日本少妇熟睡| 国产成人自拍在线| 蜜臀av一区二区在线免费观看| 欧美丰满美乳xxx高潮www| 国产成人av一区二区三区在线| 亚洲高清免费视频| 一区二区三区小说| 136国产福利精品导航| 91精品国产色综合久久不卡蜜臀 | 亚洲一区二区中文在线| 中文字幕视频一区二区三区久| 日本丰满少妇一区二区三区| 久久99久久精品| 久久99国产精品久久| 日精品一区二区| 国产精品网站在线| 夜夜操天天操亚洲| 亚洲综合激情网| 亚洲综合视频在线| 日韩精品成人一区二区三区| 午夜伦理一区二区| 日韩在线观看一区二区| 日韩av电影免费观看高清完整版| 国产精品嫩草影院com| 国产精品乱人伦| 欧美激情一区二区| 中文字幕在线不卡视频| 日本一二三不卡| ww亚洲ww在线观看国产| 中文字幕在线观看不卡| 亚洲国产欧美另类丝袜| 五月天一区二区| 精品制服美女久久| 成人一区二区在线观看| 99久久久免费精品国产一区二区| 91视频在线观看| av一区二区三区四区| 日本vs亚洲vs韩国一区三区| 狠狠色丁香久久婷婷综合_中| 日韩**一区毛片| 日产精品久久久久久久性色| 天天操天天干天天综合网| 国产精品福利电影一区二区三区四区| 亚洲人精品午夜| 综合久久久久久| 一区二区三区不卡视频| 国产女人18毛片水真多成人如厕| 国产精品成人网| 日本美女一区二区三区| 91在线观看美女| 日韩欧美亚洲国产精品字幕久久久| 国产亚洲一区二区三区四区 | 欧美色综合久久| 久久日韩粉嫩一区二区三区 | 成人精品一区二区三区中文字幕| 91福利精品视频| 精品处破学生在线二十三| 国产精品电影一区二区三区| 男人的天堂亚洲一区| 国产在线乱码一区二区三区| 91黄色激情网站| 在线播放欧美女士性生活| 精品国产露脸精彩对白| 欧美日韩一级二级| 国产亚洲制服色| 亚洲午夜av在线| 成人免费视频网站在线观看| 99re这里只有精品首页| 日韩精品一区二区在线观看| 欧美性色黄大片| 国产精品女主播av| 亚洲动漫第一页| 成人黄色电影在线| 精品国产乱子伦一区| 亚洲香肠在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 久久精品网站免费观看| 热久久一区二区| 欧美三级资源在线| 亚洲乱码中文字幕| aaa欧美日韩| 欧美日韩在线综合|