📄 mmitimedate.c
字号:
/*******************************************************************************
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 + -