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

📄 poweronmenu.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 4 页
字号:
    case POWERONMENU_ICON_ID_MOVIE:
        __pOSDUTLOutputString = aPOWERONIconMovie;
        break;
#endif //SUPPORT_MOVIE_ICON
#ifdef SUPPORT_SETUP_ICON
    case POWERONMENU_ICON_ID_SETUP:
        __pOSDUTLOutputString = aPOWERONIconSetup;
        break;
#endif //SUPPORT_SETUP_ICON
#ifdef SUPPORT_CALENDAR_ICON
    case POWERONMENU_ICON_ID_CALENDAR:
        __pOSDUTLOutputString = aPOWERONIconCalendar;
        break;
#endif //SUPPORT_CALENDAR_ICON
#ifdef SUPPORT_CLOCK_ICON
    case POWERONMENU_ICON_ID_CLOCK:
        __pOSDUTLOutputString = aPOWERONIconClock;
        break;
#endif //SUPPORT_CLOCK_ICON
#ifdef SUPPORT_ALARM_ICON
    case POWERONMENU_ICON_ID_ALARM:
        __pOSDUTLOutputString = aPOWERONIconAlarm;
        break;
#endif //SUPPORT_ALARM_ICON
#ifdef SUPPORT_AUTO_POWER_ICON
    case POWERONMENU_ICON_ID_AUTO_POWER:
        __pOSDUTLOutputString = aPOWERONIconAutoPower;
        break;
#endif //SUPPORT_AUTO_POWER_ICON
#ifdef SUPPORT_STB_ICON
    case POWERONMENU_ICON_ID_STB:
        __pOSDUTLOutputString = aMENUIconSTB;
        break;
#endif //SUPPORT_STB_ICON
#ifdef SUPPORT_EDIT_ICON
    case POWERONMENU_ICON_ID_EDIT:
        __pOSDUTLOutputString = aPOWERONIconEdit;
        break;
#endif //SUPPORT_EDIT_ICON
#ifdef SUPPORT_FAVORITE_ICON
    case POWERONMENU_ICON_ID_FAVORITE:
        __pOSDUTLOutputString = aPOWERONIconFavorite;
        break;
#endif //SUPPORT_FAVORITE_ICON
#ifdef SUPPORT_GAME_ICON
    case POWERONMENU_ICON_ID_GAME:
        __pOSDUTLOutputString = aPOWERONIconGame;
        break;
#endif //SUPPORT_GAME_ICON
#ifdef SUPPORT_RADIO_TUNER_ICON
    case POWERONMENU_ICON_ID_RADIO_TUNER:
        __pOSDUTLOutputString = aPOWERONIconRadio;
        break;
#endif //SUPPORT_RADIO_TUNER_ICON
    default:
        return;
    }              
    
    IconStringAttr.wX = PowerOnMenuIcon[bIconIndex].wStartX+((POWERONMENU_ICON_WIDTH-GDI_GetStringWidth(__pOSDUTLOutputString))>>1);
    IconStringAttr.wY = PowerOnMenuIcon[bIconIndex].wStartY+POWERONMENU_ICON_HEIGHT+POWERONMENU_ICON_TEXT_DISTANCE_V;        
    GDI_DrawString_909(0, &IconStringAttr, __pOSDUTLOutputString);   
}

BYTE _POWERONMENU_ProcessIcon(void)
{
    switch (PowerOnMenuIcon[_bPOWERONMENUCursorIndex].bIconID)
    {
#ifdef SUPPORT_PHOTO_ICON
    case POWERONMENU_ICON_ID_PHOTO:
        _POWERONMENU_EnterPhotoMode();                
        break;        
#endif //SUPPORT_PHOTO_ICON
#ifdef SUPPORT_MUSIC_ICON
    case POWERONMENU_ICON_ID_MUSIC:
        _POWERONMENU_EnterMusicMode();
        break;
#endif //SUPPORT_MUSIC_ICON
#ifdef SUPPORT_PHOTO_MUSIC_ICON
    case POWERONMENU_ICON_ID_PHOTO_PLUS_MUSIC:
        _POWERONMENU_EnterPhotoMusicMode();
        break;
#endif //SUPPORT_PHOTO_MUSIC_ICON
#ifdef SUPPORT_MOVIE_ICON
    case POWERONMENU_ICON_ID_MOVIE:
        _POWERONMENU_EnterMovieMode();
        break;
#endif //SUPPORT_MOVIE_ICON
#ifdef SUPPORT_SETUP_ICON
    case POWERONMENU_ICON_ID_SETUP:
        GDI_ClearRegion(0);
        __bFWKey = KEY_SETUP;
        break;
#endif //SUPPORT_SETUP_ICON
#ifdef SUPPORT_CALENDAR_ICON
    case POWERONMENU_ICON_ID_CALENDAR:
        _bPOWERONMENUSubUIMode = POWERONMENU_SUB_UI_CALENDAR;

#ifdef SUPPORT_SET_DATE_BY_MENU
        CALENDAR_Entry(CALENDAR_MODE_MENU);
#else
        CALENDAR_Entry(CALENDAR_MODE_SETTING);
#endif //SUPPORT_SET_DATE_BY_MENU
        break;
#endif //SUPPORT_CALENDAR_ICON
#ifdef SUPPORT_CLOCK_ICON
    case POWERONMENU_ICON_ID_CLOCK:
        _bPOWERONMENUSubUIMode = POWERONMENU_SUB_UI_CLOCK;
        CLOCK_Entry();
        break;
#endif //SUPPORT_CLOCK_ICON
#ifdef SUPPORT_ALARM_ICON
    case POWERONMENU_ICON_ID_ALARM:
        _bPOWERONMENUSubUIMode = POWERONMENU_SUB_UI_ALARM;
        ALARM_Entry();
        break;
#endif //SUPPORT_ALARM_ICON
#ifdef SUPPORT_AUTO_POWER_ICON
    case POWERONMENU_ICON_ID_AUTO_POWER:
        _bPOWERONMENUSubUIMode = POWERONMENU_SUB_UI_AUTO_POWER;
        AUTOPWR_Entry();
        break;
#endif //SUPPORT_AUTO_POWER_ICON
#ifdef SUPPORT_STB_ICON
    case POWERONMENU_ICON_ID_STB:
        MEDIA_STB();
        break;
#endif //SUPPORT_STB_ICON
#ifdef SUPPORT_EDIT_ICON
    case POWERONMENU_ICON_ID_EDIT:
        DVDSETUP_SetSlideShowIntervalTime();
        DVDSETUP_SetSlideShowEffect();

        _bPOWERONMENUSubUIMode = POWERONMENU_SUB_UI_EDIT;
        EDIT_Entry();
        break;
#endif //SUPPORT_EDIT_ICON
#ifdef SUPPORT_FAVORITE_ICON
    case POWERONMENU_ICON_ID_FAVORITE:
        _POWERONMENU_EnterFavoriteMode();
        break;
#endif //SUPPORT_FAVORITE_ICON
#ifdef SUPPORT_GAME_ICON
    case POWERONMENU_ICON_ID_GAME:
        GDI_ClearRegion(0);
        _bPOWERONMENUSubUIMode = POWERONMENU_SUB_UI_GAME;
        MAINMENU_Game_Menu_Initial();
        break;
#endif //SUPPORT_GAME_ICON
#ifdef SUPPORT_RADIO_TUNER_ICON
    case POWERONMENU_ICON_ID_RADIO_TUNER:
        POWERONMENU_InternalExit();
        RADIO_Entry(RADIO_MODE_NORMAL);
        break;
#endif //SUPPORT_RADIO_TUNER_ICON
    default:
        break;
    }

    return KEY_NO_KEY;
}        

void POWERONMENU_Trigger(BYTE bType, WORD wTime)
{
    switch (_bPOWERONMENUSubUIMode)
    {
    case POWERONMENU_SUB_UI_CALENDAR:
        CALENDAR_Trigger();
        break;
    case POWERONMENU_SUB_UI_CLOCK:
        CLOCK_Trigger(bType, wTime);
        break;
    case POWERONMENU_SUB_UI_ALARM:
        break;
    case POWERONMENU_SUB_UI_AUTO_POWER:
        break;
    case POWERONMENU_SUB_UI_EDIT:
        break;
#ifdef SUPPORT_GAME_ICON
    case POWERONMENU_SUB_UI_GAME:
        MAINMENU_Game_Menu_Trigger();
        break;
#endif //SUPPORT_GAME_ICON
    case POWERONMENU_SUB_UI_MODE_NONE:  
    default:
        break;
    }    
}

BYTE POWERONMENU_CheckModeKey(void)
{
    BYTE bMediaStatus;

    if ((__bKey != KEY_PHOTO) && (__bKey != KEY_MUSIC) && (__bKey != KEY_PHOTO_MUSIC) && (__bKey != KEY_MOVIE))
    {
        return KEY_BYPASS;
    }

	if (__bSetupMode == TRUE)
	{
		OSD_RemoveUI(OSD_UI_SETUP);
	}
    
    if (!__bPOWERONMENUInitial)
    {
#ifdef SUPPORT_JPEG_AUDIO_PLAYING
        if (__bMMJPEGAudioMode)
        {
            MM_ExitJPEGAudioMode();
        }
#endif //SUPPORT_JPEG_AUDIO_PLAYING
                
        MEDIA_ExitUSBSRC();
        
        bMediaStatus = MediaInfo[_MapSourceID2Index(__SF_SourceGBL[__dwSFStreamID].bSourceIndex)].bState;
        // wyc1.50-909, when doing pre-scan action, don't allow entering media select UI, otherwise system will auto play after exit
        // media select UI but system should pause when entering media select UI.
		/*--CoCo1.20, remove it becuase Elmer and YC confirmed what we don't do it for USB.
        if ((bMediaStatus == MEDIA_INSERT) || (bMediaStatus == MEDIA_PARSING) || ((__wDiscType & CDROM_M1) && (__bMotionState == MOTION_STATE_PRESCAN)))
        {
            return INVALID_KEY;
        }
        else
		*/
        {
#ifdef SUPPORT_JPEG_AUDIO_PLAYING
            if (__bMMJPEGAudioMode)
            {
                __bMMJPEGAudioMode = FALSE;
            }
#endif //SUPPORT_JPEG_AUDIO_PLAYING

            CC_KeyCommand(KEY_STOP);
            //MEDIA_Removed(SOURCE_DISC);
            // wyc1.05-909, reset state to open/close and show LOGO when media removed.
            CC_ResetState( KEY_OPEN_CLOSE );
                        
#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM    
            CC_ForceStop(CC_FORCE_STOP_FROM_POWERON_MENU);
#endif
        }
    }    
    else
    {
        POWERONMENU_Exit(OSD_UI_EXIT_ALL);
    }

    switch (__bKey)
    {
    case KEY_PHOTO:
        _POWERONMENU_EnterPhotoMode();
        break;
    case KEY_MUSIC:
        _POWERONMENU_EnterMusicMode();
        break;
    case KEY_PHOTO_MUSIC:
        _POWERONMENU_EnterPhotoMusicMode();
        break;
    case KEY_MOVIE:
        _POWERONMENU_EnterMovieMode();
        break;
    default:
        break;
    }

    return KEY_NO_KEY;
}

void _POWERONMENU_EnterPhotoMode(void)
{
    __bMMExtFilterMode = EXT_BIT_JPG;
    POWERONMENU_InternalExit();
    //Set JPEG relative setting always.
    DVDSETUP_SetSlideShowIntervalTime();
    DVDSETUP_SetSlideShowEffect();
    if (__ImageFrameSetupInfo.bAutoPlayPhoto == SETUP_AUTO_PLAY_PHOTO_ON)
    {
        __bMMAutoPlay = TRUE;
    }
    else
    {
        __bMMAutoPlay = FALSE;
    }
    
    MEDIA_USB();
}

void _POWERONMENU_EnterMusicMode(void)
{
#ifdef NL_SOLUTION
    __bMMExtFilterMode = EXT_BIT_MP3|EXT_BIT_MP2;
#else
    __bMMExtFilterMode = EXT_BIT_MP3|EXT_BIT_MP2|EXT_BIT_WMA;
#endif //NL_SOLUTION
    POWERONMENU_InternalExit();
    
    if (__ImageFrameSetupInfo.bAutoPlayMusic == SETUP_AUTO_PLAY_MUSIC_ON)
    {
        __bMMAutoPlay = TRUE;
    }
    else
    {
        __bMMAutoPlay = FALSE;
    }
    
    
    MEDIA_USB();
}

void _POWERONMENU_EnterPhotoMusicMode(void)
{
    __bMMExtFilterMode = EXT_BIT_JPG|EXT_BIT_MP3|EXT_BIT_MP2|EXT_BIT_WMA;

#ifdef SUPPORT_PLAY_MEDIA_DIRECTLY_POWER_ON
    if (__bMMPlayMediaDirectlyMode == FALSE)
#endif //SUPPORT_PLAY_MEDIA_DIRECTLY_POWER_ON
    {
        POWERONMENU_InternalExit();
    }
    
    //Set JPEG relative setting always.
    DVDSETUP_SetSlideShowIntervalTime();
    DVDSETUP_SetSlideShowEffect();
    
#ifdef SUPPORT_JPEG_AUDIO_PLAYING
    __bMMJPEGAudioMode = TRUE;
    __bMMAutoPlay = TRUE;
    __bRepeat = REPEAT_DISC;
#ifndef CT909P_IC_SYSTEM

    if( !(OS_PeekFlag(&__fThreadInit) & INIT_DEC_THREAD_JPEG_DONE) )
    {
        INITIAL_ThreadInit(THREAD_JPEG_DECODER);
        
        OS_YieldThread();
        
        OS_TimedWaitFlag( &__fThreadInit, INIT_DEC_THREAD_JPEG_DONE, FLAG_WAITMODE_AND,
            (COUNT_100_MSEC) );

        if( !(OS_PeekFlag(&__fThreadInit) & INIT_DEC_THREAD_JPEG_DONE) )
        {
            DBG_Printf(DBG_THREAD_CHEERDVD, DBG_INFO_PRINTF, "JPEG thread not initial done, value: %lx\n", OS_PeekFlag(&__fThreadInit));
        }
    }

    JPEGDEC_ConfigProcessor(1); //Use 1 processor only
#endif //#ifndef CT909P_IC_SYSTEM
#else
    
    if (__ImageFrameSetupInfo.bAutoPlayPhotoPlusMusic == SETUP_AUTO_PLAY_PHOTO_PLUS_MUSIC_ON)
    {
        __bMMAutoPlay = TRUE;
    }
    else
    {
        __bMMAutoPlay = FALSE;
    }
#endif //SUPPORT_JPEG_AUDIO_PLAYING
    
    MEDIA_USB();
}

void _POWERONMENU_EnterMovieMode(void)
{
    __bMMExtFilterMode = EXT_BIT_DAT|EXT_BIT_MPG|EXT_BIT_VOB|EXT_BIT_AVI;
    POWERONMENU_InternalExit();
    if (__ImageFrameSetupInfo.bAutoPlayMovie == SETUP_AUTO_PLAY_MOVIE_ON)
    {
        __bMMAutoPlay = TRUE;
    }
    else
    {
        __bMMAutoPlay = FALSE;
    }
    MEDIA_USB();
}

#ifdef SUPPORT_FAVORITE_FUNCTION
void _POWERONMENU_EnterFavoriteMode(void)
{
    if (__bMMJPGEncodeNum > 0)
    {
        POWERONMENU_InternalExit();
        //Set JPEG relative setting always.
        DVDSETUP_SetSlideShowIntervalTime();
        DVDSETUP_SetSlideShowEffect();
        
        // Switch source to SPI
        __wDiscType = BOOK_M1;
        __wPlayItem = 1;
        __SF_SourceGBL[0].bSourceIndex = SOURCE_SPI;
        __bModeCmd=KEY_PLAY;  //Winnie 1.03, fix first time key press key_next then show key play
        UTL_PlayItem(__wPlayItem, 0);
    }
    else
    {
        strcpy(__bMsgString, "No playable file");
        _bPOWERONMENUShowPlayableFile = TRUE; //CoCo1.11
        OSD_Output(MSG_NO_PLAYABLE_FILE, 0, 3);                     
    }
}
#endif //SUPPORT_FAVORITE_FUNCTION

#ifdef SUPPORT_PLAY_MEDIA_DIRECTLY_POWER_ON
void POWERONMENU_PowerOnPlayMediaDirectly(void)
{
    __bMMPlayMediaDirectlyMode = TRUE;

    _POWERONMENU_EnterPhotoMusicMode();
}
#endif //SUPPORT_PLAY_MEDIA_DIRECTLY_POWER_ON

⌨️ 快捷键说明

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