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

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

?? magicdoc.cpp

?? 強大易用的郵件收發客戶端
?? CPP
字號:
// 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.
//
// MagicDoc.cpp : implementation of the CMagicDoc class
//
#include "stdafx.h"
#include "Magic.h"
#include "Mailbox.h"
#include "Excerpt.h"
#include "MagicFrame.h"
#include "GeneralPage.h"
#include "PlaybackPage.h"
#include "CommandPage.h"
#include "MessagePage.h"
#include "ServerPage.h"
#include "LogPage.h"

#include "MagicDoc.h"
#include "dpassword.h"
#include "tools.h"
#include "dnewimport.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMagicDoc

IMPLEMENT_DYNCREATE(CMagicDoc, CDocument)

BEGIN_MESSAGE_MAP(CMagicDoc, CDocument)
	//{{AFX_MSG_MAP(CMagicDoc)
	ON_COMMAND(ID_TIMER_CHECK, OnTimerCheck)
	ON_COMMAND(ID_STOP_COMMAND_ALL, OnStopCommandAll)
	ON_COMMAND(ID_STOP_PLAYBACK_ALL, OnStopPlaybackAll)
	ON_UPDATE_COMMAND_UI(ID_STOP_PLAYBACK_ALL, OnUpdateStopPlaybackAll)
	ON_UPDATE_COMMAND_UI(ID_STOP_COMMAND_ALL, OnUpdateStopCommandAll)
	ON_COMMAND(ID_PASSWORD, OnPassword)
	ON_UPDATE_COMMAND_UI(ID_PASSWORD, OnUpdatePassword)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMagicDoc construction/destruction

CMagicDoc::CMagicDoc()
{
	// TODO: add one-time construction code here

}

CMagicDoc::~CMagicDoc()
{
}

/////////////////////////////////////////////////////////////////////////////
// CMagicDoc serialization
static BYTE nVersion = 2;
void CMagicDoc::Serialize(CArchive& ar)
{
	m_listMailbox.Serialize( ar );
	if (ar.IsStoring())
	{
		ar << nVersion;
		theApp.m_Filters.Serialize( ar );
	}
	else
	{
		// old version does not have version number stored, so
		//  have to use exception handler
		try
		{
			BYTE bVer = 0;
			ar >> bVer;
			if (bVer <= nVersion)
			{
				theApp.m_Filters.Serialize( ar );
			}
		}
		catch(CArchiveException* e)
		{
			e->Delete();
			theApp.GenDefaultFilters();
		}
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMagicDoc diagnostics

#ifdef _DEBUG
void CMagicDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CMagicDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMagicDoc commands

void CMagicDoc::DeleteContents() 
{
	POSITION pos = GetFirstViewPosition();
	while( pos ) VERIFY( ( (CListView*) GetNextView( pos ) )->GetListCtrl().DeleteAllItems() );	
	while( !m_listMailbox.IsEmpty() ) delete m_listMailbox.RemoveHead(); 
	
	CDocument::DeleteContents();
}

void CMagicDoc::CopyMailBox(CMailbox* pCopy)
{
	CMailbox *pMailbox = new CMailbox();
	*pMailbox = *pCopy;
	m_listMailbox.AddHead( pMailbox );
	SetModifiedFlag();
}
void CMagicDoc::NewMailbox()
{
	DNewImport dlg;
	if (dlg.DoModal() == IDCANCEL)
		return;

	CMailbox *pMailbox = new CMailbox();
	if (dlg.m_nSel == 1)
	{
		pMailbox->m_strAlias = dlg.m_sAlias;
		pMailbox->m_strUser = dlg.m_sUser;
		pMailbox->m_strHost = dlg.m_sServer;
		pMailbox->m_intPort = dlg.m_nPort;
	}
	CTypedPtrArray < CPtrArray, CMailbox* > arrayMailbox;
	arrayMailbox.Add( pMailbox );

	CGeneralPage pageG; 
	CCommandPage pageC; 
	CPlaybackPage pageP; 
	CMessagePage pageM;

	pageG.Attach( &arrayMailbox );
	pageC.Attach( &arrayMailbox );
	pageP.Attach( &arrayMailbox );
	pageM.Attach( &arrayMailbox );

	CPropertySheet sheet( IDP_MAILBOX_PROPERTIES_TITLE, AfxGetMainWnd() );
	sheet.AddPage( &pageG );
	sheet.AddPage( &pageC );
	sheet.AddPage( &pageP );
	sheet.AddPage( &pageM );

	if( IDOK == sheet.DoModal() )
	{
		m_listMailbox.AddHead( pMailbox );
		SetModifiedFlag();
	}
	else
	{
		delete pMailbox;
	}
}

void CMagicDoc::DeleteMailbox( CMailbox* pMailbox ) 
{
	ASSERT( pMailbox && m_listMailbox.Find( pMailbox ) );
	m_listMailbox.RemoveAt( m_listMailbox.Find( pMailbox ) );
	delete pMailbox;
	SetModifiedFlag();
}

void CMagicDoc::OnTimerCheck() 
{
	POSITION pos = m_listMailbox.GetHeadPosition();

	while( pos )
	{
		CMailbox &mbox = *m_listMailbox.GetNext( pos );
		mbox.SetElapsed();
		if (mbox.IsDisabled())
			continue;
		if( !theApp.bIsSuspended && mbox.m_intPoll )
		{
			if( ( mbox.m_intElapsed && !( mbox.m_intElapsed % mbox.m_intPoll ) ) ||
				( mbox.m_intElapsed < 0 )
				)
			{
				if (STATE_FINAL( mbox.m_intState ))
					mbox.Check();
			}
		}
	}
}

void CMagicDoc::EndResolveHostByName( WPARAM wParam, LPARAM lParam )
{
	for( POSITION pos = m_listMailbox.GetHeadPosition(); pos; m_listMailbox.GetNext( pos ) )
	{
		m_listMailbox.GetAt( pos )->EndResolveHostByName( wParam, lParam );
	}
}

void CMagicDoc::MailboxProperties( CTypedPtrArray < CPtrArray, CMailbox* > &arrayMailbox ) 
{
	CGeneralPage pageG; 
	CCommandPage pageC; 
	CPlaybackPage pageP; 
	CMessagePage pageM;
	CServerPage pageS;
	CLogPage pageL;

	pageG.Attach( &arrayMailbox );
	pageC.Attach( &arrayMailbox );
	pageP.Attach( &arrayMailbox );
	pageM.Attach( &arrayMailbox );
	pageS.Attach( &arrayMailbox );
	pageL.Attach( &arrayMailbox );

	CPropertySheet sheet( IDP_MAILBOX_PROPERTIES_TITLE, AfxGetMainWnd() );
	sheet.AddPage( &pageG );
	sheet.AddPage( &pageC );
	sheet.AddPage( &pageP );
	sheet.AddPage( &pageM );
	sheet.AddPage( &pageS );
	sheet.AddPage( &pageL );

	sheet.DoModal();
}

void CMagicDoc::OnStopCommandAll() 
{
	if( theApp.m_hCmdID )
	{
		TerminateProcess( theApp.m_hCmdID, 0 );
		theApp.m_hCmdID = 0;
	}

	POSITION pos = m_listMailbox.GetHeadPosition();
	while( pos )
	{
		CMailbox &mbox = *m_listMailbox.GetNext( pos );
		if( mbox.m_hCmdID )
		{
			TerminateProcess( mbox.m_hCmdID, 0 );
			mbox.m_hCmdID = 0;
		}
	}
}

void CMagicDoc::OnUpdateStopCommandAll(CCmdUI* pCmdUI) 
{
	BOOL bEnable = FALSE;
	DWORD dwExitCode = 0;

	if( theApp.m_hCmdID )
	{
		if( !GetExitCodeProcess( theApp.m_hCmdID, &dwExitCode ) || STILL_ACTIVE != dwExitCode )
		{
			theApp.m_hCmdID = 0;
		}
		else bEnable = TRUE;
	}


	POSITION pos = m_listMailbox.GetHeadPosition();
	while( pos )
	{
		CMailbox &mbox = *m_listMailbox.GetNext( pos );
		if( mbox.m_hCmdID )
		{
			if( !GetExitCodeProcess( mbox.m_hCmdID, &dwExitCode ) || STILL_ACTIVE != dwExitCode )
			{
				mbox.m_hCmdID = 0;
			}
			else bEnable = TRUE;
		}
	}

	if( pCmdUI ) pCmdUI->Enable( bEnable );		  
}

void CMagicDoc::OnStopPlaybackAll() 
{
	if( theApp.m_uMciID )
	{
		mciSendCommand( theApp.m_uMciID, MCI_STOP, MCI_WAIT, NULL );
		mciSendCommand( theApp.m_uMciID, MCI_CLOSE, 0, NULL);
		theApp.m_uMciID = 0;
	}

	POSITION pos = m_listMailbox.GetHeadPosition();
	while( pos )
	{
		CMailbox &mbox = *m_listMailbox.GetNext( pos );
		if( mbox.m_uMciID ) 
		{
			mciSendCommand( mbox.m_uMciID, MCI_STOP, MCI_WAIT, NULL );
			mciSendCommand( mbox.m_uMciID, MCI_CLOSE, 0, NULL);
			mbox.m_uMciID = 0;
		}
	}

}

void CMagicDoc::OnUpdateStopPlaybackAll(CCmdUI* pCmdUI) 
{
	BOOL bEnable = FALSE;

	if( theApp.m_uMciID ) bEnable = TRUE;
	else
	{
		POSITION pos = m_listMailbox.GetHeadPosition();
		while( pos )
		{
			CMailbox &mbox = *m_listMailbox.GetNext( pos );
			if( mbox.m_uMciID )
			{
				bEnable = TRUE;
				break;
			}
		}
	}

	if( pCmdUI ) pCmdUI->Enable( bEnable );
}

void CMagicDoc::MciNotify( UINT uMciID )
{
	mciSendCommand( uMciID, MCI_STOP, MCI_WAIT, NULL );
	mciSendCommand( uMciID, MCI_CLOSE, 0, NULL);

	if( theApp.m_uMciID == uMciID ) theApp.m_uMciID = 0;
	else
	{
		POSITION pos = m_listMailbox.GetHeadPosition();
		while( pos )
		{
			CMailbox &mbox = *m_listMailbox.GetNext( pos );
			if( mbox.m_uMciID == uMciID ) 
			{
				mbox.m_uMciID = 0;
				break;
			}
		}
	}
}

void CMagicDoc::Check(BOOL bForce)
{
	CTime tmCheck = CTime::GetCurrentTime();
	POSITION pos = m_listMailbox.GetHeadPosition();
	while( pos )
	{
		CMailbox &mbox = *m_listMailbox.GetNext( pos );
		if( !mbox.m_bitSelected)
			continue;
		if (bForce || !mbox.IsDisabled())
		{
			mbox.m_tmCheckTime = tmCheck;
			mbox.Check();
		}
	}
}

void CMagicDoc::StopChecking()
{
	POSITION pos = m_listMailbox.GetHeadPosition();
	while( pos )
	{
		CMailbox &mbox = *m_listMailbox.GetNext( pos );
		if( mbox.m_bitSelected ) mbox.StopChecking();
	}
}

void CMagicDoc::UpdateItem( CObject *pObject )
{
	ASSERT( pObject );

	if( pObject->IsKindOf( RUNTIME_CLASS( CMailbox ) ) )
	{
		CMailbox &mbox = *(CMailbox*) pObject;
		int intChanged = mbox.m_intChanged;
		if( !intChanged ) return;

		UpdateAllViews( 0, HINT_UPDATE_ITEM, &mbox );
	
		if( mbox.IsChanged( COLUMN_MAIL ) && STATE_FINAL( mbox.m_intState ) )
		{
			int intNewMailCount = 0;

			for( int i = 0; i < mbox.m_arrayExcerpt.GetSize(); ++i )
			{
				if( !mbox.m_arrayExcerpt[i]->m_bitWasReported )
				{
					++intNewMailCount;
					mbox.m_arrayExcerpt[i]->m_bitWasReported = 1;
				}
			}

			int intTotalMailCount = 0;

			POSITION pos = m_listMailbox.GetHeadPosition();
			while( pos ) intTotalMailCount += m_listMailbox.GetNext( pos )->m_arrayExcerpt.GetSize();

			CMagicFrame *wnd = (CMagicFrame*) AfxGetMainWnd();
			if( wnd )
			{
				wnd->UpdateMailCount( intTotalMailCount, intNewMailCount );
				if( intNewMailCount )
				{
					wnd->PostMessage( VM_START_COMMAND, intNewMailCount, (LPARAM) &mbox ); 
					wnd->PostMessage( VM_START_PLAYBACK, intNewMailCount, (LPARAM) &mbox ); 
					wnd->PostMessage( VM_START_MESSAGE, intNewMailCount, (LPARAM) &mbox ); 
				}
			}
		}

		mbox.m_bitCreated = 0;
		mbox.m_intChanged ^= intChanged;
	}
	else if( pObject->IsKindOf( RUNTIME_CLASS( CExcerpt ) )	)
	{
		CExcerpt &xrpt = *(CExcerpt*) pObject;
		int intChanged = xrpt.m_intChanged;
		if( !intChanged ) return;
		UpdateAllViews( 0, HINT_UPDATE_ITEM, &xrpt );
		xrpt.m_bitCreated = 0;
		xrpt.m_intChanged ^= intChanged;
	}
}

void CMagicDoc::UpdateIdle()
{
	UpdateAllViews( 0, HINT_DISABLE_SORT, 0 );

	POSITION pos = m_listMailbox.GetHeadPosition(); 
	while( pos )
	{	
		CMailbox &mbox = *m_listMailbox.GetNext( pos );
		UpdateItem( &mbox );
		int i = mbox.m_arrayExcerpt.GetSize(); 
		while( i ) UpdateItem( mbox.m_arrayExcerpt[--i] );
	}

	UpdateAllViews( 0, HINT_ENABLE_SORT, 0 );
}


BOOL CMagicDoc::OnOpenDocument(LPCTSTR lpszPathName) 
{
	LPBYTE pData = NULL;
	BOOL bOK = TRUE;
	CWaitCursor wait;
	try
	{
		CFile file;
		CFileException fe;
		if (!file.Open(lpszPathName, CFile::modeRead, &fe))
		{
			ReportSaveLoadException(lpszPathName, &fe, 
				FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
			return FALSE;
		}
		DeleteContents();
		SetModifiedFlag();  // dirty during de-serialize

		DWORD dwLen = file.GetLength();
		pData = new BYTE[dwLen+5];
		DWORD dwRead = file.Read(pData, dwLen);

		// check signiture - encrypted?
		if (IsEncrypted(pData, dwRead))		// decrypt data
		{
			// prompt for password
			do 
			{
				DPassword dlg(FALSE);
				if (dlg.DoModal() != IDOK)
				{
					delete pData;
					SetModifiedFlag(FALSE);
					// can not return FALSE, due to bugs in reinit
					if (AfxGetMainWnd())
						AfxGetMainWnd()->PostMessage(WM_COMMAND, ID_FILE_NEW);
					else
						((CMagicApp*)AfxGetApp())->m_bReset = TRUE;
					return TRUE;
				}
				m_sPassword = dlg.m_sPassword;
			}
			while (!DecryptData(pData, dwRead, m_sPassword));
		}
		else
			m_sPassword.Empty();

		CMemFile mf;
		mf.Attach(pData, dwRead);
		CArchive ar(&mf, CArchive::load);
		ar.m_pDocument = this;
		Serialize(ar);     // load me
		ar.Close();
		mf.Detach();
	}
	catch (CException* e)
	{
		ReportSaveLoadException(lpszPathName, e, 
				FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
		e->Delete();
		bOK = FALSE;
	}
	catch(...)
	{
		ReportSaveLoadException(lpszPathName, NULL, 
				FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
		bOK = FALSE;
	}
	delete pData;
	if (!bOK)
	{
		DeleteContents();
		return FALSE;
	}
	
	SetModifiedFlag(FALSE);
	
	CMagicFrame *wnd = (CMagicFrame*) AfxGetMainWnd();
	if( wnd )
	{
		wnd->UpdateMailCount( 0, 0 );
	}

	return TRUE;
}

BOOL CMagicDoc::OnNewDocument() 
{
	CMagicFrame *wnd = (CMagicFrame*) AfxGetMainWnd();
	if( wnd )
	{
		wnd->UpdateMailCount( 0, 0 );
	}
	
	return CDocument::OnNewDocument();
}

BOOL CMagicDoc::OnSaveDocument(LPCTSTR lpszPathName) 
{
	LPBYTE pData = NULL;
	BOOL bOK = TRUE;
	try
	{
		CMemFile mf;
		CArchive ar(&mf, CArchive::store | CArchive::bNoFlushOnDelete);
		ar.m_pDocument = this;
		CWaitCursor wait;
		Serialize(ar);     // save me
		ar.Close();
		DWORD dwLen = mf.GetLength();
		pData = mf.Detach();
		if (!m_sPassword.IsEmpty())
		{
			EncryptData(pData, dwLen, m_sPassword);
		}
		CFile file;
		CFileException fe;
		if (file.Open(lpszPathName, CFile::modeWrite|CFile::modeCreate, &fe))
		{
			file.Write(pData, dwLen);
			file.Close();
		}
		else
		{
			ReportSaveLoadException(lpszPathName, &fe, 
				TRUE, AFX_IDP_FAILED_TO_SAVE_DOC);
			bOK = FALSE;
		}
	}
	catch (CException* e)
	{
		ReportSaveLoadException(lpszPathName, e, 
			TRUE, AFX_IDP_FAILED_TO_SAVE_DOC);
		e->Delete();
		bOK = FALSE;
	}
	catch(...)
	{
		ReportSaveLoadException(lpszPathName, NULL, 
			TRUE, AFX_IDP_FAILED_TO_SAVE_DOC);
		bOK = FALSE;
	}
	
	if (bOK)
		SetModifiedFlag(FALSE);
	delete pData;

	return bOK;
}

void CMagicDoc::OnPassword() 
{
	DPassword dlg(TRUE);
	dlg.m_sPassword = m_sPassword;
	if (dlg.DoModal()!=IDOK)
		return;
	m_sPassword = dlg.m_sPassword;
	SetModifiedFlag(TRUE);
}

void CMagicDoc::OnUpdatePassword(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(!m_sPassword.IsEmpty());
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级爆毛片| 日本欧美一区二区三区乱码 | 丝瓜av网站精品一区二区 | 国产一区二区三区免费看| 日产精品久久久久久久性色| 亚洲福利一区二区| 亚洲夂夂婷婷色拍ww47| 亚洲一区二区在线视频| 亚洲综合色区另类av| 亚洲在线免费播放| 午夜影院在线观看欧美| 午夜影院久久久| 日韩电影免费一区| 国内精品在线播放| 国产成人综合在线播放| 粉嫩嫩av羞羞动漫久久久 | 欧美日本韩国一区二区三区视频 | 日韩一区二区精品| 久久只精品国产| 国产精品视频免费看| 欧美日韩视频一区二区| 日韩一区二区三区免费观看| 26uuu色噜噜精品一区二区| 国产亚洲人成网站| 亚洲码国产岛国毛片在线| 亚洲曰韩产成在线| 人妖欧美一区二区| 国产成人免费视频精品含羞草妖精| 国产成人综合在线| 色嗨嗨av一区二区三区| 这里只有精品电影| 久久九九99视频| 亚洲美女淫视频| 六月婷婷色综合| 成人91在线观看| 欧美喷潮久久久xxxxx| 久久亚洲二区三区| 亚洲欧美日韩国产综合在线 | 91福利视频网站| 日韩视频永久免费| 国产精品电影院| 五月综合激情日本mⅴ| 国产精品18久久久久久久久久久久| 成人av影院在线| 欧美肥大bbwbbw高潮| 国产蜜臀av在线一区二区三区| 一区二区欧美视频| 韩国v欧美v亚洲v日本v| 色综合久久久久综合体| 精品国产一区二区三区久久影院 | 成人午夜免费视频| 欧美亚洲一区三区| 国产亚洲成aⅴ人片在线观看| 一卡二卡欧美日韩| 国产·精品毛片| 欧美一区二区三区免费在线看| 中文无字幕一区二区三区| 性欧美大战久久久久久久久| 高清视频一区二区| 日韩精品在线一区| 一区二区国产盗摄色噜噜| 国产很黄免费观看久久| 欧美一区二区三区啪啪| 一区二区三区成人| 成人性生交大片免费看在线播放 | 欧美一三区三区四区免费在线看| 中文乱码免费一区二区| 美女视频黄 久久| 在线免费观看日本欧美| 国产视频一区在线观看 | 91精品欧美一区二区三区综合在 | 一区二区三区免费看视频| 国产激情视频一区二区三区欧美| 在线不卡一区二区| 亚洲免费在线观看| 成人高清免费观看| 久久综合狠狠综合久久综合88| 婷婷丁香激情综合| 在线免费av一区| 国产精品福利av| 国产成人综合自拍| 久久久久亚洲综合| 精品一区二区免费视频| 欧美日韩电影一区| 亚洲综合丁香婷婷六月香| 成人福利在线看| 欧美高清在线一区| 国产成人高清在线| 国产女同性恋一区二区| 韩国中文字幕2020精品| 欧美一区二区三区公司| 日韩在线卡一卡二| 欧美日本一道本| 图片区小说区国产精品视频| 91色乱码一区二区三区| 国产精品二三区| 91亚洲精品乱码久久久久久蜜桃 | 激情久久五月天| 日韩美女视频在线| 久久成人羞羞网站| 精品成人在线观看| 国产在线国偷精品免费看| 2023国产精品自拍| 国产成人在线看| 欧美国产视频在线| av欧美精品.com| 成人免费一区二区三区视频 | 欧美精三区欧美精三区| 视频一区视频二区在线观看| 欧美精选一区二区| 久久精品免费观看| 久久久国产精品不卡| 成人av在线网| 亚洲免费在线视频一区 二区| 91麻豆123| 亚洲宅男天堂在线观看无病毒| 欧美系列日韩一区| 污片在线观看一区二区| 欧美成人女星排行榜| 国产高清一区日本| 中文字幕一区二区三区色视频 | 3atv在线一区二区三区| 狂野欧美性猛交blacked| 精品国产免费久久| 高清beeg欧美| 亚洲免费色视频| 7777精品伊人久久久大香线蕉完整版| 美女性感视频久久| 中文字幕欧美三区| 欧美色电影在线| 日本不卡不码高清免费观看| 久久久精品日韩欧美| 99国产麻豆精品| 午夜精品久久一牛影视| 欧美精品一区二区三区在线播放| 国产成人小视频| 一区二区国产视频| 欧美成人激情免费网| 成人精品电影在线观看| 亚洲一区二区3| 精品88久久久久88久久久| 99久精品国产| 日本三级亚洲精品| 国产精品毛片久久久久久| 欧美系列日韩一区| 国产精品12区| 亚洲成人av电影| 久久久久9999亚洲精品| 欧洲激情一区二区| 黄色精品一二区| 亚洲在线成人精品| 国产日韩欧美精品综合| 欧美日韩一区二区三区四区| 久草精品在线观看| 一区二区三区国产精华| 久久婷婷国产综合国色天香| 色婷婷av久久久久久久| 国产一区二区三区av电影| 亚洲国产乱码最新视频| 久久婷婷色综合| 欧美日韩国产免费一区二区| 从欧美一区二区三区| 肉丝袜脚交视频一区二区| 最新热久久免费视频| 精品福利一区二区三区免费视频| 色诱亚洲精品久久久久久| 国产中文字幕精品| 亚洲国产视频网站| 国产精品对白交换视频| 精品国产一区二区三区久久影院| 91福利在线播放| 成人免费观看av| 韩国女主播成人在线观看| 首页亚洲欧美制服丝腿| 亚洲欧美区自拍先锋| 久久久久久亚洲综合| 欧美一级国产精品| 欧美色窝79yyyycom| 99视频在线精品| 国产激情视频一区二区在线观看 | 91精品国产aⅴ一区二区| 色94色欧美sute亚洲线路一久| 国产成人8x视频一区二区| 免费观看在线综合| 亚洲电影在线播放| 亚洲综合区在线| 1000精品久久久久久久久| 久久久亚洲精华液精华液精华液| 日韩一区二区在线播放| 欧美日韩成人激情| 欧美日韩专区在线| 91女人视频在线观看| www.视频一区| 成人天堂资源www在线| 国产黄色成人av| 国产精品亚洲第一| 国产一区91精品张津瑜| 玖玖九九国产精品| 看电视剧不卡顿的网站| 久久99久久99小草精品免视看|