@@ -33,15 +33,6 @@ import kotlinx.android.synthetic.main.content_add_record.*
3333import java.util.*
3434import 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- */
4536class 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
0 commit comments