home screen redesign
This commit is contained in:
@ -22,11 +22,13 @@
|
||||
|
||||
package org.mosad.seil0.projectlaogai.fragments
|
||||
|
||||
import android.graphics.Typeface
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
import kotlinx.android.synthetic.main.fragment_home.*
|
||||
@ -40,8 +42,9 @@ import org.mosad.seil0.projectlaogai.hsoparser.Meal
|
||||
import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar
|
||||
import org.mosad.seil0.projectlaogai.uicomponents.DayCardView
|
||||
import org.mosad.seil0.projectlaogai.uicomponents.LessonLinearLayout
|
||||
import org.mosad.seil0.projectlaogai.uicomponents.MealLinearLayout
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
/**
|
||||
* The "home" controller class
|
||||
@ -49,18 +52,14 @@ import kotlin.collections.ArrayList
|
||||
*/
|
||||
class HomeFragment : Fragment() {
|
||||
|
||||
private lateinit var linLayoutTimeTable: LinearLayout
|
||||
val formatter = SimpleDateFormat("E dd.MM", Locale.GERMANY)
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
|
||||
val view: View = inflater.inflate(R.layout.fragment_home, container, false)
|
||||
|
||||
// init UI elements
|
||||
linLayoutTimeTable = view.findViewById(R.id.linLayoutTimeTable)
|
||||
|
||||
//setText()
|
||||
addCurrentMensaMenu()
|
||||
addCurrentTimeTable()
|
||||
addMensaMenu()
|
||||
addTimeTable()
|
||||
|
||||
// Inflate the layout for this fragment
|
||||
return view
|
||||
@ -69,54 +68,55 @@ class HomeFragment : Fragment() {
|
||||
/**
|
||||
* add the current mensa meal to the home screens
|
||||
*/
|
||||
private fun addCurrentMensaMenu() {
|
||||
private fun addMensaMenu() {
|
||||
doAsync {
|
||||
val dayMeals: ArrayList<Meal>
|
||||
|
||||
var dayMeals: ArrayList<Meal>
|
||||
val cal = Calendar.getInstance()
|
||||
|
||||
|
||||
if (cal.get(Calendar.HOUR_OF_DAY) < 15) {
|
||||
dayMeals = mensaCurrentWeek.days[NotRetardedCalendar().getDayOfWeekIndex()].meals
|
||||
} else {
|
||||
dayMeals = mensaCurrentWeek.days[NotRetardedCalendar().getTomorrowWeekIndex()].meals
|
||||
uiThread {
|
||||
txtView_Menu1Heading.text = resources.getString(R.string.meal_1_tomorrow)
|
||||
txtView_Menu2Heading.text = resources.getString(R.string.meal_2_tomorrow)
|
||||
}
|
||||
}
|
||||
val mensaCardView = DayCardView(context!!)
|
||||
|
||||
uiThread {
|
||||
|
||||
if (cal.get(Calendar.HOUR_OF_DAY) < 15) {
|
||||
dayMeals = mensaCurrentWeek.days[NotRetardedCalendar().getDayOfWeekIndex()].meals
|
||||
mensaCardView.setDayHeading(resources.getString(R.string.today_date, formatter.format(cal.time)))
|
||||
} else {
|
||||
dayMeals = mensaCurrentWeek.days[NotRetardedCalendar().getTomorrowWeekIndex()].meals
|
||||
cal.add(Calendar.DATE, 1)
|
||||
mensaCardView.setDayHeading(resources.getString(R.string.tomorrow_date, formatter.format(cal.time)))
|
||||
}
|
||||
|
||||
if (dayMeals.size >= 2) {
|
||||
// get the index of the first meal, not a "Schneller Teller"
|
||||
loop@ for ((i, meal) in dayMeals.withIndex()) {
|
||||
if (meal.heading.contains("Essen")) {
|
||||
|
||||
dayMeals[i].parts.forEachIndexed { index, part ->
|
||||
txtViewMenu1.append(part)
|
||||
if (index < (dayMeals[i].parts.size - 1))
|
||||
txtViewMenu1.append("\n")
|
||||
}
|
||||
val meal1Layout = MealLinearLayout(context)
|
||||
meal1Layout.setMeal(dayMeals[i])
|
||||
mensaCardView.getLinLayoutDay().addView(meal1Layout)
|
||||
|
||||
dayMeals[i + 1].parts.forEachIndexed { index, part ->
|
||||
txtViewMenu2.append(part)
|
||||
if (index < (dayMeals[i + 1].parts.size - 1))
|
||||
txtViewMenu2.append("\n")
|
||||
}
|
||||
val meal2Layout = MealLinearLayout(context)
|
||||
meal2Layout.setMeal(dayMeals[i + 1])
|
||||
meal2Layout.disableDivider()
|
||||
mensaCardView.getLinLayoutDay().addView(meal2Layout)
|
||||
|
||||
break@loop
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
if (txtView_Menu1Heading.text == resources.getString(R.string.meal_1_tomorrow)) {
|
||||
txtViewMenu1.text = resources.getString(R.string.no_meal_tomorrow)
|
||||
txtViewMenu2.text = resources.getString(R.string.no_meal_tomorrow)
|
||||
} else {
|
||||
txtViewMenu1.text = resources.getString(R.string.no_meal_today)
|
||||
txtViewMenu2.text = resources.getString(R.string.no_meal_today)
|
||||
}
|
||||
val noFood = TextView(context)
|
||||
noFood.text = resources.getString(R.string.mensa_closed)
|
||||
noFood.setTextColor(ContextCompat.getColor(context!!, R.color.textPrimary))
|
||||
noFood.textSize = 18.0F
|
||||
noFood.setTypeface(null, Typeface.BOLD)
|
||||
noFood.textAlignment = View.TEXT_ALIGNMENT_CENTER
|
||||
noFood.setPadding(7,7,7,7)
|
||||
|
||||
mensaCardView.getLinLayoutDay().addView(noFood)
|
||||
}
|
||||
|
||||
linLayout_Home.addView(mensaCardView)
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,60 +125,67 @@ class HomeFragment : Fragment() {
|
||||
/**
|
||||
* add the current timetable to the home screen
|
||||
*/
|
||||
private fun addCurrentTimeTable() {
|
||||
private fun addTimeTable() {
|
||||
val dayIndex = NotRetardedCalendar().getDayOfWeekIndex()
|
||||
var helpLesson = LessonLinearLayout(context!!)
|
||||
val dayCardView = DayCardView(context!!)
|
||||
dayCardView.setDayHeading("Heute")
|
||||
dayCardView.setDayHeading(resources.getString(R.string.today_date, formatter.format(Calendar.getInstance().time)))
|
||||
|
||||
if (timetables[0].days.isNotEmpty() && dayIndex < 6) {
|
||||
doAsync {
|
||||
uiThread {
|
||||
|
||||
// for all timeslots of the day
|
||||
for ((tsIndex, timeslot) in timetables[0].days[dayIndex].timeslots.withIndex()) {
|
||||
if (timetables[0].days.isNotEmpty() && dayIndex < 6) {
|
||||
|
||||
for(lesson in timeslot) {
|
||||
if(lesson.lessonSubject.isNotEmpty()) {
|
||||
// for all timeslots of the day
|
||||
for ((tsIndex, timeslot) in timetables[0].days[dayIndex].timeslots.withIndex()) {
|
||||
|
||||
val lessonLayout = LessonLinearLayout(context!!)
|
||||
lessonLayout.setLesson(lesson, DataTypes().getTime()[tsIndex])
|
||||
dayCardView.getLinLayoutDay().addView(lessonLayout)
|
||||
for(lesson in timeslot) {
|
||||
if(lesson.lessonSubject.isNotEmpty()) {
|
||||
|
||||
if (lesson != timeslot.last()) {
|
||||
lessonLayout.disableDivider()
|
||||
val lessonLayout = LessonLinearLayout(context!!)
|
||||
lessonLayout.setLesson(lesson, DataTypes().getTime()[tsIndex])
|
||||
dayCardView.getLinLayoutDay().addView(lessonLayout)
|
||||
|
||||
if (lesson != timeslot.last()) {
|
||||
lessonLayout.disableDivider()
|
||||
}
|
||||
|
||||
helpLesson = lessonLayout
|
||||
}
|
||||
}
|
||||
|
||||
helpLesson = lessonLayout
|
||||
}
|
||||
|
||||
helpLesson.disableDivider()
|
||||
// if there are no lessons don't show the dayCardView
|
||||
if (dayCardView.getLinLayoutDay().childCount > 1) {
|
||||
linLayout_Home.addView(dayCardView)
|
||||
} else {
|
||||
// TODO we could display the next day with a lecture
|
||||
val noLesson = DayCardView(context!!)
|
||||
noLesson.setDayHeading(resources.getString(R.string.no_lesson_today))
|
||||
|
||||
linLayout_Home.addView(noLesson)
|
||||
}
|
||||
} else {
|
||||
if (dayIndex == 6) {
|
||||
// if that's the case it's sunday
|
||||
val noLesson = DayCardView(context!!)
|
||||
noLesson.setDayHeading(resources.getString(R.string.no_lesson_today))
|
||||
|
||||
linLayout_Home.addView(noLesson)
|
||||
} else {
|
||||
MaterialDialog(context!!)
|
||||
.title(R.string.error)
|
||||
.message(R.string.gen_tt_error)
|
||||
.show()
|
||||
// TODO log the error and send feedback
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
helpLesson.disableDivider()
|
||||
// if there are no lessons don't show the dayCardView
|
||||
if (dayCardView.getLinLayoutDay().childCount > 1) {
|
||||
linLayoutTimeTable.addView(dayCardView)
|
||||
} else {
|
||||
// TODO we could display the next day with a lecture
|
||||
val noLesson = DayCardView(context!!)
|
||||
noLesson.setDayHeading(resources.getString(R.string.no_lesson_today))
|
||||
|
||||
linLayoutTimeTable.addView(noLesson)
|
||||
}
|
||||
} else {
|
||||
if (dayIndex == 6) {
|
||||
// if that's the case it's sunday
|
||||
val noLesson = DayCardView(context!!)
|
||||
noLesson.setDayHeading(resources.getString(R.string.no_lesson_today))
|
||||
|
||||
linLayoutTimeTable.addView(noLesson)
|
||||
} else {
|
||||
MaterialDialog(context!!)
|
||||
.title(R.string.error)
|
||||
.message(R.string.gen_tt_error)
|
||||
.show()
|
||||
// TODO log the error and send feedback
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,7 +26,6 @@ import android.content.Context
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import androidx.cardview.widget.CardView
|
||||
import kotlinx.android.synthetic.main.linearlayout_lesson.view.*
|
||||
import kotlinx.android.synthetic.main.linearlayout_meal.view.*
|
||||
import org.mosad.seil0.projectlaogai.R
|
||||
import org.mosad.seil0.projectlaogai.hsoparser.Meal
|
||||
|
Reference in New Issue
Block a user