summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Morph2022-07-24 07:21:02 -0400
committerGravatar Morph2022-07-24 07:21:02 -0400
commitbee823db3a4c464cea910c7db7f208ab7f64030f (patch)
tree302c3784cebbe6851049baafd4d8f615b872f100 /src
parentMerge pull request #8545 from Kelebek1/Audio (diff)
downloadyuzu-bee823db3a4c464cea910c7db7f208ab7f64030f.tar.gz
yuzu-bee823db3a4c464cea910c7db7f208ab7f64030f.tar.xz
yuzu-bee823db3a4c464cea910c7db7f208ab7f64030f.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/core/frontend/applets/software_keyboard.h2
-rw-r--r--src/core/hle/service/am/applets/applet_software_keyboard.cpp6
-rw-r--r--src/yuzu/applets/qt_software_keyboard.cpp23
-rw-r--r--src/yuzu/applets/qt_software_keyboard.h2
-rw-r--r--src/yuzu/applets/qt_software_keyboard.ui38
5 files changed, 67 insertions, 4 deletions
diff --git a/src/core/frontend/applets/software_keyboard.h b/src/core/frontend/applets/software_keyboard.h
index a405e3c94..094d1e713 100644
--- a/src/core/frontend/applets/software_keyboard.h
+++ b/src/core/frontend/applets/software_keyboard.h
@@ -17,6 +17,8 @@ struct KeyboardInitializeParameters {
17 std::u16string sub_text; 17 std::u16string sub_text;
18 std::u16string guide_text; 18 std::u16string guide_text;
19 std::u16string initial_text; 19 std::u16string initial_text;
20 char16_t left_optional_symbol_key;
21 char16_t right_optional_symbol_key;
20 u32 max_text_length; 22 u32 max_text_length;
21 u32 min_text_length; 23 u32 min_text_length;
22 s32 initial_cursor_position; 24 s32 initial_cursor_position;
diff --git a/src/core/hle/service/am/applets/applet_software_keyboard.cpp b/src/core/hle/service/am/applets/applet_software_keyboard.cpp
index faa092957..c18236045 100644
--- a/src/core/hle/service/am/applets/applet_software_keyboard.cpp
+++ b/src/core/hle/service/am/applets/applet_software_keyboard.cpp
@@ -536,6 +536,8 @@ void SoftwareKeyboard::InitializeFrontendNormalKeyboard() {
536 .sub_text{std::move(sub_text)}, 536 .sub_text{std::move(sub_text)},
537 .guide_text{std::move(guide_text)}, 537 .guide_text{std::move(guide_text)},
538 .initial_text{initial_text}, 538 .initial_text{initial_text},
539 .left_optional_symbol_key{swkbd_config_common.left_optional_symbol_key},
540 .right_optional_symbol_key{swkbd_config_common.right_optional_symbol_key},
539 .max_text_length{max_text_length}, 541 .max_text_length{max_text_length},
540 .min_text_length{min_text_length}, 542 .min_text_length{min_text_length},
541 .initial_cursor_position{initial_cursor_position}, 543 .initial_cursor_position{initial_cursor_position},
@@ -591,6 +593,8 @@ void SoftwareKeyboard::InitializeFrontendInlineKeyboardOld() {
591 .sub_text{}, 593 .sub_text{},
592 .guide_text{}, 594 .guide_text{},
593 .initial_text{current_text}, 595 .initial_text{current_text},
596 .left_optional_symbol_key{appear_arg.left_optional_symbol_key},
597 .right_optional_symbol_key{appear_arg.right_optional_symbol_key},
594 .max_text_length{max_text_length}, 598 .max_text_length{max_text_length},
595 .min_text_length{min_text_length}, 599 .min_text_length{min_text_length},
596 .initial_cursor_position{initial_cursor_position}, 600 .initial_cursor_position{initial_cursor_position},
@@ -632,6 +636,8 @@ void SoftwareKeyboard::InitializeFrontendInlineKeyboardNew() {
632 .sub_text{}, 636 .sub_text{},
633 .guide_text{}, 637 .guide_text{},
634 .initial_text{current_text}, 638 .initial_text{current_text},
639 .left_optional_symbol_key{appear_arg.left_optional_symbol_key},
640 .right_optional_symbol_key{appear_arg.right_optional_symbol_key},
635 .max_text_length{max_text_length}, 641 .max_text_length{max_text_length},
636 .min_text_length{min_text_length}, 642 .min_text_length{min_text_length},
637 .initial_cursor_position{initial_cursor_position}, 643 .initial_cursor_position{initial_cursor_position},
diff --git a/src/yuzu/applets/qt_software_keyboard.cpp b/src/yuzu/applets/qt_software_keyboard.cpp
index e8b217d90..91dca2760 100644
--- a/src/yuzu/applets/qt_software_keyboard.cpp
+++ b/src/yuzu/applets/qt_software_keyboard.cpp
@@ -213,9 +213,9 @@ QtSoftwareKeyboardDialog::QtSoftwareKeyboardDialog(
213 ui->button_ok_num, 213 ui->button_ok_num,
214 }, 214 },
215 { 215 {
216 nullptr, 216 ui->button_left_optional_num,
217 ui->button_0_num, 217 ui->button_0_num,
218 nullptr, 218 ui->button_right_optional_num,
219 ui->button_ok_num, 219 ui->button_ok_num,
220 }, 220 },
221 }}; 221 }};
@@ -330,7 +330,9 @@ QtSoftwareKeyboardDialog::QtSoftwareKeyboardDialog(
330 ui->button_7_num, 330 ui->button_7_num,
331 ui->button_8_num, 331 ui->button_8_num,
332 ui->button_9_num, 332 ui->button_9_num,
333 ui->button_left_optional_num,
333 ui->button_0_num, 334 ui->button_0_num,
335 ui->button_right_optional_num,
334 }; 336 };
335 337
336 SetupMouseHover(); 338 SetupMouseHover();
@@ -342,6 +344,9 @@ QtSoftwareKeyboardDialog::QtSoftwareKeyboardDialog(
342 ui->label_header->setText(QString::fromStdU16String(initialize_parameters.header_text)); 344 ui->label_header->setText(QString::fromStdU16String(initialize_parameters.header_text));
343 ui->label_sub->setText(QString::fromStdU16String(initialize_parameters.sub_text)); 345 ui->label_sub->setText(QString::fromStdU16String(initialize_parameters.sub_text));
344 346
347 ui->button_left_optional_num->setText(QChar{initialize_parameters.left_optional_symbol_key});
348 ui->button_right_optional_num->setText(QChar{initialize_parameters.right_optional_symbol_key});
349
345 current_text = initialize_parameters.initial_text; 350 current_text = initialize_parameters.initial_text;
346 cursor_position = initialize_parameters.initial_cursor_position; 351 cursor_position = initialize_parameters.initial_cursor_position;
347 352
@@ -932,6 +937,15 @@ void QtSoftwareKeyboardDialog::DisableKeyboardButtons() {
932 button->setEnabled(true); 937 button->setEnabled(true);
933 } 938 }
934 } 939 }
940
941 const auto enable_left_optional = initialize_parameters.left_optional_symbol_key != '\0';
942 const auto enable_right_optional = initialize_parameters.right_optional_symbol_key != '\0';
943
944 ui->button_left_optional_num->setEnabled(enable_left_optional);
945 ui->button_left_optional_num->setVisible(enable_left_optional);
946
947 ui->button_right_optional_num->setEnabled(enable_right_optional);
948 ui->button_right_optional_num->setVisible(enable_right_optional);
935 break; 949 break;
936 } 950 }
937 } 951 }
@@ -1019,7 +1033,10 @@ bool QtSoftwareKeyboardDialog::ValidateInputText(const QString& input_text) {
1019 } 1033 }
1020 1034
1021 if (bottom_osk_index == BottomOSKIndex::NumberPad && 1035 if (bottom_osk_index == BottomOSKIndex::NumberPad &&
1022 std::any_of(input_text.begin(), input_text.end(), [](QChar c) { return !c.isDigit(); })) { 1036 std::any_of(input_text.begin(), input_text.end(), [this](QChar c) {
1037 return !c.isDigit() && c != QChar{initialize_parameters.left_optional_symbol_key} &&
1038 c != QChar{initialize_parameters.right_optional_symbol_key};
1039 })) {
1023 return false; 1040 return false;
1024 } 1041 }
1025 1042
diff --git a/src/yuzu/applets/qt_software_keyboard.h b/src/yuzu/applets/qt_software_keyboard.h
index 1c489fbb6..35d4ee2ef 100644
--- a/src/yuzu/applets/qt_software_keyboard.h
+++ b/src/yuzu/applets/qt_software_keyboard.h
@@ -211,7 +211,7 @@ private:
211 std::array<std::array<QPushButton*, NUM_COLUMNS_NUMPAD>, NUM_ROWS_NUMPAD> numberpad_buttons; 211 std::array<std::array<QPushButton*, NUM_COLUMNS_NUMPAD>, NUM_ROWS_NUMPAD> numberpad_buttons;
212 212
213 // Contains a set of all buttons used in keyboard_buttons and numberpad_buttons. 213 // Contains a set of all buttons used in keyboard_buttons and numberpad_buttons.
214 std::array<QPushButton*, 110> all_buttons; 214 std::array<QPushButton*, 112> all_buttons;
215 215
216 std::size_t row{0}; 216 std::size_t row{0};
217 std::size_t column{0}; 217 std::size_t column{0};
diff --git a/src/yuzu/applets/qt_software_keyboard.ui b/src/yuzu/applets/qt_software_keyboard.ui
index b0a1fcde9..9661cb260 100644
--- a/src/yuzu/applets/qt_software_keyboard.ui
+++ b/src/yuzu/applets/qt_software_keyboard.ui
@@ -3298,6 +3298,24 @@ p, li { white-space: pre-wrap; }
3298 </property> 3298 </property>
3299 </widget> 3299 </widget>
3300 </item> 3300 </item>
3301 <item row="4" column="2">
3302 <widget class="QPushButton" name="button_left_optional_num">
3303 <property name="sizePolicy">
3304 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
3305 <horstretch>1</horstretch>
3306 <verstretch>1</verstretch>
3307 </sizepolicy>
3308 </property>
3309 <property name="font">
3310 <font>
3311 <pointsize>28</pointsize>
3312 </font>
3313 </property>
3314 <property name="text">
3315 <string notr="true"></string>
3316 </property>
3317 </widget>
3318 </item>
3301 <item row="4" column="3"> 3319 <item row="4" column="3">
3302 <widget class="QPushButton" name="button_0_num"> 3320 <widget class="QPushButton" name="button_0_num">
3303 <property name="sizePolicy"> 3321 <property name="sizePolicy">
@@ -3316,6 +3334,24 @@ p, li { white-space: pre-wrap; }
3316 </property> 3334 </property>
3317 </widget> 3335 </widget>
3318 </item> 3336 </item>
3337 <item row="4" column="4">
3338 <widget class="QPushButton" name="button_right_optional_num">
3339 <property name="sizePolicy">
3340 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
3341 <horstretch>1</horstretch>
3342 <verstretch>1</verstretch>
3343 </sizepolicy>
3344 </property>
3345 <property name="font">
3346 <font>
3347 <pointsize>28</pointsize>
3348 </font>
3349 </property>
3350 <property name="text">
3351 <string notr="true"></string>
3352 </property>
3353 </widget>
3354 </item>
3319 <item row="1" column="4"> 3355 <item row="1" column="4">
3320 <widget class="QPushButton" name="button_3_num"> 3356 <widget class="QPushButton" name="button_3_num">
3321 <property name="sizePolicy"> 3357 <property name="sizePolicy">
@@ -3494,7 +3530,9 @@ p, li { white-space: pre-wrap; }
3494 <tabstop>button_7_num</tabstop> 3530 <tabstop>button_7_num</tabstop>
3495 <tabstop>button_8_num</tabstop> 3531 <tabstop>button_8_num</tabstop>
3496 <tabstop>button_9_num</tabstop> 3532 <tabstop>button_9_num</tabstop>
3533 <tabstop>button_left_optional_num</tabstop>
3497 <tabstop>button_0_num</tabstop> 3534 <tabstop>button_0_num</tabstop>
3535 <tabstop>button_right_optional_num</tabstop>
3498 </tabstops> 3536 </tabstops>
3499 <resources> 3537 <resources>
3500 <include location="../../../dist/icons/overlay/overlay.qrc"/> 3538 <include location="../../../dist/icons/overlay/overlay.qrc"/>