diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt index 9c0793a..78575fb 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt @@ -31,6 +31,7 @@ import android.nfc.NfcManager import android.nfc.tech.NfcA import android.os.Bundle import android.util.Log +import android.util.TypedValue import android.view.Menu import android.view.MenuItem import androidx.appcompat.app.ActionBarDrawerToggle @@ -203,6 +204,13 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte apply() } + // set theme color values + val out = TypedValue() + this.theme.resolveAttribute(R.attr.themePrimary, out, true) + Preferences.themePrimary = out.data + + this.theme.resolveAttribute(R.attr.themeSecondary, out, true) + Preferences.themeSecondary = out.data } private fun initForegroundDispatch() { diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/preferences/Preferences.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/preferences/Preferences.kt index 308e85c..86dadae 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/preferences/Preferences.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/preferences/Preferences.kt @@ -45,6 +45,10 @@ object Preferences { var cShowBuffet = true var oGiants = false + // TODO move! + var themePrimary = 0 + var themeSecondary = 0 + // the save function fun save(context: Context) { val sharedPref = context.getSharedPreferences( diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/GradesFragment.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/GradesFragment.kt index ccae6cd..376be8d 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/GradesFragment.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/GradesFragment.kt @@ -36,6 +36,7 @@ import kotlinx.coroutines.* import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.controller.QISPOSParser import org.mosad.seil0.projectlaogai.controller.preferences.EncryptedPreferences +import org.mosad.seil0.projectlaogai.controller.preferences.Preferences import org.mosad.seil0.projectlaogai.uicomponents.DayCardView import org.mosad.seil0.projectlaogai.uicomponents.GradeLinearLayout import org.mosad.seil0.projectlaogai.uicomponents.dialogs.LoginDialog @@ -51,19 +52,18 @@ class GradesFragment : Fragment() { private lateinit var parser: QISPOSParser override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val view: View = inflater.inflate(R.layout.fragment_grades, container, false) - - refreshLayoutGrades = view.findViewById(R.id.refreshLayout_Grades) - refreshLayoutGrades.isEnabled = false // disable swipe - - parser = QISPOSParser(context!!)// init the parser - - return view + return inflater.inflate(R.layout.fragment_grades, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + refreshLayoutGrades = view.findViewById(R.id.refreshLayout_Grades) + refreshLayoutGrades.isEnabled = false // disable swipe + refreshLayoutGrades.setProgressBackgroundColorSchemeColor(Preferences.themeSecondary) + + parser = QISPOSParser(context!!)// init the parser + if (checkCredentials() && checkQisposStatus()) { GlobalScope.launch(Dispatchers.Default) { addGrades() @@ -105,18 +105,21 @@ class GradesFragment : Fragment() { private fun checkQisposStatus(): Boolean { val statusCode = parser.checkQISPOSStatus() - val infoText = resources.getString(when(statusCode) { - 503 -> R.string.qispos_unavailable - else -> R.string.qispos_generic_error - }) + // show error if the status code is not 200 + if (statusCode != 200) { + val infoText = resources.getString(when(statusCode) { + 503 -> R.string.qispos_unavailable + else -> R.string.qispos_generic_error + }) - val img = ResourcesCompat.getDrawable(resources, R.drawable.ic_error_outline_black_24dp, null)?.apply { - bounds = Rect(0, 0, 75, 75) - } + val img = ResourcesCompat.getDrawable(resources, R.drawable.ic_error_outline_black_24dp, null)?.apply { + bounds = Rect(0, 0, 75, 75) + } - txtView_Loading?.apply { - text = infoText - setCompoundDrawables(null, null, null, img) + txtView_Loading?.apply { + text = infoText + setCompoundDrawables(null, null, null, img) + } } return statusCode == 200 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 397df13..43bc072 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 @@ -53,13 +53,14 @@ class HomeFragment : Fragment() { private val formatter = SimpleDateFormat("E dd.MM", Locale.getDefault()) override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val view: View = inflater.inflate(R.layout.fragment_home, container, false) + return inflater.inflate(R.layout.fragment_home, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) addMensaMenu() addTimeTable() - - // Inflate the layout for this fragment - return view } /** diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MensaFragment.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MensaFragment.kt index 48e25da..4a1d800 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MensaFragment.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MensaFragment.kt @@ -23,6 +23,7 @@ package org.mosad.seil0.projectlaogai.fragments import android.os.Bundle +import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -32,13 +33,16 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import org.mosad.seil0.projectlaogai.MainActivity import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.controller.cache.CacheController import org.mosad.seil0.projectlaogai.controller.cache.CacheController.Companion.mensaMenu +import org.mosad.seil0.projectlaogai.controller.preferences.Preferences import org.mosad.seil0.projectlaogai.controller.preferences.Preferences.cShowBuffet -import org.mosad.seil0.projectlaogai.util.MensaWeek import org.mosad.seil0.projectlaogai.uicomponents.DayCardView import org.mosad.seil0.projectlaogai.uicomponents.MealLinearLayout +import org.mosad.seil0.projectlaogai.uicomponents.TextViewInfo +import org.mosad.seil0.projectlaogai.util.MensaWeek import org.mosad.seil0.projectlaogai.util.NotRetardedCalendar /** @@ -48,11 +52,15 @@ import org.mosad.seil0.projectlaogai.util.NotRetardedCalendar class MensaFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_mensa, container, false) + } - val view: View = inflater.inflate(R.layout.fragment_mensa, container, false) + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) - // init actions - refreshAction() + refreshLayout_Mensa.setProgressBackgroundColorSchemeColor(Preferences.themeSecondary) + + refreshAction() // init actions GlobalScope.launch(Dispatchers.Default) { val dayCurrent = if(NotRetardedCalendar.getDayOfWeekIndex() == 6) 0 else NotRetardedCalendar.getDayOfWeekIndex() @@ -62,10 +70,13 @@ class MensaFragment : Fragment() { addWeek(mensaMenu.nextWeek, 0) } - - // TODO should we show a info if there is no more food this & next week? - - return view + // show a info if there are no more menus + if (linLayout_Mensa.childCount == 0) { + val txtViewInfo = TextViewInfo(context!!).set { + txt = resources.getString(R.string.no_more_meals) + } + linLayout_Mensa.addView(txtViewInfo) + } } /** @@ -76,7 +87,6 @@ class MensaFragment : Fragment() { private fun addWeek(menusWeek: MensaWeek, dayStart: Int) = GlobalScope.launch(Dispatchers.Default) { withContext(Dispatchers.Main) { - // only add the days dayStart to Fri since the mensa is closed on Sat/Sun for (dayIndex in dayStart..4) { var helpMeal = MealLinearLayout(context) @@ -100,7 +110,6 @@ class MensaFragment : Fragment() { if(dayCardView.getLinLayoutDay().childCount > 2) linLayout_Mensa.addView(dayCardView) } - } } @@ -136,6 +145,14 @@ class MensaFragment : Fragment() { addWeek(mensaMenu.nextWeek, 0) refreshLayout_Mensa.isRefreshing = false + + // show a info if there are no more menus + if (linLayout_Mensa.childCount == 0) { + val txtViewInfo = TextViewInfo(context!!).set { + txt = resources.getString(R.string.no_more_meals) + } + linLayout_Mensa.addView(txtViewInfo) + } } } diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MoodleFragment.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MoodleFragment.kt index 7cbde41..b94199f 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MoodleFragment.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MoodleFragment.kt @@ -42,8 +42,11 @@ class MoodleFragment : Fragment() { private lateinit var webSettings: WebSettings override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_moodle, container, false) + } - val view: View = inflater.inflate(R.layout.fragment_moodle, container, false) + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) webView = view.findViewById(R.id.webView) webView.loadUrl("https://elearning.hs-offenburg.de/moodle/") @@ -52,7 +55,5 @@ class MoodleFragment : Fragment() { //webSettings.setJavaScriptEnabled(true) // Enable Javascript webView.webViewClient = WebViewClient() // Force links and redirects to open in the WebView instead of in a browser - - return view } } diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/SettingsFragment.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/SettingsFragment.kt index 63bb370..4599d51 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/SettingsFragment.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/SettingsFragment.kt @@ -80,8 +80,14 @@ class SettingsFragment : Fragment() { private var selectedTheme = DataTypes.Theme.Light override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_settings, container, false) + } - val view: View = inflater.inflate(R.layout.fragment_settings, container, false) + /** + * initialize the settings gui + */ + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) linLayoutUser = view.findViewById(R.id.linLayout_User) linLayoutCourse = view.findViewById(R.id.linLayout_Course) @@ -92,19 +98,13 @@ class SettingsFragment : Fragment() { linLayoutPrimaryColor = view.findViewById(R.id.linLayout_PrimaryColor) linLayoutAccentColor = view.findViewById(R.id.linLayout_AccentColor) switchBuffet = view.findViewById(R.id.switch_buffet) + // if we call txtView_Course via KAE view binding it'll result in a NPE in the onDismissed call txtViewCourse = view.findViewById(R.id.txtView_Course) initActions() - // Inflate the layout for this fragment - return view - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - // initialize the settings gui txtView_User.text = EncryptedPreferences.email.ifEmpty { resources.getString(R.string.sample_user) } txtView_Course.text = cCourse.courseName txtView_AboutDesc.text = resources.getString(R.string.about_version, BuildConfig.VERSION_NAME, getString(R.string.build_time)) diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/TimeTableFragment.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/TimeTableFragment.kt index e5cf4aa..ce1736d 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/TimeTableFragment.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/TimeTableFragment.kt @@ -28,15 +28,16 @@ import android.view.View import android.view.ViewGroup import android.widget.ScrollView import androidx.fragment.app.Fragment -import com.afollestad.materialdialogs.MaterialDialog import com.google.android.material.floatingactionbutton.FloatingActionButton import kotlinx.android.synthetic.main.fragment_timetable.* import kotlinx.coroutines.* import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.controller.cache.TimetableController import org.mosad.seil0.projectlaogai.controller.cache.TimetableController.Companion.timetable +import org.mosad.seil0.projectlaogai.controller.preferences.Preferences import org.mosad.seil0.projectlaogai.uicomponents.dialogs.AddSubjectDialog import org.mosad.seil0.projectlaogai.uicomponents.DayCardView +import org.mosad.seil0.projectlaogai.uicomponents.TextViewInfo import org.mosad.seil0.projectlaogai.util.NotRetardedCalendar /** @@ -49,26 +50,26 @@ class TimeTableFragment : Fragment() { private lateinit var faBtnAddSubject: FloatingActionButton override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_timetable, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) - val view: View = inflater.inflate(R.layout.fragment_timetable, container, false) scrollViewTimetable = view.findViewById(R.id.scrollView_Timetable) faBtnAddSubject = view.findViewById(R.id.faBtnAddSubject) + refreshLayout_Timetable.setProgressBackgroundColorSchemeColor(Preferences.themeSecondary) - // init actions - initActions() + initActions() // init actions if (timetable.size > 1 && timetable[0].days.isNotEmpty() && timetable[1].days.isNotEmpty()) { initTimetable() - - //println(timetable) } else { - MaterialDialog(context!!) - .title(R.string.error) - .message(R.string.timetable_error) - .show() + val txtViewInfo = TextViewInfo(context!!).set { + txt = resources.getString(R.string.timetable_generic_error) + }.showImage() + linLayout_Timetable.addView(txtViewInfo) } - - return view } /** diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/DayCardView.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/DayCardView.kt index 8e2c2e4..8c1cec5 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/DayCardView.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/DayCardView.kt @@ -65,9 +65,8 @@ class DayCardView(context: Context) : CardView(context) { txtView_DayHeading.text = formatter.format(cal.time) // for every timeslot of that timetable - for ((tsIndex, timeslot) in timetable.timeslots.withIndex()) { - - for (lesson in timeslot) { + timetable.timeslots.forEachIndexed { tsIndex, timeslot -> + timeslot.forEach { lesson -> if (lesson.lessonSubject.isNotEmpty()) { val lessonLayout = LessonLinearLayout(context) @@ -81,6 +80,7 @@ class DayCardView(context: Context) : CardView(context) { lastLesson = lessonLayout } } + } lastLesson.disableDivider() // disable the divider for the last lesson of the day diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/GradeLinearLayout.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/GradeLinearLayout.kt index 2059923..c308173 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/GradeLinearLayout.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/GradeLinearLayout.kt @@ -25,7 +25,6 @@ package org.mosad.seil0.projectlaogai.uicomponents import android.content.Context import android.view.View import android.widget.LinearLayout -import androidx.cardview.widget.CardView import kotlinx.android.synthetic.main.linearlayout_grade.view.* import org.mosad.seil0.projectlaogai.R @@ -37,7 +36,7 @@ class GradeLinearLayout(context: Context?): LinearLayout(context) { var subGrade = "" init { - CardView.inflate(context, R.layout.linearlayout_grade, this) + inflate(context, R.layout.linearlayout_grade, this) } fun set(func: GradeLinearLayout.() -> Unit): GradeLinearLayout = apply { diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonLinearLayout.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonLinearLayout.kt index 465697b..2fc198d 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonLinearLayout.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonLinearLayout.kt @@ -25,7 +25,6 @@ package org.mosad.seil0.projectlaogai.uicomponents 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 org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.util.Lesson @@ -33,7 +32,7 @@ import org.mosad.seil0.projectlaogai.util.Lesson class LessonLinearLayout(context: Context?) : LinearLayout(context) { init { - CardView.inflate(context, R.layout.linearlayout_lesson, this) + inflate(context, R.layout.linearlayout_lesson, this) } fun setLesson(lesson: Lesson, time: String) { 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 a1bda1f..eb26bcd 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 @@ -25,7 +25,6 @@ package org.mosad.seil0.projectlaogai.uicomponents import android.content.Context import android.view.View import android.widget.LinearLayout -import androidx.cardview.widget.CardView import kotlinx.android.synthetic.main.linearlayout_meal.view.* import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.util.Meal @@ -33,7 +32,7 @@ import org.mosad.seil0.projectlaogai.util.Meal class MealLinearLayout(context: Context?): LinearLayout(context) { init { - CardView.inflate(context, R.layout.linearlayout_meal, this) + inflate(context, R.layout.linearlayout_meal, this) } fun setMeal(meal: Meal) { diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/TextViewInfo.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/TextViewInfo.kt new file mode 100644 index 0000000..f62c1ee --- /dev/null +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/TextViewInfo.kt @@ -0,0 +1,63 @@ +/** + * ProjectLaogai + * + * Copyright 2019-2020 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +package org.mosad.seil0.projectlaogai.uicomponents + +import android.content.Context +import android.graphics.Rect +import android.view.View +import android.widget.LinearLayout +import androidx.appcompat.widget.AppCompatTextView +import androidx.core.content.res.ResourcesCompat +import org.mosad.seil0.projectlaogai.R + + +class TextViewInfo(context: Context?): AppCompatTextView(context!!) { + + var txt = "" + var txtSize = 15F + var txtAlignment = View.TEXT_ALIGNMENT_CENTER + var drawable = R.drawable.ic_error_outline_black_24dp + var params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) + + init { + params.setMargins(0,200,0,0) + + } + + fun set(func: TextViewInfo.() -> Unit): TextViewInfo = apply { + func() + + text = txt + layoutParams = params + textSize = txtSize + textAlignment = txtAlignment + } + + fun showImage(): TextViewInfo = apply { + val img = ResourcesCompat.getDrawable(resources, drawable, context.theme)?.apply { + bounds = Rect(0, 0, 75, 75) + } + setCompoundDrawables(null, null, null, img) + } + +} \ No newline at end of file diff --git a/app/src/main/res/layouts/fragments/layout/fragment_mensa.xml b/app/src/main/res/layouts/fragments/layout/fragment_mensa.xml index 692f063..ac155d4 100644 --- a/app/src/main/res/layouts/fragments/layout/fragment_mensa.xml +++ b/app/src/main/res/layouts/fragments/layout/fragment_mensa.xml @@ -1,26 +1,28 @@ + android:id="@+id/refreshLayout_Mensa" + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:id="@+id/scrollView_Mensa" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + android:id="@+id/linLayout_Mensa" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:animateLayoutChanges="false" + android:orientation="vertical" /> diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index e63d921..1786355 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -33,11 +33,15 @@ Diese Woche keine weitere Essensausgabe heute keine Vorlesung! + + Für diese und nächste Woche ist der Speiseplan leer. + Eine Vorlesung hinzufügen Füge eine Vorlesung eines anderen Studiengangs zu deinem Stundenplan hinzu. Studiengänge: Vorlesungen: + Beim laden des Stundenplans ist ein Fehler aufgetreten.\n Lade Daten von den Hochschul Servern.\nDas kann eine Weile dauern. @@ -78,7 +82,7 @@ Fehler - Stundenplan konnte nicht geladen werden! + Der Stundenplan konnte nicht geladen werden. Mensa diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4b1ecea..db3abf5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,11 +35,15 @@ No more Food this week "No lecture today!" + + The menu is empty for this and the next week. + Add a lesson Add a lesson from another course to your timetable. Courses: Lessons: + An error occurred while loading the timetable.\n Loading data from the university servers.\nThis may take a while. @@ -93,7 +97,7 @@ Error - Could not load timetable!" + Could not load the timetable!" Mensa