/********************************************************************* * * _ToggleFullScreenMode * * Purpose: * This routine switches between full screen mode and normal mode by hiding or showing the * widgets of the dialog, enlarging/shrinking the graph widget and modifying some other * attributes of the dialog widgets. */ static void _ToggleFullScreenMode(WM_HWIN hDlg) { static int FullScreenMode; static GUI_RECT Rect; static unsigned ScalePos; WM_HWIN hGraph, hButton; hGraph = WM_GetDialogItem(hDlg, GUI_ID_GRAPH0); hButton = WM_GetDialogItem(hDlg, GUI_ID_BUTTON0); FullScreenMode ^= 1; if (FullScreenMode) { /* Enter the full screen mode */ WM_HWIN hClient; GUI_RECT RectInside; hClient = WM_GetClientWindow(hDlg); BUTTON_SetText(hButton, "Back"); WM_MoveWindow(hButton, 0, 11); FRAMEWIN_SetTitleVis(hDlg, 0); WM_GetInsideRectEx(hClient, &RectInside); WM_GetWindowRectEx(hGraph, &Rect); WM_ForEachDesc(hClient, _ForEach, &FullScreenMode); /* Hide all descendants */ WM_SetWindowPos(hGraph, WM_GetWindowOrgX(hClient), WM_GetWindowOrgX(hClient), RectInside.x1, RectInside.y1); ScalePos = GRAPH_SCALE_SetPos(_hScaleH, RectInside.y1 - 105); } else { /* Return to normal mode */ BUTTON_SetText(hButton, "Full Screen"); WM_MoveWindow(hButton, 0, -11); WM_ForEachDesc(WM_GetClientWindow(hDlg), _ForEach, &FullScreenMode); /* Show all descendants */ WM_SetWindowPos(hGraph, Rect.x0, Rect.y0, Rect.x1 - Rect.x0 + 1, Rect.y1 - Rect.y0 + 1); FRAMEWIN_SetTitleVis(hDlg, 1); GRAPH_SCALE_SetPos(_hScaleH, ScalePos); } }
/********************************************************************* * * _ShowDemo */ static void _ShowDemo(void) { WM_HWIN hWin0; WM_HWIN hWin1; WM_HWIN hWin2; WM_HWIN hFrame1; WM_HWIN hFrame2; WM_HWIN hClient1; WM_HWIN hClient2; WM_SetCallback(WM_HBKWIN, _cbBkWin); hFrame1 = FRAMEWIN_CreateEx( 10, 30, 140, 140, 0, WM_CF_SHOW, FRAMEWIN_CF_MOVEABLE, 0, "Early Clipping", _cbFrameWin1); hFrame2 = FRAMEWIN_CreateEx(170, 30, 140, 140, 0, WM_CF_SHOW, FRAMEWIN_CF_MOVEABLE, 0, "Late Clipping", _cbFrameWin2); hClient1 = WM_GetClientWindow(hFrame1); hClient2 = WM_GetClientWindow(hFrame2); _hWin1 = WM_CreateWindowAsChild(0, 0, WM_GetWindowSizeX(hClient1), WM_GetWindowSizeY(hClient1), hClient1, WM_CF_SHOW, _cbFrameWin1, 0); _hWin2 = WM_CreateWindowAsChild(0, 0, WM_GetWindowSizeX(hClient2), WM_GetWindowSizeY(hClient2), hClient2, WM_CF_SHOW | WM_CF_LATE_CLIP, _cbFrameWin2, 0); _hBut1 = BUTTON_CreateEx( 10, 210, 140, 20, 0, WM_CF_SHOW, 0, 1); _hBut2 = BUTTON_CreateEx(170, 210, 140, 20, 0, WM_CF_SHOW, 0, 2); hWin0 = FRAMEWIN_CreateEx( 60, 80, 40, 40, 0, WM_CF_SHOW | WM_CF_STAYONTOP, FRAMEWIN_CF_MOVEABLE, 0, "Top 0", _cbTop); hWin1 = FRAMEWIN_CreateEx(220, 80, 40, 40, 0, WM_CF_SHOW | WM_CF_STAYONTOP, FRAMEWIN_CF_MOVEABLE, 0, "Top 1", _cbTop); hWin2 = FRAMEWIN_CreateEx(140, 170, 40, 40, 0, WM_CF_SHOW | WM_CF_STAYONTOP, FRAMEWIN_CF_MOVEABLE, 0, "Top 2", _cbTop); FRAMEWIN_SetResizeable(hWin0, 1); FRAMEWIN_SetResizeable(hWin1, 1); FRAMEWIN_SetResizeable(hWin2, 1); BUTTON_SetText(_hBut1, "Invalidate"); BUTTON_SetText(_hBut2, "Reset counters"); while(1) { GUI_Delay(50); } }
/** * @brief Show Message Box * @param hWin: pointer to the parent handle * @param pTitle: pointer to the title * @param pText: pointer to the text * @retval int */ static int _ShowMessageBox(WM_HWIN hWin, const char* pTitle, const char* pText, int YesNo) { WM_HWIN hFrame, hClient, hBut; int r = 0; /* Create frame win */ hFrame = FRAMEWIN_CreateEx(25, 82, 190, 90, hWin, WM_CF_SHOW, FRAMEWIN_CF_MOVEABLE, 0, pTitle, &_cbMessageBox); FRAMEWIN_SetClientColor (hFrame, GUI_WHITE); FRAMEWIN_SetFont (hFrame, &GUI_Font16B_ASCII); FRAMEWIN_SetTextAlign (hFrame, GUI_TA_HCENTER); /* Create dialog items */ hClient = WM_GetClientWindow(hFrame); TEXT_CreateEx(10, 7, 170, 30, hClient, WM_CF_SHOW, GUI_TA_HCENTER, 0, pText); if (YesNo) { hBut = BUTTON_CreateEx(97, 45, 55, 18, hClient, WM_CF_SHOW, 0, GUI_ID_CANCEL); BUTTON_SetText (hBut, "No"); hBut = BUTTON_CreateEx(32, 45, 55, 18, hClient, WM_CF_SHOW, 0, GUI_ID_OK); BUTTON_SetText (hBut, "Yes"); } else { hBut = BUTTON_CreateEx(64, 45, 55, 18, hClient, WM_CF_SHOW, 0, GUI_ID_OK); BUTTON_SetText (hBut, "Ok"); } WM_SetFocus(hFrame); WM_MakeModal(hFrame); r = GUI_ExecCreatedDialog(hFrame); return r; }
/******************************************************************* * * _DemoDropDownAsChild */ static void _DemoDropDownAsChild(void) { WM_HWIN hFrame; WM_HWIN hDropDown; /* Display titel */ GUI_SetBkColor(0xB00000); GUI_SetColor(0xFFFFFF); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringHCenterAt("Dropdown as child - Sample", 160, 5); GUI_Delay(SPEED / 2); /* Create framewin */ GUI_SetFont(&GUI_Font8x16); GUI_SetTextAlign(GUI_TA_LEFT); GUI_DispStringAtCEOL("using", 5, 40); GUI_DispStringAtCEOL("FRAMEWIN_Create", 5, 55); GUI_Delay(SPEED); hFrame = FRAMEWIN_Create("DropDown", NULL, WM_CF_SHOW, 80, 80, 160, 140); FRAMEWIN_SetFont(hFrame, &GUI_Font16B_ASCII); FRAMEWIN_SetActive(hFrame, 1); GUI_Delay(SPEED * 0.75); /* Create listbox */ GUI_DispStringAtCEOL("DROPDOWN_CreateEx", 5, 55); GUI_Delay(SPEED); hDropDown = DROPDOWN_CreateEx(20, 20, 120, 65, WM_GetClientWindow(hFrame), WM_CF_SHOW, 0, 0); GUI_Delay(SPEED * 0.75); /* Show serveral functions of listbox */ _ShowSeveralFunctions(hDropDown); /* Delete framewin widget */ GUI_DispStringAtCEOL("FRAMEWIN_Delete", 5, 55); GUI_Delay(SPEED); FRAMEWIN_Delete(hFrame); GUI_Delay(SPEED * 0.75); /* Clear display */ GUI_Clear(); GUI_Delay(SPEED * 1.5); }
/********************************************************************* * * xCreateDialogBoxArray */ WM_HWIN xCreateDialogBoxArray(const xDIALOGBOX_Obj* paDialogBox, int NumDialogBox, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0) { WM_HWIN hDialog; WM_HWIN hDialogClient; if((NumDialogBox <= 0) || (paDialogBox==NULL) || (paDialogBox->paWidget->pfCreateIndirect==NULL) )return 0; //Creat Parent Window DEBUGOUT("xCreateDialogBoxArray: Create Parent Win\r\n"); hDialog = paDialogBox->paWidget->pfCreateIndirect(paDialogBox->paWidget, hParent, x0, y0, cb); /* Create parent window */ hDialogClient = WM_GetClientWindow(hDialog); WIDGET_OrState(hDialog, paDialogBox->paWidget->Flags); WM_ShowWindow(hDialog); WM_ShowWindow(hDialogClient); while (--NumDialogBox > 0) { WM_HWIN hChildDialog; paDialogBox++; DEBUGOUT("xCreateDialogBoxArray: Create Child DownCounter:%d\r\n", NumDialogBox); hChildDialog = GUI_CreateDialogBox(paDialogBox->paWidget, paDialogBox->NumWidgets, paDialogBox->cb, hDialogClient, 0, 0); /* Create child Dialog */ WM_ShowWindow(hChildDialog); } DEBUGOUT("xCreateDialogBoxArray: Create Child DownCounter:%d\r\n", NumDialogBox); DEBUGOUT("xCreateDialogBoxArray: Create Child OK\r\n", NumDialogBox); WM_SetFocusOnNextChild(hDialog); /* Set the focus to the first child */ WM_SendMessageNoPara(hDialogClient, WM_INIT_DIALOG); return hDialog; }
/********************************************************************* * * _cbFrameWinVideo */ static void _cbFrameWinVideo(WM_MESSAGE* pMsg) { switch (pMsg->MsgId) { case WM_PAINT: if (_IsCompletelyVis) { GUI_SetBkColor(GUI_DARKGREEN); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_DispStringAt("Completely visible", 5, 5); } else { GUI_SetBkColor(GUI_GRAY); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_DispStringAt("Not completely visible", 5, 5); } break; case WM_NOTIFY_VIS_CHANGED: { WM_HWIN hWin; int IsCompletelyVis; hWin = WM_GetClientWindow(pMsg->hWin); IsCompletelyVis = WM_IsCompletelyVisible(hWin); if (_IsCompletelyVis != IsCompletelyVis) { _IsCompletelyVis = IsCompletelyVis; WM_InvalidateWindow(hWin); /* Only required if content changes if partially hidden */ } } break; default: WM_DefaultProc(pMsg); } }
/* ********************************************************************************************************* * 函 数 名: MainTask * 功能说明: GUI主函数 * 形 参: 无 * 返 回 值: 无 ********************************************************************************************************* */ void MainTask(void) { int Value = 0; WM_HWIN hDlgFrame; /* 初始化 */ GUI_Init(); // TOUCH_Calibration(); GUI_CURSOR_Show(); WM_SetCallback(WM_HBKWIN, _cbBkWindow); WM_SetCreateFlags(WM_CF_MEMDEV); hDlgFrame = 0; while(1) { WM_HWIN hDlg, hText; char acText[3] = {0}; GUI_Delay(100); /* 如果对话框被关闭就重新的将其再打开 */ if (!WM_IsWindow(hDlgFrame)) { Value = 0; hDlgFrame = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0); } Value = (Value + 1) % 100; acText[0] = '0' + Value / 10; acText[1] = '0' + Value % 10; hDlg = WM_GetClientWindow(hDlgFrame); hText = WM_GetDialogItem(hDlg, GUI_ID_TEXT0); TEXT_SetText(hText, acText); } }
/******************************************************************* * * _DemoListBoxAsChild */ static void _DemoListBoxAsChild(void) { FRAMEWIN_Handle hFrame; LISTBOX_Handle hListBox; /* Display titel */ GUI_SetBkColor(0xB00000); GUI_SetColor(0xFFFFFF); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringHCenterAt("Listbox as child - Sample", 160, 5); GUI_Delay(SPEED / 2); /* Create framewin */ GUI_SetFont(&GUI_Font8x16); GUI_SetTextAlign(GUI_TA_LEFT); GUI_DispStringAtCEOL("using", 5, 40); GUI_DispStringAtCEOL("FRAMEWIN_Create", 5, 55); GUI_Delay(SPEED); hFrame = FRAMEWIN_Create("List box", NULL, WM_CF_SHOW, 100, 80, 120, 140); FRAMEWIN_SetFont(hFrame, &GUI_Font16B_ASCII); FRAMEWIN_SetActive(hFrame, 1); GUI_Delay(SPEED * 0.75); /* Create listbox */ GUI_DispStringAtCEOL("LISTBOX_CreateAsChild", 5, 55); GUI_Delay(SPEED); hListBox = LISTBOX_CreateAsChild(_ListBox, WM_GetClientWindow(hFrame), 0, 0, 0, 0, WM_CF_SHOW); GUI_Delay(SPEED * 0.75); /* Show serveral functions of listbox */ _ShowSeveralFunctions(hListBox); /* Delete framewin widget */ GUI_DispStringAtCEOL("FRAMEWIN_Delete", 5, 55); GUI_Delay(SPEED); FRAMEWIN_Delete(hFrame); GUI_Delay(SPEED * 0.75); /* Clear display */ GUI_Clear(); GUI_Delay(SPEED * 1.5); }
/********************************************************************* * * _OnValueChanged */ static void _OnValueChanged(WM_HWIN hDlg, int Id) { unsigned Index; unsigned v; WM_HWIN hSlider; WM_HWIN hEdit; Index = 0; v = 0; if ((Id >= GUI_ID_SLIDER0) && (Id <= GUI_ID_SLIDER2)) { Index = Id - GUI_ID_SLIDER0; // // SLIDER-widget has changed, update EDIT-widget // hSlider = WM_GetDialogItem(hDlg, GUI_ID_SLIDER0 + Index); hEdit = WM_GetDialogItem(hDlg, GUI_ID_EDIT0 + Index); v = SLIDER_GetValue(hSlider); EDIT_SetValue(hEdit, v); } else if ((Id >= GUI_ID_EDIT0) && (Id <= GUI_ID_EDIT2)) { Index = Id - GUI_ID_EDIT0; // // If EDIT-widget has changed, update SLIDER-widget // hSlider = WM_GetDialogItem(hDlg, GUI_ID_SLIDER0 + Index); hEdit = WM_GetDialogItem(hDlg, GUI_ID_EDIT0 + Index); v = EDIT_GetValue(hEdit); SLIDER_SetValue(hSlider, v); } _duty[Index] = v; // // At last invalidate dialog client window // WM_InvalidateWindow(WM_GetClientWindow(hDlg)); }
/********************************************************************* * * GUI_CreateDialogbox */ WM_HWIN GUI_CreateDialogBox(const GUI_WIDGET_CREATE_INFO* paWidget, int NumWidgets, WM_CALLBACK* cb, WM_HWIN hParent, int x0, int y0) { WM_HWIN hDialog, hDialogClient; hDialog = paWidget->pfCreateIndirect(paWidget, hParent, x0, y0, cb); /* Create parent window */ if (!hDialog) { return 0; } hDialogClient = WM_GetClientWindow(hDialog); WIDGET_OrState(hDialog, paWidget->Flags); WM_ShowWindow(hDialog); WM_ShowWindow(hDialogClient); while (--NumWidgets > 0) { WM_HWIN hChild; paWidget++; hChild = paWidget->pfCreateIndirect(paWidget, hDialogClient, 0, 0, 0); /* Create child window */ if (!hChild) { WM_DeleteWindow(hDialog); return 0; } WM_ShowWindow(hChild); } WM_SetFocusOnNextChild(hDialog); /* Set the focus to the first child */ WM_SendMessageNoPara(hDialogClient, WM_INIT_DIALOG); return hDialog; }
static void _OnSkinChanged(WM_MESSAGE * pMsg,int val) { int i = 0; WM_MESSAGE myMsg; if(agentConf.Skin != val) { agentConf.Skin = val; pSkin = &(SysWinSkins[val]); WINDOW_SetBkColor(pMsg->hWin, pSkin->bkColor); for(i=0; i<SLD_NUM; i++) { HSD_SLIDER_SetBkColor(Slideres[i], pSkin->sldBk); HSD_SLIDER_SetFocusBkColor(Slideres[i], pSkin->sldBk); HSD_SLIDER_SetSlotColor(Slideres[i],pSkin->sldSlot); HSD_SLIDER_SetFocusSliderColor(Slideres[i], pSkin->sldFocusSlider); HSD_SLIDER_SetFocusSlotColor(Slideres[i], pSkin->sldSlot); } myMsg.hWin = WM_GetClientWindow(menuWin); myMsg.Data.v = val; myMsg.MsgId = USER_MSG_SKIN; WM_SendMessage (myMsg.hWin, &myMsg); myMsg.hWin = confirmWin; WM_SendMessage (myMsg.hWin, &myMsg); } }
/********************************************************************* * * MainTask */ void CreateWindow(void) { WM_HWIN hMultiPage; WM_HWIN hFrameWin; WM_HWIN hDialog; // // Check if recommended memory for the sample is available // if (GUI_ALLOC_GetNumFreeBytes() < RECOMMENDED_MEMORY) { GUI_ErrorOut("Not enough memory available."); return; } WM_SetCallback(WM_HBKWIN, _cbBkWindow); // // Create the frame window // hFrameWin = FRAMEWIN_Create("Sample", NULL, WM_CF_SHOW, 0, 0, 240, 152); FRAMEWIN_SetClientColor(hFrameWin, GUI_GREEN); FRAMEWIN_SetActive(hFrameWin, 1); FRAMEWIN_SetMoveable(hFrameWin, 1); // // Create the MULTIPAGE widget // hMultiPage = MULTIPAGE_CreateEx(7, 6, 220, 120, WM_GetClientWindow(hFrameWin), WM_CF_SHOW, 0, 0); GUI_Delay(500); // // Create and attach the MULTIPAGE dialog windows // hDialog = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 1"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 2"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate3, GUI_COUNTOF(_aDialogCreate3), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 3"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate4, GUI_COUNTOF(_aDialogCreate4), _cbDialog4, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 4"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate5, GUI_COUNTOF(_aDialogCreate5), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 5"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate6, GUI_COUNTOF(_aDialogCreate6), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 6"); GUI_Delay(500); // // Demonstrate the use of MULTIPAGE_SetAlign // MULTIPAGE_SetAlign(hMultiPage, MULTIPAGE_ALIGN_RIGHT); GUI_Delay(500); MULTIPAGE_SetAlign(hMultiPage, MULTIPAGE_ALIGN_RIGHT | MULTIPAGE_ALIGN_BOTTOM); GUI_Delay(500); MULTIPAGE_SetAlign(hMultiPage, MULTIPAGE_ALIGN_LEFT | MULTIPAGE_ALIGN_BOTTOM); while (1) { GUI_Delay(100); } }
/********************************************************************* * * _DemoHeaderFrameWin */ static void _DemoHeaderFrameWin(void) { FRAMEWIN_Handle hFrameWin; _ChangeMainText("HEADER control inside a FRAMEWIN"); hFrameWin = FRAMEWIN_Create("Title", _cbWindow, WM_CF_SHOW, 10, 80, 300, 140); FRAMEWIN_SetActive(hFrameWin, 1); _hHeader = HEADER_CreateAttached(WM_GetClientWindow(hFrameWin), 1234, 0); _Demo(); FRAMEWIN_Delete(hFrameWin); }
/********************************************************************* * * MainTask */ void MainTask(void) { WM_HWIN hMultiPage; WM_HWIN hFrameWin; WM_HWIN hDialog; // // Enable use of memory devices // WM_SetCreateFlags(WM_CF_MEMDEV); GUI_Init(); WM_SetCallback(WM_HBKWIN, _cbBkWindow); // // Create the frame window // hFrameWin = FRAMEWIN_Create("FrameWindow", NULL, WM_CF_SHOW, 40, 44, 240, 152); FRAMEWIN_SetClientColor(hFrameWin, GUI_GREEN); FRAMEWIN_SetActive(hFrameWin, 1); FRAMEWIN_SetMoveable(hFrameWin, 1); // // Create the MULTIPAGE widget // hMultiPage = MULTIPAGE_CreateEx(7, 6, 220, 120, WM_GetClientWindow(hFrameWin), WM_CF_SHOW, 0, 0); GUI_Delay(500); // // Create and attach the MULTIPAGE dialog windows // hDialog = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 1"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 2"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate3, GUI_COUNTOF(_aDialogCreate3), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 3"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate4, GUI_COUNTOF(_aDialogCreate4), _cbDialog4, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 4"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate5, GUI_COUNTOF(_aDialogCreate5), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 5"); GUI_Delay(500); hDialog = GUI_CreateDialogBox(_aDialogCreate6, GUI_COUNTOF(_aDialogCreate6), NULL, WM_UNATTACHED, 0, 0); MULTIPAGE_AddPage(hMultiPage, hDialog, "Page 6"); GUI_Delay(500); // // Demonstrate the use of MULTIPAGE_SetAlign // MULTIPAGE_SetAlign(hMultiPage, MULTIPAGE_ALIGN_RIGHT); GUI_Delay(500); MULTIPAGE_SetAlign(hMultiPage, MULTIPAGE_ALIGN_RIGHT | MULTIPAGE_ALIGN_BOTTOM); GUI_Delay(500); MULTIPAGE_SetAlign(hMultiPage, MULTIPAGE_ALIGN_LEFT | MULTIPAGE_ALIGN_BOTTOM); while (1) { GUI_Delay(100); } }
/********************************************************************* * * MainTask */ void MainTask(void) { int Index; GUI_Init(); // // Check if recommended memory for the sample is available // if (GUI_ALLOC_GetNumFreeBytes() < RECOMMENDED_MEMORY) { GUI_ErrorOut("Not enough memory available."); return; } #if GUI_SUPPORT_MEMDEV WM_SetCreateFlags(WM_CF_MEMDEV); #endif WM_SetDesktopColor(GUI_BLACK); // // Initialize the temperature arrays // _InitRandomData(_aTemp1, GUI_COUNTOF(_aTemp1)); _InitRandomData(_aTemp2, GUI_COUNTOF(_aTemp2)); // // Execute the intro dialog // GUI_ExecDialogBox(_aDialogIntro, GUI_COUNTOF(_aDialogIntro), _cbDialogIntro, WM_HBKWIN, 0, 0); // // Execute the color and the temperature dialog // _hDialogColor = GUI_CreateDialogBox(_aDialogColor, GUI_COUNTOF(_aDialogColor), _cbDialogColor, WM_HBKWIN, 0, 0); _hDialogMain = GUI_CreateDialogBox(_aDialogMain, GUI_COUNTOF(_aDialogMain), _cbDialogMain, WM_HBKWIN, 0, 0); // // Add new temperatures... // Index = GUI_COUNTOF(_aTemp1) - 1; while (1) { WM_HWIN hItem; GUI_Delay(100); // Wait a while // // Shift the color arrays // memmove(_aTemp1, _aTemp1 + 1, sizeof(_aTemp1) - 2); memmove(_aTemp2, _aTemp2 + 1, sizeof(_aTemp2) - 2); // // Add new values // _aTemp1[Index] = _GetRandomValue(_aTemp1[Index - 1]); _aTemp2[Index] = _GetRandomValue(_aTemp2[Index - 1]); // // Update windows // hItem = WM_GetClientWindow(WM_GetDialogItem(_hDialogMain, ID_TEMPERATURE)); WM_InvalidateWindow(hItem); _SetProgbarValue(GUI_ID_PROGBAR0, _aTemp1[Index]); _SetProgbarValue(GUI_ID_PROGBAR1, _aTemp2[Index]); } }
/********************************************************************* * * GUIDEMO_DemoFrameWin */ void GUIDEMO_DemoFrameWin(void) { FRAMEWIN_Handle hFrame; LISTBOX_Handle hListBox; int xSize = LCD_GetXSize(); int ySize = LCD_GetYSize(); int i, x, y, w, h; const GUI_FONT* pFont = &GUI_FontComic18B_1; GUI_COLOR DesktopColorOld; #if GUIDEMO_LARGE GUIDEMO_ShowIntro("Frame Window & Listbox", NULL); #else GUIDEMO_ShowIntro("Frame Window\n & Listbox", NULL); #endif DesktopColorOld = GUIDEMO_SetBkColor(GUI_RED); DesktopColorOld = WM_SetDesktopColor(DesktopColorOld); /* Automatically update desktop window */ x = BORDER; #if GUIDEMO_LARGE y = 75; #else y = BORDER; #endif w = xSize - x - BORDER; h = ySize - y - BORDER; if (w > 140) { w = 140; } if (h > 120) { h = 120; } hFrame = FRAMEWIN_Create("Select language", NULL, WM_CF_SHOW, x, y, w, h); FRAMEWIN_SetActive(hFrame, 1); FRAMEWIN_SetMoveable(hFrame, 1); FRAMEWIN_AddMaxButton(hFrame, FRAMEWIN_BUTTON_RIGHT, 0); FRAMEWIN_AddMinButton(hFrame, FRAMEWIN_BUTTON_RIGHT, 1); FRAMEWIN_SetFont(hFrame, &GUI_Font13_ASCII); hListBox = LISTBOX_CreateAsChild(_asLang, WM_GetClientWindow(hFrame), 0, 0, 0, 0, WM_CF_SHOW | WM_SF_ANCHOR_LEFT | WM_SF_ANCHOR_TOP | WM_SF_ANCHOR_RIGHT | WM_SF_ANCHOR_BOTTOM); WM_SetFocus(hListBox); LISTBOX_SetFont(hListBox, pFont); GUIDEMO_Wait(); for (i = 0; (i < 10) && !GUIDEMO_CheckCancel(); i++) { LISTBOX_IncSel(hListBox); GUIDEMO_Delay(250); } for (i = 0; (i < 10) && !GUIDEMO_CheckCancel(); i++) { LISTBOX_DecSel(hListBox); GUIDEMO_Delay(250); } GUIDEMO_Delay(500); LISTBOX_Delete(hListBox); FRAMEWIN_Delete(hFrame); WM_SetDesktopColor(DesktopColorOld); }
/********************************************************************* * * _cbDialogMain * * Function description * Callback routine of DialogMain */ static void _cbDialogMain(WM_MESSAGE * pMsg) { WM_HWIN hDlg; WM_HWIN hItem; int Id; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: break; case WM_INIT_DIALOG: // // Init progress bars // hItem = WM_GetDialogItem(hDlg, GUI_ID_PROGBAR0); WIDGET_SetEffect(hItem, &WIDGET_Effect_3D); _SetProgbarValue(GUI_ID_PROGBAR0, _aTemp1[GUI_COUNTOF(_aTemp1) - 1]); hItem = WM_GetDialogItem(hDlg, GUI_ID_PROGBAR1); WIDGET_SetEffect(hItem, &WIDGET_Effect_3D); _SetProgbarValue(GUI_ID_PROGBAR1, _aTemp2[GUI_COUNTOF(_aTemp2) - 1]); // // Init edit widgets // hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0); EDIT_SetDecMode(hItem, _TempMin, 0, 999, 0, 0); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT1); EDIT_SetDecMode(hItem, _TempMax, 0, 999, 0, 0); WM_DisableWindow(hItem); // // Init temperature window * // hItem = WM_GetClientWindow(WM_GetDialogItem(hDlg, ID_TEMPERATURE)); _pcbCallbackTemperature = WM_SetCallback(hItem, _cbTemperature); _UpdateTextColors(hDlg); break; case WM_NOTIFY_PARENT: if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { Id = WM_GetId(pMsg->hWinSrc); // Id of widget switch (Id) { case GUI_ID_BUTTON0: WM_SetFocus(_hDialogColor); GUI_SetOrg(0, 240); break; } } break; default: WM_DefaultProc(pMsg); } }
/* Update the host IP address in Emwin Window */ static void lcd_create_infobox(void) { WM_HWIN hItem; static char name[] = {"HTTP Server Address"}; static char remote_name[] = {"Remote IP address"}; /* Create HTTP server address Text box */ hItem = TEXT_CreateEx(24, 40, 150, 100, WM_GetClientWindow(hWin), WM_CF_SHOW, 0, ID_TEXT_2, name); TEXT_SetFont(hItem, &GUI_Font16B_ASCII); TEXT_SetTextAlign(hItem, GUI_TA_HCENTER); TEXT_SetTextColor(hItem, GUI_DARKCYAN); /* Create Remote IP address Text box */ hItem = TEXT_CreateEx(24, 60, 150, 100, WM_GetClientWindow(hWin), WM_CF_SHOW, 0, ID_TEXT_3, remote_name); TEXT_SetFont(hItem, &GUI_Font16B_ASCII); TEXT_SetTextAlign(hItem, GUI_TA_HCENTER); TEXT_SetTextColor(hItem, GUI_DARKGREEN); /* Create Host IP edit box */ hItem = EDIT_CreateEx(170, 40, 100, 20, WM_GetClientWindow(hWin), WM_CF_SHOW, 0, ID_EDIT_0, 16); /* Create Remote IP edit box */ hItem = EDIT_CreateEx(170, 60, 100, 20, WM_GetClientWindow(hWin), WM_CF_SHOW, 0, ID_EDIT_1, 16); }
/********************************************************************* * * MainTask */ void MainTask(void) { int Index; GUI_Init(); #if GUI_SUPPORT_MEMDEV WM_SetCreateFlags(WM_CF_MEMDEV); #endif WM_SetDesktopColor(GUI_BLACK); // // Initialize the temperature arrays // _InitRandomData(_aTemp1, GUI_COUNTOF(_aTemp1)); _InitRandomData(_aTemp2, GUI_COUNTOF(_aTemp2)); // // Execute the intro dialog // GUI_ExecDialogBox(_aDialogIntro, GUI_COUNTOF(_aDialogIntro), _cbDialogIntro, WM_HBKWIN, 0, 0); // // Execute the color and the temperature dialog // _hDialogColor = GUI_CreateDialogBox(_aDialogColor, GUI_COUNTOF(_aDialogColor), _cbDialogColor, WM_HBKWIN, 0, 0); _hDialogMain = GUI_CreateDialogBox(_aDialogMain, GUI_COUNTOF(_aDialogMain), _cbDialogMain, WM_HBKWIN, 0, 0); // // Add new temperatures... // Index = GUI_COUNTOF(_aTemp1) - 1; while (1) { WM_HWIN hItem; GUI_Delay(100); // Wait a while // // Shift the color arrays // memmove(_aTemp1, _aTemp1 + 1, sizeof(_aTemp1) - 2); memmove(_aTemp2, _aTemp2 + 1, sizeof(_aTemp2) - 2); // // Add new values // _aTemp1[Index] = _GetRandomValue(_aTemp1[Index - 1]); _aTemp2[Index] = _GetRandomValue(_aTemp2[Index - 1]); // // Update windows // hItem = WM_GetClientWindow(WM_GetDialogItem(_hDialogMain, ID_TEMPERATURE)); WM_InvalidateWindow(hItem); _SetProgbarValue(GUI_ID_PROGBAR0, _aTemp1[Index]); _SetProgbarValue(GUI_ID_PROGBAR1, _aTemp2[Index]); } }
void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; switch (pMsg->MsgId) { case WM_TIMER: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); // _DispThread(hItem); WM_RestartTimer(pMsg->Data.v, 200); break; case WM_INIT_DIALOG: WM_CreateTimer(WM_GetClientWindow(pMsg->hWin), 0, 100, 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_0); LISTVIEW_AddColumn(hItem, 60, "Thread", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, 40, "Priority", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, 40, "Stack", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, 50, "Status", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_SetGridVis(hItem, 1); _DispThread(hItem); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case GUI_ID_BUTTON0: // Notifications sent by 'Button' switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); GUI_EndDialog(hParent, 0); break; } break; } default: WM_DefaultProc(pMsg); break; } }
void MainTask(void) { SPINBOX_Handle hSpin; FRAMEWIN_Handle hFrame; WM_HWIN hClient; GUI_Init(); WM_SetCallback(WM_HBKWIN, _cbBk); hFrame = FRAMEWIN_CreateEx(110, 60, 100, 80, WM_HBKWIN, WM_CF_SHOW, 0, ID_FRAMEWIN_0, "Spinbox", 0); hClient = WM_GetClientWindow(hFrame); FRAMEWIN_SetSkin(hFrame, FRAMEWIN_SKIN_FLEX); FRAMEWIN_SetFont(hFrame, GUI_FONT_16B_ASCII); hSpin = SPINBOX_CreateEx(10, 10, 60, 20, hClient, WM_CF_SHOW, GUI_ID_SPINBOX0, 5, 2222); SPINBOX_SetSkin(hSpin, SPINBOX_SKIN_FLEX); while (1) { GUI_Delay(100); } }
static void sldListener(WM_MESSAGE * pMsg) { const WM_KEY_INFO * pInfo; WM_MESSAGE myMsg; switch(pMsg->MsgId) { case WM_KEY: pInfo = (WM_KEY_INFO*)(pMsg->Data.p); switch(pInfo->Key) { case GUI_KEY_PWM_INC: WM_SendMessageNoPara(subWins[3], USER_MSG_DIM); break; case GUI_KEY_BACKSPACE: if(Mem_isEqual(&SysConf, &agentConf, sizeof(SysConf)) ) { WM_SetFocus(Slideres[0]); WM_SetFocus(menuWin); } else { myMsg.hWin = WM_GetClientWindow(confirmWin); myMsg.hWinSrc = subWins[3]; myMsg.MsgId = USER_MSG_CHOOSE; myMsg.Data.v = SYS_SETTING; WM_SendMessage(myMsg.hWin, &myMsg); WM_BringToTop(confirmWin); WM_SetFocus(WM_GetDialogItem (confirmWin,GUI_ID_BUTTON0)); } break; default: HSD_SLIDER_Callback(pMsg); break; } break; default: HSD_SLIDER_Callback(pMsg); break; } }
/***************************** Initializacija paneli nalashtuvan resursu *****************************/ void resurs_panel_show(void) { if (Resurs_FrameWin == WM_UNATTACHED) { //Stvorjujemo FrameWin Resurs_FrameWin = FRAMEWIN_CreateEx(X0, Y0, X_SIZE, Y_SIZE, 0, WM_CF_HIDE, 0, ID_RESURS_FRAMEWIN, Resurs_panel_title.ptitle[sel_language], _cbEmpty); FRAMEWIN_SetFont(Resurs_FrameWin, &GUI_FontArialBold14_8_Unicode); FRAMEWIN_SetTextAlign(Resurs_FrameWin, GUI_TA_HCENTER); FRAMEWIN_SetBarColor(Resurs_FrameWin, 1, GUI_GREEN); FRAMEWIN_SetBarColor(Resurs_FrameWin, 0, GUI_LIGHTGRAY); FRAMEWIN_SetTextColor(Resurs_FrameWin, GUI_BLUE); #define COL_1_X 5 #define ROW_1_Y 10 #define HIGHT_Y 10 #define SHIFT_Y (ROW_1_Y + HIGHT_Y) #define WIDTH_X_T 165 #define WIDTH_X_V 80 #define SHIFT_X1 (WIDTH_X_T + 10) #define SHIFT_X2 (SHIFT_X1 + WIDTH_X_V + 10) for (unsigned int i = 0; i < MAX_NUMBER_ITEMS_RESURS; i++) { Resurs_t[i] = TEXT_CreateEx(COL_1_X, ROW_1_Y + i*SHIFT_Y, WIDTH_X_T, HIGHT_Y, WM_GetClientWindow(Resurs_FrameWin), WM_CF_SHOW, TEXT_CF_LEFT | TEXT_CF_VCENTER, ID_RESURS_1_TITLE + i, Resurs_title[i].ptitle[sel_language]); TEXT_SetFont(Resurs_t[i], &GUI_FontArialStandard14_8_Unicode); Resurs_v[i] = TEXT_CreateEx(COL_1_X + SHIFT_X1, ROW_1_Y + i*SHIFT_Y, WIDTH_X_V, HIGHT_Y, WM_GetClientWindow(Resurs_FrameWin), WM_CF_SHOW, TEXT_CF_LEFT | TEXT_CF_VCENTER, ID_RESURS_1_VALUE + i, ""); TEXT_SetFont(Resurs_v[i], &GUI_FontArialStandard14_8_Unicode); } #undef COL_1_X #undef ROW_1_Y #undef HIGHT_Y #undef SHIFT_Y #undef WIDTH_X_T #undef WIDTH_X_V #undef SHIFT_X1 #undef SHIFT_X2 } WM_BringToTop(Resurs_FrameWin); WM_ShowWindow(Resurs_FrameWin); }
/********************************************************************* * * MainTask */ void MainTask(void) { int Value = 0; WM_HWIN hDlgFrame; GUI_Init(); WM_SetCallback(WM_HBKWIN, _cbBkWindow); WM_SetCreateFlags(WM_CF_MEMDEV); /* Use memory devices on all windows to avoid flicker */ while(1) { WM_HWIN hDlg, hText; char acText[3] = {0}; GUI_Delay(150); if (!WM_IsWindow(hDlgFrame)) { hDlgFrame = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0); } Value = (Value + 1) % 100; acText[0] = '0' + Value / 10; acText[1] = '0' + Value % 10; hDlg = WM_GetClientWindow(hDlgFrame); hText = WM_GetDialogItem(hDlg, GUI_ID_TEXT0); TEXT_SetText(hText, acText); } }
/********************************************************************* * * _cbFrameWinVideo */ static void _cbFrameWinVideo(WM_MESSAGE* pMsg) { WM_HWIN hWin; WM_HWIN hText; int IsCompletelyVis; int IsCompletelyCovered; switch (pMsg->MsgId) { case WM_PAINT: if (_IsCompletelyVis) { GUI_SetBkColor(GUI_DARKGREEN); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_DispStringAt("Completely visible", 5, 5); } else { GUI_SetBkColor(GUI_GRAY); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_DispStringAt("Not completely visible", 5, 5); } break; case WM_NOTIFY_VIS_CHANGED: hText = WM_GetDialogItem(WM_HBKWIN, GUI_ID_TEXT1); hWin = WM_GetClientWindow(pMsg->hWin); IsCompletelyVis = WM_IsCompletelyVisible(hWin); IsCompletelyCovered = WM_IsCompletelyCovered(hWin); if (IsCompletelyCovered) { TEXT_SetText(hText, "completely\ncovered"); } else { TEXT_SetText(hText, "not completely\ncovered"); } if (_IsCompletelyVis != IsCompletelyVis) { _IsCompletelyVis = IsCompletelyVis; WM_InvalidateWindow(hWin); /* Only required if content changes if partially hidden */ } break; default: WM_DefaultProc(pMsg); } }
/** * @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 dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; GUI_RECT r; int result; int Id, NCode, Index; char tmp[FILEMGR_FILE_NAME_SIZE]; switch (pMsg->MsgId) { case WM_INIT_DIALOG: pImageList = (FILELIST_FileTypeDef *)k_malloc(sizeof(FILELIST_FileTypeDef)); pFileInfo = (CHOOSEFILE_INFO *)k_malloc(sizeof(CHOOSEFILE_INFO)); pImageList->ptr = 0; file_pos = 0; effects = 0; ImSettings.d32 = k_BkupRestoreParameter(CALIBRATION_IMAGE_SETTINGS_BKP); if(ImSettings.b.ss_timer == 0) { ImSettings.b.ss_timer = 1; } /* Image frame initialization */ IMAGE_Enlarge = 0; hItem = WM_GetClientWindow(pMsg->hWin); WM_GetClientRectEx(hItem, &r); imFrame = WM_CreateWindowAsChild(r.x0 + 6, r.y0 + 6, r.x1 - 98, r.y1 - 78, hItem, WM_CF_SHOW, _cbImageWindow, 0); /* Buttons initialization */ hItem = BUTTON_CreateEx(47, 155, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_PREVIOUS_BUTTON); WM_SetCallback(hItem, _cbButton_previous); hItem = BUTTON_CreateEx(94, 148, 50, 50, pMsg->hWin, WM_CF_SHOW, 0, ID_SLIDE_BUTTON); WM_SetCallback(hItem, _cbButton_play); slideshow_state = OFF; hItem = BUTTON_CreateEx(154, 155, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_NEXT_BUTTON); WM_SetCallback(hItem, _cbButton_next); hItem = BUTTON_CreateEx(242, 145, 70, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_ADD_BUTTON); WM_SetCallback(hItem, _cbButton_add); hItem = BUTTON_CreateEx(242, 175, 70, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_OPEN_BUTTON); WM_SetCallback(hItem, _cbButton_open); hItem = BUTTON_CreateEx(196, 174, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_SETTINGS_BUTTON); WM_SetCallback(hItem, _cbButton_settings); hItem = BUTTON_CreateEx(10, 174, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_CLOSE_BUTTON); WM_SetCallback(hItem, _cbButton_close); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_LIST); LISTBOX_SetBkColor(hItem, LISTBOX_CI_SEL, GUI_BLUE); LISTBOX_SetTextColor(hItem, LISTBOX_CI_SEL, GUI_WHITE); LISTBOX_SetBkColor(hItem, LISTBOX_CI_UNSEL, GUI_BLACK); LISTBOX_SetTextColor(hItem, LISTBOX_CI_UNSEL, GUI_CYAN); LISTBOX_SetAutoScrollV(hItem, 1); break; case WM_TIMER: playlist_select = 0; break; case WM_PAINT: DrawRect3D(5, 140, 222, 67); DrawRect3D(230, 140, 83, 67); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (Id) { /* Notification sent by "Button_Settings" */ case ID_SETTINGS_BUTTON: switch (NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: GUI_CreateDialogBox(_aSettingsDialogCreate, GUI_COUNTOF(_aSettingsDialogCreate), _cbSettingsDialog, IMAGE_hWin, 0, 0); break; } break; /* Notifications sent by 'ListView' Slider */ case ID_IMAGE_LIST: if(NCode == WM_NOTIFICATION_CLICKED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_LIST); Index = LISTBOX_GetSel(hItem); if(Index < pImageList->ptr) { 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 < pImageList->ptr) { file_pos = Index; 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); } } } } break; /* Notification sent by "Button_Close" */ case ID_CLOSE_BUTTON: switch (NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: f_close(&Image_File); k_free(pImageList); k_free(pFileInfo); GUI_EndDialog(pMsg->hWin, 0); break; } break; /* Notification sent by "Button_Open" */ case ID_OPEN_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, 20, 20, 200, 150, apDrives, GUI_COUNTOF(apDrives), 0, "add a folder", 0, pFileInfo); WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { if(pImageList->ptr == 0) { _AddEntireFolder(pFileInfo->pRoot); 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_open(&Image_File, (char *)pImageList->file[file_pos].name, FA_OPEN_EXISTING | FA_READ); WM_InvalidateWindow(imFrame); } else { _AddEntireFolder(pFileInfo->pRoot); } } break; } break; /* Notification sent by "Button_Open" */ case ID_ADD_BUTTON: switch (NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: pFileInfo->pfGetData = k_GetData; pFileInfo->pMask = acMask_img; hItem = CHOOSEFILE_Create(pMsg->hWin, 20, 20, 200, 150, apDrives, GUI_COUNTOF(apDrives), 0, "Add an image to playlist", 0, pFileInfo); WM_MakeModal(hItem); result = GUI_ExecCreatedDialog(hItem); if (result == 0) { if((strstr(pFileInfo->pRoot, ".jpg")) || (strstr(pFileInfo->pRoot, ".bmp")) || (strstr(pFileInfo->pRoot, ".JPG")) || (strstr(pFileInfo->pRoot, ".BMP"))) { strcpy((char *)pImageList->file[pImageList->ptr].name, pFileInfo->pRoot); FILEMGR_GetFileOnly(tmp, (char *)pFileInfo->pRoot); hItem = WM_GetDialogItem(IMAGE_hWin, ID_IMAGE_LIST); LISTBOX_AddString(hItem, tmp); LISTBOX_SetSel(hItem, pImageList->ptr); pImageList->ptr++; file_pos = pImageList->ptr - 1; f_close(&Image_File); 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_open(&Image_File, (char *)pImageList->file[file_pos].name, FA_OPEN_EXISTING | FA_READ); WM_InvalidateWindow(imFrame); } } break; } break; /* Notification sent by "Button_SlideShow" */ case ID_SLIDE_BUTTON: switch (NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: if(pImageList->ptr > 1) { f_close(&Image_File); f_open(&Image_File, (char const *)pImageList->file[file_pos].name, FA_OPEN_EXISTING | FA_READ); 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; } WM_InvalidateWindow(imFrame); if (slideshow_state == OFF) { hTimerTime = WM_CreateTimer(imFrame, ID_SLIDER_TIMER, (ImSettings.b.ss_timer * 1000) , 0); } else if(hTimerTime != 0) { WM_DeleteTimer(hTimerTime); hTimerTime = 0; } slideshow_state = (slideshow_state == OFF ? ON : OFF); } break; } break; /* Notification sent by "Button_Next" */ case ID_NEXT_BUTTON: switch (NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: if(pImageList->ptr > 0) { if (file_pos < (pImageList->ptr - 1)) { file_pos++; f_close(&Image_File); } else { file_pos = 0; f_close(&Image_File); } 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_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); } break; } break; /* Notification sent by "Button_Previous" */ case ID_PREVIOUS_BUTTON: switch (NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: if(pImageList->ptr > 0) { if (file_pos > 0 ) { file_pos--; f_close(&Image_File); } else { file_pos = (pImageList->ptr - 1); f_close(&Image_File); } 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_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); } 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; } }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; int led; static int i; int led_num; switch (pMsg->MsgId) { case WM_TIMER: rt_device_control(dev_led, RT_DEVICE_GET_LED_NUM, &led_num); rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &i); i++; i%= led_num; if(_gMode == LED_WATERLAMP) { WM_RestartTimer(pMsg->Data.v, _gFreq); } break; case WM_INIT_DIALOG: _gMode = 0; _LedInit(); hItem = pMsg->hWin; FRAMEWIN_SetText(hItem, "led"); hItem = WM_GetDialogItem(pMsg->hWin, ID_RADIO_0); RADIO_SetText(hItem, "control", 0); RADIO_SetText(hItem, "Water lamp", 1); RADIO_SetFont(hItem, GUI_FONT_13B_1); hItem = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_0); SLIDER_SetRange(hItem, 50, 1000); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0); BUTTON_SetText(hItem, "led1"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1); BUTTON_SetText(hItem, "led2"); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetText(hItem, "freuqency"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2); BUTTON_SetText(hItem, "led3"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_3); BUTTON_SetText(hItem, "led4"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_4); BUTTON_SetText(hItem, "Cancel"); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_SLIDER_0: // Notifications sent by 'Slider' switch(NCode) { case WM_NOTIFICATION_VALUE_CHANGED: _gFreq = SLIDER_GetValue(WM_GetDialogItem(pMsg->hWin, ID_SLIDER_0)); break; } break; case ID_RADIO_0: switch(NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: break; case WM_NOTIFICATION_VALUE_CHANGED: _gMode = RADIO_GetValue(WM_GetDialogItem(pMsg->hWin, ID_RADIO_0)); if(_gMode == LED_WATERLAMP) { WM_CreateTimer(WM_GetClientWindow(pMsg->hWin), 0, 200, 0); } break; } break; case ID_BUTTON_0: switch(NCode) { case WM_NOTIFICATION_CLICKED: if(_gMode == LED_CONTROL) { led = 0; rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &led); } break; } break; case ID_BUTTON_1: switch(NCode) { case WM_NOTIFICATION_CLICKED: if(_gMode == LED_CONTROL) { led = 1; rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &led); } break; } break; case ID_BUTTON_2: switch(NCode) { case WM_NOTIFICATION_CLICKED: if(_gMode == LED_CONTROL) { led = 2; rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &led); } break; } break; case ID_BUTTON_3: switch(NCode) { case WM_NOTIFICATION_CLICKED: if(_gMode == LED_CONTROL) { led = 3; rt_device_control(dev_led, RT_DEVICE_CTRL_LED_TOGGLE, &led); } break; } break; case ID_BUTTON_4: // Notifications sent by 'Button' switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @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; GUI_RECT r; int Id, NCode, offset; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_DURATION); TEXT_SetFont(hItem, GUI_FONT_13HB_ASCII); TEXT_SetTextColor(hItem, 0x00804000); hClient = WM_GetClientWindow(pMsg->hWin); WM_GetClientRectEx(hClient, &r); hVideoScreen = WM_CreateWindowAsChild(r.x0 + 2, r.y0 + 2, r.x1 - 2, r.y1 - 118, hClient, WM_CF_SHOW, _cbVideoWindow , 0); hItem = WM_GetDialogItem(pMsg->hWin, PLAY_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonPlayPauseOn, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonPlayPauseOff,16, 6); hItem = WM_GetDialogItem(pMsg->hWin, PREV_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonPreviousOn, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonPreviousOff,16, 6); hItem = WM_GetDialogItem(pMsg->hWin, NEXT_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonNextOn, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonNextOff,16, 6); hItem = WM_GetDialogItem(pMsg->hWin, STOP_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonStopOn, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonStopOff,16, 6); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_PROGRESS); SLIDER_SetRange(hItem, 0, 100); SLIDER_SetWidth( hItem, 5); VideoPlayer_State = VIDEO_IDLE; _GetMJPEGFileList("0:"); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_FILE); if (FILEMGR_FileList.ptr == 0) { TEXT_SetFont(hItem, GUI_FONT_20B_ASCII); TEXT_SetTextColor(hItem, GUI_BROWN); } else { TEXT_SetFont(hItem, GUI_FONT_13B_ASCII); TEXT_SetTextColor(hItem, 0x00804000); } do_clear = 1; if (FILEMGR_FileList.ptr > 0) { if(f_open(&Video_File, (char *)FILEMGR_FileList.file[FILEMGR_FileList.idx].line, FA_OPEN_EXISTING | FA_READ) == FR_OK) { hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_FILE); TEXT_SetText(hItem, (char *)FILEMGR_FileList.file[FILEMGR_FileList.idx].line); VideoPlayer_State = VIDEO_PLAY; ImageOffset = 0; time_start = GUI_GetTime(); hItem = WM_GetDialogItem(pMsg->hWin, PLAY_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonPlay, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonPlayPauseOff,16, 6); } else { /* error */ } } break; case WM_PAINT: break; case WM_NOTIFY_CHILD_HAS_FOCUS: do_clear = 1; break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; if(NCode == WM_NOTIFICATION_CHILD_DELETED) { f_close(&Video_File); WM_NotifyParent(WM_GetParent(pMsg->hWin), 0x500); break; } switch(Id) { case PLAY_BUTTON_VIDEO: // Notifications sent by 'Button' switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State == VIDEO_IDLE) { if (FILEMGR_FileList.ptr > 0) { if(f_open(&Video_File, (char *)FILEMGR_FileList.file[FILEMGR_FileList.idx].line, FA_OPEN_EXISTING | FA_READ) == FR_OK) { hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_FILE); TEXT_SetText(hItem, (char *)FILEMGR_FileList.file[FILEMGR_FileList.idx].line); VideoPlayer_State = VIDEO_PLAY; ImageOffset = 0; time_start = GUI_GetTime(); hItem = WM_GetDialogItem(pMsg->hWin, PLAY_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonPlay, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonPlayPauseOff,16, 6); } else { /* error */ } } else { /* No file */ } } else if(VideoPlayer_State == VIDEO_PLAY) { time_pause = GUI_GetTime(); hItem = WM_GetDialogItem(pMsg->hWin, PLAY_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonPause, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonPlayPauseOff,16, 6); VideoPlayer_State = VIDEO_PAUSE; } else if(VideoPlayer_State == VIDEO_PAUSE) { time_start = GUI_GetTime()+ time_start - time_pause ; hItem = WM_GetDialogItem(pMsg->hWin, PLAY_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonPlay, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonPlayPauseOff,16, 6); VideoPlayer_State = VIDEO_PLAY; } break; } break; case PREV_BUTTON_VIDEO: /* Notifications sent by 'Button' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State != VIDEO_IDLE) { ImageOffset = 0; time_start = GUI_GetTime(); VideoPlayer_State = VIDEO_PLAY; f_close(&Video_File); goto_previous_file(); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_FILE); TEXT_SetText(hItem, (char *)FILEMGR_FileList.file[FILEMGR_FileList.idx].line); hItem = WM_GetDialogItem(pMsg->hWin, PLAY_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonPlay, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonPlayPauseOff,6, 6); } break; } break; case ID_VIDEO_EXIT: switch(NCode) { case WM_NOTIFICATION_RELEASED: { GUI_EndDialog(pMsg->hWin, 0); } break; } break; case ID_VIDEO_PROGRESS: /* Notifications sent by 'Progress Bar' */ switch(NCode) { case WM_NOTIFICATION_CLICKED: { progress_bar = 1; hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_PROGRESS); ImageOffset = (Video_File.fsize * SLIDER_GetValue(hItem))/100; offset =ImageOffset - Video_File.fptr; time_start -= (offset / frame_speed); } break; case WM_NOTIFICATION_RELEASED: progress_bar = 0; break; } break; case NEXT_BUTTON_VIDEO: /* Notifications sent by 'Button' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State != VIDEO_IDLE) { ImageOffset = 0; VideoPlayer_State = VIDEO_PLAY; time_start = GUI_GetTime(); f_close(&Video_File); goto_next_file(); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_FILE); TEXT_SetText(hItem, (char *)FILEMGR_FileList.file[FILEMGR_FileList.idx].line); hItem = WM_GetDialogItem(pMsg->hWin, PLAY_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonPlay, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonPlayPauseOff,16, 6); } break; } break; case STOP_BUTTON_VIDEO: /* Notifications sent by 'Button' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: VideoPlayer_State = VIDEO_IDLE; f_close(&Video_File); hItem = WM_GetDialogItem(pMsg->hWin, PLAY_BUTTON_VIDEO); BUTTON_SetBitmapEx(hItem, 0, &bmButtonPlayPauseOn, 16, 6); BUTTON_SetBitmapEx(hItem, 1, &bmButtonPlayPauseOff,16, 6); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }