diff --git a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt index afdd5b8..62acba1 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/MainActivity.kt @@ -21,6 +21,7 @@ import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.core.widget.doOnTextChanged import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.progressindicator.LinearProgressIndicator @@ -195,23 +196,59 @@ class MainActivity : AppCompatActivity() { super.onStop() } + fun getAllEvents(): ArrayList { + return logbook?.logs ?: arrayListOf() + } + fun askBabyBottleContent() { // Show number picker dialog - val localSettings = LocalSettingsRepository(this) + val event = LunaEvent(LunaEvent.TYPE_BABY_BOTTLE) + val previous = getPreviousSameEvent(event, getAllEvents()) val d = AlertDialog.Builder(this) val dialogView = layoutInflater.inflate(R.layout.number_picker_dialog, null) d.setTitle(R.string.log_bottle_dialog_title) d.setMessage(R.string.log_bottle_dialog_description) d.setView(dialogView) + val numberPicker = dialogView.findViewById(R.id.dialog_number_picker) numberPicker.minValue = 1 // "10" numberPicker.maxValue = 25 // "250 numberPicker.displayedValues = ((10..250 step 10).map { it.toString() }.toTypedArray()) numberPicker.wrapSelectorWheel = false - numberPicker.value = localSettings.loadBabyBottleContent() + if (previous != null) { + numberPicker.value = previous.quantity / 10 + } + + val currentDateTime = Calendar.getInstance() + currentDateTime.time = Date(event.time * 1000) + val dateTextView = dialogView.findViewById(R.id.dialog_date_picker) + dateTextView.text = + String.format(getString(R.string.dialog_event_detail_datetime_icon), DateUtils.formatDateTime(event.time)) + dateTextView.setOnClickListener { + // Show datetime picker + val startYear = currentDateTime.get(Calendar.YEAR) + val startMonth = currentDateTime.get(Calendar.MONTH) + val startDay = currentDateTime.get(Calendar.DAY_OF_MONTH) + val startHour = currentDateTime.get(Calendar.HOUR_OF_DAY) + val startMinute = currentDateTime.get(Calendar.MINUTE) + + DatePickerDialog(this, { _, year, month, day -> + TimePickerDialog(this, { _, hour, minute -> + val pickedDateTime = Calendar.getInstance() + pickedDateTime.set(year, month, day, hour, minute) + // Save event and move it to the right position in the logbook + event.time = pickedDateTime.time.time / 1000 // Seconds since epoch + dateTextView.text = String.format(getString(R.string.dialog_event_detail_datetime_icon), DateUtils.formatDateTime(event.time)) + }, startHour, startMinute, android.text.format.DateFormat.is24HourFormat(this@MainActivity)).show() + }, startYear, startMonth, startDay).show() + } + d.setPositiveButton(android.R.string.ok) { dialogInterface, i -> - logEvent(LunaEvent(LunaEvent.TYPE_BABY_BOTTLE, numberPicker.value * 10)) - localSettings.saveBabyBottleContent(numberPicker.value) + event.quantity = numberPicker.value * 10 + logEvent(event) + logbook?.sort() + recyclerView.adapter?.notifyDataSetChanged() + saveLogbook() } d.setNegativeButton(android.R.string.cancel) { dialogInterface, i -> dialogInterface.dismiss() } val alertDialog = d.create() diff --git a/app/src/main/java/it/danieleverducci/lunatracker/repository/LocalSettingsRepository.kt b/app/src/main/java/it/danieleverducci/lunatracker/repository/LocalSettingsRepository.kt index 1462820..9431194 100644 --- a/app/src/main/java/it/danieleverducci/lunatracker/repository/LocalSettingsRepository.kt +++ b/app/src/main/java/it/danieleverducci/lunatracker/repository/LocalSettingsRepository.kt @@ -23,14 +23,6 @@ class LocalSettingsRepository(val context: Context) { sharedPreferences = context.getSharedPreferences(SHARED_PREFS_FILE_NAME, MODE_PRIVATE) } - fun saveBabyBottleContent(content: Int) { - sharedPreferences.edit { putInt(SHARED_PREFS_BB_CONTENT, content) } - } - - fun loadBabyBottleContent(): Int { - return sharedPreferences.getInt(SHARED_PREFS_BB_CONTENT, 1) - } - fun saveSignature(content: String) { sharedPreferences.edit { putString(SHARED_PREFS_SIGNATURE, content) } } diff --git a/app/src/main/res/layout/number_picker_dialog.xml b/app/src/main/res/layout/number_picker_dialog.xml index ce2aa8b..851dce0 100644 --- a/app/src/main/res/layout/number_picker_dialog.xml +++ b/app/src/main/res/layout/number_picker_dialog.xml @@ -3,17 +3,33 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_gravity="center" - android:gravity="center"> + android:orientation="vertical"> - + + + + + + + + android:layout_gravity="center" + android:layout_marginEnd = "20dp"/> +