From 213be5fa25a39cc2d5c9a186609fb21fc577d5ee Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Tue, 7 Feb 2017 16:47:34 +0800 Subject: [PATCH] close #704 --- .../twidere/activity/BaseActivity.kt | 5 +++-- .../twidere/activity/LinkHandlerActivity.kt | 21 +++++++++++++++++-- .../twidere/constant/PreferenceKeys.kt | 1 + .../twidere/util/theme/ThemeFunctions.kt | 10 +++++++-- twidere/src/main/res/values/strings.xml | 6 +++--- .../main/res/xml/preferences_tablet_mode.xml | 4 ++++ 6 files changed, 38 insertions(+), 9 deletions(-) diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/BaseActivity.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/BaseActivity.kt index 73f698cd2..c46cbfd0d 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/BaseActivity.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/BaseActivity.kt @@ -24,6 +24,7 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.content.SharedPreferences import android.content.res.Resources import android.graphics.Rect import android.nfc.NfcAdapter @@ -188,7 +189,7 @@ open class BaseActivity : ChameleonActivity(), IExtendedActivity, StrictModeUtils.detectAllThreadPolicy() } val prefs = getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE) - val themeResource = getThemeResource(prefs[themeKey], prefs[themeColorKey]) + val themeResource = getThemeResource(prefs, prefs[themeKey], prefs[themeColorKey]) if (themeResource != 0) { setTheme(themeResource) } @@ -373,7 +374,7 @@ open class BaseActivity : ChameleonActivity(), IExtendedActivity, } @StyleRes - protected open fun getThemeResource(theme: String, themeColor: Int): Int { + protected open fun getThemeResource(preferences: SharedPreferences, theme: String, themeColor: Int): Int { return getCurrentThemeResource(this, theme) } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/LinkHandlerActivity.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/LinkHandlerActivity.kt index 4cf1c8b94..bfcc3c266 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/LinkHandlerActivity.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/LinkHandlerActivity.kt @@ -22,6 +22,7 @@ package org.mariotaku.twidere.activity import android.app.Activity import android.content.Context import android.content.Intent +import android.content.SharedPreferences import android.graphics.Rect import android.net.Uri import android.os.BadParcelableException @@ -33,6 +34,7 @@ import android.support.v7.widget.Toolbar import android.text.TextUtils import android.view.KeyEvent import android.view.MenuItem +import android.view.View import android.view.Window import kotlinx.android.synthetic.main.activity_link_handler.* import org.mariotaku.kpreferences.get @@ -60,6 +62,7 @@ import org.mariotaku.twidere.util.* import org.mariotaku.twidere.util.KeyboardShortcutsHandler.KeyboardShortcutCallback import org.mariotaku.twidere.util.Utils.LINK_ID_FILTERS_IMPORT_BLOCKS import org.mariotaku.twidere.util.linkhandler.TwidereLinkMatcher +import org.mariotaku.twidere.util.theme.getCurrentThemeResource class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IControlBarActivity, SupportFragmentCallback { @@ -116,7 +119,14 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro } else { setContentView(R.layout.activity_link_handler) toolbar?.let { toolbar -> - setSupportActionBar(toolbar) + if (supportActionBar != null) { + toolbar.visibility = View.GONE + windowOverlay?.visibility = View.GONE + } else { + toolbar.visibility = View.VISIBLE + windowOverlay?.visibility = View.VISIBLE + setSupportActionBar(toolbar) + } } contentFragmentId = R.id.contentFragment } @@ -127,7 +137,7 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro ft.replace(contentFragmentId, fragment, "content_fragment") ft.commit() setTitle(linkId, uri) - finishOnly = java.lang.Boolean.parseBoolean(uri.getQueryParameter(QUERY_PARAM_FINISH_ONLY)) + finishOnly = uri.getQueryParameter(QUERY_PARAM_FINISH_ONLY)?.toBoolean() ?: false if (fragment is IToolBarSupportFragment) { ThemeUtils.setCompatContentViewOverlay(window, EmptyDrawable()) @@ -288,6 +298,13 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowsInsetsCallback, IContro return actionBarHeight } + override fun getThemeResource(preferences: SharedPreferences, theme: String, themeColor: Int): Int { + if (preferences[floatingDetailedContentsKey]) { + return super.getThemeResource(preferences, theme, themeColor) + } + return getCurrentThemeResource(this, theme, R.style.Theme_Twidere) + } + private fun setTitle(linkId: Int, uri: Uri): Boolean { setSubtitle(null) when (linkId) { diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/constant/PreferenceKeys.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/constant/PreferenceKeys.kt index da1ca0f77..fd5f62bfb 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/constant/PreferenceKeys.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/constant/PreferenceKeys.kt @@ -64,6 +64,7 @@ val extraFeaturesNoticeVersionKey = KIntKey("extra_features_notice_version", 0) val mediaPreloadKey = KBooleanKey(KEY_MEDIA_PRELOAD, false) val mediaPreloadOnWifiOnlyKey = KBooleanKey(KEY_PRELOAD_WIFI_ONLY, true) val autoRefreshCompatibilityModeKey = KBooleanKey("auto_refresh_compatibility_mode", Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) +val floatingDetailedContentsKey = KBooleanKey("floating_detailed_contents", true) object themeBackgroundAlphaKey : KSimpleKey(KEY_THEME_BACKGROUND_ALPHA, 0xFF) { override fun read(preferences: SharedPreferences): Int { diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/util/theme/ThemeFunctions.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/util/theme/ThemeFunctions.kt index 0c3fed07a..2db424325 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/util/theme/ThemeFunctions.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/util/theme/ThemeFunctions.kt @@ -1,6 +1,7 @@ package org.mariotaku.twidere.util.theme import android.content.Context +import android.content.res.TypedArray import org.mariotaku.twidere.R import org.mariotaku.twidere.constant.SharedPreferenceConstants.VALUE_THEME_NAME_AUTO import org.mariotaku.twidere.constant.SharedPreferenceConstants.VALUE_THEME_NAME_DARK @@ -10,8 +11,13 @@ import org.mariotaku.twidere.util.ThemeUtils * Created by mariotaku on 2017/1/7. */ -fun getCurrentThemeResource(context: Context, theme: String): Int { - val a = context.obtainStyledAttributes(R.styleable.TwidereTheme) +fun getCurrentThemeResource(context: Context, theme: String, fromThemeResource: Int = 0): Int { + val a: TypedArray + if (fromThemeResource == 0) { + a = context.obtainStyledAttributes(R.styleable.TwidereTheme) + } else { + a = context.obtainStyledAttributes(fromThemeResource, R.styleable.TwidereTheme) + } try { val lightTheme = a.getResourceId(R.styleable.TwidereTheme_lightThemeResource, 0) val darkTheme = a.getResourceId(R.styleable.TwidereTheme_darkThemeResource, 0) diff --git a/twidere/src/main/res/values/strings.xml b/twidere/src/main/res/values/strings.xml index c06554d7c..a2f601cd6 100644 --- a/twidere/src/main/res/values/strings.xml +++ b/twidere/src/main/res/values/strings.xml @@ -31,6 +31,8 @@ deleting deleting search denying follow request + Don\'t restart + Don\'t quit Edit Edit rule @@ -392,9 +394,6 @@ DNS Server Set DNS Server for network requests. - Don\'t restart - Don\'t quit - Draft saved Your unsent tweets will save here @@ -883,6 +882,7 @@ Database size limit Manage Filter subscriptions + Floating detailed view Landscape Light font Preload on free network diff --git a/twidere/src/main/res/xml/preferences_tablet_mode.xml b/twidere/src/main/res/xml/preferences_tablet_mode.xml index c2614d34b..55d1448b8 100644 --- a/twidere/src/main/res/xml/preferences_tablet_mode.xml +++ b/twidere/src/main/res/xml/preferences_tablet_mode.xml @@ -23,4 +23,8 @@ android:value="true"/> + \ No newline at end of file