diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/HomeFragment.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/HomeFragment.kt index 6fdb406..715c2d5 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/HomeFragment.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/HomeFragment.kt @@ -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 + + var dayMeals: ArrayList 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 - } - } + } } diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/MealLinearLayout.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/MealLinearLayout.kt index 13e7d98..233b9fe 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/MealLinearLayout.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/MealLinearLayout.kt @@ -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 diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 37a59df..107a016 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -10,97 +10,13 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent"> - + android:layout_width="match_parent" + android:layout_height="wrap_content" android:id="@+id/linLayout_Home"> diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index ac1358a..cc7a9df 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -7,10 +7,9 @@ Einstellungen Essen 1 Essen 2 - Essen 1, Morgen - Essen 1, Morgen - heute keine Essensausgabe - morgen keine Essensausgabe + Heute, %1$s + Morgen, %1$s + keine Essensausgabe Diese Woche keine weitere Essensausgabe heute keine Vorlesung! Fehler diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7f53880..6f2b99a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -14,10 +14,9 @@ Meal 1 Meal 2 - Meal 1, tomorrow - Meal 2, tomorrow - Mensa closed today - Mensa closed tomorrow + Today, %1$s + Tomorrow, %1$s + the Mensa is closed No more Food this week "No lecture today!"