mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-30 02:32:46 +01:00
applet/swkbd: Implement optional symbol keys
These are only used in the numeric keyboard, and correspond to the keys to the left and right of the "0" key on the numeric keyboard.
This commit is contained in:
parent
97729fd8e9
commit
bee823db3a
5 changed files with 67 additions and 4 deletions
|
@ -17,6 +17,8 @@ struct KeyboardInitializeParameters {
|
||||||
std::u16string sub_text;
|
std::u16string sub_text;
|
||||||
std::u16string guide_text;
|
std::u16string guide_text;
|
||||||
std::u16string initial_text;
|
std::u16string initial_text;
|
||||||
|
char16_t left_optional_symbol_key;
|
||||||
|
char16_t right_optional_symbol_key;
|
||||||
u32 max_text_length;
|
u32 max_text_length;
|
||||||
u32 min_text_length;
|
u32 min_text_length;
|
||||||
s32 initial_cursor_position;
|
s32 initial_cursor_position;
|
||||||
|
|
|
@ -536,6 +536,8 @@ void SoftwareKeyboard::InitializeFrontendNormalKeyboard() {
|
||||||
.sub_text{std::move(sub_text)},
|
.sub_text{std::move(sub_text)},
|
||||||
.guide_text{std::move(guide_text)},
|
.guide_text{std::move(guide_text)},
|
||||||
.initial_text{initial_text},
|
.initial_text{initial_text},
|
||||||
|
.left_optional_symbol_key{swkbd_config_common.left_optional_symbol_key},
|
||||||
|
.right_optional_symbol_key{swkbd_config_common.right_optional_symbol_key},
|
||||||
.max_text_length{max_text_length},
|
.max_text_length{max_text_length},
|
||||||
.min_text_length{min_text_length},
|
.min_text_length{min_text_length},
|
||||||
.initial_cursor_position{initial_cursor_position},
|
.initial_cursor_position{initial_cursor_position},
|
||||||
|
@ -591,6 +593,8 @@ void SoftwareKeyboard::InitializeFrontendInlineKeyboardOld() {
|
||||||
.sub_text{},
|
.sub_text{},
|
||||||
.guide_text{},
|
.guide_text{},
|
||||||
.initial_text{current_text},
|
.initial_text{current_text},
|
||||||
|
.left_optional_symbol_key{appear_arg.left_optional_symbol_key},
|
||||||
|
.right_optional_symbol_key{appear_arg.right_optional_symbol_key},
|
||||||
.max_text_length{max_text_length},
|
.max_text_length{max_text_length},
|
||||||
.min_text_length{min_text_length},
|
.min_text_length{min_text_length},
|
||||||
.initial_cursor_position{initial_cursor_position},
|
.initial_cursor_position{initial_cursor_position},
|
||||||
|
@ -632,6 +636,8 @@ void SoftwareKeyboard::InitializeFrontendInlineKeyboardNew() {
|
||||||
.sub_text{},
|
.sub_text{},
|
||||||
.guide_text{},
|
.guide_text{},
|
||||||
.initial_text{current_text},
|
.initial_text{current_text},
|
||||||
|
.left_optional_symbol_key{appear_arg.left_optional_symbol_key},
|
||||||
|
.right_optional_symbol_key{appear_arg.right_optional_symbol_key},
|
||||||
.max_text_length{max_text_length},
|
.max_text_length{max_text_length},
|
||||||
.min_text_length{min_text_length},
|
.min_text_length{min_text_length},
|
||||||
.initial_cursor_position{initial_cursor_position},
|
.initial_cursor_position{initial_cursor_position},
|
||||||
|
|
|
@ -213,9 +213,9 @@ QtSoftwareKeyboardDialog::QtSoftwareKeyboardDialog(
|
||||||
ui->button_ok_num,
|
ui->button_ok_num,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nullptr,
|
ui->button_left_optional_num,
|
||||||
ui->button_0_num,
|
ui->button_0_num,
|
||||||
nullptr,
|
ui->button_right_optional_num,
|
||||||
ui->button_ok_num,
|
ui->button_ok_num,
|
||||||
},
|
},
|
||||||
}};
|
}};
|
||||||
|
@ -330,7 +330,9 @@ QtSoftwareKeyboardDialog::QtSoftwareKeyboardDialog(
|
||||||
ui->button_7_num,
|
ui->button_7_num,
|
||||||
ui->button_8_num,
|
ui->button_8_num,
|
||||||
ui->button_9_num,
|
ui->button_9_num,
|
||||||
|
ui->button_left_optional_num,
|
||||||
ui->button_0_num,
|
ui->button_0_num,
|
||||||
|
ui->button_right_optional_num,
|
||||||
};
|
};
|
||||||
|
|
||||||
SetupMouseHover();
|
SetupMouseHover();
|
||||||
|
@ -342,6 +344,9 @@ QtSoftwareKeyboardDialog::QtSoftwareKeyboardDialog(
|
||||||
ui->label_header->setText(QString::fromStdU16String(initialize_parameters.header_text));
|
ui->label_header->setText(QString::fromStdU16String(initialize_parameters.header_text));
|
||||||
ui->label_sub->setText(QString::fromStdU16String(initialize_parameters.sub_text));
|
ui->label_sub->setText(QString::fromStdU16String(initialize_parameters.sub_text));
|
||||||
|
|
||||||
|
ui->button_left_optional_num->setText(QChar{initialize_parameters.left_optional_symbol_key});
|
||||||
|
ui->button_right_optional_num->setText(QChar{initialize_parameters.right_optional_symbol_key});
|
||||||
|
|
||||||
current_text = initialize_parameters.initial_text;
|
current_text = initialize_parameters.initial_text;
|
||||||
cursor_position = initialize_parameters.initial_cursor_position;
|
cursor_position = initialize_parameters.initial_cursor_position;
|
||||||
|
|
||||||
|
@ -932,6 +937,15 @@ void QtSoftwareKeyboardDialog::DisableKeyboardButtons() {
|
||||||
button->setEnabled(true);
|
button->setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto enable_left_optional = initialize_parameters.left_optional_symbol_key != '\0';
|
||||||
|
const auto enable_right_optional = initialize_parameters.right_optional_symbol_key != '\0';
|
||||||
|
|
||||||
|
ui->button_left_optional_num->setEnabled(enable_left_optional);
|
||||||
|
ui->button_left_optional_num->setVisible(enable_left_optional);
|
||||||
|
|
||||||
|
ui->button_right_optional_num->setEnabled(enable_right_optional);
|
||||||
|
ui->button_right_optional_num->setVisible(enable_right_optional);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1019,7 +1033,10 @@ bool QtSoftwareKeyboardDialog::ValidateInputText(const QString& input_text) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bottom_osk_index == BottomOSKIndex::NumberPad &&
|
if (bottom_osk_index == BottomOSKIndex::NumberPad &&
|
||||||
std::any_of(input_text.begin(), input_text.end(), [](QChar c) { return !c.isDigit(); })) {
|
std::any_of(input_text.begin(), input_text.end(), [this](QChar c) {
|
||||||
|
return !c.isDigit() && c != QChar{initialize_parameters.left_optional_symbol_key} &&
|
||||||
|
c != QChar{initialize_parameters.right_optional_symbol_key};
|
||||||
|
})) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -211,7 +211,7 @@ private:
|
||||||
std::array<std::array<QPushButton*, NUM_COLUMNS_NUMPAD>, NUM_ROWS_NUMPAD> numberpad_buttons;
|
std::array<std::array<QPushButton*, NUM_COLUMNS_NUMPAD>, NUM_ROWS_NUMPAD> numberpad_buttons;
|
||||||
|
|
||||||
// Contains a set of all buttons used in keyboard_buttons and numberpad_buttons.
|
// Contains a set of all buttons used in keyboard_buttons and numberpad_buttons.
|
||||||
std::array<QPushButton*, 110> all_buttons;
|
std::array<QPushButton*, 112> all_buttons;
|
||||||
|
|
||||||
std::size_t row{0};
|
std::size_t row{0};
|
||||||
std::size_t column{0};
|
std::size_t column{0};
|
||||||
|
|
|
@ -3298,6 +3298,24 @@ p, li { white-space: pre-wrap; }
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="4" column="2">
|
||||||
|
<widget class="QPushButton" name="button_left_optional_num">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
<horstretch>1</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>28</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="4" column="3">
|
<item row="4" column="3">
|
||||||
<widget class="QPushButton" name="button_0_num">
|
<widget class="QPushButton" name="button_0_num">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
@ -3316,6 +3334,24 @@ p, li { white-space: pre-wrap; }
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="4" column="4">
|
||||||
|
<widget class="QPushButton" name="button_right_optional_num">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
<horstretch>1</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>28</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true"></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="1" column="4">
|
<item row="1" column="4">
|
||||||
<widget class="QPushButton" name="button_3_num">
|
<widget class="QPushButton" name="button_3_num">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
@ -3494,7 +3530,9 @@ p, li { white-space: pre-wrap; }
|
||||||
<tabstop>button_7_num</tabstop>
|
<tabstop>button_7_num</tabstop>
|
||||||
<tabstop>button_8_num</tabstop>
|
<tabstop>button_8_num</tabstop>
|
||||||
<tabstop>button_9_num</tabstop>
|
<tabstop>button_9_num</tabstop>
|
||||||
|
<tabstop>button_left_optional_num</tabstop>
|
||||||
<tabstop>button_0_num</tabstop>
|
<tabstop>button_0_num</tabstop>
|
||||||
|
<tabstop>button_right_optional_num</tabstop>
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../../dist/icons/overlay/overlay.qrc"/>
|
<include location="../../../dist/icons/overlay/overlay.qrc"/>
|
||||||
|
|
Loading…
Reference in a new issue