Make currency an optional setting for each widget
This commit is contained in:
@@ -218,6 +218,7 @@ class AppPreferences {
|
||||
const val LAYOUT_TYPE = "LAYOUT_TYPE"
|
||||
const val WIDGET_SIZE = "WIDGET_SIZE"
|
||||
const val BOLD_CHANGE = "BOLD_CHANGE"
|
||||
const val SHOW_CURRENCY = "SHOW_CURRENCY"
|
||||
const val PERCENT = "PERCENT"
|
||||
const val DID_RATE = "DID_RATE"
|
||||
const val BACKOFF_ATTEMPTS = "BACKOFF_ATTEMPTS"
|
||||
|
||||
+20
-7
@@ -25,12 +25,14 @@ import kotlinx.android.synthetic.main.fragment_widget_settings.setting_autosort_
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_background
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_bold
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_bold_checkbox
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_currency
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_currency_checkbox
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_hide_header
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_hide_header_checkbox
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_layout_type
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_widget_width
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_text_color
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_widget_name
|
||||
import kotlinx.android.synthetic.main.fragment_widget_settings.setting_widget_width
|
||||
import javax.inject.Inject
|
||||
|
||||
class WidgetSettingsFragment : BaseFragment(), OnClickListener {
|
||||
@@ -91,10 +93,11 @@ class WidgetSettingsFragment : BaseFragment(), OnClickListener {
|
||||
setBoldSetting(widgetData)
|
||||
setAutoSortSetting(widgetData)
|
||||
setHideHeaderSetting(widgetData)
|
||||
setCurrencySetting(widgetData)
|
||||
|
||||
arrayOf(
|
||||
setting_add_stock, setting_widget_name, setting_layout_type , setting_widget_width, setting_background,
|
||||
setting_text_color, setting_bold, setting_autosort, setting_hide_header
|
||||
setting_text_color, setting_bold, setting_autosort, setting_hide_header, setting_currency
|
||||
).forEach {
|
||||
it.setOnClickListener(this@WidgetSettingsFragment)
|
||||
}
|
||||
@@ -114,7 +117,7 @@ class WidgetSettingsFragment : BaseFragment(), OnClickListener {
|
||||
v.setIsEditable(false)
|
||||
v.setOnClickListener(this)
|
||||
bus.send(RefreshEvent())
|
||||
InAppMessage.showMessage(activity!!, R.string.widget_name_updated)
|
||||
InAppMessage.showMessage(requireActivity(), R.string.widget_name_updated)
|
||||
}
|
||||
}
|
||||
R.id.setting_layout_type -> {
|
||||
@@ -127,7 +130,7 @@ class WidgetSettingsFragment : BaseFragment(), OnClickListener {
|
||||
if (which == 2) {
|
||||
showDialog(getString(R.string.change_instructions))
|
||||
}
|
||||
InAppMessage.showMessage(activity!!, R.string.layout_updated_message)
|
||||
InAppMessage.showMessage(requireActivity(), R.string.layout_updated_message)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -138,7 +141,7 @@ class WidgetSettingsFragment : BaseFragment(), OnClickListener {
|
||||
setWidgetSizeSetting(widgetData)
|
||||
dialog.dismiss()
|
||||
broadcastUpdateWidget()
|
||||
InAppMessage.showMessage(activity!!, R.string.widget_width_updated_message)
|
||||
InAppMessage.showMessage(requireActivity(), R.string.widget_width_updated_message)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -149,7 +152,7 @@ class WidgetSettingsFragment : BaseFragment(), OnClickListener {
|
||||
setTextColorSetting(widgetData)
|
||||
dialog.dismiss()
|
||||
broadcastUpdateWidget()
|
||||
InAppMessage.showMessage(activity!!, R.string.bg_updated_message)
|
||||
InAppMessage.showMessage(requireActivity(), R.string.bg_updated_message)
|
||||
})
|
||||
}
|
||||
R.id.setting_text_color -> {
|
||||
@@ -158,7 +161,7 @@ class WidgetSettingsFragment : BaseFragment(), OnClickListener {
|
||||
setTextColorSetting(widgetData)
|
||||
dialog.dismiss()
|
||||
broadcastUpdateWidget()
|
||||
InAppMessage.showMessage(activity!!, R.string.text_color_updated_message)
|
||||
InAppMessage.showMessage(requireActivity(), R.string.text_color_updated_message)
|
||||
})
|
||||
}
|
||||
R.id.setting_bold -> {
|
||||
@@ -179,6 +182,12 @@ class WidgetSettingsFragment : BaseFragment(), OnClickListener {
|
||||
setHideHeaderSetting(widgetData)
|
||||
broadcastUpdateWidget()
|
||||
}
|
||||
R.id.setting_currency -> {
|
||||
val isChecked = !setting_currency_checkbox.isChecked
|
||||
widgetData.setCurrencyEnabled(isChecked)
|
||||
setCurrencySetting(widgetData)
|
||||
broadcastUpdateWidget()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,4 +239,8 @@ class WidgetSettingsFragment : BaseFragment(), OnClickListener {
|
||||
private fun setHideHeaderSetting(widgetData: WidgetData) {
|
||||
setting_hide_header_checkbox.isChecked = widgetData.hideHeader()
|
||||
}
|
||||
|
||||
private fun setCurrencySetting(widgetData: WidgetData) {
|
||||
setting_currency_checkbox.isChecked = widgetData.isCurrencyEnabled()
|
||||
}
|
||||
}
|
||||
@@ -68,7 +68,11 @@ class RemoteStockViewAdapter(private val widgetId: Int) : RemoteViewsService.Rem
|
||||
val changePercentFormatted = stock.changePercentString()
|
||||
val gainLossFormatted = stock.gainLossString()
|
||||
val gainLossPercentFormatted = stock.gainLossPercentString()
|
||||
val priceFormatted = stock.priceString() + " " + stock.currency
|
||||
val priceFormatted = if (widgetData.isCurrencyEnabled()) {
|
||||
stock.priceString() + " " + stock.currency
|
||||
} else {
|
||||
stock.priceString()
|
||||
}
|
||||
val change = stock.change
|
||||
val changeInPercent = stock.changeInPercent
|
||||
val gainLoss = stock.gainLoss()
|
||||
@@ -80,7 +84,11 @@ class RemoteStockViewAdapter(private val widgetId: Int) : RemoteViewsService.Rem
|
||||
val priceString = SpannableString(priceFormatted)
|
||||
|
||||
remoteViews.setTextViewText(R.id.ticker, stock.symbol)
|
||||
remoteViews.setTextViewText(R.id.holdings, stock.holdingsString() + " " + stock.currency)
|
||||
remoteViews.setTextViewText(R.id.holdings, if (widgetData.isCurrencyEnabled()) {
|
||||
stock.holdingsString() + " " + stock.currency
|
||||
} else {
|
||||
stock.holdingsString()
|
||||
})
|
||||
|
||||
if (widgetData.isBoldEnabled()) {
|
||||
changePercentString.setSpan(
|
||||
|
||||
@@ -24,6 +24,7 @@ class WidgetData {
|
||||
private const val LAYOUT_TYPE = AppPreferences.LAYOUT_TYPE
|
||||
private const val WIDGET_SIZE = AppPreferences.WIDGET_SIZE
|
||||
private const val BOLD_CHANGE = AppPreferences.BOLD_CHANGE
|
||||
private const val SHOW_CURRENCY = AppPreferences.SHOW_CURRENCY
|
||||
private const val WIDGET_BG = AppPreferences.WIDGET_BG
|
||||
private const val TEXT_COLOR = AppPreferences.TEXT_COLOR
|
||||
private const val PERCENT = AppPreferences.PERCENT
|
||||
@@ -206,6 +207,14 @@ class WidgetData {
|
||||
.apply()
|
||||
}
|
||||
|
||||
fun isCurrencyEnabled(): Boolean = preferences.getBoolean(SHOW_CURRENCY, false)
|
||||
|
||||
fun setCurrencyEnabled(value: Boolean) {
|
||||
preferences.edit()
|
||||
.putBoolean(SHOW_CURRENCY, value)
|
||||
.apply()
|
||||
}
|
||||
|
||||
fun getStocks(): List<Quote> {
|
||||
val quoteList = ArrayList<Quote>()
|
||||
tickerList.map { stocksProvider.getStock(it) }
|
||||
|
||||
@@ -19,7 +19,7 @@ class WidgetDataProvider {
|
||||
@Inject internal lateinit var context: Context
|
||||
|
||||
private val widgets: MutableMap<Int, WidgetData> by lazy {
|
||||
HashMap<Int, WidgetData>()
|
||||
HashMap()
|
||||
}
|
||||
|
||||
init {
|
||||
|
||||
@@ -55,7 +55,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/setting_padding"
|
||||
android:layout_marginRight="@dimen/setting_padding"
|
||||
android:clickable="false"
|
||||
android:duplicateParentState="true"
|
||||
android:focusable="false"
|
||||
@@ -87,7 +86,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/setting_padding"
|
||||
android:layout_marginRight="@dimen/setting_padding"
|
||||
android:clickable="false"
|
||||
android:duplicateParentState="true"
|
||||
android:focusable="false"
|
||||
@@ -155,7 +153,37 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/setting_padding"
|
||||
android:layout_marginRight="@dimen/setting_padding"
|
||||
android:clickable="false"
|
||||
android:duplicateParentState="true"
|
||||
android:focusable="false"
|
||||
android:gravity="center"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<include layout="@layout/divider"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/setting_currency"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<com.github.premnirmal.ticker.ui.SettingsTextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
app:title_text="@string/setting_currency"
|
||||
app:subtitle_text="@string/setting_currency_desc"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/setting_currency_checkbox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/setting_padding"
|
||||
android:clickable="false"
|
||||
android:duplicateParentState="true"
|
||||
android:focusable="false"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:sfw="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/stockContainer"
|
||||
android:layout_width="match_parent"
|
||||
@@ -45,7 +45,7 @@
|
||||
android:gravity="center_vertical|right"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/text_1"
|
||||
android:textSize="@dimen/large_text"
|
||||
android:textSize="@dimen/medium_text"
|
||||
tools:text="555.02"
|
||||
style="@style/BoldTextView"
|
||||
/>
|
||||
@@ -57,7 +57,7 @@
|
||||
android:layout_gravity="center_vertical|right"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
android:src="@drawable/ic_more"
|
||||
android:tint="@color/icon_tint"
|
||||
app:tint="@color/icon_tint"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -102,20 +102,20 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="4dp"
|
||||
sfw:name="@string/holdings"
|
||||
sfw:or="vertical"
|
||||
sfw:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
sfw:text_gravity="left"
|
||||
app:name="@string/holdings"
|
||||
app:or="vertical"
|
||||
app:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
app:text_gravity="left"
|
||||
/>
|
||||
|
||||
<com.github.premnirmal.ticker.ui.StockFieldView
|
||||
android:id="@+id/gain_loss"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
sfw:name="@string/gain_loss"
|
||||
sfw:or="vertical"
|
||||
sfw:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
sfw:text_gravity="left"
|
||||
app:name="@string/gain_loss"
|
||||
app:or="vertical"
|
||||
app:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
app:text_gravity="left"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -134,10 +134,10 @@
|
||||
android:id="@+id/dayChange"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
sfw:name="@string/day_change_amount"
|
||||
sfw:or="vertical"
|
||||
sfw:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
sfw:text_gravity="center"
|
||||
app:name="@string/day_change_amount"
|
||||
app:or="vertical"
|
||||
app:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
app:text_gravity="center"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -155,20 +155,20 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="4dp"
|
||||
sfw:name="@string/change_percent"
|
||||
sfw:or="vertical"
|
||||
sfw:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
sfw:text_gravity="right"
|
||||
app:name="@string/change_percent"
|
||||
app:or="vertical"
|
||||
app:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
app:text_gravity="right"
|
||||
/>
|
||||
|
||||
<com.github.premnirmal.ticker.ui.StockFieldView
|
||||
android:id="@+id/changeValue"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
sfw:name="@string/change_amount"
|
||||
sfw:or="vertical"
|
||||
sfw:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
sfw:text_gravity="right"
|
||||
app:name="@string/change_amount"
|
||||
app:or="vertical"
|
||||
app:size="@dimen/portfolio_position_vh_value_text_size"
|
||||
app:text_gravity="right"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/stockContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -45,7 +46,7 @@
|
||||
android:layout_gravity="center_vertical"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
android:src="@drawable/ic_more"
|
||||
android:tint="@color/icon_tint"
|
||||
app:tint="@color/icon_tint"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -83,7 +84,7 @@
|
||||
android:gravity="center_vertical|left"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/text_1"
|
||||
android:textSize="@dimen/large_text"
|
||||
android:textSize="@dimen/medium_text"
|
||||
tools:text="555.02"
|
||||
style="@style/BoldTextView"
|
||||
/>
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
<string name="refresh_on_screen_unlock_desc">Refresh when the screen unlocks (only during set hours).</string>
|
||||
<string name="bold_change">Bold text</string>
|
||||
<string name="bold_change_desc">Show changes and market value in bold</string>
|
||||
<string name="setting_currency">Show currency</string>
|
||||
<string name="setting_currency_desc">Show currency in the widget</string>
|
||||
<string name="choose_text_size">Widget Text Size</string>
|
||||
<string name="app_theme">App Theme</string>
|
||||
<string name="text_size_updated_message">Text size updated</string>
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
versionName=3.9.731
|
||||
versionCode=300900731
|
||||
versionName=3.9.732
|
||||
versionCode=300900732
|
||||
Reference in New Issue
Block a user