📄 mmischedule.c
字号:
/* Clear Screen */
dspl_ClearAll();
#if (MAIN_LCD_SIZE==3)//jhxu720
/* 显示背景 */
calinBkgDisp();
#elif ( MAIN_LCD_SIZE==4 )
/* 显示背景 */
calinBkgDisp();
#endif
#if 0 // 2004.1.16 WYJ
if( wstrBitlen(data->calin->holidayl_txt)<2 )
{
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut(36+4,1,DSPL_TXTATTR_TRANSPARENT,(char*)MmiRsrcGetText(TxtCalinder),0xffffff);
else
dspl_colorTextOut(28+4,1,DSPL_TXTATTR_TRANSPARENT,(char*)MmiRsrcGetText(TxtCalinder),0xffffff);
}
else //农历节日加入标题
{
/* 2003.10.21 wyj 修改*/
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut((132-wstrBitlen(data->calin->holidayl_txt)*8)/2, 1,DSPL_TXTATTR_TRANSPARENT,(char *)data->calin->holidayl_txt,0xffffff);
else
dspl_colorTextOut(28+4,1,DSPL_TXTATTR_TRANSPARENT,(char*)MmiRsrcGetText(TxtCalinder),0xffffff);
}
/* 日期 公历节日 农历节气显示 */
set_font_type(UNI12X12_FONT);
memset((char *)strn,0,sizeof(strn));
memset((char *)strn1,0,sizeof(strn1));
sprintf((char*)strn,"%d.%02d.%02d",data->month_table->year,data->month_table->month,data->month_table->day);
TRACE_EVENT((char*)strn);
if( (wstrBitlen(data->calin->holiday_txt)<3)&&(wstrBitlen(data->month_table->solar[0].solartxt)<3)
&&(wstrBitlen(data->month_table->solar[1].solartxt)<3) )
{
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(9, 19, DSPL_TXTATTR_TRANSPARENT, (char*)strn, 0x004c98); //似乎永远做不到
}
else
{
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(9, 19, DSPL_TXTATTR_TRANSPARENT, (char*)strn,0x004c98);
set_font_type(UNI12X12_FONT);
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
{
set_font_type(UNI12X12_FONT);
if( strlen(data->calin->holiday_txt) ) //显示公历节日
{
dspl_colorTextOut(80, 18, 0, (char*)data->calin->holiday_txt, 0x004c98);
}
else //显示节气
{
if( data->calin->day==data->month_table->solar[0].day )
dspl_colorTextOut(80+8, 18, 0, (char *)data->month_table->solar[0].solartxt,0x004c98);
if( data->calin->day==data->month_table->solar[1].day )
dspl_colorTextOut(80+8, 18, 0, (char *)data->month_table->solar[1].solartxt,0x004c98);
}
}
}
#endif
/* 2004/05/17 yhf modify */
#if ( MAIN_LCD_SIZE==4 )
/* title display */
if( wstrBitlen(data->calin->holidayl_txt)<2 )
{
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut(36+4,1,DSPL_TXTATTR_WHITE_EDGE,(char*)MmiRsrcGetText(TxtCalinder),0x0);
else
dspl_colorTextOut(28+4,1,DSPL_TXTATTR_WHITE_EDGE,(char*)MmiRsrcGetText(TxtCalinder),0x0);
}
else //农历节日加入标题
{
/* 2003.10.21 wyj 修改*/
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
dspl_colorTextOut((132-wstrBitlen(data->calin->holidayl_txt)*8)/2, 1,DSPL_TXTATTR_WHITE_EDGE,(char *)data->calin->holidayl_txt,0x0);
else
dspl_colorTextOut(28+4,1,DSPL_TXTATTR_WHITE_EDGE,(char*)MmiRsrcGetText(TxtCalinder),0x0);
}
/* 日期 公历节日 农历节气显示 */
set_font_type(UNI12X12_FONT);
memset((char *)strn,0,sizeof(strn));
memset((char *)strn1,0,sizeof(strn1));
sprintf((char*)strn,"%d.%02d.%02d",data->month_table->year,data->month_table->month,data->month_table->day);
TRACE_EVENT((char*)strn);
if( (wstrBitlen(data->calin->holiday_txt)<3)&&(wstrBitlen(data->month_table->solar[0].solartxt)<3)
&&(wstrBitlen(data->month_table->solar[1].solartxt)<3) )
{
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(9, 19, DSPL_TXTATTR_TRANSPARENT, (char*)strn, 0x004c98); //似乎永远做不到
}
else
{
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(9, 19, DSPL_TXTATTR_TRANSPARENT, (char*)strn,0x004c98);
set_font_type(UNI12X12_FONT);
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE )
{
set_font_type(UNI12X12_FONT);
if( strlen(data->calin->holiday_txt) ) //显示公历节日
{
dspl_colorTextOut(80, 18, 0, (char*)data->calin->holiday_txt, 0x004c98);
}
else //显示节气
{
if( data->calin->day==data->month_table->solar[0].day )
dspl_colorTextOut(80+8, 18, 0, (char *)data->month_table->solar[0].solartxt,0x004c98);
if( data->calin->day==data->month_table->solar[1].day )
dspl_colorTextOut(80+8, 18, 0, (char *)data->month_table->solar[1].solartxt,0x004c98);
}
}
}
#endif
/* 2004/05/17 yhf modify */
#if ( MAIN_LCD_SIZE==2 )
/* title display */
dspl_BitBlt( menuup[FlashSettingData.theme].area.px,menuup[FlashSettingData.theme].area.py,
menuup[FlashSettingData.theme].area.sx,menuup[FlashSettingData.theme].area.sy,
menuup[FlashSettingData.theme].nIcons,menuup[FlashSettingData.theme].icons,0);
/* data display */
sprintf((char*)strn,"%d.%02d.%02d",data->month_table->year,data->month_table->month,data->month_table->day);
dspl_colorTextOut(0, 0, DSPL_TXTATTR_TRANSPARENT, (char*)strn, 0x0);
#endif
/* title display */
DRAW_ICON(ICON_MENUUP);//jhxu720 add
/* data display */
/*sprintf((char*)strn,"%d.%02d.%02d",data->month_table->year,data->month_table->month,data->month_table->day);
dspl_colorTextOut(0, 0, DSPL_TXTATTR_TRANSPARENT, (char*)strn, 0x0);*/
/* 2003.11.17 WYJ 显示日程表*/
calinDisp(data->month_table);
#if(MAIN_LCD_SIZE==3)
sprintf((char*)strn,"%d",data->month_table->year);
dspl_colorTextOut(20, 95, DSPL_TXTATTR_TRANSPARENT, (char*)strn, 0xffffff);
sprintf((char*)strnMonth,"%0d",data->month_table->month);
dspl_colorTextOut(90, 94, DSPL_TXTATTR_TRANSPARENT, (char*)strnMonth, 0xffffff);
#endif
#if 0
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE ) //显示农历日期
{
/* 2003.11.5 wyj 限定农历日期的显示范围 */
if( data->calin->year>=1980 && data->calin->year<=2031 )
{
memset((char *)ly,0,sizeof(ly));
memset((char *)strm,0,sizeof(strm));
memset((char *)strd,0,sizeof(strd));
GetLunarYear(data->calin->year, data->calin->month, data->calin->l_month%16,(char *)ly);
lm=data->calin->l_month%16;
getLunarMonth(lm,(char *)strm);
ld=data->calin->l_day;
getLunarDay(ld,(char *)strd);
memset((char *)str,0,sizeof(str));
strncpy(str,(char *)ly,7);
strncat(str,(char *)strm,4);
strncat(str,(char *)strd,6);
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(60-3*wstrBitlen((char*)str)+EX, 127, DSPL_TXTATTR_TRANSPARENT, str,0x004c98); //显示农历日期
}
}
#endif
/* 2004/05/17 yhf modify */
#if ( MAIN_LCD_SIZE==4 )
if( Mmi_getCurrentLanguage()==CHINESE_LANGUAGE ) //显示农历日期
{
/* 2003.11.5 wyj 限定农历日期的显示范围 */
if( data->calin->year>=1980 && data->calin->year<=2031 )
{
memset((char *)ly,0,sizeof(ly));
memset((char *)strm,0,sizeof(strm));
memset((char *)strd,0,sizeof(strd));
GetLunarYear(data->calin->year, data->calin->month, data->calin->l_month%16,(char *)ly);
lm=data->calin->l_month%16;
getLunarMonth(lm,(char *)strm);
ld=data->calin->l_day;
getLunarDay(ld,(char *)strd);
memset((char *)str,0,sizeof(str));
strncpy(str,(char *)ly,7);
strncat(str,(char *)strm,4);
strncat(str,(char *)strd,6);
set_font_type(UNI12X12_FONT);
dspl_colorTextOut(60-3*wstrBitlen((char*)str)+EX, 127, DSPL_TXTATTR_TRANSPARENT, str,0x004c98); //显示农历日期
}
}
#endif
set_font_type(NORMAL_FONT);
displaySoftKeys(TxtSoftOptions, TxtSoftBack);
#if(MAIN_LCD_SIZE==3)
draw_softkeybar_fourdirection_arrow();//jhxu720 add
#endif
/*2003/11/11,talcon add*/
dspl_Enable(uMode );
}
break;
default:
break;
}
return 1;
}
void calin_destroy (T_MFW_HND own_window)
{
T_MFW_WIN * win = ((T_MFW_HDR *)own_window)->data;
tddata* data = (tddata*)win->user;
int i;
TRACE_EVENT ("calin_destroy()");
if( data )
{
/*
* Delete WIN Handler
*/
win_delete(calin_win);
/*
* Free Memory
*/
FREE_MEMORY((void *)data->calin,sizeof(TIMEDATE));
FREE_MEMORY((void *)data->month_table,sizeof(MONTHTABLE));
FREE_MEMORY((void *)data, sizeof(tddata));
}
}
/* 2003.10.21 wyj 农历范围1980-2031 "日程表"按键处理
* 2003.11.5 wyj 改为限定范围1980-2099,超出范围1980-2031,不显示农历
*/
static int calin_kbd_cb (T_MFW_EVENT event, T_MFW_KBD *keyboard)
{
T_MFW_HND win = mfw_parent (mfw_header());
T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
//T_DISPLAY_DATA display_info;
tddata* data = (tddata*)win_data->user;
char debugbuffer[80];
int i=0,j=0,k=0;
TRACE_EVENT("calin_kbd_cb");
switch( keyboard->code )
{
case KCD_LEFT:
case KCD_OK:
TRACE_EVENT("KCD_LEFT");
memset(&sche_data,0,sizeof(FlashSchedule));
//while(!(Iswritefileend(ScheTable[i],sizeof(FFS_ScheData))));
//ScheMemoRead();
while( j<SCHEDULE_NUMBER )
{
if( ScheDetailIndex[j].index )
{
ScheIndex[k].index=ScheDetailIndex[j].index;
//ScheIndex[k].number=j;
ScheIndex[k].date[0]=ScheDetailIndex[j].date[0];
ScheIndex[k].date[1]=ScheDetailIndex[j].date[1];
ScheIndex[k].wday=ScheDetailIndex[j].wday;
ScheIndex[k].hour=ScheDetailIndex[j].hour;
ScheIndex[k].minute=ScheDetailIndex[j].minute;
k++;
}
j++;
}
TRACE_EVENT("K=:");
// set_font_type(NORMAL_FONT);
data->year = data->month_table->year;
data->month = data->month_table->month;
data->day = data->month_table->day;
data->wday = data->calin->week;
TraceInt(data->year);
TraceInt(data->month);
TraceInt(data->day);
if( data->menu_options_win!=NULL )
{
TRACE_EVENT("gdy option_win true");
//bookMenuDestroy(data->menu_options_win);
}
else
TRACE_EVENT("gdy option_win false");
ToolkitTitle=TxtSchedule;
if( ScheIndex[0].index )
data->menu_options_win=bookMenuStart(data->win, sche_mnu1Attributes(), PhbkToolkit);
else
data->menu_options_win=bookMenuStart(data->win, sche_NoAttributes(), PhbkToolkit);
SEND_EVENT(data->menu_options_win, ADD_CALLBACK, NULL, 0);
//DateMessage=data->month_table;
/*while(sche_data[i].text[0]!=0)
i++;
sche_index=i;*/
//winShow(win);
break;
case KCD_MNULEFT: //减一天
/* 2003.11.5 wyj 范围1980-2099 */
if( data->calin->year==1980 && data->calin->month==1 &&data->calin->day==1 )
break;
GetMonthTable(data->calin, 0, -1, data->month_table);
GetTimeDate(data->month_table->year, data->month_table->month,data->month_table->day,data->calin);
winShow(win);
break;
case KCD_MNURIGHT: //加一天
/* 2003.11.5 wyj 范围1980-2099 */
if( data->calin->year==2099 && data->calin->month==12 &&data->calin->day==31 )
break;
GetMonthTable(data->calin, 0, 1, data->month_table);
GetTimeDate(data->month_table->year, data->month_table->month,data->month_table->day,data->calin);
/*sche_year=data->month_table.year;
sche_month=data->month_table.month;
sche_day=data->month_table.day;*/
winShow(win);
break;
case KCD_MNUUP: //减一个月
/* 2003.11.5 wyj 范围1980-2099 */
if( data->calin->year==1980 && data->calin->month==1 )
break;
GetMonthTable(data->calin, -1, 0, data->month_table);
GetTimeDate(data->month_table->year, data->month_table->month,data->month_table->day,data->calin);
/*sche_year=data->month_table.year;
sche_month=data->month_table.month;
sche_day=data->month_table.day;*/
winShow(win);
break;
case KCD_MNUDOWN: //加一个月
/* 2003.11.5 wyj 范围1980-2099*/
if( data->calin->year==2099 && data->calin->month==12 )
break;
GetMonthTable(data->calin, 1, 0, data->month_table);
GetTimeDate(data->month_table->year, data->month_table->month,data->month_table->day,data->calin);
/*sche_year=data->month_table.year;
sche_month=data->month_table.month;
sche_day=data->month_table.day;*/
winShow(win);
break;
case KCD_HUP:
case KCD_RIGHT:
SEND_EVENT(calin_win, TD_EXIT, 0, 0);
break;
default:
break;
}
return MFW_EVENT_CONSUMED;
}
/* "新日程" */
static T_MFW_HND sche_create(MfwHnd parent_win)
{
schedule_data* data = (schedule_data *)ALLOC_MEMORY (sizeof (schedule_data ));
T_MFW_WIN * win;
int i=0;
TRACE_EVENT("calin_create");
if( data EQ NULL )
{
return NULL;
}
// Create window handler
data->win = win_create (parent_win, 0, E_WIN_VISIBLE, (T_MFW_CB)sche_win_cb);
if( data->win EQ NULL )
{
return NULL;
}
// connect the dialog data to the MFW-window
data->mmi_control.dialog = (T_DIALOG_FUNC)sche_DialogCB;
data->mmi_control.data = data;
win = ((T_MFW_HDR *)data->win)->data;
win->user = (void *)data;
data->parent_win = parent_win;
sche_win=data->win;
//for(i=0;i<2;i++)
//TRACE_EVENT((char*)sche_data[i].text);
return data->win;
}
/* "新日程"*/
static void sche_DialogCB(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
T_MFW_WIN * win_data = ( (T_MFW_HDR *) win )->data;
schedule_data * data = (schedule_data *) win_data->user;
//data->id=value;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -