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

📄 mmischedule.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
            /* 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 + -