📄 mm_ui.c
字号:
// problem because playing file maybe filter out. So we don't allow entering sort/filter function in pause mode.
if ((__btPlaying == TRUE) || (__btPause))
return KEY_INVALID;
// clear the selection cursor
OSDMM_Update(OSDMM_MSG_CLEAR_HIGHLIGHT, 0); //CoCo.CT909, OSDMM_Update needs two parameters.
__MMSelectCursor.wIndex=MM_BTN_SORT;
}
else if ((__bMMMenuID == MM_MENU_EDITPROG)
#ifdef SUPPORT_COPY_FILE_IN_MM_UI
|| (__bMMMenuID == MM_MENU_ENCODE_FILE)
#endif //
)
{
// clear the selection cursor
OSDMM_Update(OSDMM_MSG_CLEAR_HIGHLIGHT, 0); //CoCo.CT909, OSDMM_Update needs two parameters.
__MMSelectCursor.wIndex=MM_BTN_PLAY;
}
else if (__bMMMenuID == MM_MENU_PROGLIST)
{
// clear the selection cursor
OSDMM_Update(OSDMM_MSG_CLEAR_HIGHLIGHT, 0); //CoCo.CT909, OSDMM_Update needs two parameters.
__MMSelectCursor.wIndex=MM_BTN_RETURN;
}
// update cursor @ control button list's 1st positon
__MMSelectCursor.bPosition=POS_BUTTON_LIST;
#else
#ifdef SUPPORT_COPY_FILE_IN_MM_UI
if (__bMMMenuID == MM_MENU_ENCODE_FILE)
{
OSDMM_Update(OSDMM_MSG_CLEAR_HIGHLIGHT, 0); //CoCo.CT909, OSDMM_Update needs two parameters.
__MMSelectCursor.wIndex=MM_BTN_EXIT;
__MMSelectCursor.bPosition=POS_BUTTON_LIST;
}
else
#endif //
return INVALID_KEY;
#endif //
}
// Update final cursor on menu
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT, 0); //CoCo.CT909, OSDMM_Update needs two parameters.
}
// selection cursor @ button list
else if(__MMSelectCursor.bPosition == POS_BUTTON_LIST)
{
if (__bMMPopMenuID != MM_POP_MENU_NONE)
return INVALID_KEY;
OSDMM_Update(OSDMM_MSG_CLEAR_HIGHLIGHT,0);
// Specify the desired finding action base on input key
if(bKey==KEY_LEFT)
{
// underflow, return invalid key
if(__MMSelectCursor.wIndex==0)
{
if (__bMMMenuID == MM_MENU_PROGLIST)
{
if (__bProgramMaxEntry == 0)
{
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT,0);
return INVALID_KEY;
}
else
{
__MMSelectCursor.bPosition = POS_PROG_LIST;
__MMSelectCursor.wIndex = 0;
}
}
else
{
// go to the active directory position
_MM_SetCursorToActiveDirPos();
}
}
// else, finding previous valid control button
else
{
if ((__bProgramMaxEntry == 0) && (__bMMMenuID == MM_MENU_PROGLIST))
{
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT,0);
return INVALID_KEY;
}
else
{
// wyc2.35-909S, add code to support disable program list mode when playing mode.
if (__btPlaying)
{
_MM_SetCursorToActiveDirPos();
}
else
{
__MMSelectCursor.wIndex=0;
}
}
}
}
else // KEY_RIGHT
{
// overflow, return invalid key
if(__MMSelectCursor.wIndex==(MM_MAX_CTL_BTN_NO-1))
{
if (__bMMMenuID == MM_MENU_PROGLIST)
{
if (__bProgramMaxEntry == 0)
{
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT,0);
return FALSE;
}
else
{
__MMSelectCursor.bPosition = POS_PROG_LIST;
__MMSelectCursor.wIndex = 0;
}
}
else
{
if(_MM_QueryInfo2(MM_QUERY2_TOTAL_SORT_FILTER_ITEM,__MMSelectCursor.wDirID))
{
// Update cursor @ 1st file ID
__MMSelectCursor.bPosition=POS_FILE_LIST;
__MMSelectCursor.wIndex=__wOSDMMStartDrawItem; //CoCo.CT909
//CoCo0.72, support JPEG Preview
if (MM_JPEGPreview())
return KEY_NO_KEY;
}
else
{
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT, 0);
return INVALID_KEY;
}
}
}
// else, finding next valid control button
else
{
__MMSelectCursor.wIndex=1;
}
}
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT,0);
}
// selection cursor @ program list
else if(__MMSelectCursor.bPosition == POS_PROG_LIST)
{
OSDMM_Update(OSDMM_MSG_CLEAR_HIGHLIGHT,0);
// update cursor @ control button list's 1st positon
__MMSelectCursor.bPosition=POS_BUTTON_LIST;
if (bKey == KEY_LEFT)
{
__MMSelectCursor.wIndex = MM_BTN_DELETE_ALL;
}
else if (bKey == KEY_RIGHT)
{
__MMSelectCursor.wIndex=MM_BTN_RETURN;
}
// Update final cursor on menu
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT,0);
}
else if (__MMSelectCursor.bPosition == POS_DLG_ITEM)
{
OSDMM_Update(OSDMM_MSG_CLEAR_HIGHLIGHT,0);
if (__bMMPopMenuID == MM_POP_MENU_FILTER)
{
if (__MMSelectCursor.wIndex < OSDMM_FILTER_DLG_ROW_NUM)
__MMSelectCursor.wIndex+=(OSDMM_FILTER_DLG_ROW_NUM);
else
__MMSelectCursor.wIndex-=OSDMM_FILTER_DLG_ROW_NUM;
if (__MMSelectCursor.wIndex >= MAX_EXTENSION_NO)
{
__MMSelectCursor.bPosition = POS_BUTTON_LIST;
}
}
else if (__bMMPopMenuID == MM_POP_MENU_SORT)
{
if (bKey == KEY_LEFT)
{
if (__MMSelectCursor.wIndex < MM_SORT_TYPE)
{
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT,0);
return KEY_INVALID;
}
else
__MMSelectCursor.wIndex = 0;
}
else if (bKey == KEY_RIGHT)
{
if (__MMSelectCursor.wIndex >= MM_SORT_TYPE)
{
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT,0);
return KEY_INVALID;
}
else
__MMSelectCursor.wIndex = MM_SORT_TYPE;
}
}
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT,0);
}
// return no key because all thing done
return KEY_NO_KEY;
break;
case KEY_STOP:
// wyc0.87, avoid second time KEY_STOP to make cuesor move up to 1st playing file.
if (__bCountStop >= 2)
return KEY_STOP;
case KEY_RETURN:
// wyc0.80, when press KEY_MENU, let it go same path as KEY_STOP.
case KEY_MENU:
// Use __MMPlayingItem.wDirID to keep final directory information
// Because, we want to check final directory and active directory if same
// Then, to re-draw Menu
// [1] Pre-Stop : same as current __MMPlayingItem.wDirID
// [2] Real-Stop : return to ROOT, so __MMPlayingItem.wDirID=0
// [3] Return: return to current playing directory
#ifdef SUPPORT_ENCODE_JPG_PICTURE
if ((__SF_SourceGBL[0].bSourceIndex == SOURCE_SPI) && ((__bKey == KEY_MENU) || (__bKey == KEY_RETURN)))
{
return INVALID_KEY;
}
#endif //SUPPORT_ENCODE_JPG_PICTURE
if ((__bCountStop==1) && (bKey==KEY_STOP) && (__bMMMenuID != MM_MENU_NONE))// Pre-stop --> Real Stop
{
//CoCo1.25, MP3 playing ==> move cursor to the ROOT (no other DIRs in the left window)==>KEY_STOP==>STOP
if (__MMSelectCursor.bPosition == POS_VOL_DIR_LIST)
return KEY_STOP;
OSDMM_Update(OSDMM_MSG_CLEAR_HIGHLIGHT, 0);
// wyc0.91, when rel stop in program list mode, need to clear all program entries because real stop will clear all program entries.
if (__bMMMenuID == MM_MENU_PROGLIST)
{
OSDMM_Update(OSDMM_MSG_PROGRAM_DELETE_ALL,0);
#ifndef NO_MM_BUTTON
OSDMM_Update(OSDMM_MSG_DISABLE_BUTTON, MM_BTN_DELETE_ALL);
#endif //
__MMSelectCursor.bPosition = POS_BUTTON_LIST;
__MMSelectCursor.wIndex = MM_BTN_RETURN;
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT, 0);
if (__btProgram)
LINEAR_Program(LINEAR_PROGRAM_CLEAR,NULL_0);
// wyc0.91, the reason of setting to TRUE is because system don't exit program list mode yet and we assume program
// list mode is also in program mode. So need to initial these two variables to TRUE. Otherwise, there are problems
// when press BTN_RETURN to back to program edit mode because of program variables wrong.
__btProgram= TRUE;
__btInputProgram=TRUE;
}
else
{
__MMSelectCursor.wIndex = __pMMVolumeDirTree[__MMSelectCursor.wDirID].bNoOfSubDir ;
// wyc0.80, when JPG slide show and press KEY_STOP to enter MM UI, then press KEY_STOP again. Need to handle the STOP
// action here because if let CC to handle KEY_STOP, then preview action will be ignored.
OSDMM_Update(OSDMM_MSG_UPDATE_HIGHLIGHT, 0);
if (__pMMFileRecord->FileName.bExtID == EXTNAME_JPG)
{
MM_JPEGPreview();
}
if (__btProgram) //Clear program mode in real-stop mode.
{
LINEAR_Program(LINEAR_PROGRAM_CLEAR,NULL_0);
}
}
__bCountStop = 2;
#ifdef SET_REPEAT_OFF_WHEN_FULL_STOP
__bRepeat = REPEAT_NONE;
#endif //
OSD_OUTPUT_MACRO(MSG_STOP, 0, 3);
return KEY_NO_KEY;
}
if ((bKey==KEY_STOP) || (bKey == KEY_MENU))
{
#ifdef IMAGE_FRAME_SETUP
if (bKey == KEY_STOP)
{
if (__ImageFrameSetupInfo.bBrowse == SETUP_PHOTO_SETTING_BROWSE_FILE_MANAGER)
{
#ifdef SUPPORT_ENCODE_JPG_PICTURE
if ((__SF_SourceGBL[0].bSourceIndex != SOURCE_SPI) && (__bAttrPlay == ATTR_JPG))
#endif //SUPPORT_ENCODE_JPG_PICTURE
{
bKey = KEY_MENU;
}
}
}
#endif //IMAGE_FRAME_SETUP
// wyc0.80, when KEY_STOP from MM_MENU_NONE, need to enter thumbnail mode when playing JPG.
if (__bMMMenuID == MM_MENU_NONE)
{
#ifdef IMAGE_FRAME_SETUP
//CoCo2.53, fix the bug about after playing the last jpeg file,UI will auto enter filemanager ui not thumbnail ui when setup browse item setting is thumbnail
if ((__bAttrPlay == ATTR_JPG) && (bKey == KEY_STOP))
{
if ((__ImageFrameSetupInfo.bBrowse == SETUP_PHOTO_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -