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

📄 mm_ui.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
                    // 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 + -