Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit d035303

Browse files
#176. Add fixes review.
1 parent 0d210fe commit d035303

File tree

2 files changed

+27
-42
lines changed

2 files changed

+27
-42
lines changed

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/record/AddRecordActivity.kt

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,6 @@ import kotlinx.android.synthetic.main.content_add_record.*
3333
import java.util.*
3434
import javax.inject.Inject
3535

36-
/**
37-
* Created on 1/26/16.
38-
*
39-
* @author Evgenii Kanivets
40-
*
41-
* Updated on 9/12/19
42-
*
43-
* @author Bogdan Evtushenko
44-
*/
4536
class AddRecordActivity : BaseBackActivity() {
4637

4738
private var record: Record? = null
@@ -66,16 +57,13 @@ class AddRecordActivity : BaseBackActivity() {
6657
private lateinit var uiDecorator: AddRecordUiDecorator
6758
private lateinit var autoCompleter: CategoryAutoCompleter
6859

69-
override fun getContentViewId(): Int {
70-
return R.layout.activity_add_record
71-
}
60+
override fun getContentViewId() = R.layout.activity_add_record
61+
7262

7363
override fun initData(): Boolean {
7464
super.initData()
7565
appComponent.inject(this)
7666

77-
uiDecorator = AddRecordUiDecorator(this)
78-
7967
record = intent.getParcelableExtra(KEY_RECORD)
8068
mode = intent.getSerializableExtra(KEY_MODE) as Mode
8169
type = intent.getIntExtra(KEY_TYPE, -1)
@@ -93,18 +81,32 @@ class AddRecordActivity : BaseBackActivity() {
9381

9482
recordValidator = RecordValidator(this, contentView)
9583
autoCompleter = CategoryAutoCompleter(categoryController, preferenceController)
84+
uiDecorator = AddRecordUiDecorator(this)
85+
86+
uiDecorator.decorateActionBar(supportActionBar, mode, type)
9687

9788
if (mode == Mode.MODE_EDIT) {
9889
record?.let { record ->
9990
etTitle.setText(record.title)
100-
if (record.category != null) etCategory.setText(record.category?.name.orEmpty())
91+
etCategory.setText(record.category?.name.orEmpty())
10192
etPrice.setText(formatController.formatPrecisionNone(record.fullPrice))
10293
}
10394
}
10495

105-
uiDecorator.decorateActionBar(supportActionBar, mode, type)
96+
initCategoryAutocomplete()
10697
presentSpinnerAccount()
10798

99+
// Restrict ';' for input, because it's used as delimiter when exporting
100+
etTitle.filters = arrayOf<InputFilter>(SemicolonInputFilter())
101+
etCategory.filters = arrayOf<InputFilter>(SemicolonInputFilter())
102+
103+
tvDate.setOnClickListener { selectDate() }
104+
tvTime.setOnClickListener { selectTime() }
105+
106+
updateDateAndTime()
107+
}
108+
109+
private fun initCategoryAutocomplete() {
108110
val categoryAutoCompleteAdapter = CategoryAutoCompleteAdapter(
109111
this, R.layout.view_category_item, autoCompleter)
110112
etCategory.setAdapter(categoryAutoCompleteAdapter)
@@ -119,23 +121,12 @@ class AddRecordActivity : BaseBackActivity() {
119121
etCategory.onFocusChangeListener = View.OnFocusChangeListener { view, hasFocus ->
120122
if (hasFocus && etCategory.text.toString().trim().isEmpty()) {
121123
val title = etTitle.text.toString().trim()
122-
val prediction = autoCompleter.completeByRecordTitle(title)
123-
if (prediction != null) {
124+
autoCompleter.completeByRecordTitle(title)?.let { prediction ->
124125
etCategory.setText(prediction)
125126
etCategory.selectAll()
126-
etCategory.setAdapter(categoryAutoCompleteAdapter)
127127
}
128128
}
129129
}
130-
131-
// Restrict ';' for input, because it's used as delimiter when exporting
132-
etTitle.filters = arrayOf<InputFilter>(SemicolonInputFilter())
133-
etCategory.filters = arrayOf<InputFilter>(SemicolonInputFilter())
134-
135-
tvDate.setOnClickListener { selectDate() }
136-
tvTime.setOnClickListener { selectTime() }
137-
138-
updateDateAndTime()
139130
}
140131

141132
override fun onCreateOptionsMenu(menu: Menu): Boolean {
@@ -218,10 +209,7 @@ class AddRecordActivity : BaseBackActivity() {
218209
}
219210

220211
private fun presentSpinnerAccount() {
221-
val accounts = ArrayList<String>()
222-
for (account in accountList) {
223-
accounts.add(account.title)
224-
}
212+
val accounts = accountList.map { it.title }.toMutableList()
225213

226214
var selectedAccountIndex = -1
227215

@@ -241,8 +229,7 @@ class AddRecordActivity : BaseBackActivity() {
241229
accounts.add(getString(R.string.account_removed))
242230
}
243231

244-
spinnerAccount.adapter = ArrayAdapter(this,
245-
R.layout.view_spinner_item, accounts)
232+
spinnerAccount.adapter = ArrayAdapter(this, R.layout.view_spinner_item, accounts)
246233
spinnerAccount.setSelection(selectedAccountIndex)
247234
}
248235

@@ -292,17 +279,13 @@ class AddRecordActivity : BaseBackActivity() {
292279
tvTime.text = formatController.formatTime(timestamp)
293280
}
294281

295-
enum class Mode {
296-
MODE_ADD, MODE_EDIT
297-
}
282+
enum class Mode { MODE_ADD, MODE_EDIT }
298283

299284
private class SemicolonInputFilter : InputFilter {
300285

301286
override fun filter(source: CharSequence?, start: Int, end: Int, dest: Spanned, dstart: Int, dend: Int): CharSequence? {
302-
return if (source != null && ";" == source.toString())
303-
""
304-
else
305-
null
287+
return if (source != null && ";" == source.toString()) ""
288+
else null
306289
}
307290
}
308291

app/src/main/java/com/blogspot/e_kanivets/moneytracker/adapter/CategoryAutoCompleteAdapter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ protected void publishResults(CharSequence constraint, FilterResults results) {
8686
if (results != null && results.count > 0) {
8787
addAll((List) results.values);
8888
notifyDataSetChanged();
89-
} else notifyDataSetInvalidated();
89+
} else {
90+
notifyDataSetInvalidated();
91+
}
9092
}
9193
};
9294
}

0 commit comments

Comments
 (0)