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

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

?? sugarmemobrowse.c

?? 最好用的背單詞軟件, palm 平臺(tái), 如果能移植到別的平臺(tái)
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
#include <PalmOS.h>
#include "SugarMemo.h"
#include "SugarMemoRsc.h"
#include "SugarMemoBrowse.h"
#include "SugarMemoDB.h"
#include "SugarMemoTools.h"

#define statusColumn 	0
#define entryColumn 	1
#define arrowColumn 	2

#define statusColumnWidth 	11
#define arrowColumnWidth 	13
#define columnSpacing 		2

UInt16 		CurrentCategory = dmAllCategories;
Char 		CategoryName[dmCategoryLength];
UInt16      TopVisibleRecord = 0;
Boolean		ShowAllCategories = true;
Int16		VisibleRows = 0;


//*******************************************************************
//	Internal variables
//*******************************************************************

TabSelected 	tabCurrentSelected = StudyListTab;

UInt16 			TopVisibleBackup[TabCounts] = {0, FirstWordRecord, FirstWordRecord};
const Int16 	RowsInTable = 11;
Header 			HeaderMask;

UInt32			SearchFieldTicks = 0;
Boolean			SearchFieldTicking = false;

extern void EditNewRecord();

//*******************************************************************
//	Internal functions
//*******************************************************************
static void 	BrowseFormLoadTable( FormType* frmP );
static void		WordListDrawRecord (void * table, Int16 row, Int16 column, RectanglePtr bounds);
static void 	BrowseFormInit( FormType* frmP );
static void 	ClearWordListTable();

Boolean 		SeekNextRecord(UInt16 * indexP, Int16 direction);
static void 	WordListForward(Boolean byline);
static void 	WordListBackward(Boolean byline);
static UInt16 	WordListSelectCategory (void);
static void 	ToolsChangeCategory (UInt16 category);
static void 	ChangeTab(TabSelected tab);
static void 	DrawTitleBar();
static void 	MoveToStudyList(Int16 row);
static void 	MoveToRawList(Int16 row);
static void 	BatchMoveToStudyList();
static void 	BatchMoveToRawList();
static void 	UpdateSearchField();
static void 	InstantLookup(EventType * event);
static void 	SearchFieldIdle(FieldType* fldP);
static void 	SortStudyList();
static void 	DetectPenDown(EventType* event);
static void 	ShuffleStudyList();
static Char 	WordQueueToChar(HeaderQueue queue);

/////////////////////////////////////////////////
//
//	event handler
//
/////////////////////////////////////////////////
Boolean BrowseFormHandleEvent(EventType * event){

	FormType* frmP = FrmGetActiveForm();
	FormType* form;
	Boolean handled = false;
	Char* p;
	UInt32	x;
	
	frmP = FrmGetActiveForm();
	
	switch (event->eType){
			
		case frmOpenEvent:
			BrowseFormInit(frmP);
			handled = true;
			break;
												
		case ctlSelectEvent:
			switch (event->data.ctlSelect.controlID){
				case BrowseCategoryPopTrigger:
					WordListSelectCategory();
					handled = true;
					break;
							
				case BrowseQuitButton:
					
					//close database if possible
					if (CurrentDB != NULL) {
						if (errNone != DmCloseDatabase(CurrentDB))
						DoCustomDialog("錯(cuò)誤", "無法關(guān)閉數(shù)據(jù)庫", false, 0, NULL, false);
					}

					FrmGotoForm(MainForm);
					handled = true;
					break;
				
				case BrowseNewButton:
					EditNewRecord();
					handled = true;
					break;

				case BrowseShuffleButton:
					ShuffleStudyList();
					handled = true;
					break;
										
				//case BrowseSortButton:
				//	SortStudyList();					
				//	handled = true;
				//	break;
				
				case BrowseAddAllButton:
					BatchMoveToStudyList();
					handled = true;
					break;
					
				case BrowseRemoveAllButton:
					BatchMoveToRawList();
					handled = true;
					break;
					
				case BrowseStudyListPushButton:
					ChangeTab(StudyListTab);
					break;
				
				case BrowseRawPushButton:
					ChangeTab(RawTab);
					break;
				
				case BrowseAllPushButton:
					ChangeTab(AllTab);
					break;
				
				//case BrowseGoButton:
				//	RandomNewRecord();
				//	break;
					
				default:
					break;
			
			}
			break;
			
		case ctlRepeatEvent:
			switch(event->data.ctlSelect.controlID){
				
				case BrowseScrollUpRepeating:
					WordListBackward(false);
					break;
							
				case BrowseScrollDownRepeating:
					WordListForward(false);
					break;
			}
			break;
			
		case tblSelectEvent:
			TblUnhighlightSelection(event->data.tblSelect.pTable);
			CurrentRecord = TblGetRowID(event->data.tblSelect.pTable, event->data.tblSelect.row);
			
			switch(event->data.tblSelect.column){
				case statusColumn:
					FrmPopupForm(DetailForm);
					break;
					
				case entryColumn:
			
					TopVisibleFieldIndex = 0;
					EditRowIDWhichHadFocus = FirstFieldIndex;
					EditFieldPosition = 0;
			
					FrmGotoForm(EditForm);
					break;
				
				case arrowColumn:
					switch(tabCurrentSelected){
						case StudyListTab:
							MoveToRawList(event->data.tblSelect.row);
							break;
							
						case RawTab:
							MoveToStudyList(event->data.tblSelect.row);
							break;
							
						case AllTab:
							form = FrmInitForm(StatusForm);
							FrmDoDialog(form);
							FrmDeleteForm(form);
							break;
					}
					break;
				}
			handled = true;
			break;
			
		case penDownEvent:
			//capture pen down only if raw tab is displayed
			if (tabCurrentSelected == RawTab){
				DetectPenDown(event);
			}	
			break;
				
		case keyDownEvent:
		
			//if (TxtCharIsHardKey(event->data.keyDown.modifiers, event->data.keyDown.chr))
			//{
			//}

			if (EvtKeydownIsVirtual(event))
			{
				if (event->data.keyDown.chr == pageUpChr){
					//ctl = GetObjectPtr(BrowseScrollUpRepeating);
					//if (CtlGetValue(ctl) != 0)
					WordListBackward(false);
					
					if (!(event->data.keyDown.modifiers & autoRepeatKeyMask)) handled = true;
				}
				
				else if (event->data.keyDown.chr == pageDownChr){
					//ctl = GetObjectPtr(BrowseScrollDownRepeating);
					//if (CtlGetValue(ctl) != 0)
					WordListForward(false);
					
					if (!(event->data.keyDown.modifiers & autoRepeatKeyMask)) handled = true;
				}
			}
		

			else if (event->data.keyDown.chr == linefeedChr)
			{
				handled = true;
			}

			else {
				InstantLookup(event);
				handled = true;
			}
			
		break;
		
		case fldEnterEvent:
			FldHandleEvent(event->data.fldEnter.pField, event);
			
			p = FldGetTextPtr(event->data.fldEnter.pField);
			if ((p != NULL) && (StrLen(p) > 0))
			FldSetSelection(event->data.fldEnter.pField, 0, StrLen(p));
			
			if (tabCurrentSelected == RawTab){
				SearchFieldTicking = true;
				SearchFieldTicks = TimGetTicks();
			}
		
			handled = true;
			break;
		

		case fldChangedEvent:
			InstantLookup(event);
			handled = true;
			break;
		
		case nilEvent:
			x = TimGetTicks();
			if ((tabCurrentSelected == RawTab) &&
				SearchFieldTicking && (( x - SearchFieldTicks) > 500)){
				SearchFieldTicking = false;
				UpdateSearchField();
			}
			break;
			
		default:
			break;
	}
	
	return handled;
}

static void BrowseFormInit( FormType* frmP ){

	Int16 row;
	TableType* tblP;
	ControlPtr ctl;

	if (ShowAllCategories) CurrentCategory = dmAllCategories;
	
	// Initialize the word list table.
	tblP = GetObjectPtr(BrowseWordListTable);

	for (row = 0; row < RowsInTable; row++)
	{
		TblSetItemStyle(tblP, row, statusColumn, customTableItem);
		TblSetItemStyle(tblP, row, entryColumn, customTableItem);
		TblSetItemStyle(tblP, row, arrowColumn, customTableItem);
		TblSetRowUsable(tblP, row, false);
	}

	TblSetColumnUsable(tblP, statusColumn, true);
	TblSetColumnUsable(tblP, entryColumn, true);
	TblSetColumnUsable(tblP, arrowColumn, true);

	TblSetColumnSpacing(tblP, statusColumn, columnSpacing);
	
	// Set the callback routine that will draw the records.
	TblSetCustomDrawProcedure (tblP, statusColumn, WordListDrawRecord);
	TblSetCustomDrawProcedure (tblP, entryColumn, WordListDrawRecord);
	TblSetCustomDrawProcedure (tblP, arrowColumn, WordListDrawRecord);

	// Set the label of the category trigger.
	ctl = GetObjectPtr(BrowseCategoryPopTrigger);
	CategoryGetName (CurrentDB, CurrentCategory, CategoryName);
	CategorySetTriggerLabel (ctl, CategoryName);
	
	ChangeTab(tabCurrentSelected);
}

static void BrowseFormLoadTable( FormType* frmP )
{
	Int16      row = 0;
	TableType* 	tblP;
	UInt16 cursor = 0;
	Boolean full = false;
	Boolean reachedEnd = false;
	Boolean reachedHead = false;
	Int16 i;
	UInt16 studyNums; 
	UInt16 index = 0, recordIndex;
	HeaderItem item;
	Boolean detecting = true;
	UInt32 ticks, ticksPerSecond;
	Err error;

	tblP = GetObjectPtr(BrowseWordListTable);
	
	//	first branch: load study list
	if (tabCurrentSelected == StudyListTab){
				
		//Validation
		studyNums = GetHeaderItemNumber(CurrentDB, LearningRecordIndex);
		
		if (studyNums == 0){
			TopVisibleRecord = 0;
			index = 0;
			row = 0;
		}
		
		else {		
			if (TopVisibleRecord + 10 > studyNums - 1){
				if (studyNums < 11) TopVisibleRecord = 0;
				else TopVisibleRecord = studyNums - 11;
			} 
		
			if (studyNums > RowsInTable) VisibleRows =  RowsInTable;
			else VisibleRows = studyNums;
		
			for (index = TopVisibleRecord; index < TopVisibleRecord + VisibleRows; index ++){
				GetHeaderItem(CurrentDB, LearningRecordIndex, &item, index);
			
				error = DmFindRecordByID(CurrentDB, item, &recordIndex);
				if (error) ErrAlert(error);
			
				TblSetRowID(tblP, row, recordIndex);
				TblSetRowUsable(tblP, row, true);
				row ++;
			}
		}
		
		//	hide empty row
		while(row < RowsInTable){
			TblSetRowUsable(tblP, row, false);
			row ++;
		}
		
		//	draw table
		TblDrawTable(tblP);
		
		//	update search/count field
		UpdateSearchField();
		
		//	update scrollers				
		reachedHead = (TopVisibleRecord == 0);
		reachedEnd = ((TopVisibleRecord + RowsInTable) >= studyNums);
		
		FrmUpdateScrollers(frmP, FrmGetObjectIndex(frmP, BrowseScrollUpRepeating),
			FrmGetObjectIndex(frmP, BrowseScrollDownRepeating), !reachedHead, !reachedEnd);

		return;
	} 
	
	
	ticks = TimGetTicks();
	ticksPerSecond = (UInt32)SysTicksPerSecond();
	
	// 	For each row in the table, store the record number as the row id.
	//	first, check if table full
	if (VisibleRows == RowsInTable) full = true;
	
	//	forward search to fill table
	if (!full){

		if (VisibleRows == 0) cursor = TopVisibleRecord;
		else cursor = TblGetRowID(tblP, VisibleRows - 1) + 1;
		
		while (SeekNextRecord(&cursor, dmSeekForward)){
		
			if (detecting && ((TimGetTicks() - ticks) > ticksPerSecond / 2)){
				FntSetFont(largeBoldFont);
				WinDrawChars("Searching....", 9, 50, 70); 
				detecting = false;
			} 
		
			TblSetRowID(tblP, VisibleRows, cursor);
			TblSetRowUsable(tblP, VisibleRows, true);
		
			VisibleRows ++;
			cursor ++;
		
			if (VisibleRows == RowsInTable){
				full = true;
				break;
			}
		}
	}
	
	//	backward search to fill table	
	if (!full) {
		
		reachedEnd = true;
	
		if (VisibleRows == 0) cursor = TopVisibleRecord - 1;
		else cursor = TblGetRowID(tblP, 0) - 1;
	
		while (SeekNextRecord(&cursor, dmSeekBackward)){
		
			if (detecting && ((TimGetTicks() - ticks) > ticksPerSecond / 2)){
				FntSetFont(largeBoldFont);
				WinDrawChars("Searching....", 9, 50, 70); 
				detecting = false;
			} 

			for (i = VisibleRows; i > 0; i--)
				TblSetRowID(tblP, i, TblGetRowID(tblP, i-1));
				
			TblSetRowID(tblP, 0, cursor);
			TblSetRowUsable(tblP, VisibleRows, true);
						
			VisibleRows ++;
			cursor --;
		
			if (VisibleRows == RowsInTable){
				full = true;
				break;
			}
		}
		
		if (!full) reachedHead = true;
	}
	
	if (VisibleRows == 0){
		reachedHead = true;
		reachedEnd = true;
	}
	
	if (!reachedHead) {
		cursor = TblGetRowID(tblP, 0) - 1;
		reachedHead = !SeekNextRecord(&cursor, dmSeekBackward);
	}
	
	if (!reachedEnd) {
		cursor = TblGetRowID(tblP, VisibleRows - 1) + 1;	
		reachedEnd = !SeekNextRecord(&cursor, dmSeekForward);
	}

	// Hide the item that don't have any data.
	row = VisibleRows;
	while (row < RowsInTable)
	{
		TblSetRowUsable (tblP, row, false);
		row++;
	}
	
	TblDrawTable(tblP);
		
	//update scrollers
	FrmUpdateScrollers(frmP, FrmGetObjectIndex(frmP, BrowseScrollUpRepeating),
		FrmGetObjectIndex(frmP, BrowseScrollDownRepeating), !reachedHead, !reachedEnd);

	//update top visible record
	if (VisibleRows) TopVisibleRecord = TblGetRowID(tblP, 0);

	//	update search field if 
	//	2. raw tab and search field not focused
	if 	((tabCurrentSelected == RawTab) && (!SearchFieldTicking))
		UpdateSearchField();

}

static void	WordListDrawRecord (void * table, Int16 row, Int16 column, RectanglePtr bounds){

	UInt16 recordNum;
	Err error;
	WordRecordType record;
	MemHandle recordH;
	Int16 strWidth = 75;	//75 pixel at most for question field
	Int16 strLength = 0;
	Int16 offset = 0;
	Boolean fitWithinWidth = true;
	char* strP;
	char arrowChar;
	char infoChar;
	HeaderQueue queue;
	
	// Get the record number that corresponds to the table item to draw.
	// The record number is stored in the "intValue" field of the item.
	recordNum = TblGetRowID (table, row);

	error = GetWordRecord (CurrentDB, recordNum, &record, &recordH);
	if (error)
	{
		ErrNonFatalDisplay ("Record not found");
		return;
	}

	switch (column)
	{
		case entryColumn:
			if (record.field[WordFieldQuestion] != NULL) {
				strP = record.field[WordFieldQuestion];
				FntSetFont(boldFont);
				strLength = StrLen(strP);
				FntCharsInWidth(strP, &strWidth, &strLength, &fitWithinWidth);
				
				WinDrawChars(strP, strLength, bounds->topLeft.x, bounds->topLeft.y);
			}
			
			if (record.field[WordFieldAnswer] != NULL){
				strP = record.field[WordFieldAnswer];
				FntSetFont(stdFont);
				strLength = StrLen(strP);
				offset = strWidth + 10;
				strWidth = TblGetColumnWidth(table, entryColumn) - offset;
				FntCharsInWidth(strP, &strWidth, &strLength, &fitWithinWidth);
				
				WinDrawChars(strP, strLength, bounds->topLeft.x + 
					TblGetColumnWidth(table, entryColumn) - strWidth, bounds->topLeft.y);
			}
				
			break;
		case statusColumn:
			FntSetFont(symbolFont);
			infoChar = 10;
			WinDrawChars(&infoChar, 1, bounds->topLeft.x + 2, bounds->topLeft.y);
			FntSetFont(stdFont);
			break;
		
		case arrowColumn:
			
			switch(tabCurrentSelected){
				case StudyListTab:
					arrowChar = 187;
					break;
				case RawTab:
					arrowChar = 171;
					break;
				case AllTab:
					queue = GetQueue(CurrentDB, TblGetRowID(table, row));			
					arrowChar = WordQueueToChar(queue);
					break;
			}

			FntSetFont(boldFont);
			WinDrawChars(&arrowChar, 1, bounds->topLeft.x + 1, bounds->topLeft.y);
			FntSetFont(stdFont);
			
			break;
		
	}

	MemHandleUnlock(recordH);
}

UInt16 WordListSelectCategory (void)
{
	FormType* frmP;
	UInt16 category;
	Boolean categoryEdited;

	// Process the category popup list.
	category = CurrentCategory;

	frmP = FrmGetActiveForm();
	categoryEdited = CategorySelect (CurrentDB, frmP, BrowseCategoryPopTrigger,
			BrowseWordCategoryList, true, &category, CategoryName, 1, categoryDefaultEditCategoryString);

	if (category == dmAllCategories)
		ShowAllCategories = true;
	else
		ShowAllCategories = false;

	if ( categoryEdited || (category != CurrentCategory))
	{
		ToolsChangeCategory (category);

		// Display the new category.
		VisibleRows = 0;
		BrowseFormLoadTable(frmP);

		// By changing the category the current record is lost.
		CurrentRecord = noRecord;
	}

	return (category);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
555www色欧美视频| 欧美一卡2卡三卡4卡5免费| 美女国产一区二区三区| 亚洲精品第1页| 中文字幕乱码久久午夜不卡 | 日韩av不卡一区二区| 自拍av一区二区三区| 久久久99久久| 久久蜜桃一区二区| 日韩一区二区在线观看视频| 欧美日产国产精品| 欧美性感一区二区三区| 色综合激情久久| 色老汉一区二区三区| 99久久亚洲一区二区三区青草| 亚洲一区在线看| 亚洲激情综合网| 亚洲黄色片在线观看| 亚洲精品久久7777| 一区二区三区中文字幕精品精品| 国产精品成人免费在线| 国产精品进线69影院| 国产精品美女久久久久久2018 | 91精品久久久久久久99蜜桃| 欧美做爰猛烈大尺度电影无法无天| 国产精品亚洲人在线观看| 国产乱码精品一区二区三区av| 久久99国产精品久久99 | 色婷婷精品大视频在线蜜桃视频| 91视频免费播放| 一本大道av一区二区在线播放 | 91小宝寻花一区二区三区| 成人国产一区二区三区精品| 国产精品一级片在线观看| 国产精品一区二区三区99| 高清成人免费视频| 成人在线综合网| 色综合久久综合中文综合网| 色8久久人人97超碰香蕉987| 欧美曰成人黄网| 欧美福利视频导航| 精品av久久707| 国产精品丝袜久久久久久app| 中文字幕一区二区三区乱码在线 | 亚洲欧美综合网| 亚洲精品一卡二卡| 亚洲成人在线免费| 麻豆国产一区二区| 喷白浆一区二区| 国产在线看一区| eeuss鲁一区二区三区| 在线日韩av片| 精品国产欧美一区二区| 久久综合色综合88| 亚洲欧美日韩久久| 亚洲高清免费一级二级三级| 麻豆久久一区二区| 成人h动漫精品一区二| 日本道免费精品一区二区三区| 欧美精选午夜久久久乱码6080| 精品少妇一区二区三区免费观看 | 亚洲成人免费看| 精品中文av资源站在线观看| 成人av电影在线观看| 欧美三级日韩在线| 337p日本欧洲亚洲大胆精品| 亚洲视频网在线直播| 蜜臀91精品一区二区三区| 成人精品免费看| 欧美老肥妇做.爰bbww| 国产性天天综合网| 亚洲成a人v欧美综合天堂| 精品写真视频在线观看| 丁香六月久久综合狠狠色| 欧美三级午夜理伦三级中视频| 久久久国产精品麻豆 | 成人网在线免费视频| 欧美高清精品3d| 亚洲特级片在线| 麻豆精品一二三| 日本道色综合久久| 日韩一区二区三区电影| 亚洲精品日韩一| 粉嫩13p一区二区三区| 欧美一区二区视频在线观看2022| 亚洲天堂中文字幕| 国产精品1024| 在线观看一区二区视频| 久久久国际精品| 午夜电影一区二区三区| 99久久久国产精品免费蜜臀| www日韩大片| 蜜臀av一区二区| 欧美亚男人的天堂| 亚洲欧洲三级电影| 从欧美一区二区三区| 日韩欧美国产一区二区三区| 亚洲高清免费视频| 99re成人精品视频| 欧美国产日韩亚洲一区| 久久精品免费观看| 欧美在线色视频| 亚洲欧美视频在线观看| 丁香另类激情小说| 久久久精品国产免大香伊| 蜜臀99久久精品久久久久久软件| 欧美日韩国产小视频| 亚洲美女屁股眼交| 色拍拍在线精品视频8848| 亚洲色图另类专区| 国产成人一区在线| 国产欧美一区视频| 国产精品一区三区| 久久久久久久久久看片| 久久国产精品第一页| 日韩视频免费观看高清在线视频| 偷拍一区二区三区四区| 欧美日韩国产在线观看| 亚洲mv大片欧洲mv大片精品| 色综合久久综合网97色综合| 亚洲视频图片小说| 欧洲一区二区三区免费视频| 亚洲欧美二区三区| 色一情一乱一乱一91av| 亚洲另类在线制服丝袜| 91麻豆免费看| 亚洲码国产岛国毛片在线| 色综合天天天天做夜夜夜夜做| 亚洲精选视频在线| 欧美三级视频在线观看| 樱花草国产18久久久久| 色婷婷综合视频在线观看| 久久精品夜色噜噜亚洲a∨| 国产成人日日夜夜| 中文字幕一区二区三区不卡| 91亚洲大成网污www| 亚洲在线成人精品| 正在播放一区二区| 久久成人综合网| 欧美国产亚洲另类动漫| 色综合久久66| 亚洲超碰97人人做人人爱| 日韩欧美你懂的| 国产+成+人+亚洲欧洲自线| 中文一区在线播放| 色香蕉成人二区免费| 污片在线观看一区二区| 欧美大片国产精品| jlzzjlzz亚洲日本少妇| 亚洲一区二区三区四区的| 欧美乱妇15p| 五月婷婷激情综合| 精品精品国产高清一毛片一天堂| 成人午夜视频在线| 亚洲成人在线免费| 欧美精品一区二区在线观看| 99精品国产热久久91蜜凸| 亚洲国产一区在线观看| 日韩三级免费观看| 粉嫩一区二区三区性色av| 亚洲一区二区不卡免费| 亚洲精品一区二区三区福利| 91在线云播放| 美女爽到高潮91| 亚洲欧美偷拍另类a∨色屁股| 正在播放一区二区| 成人av电影在线网| 亚洲成人精品在线观看| 久久久亚洲欧洲日产国码αv| 91视频精品在这里| 毛片av中文字幕一区二区| 国产精品久久久久桃色tv| 欧美区在线观看| 成人高清伦理免费影院在线观看| 日韩黄色小视频| 中文字幕一区二区三区在线不卡 | 91 com成人网| caoporm超碰国产精品| 日韩精品成人一区二区三区| 国产精品无遮挡| 欧美一区二区在线播放| 91社区在线播放| 国产福利一区在线| 天堂在线亚洲视频| 中文字幕中文字幕一区| 精品少妇一区二区三区视频免付费 | 99久久国产综合精品麻豆| 国产一区二区三区电影在线观看 | 不卡的av中国片| 国产精品夜夜爽| 国产乱人伦偷精品视频免下载| 免费精品99久久国产综合精品| 亚洲国产精品久久艾草纯爱| 亚洲美女一区二区三区| 亚洲人成在线观看一区二区| 中日韩av电影| 一色屋精品亚洲香蕉网站| 中文字幕精品在线不卡| 亚洲国产高清在线| 中文字幕欧美区|