⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmiectimedate.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
    0                                  /* number of items			*/
};

static const int weekdayId[] ={
    TxtSunday,
    TxtMonday,
    TxtTuesday,
    TxtWednesday,
    TxtThursday,
    TxtFriday,
    TxtSaturday
};

/*
 Settings menu subs:
 */

/* #define TIMERESULT      1000           time for results         */
#define TIMERCLEAR		2500

//Flag to indicate whether we're setting the current or alarm date/time.
static UBYTE DateTimeEntryMode;
static UBYTE dailyAlarmed =0;  //xsf add for check if the alarm is alerted 09.24
static UBYTE weeklyAlarmed=0;

extern UBYTE            getcurrentAlarmTone(void);  //mmisounds
extern T_RTC_DATE_TIME  timedate;//zhonghz,globel var,define in mmimain.c
extern MfwHnd           gtVibator; //XSF 08.14 static MfwHnd gtVibator;


/* 2003.10.14 wyj 加入对时间设置输入框的检查 */
static void checkTimeSetNumInput(tidaData *data, U8 keynum);
static void checkTimeSetLeftInput(tidaData *data);
static void checkTimeSetRightInput(tidaData *data);

/* 2003.10.15 wyj 加入对日期设置输入框的检查 */
static void checkDateSetNumInput(tidaData *data, U8 keynum);
static void checkDateSetLeftInput(tidaData *data);
static void checkDateSetRightInput(tidaData *data);

/* 2003.10.15 wyj 加入对闹钟设置输入框的检查 */
static void checkAlarmNumInput(T_tida_edt *data, U8 keynum);
static void checkAlarmLeftInput(T_tida_edt *data);
static void checkAlarmRightInput(T_tida_edt *data);

/* 2003.12.1 wyj 加入时制转换时显示的转换 */
static void timeset_12_to_24(tidaData *data);
static void timeset_24_to_12(tidaData *data);

/* 2003.12.8 wyj 每周闹钟查看显示 */
static void weekc(void);
static void weeken(void);

/* 时间设置 */
extern const TD_Rect    TS_input_rect; 
extern const TD_Attri   TS_input_attr1;
extern const TD_Attri   TS_input_attr2;
extern const TD_Line    TS_index_l;
extern const Color      TS_index_c;
extern const TD_Rect    TS_tm_rect;
extern const TD_Attri   TS_tm_attr;
extern const TD_Rect    TS_AP_rect;
extern const TD_Attri   TS_AP_attr;

/* 日期设置 */
extern const TD_Rect    DS_input_rect; 
extern const TD_Attri   DS_input_attr;
extern const TD_Rect    DS_hint_rect;
extern const TD_Attri   DS_hint_attr;
extern const TD_Attri   TS_tm_attr1;
extern const TD_Line    DS_index_l;
extern const Color      DS_index_c;

/* 闹钟设置 */
extern const TD_Rect    AL_input_rect; 
extern const TD_Attri   AL_input_attr1;
extern const TD_Attri   AL_input_attr2;
extern const TD_Line    AL_index_l;
extern const Color      AL_index_c;
extern const TD_Rect    AL_hint_rect;
extern const TD_Attri   AL_hint_attr;
extern const TD_Rect    AL_AP_rect;
extern const TD_Attri   AL_AP_attr;

/* icon */
extern const MfwIcnAttr idl_AttrMask[];

/*******************************************************************************

 $Function:  date_time_create  

 $Description:	create main dialog for time and date (SINGLE_DYNAMIC)

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
/* "每日闹钟" "每周闹钟" 窗口创建 */
static T_MFW_HND date_time_create (T_MFW_HND parent_window)
{
    T_MFW_WIN     * win;

    T_tida * data = (T_tida *)ALLOC_MEMORY (sizeof (T_tida));
    data->tida_win = win_create (parent_window, 0, MfwWinVisible, (T_MFW_CB)tida_win_cb);

    TRACE_FUNCTION("MmiTimeDate:date_time_create");

    if( data->tida_win EQ 0 )
        return 0;

    /* Create window handler */
    data->mmi_control.dialog    = (T_DIALOG_FUNC)tida_main;/* dialog main function    */
    data->mmi_control.data      = data;
    data->parent_win = parent_window;
    win                         = ((T_MFW_HDR *)data->tida_win)->data;
    win->user                   = (void *) data;

    /* return window handle	*/
    mfwSetSignallingMethod(1);
    winShow(data->tida_win);

    return data->tida_win;
}
/*******************************************************************************

 $Function:  date_time_destroy  

 $Description:	 destroy main dialog for time and date

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static void date_time_destroy  (T_MFW_HND own_window)
{
    T_tida * data;
    T_MFW_WIN * win;

    if( own_window )
    {
        TRACE_EVENT("MmiTimeDate:date_time_destroy");
        win = ((T_MFW_HDR *)own_window)->data;
        data = (T_tida *)win->user;

        if( data )
        {
            win_delete (data->tida_win);
            FREE_MEMORY((void *)data,(sizeof(T_tida)));
        }
    }
}
/*******************************************************************************

 $Function:  date_time_edt_create  

 $Description:	 create editor dialog for time and date(SINGLE_DYNAMIC)

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
/* "每日闹钟" "每周闹钟"窗口初始化 */
static T_MFW_HND date_time_edt_create(T_MFW_HND parent_window)
{
    T_tida_edt * data = (T_tida_edt *)ALLOC_MEMORY (sizeof (T_tida_edt));
    T_MFW_WIN * win;
    T_MFW_WIN * win_data = ((T_MFW_HDR *)parent_window)->data;  //zgz,2002.8.30
    T_tida * tida_data = (T_tida *)win_data->user;//tida main data

    data->tida_edt_win = win_create (parent_window, 0, MfwWinVisible, (T_MFW_CB)tida_edt_win_cb);

    TRACE_FUNCTION("MmiTimeDate:date_time_edt_create");

    if( data->tida_edt_win EQ 0 )
        return 0;

    /* Create window handler*/
    data->mmi_control.dialog    = (T_DIALOG_FUNC)tida_editor;
    data->mmi_control.data      = data;
    data->parent_win = parent_window;
    win                         = ((T_MFW_HDR *)data->tida_edt_win)->data;
    win->user                   = (void *) data;

    /* Create any other handler	*/
    //reset_edt_attr_sett(0,10,70,10,0,0,edtCurBar1 | edtModOverWr,0,(char*)data->edtbuf1,MAX_DIG_TIDA,&data->edit1Attr);
    if( tida_data->state == DATE_ENTRY_EC )
        reset_edt_attr_sett(20,55,90,20,0,0,edtCurBar1 | edtModOverWr,0,(char*)data->edtbuf1,MAX_DIG_TIDA,&data->edit1Attr);
    //else
    //	reset_edt_attr_sett(36,55,90,20,0,0,edtCurBar1 | edtModOverWr,0,(char*)data->edtbuf1,MAX_DIG_TIDA,&data->edit1Attr);
    //zgz,data->tim_out_handle = tim_create(data->tida_edt_win,TIMERCLEAR,(T_MFW_CB)tida_edt_tim_out_cb);
    // data->editor_handle = edt_create(data->tida_edt_win,&data->edit1Attr,0,0);
    data->kbd_handle = kbd_create(data->tida_edt_win,KEY_ALL,(T_MFW_CB)tida_edt_kbd_cb);
    //zgz,data->kbd_long_handle = kbd_create(data->tida_edt_win,KEY_ALL | KEY_LONG,(T_MFW_CB)tida_edt_kbd_long_cb);

    /* return window handle	*/
    return data->tida_edt_win;
}
/*******************************************************************************

 $Function:  date_time_edt_destroy  

 $Description:	destroy editor dialog for time and date

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static void date_time_edt_destroy  (T_MFW_HND own_window)
{
    T_tida_edt * data ;
    T_MFW_WIN * win;

    if( own_window )
    {
        TRACE_FUNCTION ("MmiTimeDate:date_time_edt_destroy");

        win = ((T_MFW_HDR *)own_window)->data;
        data = (T_tida_edt *)win->user;

        if( data )
        {
            win_delete (data->tida_edt_win);
            FREE_MEMORY((void *)data,(sizeof(T_tida_edt)));
        }
    }
}
/*******************************************************************************

 $Function:  tida_main  

 $Description:	 main dialog function for time and date

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
/* "每日闹钟" "每周闹钟"窗口事件处理 */
static void tida_main(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN       *win_data       = ((T_MFW_HDR *)win)->data;
    T_tida          *tida_data      = (T_tida *)win_data->user;//tida main data
    T_tida_edt      *tida_edt_data  = (T_tida_edt *) parameter;//tida editor data
    T_MFW_HND       tida_edt_win;
    T_DISPLAY_DATA  display_info;

    TRACE_FUNCTION("MmiTimeDate:tida_main");

    switch( event )
    {
    case DATE_SHOW_EC:
        tida_data->state = DATE_SHOW_EC;
        tida_data->display_id1 = TxtEnterDate;
        tida_edt_win = date_time_edt_create(tida_data->tida_win);
        if( tida_edt_win )
        {
            SEND_EVENT(tida_edt_win,event,0,tida_data);
        }
        break;
    case DATE_ENTRY_EC:
        tida_data->state = DATE_ENTRY_EC;
        tida_data->display_id1 = TxtEnterDate;
        tida_edt_win = date_time_edt_create(tida_data->tida_win);
        {
            SEND_EVENT(tida_edt_win,event,0,tida_data);
        }
        break;
    case TIME_ENTRY_EC:
        tida_data->state = TIME_ENTRY_EC;
        tida_data->display_id1 = TxtEnterTime;
        tida_edt_win = date_time_edt_create(tida_data->tida_win);
        if( tida_edt_win )
        {
            SEND_EVENT(tida_edt_win,event,0,tida_data);
        }
        break;
    case TIME_SHOW_EC:
        tida_data->state = TIME_SHOW_EC;
        tida_data->display_id1 = TxtEnterTime;
        tida_edt_win = date_time_edt_create(tida_data->tida_win);
        if( tida_edt_win )
        {
            SEND_EVENT(tida_edt_win,event,0,tida_data);
        }
        break;
    case ENTRY_OK_EC:
        dialog_info_init(&display_info);            
        display_info.TextId2 = TxtSaved;            
        display_info.RightSoftKey = TxtSoftBack;
        display_info.Time = FOREVER;
        display_info.KeyEvents = KEY_OK | KEY_RIGHT | KEY_LEFT;             
        display_info.iconindex = REMIND_COMPLETE;
        display_info.Callback = (T_VOID_FUNC)ECtida_info_cb;
        info_dialog(tida_data->tida_win,&display_info); /* information screen "Saved" */
        break;
    case SAVED_EC:
    case TIDA_ABORT_EC:
    case TIDA_CLEAR_EC:
    case TIDA_TO_IDLE_EC:
        date_time_destroy(tida_data->tida_win);
        break;
    default:
        break;
    }
}
/*******************************************************************************

 $Function:  ECtida_info_cb  

 $Description:	 callback function from info dialog for time and date

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
void ECtida_info_cb(T_MFW_HND win, USHORT identifier, UBYTE reasons)
{
    T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
    T_tida * tida_data = (T_tida *)win_data->user;
    //int i,uIndex=0;	

    TRACE_FUNCTION ("MmiTimeDate: ECtida_info_cb");
    date_time_destroy(tida_data->tida_win);

    /*switch(identifier)
    {
        case SAVED_EC:
            SEND_EVENT(tida_data->tida_win,identifier,0,NULL);
            break;
        default:
            break;
    }*/
}

/*******************************************************************************

 $Function:  tida_win_cb  

 $Description:	 windows main callback function for time and date

 $Returns:		none.

 $Arguments:	
 
*******************************************************************************/
static int tida_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{
    TRACE_FUNCTION ("MmiTimeDate: tida_win_cb");
    if( event EQ MfwWinVisible )
    {
        /* Top Window has no output	*/
        dspl_ClearAll();
        return 1;
    }
    return 0;
}
/*******************************************************************************

 $Function:  tida_edt_win_cb  

 $Description:	 windows callback function for editor for time and date

 $Returns:		none.

 $Arguments:	7
 
*******************************************************************************/
/* "每日闹钟" "每周闹钟" 窗口显示回调 */
static int tida_edt_win_cb  (T_MFW_EVENT event,T_MFW_WIN * win)
{
    T_tida_edt      *edt_data   = (T_tida_edt *)win->user;//tida edt data
    T_MFW_WIN       *win_tida   = ((T_MFW_HDR *)edt_data->parent_win)->data;
    T_tida          *tida_data  = (T_tida *)win_tida->user; // tida main data
    char            lin1[MAX_LEN_DATE];
    char            lin2[MAX_LEN_TIME];
    char            string[4];
    int             old_color;
    game_Line       line;
    game_Rectangle  rectangle;
    TD_Line         l;

    memset(lin1, '\0', sizeof(lin1));
    memset(lin2, '\0', sizeof(lin2));

    TRACE_FUNCTION ("MmiTimeDate:tida_edt_win_cb");

    if( event EQ MfwWinVisible )
    {
        U8 uMode = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -