/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; int key_num; // USER START (Optionally insert additional variables) // USER END int i; switch (pMsg->MsgId) { case WM_INIT_DIALOG: // // Initialization of 'Edit' // GUI_UC_SetEncodeUTF8(); #if 1 hItem=WM_GetDialogItem(pMsg->hWin,ID_BUTTON_2); BUTTON_SetBkColor(hItem,0,GUI_GREEN); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); #endif hItem=WM_GetDialogItem(pMsg->hWin,ID_BUTTON_3); BUTTON_SetBkColor(hItem,0,GUI_YELLOW); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); hItem=WM_GetDialogItem(pMsg->hWin,ID_BUTTON_4); BUTTON_SetBkColor(hItem,0,GUI_CYAN); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); hItem=WM_GetDialogItem(pMsg->hWin,ID_BUTTON_1); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); BUTTON_SetBkColor(hItem,0,GUI_CYAN); hItem=WM_GetDialogItem(pMsg->hWin,ID_BUTTON_0); BUTTON_SetBkColor(hItem,0,GUI_CYAN); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0); WM_DisableWindow(hItem); EDIT_SetText(hItem, (const char *)GUI_hex2MeterAddrStr(g_sys_ctrl.recentMeterAddr, 6)); for(i = 0;i < 5; i++) { hItem=WM_GetDialogItem(pMsg->hWin,(ID_EDIT_3+i)); EDIT_SetText(hItem, "0"); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); WM_DisableWindow(hItem); } PUB_InitFreq(pMsg,ID_EDIT_2); hItem = WM_GetDialogItem(pMsg->hWin,ID_EDIT_2); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_1); if(DL645_2007 == g_rom_para.protocol) { //EDIT_SetText(hItem, pReadSel_07[g_sys_ctrl.data_item_index]); EDIT_SetText(hItem, pReadSel_07[0]); memcpy(g_gui_para.dataItem, &c_645dataItemDef[g_rom_para.protocol][0], 4); g_gui_para.ctrlCode=0x11; } else if(DL645_1997 == g_rom_para.protocol) { //EDIT_SetText(hItem, pReadSel_97[g_sys_ctrl.data_item_index]); EDIT_SetText(hItem, pReadSel_97[0]); memcpy(g_gui_para.dataItem, &c_645dataItemDef[g_rom_para.protocol][0], 2); g_gui_para.ctrlCode=0x01; } WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGBAR_0); PROGBAR_SetBarColor(hItem,0,GUI_GREEN); break; case WM_KEY: Id = WM_GetId(pMsg->hWinSrc); if((((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt) == 1) { switch(((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_YELLOW: WM_DeleteWindow(g_hWin_ReadMeter); g_hWin_ReadMeter=HBWIN_NULL; WM_BringToBottom(g_hWin_msg); WM_HideWindow(g_hWin_msg); WM_ShowWindow(g_hWin_TimeBar); WM_ShowWindow(g_hWin_Date); WM_SetFocus(g_hWin_menu); RMD_key_cnt = 0; g_gui_para.state = GUI_STATE_IDLE; break; case GUI_KEY_GREEN: g_hWin_MeterTime = CreateExtFnct(); hItem = MTD_GetMeterAddr(); WM_SetFocus(hItem); MTD_SetAddrBkColor(hItem); break; case GUI_KEY_F1: /*获取表号*/ if(CHANNEL_RF != g_rom_para.channel) { g_gui_para.ctrlCode = 0x13; g_gui_para.cmd = GUI_CMD_BROAD_READ_ADDR; g_gui_para.state = GUI_STATE_AMR; OSMboxPost(g_sys_ctrl.up_mbox, (void*)&g_gui_para); } else { ERR_NOTE(g_hWin_ReadMeter,GUI_MSBOX_FUN_DISALE_ERROR); } break; case '#': WM_BringToTop(g_hWin_msg); WM_ShowWindow(g_hWin_msg); WM_SetFocus(g_hWin_msg); break; case GUI_KEY_F2: /*抄表*/ if(DEV_OK == RMD_Get_Para(pMsg))//获取参数数据 { g_gui_para.state = GUI_STATE_AMR; OSMboxPost(g_sys_ctrl.up_mbox, (void*)&g_gui_para); } break; case GUI_KEY_UP: RMD_SelEdt_Up(pMsg); //RMD_Color_Change(); GUI_Color_Change(g_hWin_ReadMeter, ID_EDIT_0, 3); break; case GUI_KEY_DOWN: RMD_SelEdt_Down(pMsg); //RMD_Color_Change(); GUI_Color_Change(g_hWin_ReadMeter, ID_EDIT_0, 3); break; case GUI_KEY_ENTER: switch(Id) { case ID_EDIT_0: g_sys_ctrl.selectWidget=EDIT_METER_NUM; g_hWin_Input=Create_Edit_Set(g_hWin_ReadMeter); WM_SetFocus(g_hWin_Input); break; case ID_EDIT_1: g_sys_ctrl.selectWidget=LISTBOX_READ_SEL; g_hWin_Input=Create_ListBox_Set(g_hWin_ReadMeter); WM_SetFocus(g_hWin_Input); break; case ID_EDIT_2: //g_sys_ctrl.selectWidget=LISTBOX_SPEED; //g_hWin_Input=Create_ListBox_Set(g_hWin_ReadMeter); //WM_SetFocus(g_hWin_Input); g_hWin_freq = CreateSpeed(g_hWin_ReadMeter); //WM_SetFocus(g_hWin_freq); break; } } } break; #if 0 if((((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)==1)//按键点击。 { switch(Id) { case ID_EDIT_0: if(key_num==GUI_KEY_ENTER) { g_sys_ctrl.selectWidget=EDIT_METER_NUM; g_hWin_Input=Create_Edit_Set(g_hWin_ReadMeter); WM_SetFocus(g_hWin_Input); } break; case ID_EDIT_1: if(key_num==GUI_KEY_ENTER) { g_sys_ctrl.selectWidget=LISTBOX_READ_SEL; g_hWin_Input=Create_ListBox_Set(g_hWin_ReadMeter); WM_SetFocus(g_hWin_Input); } break; case ID_EDIT_2: if(key_num==GUI_KEY_ENTER) { //g_sys_ctrl.selectWidget=LISTBOX_SPEED; //g_hWin_Input=Create_ListBox_Set(g_hWin_ReadMeter); //WM_SetFocus(g_hWin_Input); g_hWin_freq = CreateSpeed(g_hWin_ReadMeter); //WM_SetFocus(g_hWin_freq); } break; } } switch(((WM_KEY_INFO *)(pMsg->Data.p))->Key) { case GUI_KEY_YELLOW: if((((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)==1) { WM_DeleteWindow(g_hWin_ReadMeter); g_hWin_ReadMeter=HBWIN_NULL; WM_BringToBottom(g_hWin_msg); WM_HideWindow(g_hWin_msg); WM_ShowWindow(g_hWin_TimeBar); WM_ShowWindow(g_hWin_Date); WM_SetFocus(g_hWin_menu); RMD_key_cnt = 0; g_gui_para.state = GUI_STATE_IDLE; } break; case GUI_KEY_F1: /*获取表号*/ if((((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)==0) { if(CHANNEL_RF != g_rom_para.channel) { g_gui_para.cmd = GUI_CMD_BROAD_READ_ADDR; g_gui_para.state = GUI_STATE_AMR; OSMboxPost(g_sys_ctrl.up_mbox, (void*)&g_gui_para); } } break; case '#': if((((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)==0) { WM_BringToTop(g_hWin_msg); WM_ShowWindow(g_hWin_msg); WM_SetFocus(g_hWin_msg); } break; case GUI_KEY_F2: /*抄表*/ if((((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)==0) { if(DEV_OK == RMD_Get_Para(pMsg))//获取参数数据 { g_gui_para.state = GUI_STATE_AMR; OSMboxPost(g_sys_ctrl.up_mbox, (void*)&g_gui_para); } } break; case GUI_KEY_UP: if((((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)==0) { RMD_SelEdt_Up(pMsg); //RMD_Color_Change(); } break; case GUI_KEY_DOWN: if((((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)==0) { RMD_SelEdt_Down(pMsg); //RMD_Color_Change(); GUI_Color_Change(g_hWin_ReadMeter, ID_EDIT_0, 3); } break; case GUI_KEY_TAB: if((((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt)==0) { //RMD_Sel_Down(pMsg); RMD_Color_Change(); } break; #endif case WM_MSG_CLOSE: WM_DeleteWindow(g_hWin_ReadMeter); break; default: WM_DefaultProc(pMsg); break; } } /********************************************************************* * * CreateReadMeter */ WM_HWIN CreateReadMeter(void); WM_HWIN CreateReadMeter(void) { WM_HWIN hWin; hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, g_hWin_menu, 0, 0); return hWin; }
static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; int key_num; u8 tmp[16]; key_num=((WM_KEY_INFO *)(pMsg->Data.p))->Key; // USER START (Optionally insert additional variables) // USER END switch (pMsg->MsgId) { case WM_INIT_DIALOG: // // Initialization of 'freq' // hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0); sprintf(tmp, "%d", g_rom_para.auto_sleep_time); EDIT_SetText(hItem, tmp); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_1); sprintf(tmp, "%d", g_rom_para.auto_shutdown_time); EDIT_SetText(hItem, tmp); WM_DisableWindow(hItem); hItem = WM_GetDialogItem(pMsg->hWin,ID_BUTTON_0); BUTTON_SetBkColor(hItem,0,GUI_GREEN); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); hItem = WM_GetDialogItem(pMsg->hWin,ID_BUTTON_1); BUTTON_SetBkColor(hItem,0,GUI_YELLOW); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); hItem = WM_GetDialogItem(pMsg->hWin,ID_BUTTON_2); BUTTON_SetBkColor(hItem,0,GUI_CYAN); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); hItem = WM_GetDialogItem(pMsg->hWin,ID_BUTTON_3); BUTTON_SetBkColor(hItem,0,GUI_CYAN); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); //PUB_InitFreq(pMsg,ID_EDIT_1); break; // USER START (Optionally insert additional message handling) // USER END case WM_KEY: Id = WM_GetId(pMsg->hWinSrc); if(((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt == 1) { switch(((WM_KEY_INFO *)(pMsg->Data.p))->Key) { case GUI_KEY_GREEN: //WM_DeleteWindow(g_hWin_AdvanSet); //WM_SetFocus(g_hWin_para); WM_DeleteWindow(g_hWin_AdvanSet); g_hWin_AdvanSet = HBWIN_NULL; WM_SetFocus(g_hWin_para); ads_press_cnt = 0; break; case GUI_KEY_YELLOW: WM_DeleteWindow(g_hWin_AdvanSet); g_hWin_AdvanSet = HBWIN_NULL; WM_SetFocus(g_hWin_para); ads_press_cnt = 0; g_gui_para.state = GUI_STATE_IDLE; break; case GUI_KEY_F2: if(SYS_BEEP_ON == g_rom_para.beep_switch) { g_rom_para.beep_switch = SYS_BEEP_OFF; } else { g_rom_para.beep_switch = SYS_BEEP_ON; } DEV_Parameters_Write(); break; case GUI_KEY_F1: ERR_NOTE(g_hWin_AdvanSet,GUI_MSBOX_RESET_ERROR); break; #if 0 case GUI_KEY_TAB: ADS_Color_Change(); break; #endif case GUI_KEY_UP: ADS_SelEdt_Up(pMsg); //ADS_Color_Change(); GUI_Color_Change(g_hWin_AdvanSet, ID_EDIT_0, 2); break; case GUI_KEY_DOWN: ADS_SelEdt_Down(pMsg); //ADS_Color_Change(); GUI_Color_Change(g_hWin_AdvanSet, ID_EDIT_0, 2); break; case GUI_KEY_ENTER: switch(Id) { #if 0 case ID_EDIT_0: g_hWin_freq = CreateSpeed(g_hWin_AdvanSet); break; #endif case ID_EDIT_1: g_sys_ctrl.selectWidget=EDIT_SHUTDOWN_TIME; g_hWin_Input=Create_Edit_Set(g_hWin_para); WM_SetFocus(g_hWin_Input); break; case ID_EDIT_0: g_sys_ctrl.selectWidget=EDIT_SLEEP_TIME; g_hWin_Input=Create_Edit_Set(g_hWin_para); WM_SetFocus(g_hWin_Input); break; } break; } } break; default: WM_DefaultProc(pMsg); break; } }
/************************************************************************ Function: WORD GOLDrawCallback() Overview: This function must be implemented by user. GOLDraw() function calls it each time when GOL objects drawing is completed. User drawing should be done here. GOL will not change color, line type and clipping region settings while this function returns zero. Input: none Output: If the function returns non-zero the draw control will be passed to GOL. GOLDraw() can proceed and re-draw objects that needs to be redrawn. ************************************************************************/ bool GFX_GOL_DrawCallback(void) { static uint32_t timeClock = 0; // GFX_GOL_ANALOGCLOCK *pAc; switch(screenState) { case CREATE_BACKGROUND: screenState = DISPLAY_BACKGROUND; // switch to next state return (1); case DISPLAY_BACKGROUND: CreatePreLoadScreen(); screenState = CREATE_MAIN; return(1); case CREATE_MAIN: while(GFX_Layer(PIP1, DISABLE, 0, 0) == GFX_STATUS_FAILURE); CreateMainScreen(1); screenState = DISPLAY_MAIN; // switch to next state timeClock =0; return (1); // draw objects created case DISPLAY_MAIN: if((TimerTick_GetTick() - timeClock) >= 5000) { timeClock = TimerTick_GetTick(); // pAc = (GFX_GOL_ANALOGCLOCK *)GFX_GOL_ObjectFind(MAIN_SCREEN_ID_ANALOG_CLOCK); // GFX_GOL_ObjectStateSet(pAc, GFX_GOL_ANALOGCLOCK_TICK); } return (1); case CREATE_INFO: //Use PIP for this screen CreateInfo(); while(GFX_Layer(PIP1, SET_PAGE_START, 164,0) == GFX_STATUS_FAILURE); while(GFX_Layer(PIP1, SET_SIZE, GFX_MaxXGet()-164,GFX_MaxYGet()) == GFX_STATUS_FAILURE); while(GFX_Layer(PIP1, SET_PAGE, PIP_PAGE_BUFFER, 0) == GFX_STATUS_FAILURE); while(GFX_Layer(PIP1, SET_LAYER_START, 160,0) == GFX_STATUS_FAILURE); while(GFX_Layer(PIP1, ENABLE, 0, 0) == GFX_STATUS_FAILURE); screenState = DISPLAY_INFO; // switch to next state return (0); case CREATE_SPEED: while(GFX_Layer(PIP1, DISABLE, 0, 0) == GFX_STATUS_FAILURE); CreateSpeed(); screenState = CREATE_MAIN; // switch to next state return (1); // draw objects created case CREATE_COMFORT: while(GFX_Layer(PIP1, DISABLE, 0, 0) == GFX_STATUS_FAILURE); CreateComfortScreen(); // create window and sliders screenState = DISPLAY_COMFORT; // switch to next state return (1); // draw objects created case CREATE_SCROLLING: while(GFX_Layer(PIP1, DISABLE, 0, 0) == GFX_STATUS_FAILURE); GFX_TransitionParametersSet(0,0,PUSH, GFX_ActivePageGet(), BACKGROUND_BUFFER, 1,16,LEFT_TO_RIGHT); while(GFX_Transition(&GFX_Primitive_instance.transitionParams,GFX_MaxXGet(),GFX_MaxYGet()) == GFX_STATUS_FAILURE); GFX_TransitionParametersSet(0,0,PUSH,BACKGROUND_BUFFER,GFX_ActivePageGet(), 1,10,TOP_TO_BOTTOM); while(GFX_Transition(&GFX_Primitive_instance.transitionParams,GFX_MaxXGet(),GFX_MaxYGet()) == GFX_STATUS_FAILURE); GFX_TransitionParametersSet(0,0,PUSH,GFX_ActivePageGet(),BACKGROUND_BUFFER, 1,8,RIGHT_TO_LEFT); while(GFX_Transition(&GFX_Primitive_instance.transitionParams,GFX_MaxXGet(),GFX_MaxYGet()) == GFX_STATUS_FAILURE); GFX_TransitionParametersSet(0,0,PUSH,BACKGROUND_BUFFER,GFX_ActivePageGet(), 1,5,BOTTOM_TO_TOP); while(GFX_Transition(&GFX_Primitive_instance.transitionParams,GFX_MaxXGet(),GFX_MaxYGet()) == GFX_STATUS_FAILURE); screenState = CREATE_MAIN; return(1); // draw objects created case CREATE_GRADIENT: while(GFX_Layer(PIP1, DISABLE, 0, 0) == GFX_STATUS_FAILURE); CreateGradientScreen(); // create window screenState = DISPLAY_GRADIENT; // switch to next state return (1); // draw objects created case DISPLAY_SCROLLING: case DISPLAY_GRADIENT: case DISPLAY_COMFORT: case DISPLAY_SPEED: case DISPLAY_INFO: return (1); // redraw objects if needed case CREATE_ALPHABLEND: while(GFX_Layer(PIP1, DISABLE, 0, 0) == GFX_STATUS_FAILURE); CreateAlphaBlendScreen(); screenState = DISPLAY_ALPHABLEND; return(1); case DISPLAY_ALPHABLEND: if((TimerTick_GetTick() - timeClock) >= 500) { if(DisplayAlphaBlendScreen() == true) screenState = CREATE_MAIN; } return (1); // redraw objects if needed default: break; } return (1); // release drawing control to GOL }