📄 dirhandler.c
字号:
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 + -