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

📄 calendar.c

📁 编译后直接运行的MP3播放器全部C语言源代码 一个包含FAT文件系统、系统引导 Boot、FLASH Driver等内容的
💻 C
📖 第 1 页 / 共 2 页
字号:
        return true;    }    else if (fp != -1)        rb->close(fp);    else if (fq != -1)        rb->close(fq);    return false;}static void add_memo(struct shown *shown, int type){    bool saved = false;    if (rb->kbd_input(memos[memos_in_memory].message,                      sizeof memos[memos_in_memory].message) != -1)    {        if (memos[memos_in_memory].message != "")    	{            memos[memos_in_memory].file_pointer_start = 0;            memos[memos_in_memory].file_pointer_end = 0;            memos[memos_in_memory].day = shown->mday;            memos[memos_in_memory].month = shown->mon;            memos[memos_in_memory].wday = shown->wday;            memos[memos_in_memory].year = shown->year;            memos[memos_in_memory].type = type;            if (save_memo(memos_in_memory,true,shown))            {                saved = true;                memos_in_memory++;            }            else            {                memos[memos_in_memory].file_pointer_start = 0;                memos[memos_in_memory].file_pointer_end = 0;                memos[memos_in_memory].day = 0;                memos[memos_in_memory].month = 0;                memos[memos_in_memory].year = 0;                memos[memos_in_memory].type = 0;                memos[memos_in_memory].wday = 0;            }        }    }    rb->lcd_clear_display();    if(use_system_font)        rb->lcd_setfont(FONT_SYSFIXED);    if (saved)        rb->lcd_puts(0,0,"Event added");    else        rb->lcd_puts(0,0,"Event not added");    rb->lcd_update();    rb->sleep(HZ/2);}static bool edit_memo(int change, struct shown *shown){    bool exit = false;    rb->lcd_clear_display();    if (memos_in_shown_memory > 0)    {        rb->lcd_puts(0,0,"Remove : Up");        rb->lcd_puts(0,1,"Edit : Down");        rb->lcd_puts(0,2,"New :");        rb->lcd_puts(2,3,"weekly : Left");        rb->lcd_puts(2,4,"monthly : Play");        rb->lcd_puts(2,5,"annually : Right");        rb->lcd_puts(2,6,"one off : On");    }    else    {        rb->lcd_puts(0,0,"New :");        rb->lcd_puts(2,1,"weekly : Left");        rb->lcd_puts(2,2,"monthly : Play");        rb->lcd_puts(2,3,"anualy : Right");        rb->lcd_puts(2,4,"one off : On");    }    rb->lcd_update();    while (!exit)    {        switch (rb->button_get(true))        {            case BUTTON_OFF:                return false;            case BUTTON_LEFT:                add_memo(shown,0);                return false;            case BUTTON_PLAY:                add_memo(shown,1);                return false;            case BUTTON_RIGHT:                add_memo(shown,2);                return false;            case BUTTON_ON:                add_memo(shown,3);                return false;            case BUTTON_DOWN:                if (memos_in_shown_memory > 0)                {                    if(rb->kbd_input(memos[pointer_array[change]].message,                                     sizeof memos[pointer_array[change]].message) != -1)                        save_memo(pointer_array[change],true,shown);                    if(use_system_font)                        rb->lcd_setfont(FONT_SYSFIXED);                    exit = true;                }                break;            case BUTTON_UP:                if (memos_in_shown_memory > 0)                {                    save_memo(pointer_array[change],false,shown);                    exit = true;                }                break;            case SYS_USB_CONNECTED:                return true;        }    }    return false;}static int start = 0;static void show_lines(int selected, struct shown *shown){    int lines,j = 1,w,h,i,k = 0, pos = 1,m = 0;    char temp[MAX_CHAR_MEMO_LEN + 12];    rb->lcd_getstringsize("A",&w,&h);    lines = (LCD_HEIGHT / h) - 1;            rb->lcd_clear_display();    rb->lcd_puts(0,0,"Events (play : menu)");        while (selected >= (lines + start))        start++;    while (selected < start)        start--;    i = start;    while ( (i < memos_in_shown_memory) && (k < lines) )    {        if (memos[pointer_array[i]].type == 2)            rb->snprintf(temp, sizeof temp, "%s (%d yrs)",                         memos[pointer_array[i]].message,                         shown->year - memos[pointer_array[i]].year);        else            rb->snprintf(temp, sizeof temp, "%s",                         memos[pointer_array[i]].message);        m = 0;        if (i == selected)        {            pos = k + 1;            rb->lcd_puts_scroll(m,j++,temp);        }        else            rb->lcd_puts(m,j++,temp);        k++;        i++;    }    rb->lcd_invertrect(0, (pos) * h, LCD_WIDTH, h);}static void update_memos_shown(struct shown *shown){    int i;    memos_in_shown_memory = 0;    start = 0;    for (i = 0; i < memos_in_memory; i++)        if (            (memos[i].day == shown->mday)            ||            (             (memos[i].type < 1)             &&             (memos[i].wday == shown->wday)            )           )            pointer_array[memos_in_shown_memory++] = i;}static bool any_events(struct shown *shown, bool force){    int lines_displayed = 0;    bool exit=false;    update_memos_shown(shown);    if (memos_in_shown_memory > 0)        show_lines(lines_displayed,shown);    else if (force)        return edit_memo(lines_displayed, shown);    else        return false;    rb->lcd_update();    while (!exit)    {        switch (rb->button_get(true))        {            case BUTTON_DOWN:                if (memos_in_shown_memory > 0)                {                    lines_displayed++;                    if (lines_displayed >= memos_in_shown_memory)                        lines_displayed = memos_in_shown_memory - 1;                    show_lines(lines_displayed,shown);                    rb->lcd_update();                }                break;            case BUTTON_UP:                if (memos_in_shown_memory > 0)                {                    lines_displayed--;                    if (lines_displayed < 0)                        lines_displayed = 0;                    show_lines(lines_displayed,shown);                    rb->lcd_update();                }                break;            case BUTTON_PLAY:                return edit_memo(lines_displayed, shown);            case BUTTON_OFF:                return false;            case SYS_USB_CONNECTED:                return true;        }    }    return false;}static void next_month(struct shown *shown, int step){    shown->mon++;    if (shown->mon > 12)    {        shown->mon=1;        shown->year++;        leap_year = is_leap_year(shown->year);    }    else if (step > 0)        shown->mday = shown->mday - days_in_month[leap_year][shown->mon-1];    else if (shown->mday > days_in_month[leap_year][shown->mon])        shown->mday = days_in_month[leap_year][shown->mon];    shown->firstday = shown->lastday;    load_memo(shown);    draw_calendar(shown);}static void prev_month(struct shown *shown, int step){    shown->mon--;    if (shown->mon < 1)    {        shown->mon = 12;        shown->year--;        leap_year = is_leap_year(shown->year);    }    if (step > 0)        shown->mday = shown->mday + days_in_month[leap_year][shown->mon];    else if (shown->mday > days_in_month[leap_year][shown->mon])        shown->mday = days_in_month[leap_year][shown->mon];    shown->firstday += 7 - (days_in_month[leap_year][shown->mon] % 7);    load_memo(shown);    draw_calendar(shown);}static void next_day(struct shown *shown, int step){    shown->mday += step;    if (shown->mday > days_in_month[leap_year][shown->mon])        next_month(shown, step);    else        draw_calendar(shown);}static void prev_day(struct shown *shown, int step){    shown->mday -= step;    if (shown->mday < 1)        prev_month(shown, step);    else        draw_calendar(shown);}enum plugin_status plugin_start(struct plugin_api* api, void* parameter){    struct today today;    struct shown shown;    bool exit = false;    TEST_PLUGIN_API(api);    (void)(parameter);        rb = api;    calendar_init(&today, &shown);    load_memo(&shown);    any_events(&shown, false);    draw_calendar(&shown);    while (!exit)    {        switch (rb->button_get(true))        {            case BUTTON_OFF:                return false;            case BUTTON_ON | BUTTON_DOWN:            case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT:                next_month(&shown, 0);                break;            case BUTTON_ON | BUTTON_UP:            case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT:                prev_month(&shown, 0);                break;            case BUTTON_DOWN:            case BUTTON_DOWN | BUTTON_REPEAT:                next_day(&shown, 7);                break;            case BUTTON_UP:            case BUTTON_UP | BUTTON_REPEAT:                prev_day(&shown, 7);                break;            case BUTTON_LEFT:            case BUTTON_LEFT | BUTTON_REPEAT:                prev_day(&shown, 1);                break;            case BUTTON_RIGHT:            case BUTTON_RIGHT | BUTTON_REPEAT:                next_day(&shown, 1);                break;            case BUTTON_PLAY:                if (any_events(&shown, true))                    rb->usb_screen();                draw_calendar(&shown);                break;            case SYS_USB_CONNECTED:                rb->usb_screen();                draw_calendar(&shown);                break;        }    }    return false;}#endif

⌨️ 快捷键说明

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