mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-05-14 05:52:47 +00:00
Add dynamic colors to settings (#454)
This commit is contained in:
parent
2beb949aed
commit
9fb59ede63
15 changed files with 129 additions and 47 deletions
|
@ -13,6 +13,7 @@ import android.content.Intent;
|
|||
import android.os.Bundle;
|
||||
|
||||
import org.dslul.openboard.inputmethod.latin.permissions.PermissionsManager;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.ActivityThemeUtils;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.NewDictionaryAdder;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
@ -44,6 +45,8 @@ public final class SettingsActivity extends AppCompatActivity
|
|||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(android.R.id.content, new SettingsFragment())
|
||||
.commit();
|
||||
|
||||
ActivityThemeUtils.setActivityTheme(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -8,46 +8,42 @@ package org.dslul.openboard.inputmethod.latin.setup;
|
|||
|
||||
import static android.util.TypedValue.COMPLEX_UNIT_DIP;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Message;
|
||||
import android.provider.Settings;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.WindowInsetsController;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.VideoView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.content.res.AppCompatResources;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.content.res.ResourcesCompat;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.core.graphics.drawable.DrawableCompat;
|
||||
|
||||
import org.dslul.openboard.inputmethod.latin.R;
|
||||
import org.dslul.openboard.inputmethod.latin.settings.SettingsActivity;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.ActivityThemeUtils;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.JniUtils;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.LeakGuardHandlerWrapper;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.Log;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.ResourceUtils;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.UncachedInputMethodManagerUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
// TODO: Use Fragment to implement welcome screen and setup steps.
|
||||
public final class SetupWizardActivity extends Activity implements View.OnClickListener {
|
||||
public final class SetupWizardActivity extends AppCompatActivity implements View.OnClickListener {
|
||||
static final String TAG = SetupWizardActivity.class.getSimpleName();
|
||||
|
||||
// For debugging purpose.
|
||||
|
@ -121,8 +117,13 @@ public final class SetupWizardActivity extends Activity implements View.OnClickL
|
|||
@Override
|
||||
protected void onCreate(final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final Context context = getApplicationContext();
|
||||
final boolean isNight = ResourceUtils.isNight(context.getResources());
|
||||
final ActionBar actionBar = getSupportActionBar();
|
||||
if (actionBar == null) {
|
||||
return;
|
||||
}
|
||||
actionBar.hide();
|
||||
getWindow().setStatusBarColor(getResources().getColor(R.color.setup_background));
|
||||
ActivityThemeUtils.setActivityTheme(this);
|
||||
|
||||
mImm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
|
||||
mHandler = new SettingsPoolingHandler(this, mImm);
|
||||
|
@ -220,27 +221,6 @@ public final class SetupWizardActivity extends Activity implements View.OnClickL
|
|||
DrawableCompat.setTintList(finishDrawable, step1.mTextColorStateList);
|
||||
mActionFinish.setCompoundDrawablesRelativeWithIntrinsicBounds(finishDrawable, null, null, null);
|
||||
mActionFinish.setOnClickListener(this);
|
||||
|
||||
// Set the status bar color
|
||||
getWindow().setStatusBarColor(getResources().getColor(R.color.setup_background));
|
||||
// Navigation bar color
|
||||
if (!isNight && !(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)) {
|
||||
getWindow().setNavigationBarColor(ColorUtils.setAlphaComponent(Color.GRAY, 180));
|
||||
} else {
|
||||
getWindow().setNavigationBarColor(getResources().getColor(R.color.setup_background));
|
||||
}
|
||||
// Set the icons of the status bar and the navigation bar light or dark
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
final WindowInsetsController controller = getWindow().getInsetsController();
|
||||
if (controller == null) return;
|
||||
if (!isNight) {
|
||||
controller.setSystemBarsAppearance(WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS, WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS);
|
||||
controller.setSystemBarsAppearance(WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS, WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS);
|
||||
}
|
||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
final View view = getWindow().getDecorView();
|
||||
view.setSystemUiVisibility(!isNight ? View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR : 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -18,7 +18,6 @@ import androidx.core.app.ActivityCompat;
|
|||
*/
|
||||
public final class SpellCheckerSettingsActivity extends AppCompatActivity
|
||||
implements ActivityCompat.OnRequestPermissionsResultCallback {
|
||||
private static final String DEFAULT_FRAGMENT = SpellCheckerSettingsFragment.class.getName();
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.dslul.openboard.inputmethod.latin.R;
|
|||
import org.dslul.openboard.inputmethod.latin.permissions.PermissionsManager;
|
||||
import org.dslul.openboard.inputmethod.latin.permissions.PermissionsUtil;
|
||||
import org.dslul.openboard.inputmethod.latin.settings.SubScreenFragment;
|
||||
import org.dslul.openboard.inputmethod.latin.utils.ActivityThemeUtils;
|
||||
|
||||
import androidx.preference.SwitchPreferenceCompat;
|
||||
|
||||
|
@ -31,8 +32,10 @@ public final class SpellCheckerSettingsFragment extends SubScreenFragment
|
|||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
addPreferencesFromResource(R.xml.spell_checker_settings);
|
||||
mLookupContactsPreference = (SwitchPreferenceCompat) findPreference(AndroidSpellCheckerService.PREF_USE_CONTACTS_KEY);
|
||||
mLookupContactsPreference = findPreference(AndroidSpellCheckerService.PREF_USE_CONTACTS_KEY);
|
||||
turnOffLookupContactsIfNoPermission();
|
||||
|
||||
ActivityThemeUtils.setActivityTheme(requireActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
package org.dslul.openboard.inputmethod.latin.utils;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
import android.view.WindowInsetsController;
|
||||
|
||||
public class ActivityThemeUtils {
|
||||
|
||||
public static void setActivityTheme(final Activity activity) {
|
||||
final boolean isNight = ResourceUtils.isNight(activity.getResources());
|
||||
|
||||
// Set the icons of the status bar and the navigation bar light or dark
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
final WindowInsetsController controller = activity.getWindow().getInsetsController();
|
||||
if (controller != null && !isNight) {
|
||||
controller.setSystemBarsAppearance(WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS, WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS);
|
||||
controller.setSystemBarsAppearance(WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS, WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS);
|
||||
}
|
||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
final View view = activity.getWindow().getDecorView();
|
||||
view.setSystemUiVisibility(!isNight ? View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR : 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -121,9 +121,7 @@ fun reorderMoreKeysDialog(context: Context, key: String, defaultSetting: String,
|
|||
override fun areItemsTheSame(p0: Pair<String, Boolean>, p1: Pair<String, Boolean>) = p0 == p1
|
||||
override fun areContentsTheSame(p0: Pair<String, Boolean>, p1: Pair<String, Boolean>) = p0 == p1
|
||||
}
|
||||
val bgColor = if (ResourceUtils.isNight(context.resources))
|
||||
ContextCompat.getColor(context, androidx.appcompat.R.color.background_floating_material_dark)
|
||||
else ContextCompat.getColor(context, androidx.appcompat.R.color.background_floating_material_light)
|
||||
val bgColor = ContextCompat.getColor(context, R.color.sliding_items_background)
|
||||
val adapter = object : ListAdapter<Pair<String, Boolean>, RecyclerView.ViewHolder>(callback) {
|
||||
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): RecyclerView.ViewHolder {
|
||||
val b = LayoutInflater.from(context).inflate(R.layout.morekeys_list_item, rv, false)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue