Added empty plan/food menu cards to replace the previous "No substitutions for you" presentation and gain feature parity with the iOS version

This commit is contained in:
Deniz Düzgören
2019-10-18 22:19:42 +02:00
parent 0c5f075fd0
commit da652edfdf
8 changed files with 35 additions and 61 deletions
@@ -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
@@ -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<Food>()
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<List<Food>> { 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)) {
@@ -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<List<Substitution>> { substitutions ->
mAdapter.setSubst(substitutions)
mAdapter.setSubst(if (substitutions.isEmpty()) {
HelperFunctions.getEmptyGeneralSubstitution(mContext)
} else {
substitutions
})
binding.recyclerView.scheduleLayoutAnimation()
})
}
@@ -16,9 +16,6 @@ internal class PersonalPlanFragment : PlanFragment() {
substitutionPlan?.observe(this, Observer<List<Substitution>> { 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)
})
}
}
@@ -24,7 +24,7 @@ internal open class PlanFragment : Fragment() {
internal lateinit var mAdapter: SubstitutionAdapter
internal var planCardList = ArrayList<Substitution>()
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