mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-19 21:59:11 +00:00
toolbar key activated state now responds to settings changes
This commit is contained in:
parent
79c9a85082
commit
635cd5f8da
4 changed files with 55 additions and 15 deletions
|
@ -8,6 +8,7 @@ package helium314.keyboard.keyboard;
|
|||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
@ -40,8 +41,10 @@ import helium314.keyboard.latin.RichInputMethodSubtype;
|
|||
import helium314.keyboard.latin.WordComposer;
|
||||
import helium314.keyboard.latin.settings.Settings;
|
||||
import helium314.keyboard.latin.settings.SettingsValues;
|
||||
import helium314.keyboard.latin.suggestions.SuggestionStripView;
|
||||
import helium314.keyboard.latin.utils.AdditionalSubtypeUtils;
|
||||
import helium314.keyboard.latin.utils.CapsModeUtils;
|
||||
import helium314.keyboard.latin.utils.DeviceProtectedUtils;
|
||||
import helium314.keyboard.latin.utils.LanguageOnSpacebarUtils;
|
||||
import helium314.keyboard.latin.utils.Log;
|
||||
import helium314.keyboard.latin.utils.RecapitalizeStatus;
|
||||
|
@ -59,7 +62,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
private View mEmojiTabStripView;
|
||||
private LinearLayout mClipboardStripView;
|
||||
private HorizontalScrollView mClipboardStripScrollView;
|
||||
private View mSuggestionStripView;
|
||||
private SuggestionStripView mSuggestionStripView;
|
||||
private ClipboardHistoryView mClipboardHistoryView;
|
||||
private TextView mFakeToastView;
|
||||
private LatinIME mLatinIME;
|
||||
|
@ -325,7 +328,6 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
if (DEBUG_ACTION) {
|
||||
Log.d(TAG, "setEmojiKeyboard");
|
||||
}
|
||||
final Keyboard keyboard = mKeyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET);
|
||||
mMainKeyboardFrame.setVisibility(View.VISIBLE);
|
||||
// The visibility of {@link #mKeyboardView} must be aligned with {@link #MainKeyboardFrame}.
|
||||
// @see #getVisibleKeyboardView() and
|
||||
|
@ -346,7 +348,6 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
if (DEBUG_ACTION) {
|
||||
Log.d(TAG, "setClipboardKeyboard");
|
||||
}
|
||||
final Keyboard keyboard = mKeyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET);
|
||||
mMainKeyboardFrame.setVisibility(View.VISIBLE);
|
||||
// The visibility of {@link #mKeyboardView} must be aligned with {@link #MainKeyboardFrame}.
|
||||
// @see #getVisibleKeyboardView() and
|
||||
|
@ -634,6 +635,11 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
mKeyboardView.closing();
|
||||
}
|
||||
PointerTracker.clearOldViewData();
|
||||
final SharedPreferences prefs = DeviceProtectedUtils.getSharedPreferences(displayContext);
|
||||
if (mSuggestionStripView != null)
|
||||
prefs.unregisterOnSharedPreferenceChangeListener(mSuggestionStripView);
|
||||
if (mClipboardHistoryView != null)
|
||||
prefs.unregisterOnSharedPreferenceChangeListener(mClipboardHistoryView);
|
||||
|
||||
updateKeyboardThemeAndContextThemeWrapper(displayContext, KeyboardTheme.getKeyboardTheme(displayContext));
|
||||
mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate(R.layout.input_view, null);
|
||||
|
@ -656,6 +662,8 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
mClipboardStripScrollView = mCurrentInputView.findViewById(R.id.clipboard_strip_scroll_view);
|
||||
mSuggestionStripView = mCurrentInputView.findViewById(R.id.suggestion_strip_view);
|
||||
|
||||
prefs.registerOnSharedPreferenceChangeListener(mSuggestionStripView);
|
||||
prefs.registerOnSharedPreferenceChangeListener(mClipboardHistoryView);
|
||||
PointerTracker.switchTo(mKeyboardView);
|
||||
return mCurrentInputView;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ package helium314.keyboard.keyboard.clipboard
|
|||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.util.AttributeSet
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
|
@ -34,6 +35,7 @@ import helium314.keyboard.latin.utils.createToolbarKey
|
|||
import helium314.keyboard.latin.utils.getCodeForToolbarKey
|
||||
import helium314.keyboard.latin.utils.getCodeForToolbarKeyLongClick
|
||||
import helium314.keyboard.latin.utils.getEnabledClipboardToolbarKeys
|
||||
import helium314.keyboard.latin.utils.setToolbarButtonsActivatedStateOnPrefChange
|
||||
|
||||
@SuppressLint("CustomViewStyleable")
|
||||
class ClipboardHistoryView @JvmOverloads constructor(
|
||||
|
@ -41,7 +43,8 @@ class ClipboardHistoryView @JvmOverloads constructor(
|
|||
attrs: AttributeSet?,
|
||||
defStyle: Int = R.attr.clipboardHistoryViewStyle
|
||||
) : LinearLayout(context, attrs, defStyle), View.OnClickListener,
|
||||
ClipboardHistoryManager.OnHistoryChangeListener, OnKeyEventListener, View.OnLongClickListener {
|
||||
ClipboardHistoryManager.OnHistoryChangeListener, OnKeyEventListener,
|
||||
View.OnLongClickListener, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
private val clipboardLayoutParams = ClipboardLayoutParams(context)
|
||||
private val pinIconId: Int
|
||||
|
@ -232,4 +235,8 @@ class ClipboardHistoryView @JvmOverloads constructor(
|
|||
clipboardAdapter.notifyItemChanged(to)
|
||||
if (to < from) clipboardRecyclerView.smoothScrollToPosition(to)
|
||||
}
|
||||
|
||||
override fun onSharedPreferenceChanged(prefs: SharedPreferences?, key: String?) {
|
||||
setToolbarButtonsActivatedStateOnPrefChange(KeyboardSwitcher.getInstance().clipboardStrip, key)
|
||||
}
|
||||
}
|
|
@ -70,7 +70,7 @@ import androidx.annotation.NonNull;
|
|||
import androidx.annotation.Nullable;
|
||||
|
||||
public final class SuggestionStripView extends RelativeLayout implements OnClickListener,
|
||||
OnLongClickListener {
|
||||
OnLongClickListener, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
public interface Listener {
|
||||
void pickSuggestionManually(SuggestedWordInfo word);
|
||||
void onCodeInput(int primaryCode, int x, int y, boolean isKeyRepeat);
|
||||
|
@ -231,6 +231,12 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
|
|||
colors.setBackground(this, ColorType.STRIP_BACKGROUND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences prefs, @Nullable String key) {
|
||||
ToolbarUtilsKt.setToolbarButtonsActivatedStateOnPrefChange(mPinnedKeys, key);
|
||||
ToolbarUtilsKt.setToolbarButtonsActivatedStateOnPrefChange(mToolbar, key);
|
||||
}
|
||||
|
||||
/**
|
||||
* A connection back to the input method.
|
||||
*/
|
||||
|
@ -647,11 +653,8 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
|
|||
if (code != KeyCode.UNSPECIFIED) {
|
||||
Log.d(TAG, "click toolbar key "+tag);
|
||||
mListener.onCodeInput(code, Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE, false);
|
||||
if (tag == ToolbarKey.INCOGNITO || tag == ToolbarKey.AUTOCORRECT || tag == ToolbarKey.ONE_HANDED) {
|
||||
if (tag == ToolbarKey.INCOGNITO)
|
||||
updateKeys(); // update icon
|
||||
view.setActivated(!view.isActivated());
|
||||
}
|
||||
if (tag == ToolbarKey.INCOGNITO)
|
||||
updateKeys(); // update expand key icon
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.content.Context
|
|||
import android.content.DialogInterface
|
||||
import android.content.SharedPreferences
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import android.widget.EditText
|
||||
import android.widget.ImageButton
|
||||
import android.widget.ImageView
|
||||
|
@ -16,6 +17,7 @@ import androidx.core.content.ContextCompat
|
|||
import androidx.core.content.edit
|
||||
import androidx.core.graphics.BlendModeColorFilterCompat
|
||||
import androidx.core.graphics.BlendModeCompat
|
||||
import androidx.core.view.forEach
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.widget.doAfterTextChanged
|
||||
|
@ -26,6 +28,9 @@ import helium314.keyboard.latin.R
|
|||
import helium314.keyboard.latin.databinding.ReorderDialogItemBinding
|
||||
import helium314.keyboard.latin.settings.Settings
|
||||
import helium314.keyboard.latin.utils.ToolbarKey.*
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.serialization.json.Json
|
||||
import java.util.EnumMap
|
||||
import java.util.Locale
|
||||
|
@ -37,14 +42,31 @@ fun createToolbarKey(context: Context, iconsSet: KeyboardIconsSet, key: ToolbarK
|
|||
val contentDescriptionId = context.resources.getIdentifier(key.name.lowercase(), "string", context.packageName)
|
||||
if (contentDescriptionId != 0)
|
||||
button.contentDescription = context.getString(contentDescriptionId)
|
||||
button.isActivated = when (key) {
|
||||
INCOGNITO -> Settings.readAlwaysIncognitoMode(DeviceProtectedUtils.getSharedPreferences(context))
|
||||
setToolbarButtonActivatedState(button)
|
||||
button.setImageDrawable(iconsSet.getNewDrawable(key.name, context))
|
||||
return button
|
||||
}
|
||||
|
||||
fun setToolbarButtonsActivatedStateOnPrefChange(buttonsGroup: ViewGroup, key: String?) {
|
||||
// settings need to be updated when buttons change
|
||||
if (key != Settings.PREF_AUTO_CORRECTION
|
||||
&& key != Settings.PREF_ALWAYS_INCOGNITO_MODE
|
||||
&& key?.startsWith(Settings.PREF_ONE_HANDED_MODE_PREFIX) == false)
|
||||
return
|
||||
|
||||
GlobalScope.launch {
|
||||
delay(10) // need to wait until SettingsValues are reloaded
|
||||
buttonsGroup.forEach { if (it is ImageButton) setToolbarButtonActivatedState(it) }
|
||||
}
|
||||
}
|
||||
|
||||
private fun setToolbarButtonActivatedState(button: ImageButton) {
|
||||
button.isActivated = when (button.tag) {
|
||||
INCOGNITO -> Settings.readAlwaysIncognitoMode(DeviceProtectedUtils.getSharedPreferences(button.context))
|
||||
ONE_HANDED -> Settings.getInstance().current.mOneHandedModeEnabled
|
||||
AUTOCORRECT -> Settings.getInstance().current.mAutoCorrectionEnabledPerUserSettings
|
||||
else -> true
|
||||
}
|
||||
button.setImageDrawable(iconsSet.getNewDrawable(key.name, context))
|
||||
return button
|
||||
}
|
||||
|
||||
fun getCodeForToolbarKey(key: ToolbarKey) = Settings.getInstance().getCustomToolbarKeyCode(key) ?: when (key) {
|
||||
|
|
Loading…
Add table
Reference in a new issue