示例#1
0
/*********************************************************************
*
*       _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;
}
示例#2
0
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;
  }
}
示例#3
0
/************************************************************************
 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
}