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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? articleview.cpp.svn-base

?? wince c++ 下 開發的 rss 閱讀器源代碼
?? SVN-BASE
?? 第 1 頁 / 共 2 頁
字號:
/**
 *  ArticleView.cpp
 *
 *  Copyright (C) 2008  David Andrs <pda@jasnapaka.com>
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#include "StdAfx.h"
#include "prssr.h"
#include "../share/UIHelper.h"
#include "ArticleView.h"

#include "../share/date.h"
#include "../share/fs.h"
#include "../share/str.h"
#include "misc.h"
#include "Config.h"
#include "Feed.h"
#include "MainFrm.h"
#include "Appearance.h"
#include "Errors.h"

#ifdef MYDEBUG
#undef THIS_FILE
static TCHAR THIS_FILE[] = _T(__FILE__);
#include "debug\crtdbg.h"
#define new MYDEBUG_NEW
#endif

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


static DWORD MakeRGBVal(COLORREF clr) {
	return (GetRValue(clr) << 16) | (GetGValue(clr) << 8) | GetBValue(clr);
}

///

void OpenOnlineMessage(const CString &link, CSiteItem *si) {
	LOG1(1, "OpenOnlineMessage('%S')", link);

	CString url = SanitizeUrl(link);
	if (IsHTMLCached(url, TRUE)) {
		CString fileName = UrlToFileName(MakeAbsoluteUrl(url, _T(""), _T("")), TRUE);
		CString path = GetCachePath(FILE_TYPE_HTML, Config.CacheLocation);
		url = MakeOfflineUrl(path, fileName);
	}
	else {
		// first try to rewrite the URL
		if (Config.UseHtmlOptimizer && Config.OpenMsgWithHtmlOptimizer) url = MakeHtmlOptimizerUrl(url, Config.HtmlOptimizerURL);
		else url = RewriteUrl(url, Config.RewriteRules);
	}

	OpenUrlExt(url);
}

///////

/////////////////////////////////////////////////////////////////////////////
// CArticleView dialog

CArticleView::CArticleView() {
	//{{AFX_DATA_INIT(CArticleView)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	HotSpot = FALSE;

	m_pArticle = NULL;

	InFullScreen = FALSE;
}

CArticleView::~CArticleView() {
	delete m_pArticle;
}

BEGIN_MESSAGE_MAP(CArticleView, CHTMLCtrl)
	//{{AFX_MSG_MAP(CArticleView)
	ON_WM_INITMENUPOPUP()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_HOTKEY, OnHotKey)

	ON_COMMAND(ID_ITEM_FLAG, OnItemFlag)
	ON_UPDATE_COMMAND_UI(ID_ITEM_FLAG, OnUpdateItemFlag)
	ON_COMMAND(ID_ITEM_OPEN, OnItemOpen)
	ON_COMMAND(ID_REFRESH, OnRefresh)
	ON_COMMAND(ID_COPY_URL, OnCopyUrl)
	ON_COMMAND(ID_EDIT_COPY, OnCopy)
	ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateCopy)

	ON_COMMAND(ID_ENCLOSURE_OPEN, OnEnclosureOpen)
	ON_UPDATE_COMMAND_UI(ID_ENCLOSURE_OPEN, OnUpdateEnclosureOpen)
	ON_COMMAND(ID_ENCLOSURE_GET, OnEnclosureGet)
	ON_UPDATE_COMMAND_UI(ID_ENCLOSURE_GET, OnUpdateEnclosureGet)
	ON_COMMAND(ID_ENCLOSURE_DELETE, OnEnclosureDelete)
	ON_UPDATE_COMMAND_UI(ID_ENCLOSURE_DELETE, OnUpdateEnclosureDelete)

	ON_COMMAND(ID_OPEN_LINK, OnLinkOpen)
	ON_COMMAND(ID_DOWNLOAD_LINK, OnLinkDownload)

	ON_COMMAND_RANGE(ID_SOCIAL_BOOKMARK_BASE, ID_SOCIAL_BOOKMARK_BASE + 100, OnBookmarkLink)
	ON_COMMAND(ID_SEND_BY_EMAIL, OnSendByEmail)
	ON_COMMAND(ID_FULLSCREEN, OnFullscreen)
	ON_UPDATE_COMMAND_UI(ID_FULLSCREEN, OnUpdateFullscreen)

	ON_COMMAND(ID_VIEW_IMAGE, OnViewImage)
	ON_COMMAND(ID_COPY_IMAGE_LOCATION, OnCopyImageLocation)
END_MESSAGE_MAP()

void CArticleView::SetFeedItem(CFeedItem *fi) {
	delete m_pArticle;
	m_pArticle = new CFeedItem(*fi);
}

void CArticleView::ShowArticle() {
	LOG0(1, "CArticleView::ShowFeedItem()");

//	// reposition controls before displaying the article (enclosure bar may get hidden or visible)
//	ResizeControls();

	CString sText, sTemp;

	::SendMessage(GetSafeHwnd(), WM_SETTEXT, 0, (LPARAM) (LPCTSTR) _T(""));
	Clear();
	EnableContextMenu(TRUE);

	EnableClearType(Appearance.ClearType);
	EnableScripting(FALSE);
	ZoomLevel(1);

	AddText(L"<html>");
	AddText(L"<head>");
	CString strCSS;
	strCSS.Format(
		L"<style type=\"text/css\"><!-- "
		L"body { font-family: \"%s\"; font-size: %dpt; } "
		L"--></style>",
		Appearance.ArticleFontCfg.FontFace, Appearance.ArticleFontCfg.Size
	);
	AddText(strCSS);

	AddText(L"</head>");

	sText.Format(_T("<body bgcolor=#%x text=#%x>"),
		MakeRGBVal(Appearance.ClrArticleBg), MakeRGBVal(Appearance.ClrArticleFg));
	AddText(sText);

	sText.Format(_T("<font face=\"%s\">"), Appearance.ArticleFontCfg.FontFace);
	AddText(sText);

	// FIXME: critical section
	if (m_pArticle != NULL) {
		AddText(L"<p><strong>");
		AddText(m_pArticle->Title);
		AddText(L"</strong></p>");

		BOOL cached = IsHTMLCached(m_pArticle->Link, TRUE);

		if (cached && Config.AdvancedHtmlOptimizer) {
			HANDLE file;
			CString fileName = GetCacheFile(FILE_TYPE_HTML, Config.CacheLocation, m_pArticle->Link);
			if ((file = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL)) != INVALID_HANDLE_VALUE) {
				do {
					char buffer[1024] = { 0 };
					DWORD read;
					BOOL res = ReadFile(file, buffer, 1023, &read, NULL);
					if (res && (read == 0)) break;

					CString text = CharToWChar(buffer, CP_UTF8);
					AddText(text);
				} while (TRUE);

				CloseHandle(file);
			}
			else {
				CString text;
				text.Format(_T("Could not open the cached HTML file: %s"), fileName);
				AddText(text);
			}
		}
		else {
			// translate
			CString description;
			description.Format(_T("<div>%s</div>"), m_pArticle->Description);		// workaround for libsgml
			AddText(L"<p>");
			AddText(description);
			AddText(L"</p>");

			// author
			sText.Empty();
			if (!m_pArticle->Author.IsEmpty())
				sText += m_pArticle->Author + _T(" | ");
			// date/time
			CString sDateTime;
			SYSTEMTIME st = TimeToTimeZone(&m_pArticle->PubDate);		// convert to local time zone
			FormatDateTime(sDateTime, st, Config.ShowRelativeDates);
			sText += sDateTime;

			// keywords
			if (m_pArticle->HasKeywordMatch()) {
				AddText(L"<p>Keywords: ");
				for (int i = 0; i < m_pArticle->KeywordPos.GetSize(); i++) {
					if (i > 0) AddText(L", ");
					AddText(Config.Keywords.GetAt(i));
				}
				AddText(L"</p>");
			}

			AddText(L"<p><font color=\"#aaa\">");
			AddText(sText);
			AddText(L"</font></p>");

			// horz divider
			AddText(L"<hr/>");

			sTemp.LoadString(IDS_LINK_TO_ARTICLE);
			if (cached)
				sText.Format(_T("<a href=\"%s\"><strong>%s</strong></a>"), m_pArticle->Link, sTemp);
			else
				sText.Format(_T("<a href=\"%s\">%s</a>"), m_pArticle->Link, sTemp);

			AddText(L"<p>");
			AddText(sText);
			AddText(L"</p>");
		}
	}
	else {
		sTemp.Format(IDS_NOTHING_TO_DISPLAY);
		AddText(L"<p>");
		AddText(sTemp);
		AddText(L"</p>");
	}
	AddText(L"</font>");

	AddText(L"</body>");
	AddText(L"</html>");

	EndOfSource();
}

void CArticleView::CreateMenu(HWND hwndCmdBar) {
	// create menu for the right Softkey
	TBBUTTON tb;
	::SendMessage(hwndCmdBar, TB_GETBUTTON, 1, (LPARAM) &tb);

	CMenu mnu;
	mnu.Attach((HMENU) tb.dwData);
	while (mnu.GetMenuItemCount() > 0)
		mnu.DeleteMenu(0, MF_BYPOSITION);

	AppendMenuFromResource(&mnu, IDR_OPEN);
	if (m_pArticle != NULL && m_pArticle->HasEnclosure()) {
		AppendMenuFromResource(&mnu, IDR_ENCLOSURES);
	}
	mnu.AppendMenu(MF_SEPARATOR);
	AppendMenuFromResource(&mnu, IDR_ITEM_FLAG);
	AppendMenuFromResource(&mnu, IDR_COPY_URL);
	// bookmark
	AppendBookmarkMenu(&mnu);
	AppendMenuFromResource(&mnu, IDR_SEND_BY_EMAIL);
	AppendMenuFromResource(&mnu, IDR_FULLSCREEN);
	mnu.AppendMenu(MF_SEPARATOR);
//	AppendMenuFromResource(&mnu, IDR_REFRESH);
	AppendMenuFromResource(&mnu, IDR_EXIT);

	mnu.Detach();
}

void CArticleView::OnScrollUp() {
	LOG0(1, "CArticleView::OnScrollUp()");

	SCROLLINFO si;
	HWND hSB = ::GetWindow(GetSafeHwnd(), GW_CHILD);
	if (hSB == NULL)
		hSB = GetSafeHwnd();

	si.cbSize = sizeof(SCROLLINFO);
	si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE | SIF_TRACKPOS;
	::GetScrollInfo(hSB, SB_VERT, &si);

	if (si.nPos == 0) {
		// at the top of the message move to the previous one
		OnItemPrev();
	}
	else {
		// scroll the message up
		::SendMessage(hSB, WM_VSCROLL, SB_LINEUP, NULL);
	}
}

void CArticleView::OnScrollDown() {
	LOG0(1, "CArticleView::OnScrollDown()");

	SCROLLINFO si;
	HWND hSB = ::GetWindow(GetSafeHwnd(), GW_CHILD);
	if (hSB == NULL)
		hSB = GetSafeHwnd();

	si.cbSize = sizeof(SCROLLINFO);
	si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE | SIF_TRACKPOS;
	::GetScrollInfo(hSB, SB_VERT, &si);

	if (si.nPos + (int) si.nPage > si.nMax) {
		// at the top of the message move to the previous one
		OnItemNext();
	}
	else {
		// scroll the message up
		::SendMessage(hSB, WM_VSCROLL, SB_LINEDOWN, NULL);
	}
}

BOOL CArticleView::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) {
	LOG0(5, "CArticleView::OnNotify()");

	NMHDR *pnmh = (LPNMHDR) lParam;
	if (pnmh != NULL) {
		NM_HTMLVIEW *pnmHTML = (NM_HTMLVIEW *) lParam;

		if (pnmh->code == NM_HOTSPOT) {
			HotSpot = TRUE;
			OpenOnlineMessage(pnmHTML->szTarget, m_pArticle->SiteItem);

			*pResult = 1;
			return 1;
		}
		else if (pnmh->code == NM_CONTEXTMENU) {
			OnContextMenu((NM_HTMLCONTEXT *) lParam);
			*pResult = 1;
			return 1;
		}
		else if (pnmh->code == NM_INLINE_IMAGE) {
			if (IsHTMLCached(pnmHTML->szTarget, FALSE)) {
				// rewrite the source of the image to the cache
				m_strImageLoc = MakeOfflineUrl(GetCacheFile(FILE_TYPE_IMAGE, Config.CacheLocation, pnmHTML->szTarget));
				pnmHTML->szTarget = m_strImageLoc;

				*pResult = 0;	// use default handling of an image
				return 0;
			}
			else {
				// not cached -> show empty box
				CSiteItem *si= m_pArticle->SiteItem;

				BOOL cacheImgs;
				if (si->Info->UseGlobalCacheOptions)
					cacheImgs = Config.CacheImages;
				else
					cacheImgs = si->Info->CacheItemImages;

				if (Config.WorkOffline || !cacheImgs) {
					::SendMessage(GetSafeHwnd(), DTM_IMAGEFAIL, 0, (LPARAM) (INLINEIMAGEINFO*) pnmHTML->dwCookie);
					*pResult = 1;
					return 1;
				}
				else {
					*pResult = 0;	// use default handling of an image
					return 0;
				}
			}
		}
	}

	return CWnd::OnNotify(wParam, lParam, pResult);
}

void CArticleView::AppendBookmarkMenu(CMenu *menu) {
	// bookmarking
	if (Config.SocialBookmarkSites.GetSize() > 1) {
		// create popup menu
		HMENU hSubMenu = CreatePopupMenu();

		for (int i = 0; i < Config.SocialBookmarkSites.GetSize(); i++) {
			CSocialBookmarkSite *sbs = Config.SocialBookmarkSites[i];
			::AppendMenu(hSubMenu, MF_STRING | MF_ENABLED, ID_SOCIAL_BOOKMARK_BASE + i, sbs->Name);
		}

		CString sText;
		sText.Format(IDS_BOOKMARK_AT, _T(""));
		menu->AppendMenu(MF_POPUP, (UINT) hSubMenu, sText);
	}
	else {
		CSocialBookmarkSite *sbs = Config.SocialBookmarkSites[0];

		CString sText;
		sText.Format(IDS_BOOKMARK_AT, sbs->Name);
		menu->AppendMenu(MF_STRING, ID_SOCIAL_BOOKMARK_BASE, sText);
	}
}

void CArticleView::ContextMenu(CPoint point) {
	LOG0(3, "CArticleView::ContextMenu()");

	CMenu popup;
	popup.CreatePopupMenu();

	m_strContextMnuUrl.Empty();
	m_strContextMenuLinkName.Empty();

	AppendMenuFromResource(&popup, IDR_OPEN);
	if (m_pArticle->HasEnclosure()) {
		AppendMenuFromResource(&popup, IDR_ENCLOSURES);
	}
	popup.AppendMenu(MF_SEPARATOR);
	AppendBookmarkMenu(&popup);
	AppendMenuFromResource(&popup, IDR_SEND_BY_EMAIL);
	AppendMenuFromResource(&popup, IDR_COPY_URL);

	popup.AppendMenu(MF_SEPARATOR);
	AppendMenuFromResource(&popup, IDR_ITEM_FLAG);
	AppendMenuFromResource(&popup, IDR_COPY);
	AppendMenuFromResource(&popup, IDR_FULLSCREEN);

	popup.TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, GetParent());
}

void CArticleView::OnContextMenu(NM_HTMLCONTEXT *pnmhc) {
	LOG0(3, "CArticleView::OnContextMenu()");

	CMenu popup;
	popup.CreatePopupMenu();

	if (pnmhc->uTypeFlags & HTMLCONTEXT_LINK) {
		m_strContextMnuUrl = pnmhc->szLinkHREF;
		m_strContextMenuLinkName = pnmhc->szLinkName;

		AppendMenuFromResource(&popup, IDR_LINK_CTX);
		popup.InsertMenu(1, MF_SEPARATOR | MF_BYPOSITION);
		AppendBookmarkMenu(&popup);
		AppendMenuFromResource(&popup, IDR_SEND_BY_EMAIL);
		AppendMenuFromResource(&popup, IDR_COPY_LINK_URL);
	}
	else if (pnmhc->uTypeFlags & (HTMLCONTEXT_IMAGE | HTMLCONTEXT_IMAGENOTLOADED)) {
		m_strContextMnuUrl = pnmhc->szLinkHREF;
		m_strContextMenuLinkName = pnmhc->szLinkName;

		AppendMenuFromResource(&popup, IDR_ARTICLE_IMAGE);
		AppendMenuFromResource(&popup, IDR_SEND_BY_EMAIL);
	}
	else {
		m_strContextMnuUrl.Empty();
		m_strContextMenuLinkName.Empty();

		AppendMenuFromResource(&popup, IDR_OPEN);
		if (m_pArticle->HasEnclosure()) {
			AppendMenuFromResource(&popup, IDR_ENCLOSURES);
		}
		popup.AppendMenu(MF_SEPARATOR);
		AppendBookmarkMenu(&popup);
		AppendMenuFromResource(&popup, IDR_SEND_BY_EMAIL);
		AppendMenuFromResource(&popup, IDR_COPY_URL);
	}

	popup.AppendMenu(MF_SEPARATOR);
	AppendMenuFromResource(&popup, IDR_ITEM_FLAG);
	AppendMenuFromResource(&popup, IDR_COPY);
	AppendMenuFromResource(&popup, IDR_FULLSCREEN);

	//
	CPoint point = pnmhc->pt;
	popup.TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, GetParent());
}

LRESULT CArticleView::OnHotKey(WPARAM wParam, LPARAM lParam) {
	LOG0(3, "CArticleView::OnHotKey()");

	return 0;
}

void CArticleView::OnInitMenuPopup(CMenu* pMenu, UINT nIndex, BOOL bSysMenu) {
	LOG0(3, "CArticleView::OnInitMenuPopup()");

	if (bSysMenu)
		return; // don't support system menu

	ASSERT(pMenu != NULL); // check the enabled state of various menu items
	CCmdUI state;
	state.m_pMenu = pMenu;
	ASSERT(state.m_pOther == NULL);
	ASSERT(state.m_pParentMenu == NULL);

	// determine if menu is popup in top-level menu and set m_pOther to
	// it if so (m_pParentMenu == NULL indicates that it is secondary popup)
	HMENU hParentMenu;
	if (AfxGetThreadState()->m_hTrackingMenu == pMenu->m_hMenu)
		state.m_pParentMenu = pMenu; // parent == child for tracking popup
	else if ((hParentMenu = ::WCE_FCTN(GetMenu)(m_hWnd)) != NULL) {
		CWnd *pParent = GetTopLevelParent(); // child windows don't have menus -- need to go to the top!

		if (pParent != NULL &&
			(hParentMenu = ::WCE_FCTN(GetMenu)(pParent->m_hWnd)) != NULL)
		{
			int nIndexMax = ::WCE_FCTN(GetMenuItemCount)(hParentMenu);
			for (int nIndex = 0; nIndex < nIndexMax; nIndex++) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲v精品v日韩v欧美v专区| 欧美国产成人在线| 亚洲一区二区三区美女| 欧美色图一区二区三区| 亚洲gay无套男同| 欧美日韩小视频| 天堂午夜影视日韩欧美一区二区| 在线不卡免费欧美| 精一区二区三区| 国产农村妇女精品| 在线视频欧美区| 日韩中文字幕1| 欧美精品一区二区三区很污很色的| 国产在线视视频有精品| 亚洲欧洲日产国码二区| 欧美日韩1234| 国产ts人妖一区二区| 亚洲人成网站精品片在线观看 | 精品粉嫩aⅴ一区二区三区四区| 韩国欧美国产一区| 国产精品乱码一区二区三区软件| 91久久精品一区二区| 免费xxxx性欧美18vr| 国产精品视频免费| 欧美三级韩国三级日本三斤| 激情综合色综合久久综合| 国产精品第一页第二页第三页| 91官网在线免费观看| 狠狠狠色丁香婷婷综合久久五月| 国产精品久久久99| 日韩一级欧美一级| 99久久免费精品高清特色大片| 视频一区二区三区入口| 国产精品国产馆在线真实露脸| 欧美日韩一本到| 成人sese在线| 捆绑调教美女网站视频一区| 中文字幕在线观看一区二区| 欧美刺激午夜性久久久久久久| 99麻豆久久久国产精品免费优播| 日韩激情一区二区| 最近日韩中文字幕| 久久人人爽爽爽人久久久| 99久久亚洲一区二区三区青草| 精品无人码麻豆乱码1区2区| 亚洲福中文字幕伊人影院| 中文字幕久久午夜不卡| 欧美成人精品1314www| 欧美亚洲一区二区三区四区| 成人性生交大片免费看中文| 国产在线看一区| 青青草97国产精品免费观看无弹窗版| 18成人在线观看| 国产偷国产偷精品高清尤物| 日韩一级成人av| 日本高清无吗v一区| 成人激情免费视频| 国产成人免费视频网站高清观看视频| 婷婷综合久久一区二区三区| 亚洲视频一区二区在线| 国产精品乱子久久久久| 久久亚洲综合色| 日韩三级高清在线| 5566中文字幕一区二区电影| 欧美一a一片一级一片| 日本精品视频一区二区| 97精品久久久久中文字幕| 成人免费av资源| 成人亚洲一区二区一| 国产iv一区二区三区| 国产一区二区三区最好精华液| 久草这里只有精品视频| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩激情视频在线观看| 天堂久久一区二区三区| 奇米色一区二区| 九九久久精品视频| 精品在线观看免费| 九九九精品视频| 国产伦精一区二区三区| 国产成人在线免费| 国产福利精品导航| 成人美女视频在线观看18| av电影在线观看完整版一区二区| 国产不卡在线一区| 不卡在线观看av| 色综合 综合色| 欧美日韩色一区| 欧美精品aⅴ在线视频| 日韩一区二区高清| 久久这里只有精品首页| 国产精品传媒在线| 亚洲一卡二卡三卡四卡五卡| 偷拍日韩校园综合在线| 免费在线观看一区| 国产电影精品久久禁18| 菠萝蜜视频在线观看一区| 91色视频在线| 欧美猛男超大videosgay| 日韩欧美电影一二三| 欧美经典三级视频一区二区三区| √…a在线天堂一区| 亚洲高清视频在线| 国内精品第一页| 91在线视频免费91| 91精品国产福利在线观看| 久久久精品免费免费| 一区二区三区四区视频精品免费 | 国产乱码精品1区2区3区| 成人免费黄色在线| 欧美日韩在线亚洲一区蜜芽| 精品日韩欧美在线| 亚洲欧洲日韩一区二区三区| 青青青伊人色综合久久| 不卡影院免费观看| 日韩一二三区视频| 国产精品国产成人国产三级| 日韩av一二三| 99久久久免费精品国产一区二区| 欧美精品一卡两卡| 国产调教视频一区| 日日夜夜免费精品视频| 成人av在线一区二区| 91麻豆精品国产91久久久久久| 国产日韩精品一区二区浪潮av| 亚洲成人手机在线| 成人黄色小视频| 精品欧美一区二区久久 | 中文字幕不卡在线| 亚洲18影院在线观看| 成人精品鲁一区一区二区| 欧美一区二区三区四区在线观看 | 欧美另类一区二区三区| 日本一区二区三区四区在线视频| 亚洲bt欧美bt精品777| 不卡的电影网站| 久久嫩草精品久久久精品一| 亚洲.国产.中文慕字在线| 国产91露脸合集magnet | 在线观看不卡视频| 中文字幕欧美区| 国内成人免费视频| 欧美三级韩国三级日本三斤| 亚洲免费在线播放| 波多野洁衣一区| 日韩精品一区二区三区四区| 天堂午夜影视日韩欧美一区二区| 色婷婷激情一区二区三区| 中文字幕第一区二区| 激情欧美日韩一区二区| 欧美一级片在线观看| 亚洲成人午夜影院| 欧美日韩综合不卡| 亚洲国产精品天堂| 欧美影院午夜播放| 亚洲精品久久久久久国产精华液| 99久久婷婷国产综合精品| 国产欧美综合色| 国产91清纯白嫩初高中在线观看| 久久久久国产成人精品亚洲午夜| 激情综合网av| 精品福利视频一区二区三区| 久久99国内精品| 久久九九99视频| 国产精品亚洲午夜一区二区三区 | 青青草国产成人av片免费| 欧美精品 日韩| 青青草国产精品亚洲专区无| 日韩午夜在线观看| 久久精品国产久精国产| 欧美电视剧在线观看完整版| 免费av网站大全久久| 久久久久久免费| 福利91精品一区二区三区| 中文字幕欧美激情一区| 93久久精品日日躁夜夜躁欧美| 亚洲手机成人高清视频| 在线亚洲一区二区| 天天影视色香欲综合网老头| 91精品国产乱码| 国产一区二区电影| 国产精品少妇自拍| 91免费看`日韩一区二区| 亚洲一二三级电影| 91精品国产91久久久久久一区二区 | 欧美日韩aaa| 青青国产91久久久久久 | 91女神在线视频| 亚洲午夜一区二区三区| 欧美一区二区大片| 国产综合色精品一区二区三区| 国产日韩欧美不卡在线| 色播五月激情综合网| 欧美aa在线视频| 欧美激情在线一区二区三区| 91在线观看美女| 日日摸夜夜添夜夜添精品视频| 欧美mv日韩mv国产网站app| 不卡欧美aaaaa| 日欧美一区二区|