From 0db2e5c7a013eaf3e0c4fa647c4accb77e5edfe0 Mon Sep 17 00:00:00 2001 From: Jan Konopka Date: Sun, 2 Oct 2022 21:48:15 +0200 Subject: [PATCH] feat: add PlantCalendar.kt (overview of seasons for each plant type) --- app/src/main/AndroidManifest.xml | 3 ++ .../activities/FruitBarMapFragment.kt | 4 +- .../java/xjcl/mundraub/activities/Main.kt | 2 + .../xjcl/mundraub/activities/PlantCalendar.kt | 52 +++++++++++++++++++ .../main/java/xjcl/mundraub/data/ItemMenu.kt | 1 + .../layouts/createInfoWindowLayout.kt | 2 +- .../mundraub/layouts/createMonthsBarLayout.kt | 6 +-- app/src/main/res/values-de/strings.xml | 3 +- app/src/main/res/values/strings.xml | 3 +- 9 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/xjcl/mundraub/activities/PlantCalendar.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c57236a..d562774 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,6 +30,9 @@ + diff --git a/app/src/main/java/xjcl/mundraub/activities/FruitBarMapFragment.kt b/app/src/main/java/xjcl/mundraub/activities/FruitBarMapFragment.kt index fcfa225..b70bdbb 100644 --- a/app/src/main/java/xjcl/mundraub/activities/FruitBarMapFragment.kt +++ b/app/src/main/java/xjcl/mundraub/activities/FruitBarMapFragment.kt @@ -64,7 +64,7 @@ class FruitBarMapFragment : SupportMapFragment() { iv?.let { animateJump(it) } mMap?.animateCamera(CameraUpdateFactory.zoomBy(0F)) // trigger updateMarkers() infoBar.removeViewAt(1) // removes monthsBar - infoBar.addView(createMonthsBarLayout(context!!, key)) + infoBar.addView(createMonthsBarLayout(context!!, key, withLetters = false)) infoBar.setOnClickListener { if (treeIdToProfileUrl[key] != null) (context as Activity).startActivity(Intent(context, PlantProfile::class.java).putExtra("tid", key)) @@ -215,7 +215,7 @@ class FruitBarMapFragment : SupportMapFragment() { } infoBar.addView(infoSpecies) - val months = createMonthsBarLayout(context!!, 99) + val months = createMonthsBarLayout(context!!, 99, withLetters = false) infoBar.addView(months) infoBar.background = materialDesignBg((7.5 * density).toInt(), (2.5 * density).toInt(), 999F) diff --git a/app/src/main/java/xjcl/mundraub/activities/Main.kt b/app/src/main/java/xjcl/mundraub/activities/Main.kt index 4cdefa6..2ce43e0 100644 --- a/app/src/main/java/xjcl/mundraub/activities/Main.kt +++ b/app/src/main/java/xjcl/mundraub/activities/Main.kt @@ -287,6 +287,7 @@ class Main : AppCompatActivity(), OnMapReadyCallback, OnCameraIdleListener, Acti ItemMenu.PLANT_LIST.value -> startActivityForResult(Intent(this, PlantList::class.java), ActivityRequest.PlantList.value) ItemMenu.PLANT_FORM.value -> startActivityForResult(Intent(this, PlantForm::class.java), ActivityRequest.PlantForm.value) ItemMenu.PLANT_ATLAS.value -> startActivityForResult(Intent(this, PlantAtlas::class.java), ActivityRequest.IRRELEVANT.value) + ItemMenu.PLANT_CALENDAR.value -> startActivityForResult(Intent(this, PlantCalendar::class.java), ActivityRequest.IRRELEVANT.value) ItemMenu.IMPRINT.value -> openUrl(getString(R.string.imprint_url)) ItemMenu.PRIVACY.value -> openUrl(getString(R.string.privacy_url)) ItemMenu.MUNDRAUB_RULES.value -> openUrl(getString(R.string.mundraub_rules_url)) @@ -314,6 +315,7 @@ class Main : AppCompatActivity(), OnMapReadyCallback, OnCameraIdleListener, Acti addMenuItem(menu, ItemMenu.PLANT_LIST.value, R.string.title_activity_plant_list, R.drawable.material_list) addMenuItem(menu, ItemMenu.PLANT_FORM.value, R.string.addNode, R.drawable.material_add_location) addMenuItem(menu, ItemMenu.PLANT_ATLAS.value, R.string.plant_atlas, null) + addMenuItem(menu, ItemMenu.PLANT_CALENDAR.value, R.string.plant_calendar, null) addMenuItem(menu, ItemMenu.IMPRINT.value, R.string.imprint, null) addMenuItem(menu, ItemMenu.PRIVACY.value, R.string.privacy, null) addMenuItem(menu, ItemMenu.MUNDRAUB_RULES.value, R.string.mundraub_rules, null) diff --git a/app/src/main/java/xjcl/mundraub/activities/PlantCalendar.kt b/app/src/main/java/xjcl/mundraub/activities/PlantCalendar.kt new file mode 100644 index 0000000..3613dd8 --- /dev/null +++ b/app/src/main/java/xjcl/mundraub/activities/PlantCalendar.kt @@ -0,0 +1,52 @@ +package xjcl.mundraub.activities + +import android.graphics.Typeface +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.text.TextUtils +import android.view.Gravity +import android.widget.LinearLayout +import android.widget.ScrollView +import android.widget.TextView +import xjcl.mundraub.data.treeIdToSeason + +import xjcl.mundraub.layouts.createMonthsBarLayout +import xjcl.mundraub.utils.getFruitColor + +class PlantCalendar : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val density = resources.displayMetrics.density + + val scrollpage = ScrollView(this) + val page = LinearLayout(this) + page.orientation = LinearLayout.VERTICAL + page.setPadding(0, (20 * density).toInt(), 0, (20 * density).toInt()) + + //for ((i, tid) in treeIdToSeason.keys.withIndex()) + for ((i, tid) in treeIdToSeason.keys.sortedBy { treeIdToSeason[it]!!.first * 20 + treeIdToSeason[it]!!.second }.withIndex()) + { + val tv = TextView(this) + tv.text = getString(resources.getIdentifier("tid$tid", "string", packageName)) + tv.setTextColor(getFruitColor(resources, tid)) + tv.setTypeface(null, Typeface.BOLD) + tv.ellipsize = TextUtils.TruncateAt.END + tv.setSingleLine() + tv.minWidth = (110 * density).toInt() + tv.maxWidth = (110 * density).toInt() + + val mb = createMonthsBarLayout(this, tid, withLetters = i % 5 == 4) + + val line = LinearLayout(this) + line.addView(tv) + line.addView(mb) + line.gravity = Gravity.CENTER_HORIZONTAL + page.addView(line) + } + + scrollpage.addView(page) + setContentView(scrollpage) + } +} diff --git a/app/src/main/java/xjcl/mundraub/data/ItemMenu.kt b/app/src/main/java/xjcl/mundraub/data/ItemMenu.kt index 0379da4..e53df1e 100644 --- a/app/src/main/java/xjcl/mundraub/data/ItemMenu.kt +++ b/app/src/main/java/xjcl/mundraub/data/ItemMenu.kt @@ -4,6 +4,7 @@ enum class ItemMenu(val value: Int) { PLANT_LIST(1), PLANT_FORM(2), PLANT_ATLAS(10), + PLANT_CALENDAR(20), LOGOUT(68), SETTINGS(69), MUNDRAUB_RULES(82), diff --git a/app/src/main/java/xjcl/mundraub/layouts/createInfoWindowLayout.kt b/app/src/main/java/xjcl/mundraub/layouts/createInfoWindowLayout.kt index 22be19c..ec2c05e 100644 --- a/app/src/main/java/xjcl/mundraub/layouts/createInfoWindowLayout.kt +++ b/app/src/main/java/xjcl/mundraub/layouts/createInfoWindowLayout.kt @@ -23,7 +23,7 @@ import java.util.Calendar fun createInfoWindowLayout(context: Context, marker: Marker): View { val md = markersData[marker.position] ?: return TextView(context) - val months = createMonthsBarLayout(context, md) + val months = createMonthsBarLayout(context, md, withLetters = true) months.measure(0, 0) val masterWidth = months.measuredWidth diff --git a/app/src/main/java/xjcl/mundraub/layouts/createMonthsBarLayout.kt b/app/src/main/java/xjcl/mundraub/layouts/createMonthsBarLayout.kt index 5dbe394..b06e827 100644 --- a/app/src/main/java/xjcl/mundraub/layouts/createMonthsBarLayout.kt +++ b/app/src/main/java/xjcl/mundraub/layouts/createMonthsBarLayout.kt @@ -17,7 +17,7 @@ import xjcl.mundraub.utils.bitmapWithText * - - - o o o - - -|- - - * J F M A M J J A S O N D <--- only if withLetters is true */ -fun createMonthsBarLayout(context: Context, md : MarkerData, withLetters : Boolean = true): LinearLayout { +fun createMonthsBarLayout(context: Context, md : MarkerData, withLetters : Boolean): LinearLayout { val months = LinearLayout(context) months.orientation = LinearLayout.HORIZONTAL months.gravity = Gravity.CENTER @@ -59,8 +59,8 @@ fun createMonthsBarLayout(context: Context, md : MarkerData, withLetters : Boole return months } -fun createMonthsBarLayout(context: Context, tid : Int): LinearLayout { +fun createMonthsBarLayout(context: Context, tid : Int, withLetters: Boolean): LinearLayout { if (!treeIdToSeason.contains(tid)) return LinearLayout(context) val fakeFeature = Feature(listOf(), Properties(0, tid), null) - return createMonthsBarLayout(context, markerDataManager.featureToMarkerData(context, fakeFeature), false) + return createMonthsBarLayout(context, markerDataManager.featureToMarkerData(context, fakeFeature), withLetters) } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 64fc3b3..6f3c36a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -41,7 +41,7 @@ Weißdorn Andere Sträucher - (!) Bärlauch + Bärlauch Wacholder Minze Rosmarin @@ -116,6 +116,7 @@ Marker Pflanzen-Atlas Hier siehst du Statistiken und Steckbriefe über die einzelnen Pflanzenarten.\n\nAußerdem erkennst du welche Arten du schon zu mundraub.org beigetragen hast (in grün). + Pflanzen-Kalender Danke! noch keine von dir diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 13b3be6..2bf71cf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -46,7 +46,7 @@ Hawthorn Other fruit shrub - (!) Ramson + Ramson Juniper Mint Rosemary @@ -121,6 +121,7 @@ markers Plant atlas Here you can see statistics and profiles for our plant types.\n\nYou can also see which types you\'ve contributed to mundraub.org (in green). + Plant calendar Thank you! none are from you