swkbd: Fix several swkbd enums and structs (#549)

* swkbd: Provide more accurate SwkbdInline State descriptions

* swkbd: Correct stringLenMaxExt to stringLenMin

* swkbd: Add setters for stringLenMax/Min in SwkbdAppearArg
This commit is contained in:
Morph 2021-05-10 12:16:40 -04:00 committed by GitHub
parent e2c3ae8e44
commit 08e2b2d945
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 17 deletions

View File

@ -84,10 +84,10 @@ typedef enum {
/// SwkbdInline State /// SwkbdInline State
typedef enum { typedef enum {
SwkbdState_Inactive = 0x0, ///< Default state from \ref swkbdInlineCreate, before a state is set by \ref swkbdInlineUpdate when a reply is received. Also indicates that the applet is no longer running. SwkbdState_Inactive = 0x0, ///< Default state from \ref swkbdInlineCreate, before a state is set by \ref swkbdInlineUpdate when a reply is received. Also indicates that the applet is no longer running.
SwkbdState_Initialized = 0x1, ///< Applet is initialized. SwkbdState_Initialized = 0x1, ///< Applet is initialized but hidden.
SwkbdState_Unknown2 = 0x2, SwkbdState_Appearing = 0x2, ///< Applet is appearing.
SwkbdState_TextAvailable = 0x3, ///< Text is available since a ChangedString* reply was received. SwkbdState_Shown = 0x3, ///< Applet is fully shown and ready to accept text input.
SwkbdState_Submitted = 0x4, ///< The user pressed the ok-button, submitting the text and closing the applet. SwkbdState_Disappearing = 0x4, ///< The user pressed the ok or cancel button, causing the applet to disappear.
SwkbdState_Unknown5 = 0x5, SwkbdState_Unknown5 = 0x5,
SwkbdState_Unknown6 = 0x6, SwkbdState_Unknown6 = 0x6,
} SwkbdState; } SwkbdState;
@ -133,7 +133,7 @@ typedef struct {
u16 guideText[514/2]; u16 guideText[514/2];
u16 pad_x3aa; u16 pad_x3aa;
u32 stringLenMax; ///< When non-zero, specifies the max string length. When the input is too long, swkbd will stop accepting more input until text is deleted via the B button (Backspace). See also \ref SwkbdTextDrawType. u32 stringLenMax; ///< When non-zero, specifies the max string length. When the input is too long, swkbd will stop accepting more input until text is deleted via the B button (Backspace). See also \ref SwkbdTextDrawType.
u32 stringLenMaxExt; ///< When non-zero, specifies the max string length. When the input is too long, swkbd will display an icon and disable the ok-button. u32 stringLenMin; ///< When non-zero, specifies the min string length. When the input is too short, swkbd will display an icon and disable the ok-button.
u32 passwordFlag; ///< Use password: 0 = disable, 1 = enable. u32 passwordFlag; ///< Use password: 0 = disable, 1 = enable.
SwkbdTextDrawType textDrawType; ///< See \ref SwkbdTextDrawType. SwkbdTextDrawType textDrawType; ///< See \ref SwkbdTextDrawType.
u16 returnButtonFlag; ///< Controls whether the Return button is enabled, for newlines input. 0 = disabled, non-zero = enabled. u16 returnButtonFlag; ///< Controls whether the Return button is enabled, for newlines input. 0 = disabled, non-zero = enabled.
@ -210,8 +210,8 @@ typedef struct {
u8 dicFlag; ///< Enables dictionary usage when non-zero (including the system dictionary). u8 dicFlag; ///< Enables dictionary usage when non-zero (including the system dictionary).
u8 unk_x1b; u8 unk_x1b;
u32 keySetDisableBitmask; ///< See SwkbdKeyDisableBitmask_*. u32 keySetDisableBitmask; ///< See SwkbdKeyDisableBitmask_*.
s32 unk_x20; s32 stringLenMax; ///< When non-negative and non-zero, specifies the max string length. When the input is too long, swkbd will stop accepting more input until text is deleted via the B button (Backspace).
s32 unk_x24; s32 stringLenMin; ///< When non-negative and non-zero, specifies the min string length. When the input is too short, swkbd will display an icon and disable the ok-button.
u8 returnButtonFlag; ///< Controls whether the Return button is enabled, for newlines input. 0 = disabled, non-zero = enabled. u8 returnButtonFlag; ///< Controls whether the Return button is enabled, for newlines input. 0 = disabled, non-zero = enabled.
u8 unk_x29; ///< [10.0.0+] When value 1-2, \ref swkbdInlineAppear / \ref swkbdInlineAppearEx will set keytopAsFloating=0 and footerScalable=1. u8 unk_x29; ///< [10.0.0+] When value 1-2, \ref swkbdInlineAppear / \ref swkbdInlineAppearEx will set keytopAsFloating=0 and footerScalable=1.
u8 unk_x2a; u8 unk_x2a;
@ -381,7 +381,7 @@ void swkbdConfigMakePresetUserName(SwkbdConfig* c);
/** /**
* @brief Clears the args in the SwkbdConfig struct and initializes it with the DownloadCode Preset. * @brief Clears the args in the SwkbdConfig struct and initializes it with the DownloadCode Preset.
* @note Do not use this before \ref swkbdCreate. * @note Do not use this before \ref swkbdCreate.
* @note Uses the following: swkbdConfigSetType() with \ref SwkbdType_Normal (\ref SwkbdType_QWERTY on [5.0.0+]), swkbdConfigSetKeySetDisableBitmask() with SwkbdKeyDisableBitmask_DownloadCode, swkbdConfigSetInitialCursorPos() with value 1, and swkbdConfigSetBlurBackground() with value 1. [5.0.0+]: swkbdConfigSetStringLenMax() with value 16, swkbdConfigSetStringLenMaxExt() with value 1, and swkbdConfigSetTextDrawType() with SwkbdTextDrawType_DownloadCode. Uses swkbdConfigSetTextGrouping() for [0-2] with: 0x3, 0x7, and 0xb. * @note Uses the following: swkbdConfigSetType() with \ref SwkbdType_Normal (\ref SwkbdType_QWERTY on [5.0.0+]), swkbdConfigSetKeySetDisableBitmask() with SwkbdKeyDisableBitmask_DownloadCode, swkbdConfigSetInitialCursorPos() with value 1, and swkbdConfigSetBlurBackground() with value 1. [5.0.0+]: swkbdConfigSetStringLenMax() with value 16, swkbdConfigSetStringLenMin() with value 1, and swkbdConfigSetTextDrawType() with SwkbdTextDrawType_DownloadCode. Uses swkbdConfigSetTextGrouping() for [0-2] with: 0x3, 0x7, and 0xb.
* @param c SwkbdConfig struct. * @param c SwkbdConfig struct.
*/ */
void swkbdConfigMakePresetDownloadCode(SwkbdConfig* c); void swkbdConfigMakePresetDownloadCode(SwkbdConfig* c);
@ -507,12 +507,12 @@ static inline void swkbdConfigSetStringLenMax(SwkbdConfig* c, u32 stringLenMax)
} }
/** /**
* @brief Sets SwkbdArgCommon::stringLenMaxExt. * @brief Sets SwkbdArgCommon::stringLenMin.
* @param c SwkbdConfig struct. * @param c SwkbdConfig struct.
* @param stringLenMaxExt stringLenMaxExt * @param stringLenMin stringLenMin
*/ */
static inline void swkbdConfigSetStringLenMaxExt(SwkbdConfig* c, u32 stringLenMaxExt) { static inline void swkbdConfigSetStringLenMin(SwkbdConfig* c, u32 stringLenMin) {
c->arg.arg.arg.stringLenMaxExt = stringLenMaxExt; c->arg.arg.arg.stringLenMin = stringLenMin;
} }
/** /**
@ -805,6 +805,24 @@ void swkbdInlineAppearArgSetLeftButtonText(SwkbdAppearArg* arg, const char* str)
*/ */
void swkbdInlineAppearArgSetRightButtonText(SwkbdAppearArg* arg, const char* str); void swkbdInlineAppearArgSetRightButtonText(SwkbdAppearArg* arg, const char* str);
/**
* @brief Sets the stringLenMax for the specified SwkbdAppearArg, which was previously initialized with \ref swkbdInlineMakeAppearArg.
* @param arg \ref SwkbdAppearArg
* @param stringLenMax Max string length
*/
static inline void swkbdInlineAppearArgSetStringLenMax(SwkbdAppearArg* arg, s32 stringLenMax) {
arg->stringLenMax = stringLenMax;
}
/**
* @brief Sets the stringLenMin for the specified SwkbdAppearArg, which was previously initialized with \ref swkbdInlineMakeAppearArg.
* @param arg \ref SwkbdAppearArg
* @param stringLenMin Min string length
*/
static inline void swkbdInlineAppearArgSetStringLenMin(SwkbdAppearArg* arg, s32 stringLenMin) {
arg->stringLenMin = stringLenMin;
}
/** /**
* @brief Sets the audio volume. * @brief Sets the audio volume.
* @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect. * @note \ref swkbdInlineUpdate must be called at some point afterwards for this to take affect.

View File

@ -136,7 +136,7 @@ void swkbdConfigMakePresetDownloadCode(SwkbdConfig* c) {
swkbdConfigSetType(c, SwkbdType_QWERTY); swkbdConfigSetType(c, SwkbdType_QWERTY);
swkbdConfigSetStringLenMax(c, 16); swkbdConfigSetStringLenMax(c, 16);
swkbdConfigSetStringLenMaxExt(c, 1); swkbdConfigSetStringLenMin(c, 1);
swkbdConfigSetTextDrawType(c, SwkbdTextDrawType_DownloadCode); swkbdConfigSetTextDrawType(c, SwkbdTextDrawType_DownloadCode);
} }
@ -393,8 +393,8 @@ Result swkbdInlineCreate(SwkbdInline* s) {
s->calcArg.appearArg.type = SwkbdType_QWERTY; s->calcArg.appearArg.type = SwkbdType_QWERTY;
s->calcArg.unk_x6 = 1; s->calcArg.unk_x6 = 1;
s->calcArg.unk_x7 = 1; s->calcArg.unk_x7 = 1;
s->calcArg.appearArg.unk_x20 = -1; s->calcArg.appearArg.stringLenMax = -1;
s->calcArg.appearArg.unk_x24 = -1; s->calcArg.appearArg.stringLenMin = -1;
s->calcArg.appearArg.unk_x30 = 1; s->calcArg.appearArg.unk_x30 = 1;
s->calcArg.enableBackspace = 1; s->calcArg.enableBackspace = 1;
@ -896,8 +896,8 @@ void swkbdInlineDisappear(SwkbdInline* s) {
void swkbdInlineMakeAppearArg(SwkbdAppearArg* arg, SwkbdType type) { void swkbdInlineMakeAppearArg(SwkbdAppearArg* arg, SwkbdType type) {
memset(arg, 0, sizeof(SwkbdAppearArg)); memset(arg, 0, sizeof(SwkbdAppearArg));
arg->unk_x20 = -1; arg->stringLenMax = -1;
arg->unk_x24 = -1; arg->stringLenMin = -1;
arg->unk_x30 = 1; arg->unk_x30 = 1;
arg->type = type; arg->type = type;
} }