mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-15 07:51:19 +10:00
* Added keyboard option to menu. Shows a keyboard layout but does not type. * Keyboard types into text box and wraps. * send FreeText messages from the send submenu - renamed `KEYBOARD` action to `FREE_TEXT` and moved its menu location to the send submenu - opening the FreeText applet from the menu keeps the menu open and disabled the timeout - the FreeText applet writes to inkhud->freetext - the sending a canned message checks inkhud->freetext and if it isn't empty, sends and clears the inkhud->freetext * Text scrolls along with input * handle free text message completion as an event implements `handleFreeText` and `OnFreeText()` for system applets to interface with the FreeText Applet The FreeText Applet generates an `OnFreeText` event when completing a message which is handled by the first system applet with the `handleFreeText` flag set to true. The Menu Applet now handles this event. * call `onFreeText` whenever the FreeText Applet exits allows the menu to consistently restart its auto-close timeout * Add text cursor * Change UI to remove the header and make text box longer Keyboard displays captial letters for legibility Keyboard types captial letters with long press * center FreeText keys and draw symbolic buttons Move input field and keyboard drawing to their own functions: - `drawInputField()` - `drawKeyboard()` Store the keys in a 1-dimensional array Implement a matching array, `keyWidths`, to set key widths relative to the font size * Add character limit and counter * Fix softlock when hitting character limit * Move text box as its own menu page * rework FreeTextApplet into KeyboardApplet - The Keyboard Applet renders an on-screen keyboard at the lower portion of the screen. - Calling `inkhud->openKeyboard()` sends all the user applets to the background and resizes the first system applet with `handleFreeText` set to True to fit above the on-screen keyboard - `inkhud->closeKeyboard()` reverses this layout change * Fix input box rendering and add character limit to menu free text * remove FREE_TEXT menu page and use the FREE_TEXT menu action solely * force update when changing the free text message * reorganize KeyboardApplet - add comments after each row of `key[]` and `keyWidths[]` to preserve formatting - The selected key is now set using the key index directly - rowWidths are pre-calculated in the KeyboardApplet constructor - removed `drawKeyboard()` and implemented `drawKeyLabel()` * implement `Renderer::clearTile()` to clear the region below a tile * add parameter to forceUpdate() for re-rendering the full screen setting the `all` parameter to true in `inkhud->forceUpdate()` now causes the full screen buffer to clear an re-render. This is helpful for when sending applets to the background and the UI needs a clean canvas. System Applets can now set the `alwaysRender` flag true which causes it to re-render on every screen update. This is set to true in the Battery Icon Applet. * clean up tile clearing loops * implement dirty rendering to let applets draw over their previous render - `Applet::requestUpdate()` now has an optional flag to keep the old canvas - If honored, the renderer calls `render(true)` which runs `onDirtyRender()` instead of `onRender()` for said applet - The renderer will not call a dirty render if the full screen is getting re-rendered * simplify arithmetic in clearTile for better understanding * combine Applet::onRender() and Applet::onDirtyRender() into Applet::onRender(bool full) - add new `full` parameter to onRender() in every applet. This parameter can be ignored by most applets. - `Applet::requestUpdate()` has an optional flag that requests a full render by default * implement tile and partial rendering in KeyboardApplet * add comment for drawKeyLabel() * improve clarity of byte operations in clearTile() * remove typo and commented code * fix inaccurate comments * add null check to openKeyboard() and closeKeyboard() --------- Co-authored-by: zeropt <ferr0fluidmann@gmail.com> Co-authored-by: HarukiToreda <116696711+HarukiToreda@users.noreply.github.com>
122 lines
2.4 KiB
C++
122 lines
2.4 KiB
C++
#ifdef MESHTASTIC_INCLUDE_INKHUD
|
|
|
|
/*
|
|
|
|
Set of end-point actions for the Menu Applet
|
|
|
|
Added as menu entries in MenuApplet::showPage
|
|
Behaviors assigned in MenuApplet::execute
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "configuration.h"
|
|
|
|
namespace NicheGraphics::InkHUD
|
|
{
|
|
|
|
enum MenuAction {
|
|
NO_ACTION,
|
|
SEND_PING,
|
|
FREE_TEXT,
|
|
STORE_CANNEDMESSAGE_SELECTION,
|
|
SEND_CANNEDMESSAGE,
|
|
SHUTDOWN,
|
|
NEXT_TILE,
|
|
TOGGLE_BACKLIGHT,
|
|
TOGGLE_GPS,
|
|
ENABLE_BLUETOOTH,
|
|
TOGGLE_APPLET,
|
|
TOGGLE_AUTOSHOW_APPLET,
|
|
SET_RECENTS,
|
|
ROTATE,
|
|
ALIGN_JOYSTICK,
|
|
LAYOUT,
|
|
TOGGLE_BATTERY_ICON,
|
|
TOGGLE_NOTIFICATIONS,
|
|
TOGGLE_INVERT_COLOR,
|
|
TOGGLE_12H_CLOCK,
|
|
// Regions
|
|
SET_REGION_US,
|
|
SET_REGION_EU_868,
|
|
SET_REGION_EU_433,
|
|
SET_REGION_CN,
|
|
SET_REGION_JP,
|
|
SET_REGION_ANZ,
|
|
SET_REGION_KR,
|
|
SET_REGION_TW,
|
|
SET_REGION_RU,
|
|
SET_REGION_IN,
|
|
SET_REGION_NZ_865,
|
|
SET_REGION_TH,
|
|
SET_REGION_LORA_24,
|
|
SET_REGION_UA_433,
|
|
SET_REGION_UA_868,
|
|
SET_REGION_MY_433,
|
|
SET_REGION_MY_919,
|
|
SET_REGION_SG_923,
|
|
SET_REGION_PH_433,
|
|
SET_REGION_PH_868,
|
|
SET_REGION_PH_915,
|
|
SET_REGION_ANZ_433,
|
|
SET_REGION_KZ_433,
|
|
SET_REGION_KZ_863,
|
|
SET_REGION_NP_865,
|
|
SET_REGION_BR_902,
|
|
// Device Roles
|
|
SET_ROLE_CLIENT,
|
|
SET_ROLE_CLIENT_MUTE,
|
|
SET_ROLE_ROUTER,
|
|
SET_ROLE_REPEATER,
|
|
// Presets
|
|
SET_PRESET_LONG_SLOW,
|
|
SET_PRESET_LONG_MODERATE,
|
|
SET_PRESET_LONG_FAST,
|
|
SET_PRESET_MEDIUM_SLOW,
|
|
SET_PRESET_MEDIUM_FAST,
|
|
SET_PRESET_SHORT_SLOW,
|
|
SET_PRESET_SHORT_FAST,
|
|
SET_PRESET_SHORT_TURBO,
|
|
// Timezones
|
|
SET_TZ_US_HAWAII,
|
|
SET_TZ_US_ALASKA,
|
|
SET_TZ_US_PACIFIC,
|
|
SET_TZ_US_ARIZONA,
|
|
SET_TZ_US_MOUNTAIN,
|
|
SET_TZ_US_CENTRAL,
|
|
SET_TZ_US_EASTERN,
|
|
SET_TZ_BR_BRAZILIA,
|
|
SET_TZ_UTC,
|
|
SET_TZ_EU_WESTERN,
|
|
SET_TZ_EU_CENTRAL,
|
|
SET_TZ_EU_EASTERN,
|
|
SET_TZ_ASIA_KOLKATA,
|
|
SET_TZ_ASIA_HONG_KONG,
|
|
SET_TZ_AU_AWST,
|
|
SET_TZ_AU_ACST,
|
|
SET_TZ_AU_AEST,
|
|
SET_TZ_PACIFIC_NZ,
|
|
// Power
|
|
TOGGLE_POWER_SAVE,
|
|
CALIBRATE_ADC,
|
|
// Bluetooth
|
|
TOGGLE_BLUETOOTH,
|
|
TOGGLE_BLUETOOTH_PAIR_MODE,
|
|
// Channel
|
|
TOGGLE_CHANNEL_UPLINK,
|
|
TOGGLE_CHANNEL_DOWNLINK,
|
|
TOGGLE_CHANNEL_POSITION,
|
|
SET_CHANNEL_PRECISION,
|
|
// Display
|
|
TOGGLE_DISPLAY_UNITS,
|
|
// Network
|
|
TOGGLE_WIFI,
|
|
// Administration
|
|
RESET_NODEDB_ALL,
|
|
RESET_NODEDB_KEEP_FAVORITES,
|
|
};
|
|
|
|
} // namespace NicheGraphics::InkHUD
|
|
|
|
#endif |