void draw(struct screen * display) { char info[128]; display->clear_display(); int secs = rem_seconds(); if (waiting) rb->snprintf(info, sizeof(info), "Next alarm in %02dh," " %02dmn, and %02ds.", secs / 3600, (secs / 60) % 60, secs % 60); else { if (current == 0) rb->snprintf(info, sizeof(info), "Set alarm at [%02d]:%02d.", alarm[0], alarm[1]); else rb->snprintf(info, sizeof(info), "Set alarm at %02d:[%02d].", alarm[0], alarm[1]); } draw_centered_string(display, info); }
enum plugin_status plugin_start(const void* parameter) { int button; int i; (void)parameter; if (!can_play()) { rb->splash(4*HZ, "No track to resume! This plugin will resume a track " "at a specific time. Therefore, you need to first play" " one, and then pause it and start the plugin again."); quit = true; } while(!quit) { button = get_button(); if (button == PLA_EXIT || button == PLA_CANCEL) quit = true; FOR_NB_SCREENS(i) { draw(rb->screens[i]); } if (waiting) { if (rem_seconds() <= 0) { quit = done = true; play(); } } else { switch (button) { case PLA_UP: case PLA_UP_REPEAT: #ifdef HAVE_SCROLLWHEEL case PLA_SCROLL_FWD: case PLA_SCROLL_FWD_REPEAT: #endif alarm[current] = (alarm[current] + 1) % maxval[current]; break; case PLA_DOWN: case PLA_DOWN_REPEAT: #ifdef HAVE_SCROLLWHEEL case PLA_SCROLL_BACK: case PLA_SCROLL_BACK_REPEAT: #endif alarm[current] = (alarm[current] + maxval[current] - 1) % maxval[current]; break; case PLA_LEFT: case PLA_LEFT_REPEAT: case PLA_RIGHT: case PLA_RIGHT_REPEAT: current = (current + 1) % 2; break; case PLA_SELECT: case PLA_SELECT_REPEAT: { if (rem_seconds() < 0) tomorrow = true; waiting = true; break; } default: if (rb->default_event_handler(button) == SYS_USB_CONNECTED) quit = usb = true; break; } } } return (usb) ? PLUGIN_USB_CONNECTED : (done ? PLUGIN_GOTO_WPS : PLUGIN_OK); }
enum plugin_status plugin_start(const void* parameter) { int button; int i; (void)parameter; if (!can_play()) { rb->splash(HZ*2, "No track to resume! " "Play or pause one first."); return PLUGIN_ERROR; } pause(); while(!quit) { button = get_button(); if (button == PLA_EXIT || button == PLA_CANCEL) quit = true; FOR_NB_SCREENS(i) { draw(rb->screens[i]); } if (waiting) { if (rem_seconds() <= 0) { quit = done = true; play(); } } else { switch (button) { case PLA_UP: case PLA_UP_REPEAT: #ifdef HAVE_SCROLLWHEEL case PLA_SCROLL_FWD: case PLA_SCROLL_FWD_REPEAT: #endif alarm[current] = (alarm[current] + 1) % maxval[current]; break; case PLA_DOWN: case PLA_DOWN_REPEAT: #ifdef HAVE_SCROLLWHEEL case PLA_SCROLL_BACK: case PLA_SCROLL_BACK_REPEAT: #endif alarm[current] = (alarm[current] + maxval[current] - 1) % maxval[current]; break; case PLA_LEFT: case PLA_LEFT_REPEAT: case PLA_RIGHT: case PLA_RIGHT_REPEAT: current = (current + 1) % 2; break; case PLA_SELECT: case PLA_SELECT_REPEAT: { if (rem_seconds() < 0) tomorrow = true; waiting = true; break; } default: if (rb->default_event_handler(button) == SYS_USB_CONNECTED) quit = usb = true; break; } } } return (usb) ? PLUGIN_USB_CONNECTED : (done ? PLUGIN_GOTO_WPS : PLUGIN_OK); }