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

📄 mmitimedate.c

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

                    CONDAT (UK)

********************************************************************************                                                                              

 This software product is the property of Condat (UK) Ltd and may not be
 disclosed to any third party without the express permission of the owner.                                 
                                                                              
********************************************************************************

 $Project name:	Basic MMI                                                      
 $Project code:	BMI (6349)                                                           
 $Module:		MMI
 $File:		    MmiTimeDate.c
 $Revision:		1.0                                                       
                                                                              
 $Author:		Condat(UK)                                                         
 $Date:		    22/02/01                                                      
                                                                               
********************************************************************************
                                                                              
 Description:

  

********************************************************************************

 $History: MmiMain.c

    25/10/00			Original Condat(UK) BMI version.	
    04/08/02            zy Mobile Innovation add backlight on/off time   
 $End

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


#define ENTITY_MFW

/* includes */
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#if defined (NEW_FRAME)

    #include "typedefs.h"
    #include "vsi.h"
    #include "pei.h"
    #include "custom.h"
    #include "gsm.h"

#else

    #include "stddefs.h"
    #include "custom.h"
    #include "gsm.h"
    #include "vsi.h"

#endif
#include "mfw_sys.h"
#include "p_sim.h"

//#include <stdio.h>
//#include <string.h>
//#include <stdlib.h>

//#include "mfw_sys.h"

//#include "stddefs.h"
//#include "custom.h"
//#include "gsm.h"
//#include "vsi.h"

#include "mfw_mfw.h"
#include "mfw_win.h"

#include "mfw_kbd.h"
#include "mfw_edt.h"
#include "mfw_lng.h"
#include "mfw_tim.h"
#include "mfw_icn.h"
#include "mfw_mnu.h"
#include "mfw_phb.h"
#include "mfw_cm.h"
#include "mfw_sim.h"
#include "mfw_nm.h"
#include "mfw_sat.h"
#include "mfw_phb.h"
#include "ksd.h"
#include "psa.h"
#include "mfw_sms.h"
#include "mfw_sat.h"
//lxj
#include "mfw_ffs.h"
//lxj
#include "dspl.h"

#include "gdi.h" //ES!!

#include "MmiMmi.h"
#include "MmiDummy.h"
#include "MmiDialogs.h"
#include "MmiLists.h"
#include "Mmischedule.h"
#include "Mmiautopower.h"
//#include "BmiEastAPI.h"
#include "td.h"
#include "mmicall.h"
#include "Mmischedule.h"

//#include "MmiIdle.h"
#include "MmiSoftkeys.h"
#include "MmiIcons.h"
#include "MmiMenu.h"
#include "MmiMain.h"
#include "MmiIdle.h"
#include "MmiStart.h"
#include "MmiPins.h"
#include "MmiTimeDate.h"
#include "MmiSounds.h"
#include "audio.h"
#include "cus_aci.h"
#include "p_sim.h"

#include "rtc_api.h"  // zgz add,2002.8.15 Mobile Innovation

#include "mmiouterIdle.h"
#include "mmiiconresource.h"	/* 2004/06 sunsj modify for picture manage */
//#define TDTRACE 1
#include "mmiutilapi.h"
//2004.08.02 Added by Cathy for Camera
#ifdef CAMERA_ENABLED
#include "mmicamera.h"
#endif


#define CLEAR_BOTTOM_ZONE dspl_Clear( KEY_AREA );
extern void GetTimeDate(int year,short month,short day,TIMEDATE *today);
extern void GetNextWeek(week_date * today, int week_range, week_date * next);
extern void GetNextMinute(date_time_minute * today, int minute_range, date_time_minute * next);

static int tida_edt_kbd_long_cb (MfwEvt e, MfwKbd *kc);
static void tida_edt_tim_out_cb(T_MFW_EVENT event,T_MFW_TIM * t);
static int check_time (T_MFW_HND win, void * edt_dat);
static int check_date (T_MFW_HND win, void * edt_dat);
static int tida_edt_kbd_cb (MfwEvt e, MfwKbd *kc);
static void tida_editor(T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int tida_edt_win_cb  (T_MFW_EVENT event,T_MFW_WIN * win);
static int tida_win_cb (T_MFW_EVENT event, T_MFW_WIN * win);
static void tida_main(T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static void reset_edt_attr_sett(U16 winPx,U16 winPy,U16 winSx,U16 winSy,U8 fgColor,U8 font,U8 mode,
                                U8 *controls, char *text,U16 size,MfwEdtAttr* attr);

static void updateRtcDate(Date newDate);  // zgz,2002.8.15 Mobile Innovation
static void updateRtcClock(CLOCK newClock);  // zgz,2002.8.15 Mobile Innovation

static void date_time_edt_destroy  (T_MFW_HND own_window);
static T_MFW_HND date_time_edt_create(T_MFW_HND parent_window);
static void date_time_destroy  (T_MFW_HND own_window);
static T_MFW_HND date_time_create (T_MFW_HND parent_window);



static MfwHnd win;                      /* our window               */
static DisplayData DisplayInfo;
extern MfwHnd timer_win;
void alarm_screen();

#define MAX_DIG_TIDA		20	        /* size of buffer (??)  */
#define MAX_LEN_DATE		11	        /* maximum number of digits date*/
#define MAX_LEN_TIME		6	        /* maximum number of digits time*/
#define DATE_TEXT_X         0
#define DATE_TEXT_Y         0

typedef enum
{
    ALARM,
    SETTING,
    BACKLIGHTONTIME,//zy add 04/08/02
    BACKLIGHTOFFTIME,   //zy add 04/08/02
} timeDateMode;

typedef struct
{
    T_MMI_CONTROL    mmi_control;
    T_MFW_HND        parent_win;
    T_MFW_HND        tida_win;
    USHORT           display_id1;
    USHORT           display_id2;
    DAT_TIME_CASE    state;               /* setting state            */
    //UBYTE				mode;				//whether we're setting the current time/date or alarm.
} T_tida;

typedef struct
{
    T_MMI_CONTROL    mmi_control;
    T_MFW_HND        parent_win;
    T_MFW_HND        tida_edt_win;
    T_MFW_HND        kbd_handle;
    T_MFW_HND        kbd_long_handle;
    T_MFW_HND        editor_handle;
    T_MFW_HND        tim_out_handle;
    DAT_TIME_CASE    state;               /* setting state            */
    char edtbuf1[MAX_DIG_TIDA];
    MfwEdtAttr edit1Attr;
    UBYTE            index;
}T_tida_edt;


typedef struct
{
    T_MMI_CONTROL    mmi_control;
    T_MFW_HND        parent_win;
    T_MFW_HND        win;
    T_MFW_HND        kbd;
    T_MFW_HND        info_time;
    int count;
    int id;
    int AfterCall;
    BOOL animal_id;
    BOOL Melody_index;
}ALARM_DATA;

typedef enum
{
    ALARM_ODINARY=TimeDateDummy+10,
    ALARM_SCHEDULE,
    ALARM_STROKE,
    ALARM_EXIT
}ALARM_EVENT;

typedef enum
{
    SCHEDULE_ALARM=TimeDateDummy+20,
    ORDINARY_ALARM,
    AUTOPOWER
}ALARM_TYPE;

/*
 * Settings menu subs:
 */

/* #define TIMERESULT      1000           time for results         */
#define TIMERCLEAR		2500
extern ScheTable[3][10];
extern RTC_DISABLE_IT_ALARM;
T_MFW_HND alarm_win=NULL;
static BOOL ALARM_FLAG=FALSE;
static BOOL STROKE_FLAG=FALSE;
extern char currentringstr[20];
/*2004/05/31 yhf modify*/
//extern const unsigned char gImage_bar[];

//extern const unsigned char alarmBit[];
extern UINT8 Gu8_Envio_num;
BOOL autopower_flag=FALSE;
extern  T_call call_data;
static T_MFW_HND tim_win=NULL;
static T_MFW_HND stroke_tim_win=NULL;
extern BOOL call_win_flag;
extern  char oldringstr[20];   //xsf add 2002.09.06
extern void stopPlayingMelody( void );
extern void startPlayingMelody(UBYTE melody_id);

//Flag to indicate whether we're setting the current or alarm date/time.
static UBYTE DateTimeEntryMode;
extern T_RTC_DATE_TIME timedate;//zhonghz,globel var,define in mmimain.c

extern UBYTE getcurrentAlarmTone(void);  //mmisounds
void schedule_alarm_screen();
static T_MFW_HND alarm_screen_create(T_MFW_HND parent_window);
void showAlarmIcon(void);
static void alarm_dialog(T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int alarm_kbd_cb (MfwEvt e, MfwKbd *kc);
static int alarm_win_cb  (T_MFW_EVENT event,T_MFW_WIN * win);
void disp_alarm_screen(ALARM_DATA* data);
static T_MFW_CB  alarm_tim_cb(MfwEvt e, MfwTim *tc);
T_MFW_CB  autopower_tim_cb(MfwEvt e, MfwTim *tc);
void GetNextSeconds(date_time_minute* a,int range,date_time_minute* b);
T_MFW_CB CallAndAlarm_tim_cb(MfwEvt e, MfwTim *tc);


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

 $Function:  alarm_check  

 $Description:	 Called by MmiMain.c to check current time/date against that set for alarm
                If they match the alarm screen comes up and the buzzer sounds

 $Returns:		none.

 $Arguments:	none
 
*******************************************************************************/

void alarm_check()
{
    T_MFW_HND    parent_win = mfwParent( mfw_header());   
    T_RTC_DATE_TIME time_date,rtcTime;
    T_RV_RETURN path;
    TIMEDATE today;   
    date_time_minute alarm_timedate,next,alarmtime;
    char s[2];
    TRACE_EVENT("check_alarm");

    GetTimeDate(currdate.year, currdate.month, currdate.day, &today);
    if( (((FFS_flashData.latest_alarm.year==currdate.year)&&(FFS_flashData.latest_alarm.month==currdate.month)//once schedule alarm and weekly alarm
          &&(FFS_flashData.latest_alarm.day==currdate.day)||(FFS_flashData.latest_alarm.wday==today.week+1)||
          (FFS_flashData.weeklyAlarm_switch&(0x01<<today.week)))&&(FFS_flashData.latest_alarm.hour==currclock.hour)
         &&(FFS_flashData.latest_alarm.minute==currclock.min))       
        ||(FFS_flashData.dailyAlarm_switch)&&(FFS_flashData.latest_alarm.hour==currclock.hour)&&(FFS_flashData.latest_alarm.minute==currclock.min)//daily alarm normal
        ||(FFS_flashData.latest_alarm.daily_switch)&&(FFS_flashData.latest_alarm.hour==currclock.hour)&&(FFS_flashData.latest_alarm.minute==currclock.min)//daily alarm
        ||(FFS_flashData.latest_alarm.weekly_switch)&&(FFS_flashData.latest_alarm.wday==today.week)&&(FFS_flashData.latest_alarm.hour==currclock.hour)&&(FFS_flashData.latest_alarm.minute==currclock.min)//weekly schedule alarm 2003.12.3 wyj
        ||(FFS_flashData.latest_alarm.month_switch)&&(FFS_flashData.latest_alarm.day==currdate.day)&&(FFS_flashData.latest_alarm.hour==currclock.hour)&&(FFS_flashData.latest_alarm.minute==currclock.min)//monthly alarm
        ||(FFS_flashData.latest_alarm.year_switch)&&(FFS_flashData.latest_alarm.month==currdate.month)&&(FFS_flashData.latest_alarm.day==currdate.day)&&(FFS_flashData.latest_alarm.hour==currclock.hour)&&(FFS_flashData.latest_alarm.minute==currclock.min) )//mannual alarm
    {
        TRACE_EVENT("ALARM_FLAG=:");
        sprintf((char*)s,"%d",ALARM_FLAG);
        TRACE_EVENT(s);
        if( !ALARM_FLAG )
        {
            ALARM_FLAG=TRUE;  
            if( FFS_flashData.latest_alarm.daily_switch==TRUE )
                FFS_flashData.latest_alarm.daily_switch=FALSE;
            if( FFS_flashData.latest_alarm.weekly_switch==TRUE )
                FFS_flashData.latest_alarm.weekly_switch=FALSE;
            if( FFS_flashData.latest_alarm.month_switch==TRUE )
                FFS_flashData.latest_alarm.month_switch=FALSE;
            if( FFS_flashData.latest_alarm.year_switch==TRUE )
                FFS_flashData.latest_alarm.year_switch=FALSE;
            switch( FFS_flashData.latest_alarm.alarm_type )
            {
            case ORDINARY_ALARM:                  
                if( (!FFS_flashData.dailyAlarm_switch)&&(!FFS_flashData.weeklyAlarm_switch) )
                {
                    TRACE_EVENT("No alarm");
                    break;
                }
                /*2003/12/26,talcon add outer Idle handle */
                //setOuterState(OUTERIDLESTATE_ALERT,1,0);//2004-03-23 Sunny remove

                if( (int)call_data.win_incoming||(int)call_data.win_calling||call_win_flag||timer_win )
                {
                    TIMCREATE_SETFLLAG(tim_win=timCreate(parent_win, 1000, (T_MFW_CB)CallAndAlarm_tim_cb);)
                    timStart(tim_win);                      
                    break;
                }
                alarm_screen();                     
                break;          
            case SCHEDULE_ALARM:                  
                if( (int)call_data.win_incoming||(int)call_data.win_calling||(int)call_win_flag )
                {
                    TIMCREATE_SETFLLAG(tim_win=timCreate(parent_win, 1000, (T_MFW_CB)CallAndAlarm_tim_cb);)
                    timStart(tim_win);
                    break;
                }
                schedule_alarm_screen();                    
                break;
            case AUTOPOWER:
                set_latest_alarm();

⌨️ 快捷键说明

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