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

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

?? mailboxview.cpp

?? 強大易用的郵件收發客戶端
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// Copyright (C) 1997-2002 Valeriy Ovechkin
// 
// 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, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//
// MailboxView.cpp : implementation of the CMailboxView class
//

#include "stdafx.h"
#include "Magic.h"
#include "Mailbox.h"
#include "Excerpt.h"
#include "MagicDoc.h"
#include "MailboxView.h"
#include "MagicFrame.h"
#include "dfilters.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMailboxView

IMPLEMENT_DYNCREATE(CMailboxView, CListViewEx)

BEGIN_MESSAGE_MAP(CMailboxView, CListViewEx)
	//{{AFX_MSG_MAP(CMailboxView)
	ON_COMMAND(ID_VIEW_LIST, OnViewList)
	ON_COMMAND(ID_VIEW_REPORT, OnViewReport)
	ON_COMMAND(ID_VIEW_SMALLICON, OnViewSmallicon)
	ON_UPDATE_COMMAND_UI(ID_VIEW_ICON, OnUpdateViewIcon)
	ON_UPDATE_COMMAND_UI(ID_VIEW_LIST, OnUpdateViewList)
	ON_UPDATE_COMMAND_UI(ID_VIEW_REPORT, OnUpdateViewReport)
	ON_UPDATE_COMMAND_UI(ID_VIEW_SMALLICON, OnUpdateViewSmallicon)
	ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
	ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
	ON_COMMAND(ID_EDIT_SELECT_ALL, OnEditSelectAll)
	ON_UPDATE_COMMAND_UI(ID_EDIT_SELECT_ALL, OnUpdateEditSelectAll)
	ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, OnItemChanged)
	ON_COMMAND(ID_EDIT_DELETE, OnEditDelete)
	ON_UPDATE_COMMAND_UI(ID_EDIT_PROPERTIES, OnUpdateIfSelectedCount)
	ON_COMMAND(ID_EDIT_PROPERTIES, OnEditProperties)
	ON_COMMAND(ID_EDIT_NEW, OnEditNew)
	ON_COMMAND(ID_VIEW_REFRESH, OnViewRefresh)
	ON_UPDATE_COMMAND_UI(ID_STOP_CHECKING, OnUpdateIfItemCount)
	ON_UPDATE_COMMAND_UI(ID_COMMAND, OnUpdateIfFocusedCount)
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
	ON_COMMAND(ID_COMMAND, OnCommand)
	ON_WM_DESTROY()
	ON_COMMAND(ID_STOP_CHECKING, OnStopChecking)
	ON_NOTIFY_REFLECT(LVN_KEYDOWN, OnKeydown)
	ON_UPDATE_COMMAND_UI(ID_VIEW_REFRESH, OnUpdateIfItemCount)
	ON_UPDATE_COMMAND_UI(ID_EDIT_DELETE, OnUpdateIfSelectedCount)
	ON_COMMAND(ID_MAILBOX_COPY, OnMailboxCopy)
	ON_UPDATE_COMMAND_UI(ID_MAILBOX_COPY, OnUpdateMailboxCopy)
	ON_COMMAND(ID_MAILBOX_PASTE, OnMailboxPaste)
	ON_UPDATE_COMMAND_UI(ID_MAILBOX_PASTE, OnUpdateMailboxPaste)
	//}}AFX_MSG_MAP
	ON_UPDATE_COMMAND_UI( ID_INDICATOR_OBJECTS, OnUpdateIndicatorObjects )
	ON_UPDATE_COMMAND_UI( ID_INDICATOR_CONTENTS, OnUpdateIndicatorContents )
	ON_MESSAGE(VM_LANGUAGE, OnLanguage)
	ON_NOTIFY(HDN_ENDDRAG, 0, OnHeaderEndDrag)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMailboxView construction/destruction

CMailboxView::CMailboxView()
:	m_bitSortEnabled(1),
	m_bitSortRequired(0)
{
}

CMailboxView::~CMailboxView()
{
}	 

/////////////////////////////////////////////////////////////////////////////
// CMailboxView diagnostics

#ifdef _DEBUG
void CMailboxView::AssertValid() const
{
	CListViewEx::AssertValid();
}

void CMailboxView::Dump(CDumpContext& dc) const
{
    	CListViewEx::Dump(dc);
}

CMagicDoc* CMailboxView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMagicDoc)));
	return (CMagicDoc*)m_pDocument;
}
#endif //_DEBUG

void CMailboxView::EnableSort( BOOL bEnable )
{
	m_bitSortEnabled = bEnable;
	if( bEnable && m_bitSortRequired ) 
		SortItems();
}

void CMailboxView::SortItems()
{
	if( !m_bitSortEnabled ) { m_bitSortRequired = 1; return; }

	theApp.DoWaitCursor(1);
	m_bitSortRequired = 0;
	GetListCtrl().SortItems( &CompareSubItems, 0 );
	theApp.DoWaitCursor(-1);
}
						 
/////////////////////////////////////////////////////////////////////////////
// CMailboxView message handlers

void CMailboxView::OnInitialUpdate() 
{
	CListViewEx::OnInitialUpdate();
	
	ASSERT( GetDocument() );
	CMagicDoc &doc = *(CMagicDoc*) GetDocument();
	CListCtrl &list = GetListCtrl();

	list.SetItemCountEx( doc.m_listMailbox.GetCount(), 0 );

	if( theApp.intCheckImmediately ) doc.OnTimerCheck();
	SetFullRowSel(TRUE);

	theApp.SetDefFont(GetFont());
	if (theApp.GetFont())
		SetFont(theApp.GetFont());
}

static 
CString FormatHoursMinutes( int minutes )
{
	int hours = minutes / 60;
	minutes = minutes % 60;

	CString strTmp;

	if( hours )
	{
		if( minutes )
		{
			strTmp.Format( _T("%d hrs %d min"), hours, minutes );
		}
		else
		{
			strTmp.Format( _T("%d hrs"), hours );
		}
	}
	else
	{
		strTmp.Format( _T("%d min"), minutes ); 
	}

	return strTmp;
}

void CMailboxView::OnUpdate(CView* , LPARAM lHint, CObject* pHint)
{
	switch (lHint)
	{
		case HINT_OPTIONS:
			if (theApp.GetFont())
			{
				SetFont(theApp.GetFont());
				m_fntBold.DeleteObject();
				Invalidate();
			}
			return;
		case HINT_DISABLE_SORT:
			EnableSort( FALSE );
			return;
		case HINT_ENABLE_SORT:
			EnableSort();
			return;
		case HINT_UPDATE_ITEM:	// handled below
			break;
		default:
			return;
	}

	if( !pHint ) return;

	if( !pHint->IsKindOf( RUNTIME_CLASS( CMailbox ) ) ) return;
	CMailbox &mbox = *(CMailbox*) pHint;
	CListCtrl &list = GetListCtrl();

	if( mbox.m_bitCreated )
	{
		VERIFY( -1 != list.InsertItem( 0, _T("...") ) );
		VERIFY( LB_ERR != list.SetItemData( 0, (DWORD) &mbox ) );
	}

	LV_FINDINFO findInfo = { LVFI_PARAM, 0, (LPARAM) &mbox };
	int intIndex = list.FindItem( &findInfo );
	if( -1 == intIndex ) return;

	if( mbox.m_bitDeleted )
	{
		VERIFY( list.DeleteItem( intIndex ) );
		return;
	}

	CString strTmp;

	if( mbox.IsChanged( COLUMN_MAIL ) )
	{
		if (mbox.UpdateUnreadStatus())
			mbox.Change( COLUMN_ALIAS );	// need redraw

		int nNew = 0;
		for (int m=0; m<mbox.m_arrayExcerpt.GetSize(); m++)
		{
			if (mbox.m_arrayExcerpt[m] && 
				!mbox.m_arrayExcerpt[m]->WasRead())
				nNew++;
		}
		if (nNew>0)
			strTmp.Format( _T("%d/%d"), mbox.m_arrayExcerpt.GetSize(), nNew );
		else
			strTmp.Format( _T("%d"), mbox.m_arrayExcerpt.GetSize() );
		VERIFY( list.SetItemText( intIndex, COLUMN_MAIL, strTmp ) );

		VERIFY( list.SetItem( intIndex, 0, LVIF_IMAGE, 0, ( mbox.m_arrayExcerpt.GetSize() ? II_FULL : II_EMPTY ), 0, 0, 0 ) );
	}

	if( mbox.IsChanged( COLUMN_ALIAS ) )
	{
		VERIFY( list.SetItemText( intIndex, COLUMN_ALIAS, mbox.m_strAlias ) );
	}
	
	if( mbox.IsChanged( COLUMN_USER ) )
	{
		VERIFY( list.SetItemText( intIndex, COLUMN_USER, mbox.m_strUser ) );
	}
	
	if( mbox.IsChanged( COLUMN_HOST ) )
	{
		VERIFY( list.SetItemText( intIndex, COLUMN_HOST, mbox.m_strHost ) );
	}

	if( mbox.IsChanged( COLUMN_STATE ) )
	{
		int intState = IDP_MBOX_ERROR;

		if( mbox.GetLastErrorDescription().GetLength() > 0 )
		{
			VERIFY( list.SetItemText( intIndex, COLUMN_STATE, mbox.GetLastErrorDescription() ) );
		}
		else
		{
			switch( mbox.m_intState )
			{
				case MBOX_NOT_CHECKED:			intState = IDP_MBOX_NOT_CHECKED; break;
				case MBOX_RESOLVING:			intState = IDP_MBOX_RESOLVING; break;
				case MBOX_CONNECTING:			intState = IDP_MBOX_CONNECTING; break;
				case MBOX_WF_USER_RESPONSE:		
				case MBOX_WF_USER_RESPONSE_SSL: intState = IDP_MBOX_WF_USER_RESPONSE; break;
				case MBOX_WF_PASS_RESPONSE:		intState = IDP_MBOX_WF_PASS_RESPONSE; break;
				case MBOX_WF_APOP_RESPONSE:		intState = IDP_MBOX_WF_APOP_RESPONSE; break;
				case MBOX_WF_FIRST_NOOP:		intState = IDP_MBOX_WF_NOOP_RESPONSE; break;
				case MBOX_WF_SECOND_NOOP:		intState = IDP_MBOX_WF_NOOP_RESPONSE; break;
				case MBOX_WF_UIDL_RESPONSE:		intState = IDP_MBOX_WF_UIDL_RESPONSE; break;
				case MBOX_WF_LIST_RESPONSE:		intState = IDP_MBOX_WF_LIST_RESPONSE; break;
				case MBOX_WF_TOPEX_RESPONSE:	intState = IDP_MBOX_WF_TOPEX_RESPONSE; break;
				case MBOX_WF_TOPF_RESPONSE:		intState = IDP_MBOX_WF_TOPEX_RESPONSE; break;
				case MBOX_WF_TOP_RESPONSE:		intState = IDP_MBOX_WF_TOP_RESPONSE; break;
				case MBOX_DOWNLOADING_DATA:		intState = IDP_MBOX_DOWNLOADING_DATA; break;
				case MBOX_WF_RETR_RESPONSE:		intState = IDP_MBOX_WF_RETR_RESPONSE; break;
				case MBOX_WF_DELE_RESPONSE:		intState = IDP_MBOX_WF_DELE_RESPONSE; break;
				case MBOX_CHECKED:				intState = IDP_MBOX_CHECKED; break;
				case MBOX_INTERRUPTED_BY_USER:	intState = IDP_MBOX_INTERRUPTED_BY_USER; break;
				case MBOX_CANNOT_CONNECT:		intState = IDP_MBOX_CANNOT_CONNECT; break;
				case MBOX_CANNOT_CHECK:			intState = IDP_MBOX_CANNOT_CHECK; break;
				case MBOX_CANNOT_SEND:			intState = IDP_MBOX_CANNOT_SEND; break;
				case MBOX_NETWORK_FAILED:		intState = IDP_MBOX_NETWORK_FAILED; break;
				case MBOX_SERVER_FAILED:		intState = IDP_MBOX_SERVER_FAILED; break;
				case MBOX_CONNECTION_WAS_LOST:	intState = IDP_MBOX_CONNECTION_WAS_LOST; break;
				case MBOX_SOCKET_ERROR:			intState = IDP_MBOX_SOCKET_ERROR; break;
				case MBOX_INVALID_USER:			intState = IDP_MBOX_INVALID_USER; break;
				case MBOX_INVALID_HOST:			intState = IDP_MBOX_INVALID_HOST; break;
				case MBOX_INVALID_PASS:			intState = IDP_MBOX_INVALID_PASS; break;
			}

			VERIFY( strTmp.LoadString( intState ) );
			StrTranslate(strTmp);
			VERIFY( list.SetItemText( intIndex, COLUMN_STATE, strTmp ) );
		}

		int item_state = list.GetItemState( intIndex, LVIS_OVERLAYMASK );
		item_state &= ~LVIS_OVERLAYMASK;

		int intOverlay = 0;

		if( STATE_ERROR( mbox.m_intState ) )
			intOverlay = 1;
		else if ( mbox.m_intPoll == 0 || mbox.IsDisabled())
			intOverlay = 2;
		else if( mbox.IsSecure() )
			intOverlay = 3;

		item_state |= INDEXTOOVERLAYMASK( intOverlay );
		VERIFY( list.SetItemState( intIndex, item_state, LVIS_OVERLAYMASK ) );
	}

	if( mbox.IsChanged( COLUMN_ELAPSED ) )
	{
		if( -1 == mbox.m_intElapsed ) strTmp = _T("...");
		else 
		{
			strTmp = FormatHoursMinutes( mbox.m_intElapsed );
		}
		VERIFY( list.SetItemText( intIndex, COLUMN_ELAPSED, strTmp ) );
	}

	if( mbox.IsChanged( COLUMN_PORT ) )
	{
		strTmp.Format( _T("%d"), mbox.m_intPort );
		VERIFY( list.SetItemText( intIndex, COLUMN_PORT, strTmp ) );
	}

	if( mbox.IsChanged( COLUMN_POLL ) )
	{
		if( mbox.m_intPoll )
		{
			strTmp = FormatHoursMinutes( mbox.m_intPoll );
		}
		else 
		{
			strTmp.LoadString( IDP_DISABLED );
			StrTranslate(strTmp);
		}
		
		VERIFY( list.SetItemText( intIndex, COLUMN_POLL, strTmp ) );

		int item_state = list.GetItemState( intIndex, LVIS_OVERLAYMASK );
		item_state &= ~LVIS_OVERLAYMASK;
		
		int intOverlay = 0;
		if( mbox.m_intPoll == 0 || mbox.IsDisabled())
		{
			intOverlay = 2;
		}
		else if( mbox.IsSecure() )
		{
			intOverlay = 3;
		}

		item_state |= INDEXTOOVERLAYMASK( intOverlay );
		VERIFY( list.SetItemState( intIndex, item_state, LVIS_OVERLAYMASK ) );
	}

	if( mbox.IsChanged( theApp.intMVSortColumn ) ) SortItems(); 
}

UINT anMBCols[]=
{
	IDP_COLUMN_ALIAS, IDP_COLUMN_USER, IDP_COLUMN_HOST,
	IDP_COLUMN_MAIL, IDP_COLUMN_STAT , IDP_COLUMN_ELAPSED,
	IDP_COLUMN_PORT, IDP_COLUMN_POLL,
};
BOOL CMailboxView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
	if( !CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext) ) return FALSE;

	VERIFY( ModifyStyle( 
		LVS_TYPEMASK, 
		theApp.intMVMode | LVS_ALIGNLEFT | LVS_ALIGNTOP | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS ) );

	ASSERT( &GetListCtrl() );
	CListCtrl &list = GetListCtrl();

	list.SetExtendedStyle(LVS_EX_HEADERDRAGDROP);

	CString strColumn;
	LOAD_STRING(strColumn, IDP_COLUMN_ALIAS ); list.InsertColumn( 0, strColumn, LVCFMT_LEFT, theApp.intMCAliasWidth, 0 );
	LOAD_STRING(strColumn, IDP_COLUMN_USER ); list.InsertColumn( 1, strColumn, LVCFMT_RIGHT, theApp.intMCUserWidth, 1 );
	LOAD_STRING(strColumn, IDP_COLUMN_HOST ); list.InsertColumn( 2, strColumn, LVCFMT_LEFT, theApp.intMCHostWidth, 2 );
	LOAD_STRING(strColumn, IDP_COLUMN_MAIL ); list.InsertColumn( 3, strColumn, LVCFMT_LEFT, theApp.intMCMailWidth, 3 );
	LOAD_STRING(strColumn, IDP_COLUMN_STAT ); list.InsertColumn( 4, strColumn, LVCFMT_LEFT, theApp.intMCStatWidth, 4 );
	LOAD_STRING(strColumn, IDP_COLUMN_ELAPSED ); list.InsertColumn( 5, strColumn, LVCFMT_RIGHT, theApp.intMCElapsedWidth, 5 );
	LOAD_STRING(strColumn, IDP_COLUMN_PORT ); list.InsertColumn( 6, strColumn, LVCFMT_RIGHT, theApp.intMCPortWidth, 6 );
	LOAD_STRING(strColumn, IDP_COLUMN_POLL ); list.InsertColumn( 7, strColumn, LVCFMT_RIGHT, theApp.intMCPollWidth, 7 );

	OnOptionsChange(FALSE);

	list.SetImageList( &theApp.m_imgMailbox, LVSIL_SMALL );

	m_ColSortGUI.Init(IDB_UP, IDB_DOWN);
	m_ColSortGUI.SetSortMark(list, theApp.intMVSortColumn, theApp.intMVSortAscend);
	
	return TRUE;
}
#define ASSIGN(a, i) if (a>=0 && a<nCount) anColumns[a] = i; else bFail = TRUE;

void CMailboxView::OnOptionsChange(BOOL bWidth) 
{
	CListCtrl &list = GetListCtrl();

	int nCount = list.GetHeaderCtrl()->GetItemCount();
	int *anColumns = new int[nCount];
	ZeroMemory(anColumns, sizeof(int)*nCount);
	BOOL bFail = FALSE;
	ASSIGN(theApp.intMCAliasPos, 0)
	ASSIGN(theApp.intMCUserPos, 1)
	ASSIGN(theApp.intMCHostPos, 2)
	ASSIGN(theApp.intMCMailPos, 3)
	ASSIGN(theApp.intMCStatPos, 4)
	ASSIGN(theApp.intMCElapsedPos, 5)
	ASSIGN(theApp.intMCPortPos, 6)
	ASSIGN(theApp.intMCPollPos, 7)
	if (bFail)	// default settings
	{
		for (int i=0; i<nCount; i++)
		{
			anColumns[i] = i;
		}
	}
	list.GetHeaderCtrl()->SetOrderArray(nCount, anColumns);
	delete[] anColumns;

	if (bWidth)
	{
		list.SetColumnWidth(0, theApp.intMCAliasWidth);
		list.SetColumnWidth(1, theApp.intMCUserWidth);
		list.SetColumnWidth(2, theApp.intMCHostWidth);
		list.SetColumnWidth(3, theApp.intMCMailWidth);
		list.SetColumnWidth(4, theApp.intMCStatWidth);
		list.SetColumnWidth(5, theApp.intMCElapsedWidth);
		list.SetColumnWidth(6, theApp.intMCPortWidth);
		list.SetColumnWidth(7, theApp.intMCPollWidth);
	}
}


void CMailboxView::OnDestroy() 
{
	if( LVS_REPORT == theApp.intMVMode )
	{
		GetListSettings();
	}
	CListViewEx::OnDestroy();
}

void CMailboxView::OnViewList() 
{
	if (theApp.intMVMode == LVS_REPORT)
	{
		GetListSettings();
	}
	ModifyStyle( LVS_TYPEMASK, LVS_LIST );
	theApp.intMVMode = LVS_LIST;
}

void CMailboxView::OnViewReport() 
{
	ModifyStyle( LVS_TYPEMASK, LVS_REPORT );
	theApp.intMVMode = LVS_REPORT;
}

void CMailboxView::OnViewSmallicon() 
{
	if (theApp.intMVMode == LVS_REPORT)
	{
		GetListSettings();
	}
	ModifyStyle( LVS_TYPEMASK, LVS_SMALLICON );
	theApp.intMVMode = LVS_SMALLICON;
}

void CMailboxView::OnUpdateViewIcon(CCmdUI* pCmdUI) 
{
	pCmdUI->SetRadio( LVS_ICON == theApp.intMVMode );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频免费在线观看| 欧美日韩精品欧美日韩精品| 欧美成人欧美edvon| 久久99久久久久久久久久久| 精品久久国产老人久久综合| 国产一区二区在线观看免费| 国产精品国产三级国产普通话三级| 成人午夜精品一区二区三区| 国产精品灌醉下药二区| 日本二三区不卡| 三级久久三级久久| 欧美videofree性高清杂交| 国产一区欧美一区| 亚洲三级免费电影| 欧美性做爰猛烈叫床潮| 免费成人你懂的| 中文字幕久久午夜不卡| 欧美丝袜丝交足nylons图片| 日韩高清一区在线| 欧美激情自拍偷拍| 欧洲在线/亚洲| 精品一二线国产| 中文字幕亚洲综合久久菠萝蜜| 欧美日韩免费观看一区二区三区| 美女视频网站久久| 国产精品毛片久久久久久久| 欧美xxx久久| av激情亚洲男人天堂| 亚洲成人精品在线观看| 国产午夜亚洲精品羞羞网站| 在线视频一区二区免费| 久草中文综合在线| 亚洲色图色小说| 日韩欧美一区二区在线视频| 成人网在线免费视频| 爽爽淫人综合网网站| 国产日韩成人精品| 91.xcao| 成人精品一区二区三区中文字幕| 日本在线观看不卡视频| 国产精品美女久久久久久久久久久 | 亚洲激情图片一区| 久久奇米777| 欧美午夜一区二区三区免费大片| 国产精品一区二区黑丝| 亚洲6080在线| 欧美国产成人精品| 欧美一区二区黄色| 欧美三级乱人伦电影| 粉嫩13p一区二区三区| 免费在线观看视频一区| 亚洲精品国产无套在线观| 久久久久成人黄色影片| 91精品国产欧美日韩| 91成人看片片| 成人黄色软件下载| 国产精品综合网| 久久精品国产久精国产| 偷窥少妇高潮呻吟av久久免费| 一区精品在线播放| 中文乱码免费一区二区| 精品不卡在线视频| 欧美一区二区三区人| 欧美日韩免费电影| 欧美日韩久久不卡| 欧美性xxxxxxxx| 在线观看免费亚洲| 色综合久久99| 在线日韩国产精品| 一本久久a久久精品亚洲| 97久久人人超碰| 99麻豆久久久国产精品免费| 国产精品一级在线| 国产米奇在线777精品观看| 精品一区二区三区在线播放视频 | 免费成人美女在线观看| 日本不卡视频一二三区| 日本女人一区二区三区| 蜜臀久久99精品久久久久宅男| 三级精品在线观看| 青椒成人免费视频| 麻豆精品一二三| 精东粉嫩av免费一区二区三区| 精油按摩中文字幕久久| 国产精品一卡二| www.亚洲激情.com| 欧美午夜一区二区三区| 欧美日本韩国一区二区三区视频 | 久久99在线观看| 国产在线精品一区二区三区不卡| 激情另类小说区图片区视频区| 韩国av一区二区三区| 国产成人在线观看免费网站| 国产成人免费在线| 99精品久久99久久久久| 欧美在线视频日韩| 91精品国产91久久综合桃花 | 国产精品毛片大码女人| 综合激情网...| 亚洲狼人国产精品| 日韩黄色一级片| 国产成人免费9x9x人网站视频| 99国产欧美久久久精品| 这里只有精品免费| 国产婷婷色一区二区三区在线| 国产精品视频第一区| 亚洲男人天堂一区| 日韩成人免费电影| 国产精品一区在线| 色欲综合视频天天天| 欧美一区二视频| 国产亚洲自拍一区| 亚洲高清中文字幕| 国产成人精品免费视频网站| 91麻豆swag| 日韩免费高清视频| 中文字幕日韩欧美一区二区三区| 日本在线不卡视频| 国产69精品一区二区亚洲孕妇| 在线观看日韩毛片| 久久久久久久精| 天天综合色天天综合色h| 国产成人av电影在线观看| 欧美日韩在线播放三区四区| 久久久不卡影院| 丝袜亚洲另类丝袜在线| caoporn国产精品| 日韩欧美在线123| 夜夜嗨av一区二区三区网页 | 亚洲欧洲日韩av| 美国毛片一区二区三区| 日本韩国欧美国产| 国产精品日日摸夜夜摸av| 奇米精品一区二区三区在线观看一 | 亚洲人123区| 国精品**一区二区三区在线蜜桃| 欧洲一区二区av| 中文av一区二区| 国产在线国偷精品免费看| 欧美在线小视频| 国产精品成人免费| 国产精品主播直播| 日韩欧美国产综合一区| 亚洲综合另类小说| 972aa.com艺术欧美| 久久久久久久精| 韩国中文字幕2020精品| 91麻豆精品国产91久久久久久| 亚洲人成亚洲人成在线观看图片 | 亚洲成人精品在线观看| 色综合天天天天做夜夜夜夜做| 久久人人爽爽爽人久久久| 天天操天天干天天综合网| 一本一本久久a久久精品综合麻豆| 中文在线免费一区三区高中清不卡| 日本aⅴ免费视频一区二区三区| 欧美亚州韩日在线看免费版国语版| 中文字幕亚洲不卡| 99综合电影在线视频| 日本一区二区动态图| 国产电影一区在线| 国产精品视频一区二区三区不卡| 国产成人在线观看| 中文字幕精品一区二区精品绿巨人| 精品影视av免费| www久久久久| 国产一区二区h| 中文一区二区在线观看| 成人av高清在线| 日韩理论在线观看| 欧美在线你懂的| 亚洲成人av一区| 欧美精品电影在线播放| 热久久久久久久| 精品美女一区二区| 国产一区二区三区久久久 | 56国语精品自产拍在线观看| 午夜精品视频一区| 91精品蜜臀在线一区尤物| 日韩va欧美va亚洲va久久| 日韩丝袜美女视频| 国内外精品视频| 国产欧美日韩亚州综合 | 成人一区二区三区| 亚洲欧美区自拍先锋| 欧美三级视频在线观看| 日本美女一区二区| 久久久久久久久久久黄色| www..com久久爱| 亚洲成人av福利| 精品免费国产一区二区三区四区| 国产91在线观看丝袜| 一区二区三区四区不卡视频| 91麻豆精品国产91久久久资源速度 | 精品国产123| 成人av网在线| 日韩国产欧美一区二区三区| 精品88久久久久88久久久| 成人av在线资源| 天堂va蜜桃一区二区三区|