⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dirhandler.c

📁 神龙卡开发原代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	CancelVolume(wPtr);		switch (rk) {	case SHOW_LOADING: 		if (filetype == VIDEO_LIB) DrawOsd(wPtr,"img/wait.png", OSD_NO_TIMEOUT); return;	case SHOW_NOT_LOADING:	if (filetype == VIDEO_LIB) CancelOsd(wPtr); return;		//case SHOW_BAD_VIDEO_MSG:	//case SHOW_BAD_MPEG4_MSG:		case SHOW_BAD_AUDIO_MSG:	//anykey clear msg or timeout		SleepWait(3, GR_FALSE);	case SHOW_BAD_FORMAT_MSG:			case SHOW_CANNOT_DISPLAY_JPEG_FILE_MSG:		errMsg = rk;		ClearLoadingFileMsg();				MapMsgHandler(wPtr, (DATA_POINTER) &rk);		return;	case SHOW_RETURN_KEYDOWN:	case SHOW_ENTER_KEYDOWN:		if (filetype == PHOTO_LIB && playMode == PLAY_SINGLE)			goto Playfile_Stop;		break;	case SHOW_STOP_KEYDOWN:		if (filetype == PHOTO_LIB && playMode != PLAY_SINGLE)			alarm(0);				Playfile_Stop:		if (bkgrnd_changed) {			DrawDirList();									if (playMode == PLAY_SINGLE) {				DrawInfo(curfId, gc_pal6);								}			else {				OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOn);			}		}		else {									if (playMode == PLAY_SINGLE) {				DrawCursor(curfId, gc_pal244);				DrawInfo(curfId, gc_pal6);			}			else {				DrawCursor(curfId, gc_pal244);				// clear item info				GrFillRect(wid,gc_pal0,DIR_BG_XPOS,405-DIR_YOFF,500,DIR_YOFF*3);			}		}			wgt->KbdHandler = AVPKeydownHandler;				break;			case SHOW_EOF:		if (errMsg == SHOW_BAD_FORMAT_MSG) { 			SleepWait(3, GR_TRUE); 			return; 		}		if (playMode) {			if (plInc == 0)				PlayNextfile();			else				PlayPrevfile();		}		else 			goto Playfile_Stop;		break;			case SHOW_POWER_KEYDOWN:	case SHOW_OPEN_KEYDOWN:		OpenKeydownHandler();		break;		case SHOW_TIME_SEARCH_KEYDOWN:		if (filetype == VIDEO_LIB || filetype == AUDIO_LIB)			MapSearchHandler(wPtr, (DATA_POINTER)TIME_SEARCH); 				break;		case SHOW_ZOOMOFF_KEYDOWN:		if (filetype != AUDIO_LIB)			DrawOsd(wPtr,"img/zoomoff.png", OSD_TIMEOUT);				break;		case SHOW_ZOOM1_KEYDOWN:		if (filetype != AUDIO_LIB)			DrawOsd(wPtr,"img/lib/zoomon.png",OSD_TIMEOUT);					break;	case SHOW_ZOOM2_KEYDOWN:		if (filetype != AUDIO_LIB)			DrawOsd(wPtr,"img/lib/scrollon.png",OSD_TIMEOUT);				break; 	case SHOW_PAUSESTEP_KEYDOWN:		if (filetype == VIDEO_LIB || (filetype == PHOTO_LIB && playMode != PLAY_SINGLE))			DrawOsd(wPtr,"img/pause.png",OSD_NO_TIMEOUT);				if (filetype == PHOTO_LIB && playMode != PLAY_SINGLE)			alarm(0);				//else if (filetype == AUDIO_LIB)			//DrawFlashingCursor();						break;	 	case SHOW_PLAY_KEYDOWN:		if (filetype == VIDEO_LIB || (filetype == PHOTO_LIB && playMode != PLAY_SINGLE)) {					CancelNonStickyOsd(wPtr);			DrawOsd(wPtr,"img/play.png",OSD_TIMEOUT);		}				if (filetype == PHOTO_LIB && playMode != PLAY_SINGLE)			OsdMainLoop(SHOW_EOF);		break; 	case SHOW_FWD_KEYDOWN:		if (filetype == VIDEO_LIB)			DrawOsd(wPtr,"img/fwd.png",OSD_TIMEOUT);		break;	case SHOW_REV_KEYDOWN:		if (filetype == VIDEO_LIB)			DrawOsd(wPtr,"img/rev.png",OSD_TIMEOUT);		break;	case SHOW_MUTE_KEYDOWN:		//if (filetype == VIDEO_LIB || filetype == AUDIO_LIB)			DrawStickyOsd(wPtr, "img/mute.png");		break;	case SHOW_MUTE_OFF:		//if (filetype == VIDEO_LIB || filetype == AUDIO_LIB)			CancelStickyOsd(wPtr);		break;			case SHOW_NEXT_KEYDOWN:		plInc = 0;				PlayNextfile();		break;		case SHOW_PREV_KEYDOWN:		plInc = 1;				PlayPrevfile();		break;			case SHOW_OSD_KEYDOWN:		MapShowInfoHandler(wPtr, (DATA_POINTER)filetype);		break;	} // switch(rk)	return;}int int_rand(int n){	//if ( n <= 0 || n > RAND_MAX )	//	printf("Argument out of range\n");	const int bucket_size = RAND_MAX / n;	int a;	do 	{		a = rand() / bucket_size;	}	while ( a >= n );	return a;}void AVPKeydownHandler(OSD_WINDOW *wPtr,DATA_POINTER dptr){	GR_EVENT *event;	GR_COORD y;	GR_KEY key; 		event = wPtr->lastevent;	key = event->keystroke.ch;	if (key == SHOW_VOLUP_KEYDOWN || key == SHOW_VOLDOWN_KEYDOWN) {		DrawVolBar(wPtr);		return;	}		if (n_files == 0) {		if (key == SHOW_RETURN_KEYDOWN || key == SHOW_ENTER_KEYDOWN) goto AVPKey_Return;		if (key == SHOW_OPEN_KEYDOWN || key == SHOW_POWER_KEYDOWN) goto AVPKey_Eject;		return;	}		CancelVolume(wPtr);	switch (key) {	// Up	case SHOW_UP_KEYDOWN:		if (curNavPage) {			if (curNavId < n_navItems - 1) { 				OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOff);				curNavId++;				OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOn);			}		}		else {			if (curfId == n_topItem && n_topItem != 0) {				n_topItem = n_topItem - n_items;				if (n_topItem < 0) n_topItem = 0;								n_lastItem = n_topItem + n_items - 1;				if (n_lastItem >= n_files) n_lastItem = n_files - 1;				curfId = n_lastItem;				DrawDirList();				DrawCursor(curfId, gc_pal6);			}			else if (curfId != n_topItem) {					DrawCursor(curfId, gc_pal6);				curfId--;				DrawInfo(curfId, gc_pal6);			}		}		break;	// Down	case SHOW_DOWN_KEYDOWN:		if (curNavPage) {			if (curNavId > 0) { 				OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOff);				curNavId--;				OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOn);			}		}		else {			if (curfId == n_lastItem && n_lastItem != n_files-1) {				curfId = n_topItem = n_lastItem + 1;				n_lastItem = n_lastItem + n_items;				if (n_lastItem >= n_files) n_lastItem = n_files - 1;				curfId = n_topItem;				DrawDirList();				DrawCursor(curfId, gc_pal6);			}			else if (curfId != n_lastItem) {					DrawCursor(curfId, gc_pal6);				curfId++;				DrawInfo(curfId, gc_pal6);			}		}		break;			case SHOW_LEFT_KEYDOWN:		if (curNavPage == 0) {			curNavPage = 1;			//Unhilite curfId			DrawCursor(curfId, gc_pal6);			//Draw png on			OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOn);			// clear item info			GrFillRect(wid,gc_pal0,DIR_BG_XPOS,405-DIR_YOFF,500,DIR_YOFF*3);		}		break;	case SHOW_RIGHT_KEYDOWN:		if (curNavPage && libType != PLAYLIST_LIB) { 			curNavPage = 0;			OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOff);			DrawInfo(curfId, gc_pal6);					}		break;		case SHOW_ENTER_KEYDOWN:		if (curNavPage) {			switch (navList[curNavId].id)			{						case SELECT_ALL_BUTTON:				{				int i;									for (i=0; i<n_files; i++)					mfl[i]->selected = GR_TRUE;				curfId = n_topItem = 0;				n_lastItem = n_items - 1;				DrawDirList();				}				break;							case REMOVE_ALL_BUTTON:				{				int i;				for (i=0; i<n_files; i++)					mfl[i]->selected = GR_FALSE;								curfId = n_topItem = 0;				n_lastItem = n_items - 1;				DrawDirList();				}				break;			case CREATE_EDIT_BUTTON:				{				FileList_Info fli;								fli.type = RAW_PLAYLIST_LIB;				fli.n_files = n_mfiles;				fli.fl = NULL;							MapAVPHandler(wPtr, (DATA_POINTER)&fli);				}				break;			case VIEW_PLAYLIST_BUTTON:				GrFillRect(wid,gc_pal0,30,DIR_BG_YPOS,620,400);				ViewPlaylist(wPtr);				break;			case PREV_PAGE_BUTTON:				goto AVPKey_Prev;			case NEXT_PAGE_BUTTON:					goto AVPKey_Next;						case PLAY_RANDOM_BUTTON:			AVPKey_PlayRandom:				{				int i, j, tmp;								//Create a random list				if (randPl == NULL)					randPl = (int *)malloc(n_files*sizeof(int));								for (i=0; i < n_files; i++)					randPl[i] = sortedfl[i];								for (i=0; i<n_files; i++) {					j = int_rand(n_files);					tmp = randPl[j];					randPl[j] = randPl[i];					randPl[i] = tmp;				}								//Make randPl the current fl				fl = randPl;								plInc = 0;				playMode = PLAY_RANDOM;				n_topItem = 0;				n_lastItem = n_items - 1;				DrawDirList();				curfId = 0;				curNavPage = 1;				curNavId = playrandomNavId;				OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOn);				PlayAVPfile(fl[curfId]);				if (mfl[fl[curfId]]->ftype == AUDIO_LIB)					DrawInfo(curfId, 0);									}				break;			case PLAY_ALL_BUTTON:			case PLAY_PLAYLIST_BUTTON:			AVPKey_PlayAll:				plInc = 0;				playMode = PLAY_ALL;								if (fl == sortedfl) {					if (curfId >= n_items) {						n_topItem = 0;						n_lastItem = n_items - 1;						DrawDirList();					}				}				else {					fl = sortedfl;					n_topItem = 0;					n_lastItem = n_items - 1;					DrawDirList();				}								curfId = 0;				curNavPage = 1;				curNavId = playallNavId;				OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOn);				PlayAVPfile(fl[curfId]);				if (mfl[fl[curfId]]->ftype == AUDIO_LIB)					DrawInfo(curfId, 0);				break;						case RETURN_BUTTON:				goto AVPKey_Return;			}		}		else { 			if (libType == RAW_PLAYLIST_LIB) {									if (mfl[curfId]->selected) {					mfl[curfId]->selected = GR_FALSE;					//clear icon					y = DIR_BG_YPOS+(DIR_YOFF*(curfId-n_topItem));						GrFillRect(wid,gc_pal0,DIR_ICON_XPOS,y,27,26);				}				else {					mfl[curfId]->selected = GR_TRUE;					DrawIcon(curfId, curfId);				}			}			else {				playMode = PLAY_SINGLE;				DrawCursor(curfId, gc_pal6);				PlayAVPfile(fl[curfId]);			}		}				break;	case SHOW_PLAY_KEYDOWN:	case SHOW_SEARCH_KEYDOWN:		if (libType != RAW_PLAYLIST_LIB) {			//Unhilite curfId			if (curNavPage == 0)				DrawCursor(curfId, gc_pal6);			else				OsdDrawPictureEx(wgt,30,navList[curNavId].y,NAV_WIDTH,NAV_HEIGHT,navItem[navList[curNavId].id].imgOff);			if (event->keystroke.ch == SHOW_PLAY_KEYDOWN)				goto AVPKey_PlayAll;			else 				goto AVPKey_PlayRandom;		}		break;	case SHOW_NEXT_KEYDOWN:	AVPKey_Next:		if (n_lastItem < n_files - 1) {			if (curNavPage) nextButton = GR_TRUE;			curfId = n_topItem = n_lastItem + 1;			n_lastItem = n_lastItem + n_items;			if (n_lastItem >= n_files) n_lastItem = n_files - 1;			curfId = n_topItem;			DrawDirList();			if (!curNavPage)				DrawInfo(curfId, gc_pal6);		}		break;		case SHOW_PREV_KEYDOWN:	AVPKey_Prev:		if (n_topItem > 0) {			if (curNavPage) prevButton = GR_TRUE;			n_topItem = n_topItem - n_items;			if (n_topItem < 0) n_topItem = 0;							n_lastItem = n_topItem + n_items - 1;			if (n_lastItem >= n_files) n_lastItem = n_files - 1;			curfId = n_lastItem;			DrawDirList();			if (!curNavPage)				DrawInfo(curfId, gc_pal6);		}		break;	case SHOW_RETURN_KEYDOWN:	AVPKey_Return:		if (bkgrnd_changed) {			ShowJpeg("img/lib/libbackground.jpg");			bkgrnd_changed = GR_FALSE;		}				if (randPl) {						free(randPl);			randPl = NULL;		}				MapLibHandler(wPtr, NULL);		break;					case SHOW_POWER_KEYDOWN:	case SHOW_OPEN_KEYDOWN:	AVPKey_Eject:		OpenKeydownHandler();				break;		case SHOW_MUTE_KEYDOWN: DrawStickyOsd(wPtr, "img/mute.png"); return;	case SHOW_MUTE_OFF: CancelStickyOsd(wPtr); return;		return;	}}voidMapAVPHandler(OSD_WINDOW *wPtr, DATA_POINTER ptr){		FileList_Info_Ptr fliptr = (FileList_Info_Ptr)ptr;		gc1 = wPtr->gc;			// fg = White	gc_pal0 = wPtr->gc_pal0;	// fg = 0	gc_pal6 = wPtr->gc_pal6;	// fg = index 6	gc_pal244 = wPtr->gc_pal244;		wid = wPtr->wid;	wgt = wPtr;		n_files = fliptr->n_files;	sortedfl = fl = fliptr->fl;		libType = fliptr->type;		GrClearWindow(wPtr->wid, GR_FALSE);	DrawLibText(wPtr);	CancelOsd(wPtr);	loadingFileMsg = GR_FALSE;			if (n_files == 0) {		GrFillRect(wid,gc_pal0,DIR_MSG_XPOS-10,DIR_MSG_YPOS-20,DIR_WIDTH,DIR_YOFF);		GrText(wid,gc1,DIR_MSG_XPOS,DIR_MSG_YPOS,"No files found!",-1,GR_TFASCII);		OsdDrawPictureEx(wgt,30,NAV_RETURN_YPOS,NAV_WIDTH,NAV_HEIGHT,navItem[RETURN_BUTTON].imgOn);		wPtr->KbdHandler = AVPKeydownHandler;		}		else {		//n_items = DIR_HEIGHT / DIR_YOFF;		n_items = 11;			if (n_files <= n_items ) n_items = n_files;		curNavId = curNavPage = curfId = n_topItem = 0;		n_lastItem = n_items - 1;				nextNavId = prevNavId = 0;		nextButton = prevButton = GR_FALSE;		playMode = PLAY_SINGLE;		randPl = NULL;		DrawDirList();		if (libType != PLAYLIST_LIB) {			DrawInfo(curfId, gc_pal6);		}		wPtr->KbdHandler = AVPKeydownHandler;	}	return;}voidOpenKeydownHandler(){	if (randPl) {				free(randPl);		randPl = NULL;	}	QuitMediaLib(wgt);	MapMainWindow(wgt, (DATA_POINTER)GR_TRUE);	OsdKbHandler(wgt, NULL);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -