/** * @brief Callback function of the Settings dialog * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbDialogSettings(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode, idx; static int8_t sec, min, hour; static int8_t asec, amin, ahour; static int8_t day, month, max_days; static int16_t year; SPINBOX_Handle hSpin; DROPDOWN_Handle hDropMonth; TEXT_Handle hText ; static CALENDAR_DATE current_date; RTC_TimeTypeDef RTC_TimeStructure; RTC_DateTypeDef RTC_DateStructure; static uint8_t TempStr[50]; switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Get Clock setting from RTC */ RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure); sec = RTC_TimeStructure.RTC_Seconds; min = RTC_TimeStructure.RTC_Minutes; hour = RTC_TimeStructure.RTC_Hours; RTC_GetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure); asec = RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds; amin = RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes; ahour = RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours; RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); year = RTC_DateStructure.RTC_Year + 2000; month = RTC_DateStructure.RTC_Month; day = RTC_DateStructure.RTC_Date; max_days = GetMaxDays(month, year); /* Update the dialog items */ hItem = pMsg->hWin; FRAMEWIN_SetFont(hItem, GUI_FONT_13B_ASCII); /* Date */ hText = TEXT_CreateEx(20, 20, 100, 25, pMsg->hWin, WM_CF_SHOW,0, 0x11F," Date : "); TEXT_SetFont(hText, GUI_FONT_13B_ASCII); TEXT_SetTextColor(hText, 0x00804000); hSpin = SPINBOX_CreateEx(20, 35, 40, 18, pMsg->hWin, WM_CF_SHOW, ID_CLOCK_DAY, 1, max_days); SPINBOX_SetFont(hSpin, GUI_FONT_13B_ASCII); SPINBOX_SetTextColor(hSpin, SPINBOX_CI_ENABLED, 0x00804000); SPINBOX_EnableBlink(hSpin, 250, 1); SPINBOX_SetValue(hSpin, day); hDropMonth = DROPDOWN_CreateEx(65, 35, 80, 160, pMsg->hWin, WM_CF_SHOW, 0, ID_CLOCK_MONTH); DROPDOWN_SetFont(hDropMonth, GUI_FONT_13B_ASCII); DROPDOWN_SetTextColor(hDropMonth, DROPDOWN_CI_UNSEL, 0x00804000); DROPDOWN_SetTextColor(hDropMonth, DROPDOWN_CI_SEL, 0x00804000); for (idx = 0; idx < 12; idx++ ) { DROPDOWN_AddString (hDropMonth, (char *)strMonth[idx]); } DROPDOWN_SetSel(hDropMonth, month - 1); hSpin = SPINBOX_CreateEx(150, 35, 50, 18, pMsg->hWin, WM_CF_SHOW, ID_CLOCK_YEAR, 2000, 2099); SPINBOX_SetFont(hSpin, GUI_FONT_13B_ASCII); SPINBOX_SetTextColor(hSpin, SPINBOX_CI_ENABLED, 0x00804000); SPINBOX_EnableBlink(hSpin, 250, 1); SPINBOX_SetValue(hSpin, year); hItem = CHECKBOX_Create(205, 37, 20, 26, pMsg->hWin, ID_CLOCK_CHECK_DATE ,WM_CF_SHOW); CHECKBOX_SetState(hItem, 1); /* Time */ hText = TEXT_CreateEx(20, 50 + 20, 100, 25, pMsg->hWin, WM_CF_SHOW,0, 0x123," Time : "); TEXT_SetFont(hText, GUI_FONT_13B_ASCII); TEXT_SetTextColor(hText, 0x00804000); hSpin = SPINBOX_CreateEx(20, 65 + 20, 40, 18, pMsg->hWin, WM_CF_SHOW, ID_CLOCK_HOUR, 0,23); SPINBOX_SetFont(hSpin, GUI_FONT_13B_ASCII); SPINBOX_SetTextColor(hSpin, SPINBOX_CI_ENABLED, 0x00804000); SPINBOX_SetValue(hSpin, hour); SPINBOX_EnableBlink(hSpin, 250, 1); hSpin = SPINBOX_CreateEx(75, 65 + 20, 40, 18, pMsg->hWin, WM_CF_SHOW, ID_CLOCK_MIN, 0, 59); SPINBOX_SetFont(hSpin, GUI_FONT_13B_ASCII); SPINBOX_SetTextColor(hSpin, SPINBOX_CI_ENABLED, 0x00804000); SPINBOX_SetValue(hSpin, min); SPINBOX_EnableBlink(hSpin, 250, 1); hSpin = SPINBOX_CreateEx(130, 65 + 20, 40, 18, pMsg->hWin, WM_CF_SHOW, ID_CLOCK_SEC, 0, 59); SPINBOX_SetFont(hSpin, GUI_FONT_13B_ASCII); SPINBOX_SetTextColor(hSpin, SPINBOX_CI_ENABLED, 0x00804000); SPINBOX_SetValue(hSpin, sec); SPINBOX_EnableBlink(hSpin, 250, 1); hItem = CHECKBOX_Create(205, 65 + 20, 20, 26, pMsg->hWin, ID_CLOCK_CHECK_TIME ,WM_CF_SHOW); CHECKBOX_SetState(hItem, 1); /* Alarm */ hText = TEXT_CreateEx(20, 78 + 40, 100, 25, pMsg->hWin, WM_CF_SHOW,0, 0x126," Alarm : "); TEXT_SetFont(hText, GUI_FONT_13B_ASCII); TEXT_SetTextColor(hText, 0x00804000); hSpin = SPINBOX_CreateEx(20, 93 + 40, 40, 18, pMsg->hWin, WM_CF_SHOW, ID_CLOCK_AHOUR, 0,23); SPINBOX_SetFont(hSpin, GUI_FONT_13B_ASCII); SPINBOX_SetTextColor(hSpin, SPINBOX_CI_ENABLED, 0x00804000); SPINBOX_SetValue(hSpin, ahour); SPINBOX_EnableBlink(hSpin, 250, 1); hSpin = SPINBOX_CreateEx(75, 93 + 40, 40, 18, pMsg->hWin, WM_CF_SHOW, ID_CLOCK_AMIN, 0, 59); SPINBOX_SetFont(hSpin, GUI_FONT_13B_ASCII); SPINBOX_SetTextColor(hSpin, SPINBOX_CI_ENABLED, 0x00804000); SPINBOX_SetValue(hSpin, amin); SPINBOX_EnableBlink(hSpin, 250, 1); hSpin = SPINBOX_CreateEx(130, 93 + 40, 40, 18, pMsg->hWin, WM_CF_SHOW, ID_CLOCK_ASEC, 0, 59); SPINBOX_SetFont(hSpin, GUI_FONT_13B_ASCII); SPINBOX_SetTextColor(hSpin, SPINBOX_CI_ENABLED, 0x00804000); SPINBOX_SetValue(hSpin, asec); hItem = CHECKBOX_Create(205, 93 + 40, 20, 26, pMsg->hWin, ID_CLOCK_CHECK_ALARM ,WM_CF_SHOW); CHECKBOX_SetState(hItem, 1); SPINBOX_EnableBlink(hSpin, 250, 1); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_CLOSE_SETTINGS: /* Notifications sent by 'Close' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: /* Exit */ GUI_EndDialog(pMsg->hWin, 0); GUI_EndDialog (hNumPad, 0); break; } break; case ID_SET_SETTINGS: /* Notifications sent by 'Apply' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: if(CHECKBOX_GetState( WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_CLOCK_CHECK_DATE))) { current_date.Year = year = SPINBOX_GetValue (WM_GetDialogItem(pMsg->hWin, ID_CLOCK_YEAR)); current_date.Month = month = DROPDOWN_GetSel (WM_GetDialogItem(pMsg->hWin, ID_CLOCK_MONTH)) + 1; current_date.Day = day = SPINBOX_GetValue (WM_GetDialogItem(pMsg->hWin, ID_CLOCK_DAY)); RTC_DateStructure.RTC_Year = year - 2000; RTC_DateStructure.RTC_Month = month; RTC_DateStructure.RTC_Date = day; RTC_DateStructure.RTC_WeekDay = 0; RTC_SetDate(RTC_Format_BIN, &RTC_DateStructure); hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_CALENDAR); CALENDAR_SetDate(hItem, ¤t_date); CALENDAR_SetSel(hItem, ¤t_date); /* Date */ hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_TEXT_DATE); sprintf((char *)TempStr, "%02d, %s, %04d",day , strMonth[month-1], year); TEXT_SetText(hItem, (char *)TempStr); } if(CHECKBOX_GetState( WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_CLOCK_CHECK_TIME))) { /* Save new param in RTC */ sec = SPINBOX_GetValue (WM_GetDialogItem(pMsg->hWin, ID_CLOCK_SEC)); min = SPINBOX_GetValue (WM_GetDialogItem(pMsg->hWin, ID_CLOCK_MIN)); hour = SPINBOX_GetValue (WM_GetDialogItem(pMsg->hWin, ID_CLOCK_HOUR)); RTC_TimeStructure.RTC_Seconds = sec; RTC_TimeStructure.RTC_Minutes = min; RTC_TimeStructure.RTC_Hours = hour; RTC_SetTime(RTC_Format_BIN, &RTC_TimeStructure); } if(CHECKBOX_GetState( WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_CLOCK_CHECK_ALARM))) { asec = SPINBOX_GetValue (WM_GetDialogItem(pMsg->hWin, ID_CLOCK_ASEC)); amin = SPINBOX_GetValue (WM_GetDialogItem(pMsg->hWin, ID_CLOCK_AMIN)); ahour = SPINBOX_GetValue (WM_GetDialogItem(pMsg->hWin, ID_CLOCK_AHOUR)); /* Disable the Alarm A */ RTC_AlarmCmd(RTC_Alarm_A, DISABLE); /* Disable the RTC Alarm A Interrupt */ RTC_ITConfig(RTC_IT_ALRA, DISABLE); STM_EVAL_LEDOff(LED4); RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = asec; RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = amin; RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = ahour; RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date; RTC_AlarmStructure.RTC_AlarmDateWeekDay = day; RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure); /* Enable the RTC Alarm A Interrupt */ RTC_ITConfig(RTC_IT_ALRA, ENABLE); /* Enable the alarm A */ RTC_AlarmCmd(RTC_Alarm_A, ENABLE); alarm_set = 1; } /* Exit */ WM_InvalidateWindow(WM_GetParent(pMsg->hWin)); GUI_EndDialog(pMsg->hWin, 0); GUI_EndDialog (hNumPad, 0); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hWin; WM_HWIN hText; const WM_KEY_INFO* pInfo; WM_HWIN hItem = 0; int i = 0; int NCode; int Id; hWin = pMsg->hWin; // USER START (Optionally insert additional variables) // USER END switch (pMsg->MsgId) { case USER_MSG_LANGUAGE: InfoSel(0,1); break; case WM_PAINT: GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetColor(GUI_BLACK); GUI_AA_DrawLine(190,0,220,60); GUI_AA_DrawLine(220,60,800,60); // if (Language == 0) // { // GUI_DispStringAt("所处 页/共 页",560,435); // } // else // { // GUI_DispStringAt (pLanguage->Page,560,435); // } // GUI_DispDecAt(thispage,605,435,3); // GUI_DispDecAt(pageNum,700,435,3); //GUI_DispStringAt("高电压警告",230,28); GUI_PNG_Draw(&acPOWER,sizeof(acPOWER),755,35); break; case WM_INIT_DIALOG: pLanguage = &Lgumainwin[Language]; hButton = WM_GetDialogItem (hWin,ID_BUTTON_0); BUTTON_SetBkColor (hButton,BUTTON_CI_UNPRESSED,GUI_WHITE); BUTTON_SetTextColor (hButton,BUTTON_CI_UNPRESSED,GUI_BLACK); BUTTON_SetTextAlign (hButton,GUI_TA_HCENTER|GUI_TA_VCENTER); BUTTON_SetText(hButton,pLanguage->ButtonInfo[0]); BUTTON_SetFocusColor (hButton,GUI_WHITE); WIDGET_SetEffect (hButton,&WIDGET_Effect_None); WM_SetCallback (hButton,&mybutton); WM_SetFocus (hButton); hListview = WM_GetDialogItem (hWin,ID_LV_0); hListhead = LISTVIEW_GetHeader(hListview); LISTVIEW_SetFont(hListview,&GUI_Font30); LISTVIEW_SetRowHeight(hListview,40); LISTVIEW_SetHeaderHeight(hListview,30); LISTVIEW_SetBkColor (hListview,LISTVIEW_CI_SELFOCUS,GUI_GRAY); LISTVIEW_SetBkColor (hListview,LISTVIEW_CI_SEL,GUI_WHITE); LISTVIEW_SetTextColor (hListview,LISTVIEW_CI_SEL,GUI_BLACK); LISTVIEW_SetTextColor(hListview,LISTVIEW_CI_SELFOCUS,GUI_WHITE); WIDGET_SetEffect(hListhead,&WIDGET_Effect_3D); HEADER_SetBkColor (hListhead,GUI_BLACK); HEADER_SetTextColor(hListhead,GUI_WHITE); HEADER_SetFont(hListhead,&GUI_Font24); LISTVIEW_AddColumn(hListview,80,"序号",GUI_TA_HCENTER|GUI_TA_VCENTER); LISTVIEW_AddColumn(hListview,100,"信息编码",GUI_TA_HCENTER|GUI_TA_VCENTER); LISTVIEW_AddColumn(hListview,130,"yyy/mm/dd",GUI_TA_HCENTER|GUI_TA_VCENTER); LISTVIEW_AddColumn(hListview,90,"hh:mm",GUI_TA_HCENTER|GUI_TA_VCENTER); LISTVIEW_AddColumn(hListview,120,"频道",GUI_TA_HCENTER|GUI_TA_VCENTER); LISTVIEW_AddColumn(hListview,100,"信息类型",GUI_TA_HCENTER|GUI_TA_VCENTER); LISTVIEW_AddColumn(hListview,100,"信息状态",GUI_TA_HCENTER|GUI_TA_VCENTER); LISTVIEW_SetTextAlign(hListview,6,GUI_TA_LEFT|GUI_TA_VCENTER); // WM_HWIN - TEXT mainwinText[0] = WM_GetDialogItem(hWin,ID_TEXT_3); //高压警告 mainwinText[1] = WM_GetDialogItem(hWin,ID_TEXT_0); //INT mainwinText[2] = WM_GetDialogItem(hWin,ID_TEXT_1); //loc1,loc2,chs mainwinText[3] = WM_GetDialogItem(hWin,ID_TEXT_2); //time mainwinText[4] = WM_GetDialogItem(hWin,ID_TEXT_4); //page WM_SetCallback(mainwinText[1],&mytext); WM_SetCallback(mainwinText[2],&mytext); TEXT_SetText(mainwinText[0],""); TEXT_SetFont(mainwinText[4],&GUI_Font30); TEXT_SetTextAlign(mainwinText[4],TEXT_CF_RIGHT); TEXT_SetText(mainwinText[4],"所处 01页/共 02页"); //time TEXT_SetTextAlign(mainwinText[3],TEXT_CF_VCENTER); TEXT_SetFont(mainwinText[3],&GUI_Font30); TEXT_SetText(mainwinText[3],"UTC 2015.10.24 17:30"); for (i=0; i<16; i++) { INFO_add(&TESTDATA[i]); } if (rowNum < 8) pageNum = 1; else if (rowNum%8 == 0) pageNum = rowNum/8; else pageNum = rowNum/8+1; InfoSel(0,1); //DisPage(); WM_SetCallback (hListview,&mylistview); break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of Info dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbFileInfoDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; FILINFO fno; #if _USE_LFN static char lfn[_MAX_LFN]; #endif switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = pMsg->hWin; FRAMEWIN_SetClientColor(hItem, GUI_WHITE); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_FILENAME); FILEMGR_GetFileOnly(str, SelectedFileName); TEXT_SetText(hItem, str); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_LOCATION); if(SelectedFileName[0] == '0') { TEXT_SetText(hItem, "[USB Disk]"); } else if(SelectedFileName[0] == '1') { TEXT_SetText(hItem, "[microSD]"); } #if _USE_LFN fno.lfname = lfn; fno.lfsize = sizeof(lfn); #endif f_stat (SelectedFileName, &fno); if(fno.fdate == 0) { fno.fdate = (1 << 5) | 1; /* Set January, 1st */ } sprintf(str, "%02hu/%02hu/%hu %02hu:%02hu:%02hu", ( fno.fdate) & 0x1F, ((fno.fdate) >> 5) & 0x0F, (((fno.fdate) >> 9) & 0x3F) + 1980, ((fno.ftime) >> 11) & 0x1F, ((fno.ftime) >> 5) & 0x3F, (fno.ftime) & 0x1F); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CREATION); TEXT_SetText(hItem, str); if (fno.fsize < 1024) { sprintf(str, "%lu Byte(s)", fno.fsize); } else if (fno.fsize < (1024 * 1024)) { sprintf(str, "%lu KByte(s)", fno.fsize/ 1024); } else { sprintf(str, "%lu MByte(s)", fno.fsize/ 1024 / 1024); } hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_FILESIZE); TEXT_SetText(hItem, str); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { /* Notifications sent by 'OK' */ case ID_BUTTON_OK_FILEINFO: switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); hFileInfo = 0; break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; // USER START (Optionally insert additional variables) // USER END switch (pMsg->MsgId) { case WM_INIT_DIALOG: { // hItem = WM_GetDialogItem(pMsg->hWin, ID_FRAMEWIN_0); //// FRAMEWIN_SetResizeable(hItem,1); // FRAMEWIN_SetFont(hItem,GUI_FONT_COMIC24B_ASCII); //// FRAMEWIN_SetMoveable(hItem,1); //// GUI_ExecCreatedDialog(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0); BUTTON_SetSkin(hItem,BUTTON_SKIN_FLEX); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1); BUTTON_SetSkin(hItem,BUTTON_SKIN_FLEX); // // Initialization of 'Edit' // hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0); EDIT_SetText(hItem, "blabalbalablablaba"); // // Initialization of 'Listwheel' // hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTWHEEL_0); LISTWHEEL_SetLBorder(hItem,10); LISTWHEEL_SetFont(hItem,GUI_FONT_COMIC24B_ASCII); LISTWHEEL_AddString(hItem, "jeden"); LISTWHEEL_AddString(hItem, "dwa"); LISTWHEEL_AddString(hItem, "trzy"); LISTWHEEL_AddString(hItem, "cztery"); LISTWHEEL_AddString(hItem, "piec"); LISTWHEEL_AddString(hItem, "szesc"); LISTWHEEL_AddString(hItem, "siedem"); // // Initialization of 'Checkbox' // hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_0); CHECKBOX_SetText(hItem, "Check"); // // Initialization of 'Checkbox' // hItem = WM_GetDialogItem(pMsg->hWin, ID_CHECKBOX_1); CHECKBOX_SetText(hItem, "Check"); // USER START (Optionally insert additional code for further widget initialization) // USER END hItem=WM_GetDialogItem(pMsg->hWin,ID_PROGBAR_0); PROGBAR_SetMinMax(hItem,0,15); PROGBAR_SetSkin(hItem,PROGBAR_SKIN_FLEX); break; } case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_EDIT_0: // Notifications sent by 'Edit' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END WM_DeleteWindow(hBox); hBox = MESSAGEBOX_Create("Keyboard not supported yet!","ERROR", GUI_MESSAGEBOX_CF_MOVEABLE); break; case WM_NOTIFICATION_RELEASED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_VALUE_CHANGED: // USER START (Optionally insert code for reacting on notification message) // USER END break; // USER START (Optionally insert additional code for further notification handling) // USER END } break; case ID_BUTTON_0: // Notifications sent by 'Button' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_RELEASED: { CreateMojeokno2(); hItem=WM_GetDialogItem(pMsg->hWin,ID_PROGBAR_0); PROGBAR_SetValue(hItem,il++); break; } } break; case ID_BUTTON_1: // Notifications sent by 'Button' switch(NCode) { case WM_NOTIFICATION_CLICKED: { break; } case WM_NOTIFICATION_RELEASED: { CreateGraph(); // WM_DeleteWindow(hBox); // hBox = MESSAGEBOX_Create("Release the BUTTON !","ERROR", GUI_MESSAGEBOX_CF_MOVEABLE); // WM_DeleteWindow(hBox); break; } } break; case ID_LISTWHEEL_0: // Notifications sent by 'Listwheel' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_RELEASED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_SEL_CHANGED: // USER START (Optionally insert code for reacting on notification message) // USER END break; // USER START (Optionally insert additional code for further notification handling) // USER END } break; case ID_CHECKBOX_0: // Notifications sent by 'Checkbox' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_RELEASED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_VALUE_CHANGED: // USER START (Optionally insert code for reacting on notification message) // USER END break; // USER START (Optionally insert additional code for further notification handling) // USER END } break; case ID_CHECKBOX_1: // Notifications sent by 'Checkbox' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_RELEASED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_VALUE_CHANGED: // USER START (Optionally insert code for reacting on notification message) // USER END break; // USER START (Optionally insert additional code for further notification handling) // USER END } break; // USER START (Optionally insert additional code for further Ids) // USER END } break; // USER START (Optionally insert additional message handling) // USER END default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of the Benchmark 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; WM_HWIN hGraph; int cpu_speed = 0; RTC_TimeTypeDef RTC_Time; uint8_t sec, min, hour; char temp[50]; WM_CALLBACK *_cb; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = pMsg->hWin; FRAMEWIN_AddCloseButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0); /* Initialization of 'CPU' */ hItem = TEXT_CreateEx(20, 30, 100, 25, pMsg->hWin, WM_CF_SHOW,0, 0x123,""); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, 0x00804000); TEXT_SetText(hItem, "CPU Usage %:"); hItem = WM_GetDialogItem(pMsg->hWin, ID_BENCH_CPU); TEXT_SetFont(hItem, GUI_FONT_16B_ASCII); TEXT_SetTextColor(hItem, GUI_DARKRED); hItem = WM_GetDialogItem(pMsg->hWin, ID_CPU_GRAPH); FRAMEWIN_SetBarColor(hItem, 0, GUI_DARKGRAY); FRAMEWIN_SetBarColor(hItem, 1, GUI_DARKGRAY); hGraph = GRAPH_CreateEx(10, 45, 220, 110, pMsg->hWin, WM_CF_SHOW, 0, GUI_ID_GRAPH0); hData = GRAPH_DATA_YT_Create(GUI_LIGHTGREEN, 500, 0, 20); GRAPH_SetGridVis(hGraph, 1); GRAPH_SetBorder(hGraph, 20, 4, 5, 4); GRAPH_AttachData(hGraph, hData); hScale = GRAPH_SCALE_Create(20, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 25); GRAPH_AttachScale(hGraph, hScale); GRAPH_SCALE_SetTextColor(hScale, GUI_YELLOW); GRAPH_SetGridDistX(hGraph, 25); GRAPH_SetGridDistY(hGraph, 25); WM_CreateWindowAsChild(80, 45, 354, 23, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbCpuWindow , 0); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case ID_BENCH_CPU: Stop_Test = 0; WM_HideWindow(pMsg->hWin); _cb = WM_GetCallback(WM_HBKWIN); WM_SetCallback(WM_HBKWIN, _ClearDesktop); cpu_speed = Run_SpeedTest(); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_LIST); k_GetTime(&RTC_Time); sec = RTC_Time.Seconds; min = RTC_Time.Minutes; hour = RTC_Time.Hours; sprintf(temp,"[%02d:%02d:%02d]: %d Pix/s ", hour , min, sec, cpu_speed); LISTBOX_AddString(hItem, temp); WM_ShowWindow(pMsg->hWin); hItem = WM_GetDialogItem(pMsg->hWin, ID_BENCH_CPU); sprintf (temp, "%d Pixels/s ", cpu_speed); TEXT_SetText(hItem, temp); WM_SetCallback(WM_HBKWIN, _cb); hItem = WM_GetDialogItem(WM_HBKWIN, ID_BUTTON_BKGND); WM_InvalidateWindow(hItem); WM_InvalidateWindow(WM_HBKWIN); WM_Paint(WM_HBKWIN); break; } break; case WM_NOTIFICATION_CHILD_DELETED: Stop_Test = 1; break; } break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { int Sel, NCode, Id; WM_HWIN hDlg, hItem; GUI_PID_STATE * pState; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0); EDIT_SetDecMode(hItem, 30, 0, 999, 0, 0); /* Select decimal mode */ WM_DisableWindow(hItem); break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hDlg, 1); break; case GUI_KEY_ENTER: GUI_EndDialog(hDlg, 0); break; } break; case WM_TOUCH_CHILD: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ switch (Id) { case GUI_ID_TEXT0: case GUI_ID_TEXT1: case GUI_ID_TEXT2: pState = (GUI_PID_STATE *)((WM_MESSAGE *)pMsg->Data.p)->Data.p; if (pState) { if (pState->Pressed) { WM_HWIN hRadio = WM_GetDialogItem(hDlg, GUI_ID_RADIO0); RADIO_SetValue(hRadio, Id - GUI_ID_TEXT0); /* Use the text beside the radio button to set the value of the radio button */ } } break; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case GUI_ID_OK: GUI_EndDialog(hDlg, 0); break; case GUI_ID_CANCEL: GUI_EndDialog(hDlg, 1); break; } break; case WM_NOTIFICATION_VALUE_CHANGED: hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO0); Sel = RADIO_GetValue(hItem); hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0); WM_SetEnableState(hItem, Sel == 2); break; } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the Clock window * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbClockWindow(WM_MESSAGE * pMsg) { WM_HWIN hItem; static WM_HTIMER hTimerTime; RTC_TimeTypeDef RTC_TimeStructure; RTC_DateTypeDef RTC_DateStructure; uint8_t sec, min, hour, day, month; uint16_t year; static uint8_t TempStr[50]; static CALENDAR_DATE current_date; switch (pMsg->MsgId) { case WM_CREATE: RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); current_date.Year = RTC_DateStructure.RTC_Year + 2000; current_date.Month = RTC_DateStructure.RTC_Month; current_date.Day = RTC_DateStructure.RTC_Date; /* Create timer */ hTimerTime = WM_CreateTimer(pMsg->hWin, 0, 1000, 0); break; case WM_TIMER: /* Write date and clock */ RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure); sec = RTC_TimeStructure.RTC_Seconds; min = RTC_TimeStructure.RTC_Minutes; hour = RTC_TimeStructure.RTC_Hours; RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); year = RTC_DateStructure.RTC_Year + 2000; month = RTC_DateStructure.RTC_Month; day = RTC_DateStructure.RTC_Date; if((current_date.Day != day) ||(current_date.Month != month) ||(current_date.Year != year)) { current_date.Year = year = RTC_DateStructure.RTC_Year + 2000; current_date.Month = month = RTC_DateStructure.RTC_Month; current_date.Day = day = RTC_DateStructure.RTC_Date; hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_TEXT_DATE); sprintf((char *)TempStr, "%02d, %s, %04d",day , strMonth[month-1], year); TEXT_SetText(hItem, (char *)TempStr); hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_CALENDAR); CALENDAR_SetDate(hItem, ¤t_date); CALENDAR_SetSel(hItem, ¤t_date); WM_InvalidateWindow(hItem); } hItem = WM_GetDialogItem(WM_GetParent(pMsg->hWin), ID_TEXT_CLOCK); sprintf((char *)TempStr, "%02d:%02d:%02d",hour , min, sec); TEXT_SetText(hItem, (char *)TempStr); WM_InvalidateWindow(pMsg->hWin); WM_RestartTimer(pMsg->Data.v, 0); break; case WM_DELETE: WM_DeleteTimer(hTimerTime); break; default: WM_DefaultProc(pMsg); } }
/** * @brief callback for video window * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbplaybackwin(WM_MESSAGE * pMsg) { WM_HWIN hItem; int Id, NCode; char tmp[64]; switch (pMsg->MsgId) { case WM_CREATE: SelLayer = 1; hItem = BUTTON_CreateEx(155, 240, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_BACK); WM_SetCallback(hItem, _cbButton_back); hItem = BUTTON_CreateEx(200, 240, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_STOP); WM_SetCallback(hItem, _cbButton_stop); hItem = BUTTON_CreateEx(240, 240, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, PLAY_VIDEO_ID); WM_SetCallback(hItem, _cbButton_play); hItem = BUTTON_CreateEx(285, 240, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_FORE); WM_SetCallback(hItem, _cbButton_fore); hItem = SLIDER_CreateEx(65, 223, 350, 12, pMsg->hWin, WM_CF_SHOW, 0, ID_SLIDER_DURATION); SLIDER_SetBkColor(hItem, GUI_TRANSPARENT); SLIDER_SetFocusColor (hItem, GUI_STCOLOR_LIGHTBLUE); SLIDER_SetValue(hItem, 0); SLIDER_SetWidth(hItem, 0); SLIDER_SetSTSkin(hItem); hItem = BUTTON_CreateEx(418, 0, 60, 60, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_MENU); WM_SetCallback(hItem, _cbButton_menu); hItem = BUTTON_CreateEx(0, 217, 60, 60, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT_FROM_VIDEO); WM_SetCallback(hItem, _cbButton_exit1); /* Title Initialization in play list */ hItem = TEXT_CreateEx(10, 15, 80, 20, pMsg->hWin, WM_CF_SHOW, 0, ID_ELAPSED_TIME, "00:00"); TEXT_SetFont(hItem, &GUI_FontLubalGraph16B); TEXT_SetTextColor(hItem, GUI_WHITE); /* Title Initialization in play list */ hItem = TEXT_CreateEx(40, 30, 40, 20, pMsg->hWin, WM_CF_SHOW, 0, ID_TIME, "00:00"); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(65, 10, 350, 30, pMsg->hWin, WM_CF_SHOW, TEXT_CF_HCENTER, ID_VIDEO_NAME, "File Name"); TEXT_SetFont(hItem, &GUI_FontLubalGraph16B); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(60, 30, 350, 30, pMsg->hWin, WM_CF_SHOW, TEXT_CF_HCENTER, ID_VIDEO_FORMAT, "Format : MJPEG [--/--]"); TEXT_SetFont(hItem, GUI_FONT_13_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(400, 110, 85, 10, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FPS, "Rate : 20 fps"); TEXT_SetFont(hItem, GUI_FONT_10_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(400, 122, 85, 10, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_FPU, "FPU : ON"); TEXT_SetFont(hItem, GUI_FONT_10_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(400, 134, 85, 10, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_IC, "I-Cache : ON"); TEXT_SetFont(hItem, GUI_FONT_10_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(400, 146, 85, 10, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_DC, "D-Cache : ON"); TEXT_SetFont(hItem, GUI_FONT_10_1); TEXT_SetTextColor(hItem, GUI_WHITE); hItem = TEXT_CreateEx(400, 158, 85, 10, pMsg->hWin, WM_CF_SHOW, TEXT_CF_LEFT, ID_FEATURES_CPU, "MCU Load : 0%"); TEXT_SetFont(hItem, GUI_FONT_10_1); TEXT_SetTextColor(hItem, GUI_WHITE); break; case WM_TIMER: { WM_RestartTimer(pMsg->Data.v, 1000); /* show elapsed time */ hItem = WM_GetDialogItem(pMsg->hWin, ID_ELAPSED_TIME); elapsed_time++; sprintf((char *)tmp , "%02lu:%02lu", elapsed_time/60, elapsed_time%60 ); TEXT_SetText(hItem, tmp); sprintf((char *)tmp , "MCU Load : %d%%", osGetCPUUsage()); hItem = WM_GetDialogItem(pMsg->hWin, ID_FEATURES_CPU); TEXT_SetText(hItem, tmp); hItem = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_DURATION); SLIDER_SetValue(hItem, (GUI_MOVIE_GetFrameIndex(hvideo)* 100)/ Video_Info.NumFrames); if(step == 0) { step = ((GUI_MOVIE_GetFrameIndex(hvideo)* 100)/ Video_Info.NumFrames); } if(((GUI_MOVIE_GetFrameIndex(hvideo)* 100)/ Video_Info.NumFrames) > (100 - 2*step - 1)) { SLIDER_SetValue(hItem, 100); GUI_Exec(); } } break; case WM_DELETE: if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } playbackwin = 0; break; case WM_PAINT: GUI_SetColor(0xFF000000 | GUI_BLACK); GUI_SetBkColor(GUI_TRANSPARENT); GUI_Clear(); GUI_SetColor(GUI_BLACK); GUI_DrawHLine(0, 0, 480); GUI_DrawHLine(271, 0, 480); GUI_DrawLine(479, 0, 479, 272); GUI_DrawLine(0, 0, 0, 272); /* Background for total time */ GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_AA_FillRoundedRect((-30), 5, 80, 45, 20); /*Video Information */ GUI_AA_FillRoundedRect(120, 5, 360, 45, 20); /*H/W Information */ GUI_AA_FillRoundedRect(390, 100, 600, 180, 30); 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_FROM_VIDEO: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(&hvideo, &Video_File); } GUI_EndDialog(pMsg->hWin, 0); SelLayer = 0; GUI_SetLayerVisEx (1, 0); GUI_SelectLayer(0); WM_HideWindow(hFrame); WM_Exec(); WM_DeleteWindow(hFrame); WM_InvalidateWindow(VideoWin); hFrame = 0; break; } break; case ID_BUTTON_MENU: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State != VIDEO_IDLE) { _StopPlay(&hvideo, &Video_File); } GUI_EndDialog(pMsg->hWin, 0); SelLayer = 0; GUI_SetLayerVisEx (1, 0); GUI_SelectLayer(0); WM_DeleteWindow(hFrame); WM_HideWindow(VideoWin); WM_Exec(); WM_DeleteWindow(VideoWin); hFrame = 0; break; } break; case ID_BUTTON_STOP: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(VideoPlayer_State != VIDEO_IDLE) { VideoPlayer_State = VIDEO_STOP; _StopPlay(&hvideo, &Video_File); } WM_InvalidateWindow(pMsg->hWin); break; } break; case ID_BUTTON_FORE: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(Video_FilePos < (VideoList.ptr - 1)) { Video_FilePos++; } else { Video_FilePos = 0; } if((VideoPlayer_State == VIDEO_PLAY) || (VideoPlayer_State == VIDEO_PAUSE)) { _StopPlay(&hvideo, &Video_File); _StartPlay(&hvideo, (char *)VideoList.file[Video_FilePos].name, &Video_File, 0, 0); VideoPlayer_State = VIDEO_PLAY; } else { _StartPlay(&hvideo, (char *)VideoList.file[Video_FilePos].name, &Video_File, 0, 0); _StopPlay(&hvideo, &Video_File); } break; } break; /* Notifications sent by 'progress' Slider */ case ID_SLIDER_DURATION: if(NCode == WM_NOTIFICATION_CLICKED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_DURATION); int32_t newpos; if(VideoPlayer_State == VIDEO_PLAY) { GUI_MOVIE_Pause(hvideo); hItem = WM_GetDialogItem(pMsg->hWin, ID_SLIDER_DURATION); newpos = (SLIDER_GetValue(hItem) * Video_Info.NumFrames)/100; GUI_MOVIE_GotoFrame(hvideo, newpos); GUI_MOVIE_Play(hvideo); elapsed_time = (Video_Info.msPerFrame * newpos)/ 1000; hItem = WM_GetDialogItem(playbackwin, ID_ELAPSED_TIME); sprintf((char *)tmp , "%02lu:%02lu", elapsed_time/60, elapsed_time%60 ); TEXT_SetText(hItem, tmp); WM_InvalidateWindow(hItem); WM_Paint(hItem); } } break; case ID_BUTTON_BACK: switch(NCode) { case WM_NOTIFICATION_RELEASED: if(Video_FilePos > 0) { Video_FilePos--; } else { Video_FilePos = VideoList.ptr - 1; } if((VideoPlayer_State == VIDEO_PLAY) || (VideoPlayer_State == VIDEO_PAUSE)) { _StopPlay(&hvideo, &Video_File); _StartPlay(&hvideo, (char *)VideoList.file[Video_FilePos].name, &Video_File, 0, 0); VideoPlayer_State = VIDEO_PLAY; } else { _StartPlay(&hvideo, (char *)VideoList.file[Video_FilePos].name, &Video_File, 0, 0); _StopPlay(&hvideo, &Video_File); } break; } break; case PLAY_VIDEO_ID: switch(NCode) { case WM_NOTIFICATION_RELEASED: if((VideoPlayer_State == VIDEO_IDLE) || (VideoPlayer_State == VIDEO_PAUSE)) { hTimer = WM_CreateTimer(playbackwin, ID_TIMER_PROCESS, 1000, 0); GUI_MOVIE_Play(hvideo); VideoPlayer_State = VIDEO_PLAY; } else if(VideoPlayer_State == VIDEO_STOP) { _StartPlay(&hvideo, (char *)VideoList.file[Video_FilePos].name, &Video_File, 0, 0); VideoPlayer_State = VIDEO_PLAY; } else { GUI_MOVIE_Pause(hvideo); VideoPlayer_State = VIDEO_PAUSE; if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } } break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; WM_MESSAGE Msg; WM_HWIN hIteminfo; int i; int sel; uint8_t items; FRESULT res; // FILINFO fno; //DIR dir; // USER START (Optionally insert additional variables) // USER END hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, GUI_LIGHTGRAY); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); //WM_SetFocus(hItem); switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetFont(hItem,&GUI_FontHZ_Song_12); TEXT_SetText(hItem, "自学习文件选择"); hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetFont(hIteminfo,&GUI_FontHZ_Song_12); TEXT_SetTextColor(hIteminfo,GUI_RED); TEXT_SetText(hIteminfo, (char *)"打开文件……"); WM_HideWindow(hIteminfo); // // Initialization of 'Dropdown' // hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); DROPDOWN_SetFont(hItem,&GUI_FontHZ_Song_12); DROPDOWN_AddString(hItem, "U盘"); DROPDOWN_AddString(hItem, "SD卡"); if(k_StorageGetStatus(MSD_DISK_UNIT) != 0) DROPDOWN_SetSel(hItem,1); else DROPDOWN_SetSel(hItem,0); // // Initialization of 'Treeview' // store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } LISTBOX_SetFont(hItem,GUI_FONT_20_1); LISTBOX_SetSel(hItem,TestFolder.number_CurrentFile); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OK); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_GREEN); BUTTON_SetFocussable(hItem,0);//不接收焦点 hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CANCEL); BUTTON_SetFont(hItem,&GUI_FontHZ_Song_12); BUTTON_SetSkinClassic(hItem); BUTTON_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); BUTTON_SetBkColor(hItem,BUTTON_CI_UNPRESSED, GUI_RED); BUTTON_SetFocussable(hItem,0);//不接收焦点 // USER START (Optionally insert additional code for further widget initialization) // USER END break; case MY_MESSAGE_CLICK: GUI_SendKeyMsg(GUI_KEY_TAB, 1);//改变输入焦点 break; case MY_MESSAGE_DOWN: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(WM_HasFocus(hItem)) { LISTBOX_IncSel(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); if(WM_HasFocus(hItem)) { sel=DROPDOWN_GetSel(hItem); if(sel<1) { DROPDOWN_IncSel(hItem); } else //sel>=1 { DROPDOWN_SetSel(hItem,0); } store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } } break; case MY_MESSAGE_UP: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); if(WM_HasFocus(hItem)) { LISTBOX_DecSel(hItem); } hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); if(WM_HasFocus(hItem)) { sel=DROPDOWN_GetSel(hItem); if(sel>0) { DROPDOWN_DecSel(hItem); } else //sel>=1 { DROPDOWN_SetSel(hItem,1); } store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } } break; case MY_MESSAGE_CANCEL://取消 GUI_EndDialog(pMsg->hWin,0); break; case MY_MESSAGE_OK: hIteminfo = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1); TEXT_SetText(hIteminfo, (char *)"打开文件中……"); WM_ShowWindow(hIteminfo); GUI_Exec(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); TestFolder.number_CurrentFile=LISTBOX_GetSel(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); WT_TestItem_Init((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]); //WT_TestFile_Write2Flash((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]);//将文件内容复制到Flash //WT_TestFiles_Write2card((char *)TestFolder.FilesName[TestFolder.number_CurrentFile]);//将文件内容复制到SD card if(TestFile.file_status == 1)//文件读取OK { Msg.MsgId = MY_MESSAGE_BUTTONOK; WM_SendMessage(pMsg->hWinSrc,&Msg); GUI_EndDialog(pMsg->hWin,0); } else { TEXT_SetText(hIteminfo, (char *)"读取文件错误!"); WM_ShowWindow(hIteminfo); } Msg.MsgId = MY_MESSAGE_BUTTONOK; WM_SendMessage(pMsg->hWinSrc,&Msg); GUI_EndDialog(pMsg->hWin,0); break; case MY_MESSAGE_BUTTONDELETE: hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); if(store_dev==0) //usb strcpy(filename,path_testfile); //f_opendir(&dir, path_testfile); if(store_dev==1) //sd strcpy(filename,path_testfile_sd); //f_opendir(&dir, path_testfile_sd); //res = f_opendir(&dir, "1:/LZY_WireTester/Test Files"); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); strcat(filename,"/"); sel = LISTBOX_GetSel(hItem); if(sel < 0) break; strcat(filename,(char *)TestFolder.FilesName[LISTBOX_GetSel(hItem)]); res=f_unlink((const TCHAR*)filename); if(res == FR_OK) { hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0); store_dev=DROPDOWN_GetSel(hItem); WT_TestFolder_Init(); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); items = LISTBOX_GetNumItems(hItem); for(i=0;i<items;i++) { LISTBOX_DeleteItem(hItem,0); } for(i=0;i<TestFolder.number_TotalFile;i++) { LISTBOX_AddString(hItem, (char *)TestFolder.FilesName[i]); } WM_SetFocus(hItem); if(sel > 0) LISTBOX_SetSel(hItem,sel - 1); else LISTBOX_SetSel(hItem,0); } break; case WM_PAINT://绘制标题栏 GUI_SetColor(GUI_DARKBLUE); GUI_FillRect(0,0,380,22); GUI_SetColor(GUI_DARKGRAY); GUI_SetPenSize(8); GUI_DrawRect(0,0,378,220); 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, 120, "Track", GUI_TA_VCENTER | GUI_TA_LEFT); LISTVIEW_AddColumn(hItem, 60, "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 'OPEN' Button */ hItem = WM_GetDialogItem(pMsg->hWin, ID_OPEN_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 = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(17, 96, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_REPEAT_BUTTON); WM_SetCallback(hItem, _cbButton_repeat); hItem = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(58, 91, 40, 40, pMsg->hWin, WM_CF_SHOW, 0, ID_MUTE_BUTTON); WM_SetCallback(hItem, _cbButton_speaker); hItem = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(239, 70, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_STOP_BUTTON); WM_SetCallback(hItem, _cbButton_stop); hItem = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(198, 45, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_PREVIOUS_BUTTON); WM_SetCallback(hItem, _cbButton_previous); hItem = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(231, 10, 50, 50, pMsg->hWin, WM_CF_SHOW, 0, ID_PLAY_BUTTON); WM_SetCallback(hItem, _cbButton_play); hItem = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(276, 45, 35, 35, pMsg->hWin, WM_CF_SHOW, 0, ID_NEXT_BUTTON); WM_SetCallback(hItem, _cbButton_next); hItem = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(197, 135, 70, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_OPEN_BUTTON); WM_SetCallback(hItem, _cbButton_open); hItem = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(197, 172, 70, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_ADD_BUTTON); WM_SetCallback(hItem, _cbButton_add); hItem = WM_GetClientWindow(pMsg->hWin); hItem = BUTTON_CreateEx(280, 170, 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); WM_CreateWindowAsChild(319, 220, 1, 1, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMediaConnection , 0); break; case WM_PAINT: GUI_SetBkColor(GUI_BLACK); GUI_ClearRect(8, 3, 190, 70); DrawRect3D(195, 3, 118, 127); DrawRect3D(195, 131, 118, 77); DrawRect3D(8, 70, 182, 62); 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, 20, 20, 200, 150, apDrives, GUI_COUNTOF(apDrives), 0, "Open an audio file", 0, pFileInfo); 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); WM_InvalidateWindow(pMsg->hWin); } } } } } 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; } hItem = WM_GetDialogItem(pMsg->hWin, ID_PLAY_BUTTON); WM_InvalidateWindow(hItem); WM_Update(hItem); AUDIOPLAYER_Stop(); hItem = WM_GetDialogItem(AUDIOPLAYER_hWin, ID_ELAPSED_TIME); TEXT_SetText(hItem, "00:00"); } } 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++; LISTVIEW_IncSel(WM_GetDialogItem(AUDIOPLAYER_hWin, ID_WAVFILE_LIST)); } 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--; LISTVIEW_DecSel(WM_GetDialogItem(AUDIOPLAYER_hWin, ID_WAVFILE_LIST)); } 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_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) { _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, 20, 20, 200, 150, 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; } 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 routine of desktop window status. * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbStatus(WM_MESSAGE * pMsg) { int xSize, ySize; static uint8_t TempStr[50]; static WM_HTIMER hTimerTime; RTC_TimeTypeDef RTC_Time; RTC_DateTypeDef RTC_DateStructure; uint8_t sec, min, hour, day, month; uint16_t year; WM_HWIN hWin; hWin = pMsg->hWin; switch (pMsg->MsgId) { case WM_CREATE: hTimerTime = WM_CreateTimer(hWin, ID_TIMER_TIME, 1000, 0); break; case WM_DELETE: WM_DeleteTimer(hTimerTime); break; case WM_TIMER: if( WM_GetTimerId(pMsg->Data.v) == ID_TIMER_TIME) { WM_InvalidateWindow(hStatusWin); WM_RestartTimer(pMsg->Data.v, 1000); } break; case WM_PAINT: xSize = WM_GetWindowSizeX(hWin); ySize = WM_GetWindowSizeY(hWin); /* Draw background */ GUI_SetColor(0x00E6B26C); GUI_FillRect(0, 0, xSize , ySize - 3); GUI_SetColor(0x00FFB26C); GUI_DrawHLine(ySize - 2, 0, xSize ); GUI_SetColor(0x00FFB26C); GUI_DrawHLine(ySize - 1, 0, xSize ); /* Draw time & Date */ GUI_SetTextMode(GUI_TM_TRANS); GUI_SetColor(GUI_WHITE); GUI_SetFont(GUI_FONT_13B_ASCII); k_GetTime(&RTC_Time); sec = RTC_Time.Seconds; min = RTC_Time.Minutes; hour = RTC_Time.Hours; k_GetDate(&RTC_DateStructure); sprintf((char *)TempStr, "%02d:%02d:%02d", hour , min, sec); GUI_DispStringAt((char *)TempStr, xSize - 50, 4); year = RTC_DateStructure.Year + 2015; month = RTC_DateStructure.Month; day = RTC_DateStructure.Date; if((day > 0) && (day <= 31) && (month > 0)&& (month <= 12) && (year >= 1900)) { sprintf((char *)TempStr, "%02d, %s, %04d", day , strMonth[month-1], year); } else { sprintf((char *)TempStr, "01, Jan, 2015"); } GUI_DispStringHCenterAt((char *)TempStr, (xSize / 2), 4); /* USB */ if(k_StorageGetStatus(USB_DISK_UNIT)) { GUI_DrawBitmap(&bmusbdisk, xSize - 80, 0); } /* MSD */ if(k_StorageGetStatus(MSD_DISK_UNIT)) { GUI_DrawBitmap(&bmmicrosd, xSize - 80 - 30 * k_StorageGetStatus(USB_DISK_UNIT) , 0); } sprintf((char *)TempStr, "CPU : %d %%", osGetCPUUsage()); if(osGetCPUUsage() > 95 ) { /* waiting for user input when using dialog box*/ sprintf((char *)TempStr, "CPU : 95 %%"); } GUI_DispStringAt( (char *)TempStr, 50, 4); break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback routine of desktop window. * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbBk(WM_MESSAGE * pMsg) { MENU_MSG_DATA* pData; uint32_t NCode, Id; static uint8_t sel = 0; switch (pMsg->MsgId) { case WM_MENU: /* Process the menu message */ pData = (MENU_MSG_DATA*)pMsg->Data.p; switch (pData->MsgType) { case MENU_ON_ITEMSELECT: /* A menu item has been selected */ switch (pData->ItemId) { case ID_MENU_LOG: if (hLog == 0) { hLog = GUI_CreateDialogBox(_aKernelLogDialogCreate, GUI_COUNTOF(_aProcessManagerDialogCreate), _cbKernelLogDialog, pMsg->hWin, FRAMEWIN_CF_MOVEABLE | WM_CF_FGND | WM_CF_STAYONTOP, 50); } else { WM_ShowWindow(hLog); WM_BringToTop(hLog); } break; case ID_MENU_PMGR: if(hProcess == 0) { hProcess = GUI_CreateDialogBox(_aProcessManagerDialogCreate, GUI_COUNTOF(_aProcessManagerDialogCreate), _cbProcessManagerDialog, pMsg->hWin, FRAMEWIN_CF_MOVEABLE | WM_CF_FGND | WM_CF_STAYONTOP, 50); } else { WM_ShowWindow(hProcess); WM_BringToTop(hProcess); } break; case ID_MENU_PERF: if(hPerformance == 0) { hPerformance = GUI_CreateDialogBox(_aPerformanceDialogCreate, GUI_COUNTOF(_aPerformanceDialogCreate), _cbPerformanceDialog, pMsg->hWin, FRAMEWIN_CF_MOVEABLE | WM_CF_FGND | WM_CF_STAYONTOP, 50); } else { WM_ShowWindow(hPerformance); WM_BringToTop(hPerformance); } break; case ID_MENU_EXIT: break; } } break; case WM_PAINT: GUI_SetBkColor(GUI_WHITE); GUI_Clear(); if(hIcon) { WM_BringToBottom(hIcon); } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (NCode) { case WM_NOTIFICATION_CLICKED: if (Id == ID_ICONVIEW_MENU) { sel = ICONVIEW_GetSel(pMsg->hWinSrc); if(hPerformance != 0) { WM_HideWindow(hPerformance); } if(sel < k_ModuleGetNumber()) { if(sel < 8) { ICONVIEW_SetSel(pMsg->hWinSrc, -1); } else { ICONVIEW_SetSel(pMsg->hWinSrc, k_ModuleGetNumber() + 1); } } } break; case WM_NOTIFICATION_RELEASED: if (Id == ID_ICONVIEW_MENU) { if(sel < k_ModuleGetNumber()) { module_prop[sel].module->startup(pMsg->hWin, 0, 25); sel = 0; } } else if (Id == ID_BUTTON_BKGND) { /* Create popup menu after touching the display */ _OpenPopup(WM_HBKWIN, _aMenuItems, GUI_COUNTOF(_aMenuItems),0 , 25); } break; default: break; } break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback function of the process manager dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbProcessManagerDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id, Idx; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = pMsg->hWin; FRAMEWIN_SetTitleVis(hItem, 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_PROCESSMANAGER); LISTVIEW_AddColumn(hItem, 100, "Tasks", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, 60, "Priority", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_AddColumn(hItem, 60, "State", GUI_TA_HCENTER | GUI_TA_VCENTER); LISTVIEW_SetGridVis(hItem, 1); LISTVIEW_SetTextAlign(hItem, 0, GUI_TA_LEFT); LISTVIEW_SetTextAlign(hItem, 1, GUI_TA_HCENTER); LISTVIEW_SetTextAlign(hItem, 2, GUI_TA_HCENTER); HEADER_SetDragLimit(LISTVIEW_GetHeader(hItem), 1); LISTVIEW_SetCompareFunc(hItem, 1, LISTVIEW_CompareDec); LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_SELFOCUS, GUI_LIGHTBLUE); for (Idx = 0; Idx < 16; Idx ++) { LISTVIEW_AddRow(hItem, NULL); } _UpdateProcessManagerView(hItem); WM_CreateWindowAsChild(470, 0, 10, 10, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbTaskWindow , 0); break; case WM_PAINT: hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTVIEW_PROCESSMANAGER); _UpdateProcessManagerView(hItem); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_BUTTON_CANCEL_PROCESSMANAGER: /* Notifications sent by 'Cancel' button */ switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); hProcess = 0; break; } break; case ID_LISTVIEW_PROCESSMANAGER: /* Notifications sent by 'Listview' */ switch(NCode) { case WM_NOTIFICATION_CLICKED: break; case WM_NOTIFICATION_RELEASED: break; case WM_NOTIFICATION_SEL_CHANGED: 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; int Id, NCode; static uint8_t sel = 0; switch (pMsg->MsgId) { case WM_INIT_DIALOG: memset(Video_Path, 0, 256); hItem = BUTTON_CreateEx(419, 0, 60, 60, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); hItem = ST_AnimatedIconView_CreateEx(30, 20, LCD_GetXSize() - 90, LCD_GetYSize() - 60, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS , 0, ID_ICONVIEW_SUBMENU, 170, 180, 40, 5); ST_AnimatedIconView_SetDualFont(hItem, &GUI_FontLubalGraph20, &GUI_FontLubalGraph20); ST_AnimatedIconView_SetSpace(hItem, GUI_COORD_Y, 5); ST_AnimatedIconView_SetSpace(hItem, GUI_COORD_X, 20); ST_AnimatedIconView_SetFrame(hItem, GUI_COORD_Y, 20); ST_AnimatedIconView_SetFrame(hItem, GUI_COORD_X, 5); ST_AnimatedIconView_SetSel(hItem, -1); ST_AnimatedIconView_SetTextColor(hItem, ICONVIEW_CI_UNSEL, GUI_STCOLOR_LIGHTBLUE); ST_AnimatedIconView_SetBkColor(hItem, ICONVIEW_CI_UNSEL, GUI_WHITE); ST_AnimatedIconView_SetBkColor(hItem, ICONVIEW_CI_SEL, GUI_WHITE); ST_AnimatedIconView_SetDualTextColor(hItem, ICONVIEW_CI_SEL, GUI_STCOLOR_LIGHTBLUE, GUI_STCOLOR_DARKBLUE ); ST_AnimatedIconView_AddIcon(hItem, open_file, 0, "Play video"); ST_AnimatedIconView_AddIcon(hItem, add_video, 0, "Open playlist"); break; case WM_PAINT: GUI_SetColor(GUI_BLACK); GUI_DrawLine(479, 0, 479, 272); 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_CLICKED: /* avoid icon view animation */ hItem = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_SUBMENU); WM_HideWindow(hItem); break; case WM_NOTIFICATION_MOVED_OUT: hItem = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_SUBMENU); WM_ShowWindow(hItem); break; case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_ICONVIEW_SUBMENU: switch(NCode) { case WM_NOTIFICATION_RELEASED: sel = ST_AnimatedIconView_GetSel(pMsg->hWinSrc); if(sel == 0) { if(VNC_IsRunning() == 0) { /* Playlist not empty, so start play first item */ if(VideoList.ptr > 0) { GUI_SetLayerVisEx (1, 1); GUI_SelectLayer(1); playbackwin = WM_CreateWindowAsChild(-1, 0, 480, 272, WM_GetDesktopWindowEx(1), WM_CF_SHOW, _cbplaybackwin , 0); WM_CreateWindowAsChild(0, 70, 480, 140, WM_GetDesktopWindowEx(1), WM_CF_SHOW | WM_CF_HASTRANS, _cbTouch , 0); GUI_SelectLayer(0); _StartPlay(&hvideo, (char *)VideoList.file[0].name, &Video_File, 0, 0); VideoPlayer_State = VIDEO_PLAY; hFrame = WM_CreateWindowAsChild(-1, 0, 480, 272,pMsg->hWin, WM_CF_SHOW, _cbVideoWindow , 0); GUI_SelectLayer(1); } else {/* There is no item yet in the playlist: Show hint message */ hItem = GUI_CreateDialogBox(_aFileInfoDialogCreate, GUI_COUNTOF(_aFileInfoDialogCreate), _cbFileInfoDialog, pMsg->hWin, 75, 30); WM_MakeModal(hItem); } } else { hItem = GUI_CreateDialogBox(_aFileErrorDialogCreate, GUI_COUNTOF(_aFileErrorDialogCreate), _cbFileInfoDialog, pMsg->hWin, 75, 30); WM_MakeModal(hItem); } } else if(sel == 1) { hPlaylistWin = GUI_CreateDialogBox(_aPlaylistDialogCreate, GUI_COUNTOF(_aPlaylistDialogCreate), _cbPlaylistDialog, pMsg->hWin, 60, 40); WM_MakeModal(hPlaylistWin); } break; } 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) { 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 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, Hint; GUI_RECT r; int NCode, Id; uint32_t tmp_param = 0; switch (pMsg->MsgId) { case WM_INIT_DIALOG: pFileInfo = (CHOOSEFILE_INFO *)k_malloc(sizeof(CHOOSEFILE_INFO)); CameraSettings.d32 = k_BkupRestoreParameter(CALIBRATION_CAMERA_SETTING_BKP); /* Initialization of 'Image' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE); IMAGE_SetBitmap(hItem, &bmwizard); /* Initialization of 'Effects' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT); TEXT_SetFont(hItem, GUI_FONT_16B_1); /* Initialization of 'Radio' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_RADIO); RADIO_SetText(hItem, "None", 0); RADIO_SetText(hItem, "B&W", 1); RADIO_SetText(hItem, "Negative", 2); RADIO_SetText(hItem, "Antique", 3); RADIO_SetText(hItem, "Blue", 4); RADIO_SetText(hItem, "Green", 5); RADIO_SetText(hItem, "Red", 6); /* Camera frame initialization */ hItem = WM_GetClientWindow(pMsg->hWin); WM_GetClientRectEx(hItem, &r); hCameraFrame = WM_CreateWindowAsChild(r.x0 + 79, r.y0 + 49, r.x1 - 159, r.y1 - 93, hItem, WM_CF_SHOW | WM_CF_LATE_CLIP, _cbCameraWindow, 0); /* Buttons initialization */ hItem = BUTTON_CreateEx(266, 175, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CLOSE); WM_SetCallback(hItem, _cbButton_close); hItem = BUTTON_CreateEx(256, 79, 50, 50, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_CAPTURE); WM_SetCallback(hItem, _cbButton_capture); hItem = BUTTON_CreateEx(266, 14, 30, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_SETTINGS); WM_SetCallback(hItem, _cbButton_settings); _Check_DefaultPath (capture_folder); FrameAvailable = 0; break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; if(hSettings == 0) { switch(Id) { case ID_RADIO: if(NCode == WM_NOTIFICATION_VALUE_CHANGED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_RADIO); if(CAMERA_GetState() != CAMERA_ERROR) { CAMERA_SelectEffect(RADIO_GetValue(hItem)); } } break; case ID_BUTTON_CLOSE: /* Notifications sent by 'Close' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: k_free(pFileInfo); CAMERA_Stop(); GUI_EndDialog(pMsg->hWin, 0); break; } break; case ID_BUTTON_CAPTURE: /* Notifications sent by 'OK' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: /* Show Hint */ if(CAMERA_GetState() == CAMERA_OK) { Hint = WM_CreateWindowAsChild(100, 90, 120, 32, pMsg->hWin, WM_CF_SHOW , _cbHint, 0); GUI_Exec(); if(CAMERA_GetState() == CAMERA_OK) { CAMERA_SaveToFile(capture_folder); } WM_DeleteWindow(Hint); } break; } break; case ID_BUTTON_SETTINGS: /* Notifications sent by 'Settings' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: camera_disabled = 1; hSettings = GUI_CreateDialogBox(_aSettingsDialogCreate, GUI_COUNTOF(_aSettingsDialogCreate), _cbSettingsDialog, CAMERA_hWin, 0, 0); break; } break; } } break; case WM_DELETE: tmp_param = k_BkupRestoreParameter(CALIBRATION_CAMERA_SETTING_BKP); /* check if new settings have to be saved */ if(CameraSettings.d32 != tmp_param) { k_BkupSaveParameter(CALIBRATION_CAMERA_SETTING_BKP, CameraSettings.d32); } 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 Id, NCode; switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Initialization of 'System Information' */ hItem = pMsg->hWin; FRAMEWIN_AddCloseButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_USB_NOT_CONNECTED); IMAGE_SetBitmap(hItem, &bmUSB_not_connected); hItem = WM_GetDialogItem(pMsg->hWin, ID_MSD_NOT_CONNECTED); IMAGE_SetBitmap(hItem, &bmsdcard_not_connected); USBDSettings.b.connection = DISCONNECTED; WM_CreateWindowAsChild(470, 0, 10, 10, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMSDConnectionStatus , 0); break; case WM_PAINT: DrawRect3D(25, 05, 250, 180); break; case WM_DELETE: USBDSTOR_Stop(); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch(Id) { /* Notifications sent by 'Connect' Button */ case ID_BUTTON_USB: if(NCode == WM_NOTIFICATION_RELEASED) { hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_USB); if(USBDSettings.b.connection == DISCONNECTED) { BUTTON_SetText(hItem, "Disconnect USB"); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE1_CONNECTED); IMAGE_SetBitmap(hItem, &bmconnected); USBDSettings.b.connection = CONNECTED; USBDSTOR_Connect(); } else { BUTTON_SetText(hItem, "Connect USB "); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE1_CONNECTED); IMAGE_SetBitmap(hItem, &bmnot_connected); USBDSettings.b.connection = DISCONNECTED; USBDSTOR_Disconnect(); } } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of 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; TREEVIEW_ITEM_Handle hTreeView; TREEVIEW_ITEM_INFO Info; GUI_PID_STATE State; switch (pMsg->MsgId) { case WM_INIT_DIALOG: pFileList = (FILELIST_FileTypeDef *)k_malloc(sizeof(FILELIST_FileTypeDef)); pFileList->ptr = 0; hPopUp = WM_CreateWindowAsChild(0, 26, LCD_GetXSize(), LCD_GetYSize()-26, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS , _cbPopup, 0); WM_BringToBottom(hPopUp); hItem = pMsg->hWin; FRAMEWIN_AddCloseButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0); WM_CreateWindowAsChild(240, 320, 1, 1, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbMediaConnection , 0); _RefreshBrowser(pMsg->hWin); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_CHILD_DELETED: k_free(pFileList); if(hFileInfo != 0) { hFileInfo = 0; } break; case WM_NOTIFICATION_CLICKED: /* React only if released */ switch (Id) { case ID_TREEVIEW: hTreeView = TREEVIEW_GetSel(pMsg->hWinSrc); TREEVIEW_ITEM_GetInfo(hTreeView, &Info); if(Info.IsNode == 0) { GUI_TOUCH_GetState(&State); State.x += 20; if(State.x > 175) { State.x = 175; } State.y-= 50; if(State.y > 150) { State.y -= 70; } _FindFullPath(pMsg->hWinSrc, hTreeView, SelectedFileName); /* Create popup menu after touching the display */ _OpenPopup(hPopUp, _aMenuItems, GUI_COUNTOF(_aMenuItems), State.x, State.y); } break; case ID_BUTTON_REFRESH: _RefreshBrowser (pMsg->hWin); 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; int Id, NCode; RTC_TimeTypeDef RTC_TimeStructure; RTC_DateTypeDef RTC_DateStructure; uint8_t sec, min, hour, day, month; uint16_t year; uint8_t offset, max; static uint8_t TempStr[50]; switch (pMsg->MsgId) { case WM_PAINT: break; case WM_INIT_DIALOG: RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure); sec = RTC_TimeStructure.RTC_Seconds; min = RTC_TimeStructure.RTC_Minutes; hour = RTC_TimeStructure.RTC_Hours; RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); year = RTC_DateStructure.RTC_Year + 2000; month = RTC_DateStructure.RTC_Month; day = RTC_DateStructure.RTC_Date; /* Initialization of 'System Information' */ hItem = pMsg->hWin; FRAMEWIN_SetFont(hItem, GUI_FONT_13B_ASCII); /* Initialization of 'Close' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CLOSE_CLOCK); BUTTON_SetFont(hItem, GUI_FONT_13B_ASCII); /* Set date in text mode */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_DATE); TEXT_SetFont(hItem, GUI_FONT_13B_1); TEXT_SetTextColor(hItem, 0x00804000); WM_CreateWindowAsChild(80, 45, 354, 23, pMsg->hWin, WM_CF_SHOW | WM_CF_HASTRANS, _cbClockWindow , 0); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CLOCK); TEXT_SetFont(hItem, &GUI_FontBauhaus9332); TEXT_SetTextColor(hItem, 0x00804000); /* Set Init values */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_DATE); /* Write date and clock */ sprintf((char *)TempStr, "%02d, %s, %04d",day , strMonth[month-1], year); TEXT_SetText(hItem, (char *)TempStr); hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CLOCK); sprintf((char *)TempStr, "%02d:%02d:%02d",hour , min, sec); TEXT_SetText(hItem, (char *)TempStr); GetDateOffset (year, month, &offset , &max); CALENDAR_SetDefaultSize(CALENDAR_SI_HEADER, 25 ); CALENDAR_SetDefaultSize(CALENDAR_SI_CELL_X, 30 ); CALENDAR_SetDefaultSize(CALENDAR_SI_CELL_Y, 20 ); CALENDAR_SetDefaultFont(CALENDAR_FI_CONTENT,GUI_FONT_16B_1 ); CALENDAR_SetDefaultFont(CALENDAR_FI_HEADER, GUI_FONT_16B_1) ; CALENDAR_Create(pMsg->hWin, 15, 70, year, month, day, 2, ID_CALENDAR, WM_CF_SHOW); WM_InvalidateWindow(pMsg->hWin); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ switch (NCode) { case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case ID_BUTTON_CLOSE_CLOCK: GUI_EndDialog(pMsg->hWin, 0); break; case ID_BUTTON_SETTINGS_CLOCK: GUI_CreateDialogBox(_aDialogSettingsCreate, GUI_COUNTOF(_aDialogSettingsCreate), &_cbDialogSettings, pMsg->hWin, 0, 0); hNumPad = GUI_CreateDialogBox(_aDialogNumPad, GUI_COUNTOF(_aDialogNumPad), _cbDialogNumPad, WM_GetDesktopWindowEx(1), 0, 0); /* Create the numpad dialog */ WM_SetStayOnTop(hNumPad, 1); break; } break; case WM_NOTIFICATION_CHILD_DELETED: WM_NotifyParent(WM_GetParent(pMsg->hWin), 0x500); 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: frame = 0; hTimer = WM_CreateTimer(pMsg->hWin, 0, 50, 0); hItem = BUTTON_CreateEx(700, 0, 100, 100, pMsg->hWin, WM_CF_SHOW, 0, ID_BUTTON_EXIT); WM_SetCallback(hItem, _cbButton_exit); /* Initialization of 'Board*/ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* Initialization of 'Firmware Version*/ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION); TEXT_SetFont(hItem, &GUI_FontLubalGraph24B); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* Initialization of 'Board*/ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph24); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Board */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_2); TEXT_SetFont(hItem, &GUI_FontLubalGraph24); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph24); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph24); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Firmware Version*/ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph24); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_COPYRIGHT); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_TITLE); TEXT_SetFont(hItem, &GUI_FontLubalGraph32B); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); break; case WM_PAINT: GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_AA_DrawRoundedRect(30, 140, 200, 340, 30); GUI_AA_DrawRoundedRect(220, 140, 390, 340, 30); GUI_AA_DrawRoundedRect(410, 140, 580, 340, 30); GUI_AA_DrawRoundedRect(600, 140, 770, 340, 30); GUI_DrawBitmap(open_board[frame] , 65, 190); GUI_DrawBitmap(open_mcu[frame] , 255, 190); GUI_DrawBitmap(open_cpu[frame] , 445, 190); GUI_DrawBitmap(open_fversion[frame], 635, 190); break; case WM_TIMER: if(frame < 4) { WM_InvalidateWindow(pMsg->hWin); WM_RestartTimer(pMsg->Data.v, 50); frame++; } else { if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } } 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(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } GUI_EndDialog(pMsg->hWin, 0); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { WM_KEY_INFO * pKeyInfo; WM_HWIN hItem; WM_HWIN hDlg; int NCode; int Id; int i; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_PAINT: _OnPaint(); return; case WM_INIT_DIALOG: // // Init SLIDER and EDIT widgets // for (i = 0; i < 3; i++) { hItem = WM_GetDialogItem(hDlg, GUI_ID_SLIDER0 + i); SLIDER_SetRange(hItem, 0, 255); SLIDER_SetValue(hItem, _aColorSep[i]); hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0 + i); EDIT_SetDecMode(hItem, _aColorSep[i], 0, 255, 0, 0); } // // Init CHECKBOX // hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK0); CHECKBOX_SetText(hItem, "Auto"); CHECKBOX_SetState(hItem, _Auto); break; case WM_KEY: pKeyInfo = (WM_KEY_INFO *)(pMsg->Data.p); switch (pKeyInfo->Key) { case GUI_KEY_ESCAPE: break; case GUI_KEY_ENTER: GUI_EndDialog(hDlg, 0); break; } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch (NCode) { case WM_NOTIFICATION_RELEASED: if (Id == GUI_ID_OK) { GUI_EndDialog(hDlg, 0); } if (Id == GUI_ID_CANCEL) { GUI_EndDialog(hDlg, 1); } break; case WM_NOTIFICATION_VALUE_CHANGED: switch (Id) { case GUI_ID_CHECK0: hItem = WM_GetDialogItem(hDlg, Id); _Auto = CHECKBOX_GetState(hItem); break; default: _OnValueChanged(hDlg, Id); break; } break; } 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); } }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { const WM_KEY_INFO* pInfo; WM_HWIN hItem; int NCode; int Id; // USER START (Optionally insert additional variables) // USER END switch (pMsg->MsgId) { case WM_KEY: pInfo = (WM_KEY_INFO*)pMsg->Data.p; switch(pInfo->Key) { case GUI_KEY_LEFT: WM_SetFocus(menuWin); break; default: WM_DefaultProc(pMsg); break; } break; case WM_INIT_DIALOG: // // Initialization of 'Window' // hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, 0x00D9FFB3); // // Initialization of 'Multipage' // hItem = WM_GetDialogItem(pMsg->hWin, ID_MULTIPAGE_0); MULTIPAGE_AddEmptyPage(hItem, 0, "Page1"); MULTIPAGE_AddEmptyPage(hItem, 0, "Page2"); // // Initialization of 'Text' // hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetText(hItem, "Vol:"); TEXT_SetFont(hItem, GUI_FONT_24B_ASCII); // // Initialization of 'Edit' // hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0); EDIT_SetText(hItem, "OFF"); EDIT_SetFont(hItem, GUI_FONT_16B_1); WM_SetCallback(hItem, &myEditTextListener); // USER START (Optionally insert additional code for further widget initialization) // USER END break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_MULTIPAGE_0: // Notifications sent by 'Multipage' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_RELEASED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_MOVED_OUT: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_VALUE_CHANGED: // USER START (Optionally insert code for reacting on notification message) // USER END break; // USER START (Optionally insert additional code for further notification handling) // USER END } break; case ID_EDIT_0: // Notifications sent by 'Edit' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_RELEASED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_VALUE_CHANGED: // USER START (Optionally insert code for reacting on notification message) // USER END break; // USER START (Optionally insert additional code for further notification handling) // USER END } break; // USER START (Optionally insert additional code for further Ids) // USER END } break; // USER START (Optionally insert additional message handling) // USER END 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; } }
static void _cbDialoggraph(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; // USER START (Optionally insert additional variables) // USER END switch (pMsg->MsgId) { case WM_INIT_DIALOG: { hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_GRAPH0); GRAPH_DATA_Handle hData; GRAPH_SCALE_Handle hScale; WM_HWIN hGraph; // hGraph = GRAPH_CreateEx(10, 10, 216, 106, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_GRAPH0); // hData = GRAPH_DATA_YT_Create(GUI_DARKGREEN, 200, 5, 0); // GRAPH_AttachData(hGraph, hData); // hScale = GRAPH_SCALE_Create(28, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 20); // GRAPH_AttachScale(hGraph, hScale); _InitPoints(_aNumPoints[0]); for (int i = 0; i < 3; i++) { // _ahDataXY[i] = GRAPH_DATA_XY_Create(GUI_RED, _NumPoints, _aPoint[i], _NumPoints); _ahDataXY[i] = GRAPH_DATA_XY_Create(GUI_RED, 200, 5, 0); GRAPH_DATA_XY_SetLineStyle(_ahDataXY[i], GUI_LS_SOLID); GRAPH_AttachData(hItem, _ahDataXY[i]); // GRAPH_DATA_XY_SetOwnerDraw(_ahDataXY[i], _OwnerDraw); } // Set graph attributes // GRAPH_SetGridDistY(hItem, 25); GRAPH_SetGridVis(hItem, 1); GRAPH_SetUserDraw(hItem, _UserDraw); // // Create and add vertical scale // _hScaleV = GRAPH_SCALE_Create( 35, GUI_TA_RIGHT, GRAPH_SCALE_CF_VERTICAL, 25); GRAPH_SCALE_SetOff(_hScaleV, 100); GRAPH_SCALE_SetFactor(_hScaleV, 0.04f); GRAPH_SCALE_SetTextColor(_hScaleV, GUI_RED); GRAPH_AttachScale(hItem, _hScaleV); // // Create and add horizontal scale // _hScaleH = GRAPH_SCALE_Create(70, GUI_TA_HCENTER, GRAPH_SCALE_CF_HORIZONTAL, 50); GRAPH_SCALE_SetFactor(_hScaleH, 0.02f); GRAPH_SCALE_SetTextColor(_hScaleH, GUI_DARKGREEN); GRAPH_AttachScale(hItem, _hScaleH); GRAPH_SCALE_SetNumDecs(_hScaleV, 0); GRAPH_SetVSizeX(hItem, 500); hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_1); EDIT_SetText(hItem, "123"); // USER START (Optionally insert additional code for further widget initialization) // USER END break; } case WM_NOTIFY_PARENT: { Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_EDIT_1: // Notifications sent by 'Edit' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_RELEASED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_VALUE_CHANGED: // USER START (Optionally insert code for reacting on notification message) // USER END break; // USER START (Optionally insert additional code for further notification handling) // USER END } break; // USER START (Optionally insert additional code for further Ids) // USER END } break; } // USER START (Optionally insert additional message handling) // USER END default: { WM_DefaultProc(pMsg); break; } } }
/** * @brief Callback routine of Info dialog * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbPlaylistDialog(WM_MESSAGE * pMsg) { int NCode; int Id; int r; WM_HWIN hItem; static char tmp[64]; uint32_t i = 0; switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OKPL); WM_SetCallback(hItem, _cbButton_okPL); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_ADDPL); WM_SetCallback(hItem, _cbButton_add2PL); hItem = LISTVIEW_CreateEx(35, 30, 250, 155, pMsg->hWin, WM_CF_SHOW, 0, ID_VIDEO_LIST); LISTVIEW_SetFont(hItem, &GUI_FontLubalGraph16); LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_UNSEL, GUI_STCOLOR_LIGHTBLUE); LISTVIEW_SetTextColor(hItem, LISTVIEW_CI_SEL, GUI_WHITE); LISTVIEW_SetHeaderHeight(hItem, 0); LISTVIEW_AddColumn(hItem, 250, "", GUI_TA_VCENTER | GUI_TA_LEFT); LISTVIEW_SetGridVis(hItem, 0); LISTVIEW_SetAutoScrollV(hItem, 1); WIDGET_SetEffect(hItem, &WIDGET_Effect_None); LISTVIEW_SetTextAlign(hItem, 0, GUI_TA_HCENTER); 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); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, i, (char *)tmp); } sprintf(tmp, "PlayList [%d Item(s)]", VideoList.ptr); FRAMEWIN_SetText(pMsg->hWin, tmp); } else { FRAMEWIN_SetText(pMsg->hWin, "PlayList [no Item]"); FileInfo.pfGetData = k_GetData; FileInfo.pMask = acMask_video; hItem = CHOOSEFILE_Create(WM_GetParent(pMsg->hWin), 100, 60, 240, 170, apDrives, GUI_COUNTOF(apDrives), 0, "Video files", 0, &FileInfo); WM_MakeModal(hItem); r = GUI_WaitForDialogExec(hItem); if (r == 0) { if((strstr(FileInfo.pRoot, ".emf")) || (strstr(FileInfo.pRoot, ".EMF"))) { if(VideoList.ptr < FILEMGR_LIST_DEPDTH) { strcpy((char *)VideoList.file[VideoList.ptr].name, FileInfo.pRoot); FILEMGR_GetFileOnly ((char *)tmp, (char *)FileInfo.pRoot); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, VideoList.ptr, (char *)tmp); VideoList.ptr++; } } sprintf(tmp, "PlayList [%d Item(s)]", VideoList.ptr); FRAMEWIN_SetText(pMsg->hWin, tmp); } WM_InvalidateWindow(pMsg->hWin); } break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_BUTTON_OKPL: /* Notifications sent by 'OK' */ switch(NCode) { case WM_NOTIFICATION_RELEASED: GUI_EndDialog(pMsg->hWin, 0); Video_FilePos = 0; hPlaylistWin = 0; break; } break; case ID_BUTTON_ADDPL: switch(NCode) { case WM_NOTIFICATION_RELEASED: FileInfo.pfGetData = k_GetData; FileInfo.pMask = acMask_video; hItem = CHOOSEFILE_Create(pMsg->hWin, 40, 20, 240, 170, apDrives, GUI_COUNTOF(apDrives), 0, "Video files", 0, &FileInfo); WM_MakeModal(hItem); r = GUI_WaitForDialogExec(hItem); if (r == 0) { if((strstr(FileInfo.pRoot, ".emf")) || (strstr(FileInfo.pRoot, ".EMF"))) { if(VideoList.ptr < FILEMGR_LIST_DEPDTH) { strcpy((char *)VideoList.file[VideoList.ptr].name, FileInfo.pRoot); FILEMGR_GetFileOnly ((char *)tmp, (char *)FileInfo.pRoot); hItem = WM_GetDialogItem(pMsg->hWin, ID_VIDEO_LIST); LISTVIEW_AddRow(hItem, NULL); LISTVIEW_SetItemText(hItem, 0, VideoList.ptr, (char *)tmp); VideoList.ptr++; } } sprintf(tmp, "PlayList [%d Item(s)]", VideoList.ptr); FRAMEWIN_SetText(pMsg->hWin, tmp); WM_InvalidateWindow(pMsg->hWin); } break; } break; } break; default: WM_DefaultProc(pMsg); break; } }
/** * @brief Callback routine of popup menu. * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbPopup(WM_MESSAGE * pMsg) { K_GET_DIRECT_OPEN_FUNC * pfOpen; MENU_MSG_DATA* pData; TREEVIEW_ITEM_Handle hTreeView; TREEVIEW_ITEM_INFO Info; WM_HWIN hItem; char ext[4]; switch (pMsg->MsgId) { case WM_INIT_DIALOG: break; case WM_MENU: /* Process the menu message */ pData = (MENU_MSG_DATA*)pMsg->Data.p; switch (pData->MsgType) { case MENU_ON_ITEMSELECT: /* Menu item has been selected */ switch (pData->ItemId) { case ID_MENU_OPENFILE: k_GetExtOnly(SelectedFileName, ext); pfOpen = k_ModuleCheckLink(ext); if(pfOpen != NULL) { pfOpen(SelectedFileName); } else { _ShowMessageBox(hExplorerWin, "File Browser", "No external module is linked to\n this extension or Low RAM!", 0); } break; case ID_MENU_DELETE: if (_ShowMessageBox(hExplorerWin, "File Browser", "Are you sure you want to\ndelete selected file?", 1)) { f_unlink (SelectedFileName); _RefreshBrowser(hExplorerWin); } break; case ID_MENU_PROPRIETIES: if(hFileInfo == 0) { hFileInfo = GUI_CreateDialogBox(_aFileInfoDialogCreate, GUI_COUNTOF(_aFileInfoDialogCreate), _cbFileInfoDialog, hExplorerWin, 60, 50); } break; case ID_MENU_EXIT: break; } hItem = WM_GetDialogItem(hExplorerWin, ID_TREEVIEW); hTreeView = TREEVIEW_GetSel(hItem); TREEVIEW_ITEM_GetInfo(hTreeView, &Info); if(Info.IsNode == 0) { /*Force Deselect item */ hTreeView = TREEVIEW_GetItem(hItem, hTreeView, TREEVIEW_GET_PARENT); TREEVIEW_SetSel(hItem, hTreeView); } } break; default: WM_DefaultProc(pMsg); break; } }
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); /* Initialization of 'Board : STM324x9I' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'Firmware Version : 1.0.1' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* Initialization of 'Board : STM324x9I' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Board : STM32F746G' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BOARD_2); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Core: STM32F-4 Series' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CORE_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'CPU Speed : 180MHz' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_CPU_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* Initialization of 'Firmware Version : 1.0' */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VERSION_1); TEXT_SetFont(hItem, &GUI_FontLubalGraph16); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_COPYRIGHT); TEXT_SetFont(hItem, GUI_FONT_13_ASCII); TEXT_SetTextColor(hItem, GUI_STCOLOR_DARKBLUE ); /* ST Copyright */ hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_TITLE); TEXT_SetFont(hItem, &GUI_FontLubalGraph20); TEXT_SetTextColor(hItem, GUI_STCOLOR_LIGHTBLUE); IMAGE_CreateEx(40, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_BOARD); IMAGE_CreateEx(150, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_MCU); IMAGE_CreateEx(260, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_CPU); IMAGE_CreateEx(370, 120, 70, 70, pMsg->hWin, WM_CF_SHOW, 0, ID_IMAGE_FVERSION); break; case WM_PAINT: GUI_SetColor(GUI_STCOLOR_LIGHTBLUE); GUI_AA_DrawRoundedRect(30, 80, 120, 230, 30); GUI_AA_DrawRoundedRect(140, 80, 230, 230, 30); GUI_AA_DrawRoundedRect(250, 80, 340, 230, 30); GUI_AA_DrawRoundedRect(360, 80, 450, 230, 30); break; case WM_TIMER: /* draw */ if(frame < 5) { WM_RestartTimer(pMsg->Data.v, 25); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_BOARD); IMAGE_SetBitmap(hItem, open_board[frame]); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_MCU); IMAGE_SetBitmap(hItem, open_mcu[frame]); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_CPU); IMAGE_SetBitmap(hItem, open_cpu[frame]); hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_FVERSION); IMAGE_SetBitmap(hItem, open_fversion[frame]); frame++; } else { if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } } break; case WM_DELETE: if(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } 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(hTimer != 0) { WM_DeleteTimer(hTimer); hTimer = 0; } GUI_EndDialog(pMsg->hWin, 0); break; } break; } break; default: WM_DefaultProc(pMsg); break; } }