add internal logger, so user is able to provide logs on issues

This commit is contained in:
Helium314 2023-12-15 10:51:46 +01:00
parent 0739eca2ff
commit ad9282ea25
82 changed files with 287 additions and 171 deletions

View file

@ -7,7 +7,7 @@
package com.android.inputmethod.keyboard; package com.android.inputmethod.keyboard;
import android.graphics.Rect; import android.graphics.Rect;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -7,7 +7,7 @@
package com.android.inputmethod.latin; package com.android.inputmethod.latin;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.SparseArray; import android.util.SparseArray;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -6,7 +6,7 @@
package com.android.inputmethod.latin.utils; package com.android.inputmethod.latin.utils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.annotations.UsedForTesting; import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
import org.dslul.openboard.inputmethod.latin.NgramContext; import org.dslul.openboard.inputmethod.latin.NgramContext;

View file

@ -12,7 +12,7 @@ import android.os.Build
import android.os.SystemClock import android.os.SystemClock
import android.provider.Settings import android.provider.Settings
import android.text.TextUtils import android.text.TextUtils
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup

View file

@ -8,7 +8,7 @@ package org.dslul.openboard.inputmethod.accessibility
import android.content.Context import android.content.Context
import android.text.TextUtils import android.text.TextUtils
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import android.util.SparseIntArray import android.util.SparseIntArray
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import org.dslul.openboard.inputmethod.keyboard.Key import org.dslul.openboard.inputmethod.keyboard.Key

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.accessibility package org.dslul.openboard.inputmethod.accessibility
import android.os.SystemClock import android.os.SystemClock
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityEvent

View file

@ -8,7 +8,7 @@ package org.dslul.openboard.inputmethod.accessibility
import android.graphics.Rect import android.graphics.Rect
import android.os.Bundle import android.os.Bundle
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import android.view.View import android.view.View
import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityEvent
import android.view.accessibility.AccessibilityRecord import android.view.accessibility.AccessibilityRecord

View file

@ -8,7 +8,7 @@ package org.dslul.openboard.inputmethod.accessibility
import android.graphics.Rect import android.graphics.Rect
import android.os.SystemClock import android.os.SystemClock
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import android.util.SparseIntArray import android.util.SparseIntArray
import android.view.MotionEvent import android.view.MotionEvent
import org.dslul.openboard.inputmethod.accessibility.AccessibilityLongPressTimer.LongPressTimerCallback import org.dslul.openboard.inputmethod.accessibility.AccessibilityLongPressTimer.LongPressTimerCallback

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.accessibility package org.dslul.openboard.inputmethod.accessibility
import android.graphics.Rect import android.graphics.Rect
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import android.view.MotionEvent import android.view.MotionEvent
import org.dslul.openboard.inputmethod.keyboard.KeyDetector import org.dslul.openboard.inputmethod.keyboard.KeyDetector
import org.dslul.openboard.inputmethod.keyboard.MoreKeysKeyboardView import org.dslul.openboard.inputmethod.keyboard.MoreKeysKeyboardView

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.compat package org.dslul.openboard.inputmethod.compat
import android.text.TextUtils import android.text.TextUtils
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import java.lang.reflect.Constructor import java.lang.reflect.Constructor
import java.lang.reflect.Field import java.lang.reflect.Field
import java.lang.reflect.InvocationTargetException import java.lang.reflect.InvocationTargetException

View file

@ -13,7 +13,7 @@ import android.content.res.TypedArray;
import android.content.res.XmlResourceParser; import android.content.res.XmlResourceParser;
import android.os.Build; import android.os.Build;
import android.text.InputType; import android.text.InputType;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.SparseArray; import android.util.SparseArray;
import android.util.Xml; import android.util.Xml;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;

View file

@ -9,7 +9,7 @@ package org.dslul.openboard.inputmethod.keyboard;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.ContextThemeWrapper; import android.view.ContextThemeWrapper;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;

View file

@ -18,7 +18,7 @@ import android.graphics.Paint;
import android.graphics.Paint.Align; import android.graphics.Paint.Align;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;

View file

@ -11,7 +11,7 @@ import static java.lang.Math.abs;
import android.content.res.Resources; import android.content.res.Resources;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.os.SystemClock; import android.os.SystemClock;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;

View file

@ -10,7 +10,7 @@ import static org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;

View file

@ -11,7 +11,7 @@ import android.content.res.Resources;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.Rect; import android.graphics.Rect;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.core.graphics.PaintCompat; import androidx.core.graphics.PaintCompat;
import org.dslul.openboard.inputmethod.keyboard.Key; import org.dslul.openboard.inputmethod.keyboard.Key;

View file

@ -13,7 +13,7 @@ import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode; import android.graphics.PorterDuffXfermode;
import android.os.Handler; import android.os.Handler;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.keyboard.emoji; package org.dslul.openboard.inputmethod.keyboard.emoji;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.SparseArray; import android.util.SparseArray;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -8,7 +8,7 @@ package org.dslul.openboard.inputmethod.keyboard.internal;
import android.content.res.Resources; import android.content.res.Resources;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.R;
import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.common.Constants;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.common.Constants;
import org.dslul.openboard.inputmethod.latin.common.InputPointers; import org.dslul.openboard.inputmethod.latin.common.InputPointers;

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.SparseArray; import android.util.SparseArray;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -7,7 +7,7 @@ package org.dslul.openboard.inputmethod.keyboard.internal
import android.content.Context import android.content.Context
import android.content.res.Resources import android.content.res.Resources
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import android.util.Xml import android.util.Xml
import android.widget.Toast import android.widget.Toast
import androidx.annotation.XmlRes import androidx.annotation.XmlRes

View file

@ -9,7 +9,7 @@ package org.dslul.openboard.inputmethod.keyboard.internal;
import android.content.res.Resources; import android.content.res.Resources;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.SparseIntArray; import android.util.SparseIntArray;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -9,7 +9,7 @@ package org.dslul.openboard.inputmethod.keyboard.internal;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.annotations.UsedForTesting; import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
import org.dslul.openboard.inputmethod.latin.RichInputMethodManager; import org.dslul.openboard.inputmethod.latin.RichInputMethodManager;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.annotations.UsedForTesting; import org.dslul.openboard.inputmethod.annotations.UsedForTesting;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.MotionEvent; import android.view.MotionEvent;
import org.dslul.openboard.inputmethod.keyboard.Key; import org.dslul.openboard.inputmethod.keyboard.Key;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal; package org.dslul.openboard.inputmethod.keyboard.internal;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.annotations.UsedForTesting; import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
import org.dslul.openboard.inputmethod.keyboard.internal.MatrixUtils.MatrixOperationFailedException; import org.dslul.openboard.inputmethod.keyboard.internal.MatrixUtils.MatrixOperationFailedException;

View file

@ -3,7 +3,7 @@ package org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser
import android.content.Context import android.content.Context
import android.content.res.Configuration import android.content.res.Configuration
import android.content.res.Resources import android.content.res.Resources
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.widget.Toast import android.widget.Toast
import androidx.annotation.StringRes import androidx.annotation.StringRes

View file

@ -2,7 +2,7 @@
package org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser package org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser
import android.content.Context import android.content.Context
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardParams import org.dslul.openboard.inputmethod.keyboard.internal.KeyboardParams
import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.floris.KeyData import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.floris.KeyData
import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.floris.toTextKey import org.dslul.openboard.inputmethod.keyboard.internal.keyboard_parser.floris.toTextKey

View file

@ -7,7 +7,7 @@ import android.content.res.XmlResourceParser;
import android.os.Build; import android.os.Build;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.TypedValue; import android.util.TypedValue;
import android.util.Xml; import android.util.Xml;

View file

@ -11,7 +11,7 @@ import static org.dslul.openboard.inputmethod.latin.settings.LanguageSettingsFra
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.res.AssetFileDescriptor; import android.content.res.AssetFileDescriptor;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.common.FileUtils; import org.dslul.openboard.inputmethod.latin.common.FileUtils;
import org.dslul.openboard.inputmethod.latin.common.LocaleUtils; import org.dslul.openboard.inputmethod.latin.common.LocaleUtils;

View file

@ -11,7 +11,7 @@ import android.content.Context;
import android.net.Uri; import android.net.Uri;
import android.provider.ContactsContract; import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Contacts;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;

View file

@ -12,7 +12,7 @@ import android.content.Context;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.os.SystemClock; import android.os.SystemClock;
import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Contacts;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.ContactsManager.ContactsChangedListener; import org.dslul.openboard.inputmethod.latin.ContactsManager.ContactsChangedListener;
import org.dslul.openboard.inputmethod.latin.define.DebugFlags; import org.dslul.openboard.inputmethod.latin.define.DebugFlags;

View file

@ -12,7 +12,7 @@ import android.database.sqlite.SQLiteException;
import android.net.Uri; import android.net.Uri;
import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Contacts;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.common.Constants; import org.dslul.openboard.inputmethod.latin.common.Constants;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.latin; package org.dslul.openboard.inputmethod.latin;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import org.dslul.openboard.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import org.dslul.openboard.inputmethod.latin.common.ComposedData; import org.dslul.openboard.inputmethod.latin.common.ComposedData;

View file

@ -9,7 +9,7 @@ package org.dslul.openboard.inputmethod.latin;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
public class DictionaryDumpBroadcastReceiver extends BroadcastReceiver { public class DictionaryDumpBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = DictionaryDumpBroadcastReceiver.class.getSimpleName(); private static final String TAG = DictionaryDumpBroadcastReceiver.class.getSimpleName();

View file

@ -10,7 +10,7 @@ import android.Manifest;
import android.content.Context; import android.content.Context;
import android.provider.UserDictionary; import android.provider.UserDictionary;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.LruCache; import android.util.LruCache;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.latin; package org.dslul.openboard.inputmethod.latin;
import android.content.Context; import android.content.Context;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import java.util.Locale; import java.util.Locale;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;

View file

@ -10,7 +10,7 @@ import android.content.Context;
import android.content.res.AssetFileDescriptor; import android.content.res.AssetFileDescriptor;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.widget.Toast; import android.widget.Toast;
import org.dslul.openboard.inputmethod.latin.makedict.DictionaryHeader; import org.dslul.openboard.inputmethod.latin.makedict.DictionaryHeader;

View file

@ -13,7 +13,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo; import android.content.pm.ProviderInfo;
import android.net.Uri; import android.net.Uri;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.dictionarypack.DictionaryPackConstants; import org.dslul.openboard.inputmethod.dictionarypack.DictionaryPackConstants;
import org.dslul.openboard.inputmethod.latin.utils.TargetPackageInfoGetterTask; import org.dslul.openboard.inputmethod.latin.utils.TargetPackageInfoGetterTask;

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.latin; package org.dslul.openboard.inputmethod.latin;
import android.content.res.Resources; import android.content.res.Resources;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.Pair; import android.util.Pair;
import android.view.KeyEvent; import android.view.KeyEvent;

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.latin; package org.dslul.openboard.inputmethod.latin;
import android.content.Context; import android.content.Context;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;

View file

@ -8,7 +8,7 @@ package org.dslul.openboard.inputmethod.latin;
import android.os.Build; import android.os.Build;
import android.text.InputType; import android.text.InputType;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import org.dslul.openboard.inputmethod.latin.common.StringUtils; import org.dslul.openboard.inputmethod.latin.common.StringUtils;

View file

@ -21,7 +21,7 @@ import android.os.IBinder;
import android.os.Message; import android.os.Message;
import android.os.Process; import android.os.Process;
import android.text.InputType; import android.text.InputType;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.PrintWriterPrinter; import android.util.PrintWriterPrinter;
import android.util.Printer; import android.util.Printer;
import android.util.SparseArray; import android.util.SparseArray;

View file

@ -15,7 +15,7 @@ import android.os.SystemClock;
import android.text.SpannableStringBuilder; import android.text.SpannableStringBuilder;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.style.CharacterStyle; import android.text.style.CharacterStyle;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.CorrectionInfo; import android.view.inputmethod.CorrectionInfo;

View file

@ -11,7 +11,7 @@ import android.content.SharedPreferences;
import android.inputmethodservice.InputMethodService; import android.inputmethodservice.InputMethodService;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.IBinder; import android.os.IBinder;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.latin; package org.dslul.openboard.inputmethod.latin;
import android.os.Build; import android.os.Build;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;
import org.dslul.openboard.inputmethod.compat.InputMethodSubtypeCompatUtils; import org.dslul.openboard.inputmethod.compat.InputMethodSubtypeCompatUtils;

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.latin; package org.dslul.openboard.inputmethod.latin;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.annotations.UsedForTesting; import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
import org.dslul.openboard.inputmethod.keyboard.Keyboard; import org.dslul.openboard.inputmethod.keyboard.Keyboard;

View file

@ -11,10 +11,9 @@ import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Process; import android.os.Process;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import org.dslul.openboard.inputmethod.keyboard.KeyboardLayoutSet; import org.dslul.openboard.inputmethod.keyboard.KeyboardLayoutSet;
@ -84,11 +83,6 @@ public final class SystemBroadcastReceiver extends BroadcastReceiver {
} }
public static void toggleAppIcon(final Context context) { public static void toggleAppIcon(final Context context) {
final int appInfoFlags = context.getApplicationInfo().flags;
final boolean isSystemApp = (appInfoFlags & ApplicationInfo.FLAG_SYSTEM) > 0;
if (Log.isLoggable(TAG, Log.INFO)) {
Log.i(TAG, "toggleAppIcon() : FLAG_SYSTEM = " + isSystemApp);
}
final SharedPreferences prefs = DeviceProtectedUtils.getSharedPreferences(context); final SharedPreferences prefs = DeviceProtectedUtils.getSharedPreferences(context);
context.getPackageManager().setComponentEnabledSetting( context.getPackageManager().setComponentEnabledSetting(
new ComponentName(context, SetupActivity.class), new ComponentName(context, SetupActivity.class),

View file

@ -14,7 +14,7 @@ import android.database.sqlite.SQLiteException;
import android.net.Uri; import android.net.Uri;
import android.provider.UserDictionary.Words; import android.provider.UserDictionary.Words;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;

View file

@ -13,7 +13,7 @@ import android.text.Spanned;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.style.BackgroundColorSpan; import android.text.style.BackgroundColorSpan;
import android.text.style.SuggestionSpan; import android.text.style.SuggestionSpan;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.KeyCharacterMap; import android.view.KeyCharacterMap;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.inputmethod.CorrectionInfo; import android.view.inputmethod.CorrectionInfo;

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.latin.personalization; package org.dslul.openboard.inputmethod.latin.personalization;
import android.content.Context; import android.content.Context;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;

View file

@ -1,84 +0,0 @@
/*
* Copyright (C) 2014 The Android Open Source Project
* modified
* SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
*/
package org.dslul.openboard.inputmethod.latin.settings;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.preference.Preference;
import org.dslul.openboard.inputmethod.latin.BuildConfig;
import org.dslul.openboard.inputmethod.latin.R;
import org.dslul.openboard.inputmethod.latin.utils.SpannableStringUtils;
/**
* "About" sub screen.
*/
public final class AboutFragment extends SubScreenFragment {
@Override
public void onCreate(final Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.prefs_screen_about);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
// need to set icon tint because old android versions don't use the vector drawables
for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) {
final Preference p = getPreferenceScreen().getPreference(0);
final Drawable icon = p.getIcon();
if (icon != null)
DrawableCompat.setTint(icon, Color.WHITE);
}
}
setupHiddenFeatures();
setupVersionPref();
}
private void setupHiddenFeatures() {
Preference hiddenFeaturesPreference = findPreference("hidden_features");
hiddenFeaturesPreference.setOnPreferenceClickListener(preference -> {
final String link = "<a href=\"https://developer.android.com/reference/android/content/Context#createDeviceProtectedStorageContext()\">"
+ getString(R.string.hidden_features_text) + "</a>";
final String message = requireContext().getString(R.string.hidden_features_message, link);
final Spanned dialogMessage = SpannableStringUtils.fromHtml(message);
final AlertDialog builder = new AlertDialog.Builder(requireContext())
.setIcon(R.drawable.ic_settings_about_hidden_features)
.setTitle(R.string.hidden_features_title)
.setMessage(dialogMessage)
.setPositiveButton(R.string.dialog_close, null)
.create();
builder.show();
((TextView) builder.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
return true;
});
}
private void setupVersionPref() {
Preference versionPreference = findPreference("pref_key_version");
versionPreference.setSummary(BuildConfig.VERSION_NAME);
if (BuildConfig.DEBUG) return;
int[] count = new int[] {0};
versionPreference.setOnPreferenceClickListener((pref) -> {
if (getSharedPreferences().getBoolean(DebugSettings.PREF_SHOW_DEBUG_SETTINGS, false))
return true;
count[0]++;
if (count[0] < 5) return true;
getSharedPreferences().edit().putBoolean(DebugSettings.PREF_SHOW_DEBUG_SETTINGS, true).apply();
Toast.makeText(requireContext(), R.string.prefs_debug_settings_enabled, Toast.LENGTH_LONG).show();
return true;
});
}
}

View file

@ -0,0 +1,101 @@
/*
* Copyright (C) 2014 The Android Open Source Project
* modified
* SPDX-License-Identifier: Apache-2.0 AND GPL-3.0-only
*/
package org.dslul.openboard.inputmethod.latin.settings
import android.app.Activity
import android.content.Intent
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.text.method.LinkMovementMethod
import android.view.View
import android.widget.TextView
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.core.graphics.drawable.DrawableCompat
import androidx.preference.Preference
import org.dslul.openboard.inputmethod.latin.BuildConfig
import org.dslul.openboard.inputmethod.latin.R
import org.dslul.openboard.inputmethod.latin.utils.Log
import org.dslul.openboard.inputmethod.latin.utils.SpannableStringUtils
/**
* "About" sub screen.
*/
class AboutFragment : SubScreenFragment() {
override fun onCreate(icicle: Bundle?) {
super.onCreate(icicle)
addPreferencesFromResource(R.xml.prefs_screen_about)
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
// need to set icon tint because old android versions don't use the vector drawables
for (i in 0 until preferenceScreen.preferenceCount) {
val p = preferenceScreen.getPreference(0)
val icon = p.icon
if (icon != null) DrawableCompat.setTint(icon, Color.WHITE)
}
}
setupHiddenFeatures()
setupVersionPref()
findPreference<Preference>("log_reader")?.setOnPreferenceClickListener {
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT)
.addCategory(Intent.CATEGORY_OPENABLE)
.putExtra(Intent.EXTRA_TITLE,
requireContext().getString(R.string.english_ime_name)
.replace(" ", "_") + "_log_${System.currentTimeMillis()}.txt"
)
.setType("text/plain")
logFilePicker.launch(intent)
true
}
}
private val logFilePicker = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode != Activity.RESULT_OK) return@registerForActivityResult
val uri = result.data?.data ?: return@registerForActivityResult
activity?.contentResolver?.openOutputStream(uri)?.use { os ->
os.bufferedWriter().use { it.write(Log.getLog().joinToString("\n")) }
}
}
private fun setupHiddenFeatures() {
findPreference<Preference>("hidden_features")?.onPreferenceClickListener =
Preference.OnPreferenceClickListener {
val link = ("<a href=\"https://developer.android.com/reference/android/content/Context#createDeviceProtectedStorageContext()\">"
+ getString(R.string.hidden_features_text) + "</a>")
val message = requireContext().getString(R.string.hidden_features_message, link)
val dialogMessage = SpannableStringUtils.fromHtml(message)
val builder = AlertDialog.Builder(requireContext())
.setIcon(R.drawable.ic_settings_about_hidden_features)
.setTitle(R.string.hidden_features_title)
.setMessage(dialogMessage)
.setPositiveButton(R.string.dialog_close, null)
.create()
builder.show()
(builder.findViewById<View>(android.R.id.message) as TextView).movementMethod = LinkMovementMethod.getInstance()
true
}
}
private fun setupVersionPref() {
val versionPreference = findPreference<Preference>("pref_key_version") ?: return
versionPreference.summary = BuildConfig.VERSION_NAME
if (BuildConfig.DEBUG) return
var count = 0
versionPreference.onPreferenceClickListener =
Preference.OnPreferenceClickListener {
if (sharedPreferences.getBoolean(DebugSettings.PREF_SHOW_DEBUG_SETTINGS, false))
return@OnPreferenceClickListener true
count++
if (count < 5) return@OnPreferenceClickListener true
sharedPreferences.edit().putBoolean(DebugSettings.PREF_SHOW_DEBUG_SETTINGS, true).apply()
Toast.makeText(requireContext(), R.string.prefs_debug_settings_enabled, Toast.LENGTH_LONG).show()
true
}
}
}

View file

@ -11,7 +11,7 @@ import android.content.SharedPreferences
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.util.Log import org.dslul.openboard.inputmethod.latin.utils.Log
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.preference.Preference import androidx.preference.Preference

View file

@ -14,7 +14,7 @@ import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Color; import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.ContextThemeWrapper; import android.view.ContextThemeWrapper;

View file

@ -11,7 +11,7 @@ import android.content.SharedPreferences;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;

View file

@ -14,7 +14,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;

View file

@ -17,7 +17,7 @@ import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message; import android.os.Message;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.ImageView; import android.widget.ImageView;

View file

@ -9,7 +9,7 @@ package org.dslul.openboard.inputmethod.latin.spellcheck;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Binder; import android.os.Binder;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.textservice.SentenceSuggestionsInfo; import android.view.textservice.SentenceSuggestionsInfo;
import android.view.textservice.SuggestionsInfo; import android.view.textservice.SuggestionsInfo;
import android.view.textservice.TextInfo; import android.view.textservice.TextInfo;

View file

@ -13,7 +13,7 @@ import android.os.Binder;
import android.provider.UserDictionary.Words; import android.provider.UserDictionary.Words;
import android.service.textservice.SpellCheckerService.Session; import android.service.textservice.SpellCheckerService.Session;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.LruCache; import android.util.LruCache;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;

View file

@ -8,7 +8,7 @@ package org.dslul.openboard.inputmethod.latin.suggestions;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -8,7 +8,7 @@ package org.dslul.openboard.inputmethod.latin.utils;
import android.os.Build; import android.os.Build;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;
import org.dslul.openboard.inputmethod.annotations.UsedForTesting; import org.dslul.openboard.inputmethod.annotations.UsedForTesting;

View file

@ -12,7 +12,7 @@ import android.content.Context;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
public final class ApplicationUtils { public final class ApplicationUtils {
private static final String TAG = ApplicationUtils.class.getSimpleName(); private static final String TAG = ApplicationUtils.class.getSimpleName();

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.latin.utils; package org.dslul.openboard.inputmethod.latin.utils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.latin.utils; package org.dslul.openboard.inputmethod.latin.utils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import com.android.inputmethod.latin.utils.BinaryDictionaryUtils; import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.latin.utils; package org.dslul.openboard.inputmethod.latin.utils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.define.DebugFlags; import org.dslul.openboard.inputmethod.latin.define.DebugFlags;

View file

@ -10,7 +10,7 @@ import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Build; import android.os.Build;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;

View file

@ -11,7 +11,7 @@ import android.content.Context;
import android.content.res.AssetManager; import android.content.res.AssetManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;

View file

@ -6,7 +6,7 @@
package org.dslul.openboard.inputmethod.latin.utils; package org.dslul.openboard.inputmethod.latin.utils;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.annotations.UsedForTesting; import org.dslul.openboard.inputmethod.annotations.UsedForTesting;
@ -47,7 +47,7 @@ public class ExecutorUtils {
public Thread newThread(final Runnable runnable) { public Thread newThread(final Runnable runnable) {
Thread thread = new Thread(runnable, TAG); Thread thread = new Thread(runnable, TAG);
thread.setUncaughtExceptionHandler((thread1, ex) -> thread.setUncaughtExceptionHandler((thread1, ex) ->
Log.w(mName + "-" + runnable.getClass().getSimpleName(), ex)); Log.w(mName, runnable.getClass().getSimpleName(), ex));
return thread; return thread;
} }
} }

View file

@ -7,7 +7,7 @@
package org.dslul.openboard.inputmethod.latin.utils; package org.dslul.openboard.inputmethod.latin.utils;
import android.app.Application; import android.app.Application;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import org.dslul.openboard.inputmethod.latin.BuildConfig; import org.dslul.openboard.inputmethod.latin.BuildConfig;
import org.dslul.openboard.inputmethod.latin.define.JniLibName; import org.dslul.openboard.inputmethod.latin.define.JniLibName;

View file

@ -8,7 +8,7 @@ package org.dslul.openboard.inputmethod.latin.utils;
import android.util.JsonReader; import android.util.JsonReader;
import android.util.JsonWriter; import android.util.JsonWriter;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import java.io.Closeable; import java.io.Closeable;
import java.io.IOException; import java.io.IOException;

View file

@ -0,0 +1,98 @@
package org.dslul.openboard.inputmethod.latin.utils
import android.os.Build
import java.time.LocalDateTime
import java.util.Date
/**
* Logger that does the android logging, but also allows reading the log in the app.
* It's only a little slower than the android logger, but since both are used we end up at
* half performance (still fast enough to not be noticeable, unless spamming thousands of log lines)
*/
object Log {
@JvmStatic
fun wtf(tag: String?, message: String) {
log(LogLine('F', tag, message))
android.util.Log.wtf(tag, message)
}
@JvmStatic
fun e(tag: String?, message: String, e: Throwable) {
log(LogLine('E', tag, "$message\n${e.stackTraceToString()}"))
android.util.Log.e(tag, message, e)
}
@JvmStatic
fun e(tag: String?, message: String) {
log(LogLine('E', tag, message))
android.util.Log.e(tag, message)
}
@JvmStatic
fun w(tag: String?, message: String, e: Throwable) {
log(LogLine('W', tag, "$message\n${e.stackTraceToString()}"))
android.util.Log.w(tag, message, e)
}
@JvmStatic
fun w(tag: String?, message: String) {
log(LogLine('W', tag, message))
android.util.Log.w(tag, message)
}
@JvmStatic
fun i(tag: String?, message: String, e: Throwable) {
log(LogLine('I', tag, "$message\n${e.stackTraceToString()}"))
android.util.Log.i(tag, message, e)
}
@JvmStatic
fun i(tag: String?, message: String) {
log(LogLine('I', tag, message))
android.util.Log.i(tag, message)
}
@JvmStatic
fun d(tag: String?, message: String, e: Throwable) {
log(LogLine('D', tag, "$message\n${e.stackTraceToString()}"))
android.util.Log.d(tag, message, e)
}
@JvmStatic
fun d(tag: String?, message: String) {
log(LogLine('D', tag, message))
android.util.Log.d(tag, message)
}
@JvmStatic
fun v(tag: String?, message: String) {
log(LogLine('V', tag, message))
android.util.Log.v(tag, message)
}
private fun log(line: LogLine) {
synchronized(logLines) {
if (logLines.size > 12000) // clear oldest entries if list gets too long
logLines.subList(0, 2000).clear()
logLines.add(line)
}
}
private val logLines: MutableList<LogLine> = ArrayList(2000)
/** returns a copy of [logLines] */
fun getLog() = synchronized(logLines) { logLines.toList() }
}
data class LogLine(val level: Char, val tag: String?, val message: String) {
// time can be Date or LocalDateTime, doesn't matter because but it's used for toString only
private val time = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
LocalDateTime.now()
} else {
Date(System.currentTimeMillis())
}
override fun toString(): String = // should look like a normal android log line, at least for api26+
"${time.toString().replace('T', ' ')} $level $tag: $message"
}

View file

@ -12,7 +12,7 @@ import android.content.res.TypedArray;
import android.os.Build; import android.os.Build;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.util.TypedValue; import android.util.TypedValue;
import org.dslul.openboard.inputmethod.annotations.UsedForTesting; import org.dslul.openboard.inputmethod.annotations.UsedForTesting;

View file

@ -8,7 +8,7 @@ package org.dslul.openboard.inputmethod.latin.utils;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.util.Log; import org.dslul.openboard.inputmethod.latin.utils.Log;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;
import org.dslul.openboard.inputmethod.latin.R; import org.dslul.openboard.inputmethod.latin.R;

View file

@ -662,6 +662,8 @@ New dictionary:
<string name="version">Version</string> <string name="version">Version</string>
<!-- github repo link for about screen--> <!-- github repo link for about screen-->
<string name="about_github_link">View on GitHub</string> <string name="about_github_link">View on GitHub</string>
<!-- preference title for saving the log to a file -->
<string name="save_log">Save log</string>
<!-- license for about screen--> <!-- license for about screen-->
<string name="license">Open-source license</string> <string name="license">Open-source license</string>
<!-- license link for about screen--> <!-- license link for about screen-->

View file

@ -41,4 +41,9 @@
android:action="android.intent.action.VIEW" android:action="android.intent.action.VIEW"
android:data="https://github.com/Helium314/openboard" /> android:data="https://github.com/Helium314/openboard" />
</Preference> </Preference>
<Preference
android:title="@string/save_log"
android:key="log_reader" > <!-- todo (low priority): add icon -->
</Preference>
</PreferenceScreen> </PreferenceScreen>