Workout details: add button to rotate charts activity

This commit is contained in:
José Rebelo
2025-08-28 19:10:07 +02:00
committed by José Rebelo
parent 0e78261c5a
commit 28a331f4f4
5 changed files with 51 additions and 3 deletions
+2 -1
View File
@@ -201,7 +201,8 @@
<activity <activity
android:name=".activities.workouts.charts.WorkoutChartsActivity" android:name=".activities.workouts.charts.WorkoutChartsActivity"
android:label="@string/workout_charts" android:label="@string/workout_charts"
android:parentActivityName=".activities.SettingsActivity" /> android:configChanges="keyboard|keyboardHidden|orientation|screenSize|layoutDirection|uiMode"
android:parentActivityName=".activities.workouts.WorkoutDetailsActivity" />
<activity <activity
android:name=".activities.SleepAsAndroidPreferencesActivity" android:name=".activities.SleepAsAndroidPreferencesActivity"
android:label="@string/sleepasandroid_settings" android:label="@string/sleepasandroid_settings"
@@ -1,7 +1,13 @@
package nodomain.freeyourgadget.gadgetbridge.activities.workouts.charts package nodomain.freeyourgadget.gadgetbridge.activities.workouts.charts
import android.content.pm.ActivityInfo
import android.content.res.Configuration
import android.os.Bundle import android.os.Bundle
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.widget.Toast import android.widget.Toast
import androidx.core.view.MenuProvider
import com.github.mikephil.charting.components.XAxis import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.data.LineData import com.github.mikephil.charting.data.LineData
@@ -17,9 +23,8 @@ import nodomain.freeyourgadget.gadgetbridge.activities.charts.DurationXLabelForm
import nodomain.freeyourgadget.gadgetbridge.activities.charts.marker.ValueMarker import nodomain.freeyourgadget.gadgetbridge.activities.charts.marker.ValueMarker
import nodomain.freeyourgadget.gadgetbridge.databinding.WorkoutChartsBinding import nodomain.freeyourgadget.gadgetbridge.databinding.WorkoutChartsBinding
import nodomain.freeyourgadget.gadgetbridge.model.workout.WorkoutChart import nodomain.freeyourgadget.gadgetbridge.model.workout.WorkoutChart
import kotlin.math.max
class WorkoutChartsActivity : AbstractGBActivity() { class WorkoutChartsActivity : AbstractGBActivity(), MenuProvider {
private lateinit var binding: WorkoutChartsBinding private lateinit var binding: WorkoutChartsBinding
private var chartData: List<WorkoutChart>? = null private var chartData: List<WorkoutChart>? = null
val selectedCharts = mutableListOf<Any>() val selectedCharts = mutableListOf<Any>()
@@ -28,6 +33,7 @@ class WorkoutChartsActivity : AbstractGBActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = WorkoutChartsBinding.inflate(layoutInflater) binding = WorkoutChartsBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
addMenuProvider(this)
chartData = ChartDataRepository.chartData chartData = ChartDataRepository.chartData
if (chartData == null) { if (chartData == null) {
@@ -131,6 +137,26 @@ class WorkoutChartsActivity : AbstractGBActivity() {
binding.workoutDataChart.invalidate() binding.workoutDataChart.invalidate()
} }
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
getMenuInflater().inflate(R.menu.workout_charts_menu, menu);
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
return when (menuItem.itemId) {
R.id.action_rotate_screen -> {
val currentOrientation = getResources().configuration.orientation
if (currentOrientation == Configuration.ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
}
true
}
else -> false
}
}
companion object { companion object {
const val INIT_CHART_ID = "INIT_CHART_ID" const val INIT_CHART_ID = "INIT_CHART_ID"
} }
@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M496,778 L183,464q-11,-11 -17,-25t-6,-29q0,-15 6,-29t17,-25l173,-173q11,-11 25,-16.5t29,-5.5q15,0 29,5.5t25,16.5l313,313q11,11 17,25t6,29q0,15 -6,29t-17,25L604,778q-11,11 -25,16.5t-29,5.5q-15,0 -29,-5.5T496,778ZM550,720 L720,550 410,240 240,410 550,720ZM480,960q-99,0 -186.5,-37.5t-153,-103Q75,754 37.5,666.5T0,480h80q0,71 24,136t66.5,117Q213,785 272,821.5T401,873L296,768l56,-56L588,948q-26,6 -53.5,9T480,960ZM880,480q0,-71 -24,-136t-66.5,-117Q747,175 688,138.5T559,87l105,105 -56,56 -236,-236q26,-6 53.5,-9t54.5,-3q99,0 186.5,37.5t153,103q65.5,65.5 103,153T960,480h-80ZM480,480ZM373,404q13,0 21.5,-9t8.5,-21q0,-13 -8.5,-21.5T373,344q-12,0 -21,8.5t-9,21.5q0,12 9,21t21,9Z" />
</vector>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_rotate_screen"
android:icon="@drawable/ic_mobile_rotate"
android:title="@string/rotate_screen"
app:showAsAction="always" />
</menu>
+1
View File
@@ -4310,4 +4310,5 @@
<string name="work_info_running_percentage">%1$s (%2$d%%)</string> <string name="work_info_running_percentage">%1$s (%2$d%%)</string>
<string name="datetime_in_the_future">%1$s (in %2$s)</string> <string name="datetime_in_the_future">%1$s (in %2$s)</string>
<string name="datetime_in_the_past">%1$s (%2$s ago)</string> <string name="datetime_in_the_past">%1$s (%2$s ago)</string>
<string name="rotate_screen">Rotate screen</string>
</resources> </resources>