#include #include #include /// input mode strings - as these are stored in json (in files...) const std::map input_mode = { {InputMode::digit, "numeric"}, {InputMode::ABC, "common_kbd_upper"}, {InputMode::abc, "common_kbd_lower"}, }; InputMode::InputMode(std::list mode_list , std::function show_type_cb , std::function show_special_char_selector , const UTF8 &prev_text ) : input_mode_list(mode_list), show_type_cb(show_type_cb), show_special_char_selector(show_special_char_selector) { // failsafe if(input_mode_list.size() == 0) { input_mode_list.push_back(Mode::digit); } } InputMode::Mode InputMode::modeNow() { return *std::next(input_mode_list.begin(),input_mode_list_pos); } /// sets next selected mode using Application pointer void InputMode::next() { ++input_mode_list_pos; if (input_mode_list_pos == input_mode_list.size()) { input_mode_list_pos = 0; } LOG_INFO("%d",input_mode_list_pos); show_input_type(); } const std::string& InputMode::get() { return utils::localize.get(input_mode.at(modeNow())); } void InputMode::show_input_type() { LOG_INFO("Mode: %d", modeNow()); if(show_type_cb) { show_type_cb(modeNow()==Mode::ABC?"ABC":"abc"); } } void InputMode::show_restore() { if(show_type_cb) { show_type_cb(restore_text); } } void InputMode::select_special_char() { LOG_INFO("Special character selector"); if(show_special_char_selector) { show_special_char_selector(); } }