From da652edfdf4ff2547345781ab609e607613e5463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deniz=20D=C3=BCzg=C3=B6ren?= Date: Fri, 18 Oct 2019 22:19:42 +0200 Subject: [PATCH] Added empty plan/food menu cards to replace the previous "No substitutions for you" presentation and gain feature parity with the iOS version --- .../substitutionplan/data/HelperFunctions.kt | 12 ++++++ .../fragments/FoodFragment.kt | 14 +++---- .../fragments/GeneralPlanFragment.kt | 7 +++- .../fragments/PersonalPlanFragment.kt | 15 ++------ .../fragments/PlanFragment.kt | 2 +- app/src/main/res/layout/plan.xml | 38 ------------------- app/src/main/res/values-de/strings.xml | 4 +- app/src/main/res/values/strings.xml | 4 +- 8 files changed, 35 insertions(+), 61 deletions(-) diff --git a/app/src/main/java/com/denizd/substitutionplan/data/HelperFunctions.kt b/app/src/main/java/com/denizd/substitutionplan/data/HelperFunctions.kt index 4ed6f34..898fe75 100644 --- a/app/src/main/java/com/denizd/substitutionplan/data/HelperFunctions.kt +++ b/app/src/main/java/com/denizd/substitutionplan/data/HelperFunctions.kt @@ -21,6 +21,7 @@ import androidx.core.content.ContextCompat.checkSelfPermission import androidx.fragment.app.FragmentActivity import com.denizd.substitutionplan.R import com.denizd.substitutionplan.models.Colour +import com.denizd.substitutionplan.models.Food import com.denizd.substitutionplan.models.Substitution import java.util.* import java.io.File @@ -80,6 +81,17 @@ internal object HelperFunctions { const val notificationChannelId = "general" + fun getEmptyGeneralSubstitution(context: Context) = arrayOf( + Substitution("", "", "", context.getString(R.string.plan_empty), "", "", "", "", 0, 0, 0) + ).toList() + + fun getEmptyPersonalSubstitution(context: Context) = + Substitution("", "", "", context.getString(R.string.personal_plan_empty), "", "", "", "", 0, 0, 0) + + fun getEmptyFoodMenu(context: Context) = arrayOf( + Food("\n${context.getString(R.string.food_menu_empty)}\n", 0) + ).toList() + /** * This function returns an array that contains all data relevant to tinting individual entries * on the substitution plan diff --git a/app/src/main/java/com/denizd/substitutionplan/fragments/FoodFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/FoodFragment.kt index 7705ebc..0ef8a33 100644 --- a/app/src/main/java/com/denizd/substitutionplan/fragments/FoodFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/FoodFragment.kt @@ -12,14 +12,14 @@ import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.GridLayoutManager import com.denizd.substitutionplan.adapters.FoodAdapter +import com.denizd.substitutionplan.data.HelperFunctions import com.denizd.substitutionplan.database.FoodViewModel import com.denizd.substitutionplan.databinding.FoodLayoutBinding import com.denizd.substitutionplan.models.Food internal class FoodFragment : Fragment() { - private val foodArrayList = ArrayList() - private val mAdapter = FoodAdapter(foodArrayList) + private val mAdapter = FoodAdapter(ArrayList()) private lateinit var mContext: Context private lateinit var prefs: SharedPreferences private lateinit var foodViewModel: FoodViewModel @@ -48,12 +48,12 @@ internal class FoodFragment : Fragment() { foodViewModel = ViewModelProviders.of(this).get(FoodViewModel::class.java) foodViewModel.allFoods?.observe(this, Observer> { foodList -> - foodArrayList.clear() - for (item in foodList) { - foodArrayList.add(item) - } binding.recyclerView.scheduleLayoutAnimation() - mAdapter.setFood(foodArrayList) + mAdapter.setFood(if (foodList.isEmpty()) { + HelperFunctions.getEmptyFoodMenu(mContext) + } else { + foodList + }) }) if (prefs.getBoolean("autoRefresh", false)) { diff --git a/app/src/main/java/com/denizd/substitutionplan/fragments/GeneralPlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/GeneralPlanFragment.kt index 5c2f339..e646bf3 100644 --- a/app/src/main/java/com/denizd/substitutionplan/fragments/GeneralPlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/GeneralPlanFragment.kt @@ -3,6 +3,7 @@ package com.denizd.substitutionplan.fragments import android.os.Bundle import android.view.View import androidx.lifecycle.Observer +import com.denizd.substitutionplan.data.HelperFunctions import com.denizd.substitutionplan.models.Substitution internal class GeneralPlanFragment : PlanFragment() { @@ -11,7 +12,11 @@ internal class GeneralPlanFragment : PlanFragment() { super.onViewCreated(view, savedInstanceState) substitutionPlan?.observe(this, Observer> { substitutions -> - mAdapter.setSubst(substitutions) + mAdapter.setSubst(if (substitutions.isEmpty()) { + HelperFunctions.getEmptyGeneralSubstitution(mContext) + } else { + substitutions + }) binding.recyclerView.scheduleLayoutAnimation() }) } diff --git a/app/src/main/java/com/denizd/substitutionplan/fragments/PersonalPlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/PersonalPlanFragment.kt index b037c4a..1375d60 100644 --- a/app/src/main/java/com/denizd/substitutionplan/fragments/PersonalPlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/PersonalPlanFragment.kt @@ -16,9 +16,6 @@ internal class PersonalPlanFragment : PlanFragment() { substitutionPlan?.observe(this, Observer> { substitutions -> planCardList.clear() - binding.emptyPlanEmoticon.visibility = View.GONE - binding.emptyPlanText.visibility = View.GONE - binding.emptyPlanLayout.visibility = View.GONE isPersonalPlanEmpty = true binding.recyclerView.visibility = View.VISIBLE @@ -33,17 +30,11 @@ internal class PersonalPlanFragment : PlanFragment() { planCardList.add(substItem) } isPersonalPlanEmpty = (planCardList.size == 1 && planCardList[0].date.substring(0, 3) == "psa") || planCardList.isEmpty() + if (isPersonalPlanEmpty) { + planCardList.add(HelperFunctions.getEmptyPersonalSubstitution(mContext)) + } binding.recyclerView.scheduleLayoutAnimation() mAdapter.setSubst(planCardList) - - handler.postDelayed({ - if (isPersonalPlanEmpty) { - binding.emptyPlanEmoticon.visibility = View.VISIBLE - binding.emptyPlanText.visibility = View.VISIBLE - binding.emptyPlanLayout.visibility = View.VISIBLE - binding.emptyPlanLayout.scheduleLayoutAnimation() - } - }, 64) }) } } \ No newline at end of file diff --git a/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt b/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt index 81281ee..4ef2508 100644 --- a/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt +++ b/app/src/main/java/com/denizd/substitutionplan/fragments/PlanFragment.kt @@ -24,7 +24,7 @@ internal open class PlanFragment : Fragment() { internal lateinit var mAdapter: SubstitutionAdapter internal var planCardList = ArrayList() private lateinit var substViewModel: SubstViewModel - private lateinit var mContext: Context + internal lateinit var mContext: Context internal lateinit var prefs: SharedPreferences internal var isPersonalPlanEmpty: Boolean = true diff --git a/app/src/main/res/layout/plan.xml b/app/src/main/res/layout/plan.xml index 5911212..37370da 100644 --- a/app/src/main/res/layout/plan.xml +++ b/app/src/main/res/layout/plan.xml @@ -6,42 +6,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> - - - - - - - - - - - - diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index fe6d327..1fd89fd 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -50,7 +50,9 @@ Testmenü Statistikmenü Kursbenachrichtigungen aktivieren - Kein Entfall für dich + Der Vertretungsplan ist leer + Dein Plan ist leer :( + Der Speiseplan ist leer Benutzerdefinierte Farben Farben für jedes Fach einstellen Deutsch (+ DAZ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 47c28f0..7325d6a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -59,7 +59,9 @@ This menu is intended for testing only. Apply Invalid code - No substitutions for you + The substitution plan is empty + Your plan is empty :( + The food menu is empty Customize colors Customize every subject individually