diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt
index d7c3b94..73bfba2 100644
--- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt
+++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt
@@ -6,11 +6,13 @@ import android.content.res.Resources
import android.os.Bundle
import android.os.Handler
import android.os.Message
+import android.view.View
import androidx.fragment.app.DialogFragment
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.Fragment
import cy.agorise.bitsybitshareswallet.R
+import cy.agorise.bitsybitshareswallet.views.DatePickerFragment
import java.text.SimpleDateFormat
import java.util.*
import kotlin.ClassCastException
@@ -39,7 +41,7 @@ class FilterOptionsDialog : DialogFragment() {
private var mCallback: OnFilterOptionsSelectedListener? = null
- private var mDatePickerHandler: DatePickerHandler? = null
+ private lateinit var mDatePickerHandler: DatePickerHandler
private var dateFormat: SimpleDateFormat = SimpleDateFormat("d/MMM/yyyy",
Resources.getSystem().configuration.locale)
@@ -175,21 +177,21 @@ class FilterOptionsDialog : DialogFragment() {
// Initialize Date range
cbDateRange = view.findViewById(R.id.cbDateRange)
-// llDateRange = view.findViewById(R.id.llDateRange)
-// cbDateRange.setOnCheckedChangeListener { _, isChecked ->
-// llDateRange.visibility = if(isChecked) View.GONE else View.VISIBLE }
+ llDateRange = view.findViewById(R.id.llDateRange)
+ cbDateRange.setOnCheckedChangeListener { _, isChecked ->
+ llDateRange.visibility = if(isChecked) View.GONE else View.VISIBLE }
cbDateRange.isChecked = arguments!!.getBoolean(KEY_FILTER_DATE_RANGE_ALL, true)
-//
-// tvStartDate = view.findViewById(R.id.tvStartDate)
-// tvEndDate = view.findViewById(R.id.tvEndDate)
-//
-// startDate = arguments!!.getLong(KEY_FILTER_START_DATE, 0)
-// tvStartDate.setOnClickListener(mDateClickListener)
-//
-// endDate = arguments!!.getLong(KEY_FILTER_END_DATE, 0)
-// tvEndDate.setOnClickListener(mDateClickListener)
-//
-// updateDateTextViews()
+
+ tvStartDate = view.findViewById(R.id.tvStartDate)
+ tvEndDate = view.findViewById(R.id.tvEndDate)
+
+ startDate = arguments!!.getLong(KEY_FILTER_START_DATE, 0)
+ tvStartDate.setOnClickListener(mDateClickListener)
+
+ endDate = arguments!!.getLong(KEY_FILTER_END_DATE, 0)
+ tvEndDate.setOnClickListener(mDateClickListener)
+
+ updateDateTextViews()
// Initialize Cryptocurrency
cbCryptocurrency = view.findViewById(R.id.cbCryptocurrency)
@@ -257,29 +259,29 @@ class FilterOptionsDialog : DialogFragment() {
// sCryptocurrency.setSelection(index)
// }
-// private val mDateClickListener = View.OnClickListener { v ->
-// val calendar = Calendar.getInstance()
-//
-// // Variable used to select that date on the calendar
-// var currentTime = calendar.timeInMillis
-// var maxTime = currentTime
-//
-// var which = -1
-// if (v.id == R.id.tvStartDate) {
-// which = START_DATE_PICKER
-// currentTime = startDate
-// calendar.timeInMillis = endDate
-// calendar.add(Calendar.MONTH, -1)
-// maxTime = calendar.timeInMillis
-// } else if (v.id == R.id.tvEndDate) {
-// which = END_DATE_PICKER
-// currentTime = endDate
-// }
-//
-// val datePickerFragment = DatePickerFragment.newInstance(which, currentTime,
-// maxTime, mDatePickerHandler)
-// datePickerFragment.show(activity!!.supportFragmentManager, "date-picker")
-// }
+ private val mDateClickListener = View.OnClickListener { v ->
+ val calendar = Calendar.getInstance()
+
+ // Variable used to select that date on the calendar
+ var currentTime = calendar.timeInMillis
+ var maxTime = currentTime
+
+ var which = -1
+ if (v.id == R.id.tvStartDate) {
+ which = START_DATE_PICKER
+ currentTime = startDate
+ calendar.timeInMillis = endDate
+ calendar.add(Calendar.MONTH, -1)
+ maxTime = calendar.timeInMillis
+ } else if (v.id == R.id.tvEndDate) {
+ which = END_DATE_PICKER
+ currentTime = endDate
+ }
+
+ val datePickerFragment = DatePickerFragment.newInstance(which, currentTime,
+ maxTime, mDatePickerHandler)
+ datePickerFragment.show(activity!!.supportFragmentManager, "date-picker")
+ }
private fun validateFields() {
val filterTransactionsDirection = when {
diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/views/DatePickerFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/views/DatePickerFragment.kt
new file mode 100644
index 0000000..312d3af
--- /dev/null
+++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/views/DatePickerFragment.kt
@@ -0,0 +1,79 @@
+package cy.agorise.bitsybitshareswallet.views
+
+import android.app.DatePickerDialog
+import android.app.Dialog
+import android.os.Bundle
+import android.os.Message
+import android.widget.DatePicker
+import androidx.fragment.app.DialogFragment
+import cy.agorise.bitsybitshareswallet.fragments.FilterOptionsDialog
+import java.util.*
+
+class DatePickerFragment : DialogFragment(), DatePickerDialog.OnDateSetListener {
+
+ companion object {
+ const val TAG = "DatePickerFragment"
+
+ const val KEY_WHICH = "key_which"
+ const val KEY_CURRENT = "key_current"
+ const val KEY_MAX = "key_max"
+
+ fun newInstance(
+ which: Int, currentTime: Long, maxTime: Long,
+ handler: FilterOptionsDialog.DatePickerHandler
+ ): DatePickerFragment {
+ val f = DatePickerFragment()
+ val bundle = Bundle()
+ bundle.putInt(KEY_WHICH, which)
+ bundle.putLong(KEY_CURRENT, currentTime)
+ bundle.putLong(KEY_MAX, maxTime)
+ f.arguments = bundle
+ f.setHandler(handler)
+ return f
+ }
+ }
+
+ private var which: Int = 0
+ private var mHandler: FilterOptionsDialog.DatePickerHandler? = null
+
+ fun setHandler(handler: FilterOptionsDialog.DatePickerHandler) {
+ mHandler = handler
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ which = arguments!!.getInt(KEY_WHICH)
+ }
+
+ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+ val currentTime = arguments!!.getLong(KEY_CURRENT)
+ val maxTime = arguments!!.getLong(KEY_MAX)
+
+ // Use the current date as the default date in the picker
+ val calendar = Calendar.getInstance()
+ calendar.timeInMillis = currentTime
+
+ val year = calendar.get(Calendar.YEAR)
+ val month = calendar.get(Calendar.MONTH)
+ val day = calendar.get(Calendar.DAY_OF_MONTH)
+
+ // Create a new instance of DatePickerDialog and return it
+ val datePicker = DatePickerDialog(activity!!, this, year, month, day)
+
+ // Set maximum date allowed to today
+ datePicker.datePicker.maxDate = maxTime
+
+ return datePicker
+ }
+
+ override fun onDateSet(view: DatePicker, year: Int, month: Int, day: Int) {
+ val msg = Message.obtain()
+ msg.arg1 = which
+ val calendar = GregorianCalendar()
+ calendar.set(year, month, day)
+ val bundle = Bundle()
+ bundle.putLong(FilterOptionsDialog.KEY_TIMESTAMP, calendar.time.time)
+ msg.data = bundle
+ mHandler!!.sendMessage(msg)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index a6268bc..115e364 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -17,7 +17,7 @@
-