diff --git a/app/src/main/java/com/keylesspalace/tusky/BaseActivity.java b/app/src/main/java/com/keylesspalace/tusky/BaseActivity.java index d34dd6df8..983817ac6 100644 --- a/app/src/main/java/com/keylesspalace/tusky/BaseActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/BaseActivity.java @@ -66,13 +66,15 @@ public abstract class BaseActivity extends AppCompatActivity implements Injectab SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); - /* There isn't presently a way to globally change the theme of a whole application at - * runtime, just individual activities. So, each activity has to set its theme before any - * views are created. */ - String theme = preferences.getString("appTheme", ThemeUtils.APP_THEME_DEFAULT); - Log.d("activeTheme", theme); - if (theme.equals("black")) { - setTheme(R.style.TuskyBlackTheme); + if (!setsTheme()) { + /* There isn't presently a way to globally change the theme of a whole application at + * runtime, just individual activities. So, each activity has to set its theme before any + * views are created. */ + String theme = preferences.getString("appTheme", ThemeUtils.APP_THEME_DEFAULT); + Log.d("activeTheme", theme); + if (theme.equals("black")) { + setTheme(R.style.TuskyBlackTheme); + } } /* set the taskdescription programmatically, the theme would turn it blue */ @@ -101,6 +103,12 @@ public abstract class BaseActivity extends AppCompatActivity implements Injectab return true; } + /* override this in your activity if it does set it's own theme + and BaseActivity should not handle it*/ + protected boolean setsTheme() { + return false; + } + private static int textStyle(String name) { int style; switch (name) { diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt index 5cc8612a0..7ed2d7625 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt @@ -81,6 +81,7 @@ import com.keylesspalace.tusky.settings.PrefKeys import com.keylesspalace.tusky.util.ThemeUtils import com.keylesspalace.tusky.util.deleteStaleCachedMedia import com.keylesspalace.tusky.util.emojify +import com.keylesspalace.tusky.util.getNonNullString import com.keylesspalace.tusky.util.hide import com.keylesspalace.tusky.util.removeShortcut import com.keylesspalace.tusky.util.updateShortcut @@ -160,7 +161,13 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje } override fun onCreate(savedInstanceState: Bundle?) { + val theme = preferences.getNonNullString("appTheme", ThemeUtils.APP_THEME_DEFAULT) + if (theme == "black") { + setTheme(R.style.BlackSplashTheme) + } + installSplashScreen() + super.onCreate(savedInstanceState) // delete old notification channels @@ -278,6 +285,8 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje } } + override fun setsTheme() = true + override fun onResume() { super.onResume() NotificationHelper.clearNotificationsForActiveAccount(this, accountManager) diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index d342d6d43..7aad1024b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -36,6 +36,12 @@ @style/TuskyTheme + +