diff --git a/app/src/main/kotlin/com/github/premnirmal/ticker/AppPreferences.kt b/app/src/main/kotlin/com/github/premnirmal/ticker/AppPreferences.kt index f31e3cb4..ba0262a9 100644 --- a/app/src/main/kotlin/com/github/premnirmal/ticker/AppPreferences.kt +++ b/app/src/main/kotlin/com/github/premnirmal/ticker/AppPreferences.kt @@ -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" diff --git a/app/src/main/kotlin/com/github/premnirmal/ticker/settings/WidgetSettingsFragment.kt b/app/src/main/kotlin/com/github/premnirmal/ticker/settings/WidgetSettingsFragment.kt index 4d0cb8fa..6dcaeb3d 100644 --- a/app/src/main/kotlin/com/github/premnirmal/ticker/settings/WidgetSettingsFragment.kt +++ b/app/src/main/kotlin/com/github/premnirmal/ticker/settings/WidgetSettingsFragment.kt @@ -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() + } } \ No newline at end of file diff --git a/app/src/main/kotlin/com/github/premnirmal/ticker/widget/RemoteStockViewAdapter.kt b/app/src/main/kotlin/com/github/premnirmal/ticker/widget/RemoteStockViewAdapter.kt index a8ac7d30..064a6d20 100644 --- a/app/src/main/kotlin/com/github/premnirmal/ticker/widget/RemoteStockViewAdapter.kt +++ b/app/src/main/kotlin/com/github/premnirmal/ticker/widget/RemoteStockViewAdapter.kt @@ -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( diff --git a/app/src/main/kotlin/com/github/premnirmal/ticker/widget/WidgetData.kt b/app/src/main/kotlin/com/github/premnirmal/ticker/widget/WidgetData.kt index 130bb4aa..89d5efc3 100644 --- a/app/src/main/kotlin/com/github/premnirmal/ticker/widget/WidgetData.kt +++ b/app/src/main/kotlin/com/github/premnirmal/ticker/widget/WidgetData.kt @@ -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 { val quoteList = ArrayList() tickerList.map { stocksProvider.getStock(it) } diff --git a/app/src/main/kotlin/com/github/premnirmal/ticker/widget/WidgetDataProvider.kt b/app/src/main/kotlin/com/github/premnirmal/ticker/widget/WidgetDataProvider.kt index 1a754edf..f19b3b48 100644 --- a/app/src/main/kotlin/com/github/premnirmal/ticker/widget/WidgetDataProvider.kt +++ b/app/src/main/kotlin/com/github/premnirmal/ticker/widget/WidgetDataProvider.kt @@ -19,7 +19,7 @@ class WidgetDataProvider { @Inject internal lateinit var context: Context private val widgets: MutableMap by lazy { - HashMap() + HashMap() } init { diff --git a/app/src/main/res/layout/fragment_widget_settings.xml b/app/src/main/res/layout/fragment_widget_settings.xml index aa93e30b..442c1346 100644 --- a/app/src/main/res/layout/fragment_widget_settings.xml +++ b/app/src/main/res/layout/fragment_widget_settings.xml @@ -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" + /> + + + + + + + + + + @@ -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" /> @@ -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" /> @@ -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" /> @@ -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" /> diff --git a/app/src/main/res/layout/item_stock.xml b/app/src/main/res/layout/item_stock.xml index e68d2c48..ce76d672 100644 --- a/app/src/main/res/layout/item_stock.xml +++ b/app/src/main/res/layout/item_stock.xml @@ -1,6 +1,7 @@ @@ -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" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 02e78cb0..730fc631 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -54,6 +54,8 @@ Refresh when the screen unlocks (only during set hours). Bold text Show changes and market value in bold + Show currency + Show currency in the widget Widget Text Size App Theme Text size updated diff --git a/app/version.properties b/app/version.properties index 79a62830..570eb035 100644 --- a/app/version.properties +++ b/app/version.properties @@ -1,2 +1,2 @@ -versionName=3.9.731 -versionCode=300900731 \ No newline at end of file +versionName=3.9.732 +versionCode=300900732 \ No newline at end of file