Skip to content

Commit 5b9fbbf

Browse files
committed
Added support for more bpi currencies
1 parent 6f6b07d commit 5b9fbbf

7 files changed

Lines changed: 219 additions & 15 deletions

File tree

app/src/main/java/com/artem/lendingwidget/LendingWidgetConfigureActivity.kt

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ import android.support.v7.widget.Toolbar
1515
import android.view.Menu
1616
import android.view.MenuItem
1717
import android.view.View
18-
import android.widget.Button
19-
import android.widget.EditText
20-
import android.widget.ProgressBar
21-
import android.widget.Toast
18+
import android.widget.*
19+
import com.artem.lendingwidget.data.Currency
20+
import com.artem.lendingwidget.extensions.getCurrency
2221
import com.artem.lendingwidget.extensions.getUrl
22+
import com.artem.lendingwidget.extensions.storeTargetCurrency
2323
import com.artem.lendingwidget.extensions.storeUrl
2424
import com.artem.lendingwidget.network.LendingNetworkService
2525

@@ -30,12 +30,23 @@ class LendingWidgetConfigureActivity : AppCompatActivity() {
3030
internal lateinit var mUrlEditText: EditText
3131
internal lateinit var mConnectButton: Button
3232
internal lateinit var mProgressBar: ProgressBar
33+
internal lateinit var mTargetSpinner: Spinner
3334

3435
internal val mBroadCastReceiver = object: BroadcastReceiver() {
3536
override fun onReceive(context: Context?, intent: Intent?) {
3637
this@LendingWidgetConfigureActivity.onReceive(context, intent)
3738
}
3839
}
40+
internal val mSpinnerSelectedListener = object : AdapterView.OnItemSelectedListener {
41+
override fun onNothingSelected(p0: AdapterView<*>?) {
42+
}
43+
44+
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
45+
this@LendingWidgetConfigureActivity.storeTargetCurrency(mAppWidgetId, Currency.values()[p2].name)
46+
LendingNetworkService.updateBpi(this@LendingWidgetConfigureActivity, false, mAppWidgetId)
47+
}
48+
49+
}
3950

4051
public override fun onCreate(icicle: Bundle?) {
4152
super.onCreate(icicle)
@@ -45,21 +56,25 @@ class LendingWidgetConfigureActivity : AppCompatActivity() {
4556
setContentView(R.layout.lending_widget_configure)
4657
setSupportActionBar(findViewById(R.id.toolbar_config) as Toolbar?)
4758

48-
mUrlEditText = findViewById(R.id.et_url) as EditText
49-
mConnectButton = findViewById(R.id.btn_connect) as Button
50-
mProgressBar = findViewById(R.id.progressBar) as ProgressBar
51-
52-
5359
val extras = intent.extras
5460
if (extras != null) {
5561
mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID)
5662
}
57-
5863
if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
5964
finish()
6065
return
6166
}
6267

68+
mUrlEditText = findViewById(R.id.et_url) as EditText
69+
mConnectButton = findViewById(R.id.btn_connect) as Button
70+
mProgressBar = findViewById(R.id.progressBar) as ProgressBar
71+
mTargetSpinner = findViewById(R.id.spinner_target_currency) as Spinner
72+
73+
mTargetSpinner.adapter = ArrayAdapter<Currency>(this, android.R.layout.select_dialog_item, Currency.values())
74+
mTargetSpinner.setSelection(this.getCurrency(mAppWidgetId).ordinal)
75+
mTargetSpinner.onItemSelectedListener = mSpinnerSelectedListener
76+
77+
6378
mConnectButton.setOnClickListener { tryConnection()}
6479
LocalBroadcastManager.getInstance(this).registerReceiver(mBroadCastReceiver, IntentFilter(LendingNetworkService.ACTION_RESULT))
6580

app/src/main/java/com/artem/lendingwidget/data/CoinDeskRate.kt

Lines changed: 166 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,172 @@ data class CoinDeskRate(val bpi: Map<Currency, BpiEntry>) {
77
}
88

99
enum class Currency {
10-
// TODO add more currencies
10+
// It might be more robust to query the supported currencies from coindesk
11+
AED,
12+
AFN,
13+
ALL,
14+
AMD,
15+
ANG,
16+
AOA,
17+
ARS,
18+
AUD,
19+
AWG,
20+
AZN,
21+
BAM,
22+
BBD,
23+
BDT,
24+
BGN,
25+
BHD,
26+
BIF,
27+
BMD,
28+
BND,
29+
BOB,
30+
BRL,
31+
BSD,
32+
BTC,
33+
BTN,
34+
BWP,
35+
BYR,
36+
BZD,
37+
CAD,
38+
CDF,
39+
CHF,
40+
CLF,
41+
CLP,
42+
CNY,
43+
COP,
44+
CRC,
45+
CUP,
46+
CVE,
47+
CZK,
48+
DJF,
49+
DKK,
50+
DOP,
51+
DZD,
52+
EEK,
53+
EGP,
54+
ERN,
55+
ETB,
1156
EUR,
57+
FJD,
58+
FKP,
59+
GBP,
60+
GEL,
61+
GHS,
62+
GIP,
63+
GMD,
64+
GNF,
65+
GTQ,
66+
GYD,
67+
HKD,
68+
HNL,
69+
HRK,
70+
HTG,
71+
HUF,
72+
IDR,
73+
ILS,
74+
INR,
75+
IQD,
76+
IRR,
77+
ISK,
78+
JEP,
79+
JMD,
80+
JOD,
81+
JPY,
82+
KES,
83+
KGS,
84+
KHR,
85+
KMF,
86+
KPW,
87+
KRW,
88+
KWD,
89+
KYD,
90+
KZT,
91+
LAK,
92+
LBP,
93+
LKR,
94+
LRD,
95+
LSL,
96+
LTL,
97+
LVL,
98+
LYD,
99+
MAD,
100+
MDL,
101+
MGA,
102+
MKD,
103+
MMK,
104+
MNT,
105+
MOP,
106+
MRO,
107+
MTL,
108+
MUR,
109+
MVR,
110+
MWK,
111+
MXN,
112+
MYR,
113+
MZN,
114+
NAD,
115+
NGN,
116+
NIO,
117+
NOK,
118+
NPR,
119+
NZD,
120+
OMR,
121+
PAB,
122+
PEN,
123+
PGK,
124+
PHP,
125+
PKR,
126+
PLN,
127+
PYG,
128+
QAR,
129+
RON,
130+
RSD,
131+
RUB,
132+
RWF,
133+
SAR,
134+
SBD,
135+
SCR,
136+
SDG,
137+
SEK,
138+
SGD,
139+
SHP,
140+
SLL,
141+
SOS,
142+
SRD,
143+
STD,
144+
SVC,
145+
SYP,
146+
SZL,
147+
THB,
148+
TJS,
149+
TMT,
150+
TND,
151+
TOP,
152+
TRY,
153+
TTD,
154+
TWD,
155+
TZS,
156+
UAH,
157+
UGX,
12158
USD,
13-
GBP
159+
UYU,
160+
UZS,
161+
VEF,
162+
VND,
163+
VUV,
164+
WST,
165+
XAF,
166+
XAG,
167+
XAU,
168+
XBT,
169+
XCD,
170+
XDR,
171+
XOF,
172+
XPF,
173+
YER,
174+
ZAR,
175+
ZMK,
176+
ZMW,
177+
ZWL
14178
}

app/src/main/java/com/artem/lendingwidget/extensions/BotlogStoreExtensions.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ fun Context.storeCoinDeskRate(coinDeskRate: CoinDeskRate, widgetId: Int) {
4646
val edit = prefs.edit()
4747
val currency = this.getCurrency(widgetId)
4848

49+
coinDeskRate.bpi[currency] ?: return
50+
4951
edit.putFloat(PREF_BPI_VALUE + widgetId, coinDeskRate.bpi[currency]!!.rate_float)
5052
edit.apply()
5153
}
@@ -72,6 +74,14 @@ fun Context.getCurrency(widgetId: Int): Currency {
7274
return Currency.valueOf(this.getSharedPreferences(PREFS_NAME, 0).getString(PREF_TARGET_CURRENCY + widgetId, "EUR"))
7375
}
7476

77+
fun Context.storeTargetCurrency(widgetId: Int, currency: String) {
78+
val prefs = this.getSharedPreferences(PREFS_NAME, 0)
79+
val edit = prefs.edit()
80+
81+
edit.putString(PREF_TARGET_CURRENCY + widgetId, currency)
82+
edit.apply()
83+
}
84+
7585
fun Context.getUrl(widgetId: Int): String {
7686
return this.getSharedPreferences(PREFS_NAME, 0).getString(PREF_URL + widgetId, "")
7787
}

app/src/main/java/com/artem/lendingwidget/network/LendingNetworkService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import android.appwidget.AppWidgetManager
55
import android.content.Context
66
import android.content.Intent
77
import android.support.v4.content.LocalBroadcastManager
8-
import com.artem.lendingwidget.LendingWidgetUI
8+
import com.artem.lendingwidget.ui.LendingWidgetUI
99
import com.artem.lendingwidget.data.Botlog
1010
import com.artem.lendingwidget.data.CoinDeskRate
1111
import com.artem.lendingwidget.extensions.*

app/src/main/java/com/artem/lendingwidget/LendingWidgetUI.kt renamed to app/src/main/java/com/artem/lendingwidget/ui/LendingWidgetUI.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
package com.artem.lendingwidget
1+
package com.artem.lendingwidget.ui
22

33
import android.appwidget.AppWidgetManager
44
import android.content.Context
55
import android.text.format.DateFormat
66
import android.widget.RemoteViews
7+
import com.artem.lendingwidget.LendingWidgetConfigureActivity
8+
import com.artem.lendingwidget.R
79
import com.artem.lendingwidget.extensions.*
810
import java.util.*
911

app/src/main/res/layout/lending_widget_configure.xml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,19 @@
2020
android:orientation="vertical"
2121
android:padding="16dp">
2222

23-
<TextView
23+
<TextView
24+
android:id="@+id/tv_spinner_title"
25+
android:layout_width="match_parent"
26+
android:layout_height="wrap_content"
27+
android:text="@string/target_spinner_title"/>
28+
29+
<Spinner
30+
android:id="@+id/spinner_target_currency"
31+
android:layout_width="wrap_content"
32+
android:layout_height="wrap_content"
33+
android:spinnerMode="dialog"/>
34+
35+
<TextView
2436
android:id="@+id/tv_url"
2537
android:layout_width="match_parent"
2638
android:layout_height="wrap_content"

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
<string name="example_url">www.example.com/botlog.json</string>
77
<string name="error_connection">An error occured while trying to connect to %1$s</string>
88
<string name="error_log">Error log</string>
9+
<string name="target_spinner_title">Conversion currency</string>
910
</resources>

0 commit comments

Comments
 (0)