diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4d98a64a..1fb1184c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,7 +31,8 @@ + android:exported="true" + android:theme="@style/TTheme.Preferences"> diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java index 92a6168c..d67c37ec 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/UiHandler.java @@ -51,8 +51,7 @@ abstract class UiHandler extends AbstractHandler { protected void setDarkTheme() { mainView.setDarkTheme(settings.getDarkTheme()); - statusBar.setDarkTheme(settings.getDarkTheme()); - getSuggestionOps().setDarkTheme(settings.getDarkTheme()); + getSuggestionOps().setDarkTheme(); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java index 9ea9a551..ba7c270f 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/SuggestionOps.java @@ -164,7 +164,7 @@ public class SuggestionOps { } - public void setDarkTheme(boolean yes) { - suggestionBar.setDarkTheme(yes); + public void setDarkTheme() { + suggestionBar.setDarkTheme(); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/BaseMainLayout.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/BaseMainLayout.java index d0de0672..f228089b 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/BaseMainLayout.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/BaseMainLayout.java @@ -1,5 +1,6 @@ package io.github.sspanak.tt9.ui.main; +import android.content.res.Configuration; import android.os.Build; import android.view.ContextThemeWrapper; import android.view.View; @@ -28,17 +29,7 @@ abstract class BaseMainLayout { } - /** setDarkTheme - *

Changes the main view colors according to the theme.

- * - *

We need to do this manually, instead of relying on the Context to resolve the appropriate colors, - * because this View is part of the main service View. And service Views are always locked to the - * system context and theme.

- * - *

More info: - * ... - *

- */ + @Deprecated void setDarkTheme(boolean dark) {} @@ -50,13 +41,27 @@ abstract class BaseMainLayout { @NonNull protected ArrayList getKeys() { return keys; } + /** + * getThemedContext + * 1. Overrides the system dark/light them with the one in our settings. + * 2. Fixes this error log: "View class SoftKeyXXX is an AppCompat widget that can only be used + * with a Theme.AppCompat theme (or descendant)." + */ + private ContextThemeWrapper getThemedContext() { + int nightModeFlag = tt9.getSettings().getDarkTheme() ? Configuration.UI_MODE_NIGHT_YES : Configuration.UI_MODE_NIGHT_NO; + Configuration config = new Configuration(tt9.getResources().getConfiguration()); + config.uiMode = nightModeFlag | (config.uiMode & ~Configuration.UI_MODE_NIGHT_MASK); + + ContextThemeWrapper themedCtx = new ContextThemeWrapper(tt9, R.style.TTheme); + themedCtx.applyOverrideConfiguration(config); + + return themedCtx; + } + + protected View getView() { if (view == null) { - // Adding the ContextThemeWrapper fixes this error log: - // "View class SoftKeyXXX is an AppCompat widget that can only be used with a - // Theme.AppCompat theme (or descendant)." - ContextThemeWrapper themedCtx = new ContextThemeWrapper(tt9, R.style.TTheme); - view = View.inflate(themedCtx, xml, null); + view = View.inflate(getThemedContext(), xml, null); } return view; diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutSmall.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutSmall.java index 3a51c905..03bb1798 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutSmall.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutSmall.java @@ -1,6 +1,5 @@ package io.github.sspanak.tt9.ui.main; -import android.view.View; import android.widget.LinearLayout; import androidx.annotation.NonNull; @@ -23,7 +22,7 @@ class MainLayoutSmall extends MainLayoutTray { height = super.getHeight(forceRecalculate); if (!isCommandPaletteShown() && !isTextEditingPaletteShown()) { - height += tt9.getResources().getDimensionPixelSize(R.dimen.soft_key_height); + height += tt9.getResources().getDimensionPixelSize(R.dimen.main_small_key_wrapper_height); } } @@ -63,19 +62,4 @@ class MainLayoutSmall extends MainLayoutTray { } return keys; } - - @Override - protected ArrayList getSeparators() { - ArrayList separators = super.getSeparators(); - separators.add(view.findViewById(R.id.main_separator_left)); - separators.add(view.findViewById(R.id.main_separator_right)); - - return separators; - } - - @Override - void setDarkTheme(boolean dark) { - super.setDarkTheme(dark); - view.findViewById(R.id.main_soft_keys).setBackground(getBackgroundColor(view, dark)); - } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutTray.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutTray.java index da504b00..f7d85421 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutTray.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/MainLayoutTray.java @@ -1,15 +1,11 @@ package io.github.sspanak.tt9.ui.main; import android.content.res.Resources; -import android.graphics.drawable.Drawable; -import android.view.View; import android.widget.LinearLayout; import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; import java.util.ArrayList; -import java.util.Arrays; import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.ime.TraditionalT9; @@ -25,10 +21,10 @@ class MainLayoutTray extends BaseMainLayout { int getHeight(boolean forceRecalculate) { if (height <= 0 || forceRecalculate) { Resources resources = tt9.getResources(); - height = resources.getDimensionPixelSize(R.dimen.candidate_height) + getBottomInsetSize(); + height = resources.getDimensionPixelSize(R.dimen.status_bar_height) + getBottomInsetSize(); if (isCommandPaletteShown() || isTextEditingPaletteShown()) { - height += resources.getDimensionPixelSize(R.dimen.numpad_key_height); + height += resources.getDimensionPixelSize(R.dimen.main_small_key_text_editing_height); } } @@ -45,13 +41,11 @@ class MainLayoutTray extends BaseMainLayout { view.findViewById(R.id.text_editing_container).setVisibility(LinearLayout.GONE); view.findViewById(R.id.main_soft_keys).setVisibility(LinearLayout.GONE); view.findViewById(R.id.main_command_keys).setVisibility(LinearLayout.VISIBLE); - getHeight(true); } void hideCommandPalette() { view.findViewById(R.id.main_command_keys).setVisibility(LinearLayout.GONE); - getHeight(true); } @@ -64,14 +58,12 @@ class MainLayoutTray extends BaseMainLayout { view.findViewById(R.id.main_command_keys).setVisibility(LinearLayout.GONE); view.findViewById(R.id.main_soft_keys).setVisibility(LinearLayout.GONE); view.findViewById(R.id.text_editing_container).setVisibility(LinearLayout.VISIBLE); - getHeight(true); } @Override void hideTextEditingPalette() { view.findViewById(R.id.text_editing_container).setVisibility(LinearLayout.GONE); - getHeight(true); } @@ -80,43 +72,6 @@ class MainLayoutTray extends BaseMainLayout { return view != null && view.findViewById(R.id.text_editing_container).getVisibility() == LinearLayout.VISIBLE; } - protected Drawable getBackgroundColor(@NonNull View contextView, boolean dark) { - return ContextCompat.getDrawable( - contextView.getContext(), - dark ? R.drawable.button_background_dark : R.drawable.button_background - ); - } - - protected Drawable getSeparatorColor(@NonNull View contextView, boolean dark) { - return ContextCompat.getDrawable( - contextView.getContext(), - dark ? R.drawable.button_separator_dark : R.drawable.button_separator - ); - } - - @Override - void setDarkTheme(boolean dark) { - if (view == null) { - return; - } - - // background - view.findViewById(R.id.main_command_keys).setBackground(getBackgroundColor(view, dark)); - view.findViewById(R.id.text_editing_container).setBackground(getBackgroundColor(view, dark)); - - // text - for (SoftKey key : getKeys()) { - key.setDarkTheme(dark); - } - - // separators - for (View separator : getSeparators()) { - if (separator != null) { - separator.setBackground(getSeparatorColor(separator, dark)); - } - } - } - @Override void render() { getView(); @@ -136,24 +91,4 @@ class MainLayoutTray extends BaseMainLayout { } return keys; } - - protected ArrayList getSeparators() { - return new ArrayList<>(Arrays.asList( - view.findViewById(R.id.separator_top), - view.findViewById(R.id.separator_candidates_bottom), - view.findViewById(R.id.separator_1_1), - view.findViewById(R.id.separator_1_2), - view.findViewById(R.id.separator_2_1), - view.findViewById(R.id.separator_2_2), - view.findViewById(R.id.separator_10_1), - view.findViewById(R.id.separator_10_2), - view.findViewById(R.id.separator_10_2), - view.findViewById(R.id.separator_10_3), - view.findViewById(R.id.separator_10_4), - view.findViewById(R.id.separator_10_5), - view.findViewById(R.id.separator_10_6), - view.findViewById(R.id.separator_10_7), - view.findViewById(R.id.separator_10_8) - )); - } } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKey.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKey.java index 9379a3da..3f903abf 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKey.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKey.java @@ -2,21 +2,13 @@ package io.github.sspanak.tt9.ui.main.keys; import android.content.Context; import android.graphics.Paint; -import android.graphics.Typeface; import android.os.Handler; import android.os.Looper; import android.text.SpannableStringBuilder; -import android.text.Spanned; -import android.text.style.ForegroundColorSpan; -import android.text.style.RelativeSizeSpan; -import android.text.style.StyleSpan; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; -import androidx.core.content.ContextCompat; - -import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.ime.TraditionalT9; import io.github.sspanak.tt9.preferences.settings.SettingsStore; import io.github.sspanak.tt9.ui.Vibration; @@ -24,7 +16,7 @@ import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.util.Text; import io.github.sspanak.tt9.util.chars.Characters; -public class SoftKey extends androidx.appcompat.widget.AppCompatButton implements View.OnTouchListener, View.OnLongClickListener { +public class SoftKey extends com.google.android.material.button.MaterialButton implements View.OnTouchListener, View.OnLongClickListener { private final String LOG_TAG = getClass().getSimpleName(); protected TraditionalT9 tt9; @@ -168,11 +160,6 @@ public class SoftKey extends androidx.appcompat.widget.AppCompatButton implement public void setDarkTheme(boolean darkEnabled) { - int textColor = ContextCompat.getColor( - getContext(), - darkEnabled ? R.color.dark_button_text : R.color.button_text - ); - setTextColor(textColor); } @@ -223,7 +210,6 @@ public class SoftKey extends androidx.appcompat.widget.AppCompatButton implement || (new Text(getText().toString()).startsWithGraphic() && !new Paint().hasGlyph(getText().toString())) ) ) { - setTextSize(SettingsStore.SOFT_KEY_TITLE_SIZE); return getContext().getString(getNoEmojiTitle()); } else { return getTitle(); @@ -275,37 +261,10 @@ public class SoftKey extends androidx.appcompat.widget.AppCompatButton implement SpannableStringBuilder sb = new SpannableStringBuilder(title); if (subtitle != null) { - sb.append('\n'); + sb.append(" "); sb.append(subtitle); } - // title styles - int titleLength = title.length(); - float titleRelativeSize = subtitle == null ? getSingleLabelRelativeSize() : getTitleRelativeSize(); - - sb.setSpan(new RelativeSizeSpan(titleRelativeSize), 0, titleLength, Spanned.SPAN_INCLUSIVE_INCLUSIVE); - if (subtitle != null && !new Text(title).startsWithGraphic()) { - sb.setSpan(new StyleSpan(Typeface.ITALIC), 0, titleLength, Spanned.SPAN_EXCLUSIVE_INCLUSIVE); - } - - if (isTitleDisabled) { - sb.setSpan(new ForegroundColorSpan(0x44000000), 0, titleLength, Spanned.SPAN_INCLUSIVE_INCLUSIVE); - } - - if (subtitle == null) { - setText(sb); - return; - } - - // subtitle styles - float padding = SettingsStore.SOFT_KEY_COMPLEX_LABEL_TITLE_RELATIVE_SIZE; - if (titleRelativeSize == SettingsStore.SOFT_KEY_COMPLEX_LABEL_ARABIC_TITLE_RELATIVE_SIZE) { - padding /= 10; - } - - sb.setSpan(new RelativeSizeSpan(padding), titleLength, titleLength + 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE); - sb.setSpan(new RelativeSizeSpan(getSubTitleRelativeSize()), titleLength + 1, sb.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); - setText(sb); } diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF3.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF3.java index ba882ded..98a91daf 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF3.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF3.java @@ -16,11 +16,6 @@ public class SoftKeyF3 extends SoftKeyFn { super(context, attrs, defStyleAttr); } - @Override - protected String getSubTitle() { - return "🎤"; - } - @Override public void render() { setVisibility(tt9 != null && tt9.isVoiceInputMissing() ? GONE : VISIBLE); diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF5.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF5.java index 3440b980..00653db4 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF5.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyF5.java @@ -3,9 +3,6 @@ package io.github.sspanak.tt9.ui.main.keys; import android.content.Context; import android.util.AttributeSet; -import io.github.sspanak.tt9.R; -import io.github.sspanak.tt9.util.chars.Characters; - public class SoftKeyF5 extends SoftKeyFn { public SoftKeyF5(Context context) { super(context); @@ -19,11 +16,6 @@ public class SoftKeyF5 extends SoftKeyFn { super(context, attrs, defStyleAttr); } - @Override - protected String getSubTitle() { - return Characters.noEmojiSupported() ? getTextSubTitle(R.string.virtual_key_text_editing) : "✂"; - } - @Override public void render() { setVisibility(tt9 != null && tt9.isInputLimited() ? GONE : VISIBLE); diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyFn.java b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyFn.java index 917935cd..48be1b47 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyFn.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/main/keys/SoftKeyFn.java @@ -1,79 +1,18 @@ package io.github.sspanak.tt9.ui.main.keys; import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.drawable.Drawable; -import android.os.Build; import android.util.AttributeSet; -import androidx.core.graphics.drawable.DrawableCompat; -import androidx.core.widget.TextViewCompat; - import io.github.sspanak.tt9.R; -import io.github.sspanak.tt9.util.chars.Characters; public class SoftKeyFn extends SoftKeyNumber { public SoftKeyFn(Context context) { super(context);} public SoftKeyFn(Context context, AttributeSet attrs) { super(context, attrs);} public SoftKeyFn(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr);} - @Override protected float getSubTitleRelativeSize() { return super.getSubTitleRelativeSize() * 0.8f; } - - - @Override protected void handleHold() { - preventRepeat(); - } - - - @Override - public void setDarkTheme(boolean darkEnabled) { - super.setDarkTheme(darkEnabled); - - final int color = darkEnabled ? R.color.dark_button_text : R.color.button_text; - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - TextViewCompat.setCompoundDrawableTintList(this, ColorStateList.valueOf(getContext().getColor(color))); - } else { - setDarkThemeLegacy(color); - } - } - - - private void setDarkThemeLegacy(int color) { - Drawable[] icons = getCompoundDrawables(); - - if (icons.length >= 4 && icons[3] != null) { - Drawable icon = DrawableCompat.wrap(icons[3]); - DrawableCompat.setTint(icon, getResources().getColor(color)); - setCompoundDrawables(null, null, null, icon); - } - } - - - protected String getTextSubTitle(int resId) { - return getContext().getString(resId); - } - - - @Override - protected String getTitle() { - return getNumber(getId()) + ""; - } - - - @Override - protected String getSubTitle() { - boolean noIconSupport = Characters.noEmojiSupported(); - int keyId = getId(); - - // command palette - if (keyId == R.id.soft_key_1) return noIconSupport ? getTextSubTitle(R.string.virtual_key_settings) : "⚙"; - if (keyId == R.id.soft_key_2) return "+"; - if (keyId == R.id.soft_key_8) return noIconSupport ? getTextSubTitle(R.string.virtual_key_change_keyboard) : "⌨"; - - return null; - } - + @Override protected void handleHold() { preventRepeat(); } + @Override protected String getTitle() { return getNumber(getId()) + ""; } + @Override protected String getSubTitle() { return null; } @Override protected int getNumber(int keyId) { diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/tray/StatusBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/tray/StatusBar.java index 0d5be78e..e3d4e7e4 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/tray/StatusBar.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/tray/StatusBar.java @@ -54,28 +54,6 @@ public class StatusBar { } - public void setDarkTheme(boolean darkTheme) { - if (statusView == null) { - return; - } - - Context context = statusView.getContext(); - - int backgroundColor = ContextCompat.getColor( - context, - darkTheme ? R.color.dark_candidate_background : R.color.candidate_background - ); - int color = ContextCompat.getColor( - context, - darkTheme ? R.color.dark_candidate_color : R.color.candidate_color - ); - - statusView.setBackgroundColor(backgroundColor); - statusView.setTextColor(color); - this.render(); - } - - private void render() { if (statusView == null) { return; diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsAdapter.java b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsAdapter.java index 9aec3af6..bfef7daf 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsAdapter.java +++ b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsAdapter.java @@ -24,6 +24,7 @@ public class SuggestionsAdapter extends RecyclerView.Adapter onItemClick.accept(holder.getAdapterPosition())); } @@ -81,6 +82,11 @@ public class SuggestionsAdapter extends RecyclerView.Adapter suggestions = new ArrayList<>(); protected int selectedIndex = 0; - private boolean isDarkThemeEnabled = false; + private final List suggestions = new ArrayList<>(); private final ResizableMainView mainView; private final Runnable onItemClick; @@ -86,7 +86,7 @@ public class SuggestionsBar { ); mView.setAdapter(mSuggestionsAdapter); - setDarkTheme(settings.getDarkTheme()); + setDarkTheme(); } @@ -280,28 +280,21 @@ public class SuggestionsBar { /** * setDarkTheme - * Changes the suggestion colors according to the theme. - * - * We need to do this manually, instead of relying on the Context to resolve the appropriate colors, - * because this View is part of the main service View. And service Views are always locked to the - * system context and theme. - * - * More info: - * ... + * Changes the suggestion colors according to the theme. Due to the fact we change the colors + * dynamically based on the selected index and whether the suggestions are empty or not, we + * need to set them manually. */ - public void setDarkTheme(boolean darkEnabled) { + public void setDarkTheme() { if (mView == null) { return; } - isDarkThemeEnabled = darkEnabled; Context context = mView.getContext(); - int defaultColor = darkEnabled ? R.color.dark_candidate_color : R.color.candidate_color; - int highlightColor = darkEnabled ? R.color.dark_candidate_selected : R.color.candidate_selected; - - mSuggestionsAdapter.setColorDefault(ContextCompat.getColor(context, defaultColor)); - mSuggestionsAdapter.setColorHighlight(ContextCompat.getColor(context, highlightColor)); + backgroundColor = ContextCompat.getColor(context, R.color.keyboard_background); + mSuggestionsAdapter.setColorDefault(ContextCompat.getColor(context, R.color.keyboard_text_color)); + mSuggestionsAdapter.setColorHighlight(ContextCompat.getColor(context, R.color.suggestion_selected_color)); + mSuggestionsAdapter.setBackgroundHighlight(ContextCompat.getColor(context, R.color.suggestion_selected_background)); setBackground(suggestions); } @@ -323,12 +316,7 @@ public class SuggestionsBar { return; } - int color = ContextCompat.getColor( - mView.getContext(), - isDarkThemeEnabled ? R.color.dark_candidate_background : R.color.candidate_background - ); - - mView.setBackgroundColor(color); + mView.setBackgroundColor(backgroundColor); } diff --git a/app/src/main/res/drawable/button_background.xml b/app/src/main/res/drawable/button_background.xml deleted file mode 100644 index 19df582a..00000000 --- a/app/src/main/res/drawable/button_background.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/button_background_dark.xml b/app/src/main/res/drawable/button_background_dark.xml deleted file mode 100644 index cf2ac403..00000000 --- a/app/src/main/res/drawable/button_background_dark.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/button_separator.xml b/app/src/main/res/drawable/button_separator.xml deleted file mode 100644 index 42b30796..00000000 --- a/app/src/main/res/drawable/button_separator.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/button_separator_dark.xml b/app/src/main/res/drawable/button_separator_dark.xml deleted file mode 100644 index 5be65e01..00000000 --- a/app/src/main/res/drawable/button_separator_dark.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_fn_add_word.xml b/app/src/main/res/drawable/ic_fn_add_word.xml new file mode 100644 index 00000000..70b0f8d5 --- /dev/null +++ b/app/src/main/res/drawable/ic_fn_add_word.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/drawable/ic_fn_next_keyboard.xml b/app/src/main/res/drawable/ic_fn_next_keyboard.xml new file mode 100644 index 00000000..f9fbb576 --- /dev/null +++ b/app/src/main/res/drawable/ic_fn_next_keyboard.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/drawable/ic_fn_settings.xml b/app/src/main/res/drawable/ic_fn_settings.xml new file mode 100644 index 00000000..64c56656 --- /dev/null +++ b/app/src/main/res/drawable/ic_fn_settings.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/drawable/ic_fn_voice.xml b/app/src/main/res/drawable/ic_fn_voice.xml new file mode 100644 index 00000000..8cf9517b --- /dev/null +++ b/app/src/main/res/drawable/ic_fn_voice.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/drawable/suggestion_separator.xml b/app/src/main/res/drawable/suggestion_separator.xml index 2b394bb1..bdfee4c4 100644 --- a/app/src/main/res/drawable/suggestion_separator.xml +++ b/app/src/main/res/drawable/suggestion_separator.xml @@ -1,5 +1,9 @@ - - - - + + + + + + + + diff --git a/app/src/main/res/layout/main_numpad.xml b/app/src/main/res/layout/main_numpad.xml index 07aa2397..831f23bd 100644 --- a/app/src/main/res/layout/main_numpad.xml +++ b/app/src/main/res/layout/main_numpad.xml @@ -40,7 +40,7 @@ android:layout_width="@dimen/numpad_arrow_key_width" android:layout_height="match_parent" android:text="@string/key_dpad_left" - android:textSize="@dimen/soft_key_icon_size" /> + android:textSize="@dimen/main_small_key_icon_size" /> + android:textSize="@dimen/main_small_key_icon_size" /> diff --git a/app/src/main/res/layout/main_small.xml b/app/src/main/res/layout/main_small.xml index 7a1cc4d0..8b3b93b3 100644 --- a/app/src/main/res/layout/main_small.xml +++ b/app/src/main/res/layout/main_small.xml @@ -2,6 +2,7 @@ @@ -11,46 +12,34 @@ style="@style/numRowSeparator" /> + android:focusableInTouchMode="false" /> - - diff --git a/app/src/main/res/layout/panel_command_palette.xml b/app/src/main/res/layout/panel_command_palette.xml deleted file mode 100644 index c98b7bcb..00000000 --- a/app/src/main/res/layout/panel_command_palette.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/panel_numpad.xml b/app/src/main/res/layout/panel_numpad.xml index 2981b905..70148ee2 100644 --- a/app/src/main/res/layout/panel_numpad.xml +++ b/app/src/main/res/layout/panel_numpad.xml @@ -21,7 +21,7 @@ android:layout_height="match_parent" android:layout_weight="@dimen/numpad_function_key_layout_weight" android:text="⚙" - android:textSize="@dimen/soft_key_icon_size" /> + android:textSize="@dimen/main_small_key_icon_size" /> + android:textSize="@dimen/main_small_key_icon_size" /> @@ -63,7 +63,7 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="@dimen/numpad_function_key_layout_weight" - android:textSize="@dimen/soft_key_icon_size" /> + android:textSize="@dimen/main_small_key_icon_size" /> diff --git a/app/src/main/res/layout/panel_numpad_text_editing_row_2.xml b/app/src/main/res/layout/panel_numpad_text_editing_row_2.xml index 92ad2847..f4935ab5 100644 --- a/app/src/main/res/layout/panel_numpad_text_editing_row_2.xml +++ b/app/src/main/res/layout/panel_numpad_text_editing_row_2.xml @@ -8,7 +8,7 @@ android:layout_weight="1" android:drawableBottom="@drawable/ic_txt_word_back" android:paddingBottom="@dimen/soft_key_drawable_bottom_padding" - android:textSize="@dimen/soft_key_drawable_title_size" + android:textSize="@dimen/numpad_text_editing_font_size" android:visibility="gone" /> diff --git a/app/src/main/res/layout/panel_numpad_text_editing_row_3.xml b/app/src/main/res/layout/panel_numpad_text_editing_row_3.xml index eee0f966..9796c1c4 100644 --- a/app/src/main/res/layout/panel_numpad_text_editing_row_3.xml +++ b/app/src/main/res/layout/panel_numpad_text_editing_row_3.xml @@ -8,7 +8,7 @@ android:layout_weight="1" android:drawableBottom="@drawable/ic_txt_cut" android:paddingBottom="@dimen/soft_key_drawable_bottom_padding" - android:textSize="@dimen/soft_key_drawable_title_size" + android:textSize="@dimen/numpad_text_editing_font_size" android:visibility="gone" /> @@ -31,6 +31,6 @@ android:layout_weight="1" android:drawableBottom="@drawable/ic_txt_paste" android:paddingBottom="@dimen/soft_key_drawable_bottom_padding" - android:textSize="@dimen/soft_key_drawable_title_size" + android:textSize="@dimen/numpad_text_editing_font_size" android:visibility="gone" /> diff --git a/app/src/main/res/layout/panel_small_command_palette.xml b/app/src/main/res/layout/panel_small_command_palette.xml new file mode 100644 index 00000000..d881fd4a --- /dev/null +++ b/app/src/main/res/layout/panel_small_command_palette.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/panel_small_function_keys.xml b/app/src/main/res/layout/panel_small_function_keys.xml index a5772f20..7bd6780f 100644 --- a/app/src/main/res/layout/panel_small_function_keys.xml +++ b/app/src/main/res/layout/panel_small_function_keys.xml @@ -2,49 +2,28 @@ + tools:showIn="@layout/main_small"> - - + android:text="☰" /> - - + android:text="⌫" /> diff --git a/app/src/main/res/layout/panel_small_text_editing.xml b/app/src/main/res/layout/panel_small_text_editing.xml index 8edece53..3a12eb8e 100644 --- a/app/src/main/res/layout/panel_small_text_editing.xml +++ b/app/src/main/res/layout/panel_small_text_editing.xml @@ -3,130 +3,52 @@ - - + style="@style/TTheme.CommandPalette.Key" + android:drawableBottom="@drawable/ic_dpad_left" /> - - + style="@style/TTheme.CommandPalette.Key" + android:drawableBottom="@drawable/ic_txt_select_none" /> - - + style="@style/TTheme.CommandPalette.Key" + android:drawableBottom="@drawable/ic_dpad_right" /> - - + style="@style/TTheme.CommandPalette.Key" + android:drawableBottom="@drawable/ic_txt_word_back" /> - - + style="@style/TTheme.CommandPalette.Key" + android:drawableBottom="@drawable/ic_txt_select_all" /> - - + style="@style/TTheme.CommandPalette.Key" + android:drawableBottom="@drawable/ic_txt_word_forward" /> - - + style="@style/TTheme.CommandPalette.Key" + android:drawableBottom="@drawable/ic_txt_cut" /> - - + style="@style/TTheme.CommandPalette.Key" + android:drawableBottom="@drawable/ic_txt_copy" /> + style="@style/TTheme.CommandPalette.Key" + android:drawableBottom="@drawable/ic_txt_paste" /> diff --git a/app/src/main/res/layout/pref_deletable_word_large.xml b/app/src/main/res/layout/pref_deletable_word_large.xml index cbc166a6..76f6a5c6 100644 --- a/app/src/main/res/layout/pref_deletable_word_large.xml +++ b/app/src/main/res/layout/pref_deletable_word_large.xml @@ -15,7 +15,7 @@ android:paddingEnd="15dp" android:text="✕" android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.TextView" - android:textSize="@dimen/soft_key_icon_size" + android:textSize="@dimen/main_small_key_icon_size" tools:ignore="HardcodedText,RtlSymmetry" /> + android:focusableInTouchMode="false"> + /> diff --git a/app/src/main/res/layout/suggestion_list_numpad.xml b/app/src/main/res/layout/suggestion_list_numpad.xml index 675843fb..67a4c689 100644 --- a/app/src/main/res/layout/suggestion_list_numpad.xml +++ b/app/src/main/res/layout/suggestion_list_numpad.xml @@ -10,6 +10,6 @@ android:layout_height="match_parent" android:gravity="center" android:minWidth="@dimen/numpad_candidate_min_width" - android:paddingHorizontal="@dimen/candidate_padding_horizontal" + android:paddingHorizontal="@dimen/suggestion_padding_horizontal" android:textSize="@dimen/numpad_candidate_font_size" /> diff --git a/app/src/main/res/values-night-v31/styles.xml b/app/src/main/res/values-night-v31/styles.xml index 05986c87..4df64d9b 100644 --- a/app/src/main/res/values-night-v31/styles.xml +++ b/app/src/main/res/values-night-v31/styles.xml @@ -1,7 +1,9 @@ - - @@ -24,7 +26,7 @@ - diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 00000000..a355276c --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,19 @@ + + + #292e33 + #d4d5d6 + + #484c4f + #fff + #b6b7b9 + + #373c41 + #898c8f + + #5e97f6 + #fff + + #007ACC + #fff + #888888 + diff --git a/app/src/main/res/values-night/styles.xml b/app/src/main/res/values-night/styles.xml new file mode 100644 index 00000000..1b137a30 --- /dev/null +++ b/app/src/main/res/values-night/styles.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-v31/styles.xml b/app/src/main/res/values-v31/styles.xml index 16264cc3..830a9bad 100644 --- a/app/src/main/res/values-v31/styles.xml +++ b/app/src/main/res/values-v31/styles.xml @@ -1,7 +1,9 @@ - - - diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 3fc4264d..0a7c72f8 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,8 +1,28 @@ + - - #242424 + #e8eaed + #3d3d3f + #fff + #333 + #666 + + #ccced5 + #888 + + #1a73e8 + #fff + + #8ab5f6 + #000 + #888888 + + + + #D3D3D3 #202020 #B8B8B8 @@ -12,8 +32,6 @@ #CCC - #C0C0C0 - #2C2C2C #CCCCCC #555555 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 7a102f38..7166cafd 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,18 +1,23 @@ - 18sp - 26sp - 6sp + 26sp + 16sp + 18sp + 6sp + 32sp + 44dp + 46dp + + 65dp + + 48dp 72dp + 16dp + 12dp - 44dp - 24sp - 6dp - 12sp - - + 30dp 12dp 16dp @@ -21,10 +26,6 @@ 19sp - - 16dp - 12dp - 10000dp 6dp @@ -37,4 +38,7 @@ 17sp 40dp 36dp + + 17sp + 6dp diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 13d334a0..5b0e621c 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,7 +1,118 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -