From dc38bfecc191d7031d51a9ca0b3b01a32965d40e Mon Sep 17 00:00:00 2001 From: Bnyro Date: Mon, 12 Jun 2023 14:19:44 +0200 Subject: [PATCH 01/60] Migrate all dialogs to Material Design 3 --- .../transportr/TransportrApplication.kt | 3 ++ .../locations/SpecialLocationFragment.kt | 4 -- .../grobox/transportr/map/DrawerActivity.kt | 2 +- .../de/grobox/transportr/map/MapActivity.java | 2 +- .../grobox/transportr/ui/TimeDateFragment.kt | 29 ++++++++----- .../transportr/ui/TransportrChangeLog.kt | 42 ++++++++++++++++--- .../main/res/layout/fragment_time_date.xml | 13 +++--- app/src/main/res/values-night/themes.xml | 9 ---- app/src/main/res/values/themes.xml | 28 +------------ 9 files changed, 66 insertions(+), 66 deletions(-) diff --git a/app/src/main/java/de/grobox/transportr/TransportrApplication.kt b/app/src/main/java/de/grobox/transportr/TransportrApplication.kt index 5e69126ca..91f92d6f6 100644 --- a/app/src/main/java/de/grobox/transportr/TransportrApplication.kt +++ b/app/src/main/java/de/grobox/transportr/TransportrApplication.kt @@ -19,6 +19,7 @@ package de.grobox.transportr import android.app.Application +import com.google.android.material.color.DynamicColors import com.mapbox.mapboxsdk.Mapbox import com.mapbox.services.android.telemetry.MapboxTelemetry @@ -27,6 +28,8 @@ open class TransportrApplication : Application() { private set override fun onCreate() { + // TODO DynamicColors.applyToActivitiesIfAvailable(this) + super.onCreate() Mapbox.getInstance( diff --git a/app/src/main/java/de/grobox/transportr/favorites/locations/SpecialLocationFragment.kt b/app/src/main/java/de/grobox/transportr/favorites/locations/SpecialLocationFragment.kt index c32d4e169..dfed216bc 100644 --- a/app/src/main/java/de/grobox/transportr/favorites/locations/SpecialLocationFragment.kt +++ b/app/src/main/java/de/grobox/transportr/favorites/locations/SpecialLocationFragment.kt @@ -62,10 +62,6 @@ abstract class SpecialLocationFragment : DialogFragment(), LocationView.Location override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) inject((activity!!.application as TransportrApplication).component) - setStyle( - STYLE_NO_TITLE, - R.style.SetHomeDialogTheme - ) } protected abstract fun inject(component: AppComponent) diff --git a/app/src/main/java/de/grobox/transportr/map/DrawerActivity.kt b/app/src/main/java/de/grobox/transportr/map/DrawerActivity.kt index e41367845..7a60d88b0 100644 --- a/app/src/main/java/de/grobox/transportr/map/DrawerActivity.kt +++ b/app/src/main/java/de/grobox/transportr/map/DrawerActivity.kt @@ -88,7 +88,7 @@ internal abstract class DrawerActivity : TransportrActivity() { }, DividerDrawerItem(), getDrawerItem(R.string.drawer_changelog, R.drawable.ic_action_changelog) { - TransportrChangeLog(this, settingsManager).fullLogDialog.show() + TransportrChangeLog(this, settingsManager).getMaterialDialog(true).show() }, getDrawerItem(R.string.drawer_contributors, R.drawable.ic_people) { val intent = Intent(this, ContributorsActivity::class.java) diff --git a/app/src/main/java/de/grobox/transportr/map/MapActivity.java b/app/src/main/java/de/grobox/transportr/map/MapActivity.java index f8fd7c38d..ca67b2f07 100644 --- a/app/src/main/java/de/grobox/transportr/map/MapActivity.java +++ b/app/src/main/java/de/grobox/transportr/map/MapActivity.java @@ -236,7 +236,7 @@ protected void onNewIntent(Intent intent) { private void checkAndShowChangelog() { TransportrChangeLog cl = new TransportrChangeLog(this, getSettingsManager()); if (cl.isFirstRun() && !cl.isFirstRunEver()) { - cl.getLogDialog().show(); + cl.getMaterialDialog(cl.isFirstRunEver()).show(); } } diff --git a/app/src/main/java/de/grobox/transportr/ui/TimeDateFragment.kt b/app/src/main/java/de/grobox/transportr/ui/TimeDateFragment.kt index 0ded2f25e..b4e5f6f11 100755 --- a/app/src/main/java/de/grobox/transportr/ui/TimeDateFragment.kt +++ b/app/src/main/java/de/grobox/transportr/ui/TimeDateFragment.kt @@ -19,25 +19,24 @@ package de.grobox.transportr.ui -import android.app.DatePickerDialog -import android.app.DatePickerDialog.OnDateSetListener +import android.app.Dialog import android.os.Bundle import android.text.format.DateFormat.getDateFormat import android.view.LayoutInflater import android.view.View import android.view.View.GONE import android.view.ViewGroup -import android.widget.DatePicker import android.widget.TimePicker import android.widget.TimePicker.OnTimeChangedListener import androidx.fragment.app.DialogFragment +import com.google.android.material.datepicker.MaterialDatePicker +import com.google.android.material.dialog.MaterialAlertDialogBuilder import de.grobox.transportr.R import kotlinx.android.synthetic.main.fragment_time_date.* import java.util.* import java.util.Calendar.* -class TimeDateFragment : DialogFragment(), OnDateSetListener, OnTimeChangedListener { - +class TimeDateFragment : DialogFragment(), OnTimeChangedListener { private var listener: TimeDateListener? = null private var departure: Boolean? = null // null means no departure/arrival selection will be possible private lateinit var calendar: Calendar @@ -61,6 +60,11 @@ class TimeDateFragment : DialogFragment(), OnDateSetListener, OnTimeChangedListe } } + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + return MaterialAlertDialogBuilder(requireContext()) + .show() + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -88,8 +92,13 @@ class TimeDateFragment : DialogFragment(), OnDateSetListener, OnTimeChangedListe // Date dateView.setOnClickListener { - DatePickerDialog(context!!, this@TimeDateFragment, calendar.get(YEAR), calendar.get(MONTH), calendar.get(DAY_OF_MONTH)) - .show() + MaterialDatePicker.Builder.datePicker() + .setSelection(calendar.timeInMillis) + .build() + .apply { + addOnPositiveButtonClickListener(this@TimeDateFragment::onDateSet) + } + .show(childFragmentManager, null) } showDate(calendar) @@ -149,10 +158,8 @@ class TimeDateFragment : DialogFragment(), OnDateSetListener, OnTimeChangedListe calendar.set(MINUTE, minute) } - override fun onDateSet(datePicker: DatePicker, year: Int, month: Int, day: Int) { - calendar.set(YEAR, year) - calendar.set(MONTH, month) - calendar.set(DAY_OF_MONTH, day) + private fun onDateSet(timeInMillis: Long) { + calendar.timeInMillis = timeInMillis showDate(calendar) } diff --git a/app/src/main/java/de/grobox/transportr/ui/TransportrChangeLog.kt b/app/src/main/java/de/grobox/transportr/ui/TransportrChangeLog.kt index 11c61b7e5..36bb3b675 100644 --- a/app/src/main/java/de/grobox/transportr/ui/TransportrChangeLog.kt +++ b/app/src/main/java/de/grobox/transportr/ui/TransportrChangeLog.kt @@ -20,28 +20,58 @@ package de.grobox.transportr.ui import android.content.Context -import android.os.Build -import android.view.ContextThemeWrapper - +import android.graphics.Color +import android.webkit.WebView +import androidx.appcompat.app.AlertDialog +import com.google.android.material.color.MaterialColors +import com.google.android.material.dialog.MaterialAlertDialogBuilder import de.cketti.library.changelog.ChangeLog import de.grobox.transportr.R import de.grobox.transportr.settings.SettingsManager class TransportrChangeLog(context: Context, settingsManager: SettingsManager) : ChangeLog( - ContextThemeWrapper(context, R.style.DialogTheme), + context, settingsManager.settings, theme(settingsManager.isDarkTheme) ) { + fun getMaterialDialog(full: Boolean): AlertDialog { + val wv = WebView(mContext) + wv.setBackgroundColor(Color.TRANSPARENT) + wv.loadDataWithBaseURL(null, getLog(full), "text/html", "UTF-8", null) + + val builder = MaterialAlertDialogBuilder(mContext) + builder.setTitle( + mContext.resources.getString( + if (full) R.string.changelog_full_title else R.string.changelog_title + ) + ) + .setView(wv) + .setCancelable(false) + .setPositiveButton( + mContext.resources.getString(R.string.changelog_ok_button) + ) { _, _ -> + updateVersionInPreferences() + } + + if (!full) { + builder.setNegativeButton( + R.string.changelog_show_full + ) { _, _ -> getMaterialDialog(true) } + } + + return builder.create() + } + companion object { private fun theme(dark: Boolean): String { return if (dark) { // material dark - "body { color: #f3f3f3; font-size: 0.9em; background-color: #424242; } h1 { font-size: 1.3em; } ul { padding-left: 2em; }" + "body { color: #f3f3f3; font-size: 0.9em; } h1 { font-size: 1.3em; } ul { padding-left: 2em; }" } else { // material light - "body { color: #202020; font-size: 0.9em; background-color: transparent; } h1 { font-size: 1.3em; } ul { padding-left: 2em; }" + "body { color: #202020; font-size: 0.9em; } h1 { font-size: 1.3em; } ul { padding-left: 2em; }" } } diff --git a/app/src/main/res/layout/fragment_time_date.xml b/app/src/main/res/layout/fragment_time_date.xml index 1d6ba4a49..9a521dc1b 100644 --- a/app/src/main/res/layout/fragment_time_date.xml +++ b/app/src/main/res/layout/fragment_time_date.xml @@ -7,7 +7,8 @@ + android:layout_height="wrap_content" + android:paddingBottom="16dp"> @color/material_drawer_dark_header_selection_text - - - - diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index d21281ec3..eb35ca606 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -3,7 +3,7 @@ - - - - - - - - - - - - - + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f800a1f91..21d024428 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,35 +1,41 @@ - #ffff4444 - #ffea00 - - - #f44336 - #b71c1c - #e53935 - - - @color/accent - - #ffffffff - @color/md_grey_600 - - @color/md_blue_500 @color/cardview_light_background @color/md_blue_700 - @color/drawableTintLight + @color/md_grey_600 @color/fabBackgroundMoved @color/md_white_1000 - #FF424242 - #FFFFFFFF - - - #FFFFFFFF - #B3FFFFFF - #FFFFFFFF - #B3FFFFFF - + #0061A4 + #FFFFFF + #D1E4FF + #001D36 + #535F70 + #FFFFFF + #D7E3F7 + #101C2B + #6B5778 + #FFFFFF + #F2DAFF + #251431 + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FDFCFF + #1A1C1E + #FDFCFF + #1A1C1E + #DFE2EB + #43474E + #73777F + #F1F0F4 + #2F3033 + #9ECAFF + #000000 + #0061A4 + #C3C7CF + #000000 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0b206c6b9..1f0a16df8 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,11 +1,6 @@ - - - - + + From 03f51cc5c847b8b0c1f3767f516c9f00f2012bf1 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Mon, 24 Jul 2023 09:54:16 +0200 Subject: [PATCH 06/60] Rewrite navigation drawer for Material Design 3 --- .idea/codeStyles/Project.xml | 3 - app/build.gradle | 1 - .../departures/DeparturesActivity.java | 4 +- .../locations/SpecialLocationFragment.kt | 7 +- .../grobox/transportr/map/DrawerActivity.kt | 167 ------------------ .../grobox/transportr/map/GpsMapFragment.kt | 17 +- .../de/grobox/transportr/map/MapActivity.java | 101 ++++++++++- .../trips/detail/TripDetailFragment.kt | 7 +- .../de/grobox/transportr/utils/DateUtils.kt | 4 +- app/src/main/res/layout/activity_map.xml | 127 +++++++------ app/src/main/res/layout/fragment_trip_map.xml | 4 +- .../res/layout/header_navigation_drawer.xml | 58 ++++++ app/src/main/res/menu/drawer_menu.xml | 14 ++ app/src/main/res/values-night/themes.xml | 12 -- app/src/main/res/values-v23/themes.xml | 23 --- app/src/main/res/values/colors.xml | 10 +- app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 2 +- app/src/main/res/values/themes.xml | 16 +- app/witness.gradle | 7 +- 20 files changed, 277 insertions(+), 308 deletions(-) delete mode 100644 app/src/main/java/de/grobox/transportr/map/DrawerActivity.kt create mode 100644 app/src/main/res/layout/header_navigation_drawer.xml create mode 100644 app/src/main/res/menu/drawer_menu.xml delete mode 100644 app/src/main/res/values-v23/themes.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 82e269184..af0734dba 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -36,9 +36,6 @@ - - diff --git a/app/src/main/res/layout/list_item_leg.xml b/app/src/main/res/layout/list_item_leg.xml index 24dfe03f5..cc80a7a05 100644 --- a/app/src/main/res/layout/list_item_leg.xml +++ b/app/src/main/res/layout/list_item_leg.xml @@ -13,7 +13,7 @@ android:layout_marginLeft="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" - android:textColor="?android:textColorPrimary" + style="@style/FavoriteCardForeground" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -54,7 +54,7 @@ android:background="?selectableItemBackground" android:gravity="center_vertical" android:paddingBottom="8dp" - android:textColor="?android:textColorPrimary" + style="@style/FavoriteCardForeground" android:textSize="16sp" app:layout_constraintEnd_toStartOf="@+id/toButton" app:layout_constraintLeft_toRightOf="@+id/fromTime" @@ -141,6 +141,7 @@ android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginTop="8dp" + style="@style/FavoriteCardForeground" app:layout_constraintBottom_toTopOf="@+id/toButton" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/fromButton" @@ -188,7 +189,7 @@ android:id="@+id/toTime" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textColor="?android:textColorPrimary" + style="@style/FavoriteCardForeground" app:layout_constraintBottom_toBottomOf="@+id/toCircle" app:layout_constraintStart_toStartOf="@+id/fromTime" app:layout_constraintTop_toTopOf="@+id/toCircle" @@ -223,7 +224,7 @@ android:layout_height="wrap_content" android:background="?selectableItemBackground" android:paddingBottom="8dp" - android:textColor="?android:textColorPrimary" + style="@style/FavoriteCardForeground" android:textSize="16sp" app:layout_constraintEnd_toStartOf="@+id/toButton" app:layout_constraintStart_toStartOf="@+id/fromLocation" diff --git a/app/src/main/res/layout/list_item_special_favorite.xml b/app/src/main/res/layout/list_item_special_favorite.xml index 8404c819c..b021b65bd 100644 --- a/app/src/main/res/layout/list_item_special_favorite.xml +++ b/app/src/main/res/layout/list_item_special_favorite.xml @@ -17,7 +17,7 @@ android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_marginStart="8dp" - app:tint="?colorControlNormal" + style="@style/FavoriteCardForeground" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -32,6 +32,7 @@ android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:text="@string/home" + android:textColor="?attr/colorSecondary" android:textAppearance="@style/TextAppearance.AppCompat.Body1" android:textSize="18sp" android:textStyle="normal|bold" @@ -50,7 +51,8 @@ app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="@+id/title" app:layout_constraintRight_toLeftOf="@+id/overflowButton" - app:layout_constraintTop_toBottomOf="@+id/title"/> + app:layout_constraintTop_toBottomOf="@+id/title" + style="@style/FavoriteCardForeground"/> @@ -130,7 +131,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="end" - android:textColor="?colorPrimary" + style="@style/FavoriteCardForeground" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="@+id/toTime" app:layout_constraintTop_toBottomOf="@+id/toTime" @@ -142,7 +143,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="4dp" - android:textColor="?android:textColorPrimary" + style="@style/FavoriteCardForeground" app:layout_constraintLeft_toLeftOf="@+id/fromLocation" app:layout_constraintRight_toRightOf="@+id/fromLocation" app:layout_constraintTop_toBottomOf="@+id/lines" diff --git a/app/src/main/res/values-night-v31/colors.xml b/app/src/main/res/values-night-v31/colors.xml index d1b6f1afd..391b3d516 100644 --- a/app/src/main/res/values-night-v31/colors.xml +++ b/app/src/main/res/values-night-v31/colors.xml @@ -3,8 +3,8 @@ @android:color/system_accent1_200 @android:color/system_accent1_900 - @android:color/system_accent1_600 - @android:color/system_accent1_200 + @android:color/system_accent1_500 + @android:color/system_accent1_100 @android:color/system_accent2_200 @android:color/system_accent2_900 diff --git a/app/src/main/res/values-v31/colors.xml b/app/src/main/res/values-v31/colors.xml index 6d42d7d3f..87b0e434a 100644 --- a/app/src/main/res/values-v31/colors.xml +++ b/app/src/main/res/values-v31/colors.xml @@ -3,7 +3,7 @@ @android:color/system_accent1_200 @android:color/system_accent1_0 - @android:color/system_accent1_300 + @android:color/system_accent1_200 @android:color/system_accent1_700 @android:color/system_accent2_700 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 4f4e7724a..132a19295 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -23,6 +23,12 @@ 8dp 8dp ?attr/colorPrimaryContainer + ?attr/colorPrimaryContainer + + + - diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 0fd334b6f..d583ab467 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -46,7 +46,7 @@ From 296ea976a2897f9e71586c29d29b23049aebb28d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Mon, 22 Jan 2024 17:55:09 +0100 Subject: [PATCH 17/60] fix primary card style --- app/src/main/res/values-night/styles.xml | 13 +++++++++++++ app/src/main/res/values/styles.xml | 1 + 2 files changed, 14 insertions(+) create mode 100644 app/src/main/res/values-night/styles.xml diff --git a/app/src/main/res/values-night/styles.xml b/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..83ddd4b9f --- /dev/null +++ b/app/src/main/res/values-night/styles.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 605636a02..b21a1d559 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -24,6 +24,7 @@ 8dp ?attr/colorSurfaceVariant ?attr/colorSurfaceVariant + 3dp - diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index d583ab467..e3a2c542d 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -46,8 +46,8 @@ From 1196dc07d625f76ed739e9e18ac1c9a8996d9a57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Mon, 22 Jan 2024 20:38:55 +0100 Subject: [PATCH 19/60] add startup icon --- .../ic_launcher_foreground_primary_color.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 app/src/main/res/drawable/ic_launcher_foreground_primary_color.xml diff --git a/app/src/main/res/drawable/ic_launcher_foreground_primary_color.xml b/app/src/main/res/drawable/ic_launcher_foreground_primary_color.xml new file mode 100644 index 000000000..b7cbab359 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground_primary_color.xml @@ -0,0 +1,14 @@ + + + + + From d38dfb1a2ac72f5e9f487c1499fe467381ebb3c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Mon, 22 Jan 2024 21:13:35 +0100 Subject: [PATCH 20/60] add missing colors --- app/src/main/res/values-night-v31/colors.xml | 16 ++++++++++++++++ app/src/main/res/values-v31/colors.xml | 15 +++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/app/src/main/res/values-night-v31/colors.xml b/app/src/main/res/values-night-v31/colors.xml index 391b3d516..6647ae8c3 100644 --- a/app/src/main/res/values-night-v31/colors.xml +++ b/app/src/main/res/values-night-v31/colors.xml @@ -16,4 +16,20 @@ @android:color/system_accent3_400 @android:color/system_accent3_100 + #F2B8B5 + #8C1D18 + #601410 + #F9DEDC + + #1C1B1F + #E6E1E5 + + #1C1B1F + #E6E1E5 + #49454F + #CAC4D0 + + #938F99 + + diff --git a/app/src/main/res/values-v31/colors.xml b/app/src/main/res/values-v31/colors.xml index 87b0e434a..150ca0812 100644 --- a/app/src/main/res/values-v31/colors.xml +++ b/app/src/main/res/values-v31/colors.xml @@ -16,4 +16,19 @@ @android:color/system_accent3_400 @android:color/system_accent3_800 + #B3261E + #F9DEDC + #FFFFFF + #410E0B + + #FFFBFE + #1C1B1F + + #FFFBFE + #1C1B1F + #E7E0EC + #49454F + + #79747E + From c091cb7aefa7b14312163b72244c7781c8e252cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Tue, 23 Jan 2024 13:10:57 +0100 Subject: [PATCH 21/60] push map route below statusbar --- .../java/de/grobox/transportr/trips/detail/TripMapFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/de/grobox/transportr/trips/detail/TripMapFragment.kt b/app/src/main/java/de/grobox/transportr/trips/detail/TripMapFragment.kt index 563b0d8e7..851467251 100644 --- a/app/src/main/java/de/grobox/transportr/trips/detail/TripMapFragment.kt +++ b/app/src/main/java/de/grobox/transportr/trips/detail/TripMapFragment.kt @@ -66,7 +66,7 @@ class TripMapFragment : GpsMapFragment() { // set padding, so everything gets centered in top half of screen val metrics = DisplayMetrics() activity!!.windowManager.defaultDisplay.getMetrics(metrics) - val topPadding = mapPadding / 2 + val topPadding = mapPadding val bottomPadding = mapView.height / 4 map!!.setPadding(0, topPadding, 0, bottomPadding) From 26497045e7c87072dd9853658558e13eb8a963df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Tue, 23 Jan 2024 13:16:02 +0100 Subject: [PATCH 22/60] improve splash screen colors --- .../main/res/drawable/ic_launcher_foreground_primary_color.xml | 2 +- app/src/main/res/values/themes.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/drawable/ic_launcher_foreground_primary_color.xml b/app/src/main/res/drawable/ic_launcher_foreground_primary_color.xml index b7cbab359..1dd21ff2c 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground_primary_color.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground_primary_color.xml @@ -1,7 +1,7 @@ From 56f8e9b49d0dc82072b62649a1808a772e793355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Tue, 23 Jan 2024 13:34:10 +0100 Subject: [PATCH 23/60] update divider between map and content --- .../trips/detail/TripDetailActivity.java | 3 ++ .../main/res/layout/fragment_favorites.xml | 4 -- .../main/res/layout/fragment_trip_detail.xml | 41 +++++++++---------- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailActivity.java b/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailActivity.java index e8df0de0f..1f9da5d19 100644 --- a/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailActivity.java +++ b/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailActivity.java @@ -147,6 +147,7 @@ private void onSheetStateChanged(@Nullable SheetState sheetState) { bottomSheetBehavior.setBottom(); bottomSheetBehavior.setState(STATE_COLLAPSED); FullScreenUtil.Companion.showStatusbar(this); + findViewById(R.id.divider).setVisibility(View.GONE); break; case MIDDLE: bottomSheetBehavior.setHideable(true); // ensures it can be swiped down @@ -154,9 +155,11 @@ private void onSheetStateChanged(@Nullable SheetState sheetState) { bottomSheetBehavior.setState(STATE_COLLAPSED); FullScreenUtil.Companion.drawBehindStatusbar(this); FullScreenUtil.Companion.applyTopInset(findViewById(R.id.appBarLayout)); + findViewById(R.id.divider).setVisibility(View.GONE); break; case EXPANDED: FullScreenUtil.Companion.showStatusbar(this); + findViewById(R.id.divider).setVisibility(View.VISIBLE); break; } } diff --git a/app/src/main/res/layout/fragment_favorites.xml b/app/src/main/res/layout/fragment_favorites.xml index 634ae6115..3094af472 100644 --- a/app/src/main/res/layout/fragment_favorites.xml +++ b/app/src/main/res/layout/fragment_favorites.xml @@ -20,8 +20,4 @@ android:layout_height="wrap_content" android:layout_gravity="center"/> - - diff --git a/app/src/main/res/layout/fragment_trip_detail.xml b/app/src/main/res/layout/fragment_trip_detail.xml index ea616d01e..1ef266a6a 100644 --- a/app/src/main/res/layout/fragment_trip_detail.xml +++ b/app/src/main/res/layout/fragment_trip_detail.xml @@ -125,18 +125,15 @@ android:id="@+id/fromTimeRel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="8dp" android:layout_marginStart="8dp" - android:layout_marginTop="8dp" - android:layout_marginBottom="8dp" android:textAppearance="@style/TextAppearance.AppCompat.Body2" - android:textStyle="normal|bold" android:textColor="?attr/colorOnPrimaryContainer" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" + android:textStyle="normal|bold" + app:layout_constraintBottom_toBottomOf="@+id/durationTop" app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/durationTop" tools:text="in 20min" - tools:visibility="visible"/> + tools:visibility="visible" /> + app:layout_constraintTop_toTopOf="parent" + tools:text="Gesamtdauer: 0:42" /> - - + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:text="1,50 €" /> + + Date: Tue, 23 Jan 2024 14:21:25 +0100 Subject: [PATCH 24/60] draw map below statusbar in map activity --- .../de/grobox/transportr/map/MapActivity.java | 1 + .../grobox/transportr/utils/FullScreenUtil.kt | 23 +++++++++++++++---- app/src/main/res/layout/activity_map.xml | 4 ++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/de/grobox/transportr/map/MapActivity.java b/app/src/main/java/de/grobox/transportr/map/MapActivity.java index ea463dc7b..dd3e2475a 100644 --- a/app/src/main/java/de/grobox/transportr/map/MapActivity.java +++ b/app/src/main/java/de/grobox/transportr/map/MapActivity.java @@ -97,6 +97,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { setContentView(R.layout.activity_map); setupDrawer(); FullScreenUtil.Companion.drawBehindStatusbar(this); + FullScreenUtil.Companion.applyTopInset(findViewById(R.id.searchCardView), 16); View menu = findViewById(R.id.menu); menu.setOnClickListener(view -> { diff --git a/app/src/main/java/de/grobox/transportr/utils/FullScreenUtil.kt b/app/src/main/java/de/grobox/transportr/utils/FullScreenUtil.kt index b8c2837e0..48558e28c 100644 --- a/app/src/main/java/de/grobox/transportr/utils/FullScreenUtil.kt +++ b/app/src/main/java/de/grobox/transportr/utils/FullScreenUtil.kt @@ -26,6 +26,7 @@ import android.view.View import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat +import de.grobox.transportr.utils.TransportrUtils.dpToPx class FullScreenUtil { @@ -46,9 +47,23 @@ class FullScreenUtil { if(view == null) { return } + applyTopInset(view, 0, 8, 0 ,0) + } + + fun applyTopInset(view: View?, margin: Int) { + if(view == null) { + return + } + applyTopInset(view, margin, margin, margin ,margin) + } + + fun applyTopInset(view: View?, dpLeft: Int, dpTop: Int, dpRight: Int, dpBottom: Int) { + if(view == null) { + return + } view.setOnApplyWindowInsetsListener { v, insets -> - val originalOffset = (8 * (view.resources.displayMetrics.densityDpi / 160f)).toInt() + val originalOffset = dpToPx(view.context, dpTop) val top = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { insets.getInsets(WindowInsetsCompat.Type.statusBars()).top } else { @@ -56,10 +71,10 @@ class FullScreenUtil { } val parameters = CoordinatorLayout.LayoutParams( - CoordinatorLayout.LayoutParams.WRAP_CONTENT, - CoordinatorLayout.LayoutParams.WRAP_CONTENT + v.layoutParams.width, + v.layoutParams.height ) - parameters.setMargins(0, top + originalOffset, 0, 0) + parameters.setMargins(dpToPx(view.context, dpLeft), top + originalOffset, dpToPx(view.context, dpRight), dpToPx(view.context, dpBottom)) v.layoutParams = parameters return@setOnApplyWindowInsetsListener insets diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index b5d1ef4ae..0f39dec2b 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -3,8 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawerLayout" android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true"> + android:layout_height="match_parent"> Date: Tue, 23 Jan 2024 15:09:11 +0100 Subject: [PATCH 25/60] partially fix shadow on special location fragment --- .../locations/SpecialLocationFragment.kt | 4 +++ app/src/main/res/layout/activity_map.xml | 11 +++--- .../res/layout/fragment_special_location.xml | 34 +++++++++++-------- app/src/main/res/layout/location_item.xml | 17 +++++----- app/src/main/res/values/dimens.xml | 6 ++++ 5 files changed, 43 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/de/grobox/transportr/favorites/locations/SpecialLocationFragment.kt b/app/src/main/java/de/grobox/transportr/favorites/locations/SpecialLocationFragment.kt index 5ae0fd4c7..721184f3a 100644 --- a/app/src/main/java/de/grobox/transportr/favorites/locations/SpecialLocationFragment.kt +++ b/app/src/main/java/de/grobox/transportr/favorites/locations/SpecialLocationFragment.kt @@ -21,6 +21,8 @@ package de.grobox.transportr.favorites.locations import android.app.Activity import android.content.DialogInterface +import android.graphics.Color +import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.Gravity import android.view.LayoutInflater @@ -72,6 +74,8 @@ abstract class SpecialLocationFragment : DialogFragment(), LocationView.Location override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val v = inflater.inflate(R.layout.fragment_special_location, container) + dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + // Initialize LocationView loc = v.findViewById(R.id.location_input) loc.setHint(hint) diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index 0f39dec2b..cca6066d4 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -18,12 +18,11 @@ + android:layout_height="@dimen/searchBarHeight" + android:layout_marginEnd="@dimen/searchBarMargins" + android:layout_marginStart="@dimen/searchBarMargins" + android:layout_marginTop="@dimen/searchBarMargins" + app:cardCornerRadius="@dimen/searchBarCornerRadius"> - + android:layout_height="wrap_content" + android:orientation="vertical"> - + android:layout_height="@dimen/searchBarHeight" + android:layout_marginStart="@dimen/searchBarMargins" + android:layout_marginTop="@dimen/searchBarMargins" + android:layout_marginEnd="@dimen/searchBarMargins" + app:cardCornerRadius="@dimen/searchBarCornerRadius"> - + - + - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/location_item.xml b/app/src/main/res/layout/location_item.xml index 92a55bc62..3aa0c6813 100644 --- a/app/src/main/res/layout/location_item.xml +++ b/app/src/main/res/layout/location_item.xml @@ -1,36 +1,37 @@ - + android:paddingVertical="8dp"> + tools:src="@drawable/ic_action_home" /> + tools:text="This can a be location that has a very long name. It can even span two or more lines." /> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index dc7f10487..14005f071 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -15,4 +15,10 @@ 32dp 96dp + + + 16dp + 48dp + 8dp + From 28fa82b6c84aac9928e4ffc59d720efa8ac5eee1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Tue, 23 Jan 2024 15:23:12 +0100 Subject: [PATCH 26/60] use transparent navigation bar --- .../transportr/trips/detail/TripDetailActivity.java | 2 +- .../java/de/grobox/transportr/utils/FullScreenUtil.kt | 3 +-- app/src/main/res/values-v27/styles.xml | 9 +++++++++ app/src/main/res/values/styles.xml | 1 + 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/values-v27/styles.xml diff --git a/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailActivity.java b/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailActivity.java index 1f9da5d19..a4731f848 100644 --- a/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailActivity.java +++ b/app/src/main/java/de/grobox/transportr/trips/detail/TripDetailActivity.java @@ -146,7 +146,7 @@ private void onSheetStateChanged(@Nullable SheetState sheetState) { case BOTTOM: bottomSheetBehavior.setBottom(); bottomSheetBehavior.setState(STATE_COLLAPSED); - FullScreenUtil.Companion.showStatusbar(this); + FullScreenUtil.Companion.drawBehindStatusbar(this); findViewById(R.id.divider).setVisibility(View.GONE); break; case MIDDLE: diff --git a/app/src/main/java/de/grobox/transportr/utils/FullScreenUtil.kt b/app/src/main/java/de/grobox/transportr/utils/FullScreenUtil.kt index 48558e28c..0f2c349f4 100644 --- a/app/src/main/java/de/grobox/transportr/utils/FullScreenUtil.kt +++ b/app/src/main/java/de/grobox/transportr/utils/FullScreenUtil.kt @@ -35,12 +35,11 @@ class FullScreenUtil { WindowCompat.setDecorFitsSystemWindows(activity.window, false) // required for the mail view, which cant properly use the theme. activity.window.statusBarColor = Color.TRANSPARENT + activity.window.navigationBarColor = Color.TRANSPARENT } fun showStatusbar(activity: Activity) { WindowCompat.setDecorFitsSystemWindows(activity.window, true) - // required for the mail view, which cant properly use the theme. - //activity.window.statusBarColor = Color.TRANSPARENT } fun applyTopInset(view: View?) { diff --git a/app/src/main/res/values-v27/styles.xml b/app/src/main/res/values-v27/styles.xml new file mode 100644 index 000000000..078866d8f --- /dev/null +++ b/app/src/main/res/values-v27/styles.xml @@ -0,0 +1,9 @@ + + + + + \ 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 a1496fe8c..89a01c1e4 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -95,6 +95,7 @@ From 6f6ed8399ea806418ca02a93e23538a6eb31119a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Tue, 23 Jan 2024 15:28:59 +0100 Subject: [PATCH 27/60] fix minor color choices --- app/src/main/res/drawable/shape_circle.xml | 2 +- app/src/main/res/layout/activity_trip_detail.xml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/drawable/shape_circle.xml b/app/src/main/res/drawable/shape_circle.xml index 13efdbe16..c4759da91 100644 --- a/app/src/main/res/drawable/shape_circle.xml +++ b/app/src/main/res/drawable/shape_circle.xml @@ -2,6 +2,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_trip_detail.xml b/app/src/main/res/layout/activity_trip_detail.xml index f92f98207..e0b4959ab 100644 --- a/app/src/main/res/layout/activity_trip_detail.xml +++ b/app/src/main/res/layout/activity_trip_detail.xml @@ -25,6 +25,8 @@ android:layout_margin="12dp" android:background="@drawable/shape_circle" android:padding="8dp" + android:backgroundTint="@color/md_theme_primary" + app:tint="@color/md_theme_onPrimaryContainer" app:srcCompat="@drawable/ic_back" /> From 8eeb109b616ba7c6032076cdfb569f40fb07d5b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Tue, 23 Jan 2024 16:50:18 +0100 Subject: [PATCH 28/60] make walk icon more legible --- app/src/main/res/drawable/ic_walk.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/drawable/ic_walk.xml b/app/src/main/res/drawable/ic_walk.xml index 64dbacfe6..5b6d71dfb 100644 --- a/app/src/main/res/drawable/ic_walk.xml +++ b/app/src/main/res/drawable/ic_walk.xml @@ -5,7 +5,7 @@ android:height="24dp" android:viewportHeight="24" android:viewportWidth="24" - android:tint="?attr/colorOnBackground"> + android:tint="?attr/colorOnPrimary"> From b6677e0d043dc30ac99b26363d313e5c6dfbd309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Fri, 26 Jan 2024 19:00:20 +0100 Subject: [PATCH 29/60] use light navbar --- app/src/main/AndroidManifest.xml | 6 ++---- app/src/main/res/values/themes.xml | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f4d0afb4b..e051e89ae 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -74,14 +74,12 @@ + android:parentActivityName="de.grobox.transportr.map.MapActivity" /> + android:theme="@style/AppTheme.MapFullscreen" /> @style/PreferenceThemeOverlay.v14.Material true ?android:attr/colorBackground + ?android:attr/colorBackground From 7fa31ca05d8f79d217e1271a6a14541a4a04bdcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Thu, 14 Mar 2024 10:30:57 +0100 Subject: [PATCH 58/60] Switch navheader to constraintlayout --- .../res/layout/header_navigation_drawer.xml | 89 ++++++++++--------- 1 file changed, 46 insertions(+), 43 deletions(-) diff --git a/app/src/main/res/layout/header_navigation_drawer.xml b/app/src/main/res/layout/header_navigation_drawer.xml index e9e9614fc..9f9883914 100644 --- a/app/src/main/res/layout/header_navigation_drawer.xml +++ b/app/src/main/res/layout/header_navigation_drawer.xml @@ -1,70 +1,73 @@ + android:fitsSystemWindows="false"> - + android:layout_height="wrap_content"> + - - - - - + - - - - - + + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:textSize="20sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/network_image" /> - - + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/network_name" /> + \ No newline at end of file From 62f3facc6aff57b162bc742074fe006f9713b22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Thu, 14 Mar 2024 10:42:36 +0100 Subject: [PATCH 59/60] fix map attribution on trip details --- app/src/main/res/layout/fragment_trip_map.xml | 67 +++++++++---------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/app/src/main/res/layout/fragment_trip_map.xml b/app/src/main/res/layout/fragment_trip_map.xml index d49c02d81..ed3e86c7b 100644 --- a/app/src/main/res/layout/fragment_trip_map.xml +++ b/app/src/main/res/layout/fragment_trip_map.xml @@ -17,40 +17,6 @@ app:layout_constraintTop_toTopOf="parent" app:maplibre_uiCompassMarginTop="24dp"/> - - - - - - + + + + + + From ca358fe2a4ca5ff6035af9e09d2f1ca3a41777bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20N=C3=BCsse?= Date: Thu, 14 Mar 2024 10:45:54 +0100 Subject: [PATCH 60/60] increase back button contrast --- app/src/main/res/layout/activity_trip_detail.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/activity_trip_detail.xml b/app/src/main/res/layout/activity_trip_detail.xml index 4cad7be97..d625d9960 100644 --- a/app/src/main/res/layout/activity_trip_detail.xml +++ b/app/src/main/res/layout/activity_trip_detail.xml @@ -23,10 +23,10 @@ android:layout_height="48dp" android:layout_margin="12dp" android:background="@drawable/shape_circle" + android:backgroundTint="@color/md_theme_surfaceVariant" android:padding="8dp" - android:backgroundTint="@color/md_theme_surface" - app:tint="@color/md_theme_onSurface" - app:srcCompat="@drawable/ic_back" /> + app:srcCompat="@drawable/ic_back" + app:tint="@color/md_theme_onSurface" />