From e1da2ffdc110af92b092f6c75499fcef013c0ff6 Mon Sep 17 00:00:00 2001 From: BlackyHawky Date: Fri, 3 Nov 2023 16:41:49 +0100 Subject: [PATCH] Add Rounded style (#260) --- .../inputmethod/keyboard/KeyboardTheme.java | 13 +- .../inputmethod/keyboard/KeyboardView.java | 31 +++- .../settings/AppearanceSettingsFragment.kt | 8 +- .../suggestions/SuggestionStripView.java | 17 +- ..._popup_panel_background_rounded_base.9.png | Bin 0 -> 3991 bytes ..._popup_panel_background_rounded_base.9.png | Bin 0 -> 3012 bytes ..._popup_panel_background_rounded_base.9.png | Bin 0 -> 4839 bytes ..._popup_panel_background_rounded_base.9.png | Bin 0 -> 7384 bytes ..._popup_panel_background_rounded_base.9.png | Bin 0 -> 8884 bytes ...ard_key_functional_rounded_base_border.xml | 33 ++++ ..._normal_functional_rounded_base_border.xml | 16 ++ ...eyboard_key_normal_rounded_base_border.xml | 15 ++ .../btn_keyboard_key_popup_rounded_base.xml | 15 ++ ...pressed_functional_rounded_base_border.xml | 7 + .../btn_keyboard_key_pressed_rounded_base.xml | 6 + .../btn_keyboard_key_rounded_base.xml | 33 ++++ .../btn_keyboard_key_rounded_base_border.xml | 33 ++++ .../drawable/btn_suggestion_rounded_base.xml | 11 ++ app/src/main/res/drawable/ic_arrow_down.xml | 5 + .../res/drawable/ic_arrow_down_rounded.xml | 5 + .../res/drawable/ic_arrow_left_rounded.xml | 14 ++ .../res/drawable/ic_arrow_right_rounded.xml | 5 + .../main/res/drawable/ic_arrow_up_rounded.xml | 5 + .../res/drawable/ic_clipboard_pin_rounded.xml | 14 ++ .../main/res/drawable/ic_delete_rounded.xml | 14 ++ .../drawable/ic_emoji_activities_rounded.xml | 14 ++ .../drawable/ic_emoji_emoticons_rounded.xml | 14 ++ .../res/drawable/ic_emoji_flags_rounded.xml | 14 ++ .../drawable/ic_emoji_food_drink_rounded.xml | 14 ++ .../res/drawable/ic_emoji_objects_rounded.xml | 14 ++ .../drawable/ic_emoji_people_body_rounded.xml | 14 ++ .../res/drawable/ic_emoji_recents_rounded.xml | 14 ++ .../ic_emoji_smileys_emotion_rounded.xml | 14 ++ .../res/drawable/ic_emoji_symbols_rounded.xml | 14 ++ .../ic_emoji_travel_places_rounded.xml | 14 ++ .../res/drawable/ic_select_all_rounded.xml | 14 ++ .../sym_keyboard_clear_clipboard_rounded.xml | 14 ++ .../sym_keyboard_clipboard_rounded.xml | 24 +++ .../drawable/sym_keyboard_delete_rounded.xml | 14 ++ .../drawable/sym_keyboard_done_rounded.xml | 14 ++ .../res/drawable/sym_keyboard_go_rounded.xml | 14 ++ .../drawable/sym_keyboard_return_rounded.xml | 14 ++ .../drawable/sym_keyboard_search_rounded.xml | 14 ++ .../drawable/sym_keyboard_send_rounded.xml | 14 ++ .../sym_keyboard_settings_rounded.xml | 14 ++ .../drawable/sym_keyboard_shift_rounded.xml | 14 ++ .../drawable/sym_keyboard_smiley_rounded.xml | 14 ++ .../drawable/sym_keyboard_space_rounded.xml | 14 ++ .../sym_keyboard_start_onehanded_rounded.xml | 14 ++ .../sym_keyboard_stop_onehanded_rounded.xml | 14 ++ .../res/drawable/sym_keyboard_tab_rounded.xml | 14 ++ .../sym_keyboard_voice_off_rounded.xml | 14 ++ .../drawable/sym_keyboard_voice_rounded.xml | 14 ++ .../res/layout/suggestions_strip_down_key.xml | 3 +- .../res/layout/suggestions_strip_left_key.xml | 1 - .../layout/suggestions_strip_right_key.xml | 1 - .../res/layout/suggestions_strip_up_key.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/attrs.xml | 11 ++ .../main/res/values/keyboard-icons-holo.xml | 7 + .../keyboard-icons-lxx-light-parent.xml | 7 + .../res/values/keyboard-icons-rounded.xml | 47 ++++++ app/src/main/res/values/strings.xml | 2 + .../res/values/themes-rounded-base-border.xml | 74 +++++++++ .../main/res/values/themes-rounded-base.xml | 155 ++++++++++++++++++ .../main/res/xml-sw600dp/key_styles_enter.xml | 2 +- app/src/main/res/xml/key_styles_common.xml | 2 +- app/src/main/res/xml/key_styles_enter.xml | 2 +- 68 files changed, 994 insertions(+), 24 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/keyboard_popup_panel_background_rounded_base.9.png create mode 100644 app/src/main/res/drawable-mdpi/keyboard_popup_panel_background_rounded_base.9.png create mode 100644 app/src/main/res/drawable-xhdpi/keyboard_popup_panel_background_rounded_base.9.png create mode 100644 app/src/main/res/drawable-xxhdpi/keyboard_popup_panel_background_rounded_base.9.png create mode 100644 app/src/main/res/drawable-xxxhdpi/keyboard_popup_panel_background_rounded_base.9.png create mode 100644 app/src/main/res/drawable/btn_keyboard_key_functional_rounded_base_border.xml create mode 100644 app/src/main/res/drawable/btn_keyboard_key_normal_functional_rounded_base_border.xml create mode 100644 app/src/main/res/drawable/btn_keyboard_key_normal_rounded_base_border.xml create mode 100644 app/src/main/res/drawable/btn_keyboard_key_popup_rounded_base.xml create mode 100644 app/src/main/res/drawable/btn_keyboard_key_pressed_functional_rounded_base_border.xml create mode 100644 app/src/main/res/drawable/btn_keyboard_key_pressed_rounded_base.xml create mode 100644 app/src/main/res/drawable/btn_keyboard_key_rounded_base.xml create mode 100644 app/src/main/res/drawable/btn_keyboard_key_rounded_base_border.xml create mode 100644 app/src/main/res/drawable/btn_suggestion_rounded_base.xml create mode 100644 app/src/main/res/drawable/ic_arrow_down.xml create mode 100644 app/src/main/res/drawable/ic_arrow_down_rounded.xml create mode 100644 app/src/main/res/drawable/ic_arrow_left_rounded.xml create mode 100644 app/src/main/res/drawable/ic_arrow_right_rounded.xml create mode 100644 app/src/main/res/drawable/ic_arrow_up_rounded.xml create mode 100644 app/src/main/res/drawable/ic_clipboard_pin_rounded.xml create mode 100644 app/src/main/res/drawable/ic_delete_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_activities_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_emoticons_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_flags_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_food_drink_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_objects_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_people_body_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_recents_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_smileys_emotion_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_symbols_rounded.xml create mode 100644 app/src/main/res/drawable/ic_emoji_travel_places_rounded.xml create mode 100644 app/src/main/res/drawable/ic_select_all_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_clear_clipboard_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_clipboard_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_delete_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_done_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_go_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_return_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_search_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_send_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_settings_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_shift_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_smiley_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_space_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_start_onehanded_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_stop_onehanded_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_tab_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_voice_off_rounded.xml create mode 100644 app/src/main/res/drawable/sym_keyboard_voice_rounded.xml create mode 100644 app/src/main/res/values/keyboard-icons-rounded.xml create mode 100644 app/src/main/res/values/themes-rounded-base-border.xml create mode 100644 app/src/main/res/values/themes-rounded-base.xml diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardTheme.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardTheme.java index 0fca466c..81438d12 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardTheme.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardTheme.java @@ -26,6 +26,7 @@ public final class KeyboardTheme implements Comparable { // old themes public static final String STYLE_MATERIAL = "Material"; public static final String STYLE_HOLO = "Holo"; + public static final String STYLE_ROUNDED = "Rounded"; // new themes using the custom colors public static final String THEME_LIGHT = "light"; @@ -36,15 +37,17 @@ public final class KeyboardTheme implements Comparable { public static final String THEME_USER = "user"; public static final String THEME_USER_NIGHT = "user_night"; public static final String[] COLORS = new String[] { THEME_LIGHT, THEME_HOLO_WHITE, THEME_DARK, THEME_DARKER, THEME_BLACK, THEME_USER }; - public static final String[] COLORS_DARK = new String[] { THEME_HOLO_WHITE, THEME_DARK, THEME_DARKER, THEME_BLACK, THEME_USER_NIGHT}; + public static final String[] COLORS_DARK = new String[] { THEME_HOLO_WHITE, THEME_DARK, THEME_DARKER, THEME_BLACK, THEME_USER_NIGHT }; - public static final String[] STYLES = { STYLE_MATERIAL, STYLE_HOLO }; + public static final String[] STYLES = { STYLE_MATERIAL, STYLE_HOLO, STYLE_ROUNDED }; // These should be aligned with Keyboard.themeId and Keyboard.Case.keyboardTheme // attributes' values in attrs.xml. public static final int THEME_ID_HOLO_BASE = 0; public static final int THEME_ID_LXX_BASE = 1; public static final int THEME_ID_LXX_BASE_BORDER = 2; + public static final int THEME_ID_ROUNDED_BASE = 3; + public static final int THEME_ID_ROUNDED_BASE_BORDER = 4; public static final int DEFAULT_THEME_ID = THEME_ID_LXX_BASE; /* package private for testing */ @@ -55,6 +58,10 @@ public final class KeyboardTheme implements Comparable { VERSION_CODES.LOLLIPOP), new KeyboardTheme(THEME_ID_LXX_BASE_BORDER, "LXXBaseBorder", R.style.KeyboardTheme_LXX_Base_Border, VERSION_CODES.LOLLIPOP), + new KeyboardTheme(THEME_ID_ROUNDED_BASE, "RoundedBase", R.style.KeyboardTheme_Rounded_Base, + VERSION_CODES.LOLLIPOP), + new KeyboardTheme(THEME_ID_ROUNDED_BASE_BORDER, "RoundedBaseBorder", R.style.KeyboardTheme_Rounded_Base_Border, + VERSION_CODES.LOLLIPOP) }; static { @@ -119,6 +126,8 @@ public final class KeyboardTheme implements Comparable { final int matchingId; if (style.equals(STYLE_HOLO)) matchingId = THEME_ID_HOLO_BASE; + else if (style.equals(STYLE_ROUNDED)) + matchingId = borders ? THEME_ID_ROUNDED_BASE_BORDER : THEME_ID_ROUNDED_BASE; else matchingId = borders ? THEME_ID_LXX_BASE_BORDER : THEME_ID_LXX_BASE; for (KeyboardTheme keyboardTheme : KEYBOARD_THEMES) { diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java index 429ce6d0..147a6f9c 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java @@ -6,6 +6,8 @@ package org.dslul.openboard.inputmethod.keyboard; +import static org.dslul.openboard.inputmethod.keyboard.KeyboardTheme.STYLE_ROUNDED; + import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; @@ -461,6 +463,7 @@ public class KeyboardView extends View { blendAlpha(paint, params.mAnimAlpha); final float labelCharHeight = TypefaceUtils.getReferenceCharHeight(paint); final float labelCharWidth = TypefaceUtils.getReferenceCharWidth(paint); + final boolean isFunctionalKeyAndRoundedStyle = mColors.getThemeStyle().equals(STYLE_ROUNDED) && key.isFunctional(); final float hintX, hintBaseline; if (key.hasHintLabel()) { // The hint label is placed just right of the key label. Used mainly on @@ -482,14 +485,16 @@ public class KeyboardView extends View { // The hint letter is placed at top-right corner of the key. Used mainly on phone. final float hintDigitWidth = TypefaceUtils.getReferenceDigitWidth(paint); final float hintLabelWidth = TypefaceUtils.getStringWidth(hintLabel, paint); - hintX = keyWidth - mKeyHintLetterPadding - - Math.max(hintDigitWidth, hintLabelWidth) / 2.0f; hintBaseline = -paint.ascent(); + hintX = isFunctionalKeyAndRoundedStyle + ? keyWidth - hintBaseline + : keyWidth - mKeyHintLetterPadding - Math.max(hintDigitWidth, hintLabelWidth) / 2.0f; paint.setTextAlign(Align.CENTER); } - final float adjustmentY = params.mHintLabelVerticalAdjustment * labelCharHeight; - canvas.drawText( - hintLabel, 0, hintLabel.length(), hintX, hintBaseline + adjustmentY, paint); + final float adjustmentY = isFunctionalKeyAndRoundedStyle + ? hintBaseline * 0.5f + : params.mHintLabelVerticalAdjustment * labelCharHeight; + canvas.drawText(hintLabel, 0, hintLabel.length(), hintX, hintBaseline + adjustmentY, paint); } // Draw key icon. @@ -517,7 +522,7 @@ public class KeyboardView extends View { } } - // Draw popup hint "..." at the bottom right corner of the key. + // Draw popup hint "..." at the center or bottom right corner of the key, depending on style. protected void drawKeyPopupHint(@NonNull final Key key, @NonNull final Canvas canvas, @NonNull final Paint paint, @NonNull final KeyDrawParams params) { if (TextUtils.isEmpty(mKeyPopupHintLetter)) { @@ -525,13 +530,21 @@ public class KeyboardView extends View { } final int keyWidth = key.getDrawWidth(); final int keyHeight = key.getHeight(); - + final float labelCharWidth = TypefaceUtils.getReferenceCharWidth(paint); + final float hintX; + final float hintBaseline = paint.ascent(); paint.setTypeface(params.mTypeface); paint.setTextSize(params.mHintLetterSize); paint.setColor(params.mHintLabelColor); paint.setTextAlign(Align.CENTER); - final float hintX = keyWidth - mKeyHintLetterPadding - - TypefaceUtils.getReferenceCharWidth(paint) / 2.0f; + if (mColors.getThemeStyle().equals(STYLE_ROUNDED)) { + if (key.getBackgroundType() == Key.BACKGROUND_TYPE_SPACEBAR) + hintX = keyWidth + hintBaseline + labelCharWidth * 0.1f; + else + hintX = key.isFunctional() || key.isActionKey() ? keyWidth / 2.0f : keyWidth - mKeyHintLetterPadding - labelCharWidth / 2.0f; + } else { + hintX = keyWidth - mKeyHintLetterPadding - TypefaceUtils.getReferenceCharWidth(paint) / 2.0f; + } final float hintY = keyHeight - mKeyPopupHintLetterPadding; canvas.drawText(mKeyPopupHintLetter, hintX, hintY, paint); } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AppearanceSettingsFragment.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AppearanceSettingsFragment.kt index 5d3818b9..484d70bc 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AppearanceSettingsFragment.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AppearanceSettingsFragment.kt @@ -131,8 +131,14 @@ class AppearanceSettingsFragment : SubScreenFragment() { private fun setupTheme() { stylePref.apply { - entries = KeyboardTheme.STYLES entryValues = KeyboardTheme.STYLES + entries = entryValues.map { + val resId = resources.getIdentifier("style_name_$it", "string", requireContext().packageName) + if (resId == 0) it else getString(resId) + }.toTypedArray() + if (value !in entryValues) + value = entryValues.first().toString() + onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, value -> summary = entries[entryValues.indexOfFirst { it == value }] setColorPrefs(value.toString()) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java index adf135a0..8c34a0e1 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java @@ -58,7 +58,6 @@ import java.util.ArrayList; import java.util.concurrent.atomic.AtomicBoolean; import androidx.appcompat.widget.PopupMenu; -import androidx.core.content.ContextCompat; import androidx.core.view.ViewCompat; public final class SuggestionStripView extends RelativeLayout implements OnClickListener, @@ -87,6 +86,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick private final ImageButton mToolbarKey; private final Drawable mIncognitoIcon; private final Drawable mToolbarArrowIcon; + private final Drawable mBinIcon; private final ViewGroup mToolbar; private final View mToolbarContainer; private final ViewGroup mPinnedKeys; @@ -159,6 +159,10 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick final ImageButton selectAllKey = findViewById(R.id.suggestions_strip_select_all_key); final ImageButton settingsKey = findViewById(R.id.suggestions_strip_settings_key); final ImageButton oneHandedKey = findViewById(R.id.suggestions_strip_one_handed_key); + final ImageButton arrowLeft = findViewById(R.id.suggestions_strip_left_key); + final ImageButton arrowRight = findViewById(R.id.suggestions_strip_right_key); + final ImageButton arrowUp = findViewById(R.id.suggestions_strip_up_key); + final ImageButton arrowDown = findViewById(R.id.suggestions_strip_down_key); for (int pos = 0; pos < SuggestedWords.MAX_SUGGESTIONS; pos++) { final TextView word = new TextView(context, null, R.attr.suggestionWordStyle); @@ -190,17 +194,22 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick final TypedArray keyboardAttr = context.obtainStyledAttributes(attrs, R.styleable.Keyboard, defStyle, R.style.SuggestionStripView); mIncognitoIcon = keyboardAttr.getDrawable(R.styleable.Keyboard_iconIncognitoKey); + mToolbarArrowIcon = keyboardAttr.getDrawable(R.styleable.Keyboard_iconToolbarKey); + mBinIcon = keyboardAttr.getDrawable(R.styleable.Keyboard_iconBin); voiceKey.setImageDrawable(keyboardAttr.getDrawable(R.styleable.Keyboard_iconShortcutKey)); clipboardKey.setImageDrawable(keyboardAttr.getDrawable(R.styleable.Keyboard_iconClipboardNormalKey)); settingsKey.setImageDrawable(keyboardAttr.getDrawable(R.styleable.Keyboard_iconSettingsKey)); - selectAllKey.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.ic_select_all)); + selectAllKey.setImageDrawable(keyboardAttr.getDrawable(R.styleable.Keyboard_iconSelectAll)); + arrowLeft.setImageDrawable(keyboardAttr.getDrawable(R.styleable.Keyboard_iconArrowLeft)); + arrowRight.setImageDrawable(keyboardAttr.getDrawable(R.styleable.Keyboard_iconArrowRight)); + arrowUp.setImageDrawable(keyboardAttr.getDrawable(R.styleable.Keyboard_iconArrowUp)); + arrowDown.setImageDrawable(keyboardAttr.getDrawable(R.styleable.Keyboard_iconArrowDown)); oneHandedKey.setImageDrawable(keyboardAttr.getDrawable(R.styleable.Keyboard_iconStartOneHandedMode)); keyboardAttr.recycle(); final int toolbarHeight = Math.min(mToolbarKey.getLayoutParams().height, (int) getResources().getDimension(R.dimen.config_suggestions_strip_height)); mToolbarKey.getLayoutParams().height = toolbarHeight; mToolbarKey.getLayoutParams().width = toolbarHeight; // we want it square - mToolbarArrowIcon = ContextCompat.getDrawable(context, R.drawable.ic_arrow_right); mDefaultBackground = mToolbarKey.getBackground(); colors.setBackgroundColor(mDefaultBackground, BackgroundType.SUGGESTION); mEnabledToolKeyBackground.setColors(new int[] {colors.getAccent() | 0xFF000000, Color.TRANSPARENT}); // ignore alpha on accent color @@ -370,7 +379,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick @SuppressLint("ClickableViewAccessibility") // no need for View#performClick, we return false mostly anyway private boolean onLongClickSuggestion(final TextView wordView) { - final Drawable icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_delete); + final Drawable icon = mBinIcon; icon.setColorFilter(Settings.getInstance().getCurrent().mColors.getKeyTextFilter()); int w = icon.getIntrinsicWidth(); int h = icon.getIntrinsicWidth(); diff --git a/app/src/main/res/drawable-hdpi/keyboard_popup_panel_background_rounded_base.9.png b/app/src/main/res/drawable-hdpi/keyboard_popup_panel_background_rounded_base.9.png new file mode 100644 index 0000000000000000000000000000000000000000..dbcf54f11dadec4daddcc442cb6f0a2d08ea1b89 GIT binary patch literal 3991 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 N002ovPDHLkV1lzKU7Y{` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/keyboard_popup_panel_background_rounded_base.9.png b/app/src/main/res/drawable-xxhdpi/keyboard_popup_panel_background_rounded_base.9.png new file mode 100644 index 0000000000000000000000000000000000000000..97c86ce0baafa68185428d39c5a101136d1220ba GIT binary patch literal 7384 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 KMNUMnLSTZ*a%9K= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/keyboard_popup_panel_background_rounded_base.9.png b/app/src/main/res/drawable-xxxhdpi/keyboard_popup_panel_background_rounded_base.9.png new file mode 100644 index 0000000000000000000000000000000000000000..0de9144fc0a98bd027d41bb6270dc7c9ce83ccc2 GIT binary patch literal 8884 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 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_keyboard_key_normal_functional_rounded_base_border.xml b/app/src/main/res/drawable/btn_keyboard_key_normal_functional_rounded_base_border.xml new file mode 100644 index 00000000..48704428 --- /dev/null +++ b/app/src/main/res/drawable/btn_keyboard_key_normal_functional_rounded_base_border.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_keyboard_key_normal_rounded_base_border.xml b/app/src/main/res/drawable/btn_keyboard_key_normal_rounded_base_border.xml new file mode 100644 index 00000000..88edef7d --- /dev/null +++ b/app/src/main/res/drawable/btn_keyboard_key_normal_rounded_base_border.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_keyboard_key_popup_rounded_base.xml b/app/src/main/res/drawable/btn_keyboard_key_popup_rounded_base.xml new file mode 100644 index 00000000..9e2152e1 --- /dev/null +++ b/app/src/main/res/drawable/btn_keyboard_key_popup_rounded_base.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_keyboard_key_pressed_functional_rounded_base_border.xml b/app/src/main/res/drawable/btn_keyboard_key_pressed_functional_rounded_base_border.xml new file mode 100644 index 00000000..fe34e4d5 --- /dev/null +++ b/app/src/main/res/drawable/btn_keyboard_key_pressed_functional_rounded_base_border.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_keyboard_key_pressed_rounded_base.xml b/app/src/main/res/drawable/btn_keyboard_key_pressed_rounded_base.xml new file mode 100644 index 00000000..a6362b52 --- /dev/null +++ b/app/src/main/res/drawable/btn_keyboard_key_pressed_rounded_base.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_keyboard_key_rounded_base.xml b/app/src/main/res/drawable/btn_keyboard_key_rounded_base.xml new file mode 100644 index 00000000..ebdb16a9 --- /dev/null +++ b/app/src/main/res/drawable/btn_keyboard_key_rounded_base.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_keyboard_key_rounded_base_border.xml b/app/src/main/res/drawable/btn_keyboard_key_rounded_base_border.xml new file mode 100644 index 00000000..158b30ed --- /dev/null +++ b/app/src/main/res/drawable/btn_keyboard_key_rounded_base_border.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_suggestion_rounded_base.xml b/app/src/main/res/drawable/btn_suggestion_rounded_base.xml new file mode 100644 index 00000000..c7a9f0eb --- /dev/null +++ b/app/src/main/res/drawable/btn_suggestion_rounded_base.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrow_down.xml b/app/src/main/res/drawable/ic_arrow_down.xml new file mode 100644 index 00000000..e112dc05 --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_down.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrow_down_rounded.xml b/app/src/main/res/drawable/ic_arrow_down_rounded.xml new file mode 100644 index 00000000..74d51614 --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_down_rounded.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrow_left_rounded.xml b/app/src/main/res/drawable/ic_arrow_left_rounded.xml new file mode 100644 index 00000000..b59becc8 --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_left_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrow_right_rounded.xml b/app/src/main/res/drawable/ic_arrow_right_rounded.xml new file mode 100644 index 00000000..509ea68d --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_right_rounded.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrow_up_rounded.xml b/app/src/main/res/drawable/ic_arrow_up_rounded.xml new file mode 100644 index 00000000..7f601c4f --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_up_rounded.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_clipboard_pin_rounded.xml b/app/src/main/res/drawable/ic_clipboard_pin_rounded.xml new file mode 100644 index 00000000..ad09b2c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_clipboard_pin_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_delete_rounded.xml b/app/src/main/res/drawable/ic_delete_rounded.xml new file mode 100644 index 00000000..580225d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_delete_rounded.xml @@ -0,0 +1,14 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_emoji_activities_rounded.xml b/app/src/main/res/drawable/ic_emoji_activities_rounded.xml new file mode 100644 index 00000000..348d9e11 --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_activities_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_emoji_emoticons_rounded.xml b/app/src/main/res/drawable/ic_emoji_emoticons_rounded.xml new file mode 100644 index 00000000..0f94b4b8 --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_emoticons_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_emoji_flags_rounded.xml b/app/src/main/res/drawable/ic_emoji_flags_rounded.xml new file mode 100644 index 00000000..e8149676 --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_flags_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_emoji_food_drink_rounded.xml b/app/src/main/res/drawable/ic_emoji_food_drink_rounded.xml new file mode 100644 index 00000000..d0e606fd --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_food_drink_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_emoji_objects_rounded.xml b/app/src/main/res/drawable/ic_emoji_objects_rounded.xml new file mode 100644 index 00000000..4570148e --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_objects_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_emoji_people_body_rounded.xml b/app/src/main/res/drawable/ic_emoji_people_body_rounded.xml new file mode 100644 index 00000000..438b3ace --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_people_body_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_emoji_recents_rounded.xml b/app/src/main/res/drawable/ic_emoji_recents_rounded.xml new file mode 100644 index 00000000..48530f9d --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_recents_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_emoji_smileys_emotion_rounded.xml b/app/src/main/res/drawable/ic_emoji_smileys_emotion_rounded.xml new file mode 100644 index 00000000..41be7abf --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_smileys_emotion_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_emoji_symbols_rounded.xml b/app/src/main/res/drawable/ic_emoji_symbols_rounded.xml new file mode 100644 index 00000000..714f0ea5 --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_symbols_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_emoji_travel_places_rounded.xml b/app/src/main/res/drawable/ic_emoji_travel_places_rounded.xml new file mode 100644 index 00000000..35aec83c --- /dev/null +++ b/app/src/main/res/drawable/ic_emoji_travel_places_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_select_all_rounded.xml b/app/src/main/res/drawable/ic_select_all_rounded.xml new file mode 100644 index 00000000..6c876ee1 --- /dev/null +++ b/app/src/main/res/drawable/ic_select_all_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_clear_clipboard_rounded.xml b/app/src/main/res/drawable/sym_keyboard_clear_clipboard_rounded.xml new file mode 100644 index 00000000..0c890892 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_clear_clipboard_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_clipboard_rounded.xml b/app/src/main/res/drawable/sym_keyboard_clipboard_rounded.xml new file mode 100644 index 00000000..9db64b40 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_clipboard_rounded.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_delete_rounded.xml b/app/src/main/res/drawable/sym_keyboard_delete_rounded.xml new file mode 100644 index 00000000..3ccd613d --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_delete_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_done_rounded.xml b/app/src/main/res/drawable/sym_keyboard_done_rounded.xml new file mode 100644 index 00000000..42a32a23 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_done_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_go_rounded.xml b/app/src/main/res/drawable/sym_keyboard_go_rounded.xml new file mode 100644 index 00000000..9c46b55c --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_go_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_return_rounded.xml b/app/src/main/res/drawable/sym_keyboard_return_rounded.xml new file mode 100644 index 00000000..4013da36 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_return_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_search_rounded.xml b/app/src/main/res/drawable/sym_keyboard_search_rounded.xml new file mode 100644 index 00000000..1b423e64 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_search_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_send_rounded.xml b/app/src/main/res/drawable/sym_keyboard_send_rounded.xml new file mode 100644 index 00000000..abf15c51 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_send_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_settings_rounded.xml b/app/src/main/res/drawable/sym_keyboard_settings_rounded.xml new file mode 100644 index 00000000..1ee0aaa4 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_settings_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_shift_rounded.xml b/app/src/main/res/drawable/sym_keyboard_shift_rounded.xml new file mode 100644 index 00000000..f05fc08f --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_shift_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_smiley_rounded.xml b/app/src/main/res/drawable/sym_keyboard_smiley_rounded.xml new file mode 100644 index 00000000..7d6e02e4 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_smiley_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_space_rounded.xml b/app/src/main/res/drawable/sym_keyboard_space_rounded.xml new file mode 100644 index 00000000..867e61c1 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_space_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_start_onehanded_rounded.xml b/app/src/main/res/drawable/sym_keyboard_start_onehanded_rounded.xml new file mode 100644 index 00000000..479f4190 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_start_onehanded_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_stop_onehanded_rounded.xml b/app/src/main/res/drawable/sym_keyboard_stop_onehanded_rounded.xml new file mode 100644 index 00000000..cb37049f --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_stop_onehanded_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_tab_rounded.xml b/app/src/main/res/drawable/sym_keyboard_tab_rounded.xml new file mode 100644 index 00000000..69e422da --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_tab_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_voice_off_rounded.xml b/app/src/main/res/drawable/sym_keyboard_voice_off_rounded.xml new file mode 100644 index 00000000..2d5a62a3 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_voice_off_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_voice_rounded.xml b/app/src/main/res/drawable/sym_keyboard_voice_rounded.xml new file mode 100644 index 00000000..9045a788 --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_voice_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/suggestions_strip_down_key.xml b/app/src/main/res/layout/suggestions_strip_down_key.xml index 09bc4c68..ccef0868 100644 --- a/app/src/main/res/layout/suggestions_strip_down_key.xml +++ b/app/src/main/res/layout/suggestions_strip_down_key.xml @@ -6,8 +6,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/config_suggestions_strip_edge_key_width" android:layout_height="fill_parent" - android:src="@drawable/ic_arrow_up" android:scaleX="1.2" - android:scaleY="-1.2" + android:scaleY="1.2" android:tag="down_key" style="?attr/suggestionWordStyle" /> diff --git a/app/src/main/res/layout/suggestions_strip_left_key.xml b/app/src/main/res/layout/suggestions_strip_left_key.xml index ad201ad9..eaf06e94 100644 --- a/app/src/main/res/layout/suggestions_strip_left_key.xml +++ b/app/src/main/res/layout/suggestions_strip_left_key.xml @@ -6,7 +6,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/config_suggestions_strip_edge_key_width" android:layout_height="fill_parent" - android:src="@drawable/ic_arrow_left" android:scaleX="1.2" android:scaleY="1.2" android:tag="left_key" diff --git a/app/src/main/res/layout/suggestions_strip_right_key.xml b/app/src/main/res/layout/suggestions_strip_right_key.xml index 66ab15d0..7e449ad3 100644 --- a/app/src/main/res/layout/suggestions_strip_right_key.xml +++ b/app/src/main/res/layout/suggestions_strip_right_key.xml @@ -6,7 +6,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/config_suggestions_strip_edge_key_width" android:layout_height="fill_parent" - android:src="@drawable/ic_arrow_right" android:scaleX="1.2" android:scaleY="1.2" android:tag="right_key" diff --git a/app/src/main/res/layout/suggestions_strip_up_key.xml b/app/src/main/res/layout/suggestions_strip_up_key.xml index d2467113..d7ddf5c9 100644 --- a/app/src/main/res/layout/suggestions_strip_up_key.xml +++ b/app/src/main/res/layout/suggestions_strip_up_key.xml @@ -6,7 +6,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/config_suggestions_strip_edge_key_width" android:layout_height="fill_parent" - android:src="@drawable/ic_arrow_up" android:scaleX="1.2" android:scaleY="1.2" android:tag="up_key" diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 498e5984..ba6b67e8 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -235,6 +235,7 @@ Nouveau dictionnaire: Licence Open-source Forcer le mode incognito Style + Arrondi Couleurs Couleurs (mode nuit) Bordures des touches diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 65d82d05..9ff86f31 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -216,6 +216,8 @@ + + @@ -269,6 +271,13 @@ + + + + + + + @@ -473,6 +482,8 @@ + + diff --git a/app/src/main/res/values/keyboard-icons-holo.xml b/app/src/main/res/values/keyboard-icons-holo.xml index e7a14ef8..ac8ee912 100644 --- a/app/src/main/res/values/keyboard-icons-holo.xml +++ b/app/src/main/res/values/keyboard-icons-holo.xml @@ -32,5 +32,12 @@ @drawable/sym_keyboard_stop_onehanded_holo @drawable/sym_keyboard_switch_onehanded_holo @drawable/sym_keyboard_numpad_key_holo + @drawable/ic_arrow_right + @drawable/ic_select_all + @drawable/ic_arrow_left + @drawable/ic_arrow_right + @drawable/ic_arrow_up + @drawable/ic_arrow_down + @drawable/ic_delete diff --git a/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml b/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml index a5986656..9580e5be 100644 --- a/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml +++ b/app/src/main/res/values/keyboard-icons-lxx-light-parent.xml @@ -37,5 +37,12 @@ @drawable/sym_keyboard_stop_onehanded_lxx @drawable/ic_arrow_left @drawable/sym_keyboard_numpad_key_lxx + @drawable/ic_arrow_right + @drawable/ic_select_all + @drawable/ic_arrow_left + @drawable/ic_arrow_right + @drawable/ic_arrow_up + @drawable/ic_arrow_down + @drawable/ic_delete diff --git a/app/src/main/res/values/keyboard-icons-rounded.xml b/app/src/main/res/values/keyboard-icons-rounded.xml new file mode 100644 index 00000000..d41fa938 --- /dev/null +++ b/app/src/main/res/values/keyboard-icons-rounded.xml @@ -0,0 +1,47 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6d2e595a..8d7702a9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -576,6 +576,8 @@ New dictionary: \u0020ABCDEFGHIJKLMNOPQRSTUVWXYZ Style + + Rounded Colors diff --git a/app/src/main/res/values/themes-rounded-base-border.xml b/app/src/main/res/values/themes-rounded-base-border.xml new file mode 100644 index 00000000..c49699c6 --- /dev/null +++ b/app/src/main/res/values/themes-rounded-base-border.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/themes-rounded-base.xml b/app/src/main/res/values/themes-rounded-base.xml new file mode 100644 index 00000000..46f0c1bc --- /dev/null +++ b/app/src/main/res/values/themes-rounded-base.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml-sw600dp/key_styles_enter.xml b/app/src/main/res/xml-sw600dp/key_styles_enter.xml index ba5c9f33..41b2a19d 100644 --- a/app/src/main/res/xml-sw600dp/key_styles_enter.xml +++ b/app/src/main/res/xml-sw600dp/key_styles_enter.xml @@ -67,7 +67,7 @@ - + - + - +