From 5a1a07cd42cea069f12f376c911a0237e6c853d2 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sun, 3 Mar 2019 20:46:51 +0100 Subject: [PATCH] minor gui updates --- .../projectlaogai/fragments/HomeFragment.kt | 30 ++++++--- .../fragments/SettingsFragment.kt | 1 - .../fragments/TimeTableFragment.kt | 66 ++++++++++++------- .../uicomponents/LessonCardView.kt | 9 +-- .../uicomponents/LessonTextView.kt | 26 ++++++++ app/src/main/res/layout/lesson_cardview.xml | 15 +---- 6 files changed, 94 insertions(+), 53 deletions(-) create mode 100644 app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonTextView.kt 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 e761de5..71c9707 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 @@ -37,6 +37,7 @@ import org.mosad.seil0.projectlaogai.PreferencesController.Companion.cWeekMenus import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.hsoparser.* import org.mosad.seil0.projectlaogai.uicomponents.LessonCardView +import org.mosad.seil0.projectlaogai.uicomponents.LessonTextView import java.util.* /** @@ -128,33 +129,42 @@ class HomeFragment : Fragment() { // for all timeslots of the day for ((i, timeslot) in timeTableDay.timeslots.withIndex()) { + val lessonCardView = LessonCardView(context!!, null) + lessonCardView.getTxtViewTime().text = DataTypes().getTime()[i] for (lesson in timeslot) { - val lessonCardView = LessonCardView(context!!, null) + val lessonTxtView = LessonTextView(context!!) + lessonTxtView.setLesson(lesson) - lessonCardView.getTxtViewLesson().text = resources.getString(R.string.string_new_line, lesson.lessonSubject) - lessonCardView.getTxtViewLesson().append(lesson.lessonTeacher + "\n") - lessonCardView.getTxtViewLesson().append(lesson.lessonRoom) - lessonCardView.getTxtViewTime().text = DataTypes().getTime()[i] - - if(lessonCardView.getTxtViewLesson().text.length > 2) - linLayoutTimeTable.addView(lessonCardView) + // TODO why does this exist + if (lessonTxtView.text.length > 3) + lessonCardView.getLinLayoutLesson().addView(lessonTxtView) } + if (lessonCardView.getLinLayoutLesson().childCount > 2) + linLayoutTimeTable.addView(lessonCardView) } // add a card if there is no lesson today if (linLayoutTimeTable.childCount == 0) { // TODO we could display the next day with a lecture + val lessonTxtView = LessonTextView(context!!) + lessonTxtView.setText(resources.getString(R.string.no_lesson_today)) + val noLessonCardView = LessonCardView(context!!, null) - noLessonCardView.getTxtViewLesson().text = resources.getString(R.string.no_lesson_today) + noLessonCardView.getLinLayoutLesson().addView(lessonTxtView) + linLayoutTimeTable.addView(noLessonCardView) } } else { if (dayIndex == 6) { // if that's the case it's sunday + val lessonTxtView = LessonTextView(context!!) + lessonTxtView.setText(resources.getString(R.string.no_lesson_today)) + val noLessonCardView = LessonCardView(context!!, null) - noLessonCardView.getTxtViewLesson().text = resources.getString(R.string.no_lesson_today) + noLessonCardView.getLinLayoutLesson().addView(lessonTxtView) + linLayoutTimeTable.addView(noLessonCardView) } else { MaterialDialog(context!!) 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 6ad9a0a..2195679 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 @@ -35,7 +35,6 @@ import com.afollestad.materialdialogs.color.colorChooser import com.afollestad.materialdialogs.customview.customView import com.afollestad.materialdialogs.list.listItems import kotlinx.android.synthetic.main.fragment_settings.* -import org.jetbrains.anko.Android import org.jetbrains.anko.doAsync import org.jetbrains.anko.uiThread import org.mosad.seil0.projectlaogai.PreferencesController 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 92cd16f..534fb60 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 @@ -22,7 +22,6 @@ package org.mosad.seil0.projectlaogai.fragments -import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -37,6 +36,7 @@ import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.hsoparser.DataTypes import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar import org.mosad.seil0.projectlaogai.uicomponents.LessonCardView +import org.mosad.seil0.projectlaogai.uicomponents.LessonTextView import org.mosad.seil0.projectlaogai.uicomponents.MensaDayCardView import java.text.SimpleDateFormat import java.util.* @@ -83,38 +83,41 @@ class TimeTableFragment : Fragment() { // for each timeslot of the day for ((i, timeslot) in cTimeTableCurrentWeek.days[day].timeslots.withIndex()) { + val lessonCardView = LessonCardView(context!!, null) + lessonCardView.getTxtViewTime().text = DataTypes().getTime()[i] - println(timeslot) + //println(timeslot) for (lesson in timeslot) { - val lessonCardView = LessonCardView(context!!, null) - lessonCardView.setBackgroundColor(Color.TRANSPARENT) + val lessonTxtView = LessonTextView(context!!) + lessonTxtView.setLesson(lesson) - lessonCardView.getTxtViewLesson().text = resources.getString(R.string.string_new_line, lesson.lessonSubject) - lessonCardView.getTxtViewLesson().append(lesson.lessonTeacher + "\n") - lessonCardView.getTxtViewLesson().append(lesson.lessonRoom) - lessonCardView.getTxtViewTime().text = DataTypes().getTime()[i] - - // only add the lesson if it contains data - if (lessonCardView.getTxtViewLesson().text.length > 2) - cardViewTimeTableDay.getLinLayoutMensaDay().addView(lessonCardView) + // TODO why does this exist + if (lessonTxtView.text.length > 3) + lessonCardView.getLinLayoutLesson().addView(lessonTxtView) } + + // only add the lesson if it contains data + if (lessonCardView.getLinLayoutLesson().childCount > 1) + cardViewTimeTableDay.getLinLayoutMensaDay().addView(lessonCardView) } calendar.add(Calendar.DATE, 1) // if the day contains no lessons add a text "No lesson today" if (cardViewTimeTableDay.getLinLayoutMensaDay().childCount <= 1) { + val lessonTxtView = LessonTextView(context!!) + lessonTxtView.setText(resources.getString(R.string.no_lesson_today)) + val lessonCardView = LessonCardView(context!!, null) - lessonCardView.setBackgroundColor(Color.TRANSPARENT) - lessonCardView.getTxtViewLesson().text = resources.getString(R.string.no_lesson_today) + lessonCardView.getLinLayoutLesson().addView(lessonTxtView) + cardViewTimeTableDay.getLinLayoutMensaDay().addView(lessonCardView) } linLayoutTTFragment.addView(cardViewTimeTableDay) } - // TODO if there is no lesson at one day , show a no lesson card // add next weeks days, max number = dayIndex, if timetable was loaded if (cTimeTableNextWeek.days.isNotEmpty()) { calendar.add(Calendar.DATE, 1) // before this we are at a sunday (no lecture on sundays!) @@ -126,23 +129,36 @@ class TimeTableFragment : Fragment() { // for each timeslot of the day for ((i, timeslot) in cTimeTableNextWeek.days[day].timeslots.withIndex()) { + val lessonCardView = LessonCardView(context!!, null) + lessonCardView.getTxtViewTime().text = DataTypes().getTime()[i] + for (lesson in timeslot) { - val lessonCardView = LessonCardView(context!!, null) - lessonCardView.setBackgroundColor(Color.TRANSPARENT) + val lessonTxtView = LessonTextView(context!!) + lessonTxtView.setLesson(lesson) - lessonCardView.getTxtViewLesson().text = resources.getString(R.string.string_new_line, lesson.lessonSubject) - lessonCardView.getTxtViewLesson().append(lesson.lessonTeacher + "\n") - lessonCardView.getTxtViewLesson().append(lesson.lessonRoom) - lessonCardView.getTxtViewTime().text = DataTypes().getTime()[i] - - // only add the lesson if it contains data - if (lessonCardView.getTxtViewLesson().text.length > 2) - cardViewTimeTableDay.getLinLayoutMensaDay().addView(lessonCardView) + if (lessonTxtView.text.length > 3) + lessonCardView.getLinLayoutLesson().addView(lessonTxtView) } + + // only add the lesson if it contains data + if (lessonCardView.getLinLayoutLesson().childCount > 1) + cardViewTimeTableDay.getLinLayoutMensaDay().addView(lessonCardView) } calendar.add(Calendar.DATE, 1) + + // if the day contains no lessons add a text "No lesson today" + if (cardViewTimeTableDay.getLinLayoutMensaDay().childCount <= 1) { + val lessonTxtView = LessonTextView(context!!) + lessonTxtView.setText(resources.getString(R.string.no_lesson_today)) + + val lessonCardView = LessonCardView(context!!, null) + lessonCardView.getLinLayoutLesson().addView(lessonTxtView) + + cardViewTimeTableDay.getLinLayoutMensaDay().addView(lessonCardView) + } + linLayoutTTFragment.addView(cardViewTimeTableDay) } } diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonCardView.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonCardView.kt index 7a972dc..99e1063 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonCardView.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonCardView.kt @@ -25,26 +25,27 @@ package org.mosad.seil0.projectlaogai.uicomponents import android.content.Context import android.graphics.Color import android.util.AttributeSet +import android.widget.LinearLayout import android.widget.TextView import org.mosad.seil0.projectlaogai.R class LessonCardView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : androidx.cardview.widget.CardView(context, attrs){ - private var txtViewLesson: TextView + private var linLayoutLesson: LinearLayout private var txtViewTime: TextView init { inflate(context, R.layout.lesson_cardview,this) - txtViewLesson = findViewById(R.id.txtView_Lesson) + linLayoutLesson = findViewById(R.id.linLayout_Lesson) txtViewTime = findViewById(R.id.txtView_Time) // workaround to prevent a white border this.setBackgroundColor(Color.TRANSPARENT) } - fun getTxtViewLesson(): TextView { - return txtViewLesson + fun getLinLayoutLesson(): LinearLayout { + return linLayoutLesson } fun getTxtViewTime(): TextView { diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonTextView.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonTextView.kt new file mode 100644 index 0000000..13b4063 --- /dev/null +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonTextView.kt @@ -0,0 +1,26 @@ +package org.mosad.seil0.projectlaogai.uicomponents + +import android.content.Context +import android.graphics.Color +import android.util.AttributeSet +import android.widget.TextView +import org.mosad.seil0.projectlaogai.hsoparser.Lesson + +class LessonTextView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : TextView(context, attrs) { + + init { + this.setTextColor(Color.BLACK) + this.textSize = 16F + this.setPadding(0,6,0,0) + } + + fun setLesson(lesson: Lesson) { + this.text = resources.getString(org.mosad.seil0.projectlaogai.R.string.string_new_line, lesson.lessonSubject) + this.append(lesson.lessonTeacher + "\n") + this.append(lesson.lessonRoom) + } + + fun setText(text: String) { + this.text = text + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/lesson_cardview.xml b/app/src/main/res/layout/lesson_cardview.xml index 6bd82ab..bbbd688 100644 --- a/app/src/main/res/layout/lesson_cardview.xml +++ b/app/src/main/res/layout/lesson_cardview.xml @@ -9,20 +9,9 @@ app:cardUseCompatPadding="true" app:cardPreventCornerOverlap="false" app:contentPadding="5dp"> - - - + android:layout_height="match_parent" android:id="@+id/linLayout_Lesson">