/** * @brief Notify State Change * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ void _cbNotifyStateChange (void) { WM_HWIN hItem; if(AUDIO_RECORDER_GetState() == AUDIO_RECORDER_SUSPENDED) { if(RecorderMode == RECORDER_MODE_PLAYING) { RecorderMode = RECORDER_MODE_PLAY_IDLE; hItem = WM_GetDialogItem(hMainWin, ID_RECORD_REC_CANCEL_PLAY); WM_InvalidateWindow(hItem); WM_Update(hItem); } if(RecorderMode == RECORDER_MODE_RECORDING) { RecorderMode = RECORDER_MODE_REC_IDLE; } hItem = WM_GetDialogItem(hMainWin, ID_EQUAL); IMAGE_SetBitmap(hItem, &bmframe0); WM_InvalidateWindow(hItem); WM_Update(hItem); if(hMainWin != 0) { hItem = WM_GetDialogItem(hMainWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, "00:00"); WM_Update(hItem); } } }
/** * @brief Game window Startup * @param hWin: pointer to the parent handle. * @param xpos: X position * @param ypos: Y position * @retval None */ void VNC_SERVER_StatusChanged (uint8_t status) { WM_HWIN hItem; hItem = WM_GetDialogItem(hVncWin, ID_VNC_CONNECTION); switch (status) { case VNC_IDLE: case VNC_LINK_DOWN: case VNC_ERROR: IMAGE_SetBitmap(hItem, &bmconnection_ko); WM_InvalidateWindow(hItem); WM_Update(hItem); break; case VNC_LINK_UP: case VNC_WAIT_FOR_ADDRESS: IMAGE_SetGIF(hItem, vnc_connection, sizeof(vnc_connection)); WM_InvalidateWindow(hItem); WM_Update(hItem); break; case VNC_ADDRESS_ASSIGNED: case VNC_CONN_ESTABLISHED: IMAGE_SetBitmap(hItem, &bmconnection_ok); hItem = WM_GetDialogItem(hVncWin, START_VNC); WM_InvalidateWindow(hItem); WM_Update(hItem); break; default: break; } }
/** * @brief Callback function for movie player. Uses multiple buffering if * available to avoid tearing effects. * @param hMem: pointer to parent handle * @param Notification: notification ID * @param CurrentFrame: current playing frame * @retval None */ void _cbNotify(GUI_HMEM hMem, int Notification, U32 CurrentFrame) { long progress; WM_HWIN hItem; switch (Notification) { case GUI_MOVIE_NOTIFICATION_PREDRAW: GUI_MULTIBUF_Begin(); break; case GUI_MOVIE_NOTIFICATION_POSTDRAW: GUI_MULTIBUF_End(); progress = 100 * GUI_MOVIE_GetFrameIndex(hMovie)/ Video_Info.NumFrames; hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PROGRESS_SLIDER); SLIDER_SetValue(hItem, progress); break; case GUI_MOVIE_NOTIFICATION_STOP: if(GUI_MOVIE_GetFrameIndex(hMovie) >= (Video_Info.NumFrames - 1)) { if( FullScreen == 1) { WM_InvalidateWindow(hBigFrame); WM_Update(hBigFrame); } _StopPlay(); if(PlayerSettings.b.repeat != REPEAT_NONE) { if (PlayerSettings.b.repeat == REPEAT_ALL) { if(Video_file_pos < (pVideoList->ptr - 1)) { Video_file_pos++; } else { Video_file_pos = 0; } LISTVIEW_SetSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST), Video_file_pos); } _StartPlay((char *)pVideoList->file[Video_file_pos].name); } else { hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } } break; } }
/** * @brief Close full screen * @param None * @retval None */ static uint8_t _CloseFullScreen(void) { WM_HWIN hItem; int XPos, YPos, XSize, YSize, nx, ny, n; __GetWindowRect(&XPos, &YPos, &XSize, &YSize); nx = (XSize * 1000) / Video_Info.xSize; ny = (YSize * 1000) / Video_Info.ySize; if (nx < ny) { n = nx; } else { n = ny; } XPos = XPos + (XSize - ((Video_Info.xSize * n) / 1000)) / 2; YPos = YPos + (YSize - ((Video_Info.ySize * n) / 1000)) / 2; GUI_MOVIE_ShowScaled(hMovie, XPos, YPos, n, 1000, 0); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); FullScreen = 0; return 0; }
/** * @brief Notify the end of wav file. * @param None. * @retval Audio state. */ AUDIOPLAYER_ErrorTypdef AUDIOPLAYER_NotifyEndOfFile(void) { WM_HWIN hItem; AUDIOPLAYER_Stop(); if(PlayerSettings.b.repeat != REPEAT_NONE) { if (PlayerSettings.b.repeat == REPEAT_ALL) { if(file_pos < (pWavList->ptr - 1)) { file_pos++; } else { file_pos = 0; } LISTVIEW_SetSel(WM_GetDialogItem(AUDIOPLAYER_hWin, ID_WAVFILE_LIST), file_pos); } _PlayFile((char *)pWavList->file[file_pos].name); } else { PlayerSettings.b.pause = PLAY_ACTIVE; hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } return AUDIOPLAYER_ERROR_NONE; }
/** * @brief Callback function of the media connection status * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMediaConnection(WM_MESSAGE * pMsg) { WM_HWIN hItem; static WM_HTIMER hStatusTimer; static uint8_t prev_usb_status = 0; switch (pMsg->MsgId) { case WM_CREATE: prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); hStatusTimer = WM_CreateTimer(pMsg->hWin, 0, 500, 0); break; case WM_TIMER: if(prev_usb_status != k_StorageGetStatus(USB_DISK_UNIT)) { prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); if(pVideoList->file[file_pos].name[0] == '0') { if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PROGRESS_SLIDER); SLIDER_SetValue(hItem, 0); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); WM_InvalidateWindow(hFrame); } } } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: if(hStatusTimer != 0) { WM_DeleteTimer(hStatusTimer); hStatusTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Show full screen * @param None * @retval None */ static uint8_t _ShowFullScreen(void) { int XPos, YPos, nx, ny, n; WM_HWIN hItem; if(hMovie != 0) { FullScreen = 1; WM_CreateWindowAsChild(0, 0, LCD_GetXSize(), LCD_GetYSize(), WM_HBKWIN, WM_CF_SHOW | WM_CF_STAYONTOP, _cbFullScreen, 0); if((Video_Info.xSize != LCD_GetXSize()) ||(Video_Info.ySize != LCD_GetYSize())) { nx = (LCD_GetXSize() * 1000) / Video_Info.xSize; ny = (LCD_GetYSize() * 1000) / Video_Info.ySize; if (nx < ny) { n = nx; } else { n = ny; } XPos = (LCD_GetXSize() - ((Video_Info.xSize * n) / 1000)) / 2; YPos = (LCD_GetYSize() - ((Video_Info.ySize * n) / 1000)) / 2; GUI_MOVIE_ShowScaled(hMovie, XPos, YPos, n, 1000, 0); } else { XPos = (LCD_GetXSize() - Video_Info.xSize) / 2; YPos = (LCD_GetYSize() - Video_Info.ySize) / 2; GUI_MOVIE_Show(hMovie, XPos, YPos, 0); VideoPlayer_State = VIDEO_PLAY; hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } } return 0; }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = BUTTON_CreateEx(420, 0, 60, 60, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); hItem = WM_GetDialogItem(pMsg->hWin, ID_VNC_CONNECTION); IMAGE_SetBitmap(hItem, &bmconnection_ko); hItem = BUTTON_CreateEx(315, 195, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, START_VNC); WM_SetCallback(hItem, _cbButton_start); hItem = BUTTON_CreateEx(380, 195, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, GO_BACKGROUND); WM_SetCallback(hItem, _cbButton_bg); hItem = BUTTON_CreateEx(245, 195, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_LOCK); WM_SetCallback(hItem, _cbButton_lock); hItem = WM_GetDialogItem(pMsg->hWin, GO_BACKGROUND); BUTTON_SetFont(hItem, &GUI_FontLubalGraph16B); break; case WM_PAINT: GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_SetPenSize(5); GUI_DrawBitmap(&bmconnect, 7, 45); GUI_DrawCircle(332, 215, 40); GUI_AA_FillCircle(332, 215, 45); GUI_AA_FillRoundedRect(230, 182, 440, 250, 20); GUI_SetColor(GUI_WHITE); GUI_AA_FillCircle(332, 215, 42); GUI_SetBkColor(GUI_WHITE); GUI_AA_FillRoundedRect(233, 185, 437, 247, 20); GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_AA_FillCircle(332, 215, 33); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { case START_VNC: /* Notifications sent by 'Start' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: if((VNC_GetState() == VNC_IDLE)|| (VNC_GetState() == VNC_INIT)) { VNC_SERVER_LogMessage("Starting VNC connection..."); hItem = WM_GetDialogItem(pMsg->hWin, ID_VNC_CONNECTION); IMAGE_SetBitmap(hItem, &bmno_connection); VNC_SetState (VNC_INIT); WM_Exec(); VNC_SERVER_Start(); } else { VNC_SERVER_Stop(); } break; case WM_NOTIFICATION_CLICKED: hItem = WM_GetDialogItem(pMsg->hWin, START_VNC); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case GO_BACKGROUND: /* Notifications sent by 'Background' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: WM_HideWindow(pMsg->hWin); module_prop[k_ModuleGetIndex(&vnc_server)].win_state = 1; ST_AnimatedIconView_SetItemText(hIcon,k_ModuleGetIndex(&vnc_server),"vnc server[B]"); ST_AnimatedIconView_SetDualTextColor(hIcon, ICONVIEW_CI_SEL, GUI_STCOLOR_LIGHTBLUE, GUI_STCOLOR_DARKBLUE ); break; } break; case ID_BUTTON_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VNC_GetState() != VNC_IDLE) { VNC_SERVER_Stop(); } GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_LOCK: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VNC_GetState() == VNC_IDLE) { if(VNC_GetLockState()) { VNC_SetLockState(0); } else { VNC_SetLockState(1); } } break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of the dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id, ItemNbr; int result; int duration, volume, index; static char tmp[FILEMGR_FILE_NAME_SIZE]; switch (pMsg->MsgId) { case WM_INIT_DIALOG: pWavList = (FILELIST_FileTypeDef *)k_malloc(sizeof(FILELIST_FileTypeDef)); pFileInfo = (CHOOSEFILE_INFO *)k_malloc(sizeof(CHOOSEFILE_INFO)); pWavList->ptr = 0; /* Initialization of 'Listview' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_WAVFILE_LIST); LISTVIEW_AddColumn(hItem, 132, "Track", GUI_TA_VCENTER | GUI_TA_LEFT); LISTVIEW_AddColumn(hItem, 55, "Duration", GUI_TA_VCENTER | GUI_TA_RIGHT); LISTVIEW_SetGridVis(hItem, 0); LISTVIEW_SetAutoScrollV(hItem, 1); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_UNSEL, GUI_BLACK); LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_UNSEL, GUI_CYAN); /* Title Initialization in play list */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE_CAPTION); TEXT_SetText(hItem, "TITLE:"); TEXT_SetTextColor(hItem, GUI_CYAN); /* Title Initialization in play list */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TITLE); TEXT_SetTextColor(hItem, GUI_CYAN); /* Duration */ hItem = WM_GetDialogItem(pMsg->hWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, "00:00"); TEXT_SetFont(hItem, GUI_FONT_20B_1); TEXT_SetTextColor(hItem, GUI_LIGHTGRAY); /* Author initialization */ hItem = WM_GetDialogItem(pMsg->hWin, ID_AUTHOR_CAPTION); TEXT_SetText(hItem, "AUTHOR:"); TEXT_SetTextColor(hItem, GUI_CYAN); /* Author */ hItem = WM_GetDialogItem(pMsg->hWin, ID_AUTHOR); TEXT_SetText(hItem, ""); TEXT_SetTextColor(hItem, GUI_CYAN); /* Sampling Rate */ hItem = WM_GetDialogItem(pMsg->hWin, ID_SAMPLING_CAPTION); TEXT_SetText(hItem, "SAMPLING:"); TEXT_SetTextColor(hItem, GUI_CYAN); /* Sampling Rate Value */ hItem = WM_GetDialogItem(pMsg->hWin, ID_SAMPLING_VALUE); TEXT_SetText(hItem, ""); TEXT_SetTextColor(hItem, GUI_CYAN); /* Duration */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TOTAL_TIME); TEXT_SetText(hItem, "00:00"); TEXT_SetTextColor(hItem, GUI_CYAN); /* Initialization of 'WAV' Button */ hItem = WM_GetDialogItem(pMsg->hWin, ID_WAV_BUTTON); BUTTON_SetFont(hItem, GUI_FONT_24_1); /* Initialization of 'Play List' Button */ hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_LIST_BUTTON); BUTTON_SetFont(hItem, GUI_FONT_24_1); /* Initialization of 'Add' Button */ hItem = WM_GetDialogItem(pMsg->hWin, ID_ADD_BUTTON); BUTTON_SetFont(hItem, GUI_FONT_24_1); volume = AUDIOPLAYER_GetVolume(); hItem = WM_GetDialogItem(pMsg->hWin, ID_VOLUME_SLIDER); SLIDER_SetValue(hItem, volume); hItem = WM_GetDialogItem(pMsg->hWin, ID_DURATION_SLIDER); SLIDER_SetNumTicks(hItem, 25); PlayerSettings.d32 = k_BkupRestoreParameter(CALIBRATION_AUDIOPLAYER_SETTING_BKP); PlayerSettings.b.mute = MUTE_OFF; PlayerSettings.b.pause = PLAY_ACTIVE; hItem = BUTTON_CreateEx(25, 100, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_REPEAT_BUTTON); WM_SetCallback(hItem, _cbButton_repeat); hItem = BUTTON_CreateEx(100, 95, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_MUTE_BUTTON); WM_SetCallback(hItem, _cbButton_speaker); hItem = BUTTON_CreateEx(22, 147, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_STOP_BUTTON); WM_SetCallback(hItem, _cbButton_stop); hItem = BUTTON_CreateEx(89, 147, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_PREVIOUS_BUTTON); WM_SetCallback(hItem, _cbButton_previous); hItem = BUTTON_CreateEx(148, 140, 50, 50, pMsg->hWin, WM_CF_SHOW, 0, ID_PLAY_BUTTON); WM_SetCallback(hItem, _cbButton_play); hItem = BUTTON_CreateEx(222, 147, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_NEXT_BUTTON); WM_SetCallback(hItem, _cbButton_next); hItem = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(20, 205, 50, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_WAV_BUTTON); WM_SetCallback(hItem, _cbButton_open); hItem = BUTTON_CreateEx(80, 205, 50, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_ADD_BUTTON); WM_SetCallback(hItem, _cbButton_add); hItem = BUTTON_CreateEx(235, 205, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_CLOSE_BUTTON); WM_SetCallback(hItem, _cbButton_close); hTimerWin = WM_CreateWindowAsChild(0, 100, 10, 10, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbAudioProcess, 0); hItem = WM_CreateWindowAsChild(15, 75, 255, 20, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS | WM_CF_BGND, _cbDrawProgressSlider, 0); hItem = WM_CreateWindowAsChild(145, 105, 125, 20, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS | WM_CF_BGND, _cbDrawVolumeSlider, 0); WM_CreateWindowAsChild(479, 250, 1, 1, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMediaConnection , 0); break; case WM_PAINT: GUI_SetBkColor(GUI_BLACK); GUI_ClearRect(15, 6, 270, 70); DrawRect3D(15, 135, 255, 60); DrawRect3D(15, 200, 255, 40); break; case WM_DELETE: AUDIOPLAYER_DeInit(); k_free(pWavList); k_free(pFileInfo); pWavList->ptr = 0; PlayerSettings.b.mute = MUTE_OFF; PlayerSettings.b.pause = PLAY_ACTIVE; k_BkupSaveParameter(CALIBRATION_AUDIOPLAYER_SETTING_BKP, PlayerSettings.d32); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { /* Notification sent by "Button_Close" */ case ID_CLOSE_BUTTON: switch (NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); break; } break; /* Notifications sent by 'Repeat' Button */ case ID_REPEAT_BUTTON: if(NCode == WM_NOTIFICATION_RELEASED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_REPEAT_BUTTON); if(PlayerSettings.b.repeat == REPEAT_NONE) { PlayerSettings.b.repeat = REPEAT_ONCE; } else if(PlayerSettings.b.repeat == REPEAT_ONCE) { PlayerSettings.b.repeat = REPEAT_ALL; } else if(PlayerSettings.b.repeat == REPEAT_ALL) { PlayerSettings.b.repeat = REPEAT_NONE; } } break; /* Notifications sent by 'Mute' Button */ case ID_MUTE_BUTTON: if(NCode == WM_NOTIFICATION_RELEASED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_MUTE_BUTTON); if(PlayerSettings.b.mute == MUTE_OFF) { AUDIOPLAYER_Mute(MUTE_ON); PlayerSettings.b.mute = MUTE_ON; } else { AUDIOPLAYER_Mute(MUTE_OFF); PlayerSettings.b.mute = MUTE_OFF; } } break; /* Notifications sent by 'Volume' Slider */ case ID_VOLUME_SLIDER: if(NCode == WM_NOTIFICATION_VALUE_CHANGED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_VOLUME_SLIDER); AUDIOPLAYER_SetVolume(SLIDER_GetValue(hItem)); if(PlayerSettings.b.mute == MUTE_ON) { AUDIOPLAYER_Mute(MUTE_OFF); PlayerSettings.b.mute = MUTE_OFF; } } break; /* Notifications sent by 'progress' Slider */ case ID_DURATION_SLIDER: if(NCode == WM_NOTIFICATION_CLICKED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_DURATION_SLIDER); AUDIOPLAYER_SetPosition(SLIDER_GetValue(hItem)); if(PlayerSettings.b.mute == MUTE_ON) { AUDIOPLAYER_Mute(MUTE_ON); } } break; /* Notifications sent by 'ListView' Slider */ case ID_WAVFILE_LIST: if(NCode == WM_NOTIFICATION_CLICKED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_WAVFILE_LIST); index = LISTVIEW_GetSel(hItem); if(index < pWavList->ptr) { if(playlist_select == 0) { hPlaylistTimer = WM_CreateTimer(hTimerWin, ID_PLAYLIST_TIMER, 500, 0); playlist_select = (index + 1); } else if(playlist_select == (index + 1)) { WM_DeleteTimer(hPlaylistTimer); hPlaylistTimer = 0; playlist_select = 0; if(index < pWavList->ptr) { if(AUDIOPLAYER_GetState() == AUDIOPLAYER_PLAY) { AUDIOPLAYER_Stop(); } PlayerSettings.b.pause = PLAY_ACTIVE; hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); file_pos = index; _PlayFile((char *)pWavList->file[index].name); } } } } break; /* Notifications sent by 'Play' Button */ case ID_PLAY_BUTTON: if(NCode == WM_NOTIFICATION_RELEASED) { if(AUDIOPLAYER_GetState() == AUDIOPLAYER_STOP) { if(pWavList->ptr > 0) { _PlayFile((char *)pWavList->file[file_pos].name); LISTVIEW_SetSel(WM_GetDialogItem(AUDIOPLAYER_hWin, ID_WAVFILE_LIST), file_pos); } else { pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_audio; hItem = CHOOSEFILE_Create(pMsg->hWin, 47, 10, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Open an audio file", 0, pFileInfo); WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { if((strstr(pFileInfo->pRoot, ".wav")) || (strstr(pFileInfo->pRoot, ".WAV"))) { if(AUDIOPLAYER_GetFileInfo(pFileInfo->pRoot, &WavInfo) == 0) { if(AUDIOPLAYER_GetState() == AUDIOPLAYER_PLAY) { /* Stop current audio sample */ AUDIOPLAYER_Stop(); } pWavList->ptr = 0; file_pos = 0; strcpy((char *)pWavList->file[pWavList->ptr].name, pFileInfo->pRoot); FILEMGR_GetFileOnly (tmp, pFileInfo->pRoot); hItem = WM_GetDialogItem(pMsg->hWin, ID_WAVFILE_LIST); /* Update Play list */ strcpy((char *)pWavList->file[pWavList->ptr].name, pFileInfo->pRoot); ItemNbr = LISTVIEW_GetNumRows(hItem); while(ItemNbr--) { LISTVIEW_DeleteRow(hItem, ItemNbr); } LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, pWavList->ptr, tmp); duration = WavInfo.FileSize / WavInfo.ByteRate; sprintf((char *)tmp , "%02d:%02d", duration/60, duration%60 ); LISTVIEW_SetItemText(hItem, 1, pWavList->ptr, tmp); pWavList->ptr++; LISTVIEW_SetSel(hItem, 0); _PlayFile(pFileInfo->pRoot); } } } } } else if(AUDIOPLAYER_GetState() == AUDIOPLAYER_PLAY) { PlayerSettings.b.pause = (PlayerSettings.b.pause == PLAY_ACTIVE ? PAUSE_ACTIVE : PLAY_ACTIVE); if(PlayerSettings.b.pause == PAUSE_ACTIVE) { AUDIOPLAYER_Pause(); } else if(PlayerSettings.b.pause == PLAY_ACTIVE) { AUDIOPLAYER_Resume(); } } } break; /* Notifications sent by 'STOP' Button */ case ID_STOP_BUTTON: if(NCode == WM_NOTIFICATION_RELEASED) { if(AUDIOPLAYER_GetState() == AUDIOPLAYER_PLAY) { if(PlayerSettings.b.pause == PAUSE_ACTIVE) { PlayerSettings.b.pause = PLAY_ACTIVE; } AUDIOPLAYER_Stop(); hItem = WM_GetDialogItem(pMsg->hWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, "00:00"); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } } break; /* Notifications sent by 'Next' Button */ case ID_NEXT_BUTTON: if(NCode == WM_NOTIFICATION_RELEASED) { if( pWavList->ptr > 0) { if(file_pos < (pWavList->ptr - 1)) { file_pos++; } else if(PlayerSettings.b.repeat == REPEAT_ALL) { file_pos = 0; } LISTVIEW_SetSel(WM_GetDialogItem(AUDIOPLAYER_hWin, ID_WAVFILE_LIST), file_pos); if(AUDIOPLAYER_GetState() == AUDIOPLAYER_PLAY) { if(PlayerSettings.b.pause == PAUSE_ACTIVE) { PlayerSettings.b.pause = PLAY_ACTIVE; hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } AUDIOPLAYER_Stop(); _PlayFile((char *)pWavList->file[file_pos].name); } } } break; /* Notifications sent by 'Previous' Button */ case ID_PREVIOUS_BUTTON: if(NCode == WM_NOTIFICATION_RELEASED) { if( pWavList->ptr > 0) { if(file_pos > 0) { file_pos--; } else if(PlayerSettings.b.repeat == REPEAT_ALL) { file_pos = (pWavList->ptr - 1); } LISTVIEW_SetSel(WM_GetDialogItem(AUDIOPLAYER_hWin, ID_WAVFILE_LIST), file_pos); if(AUDIOPLAYER_GetState() == AUDIOPLAYER_PLAY) { if(PlayerSettings.b.pause == PAUSE_ACTIVE) { PlayerSettings.b.pause = PLAY_ACTIVE; hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } AUDIOPLAYER_Stop(); _PlayFile((char *)pWavList->file[file_pos].name); } } } break; /* Notifications sent by 'Open' Button */ case ID_WAV_BUTTON: switch(NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_dir; hItem = CHOOSEFILE_Create(pMsg->hWin, 47, 10, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Add a folder", 0, pFileInfo); WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { _AddEntireFolder(pFileInfo->pRoot); } break; } break; /* Notifications sent by 'Add' Button */ case ID_ADD_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_audio; hItem = CHOOSEFILE_Create(pMsg->hWin, 47, 10, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Add to playlist", 0, pFileInfo); WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { if((strstr(pFileInfo->pRoot, ".wav")) || (strstr(pFileInfo->pRoot, ".WAV"))) { if(pWavList->ptr < FILEMGR_LIST_DEPDTH) { strcpy((char *)pWavList->file[pWavList->ptr].name, pFileInfo->pRoot); FILEMGR_GetFileOnly (tmp, pFileInfo->pRoot); hItem = WM_GetDialogItem(pMsg->hWin, ID_WAVFILE_LIST); if(AUDIOPLAYER_GetFileInfo(pFileInfo->pRoot, &WavInfo) == 0) { LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, pWavList->ptr, tmp); duration = WavInfo.FileSize / WavInfo.ByteRate; sprintf((char *)tmp , "%02d:%02d", duration/60, duration%60 ); LISTVIEW_SetItemText(hItem, 1, pWavList->ptr, tmp); pWavList->ptr++; } } } } } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback function of the media connection status * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMediaConnection(WM_MESSAGE * pMsg) { WM_HWIN hItem; static WM_HTIMER hStatusTimer; static uint8_t prev_sd_status = 0; static uint8_t prev_usb_status = 0; switch (pMsg->MsgId) { case WM_CREATE: prev_sd_status = k_StorageGetStatus(MSD_DISK_UNIT); prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); hStatusTimer = WM_CreateTimer(pMsg->hWin, 0, 500, 0); break; case WM_TIMER: if(prev_sd_status != k_StorageGetStatus(MSD_DISK_UNIT)) { prev_sd_status = k_StorageGetStatus(MSD_DISK_UNIT); if(pWavList->file[file_pos].name[0] == '1') { if(PlayerSettings.b.pause == PAUSE_ACTIVE) { PlayerSettings.b.pause = PLAY_ACTIVE; } AUDIOPLAYER_Stop(); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, "00:00"); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } } else if(prev_usb_status != k_StorageGetStatus(USB_DISK_UNIT)) { prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); if(pWavList->file[file_pos].name[0] == '0') { if(PlayerSettings.b.pause == PAUSE_ACTIVE) { PlayerSettings.b.pause = PLAY_ACTIVE; } AUDIOPLAYER_Stop(); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, "00:00"); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); } } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: if(hStatusTimer != 0) { WM_DeleteTimer(hStatusTimer); hStatusTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
/** * @brief callback for audio process * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbAudioProcess(WM_MESSAGE * pMsg) { uint32_t Id; WM_HWIN hItem; char tmp[] = "00:00"; long progress; uint32_t duration; switch (pMsg->MsgId) { case WM_CREATE: hProcessTimer = WM_CreateTimer(pMsg->hWin, ID_PROCESS_TIMER, 1000, 0); break; case WM_TIMER: Id = WM_GetTimerId(pMsg->Data.v); if(Id == ID_PROCESS_TIMER) { if(AUDIOPLAYER_GetState() == AUDIOPLAYER_PLAY) { progress = AUDIOPLAYER_GetProgress(); /*Set elapsed time */ duration = progress / WavInfo.ByteRate; sprintf((char *)tmp , "%02lu:%02lu", duration/60, duration%60 ); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, tmp); /* Set progress slider position */ hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_DURATION_SLIDER); progress = (long)(progress/(WavInfo.FileSize/100)); SLIDER_SetValue(hItem, progress); WM_Update(hItem); } AUDIOPLAYER_Process(); WM_RestartTimer(pMsg->Data.v, 1000); } else if (Id == ID_PLAYLIST_TIMER) { playlist_select = 0; } break; case WM_DELETE: WM_DeleteTimer(hProcessTimer); if(hPlaylistTimer) { WM_DeleteTimer(hPlaylistTimer); hPlaylistTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the image frame * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbImageWindow(WM_MESSAGE * pMsg) { WM_HWIN hItem; GUI_RECT r; int Id; const GUI_PID_STATE * pState; switch (pMsg->MsgId) { case WM_TOUCH: pState = (const GUI_PID_STATE *)pMsg->Data.p; if(pImageList->ptr > 0) { if (pState) { if (pState->Pressed == 1) { IMAGE_Enlarge ^= 1; if (IMAGE_Enlarge) { WM_AttachWindowAt(pMsg->hWin, WM_HBKWIN, 0, 0); WM_SetSize(pMsg->hWin, LCD_GetXSize(), LCD_GetYSize()); } else { WM_AttachWindowAt(pMsg->hWin, IMAGE_hWin, 6, 6); WM_SetSize(pMsg->hWin, 220, 134); } WM_InvalidateWindow(pMsg->hWin); } } } break; case WM_PAINT: WM_GetInsideRect(&r); GUI_ClearRectEx(&r); if (pImageList->ptr > 0) { if(_DrawImage(&Image_File, IMAGE_Enlarge, IMAGE_Type) > 0) { f_close(&Image_File); GUI_ClearRectEx(&r); GUI_DispStringAt("Error : Image cannot be displayed", 20, 80); if(hTimerTime != 0) { slideshow_state = OFF; hItem = WM_GetDialogItem(IMAGE_hWin, ID_SLIDE_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); WM_DeleteTimer(hTimerTime); hTimerTime = 0; } } } break; case WM_TIMER: Id = WM_GetTimerId(pMsg->Data.v); if(Id == ID_SLIDER_TIMER) { if(pImageList->ptr > 1) { if (file_pos < (pImageList->ptr - 1)) { file_pos++; } else if (file_pos == (pImageList->ptr - 1)) { file_pos=0; } if((strstr((char *)pImageList->file[file_pos].name, ".bmp")) || (strstr((char *)pImageList->file[file_pos].name, ".BMP"))) { IMAGE_Type = IMAGE_TYPE_BMP; } else if((strstr((char *)pImageList->file[file_pos].name, ".jpg")) || (strstr((char *)pImageList->file[file_pos].name, ".JPG"))) { IMAGE_Type = IMAGE_TYPE_JPG; } f_close(&Image_File); f_open(&Image_File, (char const *)pImageList->file[file_pos].name, FA_OPEN_EXISTING | FA_READ); WM_InvalidateWindow(imFrame); hItem = WM_GetDialogItem(IMAGE_hWin, ID_IMAGE_LIST); LISTBOX_SetSel(hItem, file_pos); } WM_RestartTimer(pMsg->Data.v, (ImSettings.b.ss_timer * 1000)); } else if (Id == ID_PLAYLIST_TIMER) { playlist_select = 0; } break; case WM_DELETE: if(hTimerTime != 0) { WM_DeleteTimer(hTimerTime); hTimerTime = 0; } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the media connection status * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMediaConnection(WM_MESSAGE * pMsg) { WM_HWIN hItem; static WM_HTIMER hStatusTimer; static uint8_t prev_usb_status = 0; switch (pMsg->MsgId) { case WM_CREATE: prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); hStatusTimer = WM_CreateTimer(pMsg->hWin, 0, 500, 0); break; case WM_TIMER: if(prev_usb_status != k_StorageGetStatus(USB_DISK_UNIT)) { prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); if(prev_usb_status == 0) { if( RecorderMode == RECORDER_MODE_RECORDING) { AUDIO_RECORDER_StopRec(); } else if( RecorderMode == RECORDER_MODE_PLAYING) { AUDIO_RECORDER_StopPlayer(); } hItem = WM_GetDialogItem(hMainWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, ">>>"); hItem = WM_GetDialogItem(hMainWin, ID_FILENAME); TEXT_SetText(hItem, "USB NOT ready"); RecorderMode = RECORDER_MODE_REC_DISABLED; hItem = WM_GetDialogItem(hMainWin, ID_RECORD_STOP); WM_DisableWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_RECORD_REC_CANCEL_PLAY); WM_DisableWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_RECORD_PAUSE); WM_DisableWindow(hItem); WM_Update(hItem); } else { hItem = WM_GetDialogItem(hMainWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, "Press"); hItem = WM_GetDialogItem(hMainWin, ID_FILENAME); TEXT_SetText(hItem, "[Record] to start"); RecorderMode = RECORDER_MODE_REC_IDLE; hItem = WM_GetDialogItem(hMainWin, ID_RECORD_STOP); WM_EnableWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_RECORD_REC_CANCEL_PLAY); WM_EnableWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_RECORD_PAUSE); WM_EnableWindow(hItem); WM_Update(hItem); } } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: if(hStatusTimer != 0) { WM_DeleteTimer(hStatusTimer); hStatusTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * WM_UpdateWindowAndDescs */ void WM_UpdateWindowAndDescs(WM_HWIN hWin) { WM_Update(hWin); WM__ForEachDesc(hWin, _cbUpdateWindowAndDescs, NULL); }
/********************************************************************* * * _cbUpdateWindowAndDescs */ static void _cbUpdateWindowAndDescs(WM_HWIN hWin, void* pData) { GUI_USE_PARA(pData); WM_Update(hWin); }
/** * @brief Callback function of the media connection status * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbMediaConnection(WM_MESSAGE * pMsg) { static WM_HTIMER hStatusTimer; static uint8_t prev_usb_status = 0; WM_HWIN hItem = 0; static char tmp[64]; uint32_t i = 0; switch (pMsg->MsgId) { case WM_CREATE: prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); hStatusTimer = WM_CreateTimer(pMsg->hWin, ID_TIMER_CONNECTION, 500, 0); break; case WM_TIMER: if(prev_usb_status != k_StorageGetStatus(USB_DISK_UNIT)) { prev_usb_status = k_StorageGetStatus(USB_DISK_UNIT); if(prev_usb_status == 0) { if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(&hvideo, &Video_File); } VideoList.ptr = 0; if(playbackwin) { GUI_EndDialog(playbackwin, 0); playbackwin = 0; SelLayer = 0; GUI_SetLayerVisEx (1, 0); GUI_SelectLayer(0); WM_InvalidateWindow(VideoWin); } if(hFrame) { WM_HideWindow(hFrame); WM_Exec(); WM_DeleteWindow(hFrame); hFrame = 0; } if(hPlaylistWin) { hItem = WM_GetDialogItem(hPlaylistWin, ID_VIDEO_LIST); i = LISTVIEW_GetNumRows(hItem); while(i--) { LISTVIEW_DeleteRow(hItem, i); } } } else { VideoList.ptr = 0; _AddEntireFolder("0:"); _AddEntireFolder("0:/Video"); if(hPlaylistWin) { if(VideoList.ptr > 0) { for(i=0; i<VideoList.ptr; i++) { strcpy(FileInfo.pRoot, (char *)VideoList.file[i].name); FILEMGR_GetFileOnly ((char *)tmp, (char *)FileInfo.pRoot); hItem = WM_GetDialogItem(hPlaylistWin, ID_VIDEO_LIST); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, i, (char *)tmp); } WM_InvalidateWindow(hItem); WM_Update(hItem); } } } } WM_RestartTimer(pMsg->Data.v, 500); break; case WM_DELETE: if(hStatusTimer != 0) { WM_DeleteTimer(hStatusTimer); hStatusTimer = 0; } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Refresh browser. * @param hWin: pointer to the parent handle * @retval None */ static void _RefreshBrowser ( WM_HWIN hWin) { WM_HWIN hItem, Hint; TREEVIEW_ITEM_Handle hTreeView; uint32_t free, total; char str[FILEMGR_FULL_PATH_SIZE]; GUI_Exec(); /* Show Hint */ Hint = WM_CreateWindowAsChild(50, 80, 140, 32, hWin, WM_CF_SHOW , _cbHint, 0); GUI_Exec(); hItem = WM_GetDialogItem(hWin, ID_PROGBAR_USB); if(k_StorageGetStatus (MSD_DISK_UNIT)) { free = k_StorageGetFree(MSD_DISK_UNIT); total = k_StorageGetCapacity(MSD_DISK_UNIT); PROGBAR_SetValue (hItem, ((total - free) * 100)/total); hItem = WM_GetDialogItem(hWin, ID_TEXT_MSD); sprintf(str, "microSD [%lu MB]", total / (2 * 1024)); TEXT_SetText(hItem, str); } else { PROGBAR_SetValue (hItem, 0); hItem = WM_GetDialogItem(hWin, ID_TEXT_MSD); TEXT_SetText(hItem, "microSD [N/A]" ); } hItem = WM_GetDialogItem(hWin, ID_PROGBAR_MSD); if(k_StorageGetStatus (USB_DISK_UNIT)) { free = k_StorageGetFree(USB_DISK_UNIT); total = k_StorageGetCapacity(USB_DISK_UNIT); PROGBAR_SetValue (hItem, ((total - free) * 100)/total); hItem = WM_GetDialogItem(hWin, ID_TEXT_USB); sprintf(str, "USB Disk [%lu MB]", total / (2 * 1024)); TEXT_SetText(hItem, str); } else { PROGBAR_SetValue (hItem, 0); hItem = WM_GetDialogItem(hWin, ID_TEXT_USB); TEXT_SetText(hItem, "USB Disk [N/A]" ); } hTreeView = WM_GetDialogItem(hWin, ID_TREEVIEW); hItem = TREEVIEW_GetItem(hTreeView, 0, TREEVIEW_GET_FIRST); if(hItem != 0) { TREEVIEW_ITEM_Delete (hItem); } ExploreDisks(hTreeView); WM_DeleteWindow(Hint); WM_InvalidateWindow(hExplorerWin); WM_Update(hExplorerWin); }
/** * @brief Callback routine of the dialog * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem, hClient; int NCode; int Id, Index, newpos; GUI_RECT r; int ItemNbr; int result; static char tmp[FILEMGR_FILE_NAME_SIZE]; switch (pMsg->MsgId) { case WM_INIT_DIALOG: pVideoList = (FILELIST_FileTypeDef *)k_malloc(sizeof(FILELIST_FileTypeDef)); pFileInfo = (CHOOSEFILE_INFO *)k_malloc(sizeof(CHOOSEFILE_INFO)); pVideoList->ptr = 0; PlayerSettings.d32 = k_BkupRestoreParameter(CALIBRATION_VIDEOPLAYER_SETTING_BKP); /* Initialization of 'Listview' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); LISTVIEW_AddColumn(hItem, 165, "Video", GUI_TA_VCENTER | GUI_TA_LEFT); LISTVIEW_SetGridVis(hItem, 0); LISTVIEW_SetAutoScrollV(hItem, 1); LISTVIEW_SetBkColor(hItem, LISTVIEW_CI_UNSEL, GUI_BLACK); LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_UNSEL, GUI_CYAN); hItem = BUTTON_CreateEx( 240, 202, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_STOP_BUTTON); WM_SetCallback(hItem, _cbButton_stop); hItem = BUTTON_CreateEx(92, 202, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_PREVIOUS_BUTTON); WM_SetCallback(hItem, _cbButton_previous); hItem = BUTTON_CreateEx(137, 195, 50, 45, pMsg->hWin, WM_CF_SHOW, 0, ID_PLAY_BUTTON); WM_SetCallback(hItem, _cbButton_play); hItem = BUTTON_CreateEx(195, 202, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_NEXT_BUTTON); WM_SetCallback(hItem, _cbButton_next); hItem = BUTTON_CreateEx(47, 205, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_REPEAT_BUTTON); WM_SetCallback(hItem, _cbButton_repeat); hItem = BUTTON_CreateEx(315, 205, 70, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_OPEN_BUTTON); WM_SetCallback(hItem, _cbButton_open); hItem = BUTTON_CreateEx(375, 205, 70, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_ADD_BUTTON); WM_SetCallback(hItem, _cbButton_add); hItem = BUTTON_CreateEx(440, 202, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_CLOSE_BUTTON); WM_SetCallback(hItem, _cbButton_close); hItem = BUTTON_CreateEx(281, 172, 25, 25, pMsg->hWin, WM_CF_SHOW, 0, ID_FULL_SCREEN_BUTTON); WM_SetCallback(hItem, _cbButton_fullscreen); hClient = WM_GetClientWindow(pMsg->hWin); WM_GetClientRectEx(hClient, &r); hFrame = WM_CreateWindowAsChild(r.x0 + 5, r.y0 + 5, r.x1 - 179, r.y1 - 75, hClient, WM_CF_SHOW, _cbVideoWindow , 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_BUTTON); hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGRESS_SLIDER); SLIDER_SetNumTicks(hItem, 25); hItem = WM_CreateWindowAsChild(05, 163, 275, 20, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS | WM_CF_BGND, _cbDrawProgressSlider, 0); WM_CreateWindowAsChild(479, 250, 1, 1, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMediaConnection , 0); break; case WM_PAINT: DrawRect3D(05, 193, 300, 50); DrawRect3D(310, 193, 165, 50); break; case WM_TIMER: Id = WM_GetTimerId(pMsg->Data.v); if (Id == ID_PLAYLIST_TIMER) { playlist_select = 0; } break; case WM_DELETE: k_BkupSaveParameter(CALIBRATION_VIDEOPLAYER_SETTING_BKP, PlayerSettings.d32); WM_DeleteTimer(hPlaylistTimer); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { /* Notification sent by "Close Button" */ case ID_FULL_SCREEN_BUTTON: switch (NCode) { case WM_NOTIFICATION_RELEASED: if( VideoPlayer_State != VIDEO_IDLE) { _ShowFullScreen(); } break; } break; /* Notifications sent by 'Add' Button */ case ID_ADD_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_video; hItem = CHOOSEFILE_Create(pMsg->hWin, 47, 10, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Add video file to playlist", 0, pFileInfo); if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Pause(hMovie); } WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { if((strstr(pFileInfo->pRoot, ".emf")) || (strstr(pFileInfo->pRoot, ".EMF"))) { if(pVideoList->ptr < FILEMGR_LIST_DEPDTH) { strcpy((char *)pVideoList->file[pVideoList->ptr].name, pFileInfo->pRoot); FILEMGR_GetFileOnly ((char *)tmp, (char *)pFileInfo->pRoot); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, pVideoList->ptr, tmp); pVideoList->ptr++; } } WM_InvalidateWindow(hFrame); } if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Play(hMovie); } break; } break; /* Notifications sent by 'Open' Button */ case ID_OPEN_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_dir; hItem = CHOOSEFILE_Create(pMsg->hWin, 47, 10, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Add a folder", 0, pFileInfo); if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Pause(hMovie); } WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { _AddEntireFolder(pFileInfo->pRoot); WM_InvalidateWindow(hFrame); } if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Play(hMovie); } break; } break; /* Notification sent by "Full Screen button" */ case ID_CLOSE_BUTTON: switch (NCode) { case WM_NOTIFICATION_RELEASED: k_free(pVideoList); k_free(pFileInfo); _StopPlay(); GUI_EndDialog(pMsg->hWin, 0); break; } break; /* Notification sent by "Play Button" */ case ID_PLAY_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State == VIDEO_IDLE) { if (pVideoList->ptr > 0) { _StartPlay((char *)pVideoList->file[file_pos].name); LISTVIEW_SetSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST), file_pos); } else { pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_video; hItem = CHOOSEFILE_Create(pMsg->hWin, 47, 10, 385, 215, apDrives, GUI_COUNTOF(apDrives), 0, "Open a video file", 0, pFileInfo); WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { if((strstr(pFileInfo->pRoot, ".emf")) || (strstr(pFileInfo->pRoot, ".EMF"))) { pVideoList->ptr = 0; strcpy((char *)pVideoList->file[pVideoList->ptr].name, pFileInfo->pRoot); FILEMGR_GetFileOnly (tmp, pFileInfo->pRoot); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); /* Update Play list */ strcpy((char *)pVideoList->file[pVideoList->ptr].name, pFileInfo->pRoot); ItemNbr = LISTVIEW_GetNumRows(hItem); while(ItemNbr--) { LISTVIEW_DeleteRow(hItem, ItemNbr); } LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, pVideoList->ptr, tmp); pVideoList->ptr++; file_pos = 0; LISTVIEW_SetSel(hItem, 0); _StartPlay((char *)pVideoList->file[file_pos].name); WM_InvalidateWindow(hFrame); } } } } else if(VideoPlayer_State == VIDEO_PLAY) { _PausePlay(); } else if(VideoPlayer_State == VIDEO_PAUSE) { _ResumePlay(); } break; } break; case ID_REPEAT_BUTTON: if(NCode == WM_NOTIFICATION_RELEASED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_REPEAT_BUTTON); if(PlayerSettings.b.repeat == REPEAT_NONE) { PlayerSettings.b.repeat = REPEAT_ONCE; } else if(PlayerSettings.b.repeat == REPEAT_ONCE) { PlayerSettings.b.repeat = REPEAT_ALL; } else if(PlayerSettings.b.repeat == REPEAT_ALL) { PlayerSettings.b.repeat = REPEAT_NONE; } } break; case ID_STOP_BUTTON: _StopPlay(); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PROGRESS_SLIDER); SLIDER_SetValue(hItem, 0); WM_InvalidateWindow(hFrame); break; case ID_NEXT_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(file_pos < (pVideoList->ptr - 1)) { /* Play Next */ file_pos++; LISTVIEW_IncSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST)); } else if(PlayerSettings.b.repeat == REPEAT_ALL) { file_pos = 0; LISTVIEW_SetSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST), file_pos); } if(VideoPlayer_State == VIDEO_PLAY) { _StopPlay(); _StartPlay((char *)pVideoList->file[file_pos].name); WM_InvalidateWindow(hFrame); } break; } break; case ID_PREVIOUS_BUTTON: switch(NCode) { case WM_NOTIFICATION_RELEASED: if( pVideoList->ptr > 0) { if(file_pos > 0) { file_pos--; LISTVIEW_DecSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST)); } else if(PlayerSettings.b.repeat == REPEAT_ALL) { file_pos = (pVideoList->ptr - 1); LISTVIEW_SetSel(WM_GetDialogItem(VIDEOPLAYER_hWin, ID_VIDEO_LIST), file_pos); } if(VideoPlayer_State == VIDEO_PLAY) { _StopPlay(); _StartPlay((char *)pVideoList->file[file_pos].name); WM_InvalidateWindow(hFrame); } } break; } break; /* Notifications sent by 'progress' Slider */ case ID_PROGRESS_SLIDER: if(NCode == WM_NOTIFICATION_CLICKED) { if(VideoPlayer_State != VIDEO_IDLE) { GUI_MOVIE_Pause(hMovie); hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGRESS_SLIDER); newpos = (SLIDER_GetValue(hItem) * Video_Info.NumFrames)/100; GUI_MOVIE_GotoFrame(hMovie, newpos); if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Play(hMovie); } } } break; /* Notifications sent by 'ListView' Slider */ case ID_VIDEO_LIST: if(NCode == WM_NOTIFICATION_CLICKED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); Index = LISTVIEW_GetSel(hItem); if(Index < pVideoList->ptr) { file_pos = Index; if(playlist_select == 0) { hPlaylistTimer = WM_CreateTimer(pMsg->hWin, ID_PLAYLIST_TIMER, 500, 0); playlist_select = (Index + 1); } else if(playlist_select == (Index + 1)) { WM_DeleteTimer(hPlaylistTimer); hPlaylistTimer = 0; playlist_select = 0; if(Index < pVideoList->ptr) { if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(); } _StartPlay((char *)pVideoList->file[Index].name); hItem = WM_GetDialogItem(VIDEOPLAYER_hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); WM_InvalidateWindow(hFrame); } } } } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of the main dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetBitmap(hItem, &bmframe0); hItem = BUTTON_CreateEx(700, 0, 100, 100, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); hItem = BUTTON_CreateEx(540, 350, 80, 80, pMsg->hWin, WM_CF_SHOW, 0, ID_RECORD_PAUSE); WM_SetCallback(hItem, _cbButton_pause); hItem = BUTTON_CreateEx(320, 350, 80, 80, pMsg->hWin, WM_CF_SHOW, 0, ID_RECORD_STOP); WM_SetCallback(hItem, _cbButton_stop); hItem = BUTTON_CreateEx(430, 350, 80, 80, pMsg->hWin, WM_CF_SHOW, 0, ID_RECORD_REC_CANCEL_PLAY); WM_SetCallback(hItem, _cbButton_record); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAMECAPTION); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAME); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); hItem = WM_GetDialogItem(pMsg->hWin, ID_ELAPSED_TIME); TEXT_SetFont(hItem, &GUI_FontLubalGraph20); if((module_prop[k_ModuleGetIndex(&audio_player_board)].in_use) || (k_StorageGetStatus(USB_DISK_UNIT) == 0)) { if(module_prop[k_ModuleGetIndex(&audio_player_board)].in_use) { hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, ">>>"); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAME); TEXT_SetText(hItem, "Audio IF busy"); } if (k_StorageGetStatus(USB_DISK_UNIT) == 0) { hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, ">>>"); hItem = WM_GetDialogItem(pMsg->hWin, ID_FILENAME); TEXT_SetText(hItem, "USB NOT ready"); } RecorderMode = RECORDER_MODE_REC_DISABLED; hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_STOP); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_REC_CANCEL_PLAY); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_PAUSE); WM_DisableWindow(hItem); } else { RecorderMode = RECORDER_MODE_REC_IDLE; WM_CreateWindowAsChild(0, 100, 10, 10, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbAudioProcess, 0); } WM_CreateWindowAsChild(799, 460, 1, 1, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMediaConnection , 0); break; case WM_PAINT: GUI_DrawBitmap(&bmrecorder, 60, 120); GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_FillEllipse(470, 430, 214, 140); GUI_SetColor(GUI_WHITE); GUI_FillEllipse(470, 435, 214, 140); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { case ID_BUTTON_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(module_prop[k_ModuleGetIndex(&audio_player_board)].in_use == 0) { AUDIO_RECORDER_DeInit(); } GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_RECORD_PAUSE: switch(NCode) { case WM_NOTIFICATION_RELEASED: if((AUDIO_RECORDER_GetState() == AUDIO_RECORDER_PLAY_PAUSE)|| (AUDIO_RECORDER_GetState() == AUDIO_RECORDER_RECORD_PAUSE)) { AUDIO_RECORDER_PauseResume(); hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetGIF(hItem, equal, sizeof(equal)); WM_InvalidateWindow(hItem); WM_Update(hItem); } else if((AUDIO_RECORDER_GetState() == AUDIO_RECORDER_PLAYING)|| (AUDIO_RECORDER_GetState() == AUDIO_RECORDER_RECORDING)) { AUDIO_RECORDER_PauseResume(); hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetBitmap(hItem, &bmframe0); WM_InvalidateWindow(hItem); WM_Update(hItem); } break; } break; case ID_RECORD_STOP: switch(NCode) { case WM_NOTIFICATION_RELEASED: if( RecorderMode == RECORDER_MODE_RECORDING) { AUDIO_RECORDER_StopRec(); RecorderMode = RECORDER_MODE_PLAY_IDLE; } else if( RecorderMode == RECORDER_MODE_PLAYING) { AUDIO_RECORDER_StopPlayer(); RecorderMode = RECORDER_MODE_PLAY_IDLE; } else if( RecorderMode == RECORDER_MODE_PLAY_IDLE) { RecorderMode = RECORDER_MODE_REC_IDLE; } hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_REC_CANCEL_PLAY); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_STOP); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_PAUSE); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case ID_RECORD_REC_CANCEL_PLAY: switch(NCode) { case WM_NOTIFICATION_RELEASED: /* Start Recored */ if( RecorderMode == RECORDER_MODE_REC_IDLE) { _BuildFileName(); hItem = WM_GetDialogItem(hMainWin, ID_FILENAMECAPTION); TEXT_SetText(hItem, "File : "); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(hMainWin, ID_FILENAME); TEXT_SetText(hItem, FileName); WM_InvalidateWindow(hItem); WM_Update(hItem); AUDIO_RECORDER_SelectFile(FileName, FA_CREATE_ALWAYS | FA_WRITE); AUDIO_RECORDER_StartRec(DEFAULT_AUDIO_IN_FREQ); RecorderMode = RECORDER_MODE_RECORDING; hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetGIF(hItem, equal, sizeof(equal)); WM_InvalidateWindow(hItem); WM_Update(hItem); } /* Cancel */ else if( RecorderMode == RECORDER_MODE_RECORDING) { AUDIO_RECORDER_StopRec(); RecorderMode = RECORDER_MODE_REC_IDLE; AUDIO_RECORDER_RemoveAudioFile(FileName); } /* Start Play */ else if( RecorderMode == RECORDER_MODE_PLAY_IDLE) { RecorderMode = RECORDER_MODE_PLAYING; AUDIO_RECORDER_SelectFile(FileName, FA_OPEN_EXISTING | FA_READ); AUDIO_RECORDER_Play(DEFAULT_AUDIO_IN_FREQ); hItem = WM_GetDialogItem(pMsg->hWin, ID_EQUAL); IMAGE_SetGIF(hItem, equal, sizeof(equal)); WM_InvalidateWindow(hItem); WM_Update(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_REC_CANCEL_PLAY); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_STOP); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_RECORD_PAUSE); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
void Window::Update(){ Select(); WM_Update(); }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = BUTTON_CreateEx(700, 0, 100, 100, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); hItem = BUTTON_CreateEx(50, 40, 150, 135, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CAMERA); WM_SetCallback(hItem, _cbButton_camera); hItem = BUTTON_CreateEx(50, 235, 150, 135, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_ALARM); WM_SetCallback(hItem, _cbButton_alarm); hItem = BUTTON_CreateEx(410, 302, 100, 133, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CAM1); WM_SetCallback(hItem, _cbButton_cam1); hItem = BUTTON_CreateEx(510, 302, 180, 132, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CAM2); WM_SetCallback(hItem, _cbButton_cam2); hItem = BUTTON_CreateEx(510, 192, 180, 111, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CAM3); WM_SetCallback(hItem, _cbButton_cam3); hItem = BUTTON_CreateEx(510, 60, 180, 132, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CAM4); WM_SetCallback(hItem, _cbButton_cam4); hItem = BUTTON_CreateEx(240, 60, 270, 242, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CAM5); WM_SetCallback(hItem, _cbButton_cam5); hItem = BUTTON_CreateEx(240, 302, 170, 133, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CAM5_1); WM_SetCallback(hItem, _cbButton_cam5_1); /* Title Initialization in play list */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CAMERA1); TEXT_SetText(hItem, "watch"); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CAMERA2); TEXT_SetText(hItem, "room"); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_ALARM1); TEXT_SetText(hItem, "room"); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Title Initialization in play list */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_ALARM2); TEXT_SetText(hItem, "alarm"); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* Duration */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_ALARM3); TEXT_SetText(hItem, "(on/off)"); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { case ID_BUTTON_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_BUTTON_ALARM: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(HomeSettings.b.alarm == ALARM_ON) { HomeSettings.b.alarm = ALARM_OFF; } else { HomeSettings.b.alarm = ALARM_ON; } hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM2); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM3); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM4); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5_1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAMERA); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case ID_BUTTON_CAMERA: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(HomeSettings.b.alarm == ALARM_ON) { if(HomeSettings.b.camera != CAM_DESACTIVATED) { /* Camera frame initialization */ hCameraFrame = WM_CreateWindowAsChild(0, 0, 800, 480, pMsg->hWin, WM_CF_SHOW | WM_CF_LATE_CLIP, _cbCameraWindow, 0); } } break; } break; case ID_BUTTON_CAM1: switch(NCode) { case WM_NOTIFICATION_RELEASED: HomeSettings.b.camera = CAM_1; hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM2); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM3); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM4); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5_1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAMERA); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case ID_BUTTON_CAM2: switch(NCode) { case WM_NOTIFICATION_RELEASED: HomeSettings.b.camera = CAM_2; hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM3); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM4); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5_1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAMERA); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case ID_BUTTON_CAM3: switch(NCode) { case WM_NOTIFICATION_RELEASED: HomeSettings.b.camera = CAM_3; hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM2); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM4); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5_1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAMERA); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case ID_BUTTON_CAM4: switch(NCode) { case WM_NOTIFICATION_RELEASED: HomeSettings.b.camera = CAM_4; hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM2); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM3); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5_1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAMERA); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case ID_BUTTON_CAM5: switch(NCode) { case WM_NOTIFICATION_RELEASED: HomeSettings.b.camera = CAM_5; hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM2); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM3); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM4); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5_1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAMERA); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; case ID_BUTTON_CAM5_1: switch(NCode) { case WM_NOTIFICATION_RELEASED: HomeSettings.b.camera = CAM_5; hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM1); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM2); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM3); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM4); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAM5); WM_InvalidateWindow(hItem); WM_Update(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CAMERA); WM_InvalidateWindow(hItem); WM_Update(hItem); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }