4 Commits

Author SHA1 Message Date
4f8209b793 global: rename StatisticsActivity to LongTermStatisticsActivity
Make way for a future ShortTermStatisticsActivity.
2026-06-18 14:41:56 +02:00
ddcc2fc492 sleep: fix date picker usage
The time the date picker uses needs to be updated.
Also make some variable names more logical.
2026-06-18 14:28:36 +02:00
c75d4ed8a7 activity_main: add horizontal margin to error message 2026-06-18 14:09:51 +02:00
16e5b39d6f notes: do not update quantity
When using the tiny arrows to switch
between older texts, do not change
the quantity field.
2026-06-12 16:10:09 +02:00
4 changed files with 44 additions and 43 deletions

View File

@@ -31,7 +31,7 @@
android:label="@string/settings_title"
android:theme="@style/Theme.LunaTracker"/>
<activity
android:name=".StatisticsActivity"
android:name=".LongTermStatisticsActivity"
android:label="@string/statistics_title"
android:theme="@style/Theme.LunaTracker"/>
</application>

View File

@@ -35,7 +35,7 @@ import java.util.Locale
import kotlin.math.max
import kotlin.math.min
class StatisticsActivity : AppCompatActivity() {
class LongTermStatisticsActivity : AppCompatActivity() {
var lastToastShown = 0L
lateinit var barChart: BarChart
@@ -767,7 +767,7 @@ class StatisticsActivity : AppCompatActivity() {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, pos: Int, id: Long) {
if (pos >= arrayValues.size) {
Toast.makeText(
this@StatisticsActivity,
this@LongTermStatisticsActivity,
"pos out of bounds: $arrayValues", Toast.LENGTH_SHORT
).show()
return
@@ -784,7 +784,7 @@ class StatisticsActivity : AppCompatActivity() {
}
companion object {
const val TAG = "StatisticsActivity"
const val TAG = "LongTermStatisticsActivity"
// 15 min steps
const val SLEEP_PATTERN_GRANULARITY = 15 * 60

View File

@@ -481,15 +481,15 @@ class MainActivity : AppCompatActivity() {
d.setTitle(event.getDialogTitle(this))
d.setView(dialogView)
val durationTextView = dialogView.findViewById<TextView>(R.id.dialog_date_duration)
val datePickerBegin = dialogView.findViewById<TextView>(R.id.dialog_date_picker_begin)
val datePickerEnd = dialogView.findViewById<TextView>(R.id.dialog_date_picker_end)
val dateDelimiter = dialogView.findViewById<TextView>(R.id.dialog_date_range_delimiter)
val durationTV = dialogView.findViewById<TextView>(R.id.dialog_date_duration)
val datePickerBeginTV = dialogView.findViewById<TextView>(R.id.dialog_date_picker_begin)
val datePickerEndTV = dialogView.findViewById<TextView>(R.id.dialog_date_picker_end)
val dateDelimiterTV = dialogView.findViewById<TextView>(R.id.dialog_date_range_delimiter)
val durationButtons = dialogView.findViewById<LinearLayout>(R.id.duration_buttons)
val durationNowButton = dialogView.findViewById<Button>(R.id.dialog_date_duration_now)
val durationClearButton = dialogView.findViewById<Button>(R.id.dialog_date_duration_clear)
val currentDurationTextColor = durationTextView.currentTextColor
val currentDurationTextColor = durationTV.currentTextColor
val invalidDurationTextColor = ContextCompat.getColor(this, R.color.danger)
// in seconds
@@ -506,59 +506,59 @@ class MainActivity : AppCompatActivity() {
}
fun updateFields() {
datePickerBegin.text = DateUtils.formatDateTime(durationStart)
datePickerEnd.text = DateUtils.formatDateTime(durationEnd)
datePickerBeginTV.text = DateUtils.formatDateTime(durationStart)
datePickerEndTV.text = DateUtils.formatDateTime(durationEnd)
durationTextView.setTextColor(currentDurationTextColor)
dateTimePicker(durationStart, datePickerBeginTV) { pickedTime: Long ->
durationStart = pickedTime
if (datePickerEndTV.visibility == View.GONE) {
durationEnd = pickedTime
}
updateFields()
}
dateTimePicker(durationEnd, datePickerEndTV) { pickedTime: Long ->
durationEnd = pickedTime
updateFields()
}
durationTV.setTextColor(currentDurationTextColor)
val duration = durationEnd - durationStart
if (duration == 0L) {
// event is ongoing
durationTextView.text = "💤"
dateDelimiter.visibility = View.GONE
datePickerEnd.visibility = View.GONE
durationTV.text = "💤"
dateDelimiterTV.visibility = View.GONE
datePickerEndTV.visibility = View.GONE
} else {
durationTextView.text = DateUtils.formatTimeDuration(applicationContext, duration)
durationTV.text = DateUtils.formatTimeDuration(applicationContext, duration)
if (!isValidTimeSpan(durationStart, durationEnd)) {
durationTextView.setTextColor(invalidDurationTextColor)
durationTV.setTextColor(invalidDurationTextColor)
}
dateDelimiter.visibility = View.VISIBLE
datePickerEnd.visibility = View.VISIBLE
dateDelimiterTV.visibility = View.VISIBLE
datePickerEndTV.visibility = View.VISIBLE
}
datePickerBegin.setTextColor(if (isValidTime(durationStart)) { currentDurationTextColor } else { invalidDurationTextColor })
datePickerEnd.setTextColor(if (isValidTime(durationEnd)) { currentDurationTextColor } else { invalidDurationTextColor })
}
val colorBegin = if (isValidTime(durationStart)) { currentDurationTextColor } else { invalidDurationTextColor }
datePickerBeginTV.setTextColor(colorBegin)
val pickedDateTimeBegin = dateTimePicker(event.time, datePickerBegin) { pickedTime: Long ->
durationStart = pickedTime
if (datePickerEnd.visibility == View.GONE) {
durationEnd = pickedTime
}
updateFields()
}
val pickedDateTimeEnd = dateTimePicker(event.time + event.quantity, datePickerEnd) { pickedTime: Long ->
durationEnd = pickedTime
updateFields()
val colorEnd = if (isValidTime(durationEnd)) { currentDurationTextColor } else { invalidDurationTextColor }
datePickerEndTV.setTextColor(colorEnd)
}
if (showTime) {
dateDelimiter.visibility = View.GONE
datePickerEnd.visibility = View.GONE
durationTextView.visibility = View.GONE
dateDelimiterTV.visibility = View.GONE
datePickerEndTV.visibility = View.GONE
durationTV.visibility = View.GONE
durationButtons.visibility = View.GONE
//d.setMessage("")
} else {
dateDelimiter.visibility = View.VISIBLE
datePickerEnd.visibility = View.VISIBLE
durationTextView.visibility = View.VISIBLE
dateDelimiterTV.visibility = View.VISIBLE
datePickerEndTV.visibility = View.VISIBLE
durationTV.visibility = View.VISIBLE
durationButtons.visibility = View.VISIBLE
d.setMessage(event.getDialogMessage(this))
}
durationStart = pickedDateTimeBegin.time.time / 1000
durationEnd = pickedDateTimeEnd.time.time / 1000
updateFields()
durationClearButton.setOnClickListener {
@@ -1359,7 +1359,7 @@ class MainActivity : AppCompatActivity() {
// Add statistics (hard coded)
contentView.findViewById<View>(R.id.button_statistics).setOnClickListener {
if (logbook != null && !pauseLogbookUpdate) {
val i = Intent(applicationContext, StatisticsActivity::class.java)
val i = Intent(applicationContext, LongTermStatisticsActivity::class.java)
i.putExtra("LOOGBOOK_NAME", logbook!!.name)
startActivity(i)
} else {

View File

@@ -259,6 +259,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginHorizontal="10dp"
android:gravity="center_horizontal"
android:text="@string/no_connection_explain"/>