add a broadcastreceiver for activating and updating the shared theme
This commit is contained in:
parent
fa0c15bdb5
commit
9eddd7e215
8 changed files with 80 additions and 9 deletions
|
@ -7,7 +7,7 @@ buildscript {
|
|||
propMinSdkVersion = 16
|
||||
propTargetSdkVersion = propCompileSdkVersion
|
||||
propVersionCode = 1
|
||||
propVersionName = '2.41.19'
|
||||
propVersionName = '2.42.2'
|
||||
kotlin_version = '1.2.0'
|
||||
support_libs = '27.0.1'
|
||||
}
|
||||
|
|
|
@ -1,2 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest package="com.simplemobiletools.commons"/>
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.simplemobiletools.commons">
|
||||
|
||||
<application>
|
||||
<receiver
|
||||
android:name=".receivers.SharedThemeReceiver"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="com.simplemobiletools.commons.SHARED_THEME_ACTIVATED"/>
|
||||
<action android:name="com.simplemobiletools.commons.SHARED_THEME_UPDATED"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
package com.simplemobiletools.commons.activities
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import com.simplemobiletools.commons.R
|
||||
import com.simplemobiletools.commons.dialogs.*
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.MyContentProvider
|
||||
import com.simplemobiletools.commons.models.MyTheme
|
||||
import com.simplemobiletools.commons.models.RadioItem
|
||||
import com.simplemobiletools.commons.models.SharedTheme
|
||||
|
@ -85,7 +87,7 @@ class CustomizationActivity : BaseSimpleActivity() {
|
|||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.save -> saveChanges()
|
||||
R.id.save -> saveChanges(true)
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
}
|
||||
return true
|
||||
|
@ -193,7 +195,7 @@ class CustomizationActivity : BaseSimpleActivity() {
|
|||
private fun promptSaveDiscard() {
|
||||
ConfirmationAdvancedDialog(this, "", R.string.save_before_closing, R.string.save, R.string.discard) {
|
||||
if (it) {
|
||||
saveChanges()
|
||||
saveChanges(true)
|
||||
} else {
|
||||
resetColors()
|
||||
finish()
|
||||
|
@ -201,7 +203,7 @@ class CustomizationActivity : BaseSimpleActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun saveChanges() {
|
||||
private fun saveChanges(finishAfterSave: Boolean) {
|
||||
baseConfig.apply {
|
||||
textColor = curTextColor
|
||||
backgroundColor = curBackgroundColor
|
||||
|
@ -211,10 +213,16 @@ class CustomizationActivity : BaseSimpleActivity() {
|
|||
if (curSelectedThemeId == THEME_SHARED) {
|
||||
val newSharedTheme = SharedTheme(curTextColor, curBackgroundColor, curPrimaryColor)
|
||||
updateSharedTheme(newSharedTheme)
|
||||
Intent().apply {
|
||||
action = MyContentProvider.SHARED_THEME_UPDATED
|
||||
sendBroadcast(this)
|
||||
}
|
||||
}
|
||||
baseConfig.isUsingSharedTheme = curSelectedThemeId == THEME_SHARED
|
||||
hasUnsavedChanges = false
|
||||
finish()
|
||||
if (finishAfterSave) {
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
private fun resetColors() {
|
||||
|
@ -308,8 +316,14 @@ class CustomizationActivity : BaseSimpleActivity() {
|
|||
ConfirmationDialog(this, "", R.string.share_colors_success, R.string.ok, 0) {
|
||||
baseConfig.wasSharedThemeEverActivated = true
|
||||
apply_to_all_holder.beGone()
|
||||
predefinedThemes.put(THEME_SHARED, MyTheme(R.string.shared, 0, 0, 0))
|
||||
updateColorTheme(THEME_SHARED)
|
||||
saveChanges(false)
|
||||
predefinedThemes.put(THEME_SHARED, MyTheme(R.string.shared, 0, 0, 0))
|
||||
|
||||
Intent().apply {
|
||||
action = MyContentProvider.SHARED_THEME_ACTIVATED
|
||||
sendBroadcast(this)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
PurchaseThankYouDialog(this)
|
||||
|
|
|
@ -2,8 +2,6 @@ package com.simplemobiletools.commons.extensions
|
|||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.ContentUris
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageManager
|
||||
|
|
|
@ -116,4 +116,8 @@ open class BaseConfig(val context: Context) {
|
|||
var wasCustomThemeSwitchDescriptionShown: Boolean
|
||||
get() = prefs.getBoolean(WAS_CUSTOM_THEME_SWITCH_DESCRIPTION_SHOWN, false)
|
||||
set(wasCustomThemeSwitchDescriptionShown) = prefs.edit().putBoolean(WAS_CUSTOM_THEME_SWITCH_DESCRIPTION_SHOWN, wasCustomThemeSwitchDescriptionShown).apply()
|
||||
|
||||
var wasSharedThemeForced: Boolean
|
||||
get() = prefs.getBoolean(WAS_SHARED_THEME_FORCED, false)
|
||||
set(wasSharedThemeForced) = prefs.edit().putBoolean(WAS_SHARED_THEME_FORCED, wasSharedThemeForced).apply()
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ val USE_ENGLISH = "use_english"
|
|||
val WAS_USE_ENGLISH_TOGGLED = "was_use_english_toggled"
|
||||
val WAS_SHARED_THEME_EVER_ACTIVATED = "was_shared_theme_ever_activated"
|
||||
val IS_USING_SHARED_THEME = "is_using_shared_theme"
|
||||
val WAS_SHARED_THEME_FORCED = "was_shared_theme_forced"
|
||||
val WAS_CUSTOM_THEME_SWITCH_DESCRIPTION_SHOWN = "was_custom_theme_switch_description_shown"
|
||||
|
||||
// licenses
|
||||
|
|
|
@ -8,6 +8,8 @@ class MyContentProvider {
|
|||
companion object {
|
||||
val AUTHORITY = "com.simplemobiletools.commons.provider"
|
||||
val CONTENT_URI = Uri.parse("content://$AUTHORITY/themes")
|
||||
val SHARED_THEME_ACTIVATED = "com.simplemobiletools.commons.SHARED_THEME_ACTIVATED"
|
||||
val SHARED_THEME_UPDATED = "com.simplemobiletools.commons.SHARED_THEME_UPDATED"
|
||||
|
||||
val COL_ID = "_id"
|
||||
val COL_TEXT_COLOR = "text_color"
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
package com.simplemobiletools.commons.receivers
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import com.simplemobiletools.commons.extensions.baseConfig
|
||||
import com.simplemobiletools.commons.extensions.getSharedTheme
|
||||
import com.simplemobiletools.commons.helpers.MyContentProvider
|
||||
|
||||
class SharedThemeReceiver : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
if (intent.action == MyContentProvider.SHARED_THEME_ACTIVATED) {
|
||||
context.baseConfig.apply {
|
||||
if (!wasSharedThemeForced) {
|
||||
wasSharedThemeForced = true
|
||||
isUsingSharedTheme = true
|
||||
wasSharedThemeEverActivated = true
|
||||
|
||||
context.getSharedTheme {
|
||||
textColor = it.textColor
|
||||
backgroundColor = it.backgroundColor
|
||||
primaryColor = it.primaryColor
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (intent.action == MyContentProvider.SHARED_THEME_UPDATED) {
|
||||
context.baseConfig.apply {
|
||||
if (isUsingSharedTheme) {
|
||||
context.getSharedTheme {
|
||||
textColor = it.textColor
|
||||
backgroundColor = it.backgroundColor
|
||||
primaryColor = it.primaryColor
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue