Fix dark mode application on devices lower than Q
This commit is contained in:
parent
8713c1e5e6
commit
f9fd55b369
7 changed files with 84 additions and 83 deletions
|
@ -19,7 +19,7 @@ android {
|
|||
exclude 'META-INF/LICENSE'
|
||||
exclude 'META-INF/DEPENDENCIES'
|
||||
}
|
||||
compileSdkVersion 'android-Q'
|
||||
compileSdkVersion 28
|
||||
buildToolsVersion '28.0.3'
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
|
@ -27,8 +27,8 @@ android {
|
|||
}
|
||||
defaultConfig {
|
||||
applicationId "com.wbrawner.simplemarkdown"
|
||||
minSdkVersion 20
|
||||
targetSdkVersion 'Q'
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 28
|
||||
multiDexEnabled true
|
||||
versionCode 18
|
||||
versionName "0.6.0"
|
||||
|
@ -93,7 +93,7 @@ dependencies {
|
|||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
|
||||
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
|
||||
compile "androidx.core:core-ktx:1.0.2"
|
||||
implementation "androidx.core:core-ktx:1.0.2"
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
|
||||
}
|
||||
|
|
|
@ -44,10 +44,6 @@ class MainActivity : AppCompatActivity(), ActivityCompat.OnRequestPermissionsRes
|
|||
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
)
|
||||
// setOnApplyWindowInsetsListener { v, insets ->
|
||||
// pager.updatePadding(top = insets.systemWindowInsetTop)
|
||||
// insets
|
||||
// }
|
||||
}
|
||||
(application as MarkdownApplication).component.inject(this)
|
||||
pager.adapter = EditPagerAdapter(supportFragmentManager, this@MainActivity)
|
||||
|
|
|
@ -2,18 +2,19 @@ package com.wbrawner.simplemarkdown.view.activity;
|
|||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
|
||||
import com.crashlytics.android.Crashlytics;
|
||||
import com.wbrawner.simplemarkdown.BuildConfig;
|
||||
import com.wbrawner.simplemarkdown.MarkdownApplication;
|
||||
import com.wbrawner.simplemarkdown.R;
|
||||
import com.wbrawner.simplemarkdown.presentation.MarkdownPresenter;
|
||||
import com.wbrawner.simplemarkdown.utility.Constants;
|
||||
import com.wbrawner.simplemarkdown.utility.Utils;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
@ -35,6 +36,27 @@ public class SplashActivity extends AppCompatActivity {
|
|||
}
|
||||
((MarkdownApplication) getApplication()).getComponent().inject(this);
|
||||
|
||||
String darkModeValue = sharedPreferences.getString(
|
||||
getString(R.string.pref_key_dark_mode),
|
||||
getString(R.string.pref_value_auto)
|
||||
);
|
||||
|
||||
int darkMode;
|
||||
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
|
||||
darkMode = AppCompatDelegate.MODE_NIGHT_AUTO;
|
||||
} else {
|
||||
darkMode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
|
||||
}
|
||||
|
||||
if (darkModeValue != null && !darkModeValue.isEmpty()) {
|
||||
if (darkModeValue.equalsIgnoreCase(getString(R.string.pref_value_light))) {
|
||||
darkMode = AppCompatDelegate.MODE_NIGHT_NO;
|
||||
} else if (darkModeValue.equalsIgnoreCase(getString(R.string.pref_value_dark))) {
|
||||
darkMode = AppCompatDelegate.MODE_NIGHT_YES;
|
||||
}
|
||||
}
|
||||
AppCompatDelegate.setDefaultNightMode(darkMode);
|
||||
|
||||
String defaultName = Utils.getDefaultFileName(this);
|
||||
|
||||
Intent intent = getIntent();
|
||||
|
@ -45,16 +67,6 @@ public class SplashActivity extends AppCompatActivity {
|
|||
}
|
||||
|
||||
Intent startIntent = new Intent(this, MainActivity.class);
|
||||
String startScreen = PreferenceManager.getDefaultSharedPreferences(this)
|
||||
.getString(
|
||||
getString(R.string.key_default_view),
|
||||
Constants.VALUE_EDIT_VIEW
|
||||
);
|
||||
switch (startScreen) {
|
||||
case Constants.VALUE_FILE_VIEW:
|
||||
startIntent.putExtra(Constants.EXTRA_EXPLORER, true);
|
||||
break;
|
||||
}
|
||||
startActivity(startIntent);
|
||||
finish();
|
||||
}
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
package com.wbrawner.simplemarkdown.view.fragment
|
||||
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.preference.ListPreference
|
||||
import android.preference.Preference
|
||||
import android.preference.PreferenceFragment
|
||||
import android.preference.PreferenceManager
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import com.wbrawner.simplemarkdown.BuildConfig
|
||||
import com.wbrawner.simplemarkdown.R
|
||||
|
||||
|
@ -22,42 +22,51 @@ class SettingsFragment : PreferenceFragment(), SharedPreferences.OnSharedPrefere
|
|||
sharedPreferences.registerOnSharedPreferenceChangeListener(this)
|
||||
setListPreferenceSummary(
|
||||
sharedPreferences,
|
||||
findPreference(getString(R.string.key_default_view))
|
||||
findPreference(getString(R.string.pref_key_dark_mode))
|
||||
)
|
||||
if (!BuildConfig.ENABLE_CUSTOM_CSS) {
|
||||
preferenceScreen.removePreference(findPreference(getString(R.string.pref_custom_css)))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.preference_list_fragment_safe, container, false)
|
||||
}
|
||||
|
||||
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
|
||||
if (!isAdded) return
|
||||
val preference = findPreference(key)
|
||||
|
||||
if (preference is ListPreference) {
|
||||
setListPreferenceSummary(sharedPreferences, preference)
|
||||
}
|
||||
if (preference.key == getString(R.string.pref_key_dark_mode)) {
|
||||
var darkMode: Int = if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
|
||||
AppCompatDelegate.MODE_NIGHT_AUTO
|
||||
} else {
|
||||
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
|
||||
}
|
||||
val darkModeValue = sharedPreferences.getString(preference.key, null)
|
||||
if (darkModeValue != null && !darkModeValue.isEmpty()) {
|
||||
if (darkModeValue.equals(getString(R.string.pref_value_light), ignoreCase = true)) {
|
||||
darkMode = AppCompatDelegate.MODE_NIGHT_NO
|
||||
} else if (darkModeValue.equals(getString(R.string.pref_value_dark), ignoreCase = true)) {
|
||||
darkMode = AppCompatDelegate.MODE_NIGHT_YES
|
||||
}
|
||||
}
|
||||
AppCompatDelegate.setDefaultNightMode(darkMode)
|
||||
activity?.recreate()
|
||||
}
|
||||
}
|
||||
|
||||
private fun setListPreferenceSummary(sharedPreferences: SharedPreferences, preference: Preference) {
|
||||
val listPreference = preference as ListPreference
|
||||
val storedValue = sharedPreferences.getString(preference.getKey(), "")
|
||||
if (storedValue!!.isEmpty()) {
|
||||
return
|
||||
}
|
||||
var index = 0
|
||||
try {
|
||||
index = Integer.valueOf(storedValue)
|
||||
} catch (e: NumberFormatException) {
|
||||
// TODO: Report this?
|
||||
Log.e("SimpleMarkdown", "Unable to parse $storedValue to integer")
|
||||
}
|
||||
|
||||
val summary = listPreference.entries[index].toString()
|
||||
preference.setSummary(summary)
|
||||
val storedValue = sharedPreferences.getString(preference.getKey(), null) ?: return
|
||||
val index = listPreference.findIndexOfValue(storedValue)
|
||||
if (index < 0) return
|
||||
preference.setSummary(listPreference.entries[index].toString())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/action_select"
|
||||
android:icon="@drawable/ic_action_select"
|
||||
android:title="@string/action_select"
|
||||
android:visible="false"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/action_use_sdcard"
|
||||
android:checkable="true"
|
||||
android:title="@string/action_use_sdcard"
|
||||
android:visible="false"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
|
@ -12,7 +12,6 @@
|
|||
<string name="markdown_here">Markdown here…</string>
|
||||
<string name="action_save">Save</string>
|
||||
<string name="action_share">Share</string>
|
||||
<string name="hint_filename">File name</string>
|
||||
<string name="action_export">Export</string>
|
||||
<string name="no_shareable_apps">Unable to share file - no capable apps installed</string>
|
||||
<string name="share_file">Share file to…</string>
|
||||
|
@ -26,9 +25,7 @@
|
|||
<string name="error_write">An error occurred while writing the file</string>
|
||||
<string name="file_load_error">An error occurred while opening the file</string>
|
||||
<string name="action_libraries">Libraries</string>
|
||||
<string name="title_activity_explorer">ExplorerActivity</string>
|
||||
<string name="action_new">New</string>
|
||||
<string name="action_use_sdcard">Use SD Card</string>
|
||||
<string name="action_done">Done</string>
|
||||
<string name="action_open">Open</string>
|
||||
<string name="yes">Yes</string>
|
||||
|
@ -37,14 +34,7 @@
|
|||
<string name="pref_title_autosave">Enable autosave</string>
|
||||
<string name="pref_description_autosave">Automatically save files when closing the app</string>
|
||||
<string name="action_lock_swipe">Lock Swiping</string>
|
||||
<string name="key_default_view">defaultView</string>
|
||||
<string name="pref_description_default_view">Decide what you see first when you open the app</string>
|
||||
<string name="pref_title_default_view">Default View</string>
|
||||
<string name="value_edit_view">Edit View</string>
|
||||
<string name="value_explorer_view">File Explorer View</string>
|
||||
<string name="pref_description_default_root">Default Root Directory</string>
|
||||
<string name="action_select">Select</string>
|
||||
<string name="directory_up">\u2191 Go up</string>
|
||||
<string name="action_privacy">Privacy</string>
|
||||
<string name="error_reports_enabled">crashlytics.enable</string>
|
||||
<string name="pref_title_error_reports">Enable automated error reports</string>
|
||||
|
@ -58,12 +48,22 @@
|
|||
<string name="pref_custom_css_default" translatable="false">pre {overflow:scroll; padding:15px; background: #F1F1F1;}</string>
|
||||
<string name="pref_custom_css_default_dark" translatable="false">body{background:
|
||||
#000000;color: #F1F1F1;}a{color:#7b91ff;}pre{background:#111111;}</string>
|
||||
<string-array name="pref_entries_default_view">
|
||||
<item>@string/value_edit_view</item>
|
||||
<item>@string/value_explorer_view</item>
|
||||
<string name="pref_key_dark_mode">darkMode</string>
|
||||
<string name="title_dark_mode">Dark Mode</string>
|
||||
<string name="pref_value_light">Light</string>
|
||||
<string name="pref_value_dark">Dark</string>
|
||||
<string name="pref_value_auto">Auto</string>
|
||||
<string name="pref_key_dark_mode_light" translatable="false">light</string>
|
||||
<string name="pref_key_dark_mode_dark" translatable="false">dark</string>
|
||||
<string name="pref_key_dark_mode_auto" translatable="false">auto</string>
|
||||
<string-array name="pref_entries_dark_mode">
|
||||
<item>@string/pref_value_light</item>
|
||||
<item>@string/pref_value_dark</item>
|
||||
<item>@string/pref_value_auto</item>
|
||||
</string-array>
|
||||
<string-array name="pref_values_default_view">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
<string-array name="pref_values_dark_mode">
|
||||
<item>@string/pref_key_dark_mode_light</item>
|
||||
<item>@string/pref_key_dark_mode_dark</item>
|
||||
<item>@string/pref_key_dark_mode_auto</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
|
|
|
@ -3,25 +3,25 @@
|
|||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="autosave"
|
||||
android:summaryOn="@string/pref_autosave_on"
|
||||
android:summaryOff="@string/pref_autosave_off"
|
||||
android:summaryOn="@string/pref_autosave_on"
|
||||
android:title="@string/pref_title_autosave" />
|
||||
<EditTextPreference
|
||||
android:defaultValue="@string/pref_custom_css_default"
|
||||
android:key="@string/pref_custom_css"
|
||||
android:summary="@string/pref_description_custom_css"
|
||||
android:title="@string/pref_title_custom_css" />
|
||||
<ListPreference
|
||||
android:defaultValue="@string/value_edit_view"
|
||||
android:entries="@array/pref_entries_default_view"
|
||||
android:entryValues="@array/pref_values_default_view"
|
||||
android:key="@string/key_default_view"
|
||||
android:title="@string/pref_title_default_view" />
|
||||
android:entries="@array/pref_entries_dark_mode"
|
||||
android:entryValues="@array/pref_values_dark_mode"
|
||||
android:defaultValue="@string/pref_value_auto"
|
||||
android:key="@string/pref_key_dark_mode"
|
||||
android:title="@string/title_dark_mode" />
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="@string/error_reports_enabled"
|
||||
android:summaryOff="@string/pref_error_reports_off"
|
||||
android:summaryOn="@string/pref_error_reports_on"
|
||||
android:title="@string/pref_title_error_reports" />
|
||||
<EditTextPreference
|
||||
android:defaultValue="@string/pref_custom_css_default"
|
||||
android:key="@string/pref_custom_css"
|
||||
android:summary="@string/pref_description_custom_css"
|
||||
android:title="@string/pref_title_custom_css" />
|
||||
|
||||
</PreferenceScreen>
|
||||
|
|
Loading…
Reference in a new issue