/** * @brief Handles the given user command * * This handles the given user command (user_command_t) either by processing * it directly, or by passing it over to the actual handler using * UserState_HandleUserCommand(). * * g_eepromSaveDelay and g_checkIfAutoOffDelay get reset every time this * function is called to make sure the appropriate functionality works as * intended. * * @param user_command The user command that should be handled * * @see UserState_HandleUserCommand() * @see g_eepromSaveDelay * @see g_checkIfAutoOffDelay */ void handle_user_command(user_command_t user_command) { if (UC_ONOFF == user_command) { log_state("OF\n"); if (user_power_state < UPS_AUTO_OFF) { user_power_state = UPS_MANUAL_OFF; pwm_off(); } else { if (user_power_state == UPS_MANUAL_OFF) { user_power_state = UPS_NORMAL_ON; } else { user_power_state = UPS_OVERRIDE_ON; } pwm_on(); user_setNewTime(NULL); } preferences_save(); } else { int8_t i; bool handled = false; for (i = g_topOfStack - 1; i >= 0 && !handled; --i) { handled |= UserState_HandleUserCommand(g_stateStack[i], user_command); } if (!handled) { if (UC_BRIGHTNESS_UP == user_command) { log_state("B+\n"); pwm_increase_brightness(); } else if (UC_BRIGHTNESS_DOWN == user_command) { log_state("B-\n"); pwm_decrease_brightness(); } else if (UC_NORMAL_MODE == user_command) { addSubState(-1, MS_normalMode, (void*)1); } else if (UC_SET_TIME == user_command) { addState(MS_setSystemTime, NULL); } else if (UC_SET_ONOFF_TIMES == user_command) { addState(MS_setOnOffTime, NULL); } else if (UC_DEMO_MODE == user_command) { menu_state_t curTop = user_get_current_menu_state(); log_state("BS\n"); if (MS_demoMode == curTop) { quitMyself(MS_demoMode, NULL); } else { addState(MS_demoMode, NULL); } } else if (UC_CALIB_BRIGHTNESS == user_command) { pwm_modifyLdrBrightness2pwmStep(); // Indicate the change to user if (pwm_is_enabled()) { pwm_off(); _delay_ms(USER_VISUAL_INDICATION_TOGGLE_MS); pwm_on(); } } else if (UC_PULSE_MODE == user_command) { menu_state_t curTop = user_get_current_menu_state(); log_state("PLS\n"); if (MS_pulse == curTop) { leaveSubState(g_topOfStack - 1); } else { if ((MS_normalMode == curTop) #if (ENABLE_RGB_SUPPORT == 1) || (MS_hueMode == curTop) #endif ) { addState(MS_pulse, NULL); } } DISPLAY_SPECIAL_USER_COMMANDS_HANDLER #if (ENABLE_RGB_SUPPORT == 1) } else if (UC_HUE_MODE == user_command) { log_state("HM"); addSubState(-1, MS_hueMode, NULL); #endif #if (ENABLE_DCF_SUPPORT == 1) } else if (UC_DCF_GET_TIME == user_command) { log_state("DCF\n"); dcf77_enable(); #endif #if (ENABLE_AMBILIGHT_SUPPORT == 1) } else if (UC_AMBILIGHT == user_command) { log_state("AL\n"); PIN(USER_AMBILIGHT) |= _BV(BIT(USER_AMBILIGHT)); #endif #if (ENABLE_BLUETOOTH_SUPPORT == 1) } else if (UC_BLUETOOTH == user_command) { log_state("BT\n"); PIN(USER_BLUETOOTH) |= _BV(BIT(USER_BLUETOOTH)); #endif #if (ENABLE_AUXPOWER_SUPPORT == 1) } else if (UC_AUXPOWER == user_command) { log_state("AUX\n"); PIN(USER_AUXPOWER) |= _BV(BIT(USER_AUXPOWER)); #endif } else { return; } }
void handle_apply (GtkWidget *propertybox, gint page_num, gpointer data) { GtkWidget *radio_keyboard; GtkWidget *radio_mouse; GtkWidget *check_hide_cursor; GtkWidget *check_lazy_dragging; GtkWidget *check_score_time; GtkWidget *scroll_sensitivity; GtkAdjustment *adjustment; if (page_num == 0 /* general */ ) { /* get widgets */ check_score_time = glade_xml_get_widget (pref_xml, "check_score_time"); /* set new values */ preferences->score_time_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_score_time)); } else if (page_num == 1 /* control */ ) { /* get widgets */ radio_keyboard = glade_xml_get_widget (pref_xml, "radio_keyboard"); radio_mouse = glade_xml_get_widget (pref_xml, "radio_mouse"); check_hide_cursor = glade_xml_get_widget (pref_xml, "check_hide_cursor"); check_lazy_dragging = glade_xml_get_widget (pref_xml, "check_lazy_dragging"); scroll_sensitivity = glade_xml_get_widget (pref_xml, "scroll_sensitivity"); adjustment = gtk_range_get_adjustment (GTK_RANGE (scroll_sensitivity)); /* switch keyboard/mouse control if neccessary */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radio_mouse))) { if (!preferences->mouse_control) { board_set_mouse_control (); } } else { if (!preferences->keyboard_control) { board_set_keyboard_control (); } } /* set new values */ preferences->mouse_control = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radio_mouse)); preferences->keyboard_control = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radio_keyboard)); preferences->hide_cursor = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_hide_cursor)); preferences->lazy_dragging = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_lazy_dragging)); preferences->mouse_sensitivity = (gint) (adjustment->value * 2); } else if (page_num == -1 /* all */ ) { /* save preferences */ preferences_save (); } }