1
0
Fork 0

moved the system info and interaction utils to their own package

This commit is contained in:
sspanak 2025-03-28 11:31:06 +02:00 committed by Dimo Karaivanov
parent ab46a158ea
commit 533d2a6cde
51 changed files with 115 additions and 78 deletions

View file

@ -15,8 +15,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.util.Permissions;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
import io.github.sspanak.tt9.util.sys.Permissions;
public abstract class AbstractExporter extends AbstractFileProcessor {
protected static String FILE_EXTENSION = ".csv";

View file

@ -5,6 +5,7 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import io.github.sspanak.tt9.ime.helpers.StandardInputType;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class InputType extends StandardInputType {
private final boolean isUs;

View file

@ -3,16 +3,16 @@ package io.github.sspanak.tt9.ime;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.db.DataStore;
import io.github.sspanak.tt9.db.words.DictionaryLoader;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.ime.modes.InputMode;
import io.github.sspanak.tt9.ime.modes.InputModeKind;
import io.github.sspanak.tt9.languages.LanguageCollection;
import io.github.sspanak.tt9.ui.UI;
import io.github.sspanak.tt9.ui.dialogs.AddWordDialog;
import io.github.sspanak.tt9.util.Clipboard;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.SystemSettings;
import io.github.sspanak.tt9.util.Ternary;
import io.github.sspanak.tt9.util.sys.Clipboard;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
import io.github.sspanak.tt9.util.sys.SystemSettings;
abstract public class CommandHandler extends TextEditingHandler {
@Override

View file

@ -5,8 +5,8 @@ import android.view.KeyEvent;
import io.github.sspanak.tt9.ime.helpers.Key;
import io.github.sspanak.tt9.preferences.screens.debug.ItemInputHandlingMode;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.SystemSettings;
import io.github.sspanak.tt9.util.Timer;
import io.github.sspanak.tt9.util.sys.SystemSettings;
abstract class KeyPadHandler extends UiHandler {

View file

@ -3,8 +3,8 @@ package io.github.sspanak.tt9.ime;
import io.github.sspanak.tt9.ime.modes.InputModeKind;
import io.github.sspanak.tt9.languages.LanguageCollection;
import io.github.sspanak.tt9.languages.LanguageKind;
import io.github.sspanak.tt9.util.Clipboard;
import io.github.sspanak.tt9.util.Ternary;
import io.github.sspanak.tt9.util.sys.Clipboard;
abstract public class TextEditingHandler extends VoiceHandler {
protected boolean isLanguageRTL;

View file

@ -18,7 +18,7 @@ import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.ui.UI;
import io.github.sspanak.tt9.ui.dialogs.PopupDialog;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.SystemSettings;
import io.github.sspanak.tt9.util.sys.SystemSettings;
public class TraditionalT9 extends MainViewHandler {
private static final String LOG_TAG = "MAIN";

View file

@ -3,13 +3,13 @@ package io.github.sspanak.tt9.ime;
import android.view.inputmethod.InputMethodManager;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.ime.modes.InputMode;
import io.github.sspanak.tt9.ime.modes.InputModeKind;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.ui.main.ResizableMainView;
import io.github.sspanak.tt9.ui.tray.StatusBar;
import io.github.sspanak.tt9.util.SystemSettings;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
import io.github.sspanak.tt9.util.sys.SystemSettings;
abstract class UiHandler extends AbstractHandler {
protected SettingsStore settings;

View file

@ -7,9 +7,9 @@ import androidx.annotation.Nullable;
import java.util.ArrayList;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.languages.LanguageCollection;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class InputField {
public static final int IME_ACTION_ENTER = EditorInfo.IME_MASK_ACTION + 1;

View file

@ -8,7 +8,7 @@ import android.view.inputmethod.InputConnection;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import io.github.sspanak.tt9.util.Clipboard;
import io.github.sspanak.tt9.util.sys.Clipboard;
public class TextSelection {
@Nullable private final InputConnection connection;

View file

@ -6,8 +6,8 @@ import android.speech.SpeechRecognizer;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class SpeechRecognizerSupportLegacy {
final boolean isOnDeviceRecognitionAvailable;

View file

@ -14,8 +14,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.concurrent.Executors;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
class SpeechRecognizerSupportModern extends SpeechRecognizerSupportLegacy implements RecognitionSupportCallback {

View file

@ -6,7 +6,7 @@ import android.speech.SpeechRecognizer;
import androidx.annotation.NonNull;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class VoiceInputError {
public final static int ERROR_NOT_AVAILABLE = 101;

View file

@ -13,10 +13,10 @@ import androidx.annotation.Nullable;
import java.util.ArrayList;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.util.ConsumerCompat;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class VoiceInputOps {
private final static String LOG_TAG = VoiceInputOps.class.getSimpleName();

View file

@ -11,7 +11,7 @@ import java.util.HashMap;
import java.util.Locale;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.SystemSettings;
import io.github.sspanak.tt9.util.sys.SystemSettings;
public class LanguageCollection {
private static LanguageCollection self;

View file

@ -1,14 +1,13 @@
package io.github.sspanak.tt9.preferences;
import android.util.TypedValue;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import io.github.sspanak.tt9.ui.WebViewActivity;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.SystemSettings;
import io.github.sspanak.tt9.util.colors.AccentSystemColor;
import io.github.sspanak.tt9.util.colors.TextSystemColor;
import io.github.sspanak.tt9.util.sys.SystemSettings;
public class HelpActivity extends WebViewActivity {
public HelpActivity() {
@ -30,8 +29,8 @@ public class HelpActivity extends WebViewActivity {
builder.append(line);
}
return builder.toString()
.replaceFirst("color: default", getTextColor())
.replaceFirst("color: accent", getLinkColor());
.replaceFirst("color: default;", (new TextSystemColor(this)).toCssColor())
.replaceFirst("color: accent;", (new AccentSystemColor(this)).toCssColor());
} catch (Exception e) {
Logger.e(getClass().getSimpleName(), "Failed opening the help HTML document.");
return "";
@ -44,20 +43,4 @@ public class HelpActivity extends WebViewActivity {
file = file.exists() ? file : new HelpFile(this);
return file.getReader();
}
private String getTextColor() {
return colorToHex(new TextView(this).getTextColors().getDefaultColor());
}
private String getLinkColor() {
final TypedValue value = new TypedValue();
getTheme().resolveAttribute(android.R.attr.colorAccent, value, true);
return colorToHex(value.data);
}
private String colorToHex(int color) {
String textColor = String.format("%06x", color);
textColor = textColor.length() == 8 ? textColor.substring(2) : textColor;
return "color: #" + textColor;
}
}

View file

@ -35,7 +35,7 @@ import io.github.sspanak.tt9.preferences.screens.punctuation.PunctuationScreen;
import io.github.sspanak.tt9.preferences.screens.setup.SetupScreen;
import io.github.sspanak.tt9.ui.ActivityWithNavigation;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.SystemSettings;
import io.github.sspanak.tt9.util.sys.SystemSettings;
public class PreferencesActivity extends ActivityWithNavigation implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
/**

View file

@ -10,9 +10,9 @@ import androidx.appcompat.content.res.AppCompatResources;
import androidx.preference.PreferenceViewHolder;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.languages.LanguageCollection;
import io.github.sspanak.tt9.languages.LanguageKind;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
abstract public class ItemSearch extends ItemTextInput {
public ItemSearch(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {

View file

@ -3,10 +3,10 @@ package io.github.sspanak.tt9.preferences.items;
import androidx.preference.Preference;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.ui.UI;
import io.github.sspanak.tt9.util.Clipboard;
import io.github.sspanak.tt9.util.sys.Clipboard;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class ItemText extends ItemClickable {
private final PreferencesActivity activity;

View file

@ -6,11 +6,11 @@ import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.preference.PreferenceFragmentCompat;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.custom.ScreenPreferencesList;
import io.github.sspanak.tt9.preferences.settings.SettingsUI;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
abstract public class BaseScreenFragment extends PreferenceFragmentCompat {
protected PreferencesActivity activity;

View file

@ -4,8 +4,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.SwitchPreferenceCompat;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class ItemDragResize {
public final static String NAME = "pref_drag_resize";

View file

@ -6,9 +6,9 @@ import androidx.preference.Preference;
import java.util.LinkedHashMap;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.items.ItemDropDown;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class ItemSelectSettingsFontSize extends ItemDropDown {
public static final String NAME = "pref_font_size";

View file

@ -1,10 +1,10 @@
package io.github.sspanak.tt9.preferences.screens.debug;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.items.ItemText;
import io.github.sspanak.tt9.preferences.screens.BaseScreenFragment;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class DebugScreen extends BaseScreenFragment {
public static final String NAME = "Debug";

View file

@ -4,9 +4,9 @@ import androidx.annotation.NonNull;
import androidx.preference.Preference;
import androidx.preference.SwitchPreferenceCompat;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.items.ItemClickable;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class ItemPrecalculateNavbarHeight extends ItemClickable {
public static final String NAME = "hack_precalculate_navbar_height_v3";

View file

@ -9,11 +9,11 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.ime.helpers.Key;
import io.github.sspanak.tt9.preferences.custom.ScreenPreference;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.ui.UI;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class PreferenceHotkey extends ScreenPreference implements DialogInterface.OnKeyListener{
private static final int CANCEL_KEY = 0;

View file

@ -5,7 +5,7 @@ import androidx.preference.SwitchPreferenceCompat;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.items.ItemSwitch;
import io.github.sspanak.tt9.util.Permissions;
import io.github.sspanak.tt9.util.sys.Permissions;
public class ItemDictionaryNotifications extends ItemSwitch {
public static final String NAME = "dictionary_notifications";

View file

@ -9,7 +9,7 @@ import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.preferences.HelpFile;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.screens.BaseScreenFragment;
import io.github.sspanak.tt9.util.SystemSettings;
import io.github.sspanak.tt9.util.sys.SystemSettings;
public class MainSettingsScreen extends BaseScreenFragment {
final public static String NAME = "Main";

View file

@ -9,10 +9,10 @@ import android.view.textservice.TextServicesManager;
import androidx.preference.Preference;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.items.ItemClickable;
import io.github.sspanak.tt9.ui.UI;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class ItemSpellCheck extends ItemClickable {
public ItemSpellCheck(PreferencesActivity activity, Preference item) {

View file

@ -5,7 +5,7 @@ import androidx.preference.Preference;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.screens.BaseScreenFragment;
import io.github.sspanak.tt9.util.SystemSettings;
import io.github.sspanak.tt9.util.sys.SystemSettings;
public class SetupScreen extends BaseScreenFragment {
final public static String NAME = "Setup";

View file

@ -2,9 +2,9 @@ package io.github.sspanak.tt9.preferences.settings;
import android.content.Context;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.screens.debug.ItemInputHandlingMode;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
class SettingsHacks extends BaseSettings {
private boolean demoMode = false;

View file

@ -8,8 +8,8 @@ import android.view.Gravity;
import androidx.appcompat.app.AppCompatDelegate;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class SettingsUI extends SettingsTyping {
public final static int FONT_SIZE_DEFAULT = 0;

View file

@ -5,7 +5,7 @@ import android.view.WindowInsets;
import androidx.appcompat.app.AppCompatActivity;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class EdgeToEdgeActivity extends AppCompatActivity {

View file

@ -17,8 +17,8 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.HashMap;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class UI {
private static final HashMap<String, Toast> singleToasts = new HashMap<>();

View file

@ -5,10 +5,10 @@ import android.view.View;
import androidx.annotation.NonNull;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.ui.main.keys.BaseClickableKey;
import io.github.sspanak.tt9.ui.main.keys.SoftKeyNumber;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class Vibration {
@NonNull private final SettingsStore settings;

View file

@ -8,9 +8,9 @@ import android.webkit.WebViewClient;
import androidx.annotation.NonNull;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.util.Clipboard;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.sys.Clipboard;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class WebViewSafeClient extends WebViewClient {
private final Activity activity;

View file

@ -9,12 +9,12 @@ import androidx.annotation.NonNull;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.db.DataStore;
import io.github.sspanak.tt9.db.entities.AddWordResult;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.languages.LanguageCollection;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.ConsumerCompat;
import io.github.sspanak.tt9.util.ThemedContextBuilder;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class AddWordDialog extends PopupDialog {
public static final String TYPE = "tt9.popup_dialog.add_word";

View file

@ -12,7 +12,7 @@ import androidx.appcompat.app.AppCompatActivity;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.ime.TraditionalT9;
import io.github.sspanak.tt9.ui.UI;
import io.github.sspanak.tt9.util.Permissions;
import io.github.sspanak.tt9.util.sys.Permissions;
public class RequestPermissionDialog extends AppCompatActivity {
private final Permissions permissions;

View file

@ -17,10 +17,10 @@ import androidx.core.view.WindowInsetsCompat;
import java.util.ArrayList;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.ime.TraditionalT9;
import io.github.sspanak.tt9.ui.main.keys.SoftKey;
import io.github.sspanak.tt9.util.ThemedContextBuilder;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
abstract class BaseMainLayout {
protected int e2ePaddingBottomLandscape = -1;

View file

@ -9,12 +9,12 @@ import androidx.annotation.NonNull;
import java.util.ArrayList;
import io.github.sspanak.tt9.R;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.ime.TraditionalT9;
import io.github.sspanak.tt9.languages.LanguageKind;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.ui.main.keys.SoftKey;
import io.github.sspanak.tt9.ui.main.keys.SoftKeySettings;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
class MainLayoutNumpad extends BaseMainLayout {
private boolean isTextEditingShown = false;

View file

@ -5,10 +5,10 @@ import android.view.View;
import androidx.annotation.NonNull;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.ime.TraditionalT9;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.ui.Vibration;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class ResizableMainView extends MainView implements View.OnAttachStateChangeListener {
private Vibration vibration;

View file

@ -13,10 +13,10 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.preferences.settings.SettingsStore;
import io.github.sspanak.tt9.util.Text;
import io.github.sspanak.tt9.util.chars.Characters;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public class SoftKey extends BaseClickableKey {
protected RelativeLayout overlay = null;

View file

@ -10,9 +10,9 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.util.Logger;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
public abstract class DictionaryNotification {
private static final int NOTIFICATION_ID = 1;

View file

@ -5,7 +5,7 @@ import android.graphics.Paint;
import java.util.ArrayList;
import java.util.Arrays;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
class Emoji extends Punctuation {
final public static boolean NO_EMOJI_SUPPORT = !DeviceInfo.AT_LEAST_ANDROID_6;

View file

@ -5,9 +5,9 @@ import android.graphics.Paint;
import java.util.ArrayList;
import java.util.Arrays;
import io.github.sspanak.tt9.hacks.DeviceInfo;
import io.github.sspanak.tt9.languages.Language;
import io.github.sspanak.tt9.languages.LanguageKind;
import io.github.sspanak.tt9.util.sys.DeviceInfo;
class Punctuation {
public static final String AR_QUESTION_MARK = "؟";

View file

@ -0,0 +1,14 @@
package io.github.sspanak.tt9.util.colors;
import android.content.Context;
import android.util.TypedValue;
import androidx.annotation.NonNull;
public class AccentSystemColor extends SystemColor{
public AccentSystemColor(@NonNull Context context) {
final TypedValue value = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.colorAccent, value, true);
color = value.data;
}
}

View file

@ -0,0 +1,31 @@
package io.github.sspanak.tt9.util.colors;
public class SystemColor {
protected int color;
protected SystemColor(int color) {
this.color = color;
}
public SystemColor() {
color = 0;
}
final public int get() {
return color;
}
final public SystemColor toComplementary() {
return new SystemColor(0xFFFFFF - color);
}
final public String toCssColor() {
return "color:" + toHex() + ";";
}
final public String toHex() {
String hexColor = String.format("%06x", color);
hexColor = hexColor.length() == 8 ? hexColor.substring(2) : hexColor;
return "#" + hexColor;
}
}

View file

@ -0,0 +1,12 @@
package io.github.sspanak.tt9.util.colors;
import android.content.Context;
import android.widget.TextView;
import androidx.annotation.NonNull;
public class TextSystemColor extends SystemColor{
public TextSystemColor(@NonNull Context context) {
color = new TextView(context).getTextColors().getDefaultColor();
}
}

View file

@ -1,4 +1,4 @@
package io.github.sspanak.tt9.util;
package io.github.sspanak.tt9.util.sys;
import android.content.ClipData;
import android.content.ClipboardManager;

View file

@ -1,4 +1,4 @@
package io.github.sspanak.tt9.hacks;
package io.github.sspanak.tt9.util.sys;
import android.content.Context;
import android.content.res.Configuration;

View file

@ -1,4 +1,4 @@
package io.github.sspanak.tt9.hacks;
package io.github.sspanak.tt9.util.sys;
import android.content.Context;
import android.content.pm.PackageManager;

View file

@ -1,4 +1,4 @@
package io.github.sspanak.tt9.util;
package io.github.sspanak.tt9.util.sys;
import android.Manifest;
@ -9,8 +9,6 @@ import androidx.annotation.NonNull;
import java.util.HashMap;
import io.github.sspanak.tt9.hacks.DeviceInfo;
public class Permissions {
private static final HashMap<String, Boolean> firstTimeAsking = new HashMap<>();
@NonNull private final Activity activity;

View file

@ -1,4 +1,4 @@
package io.github.sspanak.tt9.util;
package io.github.sspanak.tt9.util.sys;
import android.content.Context;
import android.os.LocaleList;
@ -13,8 +13,6 @@ import androidx.annotation.Nullable;
import java.util.Locale;
import io.github.sspanak.tt9.hacks.DeviceInfo;
public class SystemSettings {
private static InputMethodManager inputManager;