mirror of
https://github.com/SimpleMobileTools/Simple-Calculator.git
synced 2025-06-05 21:49:13 +02:00
Update calculator widget on comma/dot toggle
This commit is contained in:
@ -12,6 +12,7 @@ import com.simplemobiletools.calculator.R
|
|||||||
import com.simplemobiletools.calculator.databases.CalculatorDatabase
|
import com.simplemobiletools.calculator.databases.CalculatorDatabase
|
||||||
import com.simplemobiletools.calculator.dialogs.HistoryDialog
|
import com.simplemobiletools.calculator.dialogs.HistoryDialog
|
||||||
import com.simplemobiletools.calculator.extensions.config
|
import com.simplemobiletools.calculator.extensions.config
|
||||||
|
import com.simplemobiletools.calculator.extensions.refreshAppWidget
|
||||||
import com.simplemobiletools.calculator.extensions.updateViewColors
|
import com.simplemobiletools.calculator.extensions.updateViewColors
|
||||||
import com.simplemobiletools.calculator.helpers.*
|
import com.simplemobiletools.calculator.helpers.*
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
@ -83,6 +84,7 @@ class MainActivity : SimpleActivity(), Calculator {
|
|||||||
|
|
||||||
if (storedUseCommaAsDecimalMark != config.useCommaAsDecimalMark) {
|
if (storedUseCommaAsDecimalMark != config.useCommaAsDecimalMark) {
|
||||||
setupDecimalSeparator()
|
setupDecimalSeparator()
|
||||||
|
refreshAppWidget<MyWidgetProvider>()
|
||||||
}
|
}
|
||||||
|
|
||||||
vibrateOnButtonPress = config.vibrateOnButtonPress
|
vibrateOnButtonPress = config.vibrateOnButtonPress
|
||||||
|
@ -5,12 +5,15 @@ import android.os.Bundle
|
|||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import com.simplemobiletools.calculator.R
|
import com.simplemobiletools.calculator.R
|
||||||
import com.simplemobiletools.calculator.extensions.config
|
import com.simplemobiletools.calculator.extensions.config
|
||||||
|
import com.simplemobiletools.calculator.extensions.refreshAppWidget
|
||||||
|
import com.simplemobiletools.calculator.helpers.MyWidgetProvider
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.IS_CUSTOMIZING_COLORS
|
import com.simplemobiletools.commons.helpers.IS_CUSTOMIZING_COLORS
|
||||||
import kotlinx.android.synthetic.main.activity_settings.*
|
import kotlinx.android.synthetic.main.activity_settings.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
|
|
||||||
class SettingsActivity : SimpleActivity() {
|
class SettingsActivity : SimpleActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@ -100,6 +103,7 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
settings_use_comma_as_decimal_mark_holder.setOnClickListener {
|
settings_use_comma_as_decimal_mark_holder.setOnClickListener {
|
||||||
settings_use_comma_as_decimal_mark.toggle()
|
settings_use_comma_as_decimal_mark.toggle()
|
||||||
config.useCommaAsDecimalMark = settings_use_comma_as_decimal_mark.isChecked
|
config.useCommaAsDecimalMark = settings_use_comma_as_decimal_mark.isChecked
|
||||||
|
refreshAppWidget<MyWidgetProvider>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
package com.simplemobiletools.calculator.extensions
|
package com.simplemobiletools.calculator.extensions
|
||||||
|
|
||||||
|
import android.appwidget.AppWidgetManager
|
||||||
|
import android.content.ComponentName
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.Button
|
import android.widget.Button
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import com.simplemobiletools.calculator.databases.CalculatorDatabase
|
||||||
import com.simplemobiletools.calculator.helpers.Config
|
import com.simplemobiletools.calculator.helpers.Config
|
||||||
import com.simplemobiletools.calculator.interfaces.CalculatorDao
|
import com.simplemobiletools.calculator.interfaces.CalculatorDao
|
||||||
import com.simplemobiletools.calculator.databases.CalculatorDatabase
|
|
||||||
|
|
||||||
val Context.config: Config get() = Config.newInstance(applicationContext)
|
val Context.config: Config get() = Config.newInstance(applicationContext)
|
||||||
|
|
||||||
@ -24,3 +27,11 @@ fun Context.updateViewColors(viewGroup: ViewGroup, textColor: Int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline fun <reified T> Context.refreshAppWidget() {
|
||||||
|
val intent = Intent(this, T::class.java)
|
||||||
|
intent.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
|
||||||
|
val ids = AppWidgetManager.getInstance(this).getAppWidgetIds(ComponentName(this, T::class.java))
|
||||||
|
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
|
||||||
|
sendBroadcast(intent)
|
||||||
|
}
|
||||||
|
@ -17,6 +17,9 @@ import com.simplemobiletools.commons.extensions.setText
|
|||||||
class MyWidgetProvider : AppWidgetProvider(), Calculator {
|
class MyWidgetProvider : AppWidgetProvider(), Calculator {
|
||||||
companion object {
|
companion object {
|
||||||
private var calc: CalculatorImpl? = null
|
private var calc: CalculatorImpl? = null
|
||||||
|
private var storedUseCommaAsDecimalMark = false
|
||||||
|
private var decimalSeparator = DOT
|
||||||
|
private var groupingSeparator = COMMA
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
|
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
|
||||||
@ -53,6 +56,7 @@ class MyWidgetProvider : AppWidgetProvider(), Calculator {
|
|||||||
views.applyColorFilter(R.id.widget_background, config.widgetBgColor)
|
views.applyColorFilter(R.id.widget_background, config.widgetBgColor)
|
||||||
|
|
||||||
updateTextColors(views, config.widgetTextColor)
|
updateTextColors(views, config.widgetTextColor)
|
||||||
|
setupDecimalSeparator(views, config.useCommaAsDecimalMark)
|
||||||
appWidgetManager.updateAppWidget(it, views)
|
appWidgetManager.updateAppWidget(it, views)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -97,7 +101,7 @@ class MyWidgetProvider : AppWidgetProvider(), Calculator {
|
|||||||
|
|
||||||
private fun myAction(action: String, context: Context) {
|
private fun myAction(action: String, context: Context) {
|
||||||
if (calc == null) {
|
if (calc == null) {
|
||||||
calc = CalculatorImpl(this, context)
|
calc = CalculatorImpl(this, context, decimalSeparator, groupingSeparator)
|
||||||
}
|
}
|
||||||
|
|
||||||
when (action) {
|
when (action) {
|
||||||
@ -141,4 +145,17 @@ class MyWidgetProvider : AppWidgetProvider(), Calculator {
|
|||||||
super.onDeleted(context, appWidgetIds)
|
super.onDeleted(context, appWidgetIds)
|
||||||
calc = null
|
calc = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupDecimalSeparator(views: RemoteViews, useCommaAsDecimalMark: Boolean) {
|
||||||
|
storedUseCommaAsDecimalMark = useCommaAsDecimalMark
|
||||||
|
if (storedUseCommaAsDecimalMark) {
|
||||||
|
decimalSeparator = COMMA
|
||||||
|
groupingSeparator = DOT
|
||||||
|
} else {
|
||||||
|
decimalSeparator = DOT
|
||||||
|
groupingSeparator = COMMA
|
||||||
|
}
|
||||||
|
calc?.updateSeparators(decimalSeparator, groupingSeparator)
|
||||||
|
views.setTextViewText(R.id.btn_decimal, decimalSeparator)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user