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

Commit 6873306

Browse files
#179. Add review fixes.
1 parent ff70798 commit 6873306

File tree

7 files changed

+269
-247
lines changed

7 files changed

+269
-247
lines changed

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

Lines changed: 48 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.blogspot.e_kanivets.moneytracker.activity
33
import android.view.View
44
import android.widget.AdapterView
55
import android.widget.ArrayAdapter
6+
import com.blogspot.e_kanivets.moneytracker.MtApp
67
import com.blogspot.e_kanivets.moneytracker.R
78
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity
89
import com.blogspot.e_kanivets.moneytracker.adapter.RecordReportAdapter
@@ -14,6 +15,7 @@ import com.blogspot.e_kanivets.moneytracker.entity.Period
1415
import com.blogspot.e_kanivets.moneytracker.entity.RecordReportItem
1516
import com.blogspot.e_kanivets.moneytracker.entity.data.Record
1617
import com.blogspot.e_kanivets.moneytracker.report.ReportMaker
18+
import com.blogspot.e_kanivets.moneytracker.report.record.IRecordReport
1719
import com.blogspot.e_kanivets.moneytracker.ui.presenter.ShortSummaryPresenter
1820
import kotlinx.android.synthetic.main.activity_report.*
1921
import java.util.*
@@ -27,12 +29,11 @@ class ReportActivity : BaseBackActivity() {
2729
lateinit var rateController: ExchangeRateController
2830
@Inject
2931
lateinit var currencyController: CurrencyController
30-
@Inject
31-
lateinit var formatController: FormatController
3232

3333
private var recordList: List<Record> = listOf()
3434
private var period: Period? = null
3535
private lateinit var adapter: RecordReportAdapter
36+
private lateinit var recordReportConverter: RecordReportConverter
3637

3738
private lateinit var shortSummaryPresenter: ShortSummaryPresenter
3839

@@ -48,6 +49,7 @@ class ReportActivity : BaseBackActivity() {
4849
recordList = recordController.getRecordsForPeriod(period)
4950
shortSummaryPresenter = ShortSummaryPresenter(this)
5051
adapter = RecordReportAdapter(mutableListOf(), hashMapOf(), this)
52+
recordReportConverter = RecordReportConverter()
5153

5254
return true
5355
}
@@ -57,35 +59,15 @@ class ReportActivity : BaseBackActivity() {
5759

5860
initSpinnerCurrency()
5961

60-
adapter.addSummaryView(shortSummaryPresenter.create(false, null))
62+
adapter.setSummaryView(shortSummaryPresenter.create(false, null))
6163
recyclerView.adapter = adapter
6264
}
6365

6466
private fun update(currency: String) {
6567
val reportMaker = ReportMaker(rateController)
6668
val report = reportMaker.getRecordReport(currency, period, recordList)
6769

68-
val data: HashMap<RecordReportItem.ParentRow, List<RecordReportItem.ChildRow>> = hashMapOf()
69-
val items: MutableList<RecordReportItem> = mutableListOf()
70-
71-
if (report != null) {
72-
for (categoryRecord in report.summary) {
73-
74-
val parentRow = RecordReportItem.ParentRow(categoryRecord.title, formatController.formatSignedAmount(categoryRecord.amount), false)
75-
items.add(parentRow)
76-
77-
val childRows: MutableList<RecordReportItem.ChildRow> = mutableListOf()
78-
79-
for (summaryRecord in categoryRecord.summaryRecordList) {
80-
val childRow = RecordReportItem.ChildRow(summaryRecord.title, formatController.formatSignedAmount(summaryRecord.amount))
81-
childRows.add(childRow)
82-
}
83-
84-
data[parentRow] = childRows
85-
}
86-
}
87-
88-
adapter.setData(items, data)
70+
adapter.setData(recordReportConverter.getItemsFromReport(report), recordReportConverter.getDataFromReport(report))
8971
shortSummaryPresenter.update(report, currency, reportMaker.currencyNeeded(currency, recordList))
9072
}
9173

@@ -105,6 +87,48 @@ class ReportActivity : BaseBackActivity() {
10587
spinnerCurrency.setSelection(currencyList.indexOf(currency))
10688
}
10789

90+
class RecordReportConverter {
91+
92+
@Inject
93+
lateinit var formatController: FormatController
94+
95+
init {
96+
MtApp.get().appComponent.inject(this)
97+
}
98+
99+
fun getItemsFromReport(report: IRecordReport?): MutableList<RecordReportItem> {
100+
val items: MutableList<RecordReportItem> = mutableListOf()
101+
102+
if (report == null) return items
103+
104+
for (categoryRecord in report.summary) {
105+
val parentRow = RecordReportItem.ParentRow(categoryRecord.title, formatController.formatSignedAmount(categoryRecord.amount), false)
106+
items.add(parentRow)
107+
}
108+
return items
109+
}
110+
111+
fun getDataFromReport(report: IRecordReport?): HashMap<RecordReportItem.ParentRow, List<RecordReportItem.ChildRow>> {
112+
val data: HashMap<RecordReportItem.ParentRow, List<RecordReportItem.ChildRow>> = hashMapOf()
113+
114+
if (report == null) return data
115+
116+
for (categoryRecord in report.summary) {
117+
val parentRow = RecordReportItem.ParentRow(categoryRecord.title, formatController.formatSignedAmount(categoryRecord.amount), false)
118+
val childRows: MutableList<RecordReportItem.ChildRow> = mutableListOf()
119+
120+
for (summaryRecord in categoryRecord.summaryRecordList) {
121+
val childRow = RecordReportItem.ChildRow(summaryRecord.title, formatController.formatSignedAmount(summaryRecord.amount))
122+
childRows.add(childRow)
123+
}
124+
125+
data[parentRow] = childRows
126+
}
127+
return data
128+
}
129+
130+
}
131+
108132
companion object {
109133

110134
const val KEY_PERIOD = "key_period"

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.blogspot.e_kanivets.moneytracker.activity.record
22

33
import android.content.Intent
44
import android.support.v7.app.AppCompatActivity
5+
import android.support.v7.widget.RecyclerView
56
import android.widget.TextView
67
import com.blogspot.e_kanivets.moneytracker.R
78
import com.blogspot.e_kanivets.moneytracker.activity.ReportActivity
@@ -26,7 +27,6 @@ import kotlinx.android.synthetic.main.activity_main.*
2627
import kotlinx.android.synthetic.main.content_main.*
2728
import javax.inject.Inject
2829

29-
3030
class MainActivity : BaseDrawerActivity() {
3131

3232
private lateinit var recordList: List<Record>
@@ -77,13 +77,11 @@ class MainActivity : BaseDrawerActivity() {
7777
tvCurrency = navigationView.getHeaderView(0).findViewById(R.id.tvCurrency)
7878

7979
recordAdapter = RecordAdapter(this, listOf(), true)
80-
recordAdapter.setOnItemClickListener { position -> editRecord(position) }
80+
recordAdapter.itemClickListener = { position -> editRecord(getPositionWithoutSummary(position)) }
8181

8282
summaryPresenter = ShortSummaryPresenter(this)
83-
val summaryView = summaryPresenter.create(true) {
84-
showReport()
85-
}
86-
recordAdapter.addSummaryView(summaryView)
83+
val summaryViewHolder = summaryPresenter.create(true) { showReport() }.tag as RecyclerView.ViewHolder
84+
recordAdapter.summaryViewHolder = summaryViewHolder
8785

8886
recyclerView.adapter = recordAdapter
8987

@@ -99,10 +97,14 @@ class MainActivity : BaseDrawerActivity() {
9997
btnAddIncome.setOnClickListener { addIncome() }
10098
}
10199

100+
private fun getPositionWithoutSummary(position: Int): Int {
101+
return position - 1
102+
}
103+
102104
private fun editRecord(position: Int) {
103105
AnswersProxy.get().logButton("Edit Record")
104106
// -1 because SummaryView
105-
val record = recordList[getRecordPosition(position - 1)]
107+
val record = recordList[getRecordPosition(position)]
106108
startAddRecordActivity(record, AddRecordActivity.Mode.MODE_EDIT, record.type)
107109
}
108110

@@ -160,8 +162,8 @@ class MainActivity : BaseDrawerActivity() {
160162
private fun getRecordPosition(position: Int): Int {
161163
var recordPosition = 0
162164

163-
for (inOfData in 0 until position) {
164-
if (recordItems[inOfData] is RecordItem.Record) {
165+
for (indexOfItem in 0 until position) {
166+
if (recordItems[indexOfItem] is RecordItem.Record) {
165167
recordPosition++
166168
}
167169
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/adapter/RecordAdapter.kt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class RecordAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
2020
@Inject
2121
lateinit var formatController: FormatController
2222

23-
private var itemClickListener: ((Int) -> Unit)? = null
23+
var itemClickListener: ((Int) -> Unit)? = null
2424

2525
private var whiteRed: Int
2626
private var whiteGreen: Int
@@ -31,7 +31,7 @@ class RecordAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
3131
private var context: Context
3232

3333
private var isSummaryViewNeeded: Boolean = false
34-
private lateinit var summaryViewHolder: RecyclerView.ViewHolder
34+
lateinit var summaryViewHolder: RecyclerView.ViewHolder
3535

3636
constructor(context: Context, items: List<RecordItem>, isSummaryViewNeeded: Boolean) {
3737
this.context = context
@@ -47,14 +47,6 @@ class RecordAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder> {
4747
this.isSummaryViewNeeded = isSummaryViewNeeded
4848
}
4949

50-
fun addSummaryView(summaryView: View) {
51-
this.summaryViewHolder = summaryView.tag as RecyclerView.ViewHolder
52-
}
53-
54-
fun setOnItemClickListener(itemClickListener: ((Int) -> Unit)) {
55-
this.itemClickListener = itemClickListener
56-
}
57-
5850
override fun getItemCount() = items.size + if (isSummaryViewNeeded) 1 else 0
5951

6052
override fun getItemViewType(position: Int): Int = if (position == 0 && isSummaryViewNeeded) {

0 commit comments

Comments
 (0)