diff options
author | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2021-03-21 17:48:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-21 17:48:45 +0300 |
commit | 729896a88b17723bf5ee699ae586381cf46d0c64 (patch) | |
tree | 1d93cb0fe802b2004eccabefffbd2119235c0240 /app/src/main/java/it/niedermann | |
parent | 0df58bfd1b8d81943e66e8f077701bbaef7ae236 (diff) |
Make debug-logs accessable
Fix #880 Make debug-logs accessable
Diffstat (limited to 'app/src/main/java/it/niedermann')
5 files changed, 71 insertions, 10 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java b/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java index 5518e8e9e..cef8ec355 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java @@ -17,14 +17,35 @@ public class DeckApplication extends MultiDexApplication { public static final long NO_STACK_ID = -1L; private static String PREF_KEY_THEME; + private static String PREF_KEY_DEBUGGING; @Override public void onCreate() { PREF_KEY_THEME = getString(R.string.pref_key_dark_theme); - setAppTheme(getAppTheme(getApplicationContext())); + PREF_KEY_DEBUGGING = getString(R.string.pref_key_debugging); + setAppTheme(getAppTheme(this)); + DeckLog.enablePeristentLogs(isPersistentLoggingEnabled(this)); super.onCreate(); } + @Override + public void onLowMemory() { + super.onLowMemory(); + DeckLog.clearDebugLog(); + DeckLog.error("--- cleared log because of low memory ---"); + } + + // --------- + // Debugging + // --------- + + public static boolean isPersistentLoggingEnabled(@NonNull Context context) { + final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); + boolean enabled = sharedPreferences.getBoolean(PREF_KEY_DEBUGGING, false); + DeckLog.log("--- Read: " + PREF_KEY_DEBUGGING + " | " + enabled); + return enabled; + } + // ----------------- // Day / Night theme // ----------------- diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/DeckLog.java b/app/src/main/java/it/niedermann/nextcloud/deck/DeckLog.java index 47a0385e3..838a69265 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/DeckLog.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/DeckLog.java @@ -8,8 +8,18 @@ import java.io.PrintWriter; import java.io.StringWriter; public class DeckLog { + + private static final StringBuffer DEBUG_LOG = new StringBuffer(); + private static boolean PERSIST_LOGS = false; private static final String TAG = DeckLog.class.getSimpleName(); + public static void enablePeristentLogs(boolean persistLogs) { + PERSIST_LOGS = persistLogs; + if (!persistLogs) { + clearDebugLog(); + } + } + public enum Severity { VERBOSE, DEBUG, LOG, INFO, WARN, ERROR } @@ -39,17 +49,15 @@ public class DeckLog { } private static void log(String message, Severity severity, int stackTracePosition) { - final String print; - if (BuildConfig.DEBUG) { - final StackTraceElement caller = Thread.currentThread().getStackTrace()[stackTracePosition]; - print = caller.getMethodName() + "() (" + caller.getFileName() + ":" + caller.getLineNumber() + ") → " + message; - } else { - print = message; + if (!(PERSIST_LOGS || BuildConfig.DEBUG)) { + return; + } + final StackTraceElement caller = Thread.currentThread().getStackTrace()[stackTracePosition]; + final String print = caller.getMethodName() + "() (" + caller.getFileName() + ":" + caller.getLineNumber() + ") → " + message; + if (PERSIST_LOGS) { + DEBUG_LOG.append(print).append("\n"); } switch (severity) { - case VERBOSE: - Log.v(TAG, print); - break; case DEBUG: Log.d(TAG, print); break; @@ -106,4 +114,12 @@ public class DeckLog { } return buff.toString(); } + + public static String getDebugLog() { + return DEBUG_LOG.toString(); + } + + public static void clearDebugLog() { + DEBUG_LOG.setLength(0); + } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java index 877a5d977..b6011b247 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java @@ -53,6 +53,7 @@ import java.util.Objects; import it.niedermann.android.crosstabdnd.CrossTabDragAndDrop; import it.niedermann.android.tablayouthelper.TabLayoutHelper; import it.niedermann.android.tablayouthelper.TabTitleGenerator; +import it.niedermann.android.util.ClipboardUtil; import it.niedermann.nextcloud.deck.DeckApplication; import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.R; @@ -191,6 +192,8 @@ public class MainActivity extends BrandedActivity implements DeleteStackListener binding.navigationView.setNavigationItemSelectedListener(this); sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + mainViewModel.isDebugModeEnabled().observe(this, (enabled) -> headerBinding.copyDebugLogs.setVisibility(enabled ? View.VISIBLE : View.GONE)); + headerBinding.copyDebugLogs.setOnClickListener((v) -> ClipboardUtil.INSTANCE.copyToClipboard(this, DeckLog.getDebugLog())); switchMap(mainViewModel.hasAccounts(), hasAccounts -> { if (hasAccounts) { return mainViewModel.readAccounts(); @@ -415,6 +418,7 @@ public class MainActivity extends BrandedActivity implements DeleteStackListener headerBinding.headerView.setBackgroundColor(mainColor); @ColorInt final int headerTextColor = contrastRatioIsSufficientBigAreas(mainColor, Color.WHITE) ? Color.WHITE : Color.BLACK; DrawableCompat.setTint(headerBinding.logo.getDrawable(), headerTextColor); + DrawableCompat.setTint(headerBinding.copyDebugLogs.getDrawable(), headerTextColor); headerBinding.appName.setTextColor(headerTextColor); DrawableCompat.setTint(binding.filterIndicator.getDrawable(), getSecondaryForegroundColorDependingOnTheme(this, mainColor)); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainViewModel.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainViewModel.java index 62642971e..e7e754034 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainViewModel.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainViewModel.java @@ -9,10 +9,13 @@ import androidx.core.util.Pair; import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import androidx.preference.PreferenceManager; import java.io.File; import java.util.List; +import it.niedermann.android.sharedpreferences.SharedPreferenceBooleanLiveData; +import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.api.IResponseCallback; import it.niedermann.nextcloud.deck.model.AccessControl; import it.niedermann.nextcloud.deck.model.Account; @@ -48,6 +51,10 @@ public class MainViewModel extends AndroidViewModel { this.syncManager = new SyncManager(application); } + public LiveData<Boolean> isDebugModeEnabled() { + return new SharedPreferenceBooleanLiveData(PreferenceManager.getDefaultSharedPreferences(getApplication()), getApplication().getString(R.string.pref_key_debugging), false); + } + public Account getCurrentAccount() { return currentAccount.getValue(); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java index 1cf675f54..abc345bb7 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java @@ -24,6 +24,7 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Brande private BrandedSwitchPreference wifiOnlyPref; private BrandedSwitchPreference brandingPref; private BrandedSwitchPreference compactPref; + private BrandedSwitchPreference debuggingPref; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -77,6 +78,17 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Brande } else { DeckLog.error("Could not find preference with key: \"" + getString(R.string.pref_key_background_sync) + "\""); } + + debuggingPref = findPreference(getString(R.string.pref_key_debugging)); + if (debuggingPref != null) { + debuggingPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> { + DeckLog.enablePeristentLogs((Boolean) newValue); + DeckLog.log("persistet debug logs: " + newValue); + return true; + }); + } else { + DeckLog.error("Could not find preference with key: \"" + getString(R.string.pref_key_debugging) + "\""); + } } @Override @@ -93,5 +105,6 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Brande wifiOnlyPref.applyBrand(mainColor); brandingPref.applyBrand(mainColor); compactPref.applyBrand(mainColor); + debuggingPref.applyBrand(mainColor); } } |