From bf1b680b4a335a088907ef5c862e6a466d7aabee Mon Sep 17 00:00:00 2001 From: aminecmi Date: Tue, 27 Sep 2022 10:21:42 +0200 Subject: [PATCH 1/5] Daark theme working. --- androidApp/build.gradle.kts | 2 - .../android/AddSourceActivity.kt | 5 -- .../android/HomeActivity.kt | 32 ++-------- .../android/LoginActivity.kt | 3 + .../apps/readerforselfossv2/android/MyApp.kt | 11 ---- .../android/ReaderActivity.kt | 5 -- .../android/SourcesActivity.kt | 5 -- .../android/settings/SettingsActivity.kt | 22 ------- .../android/themes/AppColors.kt | 54 ++--------------- .../main/res/drawable/background_splash.xml | 7 ++- .../main/res/layout/activity_add_source.xml | 7 +-- .../src/main/res/layout/activity_home.xml | 10 ++-- .../src/main/res/layout/activity_image.xml | 4 +- .../src/main/res/layout/activity_login.xml | 4 +- .../src/main/res/layout/activity_reader.xml | 4 +- .../src/main/res/layout/activity_settings.xml | 2 +- .../src/main/res/layout/activity_sources.xml | 4 +- .../src/main/res/menu/settings_theme.xml | 10 ---- .../src/main/res/values-night/styles.xml | 13 +++++ androidApp/src/main/res/values/attrs.xml | 1 + androidApp/src/main/res/values/colors.xml | 2 - androidApp/src/main/res/values/styles.xml | 58 ++----------------- androidApp/src/main/res/xml/pref_theme.xml | 24 -------- .../service/AppSettingsService.kt | 13 +++++ 24 files changed, 67 insertions(+), 235 deletions(-) delete mode 100644 androidApp/src/main/res/menu/settings_theme.xml create mode 100644 androidApp/src/main/res/values-night/styles.xml diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index 00e1abc..665c3af 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -167,8 +167,6 @@ dependencies { implementation("com.mikepenz:materialdrawer:8.4.5") // Themes - implementation("com.52inc:scoops:1.0.0") - implementation("com.jaredrummler:colorpicker:1.1.0") implementation("com.github.rubensousa:floatingtoolbar:1.5.1") // Pager diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/AddSourceActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/AddSourceActivity.kt index 137764b..f199700 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/AddSourceActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/AddSourceActivity.kt @@ -13,7 +13,6 @@ import bou.amine.apps.readerforselfossv2.android.utils.isBaseUrlInvalid import bou.amine.apps.readerforselfossv2.model.NetworkUnavailableException import bou.amine.apps.readerforselfossv2.repository.Repository import bou.amine.apps.readerforselfossv2.service.AppSettingsService -import com.ftinc.scoop.Scoop import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -42,10 +41,6 @@ class AddSourceActivity : AppCompatActivity(), DIAware { setContentView(view) - val scoop = Scoop.getInstance() - scoop.bind(this, Toppings.PRIMARY.value, binding.toolbar) - scoop.bindStatusBar(this, Toppings.PRIMARY_DARK.value) - val drawable = binding.nameInput.background drawable.setTint(appColors.colorAccent) diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt index 50f212c..3acb5f1 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt @@ -15,6 +15,9 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.ActionBarDrawerToggle import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate +import androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO +import androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES import androidx.appcompat.widget.SearchView import androidx.core.view.doOnNextLayout import androidx.drawerlayout.widget.DrawerLayout @@ -43,7 +46,6 @@ import com.ashokvarma.bottomnavigation.BottomNavigationItem import com.ashokvarma.bottomnavigation.TextBadgeItem import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions -import com.ftinc.scoop.Scoop import com.mikepenz.aboutlibraries.LibsBuilder import com.mikepenz.materialdrawer.holder.BadgeStyle import com.mikepenz.materialdrawer.holder.ColorHolder @@ -95,7 +97,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar private val settingsLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { appSettingsService.refreshUserSettings() - recreate() + AppCompatDelegate.setDefaultNightMode(if (appSettingsService.isDarkThemeEnabled()) MODE_NIGHT_YES else MODE_NIGHT_NO) } override val di by closestDI() @@ -127,8 +129,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar setContentView(view) - handleThemeBinding() - setSupportActionBar(binding.toolBar) supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setHomeButtonEnabled(true) @@ -234,27 +234,24 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar tabNewBadge = TextBadgeItem() .setText("") .setHideOnSelect(false).hide(false) - .setBackgroundColor(appColors.colorPrimary) tabArchiveBadge = TextBadgeItem() .setText("") .setHideOnSelect(false).hide(false) - .setBackgroundColor(appColors.colorPrimary) tabStarredBadge = TextBadgeItem() .setText("") .setHideOnSelect(false).hide(false) - .setBackgroundColor(appColors.colorPrimary) val tabNew = BottomNavigationItem( R.drawable.ic_tab_fiber_new_black_24dp, getString(R.string.tab_new) - ).setActiveColor(appColors.colorAccent) + ) .setBadgeItem(tabNewBadge) val tabArchive = BottomNavigationItem( R.drawable.ic_tab_archive_black_24dp, getString(R.string.tab_read) - ).setActiveColor(appColors.colorAccentDark) + ) .setBadgeItem(tabArchiveBadge) val tabStarred = BottomNavigationItem( @@ -270,7 +267,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar .setFirstSelectedPosition(0) .initialise() binding.bottomBar.setMode(BottomNavigationBar.MODE_SHIFTING) - binding.bottomBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC) if (fromTabShortcut) { binding.bottomBar.selectTab(elementsShown.position - 1) @@ -284,8 +280,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar handleDrawerItems() - handleThemeUpdate() - reloadLayoutManager() if (appSettingsService.isInfiniteLoadingEnabled()) { @@ -310,20 +304,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar customTabActivityHelper.unbindCustomTabsService(this) } - private fun handleThemeBinding() { - val scoop = Scoop.getInstance() - scoop.bind(this, Toppings.PRIMARY.value, binding.toolBar) - scoop.bindStatusBar(this, Toppings.PRIMARY_DARK.value) - } - - private fun handleThemeUpdate() { - - val scoop = Scoop.getInstance() - scoop.update(Toppings.PRIMARY.value, appColors.colorPrimary) - - scoop.update(Toppings.PRIMARY_DARK.value, appColors.colorPrimaryDark) - } - private fun initDrawer() { DrawerImageLoader.init(object : AbstractDrawerImageLoader() { override fun set(imageView: ImageView, uri: Uri, placeholder: Drawable, tag: String?) { diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/LoginActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/LoginActivity.kt index 657feb6..af70159 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/LoginActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/LoginActivity.kt @@ -12,6 +12,7 @@ import android.view.inputmethod.EditorInfo import android.widget.TextView import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate import bou.amine.apps.readerforselfossv2.android.databinding.ActivityLoginBinding import bou.amine.apps.readerforselfossv2.android.themes.AppColors import bou.amine.apps.readerforselfossv2.android.utils.isBaseUrlInvalid @@ -41,6 +42,8 @@ class LoginActivity : AppCompatActivity(), DIAware { appColors = AppColors(this@LoginActivity) super.onCreate(savedInstanceState) + AppCompatDelegate.setDefaultNightMode(if (appSettingsService.isDarkThemeEnabled()) AppCompatDelegate.MODE_NIGHT_YES else AppCompatDelegate.MODE_NIGHT_NO) + binding = ActivityLoginBinding.inflate(layoutInflater) val view = binding.root diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt index 4e7c2d4..0268a1e 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt @@ -21,7 +21,6 @@ import bou.amine.apps.readerforselfossv2.repository.Repository import bou.amine.apps.readerforselfossv2.service.AppSettingsService import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions -import com.ftinc.scoop.Scoop import com.github.ln_12.library.ConnectivityStatus import com.mikepenz.materialdrawer.util.AbstractDrawerImageLoader import com.mikepenz.materialdrawer.util.DrawerImageLoader @@ -54,8 +53,6 @@ class MyApp : MultiDexApplication(), DIAware { initDrawerImageLoader() - initTheme() - tryToHandleBug() handleNotificationChannels() @@ -117,14 +114,6 @@ class MyApp : MultiDexApplication(), DIAware { }) } - private fun initTheme() { - Scoop.waffleCone() - .addFlavor(getString(R.string.default_theme), R.style.NoBar, true) - .addFlavor(getString(R.string.default_dark_theme), R.style.NoBarDark, false) - .setSharedPreferences(PreferenceManager.getDefaultSharedPreferences(this)) - .initialize() - } - private fun tryToHandleBug() { val oldHandler = Thread.getDefaultUncaughtExceptionHandler() diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/ReaderActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/ReaderActivity.kt index ad6a23c..0bb6186 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/ReaderActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/ReaderActivity.kt @@ -17,7 +17,6 @@ import bou.amine.apps.readerforselfossv2.android.themes.Toppings import bou.amine.apps.readerforselfossv2.model.SelfossModel import bou.amine.apps.readerforselfossv2.repository.Repository import bou.amine.apps.readerforselfossv2.service.AppSettingsService -import com.ftinc.scoop.Scoop import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -62,10 +61,6 @@ class ReaderActivity : AppCompatActivity(), DIAware { setContentView(view) - val scoop = Scoop.getInstance() - scoop.bind(this, Toppings.PRIMARY.value, binding.toolBar) - scoop.bindStatusBar(this, Toppings.PRIMARY_DARK.value) - setSupportActionBar(binding.toolBar) supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/SourcesActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/SourcesActivity.kt index d28b290..15d93bd 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/SourcesActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/SourcesActivity.kt @@ -12,7 +12,6 @@ import bou.amine.apps.readerforselfossv2.android.themes.AppColors import bou.amine.apps.readerforselfossv2.android.themes.Toppings import bou.amine.apps.readerforselfossv2.model.SelfossModel import bou.amine.apps.readerforselfossv2.repository.Repository -import com.ftinc.scoop.Scoop import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -33,10 +32,6 @@ class SourcesActivity : AppCompatActivity(), DIAware { binding = ActivitySourcesBinding.inflate(layoutInflater) val view = binding.root - val scoop = Scoop.getInstance() - scoop.bind(this, Toppings.PRIMARY.value, binding.toolbar) - scoop.bindStatusBar(this, Toppings.PRIMARY_DARK.value) - super.onCreate(savedInstanceState) setContentView(view) diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/settings/SettingsActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/settings/SettingsActivity.kt index 67148bb..dc0e046 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/settings/SettingsActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/settings/SettingsActivity.kt @@ -22,7 +22,6 @@ import bou.amine.apps.readerforselfossv2.android.databinding.ActivitySettingsBin import bou.amine.apps.readerforselfossv2.android.themes.AppColors import bou.amine.apps.readerforselfossv2.android.themes.Toppings import bou.amine.apps.readerforselfossv2.service.AppSettingsService -import com.ftinc.scoop.Scoop private const val TITLE_TAG = "settingsActivityTitle" @@ -31,15 +30,8 @@ class SettingsActivity : AppCompatActivity(), override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("dark_theme", false)) { - setTheme(R.style.NoBarDark) - } val binding = ActivitySettingsBinding.inflate(layoutInflater) - val scoop = Scoop.getInstance() - scoop.bind(this, Toppings.PRIMARY.value, binding.toolbar) - scoop.bindStatusBar(this, Toppings.PRIMARY_DARK.value) - setContentView(binding.root) if (savedInstanceState == null) { supportFragmentManager @@ -171,20 +163,6 @@ class SettingsActivity : AppCompatActivity(), setPreferencesFromResource(R.xml.pref_theme, rootKey) setHasOptionsMenu(true) } - - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) - inflater.inflate(R.menu.settings_theme, menu) - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - val id = item.itemId - if (id == R.id.clear) { - AppColors.resetColors() - requireActivity().recreate() - } - return super.onOptionsItemSelected(item) - } } class LinksPreferenceFragment : PreferenceFragmentCompat() { diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/themes/AppColors.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/themes/AppColors.kt index bd01677..59619b1 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/themes/AppColors.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/themes/AppColors.kt @@ -7,66 +7,20 @@ import com.russhwolf.settings.Settings class AppColors(a: Activity) { - @ColorInt val colorPrimary: Int - @ColorInt val colorPrimaryDark: Int - @ColorInt val colorAccent: Int - @ColorInt val colorAccentDark: Int - @ColorInt val colorBackground: Int - @ColorInt val textColor: Int + @ColorInt val colorPrimary: Int = a.resources.getColor(R.color.colorPrimary) + @ColorInt val colorPrimaryDark: Int = a.resources.getColor(R.color.colorPrimaryDark) + @ColorInt val colorAccent: Int = a.resources.getColor(R.color.colorAccent) + @ColorInt val colorAccentDark: Int = a.resources.getColor(R.color.colorAccentDark) val isDarkTheme: Boolean init { val settings = Settings() - - colorPrimary = - settings.getInt( - "color_primary", - a.resources.getColor(R.color.colorPrimary) - ) - colorPrimaryDark = - settings.getInt( - "color_primary_dark", - a.resources.getColor(R.color.colorPrimaryDark) - ) - colorAccent = - settings.getInt( - "color_accent", - a.resources.getColor(R.color.colorAccent) - ) - colorAccentDark = - settings.getInt( - "color_accent_dark", - a.resources.getColor(R.color.colorAccentDark) - ) isDarkTheme = settings.getBoolean( "dark_theme", false ) - colorBackground = if (isDarkTheme) { - a.setTheme(R.style.NoBarDark) - a.resources.getColor(R.color.darkBackground) - } else { - a.setTheme(R.style.NoBar) - a.resources.getColor(R.color.grey_50) - } - - textColor = if (isDarkTheme) { - a.resources.getColor(R.color.white) - } else { - a.resources.getColor(R.color.grey_900) - } } - companion object { - fun resetColors() { - val settings = Settings() - settings.remove("color_primary") - settings.remove("color_primary_dark") - settings.remove("color_accent") - settings.remove("color_accent_dark") - settings.remove("dark_theme") - } - } } diff --git a/androidApp/src/main/res/drawable/background_splash.xml b/androidApp/src/main/res/drawable/background_splash.xml index 32241ec..bef5ded 100644 --- a/androidApp/src/main/res/drawable/background_splash.xml +++ b/androidApp/src/main/res/drawable/background_splash.xml @@ -1,8 +1,11 @@ - + + + + + + + /> @@ -107,8 +107,7 @@ app:layout_constraintTop_toBottomOf="@+id/tags" app:layout_constraintRight_toRightOf="parent" app:layout_constraintLeft_toLeftOf="parent" - android:layout_height="40dp" - android:theme="@style/App.Spinner"/> + android:layout_height="40dp"/>