diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/KeyPadHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/KeyPadHandler.java index f97368ea..016782ab 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/KeyPadHandler.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/KeyPadHandler.java @@ -74,7 +74,7 @@ abstract class KeyPadHandler extends AbstractHandler { */ @Override public void onStartInput(EditorInfo inputField, boolean restarting) { - Logger.d( + Logger.i( "KeyPadHandler", "===> Start Up; packageName: " + inputField.packageName + " inputType: " + inputField.inputType + " actionId: " + inputField.actionId + " imeOptions: " + inputField.imeOptions + " privateImeOptions: " + inputField.privateImeOptions + " extras: " + inputField.extras ); diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemText.java b/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemText.java new file mode 100644 index 00000000..383a435c --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/items/ItemText.java @@ -0,0 +1,48 @@ +package io.github.sspanak.tt9.preferences.items; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.os.Build; + +import androidx.preference.Preference; + +import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.preferences.PreferencesActivity; +import io.github.sspanak.tt9.ui.UI; + +public class ItemText extends ItemClickable { + private PreferencesActivity activity; + public ItemText(PreferencesActivity activity, Preference preference) { + super(preference); + + this.activity = activity; + } + + @Override + protected boolean onClick(Preference p) { + if (activity == null) { + return false; + } + + ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); + String label = activity.getString(R.string.app_name_short) + " / " + item.getTitle(); + clipboard.setPrimaryClip(ClipData.newPlainText(label , p.getSummary())); + + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) { + UI.toast(activity, "Text copied."); + } + + return true; + } + + public ItemText populate(String text) { + if (item != null) { + item.setSummary(text); + } + + return this; + } + + +} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/UsageStatsScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/UsageStatsScreen.java index 1a3f1f9c..25b5b655 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/UsageStatsScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/UsageStatsScreen.java @@ -1,22 +1,17 @@ package io.github.sspanak.tt9.preferences.screens; -import android.content.ClipData; -import android.content.ClipboardManager; -import android.content.Context; -import android.os.Build; - import androidx.preference.Preference; import io.github.sspanak.tt9.R; import io.github.sspanak.tt9.db.SlowQueryStats; import io.github.sspanak.tt9.preferences.PreferencesActivity; -import io.github.sspanak.tt9.ui.UI; +import io.github.sspanak.tt9.preferences.items.ItemText; public class UsageStatsScreen extends BaseScreenFragment { final public static String NAME = "UsageStats"; final private static String RESET_BUTTON = "pref_slow_queries_reset_stats"; final private static String SUMMARY_CONTAINER = "summary_container"; - final private static String QUERY_LIST_CONTAINER = "query_list_container"; + private ItemText queryListContainer; public UsageStatsScreen() { init(); } public UsageStatsScreen(PreferencesActivity activity) { init(activity); } @@ -29,7 +24,6 @@ public class UsageStatsScreen extends BaseScreenFragment { protected void onCreate() { printSummary(); printSlowQueries(); - enableLogsCopy(); Preference resetButton = findPreference(RESET_BUTTON); if (resetButton != null) { @@ -50,27 +44,12 @@ public class UsageStatsScreen extends BaseScreenFragment { } private void printSlowQueries() { - Preference queryListContainer = findPreference(QUERY_LIST_CONTAINER); - if (queryListContainer != null) { - String slowQueries = SlowQueryStats.getList(); - queryListContainer.setSummary(slowQueries.isEmpty() ? "No slow queries." : slowQueries); - } - } - - - private void enableLogsCopy() { - Preference queryListContainer = findPreference(QUERY_LIST_CONTAINER); - if (activity == null || queryListContainer == null) { - return; + if (queryListContainer == null) { + queryListContainer = new ItemText(activity, findPreference("query_list_container")); + queryListContainer.enableClickHandler(); } - ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); - queryListContainer.setOnPreferenceClickListener((Preference p) -> { - clipboard.setPrimaryClip(ClipData.newPlainText("TT9 debug log", p.getSummary())); - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) { - UI.toast(activity, "Logs copied."); - } - return true; - }); + String slowQueries = SlowQueryStats.getList(); + queryListContainer.populate(slowQueries.isEmpty() ? "No slow queries." : slowQueries); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/DebugScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/DebugScreen.java index 24e1b0d6..4773d79a 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/DebugScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/DebugScreen.java @@ -1,28 +1,26 @@ package io.github.sspanak.tt9.preferences.screens.debug; -import android.content.ClipData; -import android.content.ClipboardManager; -import android.content.Context; -import android.os.Build; - -import androidx.preference.Preference; import androidx.preference.SwitchPreferenceCompat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.R; 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.ui.UI; +import io.github.sspanak.tt9.util.DeviceInfo; +import io.github.sspanak.tt9.util.Logger; public class DebugScreen extends BaseScreenFragment { - final public static String NAME = "Debug"; - final private static String LOG_TAG = NAME + "Screen"; - final private static String SYSTEM_LOGS_SWITCH = "pref_enable_system_logs"; - final private static String LOGS_CONTAINER = "debug_logs_container"; + public static final String NAME = "Debug"; + + private static final String DEVICE_INFO_CONTAINER = "pref_device_info"; + private static final String SYSTEM_LOGS_SWITCH = "pref_enable_system_logs"; + + + private ItemText logsContainer; public DebugScreen() { init(); } public DebugScreen(PreferencesActivity activity) { init(activity); } @@ -35,8 +33,8 @@ public class DebugScreen extends BaseScreenFragment { protected void onCreate() { (new ItemLogLevel(findPreference(ItemLogLevel.NAME))).populate().preview().enableClickHandler(); (new ItemInputHandlingMode(findPreference(ItemInputHandlingMode.NAME), activity.getSettings())).populate().preview().enableClickHandler(); + (new ItemText(activity, findPreference(DEVICE_INFO_CONTAINER))).populate(new DeviceInfo().toString()).enableClickHandler(); initSystemLogsSwitch(); - enableLogsCopy(); SwitchPreferenceCompat systemLogs = findPreference(SYSTEM_LOGS_SWITCH); boolean includeSystemLogs = systemLogs != null && systemLogs.isChecked(); @@ -54,12 +52,6 @@ public class DebugScreen extends BaseScreenFragment { } private void printLogs(boolean includeSystemLogs) { - Preference logsContainer = findPreference(LOGS_CONTAINER); - if (logsContainer == null) { - Logger.w(LOG_TAG, "Logs container not found. Cannot print logs"); - return; - } - StringBuilder log = new StringBuilder(); try { Process process = Runtime.getRuntime().exec("logcat -d -v threadtime io.github.sspanak.tt9:D"); @@ -80,28 +72,10 @@ public class DebugScreen extends BaseScreenFragment { log.append("No Logs"); } - logsContainer.setSummary(log.toString()); - } - - private void enableLogsCopy() { - if (activity == null) { - Logger.w(LOG_TAG, "Activity is missing. Copying the logs will not be possible."); - return; - } - - Preference logsContainer = findPreference(LOGS_CONTAINER); if (logsContainer == null) { - Logger.w(LOG_TAG, "Logs container not found. Copying the logs will not be possible."); - return; + logsContainer = new ItemText(activity, findPreference("debug_logs_container")); + logsContainer.enableClickHandler(); } - - ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE); - logsContainer.setOnPreferenceClickListener((Preference p) -> { - clipboard.setPrimaryClip(ClipData.newPlainText("TT9 debug log", p.getSummary())); - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) { - UI.toast(activity, "Logs copied."); - } - return true; - }); + logsContainer.populate(log.toString()); } } diff --git a/app/src/main/java/io/github/sspanak/tt9/util/DeviceInfo.java b/app/src/main/java/io/github/sspanak/tt9/util/DeviceInfo.java index e60498ef..393a3eab 100644 --- a/app/src/main/java/io/github/sspanak/tt9/util/DeviceInfo.java +++ b/app/src/main/java/io/github/sspanak/tt9/util/DeviceInfo.java @@ -1,7 +1,17 @@ package io.github.sspanak.tt9.util; +import android.os.Build; + +import androidx.annotation.NonNull; + public class DeviceInfo { public static boolean isQinF21() { - return android.os.Build.MANUFACTURER.equals("DuoQin") && android.os.Build.MODEL.contains("F21"); + return Build.MANUFACTURER.equals("DuoQin") && Build.MODEL.contains("F21"); + } + + @NonNull + @Override + public String toString() { + return "\"" + Build.MANUFACTURER + "\" " + "\"" + Build.MODEL + "\""; } } diff --git a/app/src/main/res/xml/prefs_screen_debug.xml b/app/src/main/res/xml/prefs_screen_debug.xml index f2a5481c..1578d6a0 100644 --- a/app/src/main/res/xml/prefs_screen_debug.xml +++ b/app/src/main/res/xml/prefs_screen_debug.xml @@ -1,11 +1,10 @@ - + app:title="Device Info" /> + +