diff options
Diffstat (limited to 'androidApp/src')
4 files changed, 132 insertions, 42 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt index dfc0493..9131728 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt @@ -5,7 +5,9 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.PopupMenu import androidx.fragment.app.Fragment +import mx.trackermap.TrackerMap.android.R import mx.trackermap.TrackerMap.android.databinding.UnitDetailsReportsBinding import mx.trackermap.TrackerMap.android.details.UnitDetailsAdapter import org.koin.androidx.viewmodel.ext.android.viewModel @@ -48,6 +50,9 @@ class UnitReportsFragment : Fragment() { else -> UnitReportsViewModel.ReportType.STOPS } } + binding.periodButton.setOnClickListener { + showPeriodPopUp(it) + } unitReportsViewModel.reportPeriod.value = UnitReportsViewModel.ReportPeriod.DAY unitReportsViewModel.reportType.value = UnitReportsViewModel.ReportType.POSITIONS } @@ -56,5 +61,33 @@ class UnitReportsFragment : Fragment() { unitReportsViewModel.report.observe(this) { report -> Log.d("UnitReportsFragment", "Report available: $report") } + unitReportsViewModel.reportPeriod.observe(this) { period -> + Log.d("UnitReportsFragment", "Period changed: $period") + if (period == null) { + return@observe + } + + binding.periodButton.text = context?.getString( + when (period) { + UnitReportsViewModel.ReportPeriod.DAY -> R.string.day_period + UnitReportsViewModel.ReportPeriod.WEEK -> R.string.week_period + UnitReportsViewModel.ReportPeriod.MONTH -> R.string.month_period + } + ) + } + } + + private fun showPeriodPopUp(view: View) { + val popOver = PopupMenu(context, view) + popOver.menuInflater.inflate(R.menu.report_period_options, popOver.menu) + popOver.setOnMenuItemClickListener { item -> + unitReportsViewModel.reportPeriod.value = when (item.itemId) { + R.id.dayOption -> UnitReportsViewModel.ReportPeriod.DAY + R.id.weekOption -> UnitReportsViewModel.ReportPeriod.WEEK + else -> UnitReportsViewModel.ReportPeriod.MONTH + } + true + } + popOver.show() } }
\ No newline at end of file diff --git a/androidApp/src/main/res/layout/unit_details_reports.xml b/androidApp/src/main/res/layout/unit_details_reports.xml index f064a3f..d0c50e5 100644 --- a/androidApp/src/main/res/layout/unit_details_reports.xml +++ b/androidApp/src/main/res/layout/unit_details_reports.xml @@ -5,52 +5,84 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <com.addisonelliott.segmentedbutton.SegmentedButtonGroup - android:id="@+id/reportType" - android:layout_width="0dp" + <LinearLayout + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="@dimen/margin" - app:borderWidth="1dp" - app:dividerPadding="10dp" - app:dividerWidth="1dp" + android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:position="0" - app:radius="30dp" - app:ripple="true" - app:selectedBackground="@color/colorPrimary"> + android:layout_margin="@dimen/margin"> - <com.addisonelliott.segmentedbutton.SegmentedButton - android:layout_width="0dp" + <LinearLayout + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_weight="1" - android:padding="10dp" - app:drawableGravity="top" - app:selectedTextColor="@color/darkBackground" - app:text="@string/positions" - app:textColor="@color/colorPrimaryDark" /> - - <com.addisonelliott.segmentedbutton.SegmentedButton - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:padding="10dp" - app:drawableGravity="top" - app:selectedTextColor="@color/darkBackground" - app:text="@string/events" - app:textColor="@color/colorPrimaryDark" /> - - <com.addisonelliott.segmentedbutton.SegmentedButton - android:layout_width="0dp" + android:orientation="horizontal"> + + <TextView + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:text="@string/period" + android:textColor="@color/colorPrimaryDark" + android:textSize="22sp" + android:gravity="center_vertical"/> + + <com.google.android.material.button.MaterialButton + android:id="@+id/periodButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/select_period" + android:textColor="@color/colorPrimaryDark" + app:backgroundTint="@color/darkBackground" /> + + </LinearLayout> + + <com.addisonelliott.segmentedbutton.SegmentedButtonGroup + android:id="@+id/reportType" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_weight="1" - android:padding="10dp" - app:drawableGravity="top" - app:selectedTextColor="@color/darkBackground" - app:text="@string/stops" - app:textColor="@color/colorPrimaryDark" /> - - </com.addisonelliott.segmentedbutton.SegmentedButtonGroup> + android:layout_marginTop="@dimen/margin" + app:borderWidth="1dp" + app:dividerPadding="10dp" + app:dividerWidth="1dp" + app:position="0" + app:radius="30dp" + app:ripple="true" + app:selectedBackground="@color/colorPrimary"> + + <com.addisonelliott.segmentedbutton.SegmentedButton + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:padding="10dp" + app:drawableGravity="top" + app:selectedTextColor="@color/darkBackground" + app:text="@string/positions" + app:textColor="@color/colorPrimaryDark" /> + + <com.addisonelliott.segmentedbutton.SegmentedButton + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:padding="10dp" + app:drawableGravity="top" + app:selectedTextColor="@color/darkBackground" + app:text="@string/events" + app:textColor="@color/colorPrimaryDark" /> + + <com.addisonelliott.segmentedbutton.SegmentedButton + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:padding="10dp" + app:drawableGravity="top" + app:selectedTextColor="@color/darkBackground" + app:text="@string/stops" + app:textColor="@color/colorPrimaryDark" /> + + </com.addisonelliott.segmentedbutton.SegmentedButtonGroup> + + </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/androidApp/src/main/res/menu/report_period_options.xml b/androidApp/src/main/res/menu/report_period_options.xml new file mode 100644 index 0000000..cf54ec3 --- /dev/null +++ b/androidApp/src/main/res/menu/report_period_options.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu + xmlns:android="http://schemas.android.com/apk/res/android"> + + <item + android:id="@+id/dayOption" + android:title="@string/day_period" /> + + <item + android:id="@+id/weekOption" + android:title="@string/week_period" /> + + <item + android:id="@+id/monthOption" + android:title="@string/month_period" /> + +</menu>
\ No newline at end of file diff --git a/androidApp/src/main/res/values/strings.xml b/androidApp/src/main/res/values/strings.xml index ca9ff5e..77a3048 100644 --- a/androidApp/src/main/res/values/strings.xml +++ b/androidApp/src/main/res/values/strings.xml @@ -19,16 +19,24 @@ <string name="unit_speed_format">%1$d km/h</string> + <!-- Details --> <string name="unit_details">Details</string> <string name="unit_reports">Reports</string> <string name="unit_commands">Commands</string> <string name="units_search">Type to search</string> - + + <!-- Commads --> <string name="key">Key</string> <string name="value">Value</string> <string name="send_command">Send Command</string> - + + <!-- Reports --> <string name="positions">Positions</string> <string name="events">Events</string> <string name="stops">Stops</string> + <string name="day_period">Day</string> + <string name="week_period">Week</string> + <string name="month_period">Month</string> + <string name="period">Period</string> + <string name="select_period">Select</string> </resources>
\ No newline at end of file |