static int clock_on_timer(swapi_message_t *msg, void *data){ swap_clock_t *sc = (swap_clock_t *)data; ASSERT((msg != NULL) && (sc != NULL)); swapi_log_info("clock receive timer message!\n"); clock_draw(sc); return 0; }
void window_clock_draw_screen(struct window_pane *wp) { struct window_clock_mode_data *data = wp->modedata; struct screen_write_ctx ctx; int colour, style; colour = options_get_number(&wp->window->options, "clock-mode-colour"); style = options_get_number(&wp->window->options, "clock-mode-style"); screen_write_start(&ctx, NULL, &data->screen); clock_draw(&ctx, colour, style); screen_write_stop(&ctx); }
static int clock_on_resume(swapi_swap_t *sw){ swap_clock_t *sc; ASSERT(sw != NULL); swapi_log_info("swap clock is resume!\n"); sc = (swap_clock_t *)swapi_swap_get(sw); if(sc == NULL){ swapi_log_warn("swap clock not setting!\n"); return -1; } clock_draw(sc); return 0; }
static void clock_set_view(swap_clock_t *sc, int vtype){ ASSERT(sc != NULL); switch(vtype){ case kCLOCK_VIEW_ANALOG: swapi_window_set_view(swapi_swap_get_window(sc->sc_swap), &sc->sc_cav.cav_view); break; case kCLOCK_VIEW_DIGITAL: swapi_window_set_view(swapi_swap_get_window(sc->sc_swap), &sc->sc_cdv); break; default: return; } sc->sc_vtype = vtype; clock_draw(sc); }
void clock_draw_cond() { if(timer%(CLOCK_PRESCALE)==0 && timer_counting) clock_draw(); }
void clock_reset() { clock_stop(); timer=0; clock_draw(); }
/********************************************************************** * Plugin starts here **********************************************************************/ enum plugin_status plugin_start(const void* parameter){ int button; int last_second = -1; bool redraw=true; struct time time; struct counter counter; bool exit_clock = false; (void)parameter; atexit(cleanup); #if LCD_DEPTH > 1 rb->lcd_set_backdrop(NULL); #endif load_settings(); /* init xlcd functions */ counter_init(&counter); clock_draw_set_colors(); while(!exit_clock){ clock_update_time(&time); if(!clock_settings.general.idle_poweroff) rb->reset_poweroff_timer(); /************************* * Scan for button presses ************************/ button = pluginlib_getaction(HZ/10, plugin_contexts, PLA_ARRAY_COUNT); redraw=true;/* we'll set it to false afterwards if there was no action */ switch (button){ case ACTION_COUNTER_TOGGLE: /* start/stop counter */ if(clock_settings.general.show_counter) counter_toggle(&counter); break; case ACTION_COUNTER_RESET: /* reset counter */ if(clock_settings.general.show_counter) counter_reset(&counter); break; case ACTION_MODE_NEXT_REPEAT: case ACTION_MODE_NEXT: clock_settings.mode++; if(clock_settings.mode >= NB_CLOCK_MODES) clock_settings.mode = 0; break; case ACTION_MODE_PREV_REPEAT: case ACTION_MODE_PREV: clock_settings.mode--; if(clock_settings.mode < 0) clock_settings.mode = NB_CLOCK_MODES-1; break; case ACTION_SKIN_PREV_REPEAT: case ACTION_SKIN_PREV: clock_settings_skin_next(&clock_settings); break; case ACTION_SKIN_NEXT_REPEAT: case ACTION_SKIN_NEXT: clock_settings_skin_previous(&clock_settings); break; case ACTION_MENU: clock_draw_restore_colors(); exit_clock=main_menu(); break; default: exit_on_usb(button); if(time.second != last_second){ last_second=time.second; redraw=true; }else redraw=false; break; } if(redraw){ clock_draw_set_colors(); FOR_NB_SCREENS(i) clock_draw(rb->screens[i], &time, &counter); redraw=false; } } return PLUGIN_OK; }