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

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

?? sugarmemodb.c

?? 最好用的背單詞軟件, palm 平臺, 如果能移植到別的平臺
?? C
?? 第 1 頁 / 共 5 頁
字號:
//SugarMemo Database Module

#include <PalmOS.h>
#include "SugarMemo.h"
#include "SugarMemoRsc.h"
#include "SugarMemoDB.h"
#include "SugarMemoTools.h"

#define HeaderBufferVolumn	(UInt16)100

//*******************************************************************
//	
//	Globals
//
//*******************************************************************
DmOpenRef 	CurrentDB = NULL;
UInt16 		CurrentRecord = noRecord;

//*******************************************************************
//
//	Internal function declaration
//
//*******************************************************************

static 	UInt16	WordUnpackedSize(WordRecordType *record);
static 	void 	PackRecord(WordRecordType *record, MemPtr recordDBEntry);
static 	void 	UnpackRecord(WordPackedRecord *packed, WordRecordType *record);
static 	Int16 	WordDBComparePackedRecords(WordPackedRecord * packed1, WordPackedRecord * packed2,
	Int16 uselessinfo, SortRecordInfoPtr infoP1, SortRecordInfoPtr infoP2, MemHandle appinfoH);
static void TranslatePhonetic(char* field);

//*******************************************************************
//
//	App info manipulation. 	
//	1.Get AppInfo Pointer
//	2.Init AppInfo Pointer
//	3.GetRawWordCount(); 
//	4.SetRawWordCount();
//
//*******************************************************************

//return locked app info pointer
SugarAppInfoType*   GetAppInfoPtr(DmOpenRef dbP)
{
	UInt16     cardNo;
	LocalID    dbID;
	LocalID    appInfoID;

	if (DmOpenDatabaseInfo(dbP, &dbID, NULL, NULL, &cardNo, NULL))
		return NULL;
	if (DmDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &appInfoID, NULL, NULL, NULL))
		return NULL;

	if (appInfoID == 0)
		return NULL;
	else
		return MemLocalIDToLockedPtr(appInfoID, cardNo);

}

Err	SugarDBAppInfoInit(DmOpenRef db){

	UInt16         		cardNo;
	LocalID        		dbID;
	LocalID        		appInfoID;
	MemHandle      		h;
	SugarAppInfoType* 	app;
	SugarAppInfoType* 	defaultP;
	UInt8          		i;
	UInt16				bits = 0;
	DateType			zeroDate;
	UInt16				version = 0;

	app = GetAppInfoPtr(db);
	if (app != NULL) {
		version = app -> version;
		MemPtrUnlock(app);
	}

	//	if version check OK, return
	if (version == CurrentVersion) return 0;

	//	clear old app info
	if (DmOpenDatabaseInfo(db, &dbID, NULL, NULL, &cardNo, NULL)) return dmErrInvalidParam;
	DmSetDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

	// Make space for new one
	h = DmNewHandle(db, sizeof(SugarAppInfoType));
	if (!h) return dmErrMemError;

	appInfoID = MemHandleToLocalID(h);
		
	if (DmSetDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &appInfoID, NULL, NULL, NULL))
	{
		MemHandleFree(h);
		return 1;
	}

	app = MemHandleLock(h);


	// Allocate & Clear the app info
	defaultP = MemPtrNew(sizeof(SugarAppInfoType));
	if (defaultP == NULL)
	{
		ErrDisplay("Unable to init App info");
		return 1;
	}

	MemSet(defaultP, sizeof(SugarAppInfoType), 0);


/*
typedef struct {
	UInt16				renamedCategories;	// bitfield of categories with a different name
	char 				categoryLabels[dmRecNumCategories][dmCategoryLength];
	UInt8 				categoryUniqIDs[dmRecNumCategories];
	UInt8				lastUniqID;			// Uniq IDs generated by the device are between
											// 0 - 127.  Those from the PC are 128 - 255.
	UInt8				padding;			// from the compiler word aligning things
	
	DateType			lastUpdated;
	WordFieldFlags		answerPageFields;
	WordFieldFlags		questionPageFields;
	UInt16 				rawWordCount;
	
	UInt16				version;
	
	FontID				learnFieldFont[WordFieldsCount];
	FontID				learnFieldFont2[WordFieldsCount];
	
	TextAlignment		learnFieldAlignment[WordFieldsCount];	
	
	ReviewMode			reviewMode;
	UInt8				lefty;
	
}	SugarAppInfoType; */

	// Init the categories
	for (i = 0; i < dmRecNumCategories; i++)
	{
		defaultP->categoryUniqIDs[i] = i;
	}
		
	defaultP->lastUniqID = dmRecNumCategories - 1;

	//	Set lastUpdated
	DateSecondsToDate(0, &zeroDate);
	defaultP->lastUpdated = zeroDate;

	// 	Set question page field
	bits = 0;
	SetBitMacro(bits, WordFieldQuestion);
	SetBitMacro(bits, WordFieldPhonetic);
	defaultP -> questionPageFields.allBits = bits;

	// 	Set answer page field
	bits = 0;
	SetBitMacro(bits, WordFieldPhonetic);
	SetBitMacro(bits, WordFieldNote3);
	defaultP -> answerPageFields.allBits = bits;

	// 	Set raw word count to 0
	defaultP -> rawWordCount = 0;

	//	Set version
	defaultP -> version = CurrentVersion;

		
	//	Set LearnFieldFont
	defaultP -> learnFieldFont[WordFieldQuestion] = OS5_16_Font;
	defaultP -> learnFieldFont[WordFieldPhonetic] = PhoneticLargeFont;
	defaultP -> learnFieldFont[WordFieldAnswer] = OS5_16_Font;
	defaultP -> learnFieldFont[WordFieldWordNet] = stdFont;
	defaultP -> learnFieldFont[WordFieldMerriamWebster] = stdFont;
	defaultP -> learnFieldFont[WordFieldDict1] = stdFont;
	defaultP -> learnFieldFont[WordFieldDict2] = stdFont;
	defaultP -> learnFieldFont[WordFieldDict3] = stdFont;
	defaultP -> learnFieldFont[WordFieldNote1] = stdFont;
	defaultP -> learnFieldFont[WordFieldNote2] = stdFont;
	defaultP -> learnFieldFont[WordFieldNote3] = boldFont;

	//	Set LearnFieldFont2
	defaultP -> learnFieldFont2[WordFieldQuestion] = OS5_16_Font;
	defaultP -> learnFieldFont2[WordFieldPhonetic] = PhoneticLargeFont;
	defaultP -> learnFieldFont2[WordFieldAnswer] = OS5_16_Font;
	defaultP -> learnFieldFont2[WordFieldWordNet] = stdFont;
	defaultP -> learnFieldFont2[WordFieldMerriamWebster] = stdFont;
	defaultP -> learnFieldFont2[WordFieldDict1] = stdFont;
	defaultP -> learnFieldFont2[WordFieldDict2] = stdFont;
	defaultP -> learnFieldFont2[WordFieldDict3] = stdFont;
	defaultP -> learnFieldFont2[WordFieldNote1] = stdFont;
	defaultP -> learnFieldFont2[WordFieldNote2] = stdFont;
	defaultP -> learnFieldFont2[WordFieldNote3] = boldFont;

	//	Set LearnField text alignment
	defaultP -> learnFieldAlignment[WordFieldQuestion] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldPhonetic] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldAnswer] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldWordNet] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldMerriamWebster] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldDict1] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldDict2] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldDict3] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldNote1] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldNote2] = CenterAlignment;
	defaultP -> learnFieldAlignment[WordFieldNote3] = LeftAlignment;		

	//	Set review mode
	bits = 0;
	SetBitMacro(bits, TranslationRecollection);
	SetBitMacro(bits, WordRecollection);
	SetBitMacro(bits, TranslationTest);
	SetBitMacro(bits, WordTest);
	defaultP -> reviewMode.allBits = (UInt8)bits;

	//	Set lefty
	defaultP -> lefty = (UInt8)0;
	
	// copy in the defaults and free the default app info
	DmWrite(app, 0, defaultP,  sizeof(SugarAppInfoType));
	MemPtrFree(defaultP);

	CategoryInitialize((AppInfoPtr)app, CategoryNamesAppInfoStr);

	// Unlock
	MemPtrUnlock(app);

	return 0;
}

//initialize database appinfo 
/*
Err   SugarDBAppInfoInit(DmOpenRef dbP)
{	
	
	UInt16         	cardNo;
	LocalID        	dbID;
	LocalID        	appInfoID;
	MemHandle      	h;
	SugarAppInfoType* 	appInfoP;
	SugarAppInfoType* 	defaultInfoP;
	UInt8          	i, j;
	WordFieldFlags 	flag, newAnswerPageFlag;
	DateType 		today;
	
	Int16			oldVersion = -1;
	Int16			currentVersion = 2;
	
	UInt16 			bits = 0;
	
	MemorizingStatus memoStatus = {2.50, //e-factor
		40, //difficulty 
		0, //total lapse
		0, //total recall
		0, //recent lapse
		0, //recent recall
		0, //step
		0, //last test
		0, //current test
		0,	//next test
		0,	//first learn
		0}; //create

	SetBitMacro(bits, TranslationRecollection);
	SetBitMacro(bits, WordRecollection);
	SetBitMacro(bits, TranslationTest);
	SetBitMacro(bits, WordTest);
	
	newAnswerPageFlag.allBits = 0;
	SetBitMacro(newAnswerPageFlag.allBits, WordFieldPhonetic);
	SetBitMacro(newAnswerPageFlag.allBits, WordFieldNote3);


	DateDaysToDate(TimGetSeconds(), &today);
	
	appInfoP = GetAppInfoPtr(dbP);

	// If there isn't an app info make space for one
	if (appInfoP == NULL)
	{
	}
	
	else if (appInfoP -> version == currentVersion){
		MemPtrUnlock(appInfoP);
		return 0;
	}
	
	else {
		oldVersion = appInfoP -> version;
	}
	
	// Allocate & Clear the app info
	defaultInfoP = MemPtrNew(sizeof(SugarAppInfoType));
	if (defaultInfoP == NULL)
	{
		ErrDisplay("Unable to init Word DB");
		return 1;
	}
	
	// Flush memory
	MemSet(defaultInfoP, sizeof(SugarAppInfoType), 0);
	
	// Init the categories
	switch(oldVersion){
	
		case  -1:
			for (i = 0; i < dmRecNumCategories; i++)
				defaultInfoP->categoryUniqIDs[i] = i;
	
			defaultInfoP->lastUniqID = dmRecNumCategories - 1;
	
			//Set lastUpdated
			defaultInfoP -> lastUpdated = today;
	
			// Set question and answer page field
			flag.allBits = 0;
			SetBitMacro(flag.allBits, WordFieldQuestion);
			SetBitMacro(flag.allBits, WordFieldPhonetic);
			defaultInfoP -> questionPageFields.allBits = flag.allBits;
	
			//flag.allBits = 0;
			//SetBitMacro(flag.allBits, WordFieldAnswer);
			//SetBitMacro(flag.allBits, WordFieldNote3);
			defaultInfoP -> answerPageFields.allBits = newAnswerPageFlag.allBits;

			// Set raw word count to 0
			defaultInfoP -> rawWordCount = 0;
			defaultInfoP -> reviewMode.allBits = (UInt8)bits;
			break;
			
		case 0:
		case 1:
			defaultInfoP -> renamedCategories = appInfoP -> renamedCategories;	
			
			for (i = 0; i < dmRecNumCategories; i ++){
				defaultInfoP->categoryUniqIDs[i] = appInfoP -> categoryUniqIDs[i];

				for (j = 0; j < dmCategoryLength; j++){
					defaultInfoP -> categoryLabels[i][j] =	appInfoP -> categoryLabels[i][j];
				}
			}		
	
			defaultInfoP -> lastUniqID = appInfoP -> lastUniqID;
	
			//Set lastUpdated
			defaultInfoP -> lastUpdated = appInfoP -> lastUpdated;
	
			// Set question and answer page field
			defaultInfoP -> questionPageFields.allBits = 
				appInfoP -> questionPageFields.allBits;
	
			defaultInfoP -> answerPageFields.allBits = newAnswerPageFlag.allBits;

			// Set raw word count to 0
			defaultInfoP -> rawWordCount = appInfoP -> rawWordCount;
			defaultInfoP -> reviewMode.allBits = (UInt8)bits;
			break;
	}
		
	//init version
	defaultInfoP -> version = currentVersion;
		
	//init LearnFieldFont
	defaultInfoP -> learnFieldFont[WordFieldQuestion] = OS5_16_Font;
	defaultInfoP -> learnFieldFont[WordFieldPhonetic] = PhoneticLargeFont;
	defaultInfoP -> learnFieldFont[WordFieldAnswer] = OS5_16_Font;
	defaultInfoP -> learnFieldFont[WordFieldWordNet] = stdFont;
	defaultInfoP -> learnFieldFont[WordFieldMerriamWebster] = stdFont;
	defaultInfoP -> learnFieldFont[WordFieldDict1] = stdFont;
	defaultInfoP -> learnFieldFont[WordFieldDict2] = stdFont;
	defaultInfoP -> learnFieldFont[WordFieldDict3] = stdFont;
	defaultInfoP -> learnFieldFont[WordFieldNote1] = stdFont;
	defaultInfoP -> learnFieldFont[WordFieldNote2] = stdFont;
	defaultInfoP -> learnFieldFont[WordFieldNote3] = boldFont;

	//init LearnField text alignment
	defaultInfoP -> learnFieldAlignment[WordFieldQuestion] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldPhonetic] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldAnswer] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldWordNet] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldMerriamWebster] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldDict1] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldDict2] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldDict3] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldNote1] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldNote2] = CenterAlignment;
	defaultInfoP -> learnFieldAlignment[WordFieldNote3] = LeftAlignment;		

	//Init default new record
	SetBitMacro(defaultInfoP -> defaultNewWordRecord.header.allBits, RawQueue);
	
	defaultInfoP -> defaultNewWordRecord.ltStatus.learningStatus = 0;
	defaultInfoP -> defaultNewWordRecord.memoStatus = memoStatus;
	defaultInfoP -> defaultNewWordRecord.memoStatus.create = today;

	
	if (appInfoP != NULL) {
		if (DmOpenDatabaseInfo(dbP, &dbID, NULL, NULL, &cardNo, NULL))
			return dmErrInvalidParam;
		if (DmDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &appInfoID, NULL, NULL, NULL))
			return dmErrInvalidParam;		
		
		//delete original appInfo block
		if (DmSetDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL))
		{
			MemPtrUnlock(appInfoP);
			return 1;
		}
		
		//	free memory	
		MemPtrFree(appInfoP);
	}
	
	if (DmOpenDatabaseInfo(dbP, &dbID, NULL, NULL, &cardNo, NULL))
		return dmErrInvalidParam;
	if (DmDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &appInfoID, NULL, NULL, NULL))
		return dmErrInvalidParam;
	
	//allocate new space
	h = DmNewHandle(dbP, sizeof(SugarAppInfoType));
	if (!h) return dmErrMemError;

	//set new app info block
	appInfoID = MemHandleToLocalID(h);
	if (DmSetDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &appInfoID, NULL, NULL, NULL))
	{
		MemHandleFree(h);
		return 1;
	}

	appInfoP = MemHandleLock(h);

	// copy in the defaults and free the default app info
	DmWrite(appInfoP, 0, defaultInfoP,  sizeof(SugarAppInfoType));
	MemPtrFree(defaultInfoP);

	// Try to use localized app info block strings.
	if (oldVersion == -1) ;

	// Unlock
	MemPtrUnlock(appInfoP);

	return 0;
}*/

UInt16 GetRawWordCount(){
	SugarAppInfoType* app;
	UInt16 number;
	
	app = GetAppInfoPtr(CurrentDB);
	number = app -> rawWordCount;
	MemPtrUnlock(app);
	
	return number;
}

void SetRawWordCount(UInt16 newWordCount){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三四在线观看| 91久久精品一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 国产一区二三区好的| 国产aⅴ综合色| 色综合久久久久综合| 欧美区一区二区三区| 久久女同性恋中文字幕| 自拍偷拍国产亚洲| 日韩高清中文字幕一区| 国产精品一二三| 欧美日韩在线精品一区二区三区激情| 欧美一级欧美一级在线播放| 久久久久久久久99精品| 亚洲日本免费电影| 免费成人性网站| 成人av一区二区三区| 69精品人人人人| 中文字幕av一区二区三区| 亚洲电影第三页| 国产精品一区二区三区99| 欧美中文字幕不卡| 国产午夜精品一区二区三区嫩草| 亚洲乱码中文字幕| 韩国成人在线视频| 色婷婷久久久亚洲一区二区三区| 欧美videos中文字幕| 亚洲欧美欧美一区二区三区| 久草在线在线精品观看| 色女孩综合影院| 久久久久久久综合日本| 亚洲成人免费视频| 99国内精品久久| 亚洲精品一区二区精华| 国产情人综合久久777777| 精品国产污污免费网站入口| 一区二区免费看| 国产在线播精品第三| 538在线一区二区精品国产| 日韩一区中文字幕| 国产精品一级片在线观看| 欧美日韩一区二区电影| 中文字幕一区二区三区四区不卡| 麻豆国产精品视频| 欧美日韩免费高清一区色橹橹 | 亚洲人精品午夜| 国产在线精品一区二区三区不卡| 欧美三级韩国三级日本一级| 国产精品久久影院| 国产成人自拍网| 久久影院午夜片一区| 青青草一区二区三区| 欧洲精品一区二区三区在线观看| 国产日产欧美一区二区视频| 精品无人码麻豆乱码1区2区 | 婷婷综合另类小说色区| 91亚洲精华国产精华精华液| 国产日韩av一区| 国产精品综合一区二区三区| 欧美v亚洲v综合ⅴ国产v| 日韩av成人高清| 欧美美女直播网站| 亚洲在线视频网站| 91久久精品网| 一区二区三区在线视频观看| 91影院在线免费观看| 亚洲欧美偷拍三级| 色综合久久中文综合久久牛| 久久香蕉国产线看观看99| 亚洲色欲色欲www| 国产aⅴ综合色| 国产欧美视频在线观看| 国产成人高清在线| 久久午夜国产精品| 国产精品一二三四区| 久久久久久99精品| 国产成人自拍在线| 中文欧美字幕免费| 粉嫩av一区二区三区在线播放| 久久一区二区三区国产精品| 国产精品乡下勾搭老头1| 久久久国产综合精品女国产盗摄| 国产乱淫av一区二区三区| 国产校园另类小说区| 成年人午夜久久久| 一区在线中文字幕| 91福利资源站| 婷婷激情综合网| 8x8x8国产精品| 极品少妇一区二区| 国产三区在线成人av| 成人综合在线观看| 17c精品麻豆一区二区免费| 色欲综合视频天天天| 亚洲国产精品嫩草影院| 91精品久久久久久蜜臀| 经典三级一区二区| 国产精品网曝门| 欧美性三三影院| 蜜桃视频一区二区| 国产亚洲精品超碰| 91美女片黄在线观看| 亚洲国产欧美在线| 日韩精品一区二区三区蜜臀| 高清视频一区二区| 亚洲一二三级电影| 精品日韩在线观看| 99国产欧美另类久久久精品| 亚洲成人自拍一区| 久久久欧美精品sm网站| 99久久综合99久久综合网站| 亚洲成av人影院| 久久婷婷色综合| 色综合天天综合| 免费一区二区视频| 国产精品免费看片| 欧美另类变人与禽xxxxx| 国产尤物一区二区| 欧美人妇做爰xxxⅹ性高电影| 奇米一区二区三区| 国产精品免费视频网站| 欧美一区二区三区不卡| 99re热视频精品| 日韩av中文在线观看| 亚洲国产精品t66y| 欧美一区二区免费视频| 成人国产电影网| 热久久久久久久| 国产精品福利一区二区| 91精品国产综合久久久蜜臀粉嫩| 成人国产精品视频| 奇米影视7777精品一区二区| 中文字幕在线观看一区二区| 欧美一区在线视频| 91老司机福利 在线| 激情五月婷婷综合| 亚洲成a人在线观看| 国产嫩草影院久久久久| 91精品国产综合久久香蕉的特点| 不卡电影一区二区三区| 麻豆91免费观看| 一区二区国产盗摄色噜噜| 久久综合久久综合亚洲| 欧美福利一区二区| 91视频在线观看免费| 国内精品久久久久影院薰衣草| 亚洲国产日韩综合久久精品| 欧美经典一区二区| 日韩一区二区三区视频在线| 97se亚洲国产综合在线| 国产乱对白刺激视频不卡| 秋霞国产午夜精品免费视频| 亚洲在线视频一区| 亚洲人成亚洲人成在线观看图片| 久久久久亚洲蜜桃| 欧美大片在线观看| 欧美一区二区在线视频| 色国产精品一区在线观看| 一个色综合网站| 欧美日韩色一区| www.66久久| 国产乱码精品一区二区三区忘忧草| 午夜在线成人av| 亚洲精品成人悠悠色影视| 亚洲国产精品黑人久久久| 精品久久久影院| 欧美一级黄色录像| 欧美精品一二三| 亚洲成人自拍一区| 欧美一级日韩一级| 91丨九色丨尤物| 国产精品综合av一区二区国产馆| 一区二区三区四区亚洲| 国产午夜精品久久久久久久| 在线播放91灌醉迷j高跟美女| 成人激情免费电影网址| 久久精品噜噜噜成人88aⅴ | 免费美女久久99| 一区二区三区久久久| 欧美国产日韩一二三区| 日韩一级片在线观看| 欧美日韩一区二区三区四区五区| 99久久99久久久精品齐齐| 国产真实乱子伦精品视频| 日韩av不卡在线观看| 亚洲综合在线第一页| 中文字幕中文字幕中文字幕亚洲无线| 欧美mv日韩mv亚洲| 在线播放欧美女士性生活| 欧美亚洲综合另类| 99久久精品一区二区| 成人污视频在线观看| 国产一区二区日韩精品| 精品伊人久久久久7777人| 日本一区中文字幕| 午夜国产精品一区| av一区二区三区| 国产一区二区三区国产| 国产在线麻豆精品观看| 精品一区二区三区视频在线观看|