From f7fa96b1ae42de6fc1775f7bdba5050f31e63ccf Mon Sep 17 00:00:00 2001 From: Seil0 Date: Fri, 3 May 2019 22:45:53 +0200 Subject: [PATCH 01/38] use gradle 5.4.1 * fixes build issues if instant run is enabled --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f59e369..9f6dcfc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip From e99127a63a3df62fbbb0e8182b3ab94200ab9823 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Fri, 3 May 2019 22:54:43 +0200 Subject: [PATCH 02/38] Update 'README.md' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d4fdedf..37a979c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # ProjectLaogai "hso App" ProjectLaogai is a app to access the timetable and the mensa menu of Hochschule Offenburg. -[](https://f-droid.org/packages/org.mosad.seil0.projectlaogai/) +[](https://f-droid.org/packages/org.mosad.seil0.projectlaogai/) ## Features * check out the mensa menu of this and next week * access your timetable From 9c1f95ca25f119ba72fb050f7f014cc5b2efb3f8 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sun, 2 Jun 2019 19:09:36 +0200 Subject: [PATCH 03/38] some lib updates & new sunday-bug fix --- app/build.gradle | 8 ++--- .../mosad/seil0/projectlaogai/MainActivity.kt | 33 ++++++++++++----- .../controller/CacheController.kt | 19 ++++------ .../projectlaogai/fragments/HomeFragment.kt | 6 ++-- .../projectlaogai/fragments/MensaFragment.kt | 36 ++++++++++++++----- .../projectlaogai/hsoparser/DataTypes.kt | 25 +++++++++---- app/src/main/res/layout/fragment_mensa.xml | 9 ++++- build.gradle | 2 +- 8 files changed, 94 insertions(+), 44 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 430579e..f5f8ff9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { minSdkVersion 21 targetSdkVersion 28 versionCode 13 - versionName "0.4.1" + versionName "0.4.90" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "build_time", buildTime() setProperty("archivesBaseName", "projectlaogai-$versionName") @@ -37,7 +37,7 @@ dependencies { implementation 'org.jetbrains.anko:anko-commons:0.10.8' implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha5' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0' implementation 'com.google.android.material:material:1.0.0' implementation 'com.google.code.gson:gson:2.8.5' @@ -47,8 +47,8 @@ dependencies { testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.1' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + androidTestImplementation 'androidx.test:runner:1.2.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } static def buildTime() { 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 8d2aa82..aa3b13d 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt @@ -36,6 +36,7 @@ import com.google.android.material.navigation.NavigationView import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.app_bar_main.* import org.mosad.seil0.projectlaogai.controller.CacheController +import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.mensaMenu import org.mosad.seil0.projectlaogai.controller.PreferencesController import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cColorAccent import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cColorPrimary @@ -45,7 +46,6 @@ import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion. import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.timetableCacheTime import org.mosad.seil0.projectlaogai.controller.TCoRAPIController import org.mosad.seil0.projectlaogai.fragments.* -import java.sql.Date import java.util.* import kotlin.system.measureTimeMillis @@ -171,11 +171,12 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte val currentDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK) val cal = Calendar.getInstance() + // timetable sunday workaround cal.time = Date(timetableCacheTime * 1000) val timetableCacheDay = cal.get(Calendar.DAY_OF_WEEK) - // TODO this sill backfire if someone has to update before the server finished updating the timetable at 0001/0101 + // TODO this will backfire if someone has to update before the server finished updating the timetable at 0001/0101 // update blocking if a) it`s monday and the last cache was not on a monday or b) the cache is older than 6 days if((currentDay == Calendar.MONDAY && timetableCacheDay != Calendar.MONDAY) || (System.currentTimeMillis() / 1000) - timetableCacheTime > 518400) { println("updating timetable after sunday!") @@ -186,16 +187,29 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte jobB.get() } - // mensa sunday workaround - cal.time = Date(System.currentTimeMillis()) // reset to current time - // update blocking if it's sunday after 1500 - // TODO and the last update was before 1500 - if(currentDay == Calendar.SUNDAY && cal.get(Calendar.HOUR_OF_DAY) >= 15) { - val jobA = TCoRAPIController.getMensa(this) - jobA.get() + +// //mensa sunday workaround +// cal.time = Date(System.currentTimeMillis()) // reset to current time +// +// // update blocking if it's sunday after 1500 +// if(currentDay == Calendar.SUNDAY && cal.get(Calendar.HOUR_OF_DAY) >= 15) { +// TCoRAPIController.getMensa(this).get() +// } + + // TODO test!! + // new sunday bug fix + CacheController.readMensa(this) + val mensaUpdateTime = Date(mensaMenu.meta.updateTime * 1000) + cal.time = mensaUpdateTime + + // if it's monday and the last cache update was on sunday or is older than 24hr, update blocking + if ((currentDay == Calendar.MONDAY && cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) || currentTime - mensaMenu.meta.updateTime > 86400) { + println("update blocking") + TCoRAPIController.getMensa(this).get() } + // get the cached files val cache = CacheController(this) cache.readStartCache(cCourse.courseName) @@ -211,6 +225,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte TCoRAPIController.getTimetable(cCourse.courseName, 0, this) TCoRAPIController.getTimetable(cCourse.courseName, 1, this) } + } println("startup completed in $startupTime ms") } diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/CacheController.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/CacheController.kt index bd8c065..2bed4e2 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/CacheController.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/CacheController.kt @@ -24,14 +24,14 @@ package org.mosad.seil0.projectlaogai.controller import android.content.Context import com.google.gson.Gson +import com.google.gson.GsonBuilder import com.google.gson.JsonParser -import org.mosad.seil0.projectlaogai.hsoparser.Course -import org.mosad.seil0.projectlaogai.hsoparser.MensaWeek -import org.mosad.seil0.projectlaogai.hsoparser.TimetableWeek import java.io.BufferedReader import java.io.File import java.io.FileReader import com.google.gson.reflect.TypeToken +import org.mosad.seil0.projectlaogai.hsoparser.* +import kotlin.collections.ArrayList class CacheController(cont: Context) { @@ -39,12 +39,12 @@ class CacheController(cont: Context) { companion object { var coursesList = ArrayList() - var mensaCurrentWeek = MensaWeek() - var mensaNextWeek = MensaWeek() var timetables = ArrayList() + var mensaMenu = MensaMenu(MensaMeta(0, ""), MensaWeek(), MensaWeek()) /** - * read current and next weeks mensa menus from the cached file + * get the MensaMenu object from the cached json, + * if cache is empty create the cache file */ fun readMensa(context: Context) { val file = File(context.filesDir, "mensa.json") @@ -54,16 +54,11 @@ class CacheController(cont: Context) { TCoRAPIController.getMensa(context).get() } - val fileReader = FileReader(file) val bufferedReader = BufferedReader(fileReader) val mensaObject = JsonParser().parse(bufferedReader.readLine()).asJsonObject - val currentWeek = mensaObject.getAsJsonObject("currentWeek") - val nextWeek = mensaObject.getAsJsonObject("nextWeek") - - mensaCurrentWeek = Gson().fromJson(currentWeek, MensaWeek().javaClass) - mensaNextWeek = Gson().fromJson(nextWeek, MensaWeek().javaClass) + mensaMenu = GsonBuilder().create().fromJson(mensaObject, MensaMenu(MensaMeta(0, ""), MensaWeek(), MensaWeek()).javaClass) } /** 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 ab5ac75..e8b2212 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 @@ -35,7 +35,7 @@ import kotlinx.android.synthetic.main.fragment_home.* import org.jetbrains.anko.doAsync import org.jetbrains.anko.uiThread import org.mosad.seil0.projectlaogai.R -import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.mensaCurrentWeek +import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.mensaMenu import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.timetables import org.mosad.seil0.projectlaogai.hsoparser.DataTypes import org.mosad.seil0.projectlaogai.hsoparser.Meal @@ -78,10 +78,10 @@ class HomeFragment : Fragment() { uiThread { if (cal.get(Calendar.HOUR_OF_DAY) < 15) { - dayMeals = mensaCurrentWeek.days[NotRetardedCalendar().getDayOfWeekIndex()].meals + dayMeals = mensaMenu.currentWeek.days[NotRetardedCalendar().getDayOfWeekIndex()].meals mensaCardView.setDayHeading(resources.getString(R.string.today_date, formatter.format(cal.time))) } else { - dayMeals = mensaCurrentWeek.days[NotRetardedCalendar().getTomorrowWeekIndex()].meals + dayMeals = mensaMenu.currentWeek.days[NotRetardedCalendar().getTomorrowWeekIndex()].meals cal.add(Calendar.DATE, 1) mensaCardView.setDayHeading(resources.getString(R.string.tomorrow_date, formatter.format(cal.time))) } 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 109ae0f..ee2bbf0 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 @@ -27,12 +27,14 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import com.afollestad.materialdialogs.MaterialDialog +import com.google.android.material.floatingactionbutton.FloatingActionButton import kotlinx.android.synthetic.main.fragment_mensa.* import org.jetbrains.anko.doAsync import org.jetbrains.anko.uiThread +import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.controller.CacheController -import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.mensaCurrentWeek -import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.mensaNextWeek +import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.mensaMenu import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cShowBuffet import org.mosad.seil0.projectlaogai.controller.TCoRAPIController import org.mosad.seil0.projectlaogai.hsoparser.MensaWeek @@ -46,25 +48,43 @@ import org.mosad.seil0.projectlaogai.uicomponents.MealLinearLayout */ class MensaFragment : Fragment() { + private lateinit var btnCardValue: FloatingActionButton + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val view: View = inflater.inflate(org.mosad.seil0.projectlaogai.R.layout.fragment_mensa, container, false) + val view: View = inflater.inflate(R.layout.fragment_mensa, container, false) + + btnCardValue = view.findViewById(R.id.btnCardValue) // init actions - refreshAction() + initActions() // add the current week (week starts on sunday) val dayCurrent = if(NotRetardedCalendar().getDayOfWeekIndex() == 6) 0 else NotRetardedCalendar().getDayOfWeekIndex() - addWeek(mensaCurrentWeek, dayCurrent).get() + addWeek(mensaMenu.currentWeek, dayCurrent).get() // add the next week - addWeek(mensaNextWeek, 0) + addWeek(mensaMenu.nextWeek, 0) // TODO should we show a info if there is no more food this & next week? + // TODO hide the floating button if we are not on the top end of the scroll pane return view } + private fun initActions() { + refreshAction() // must be async + + btnCardValue.setOnClickListener { + MaterialDialog(context!!) + .title(text = "Mensa-Karte") + .message(text = "das aktuelle Guthaben beträgt\n\n13,70€") + .show() + } + + + } + /** * add all menus from dayStart to Friday for a given week * @param menusWeek menu of type MensaWeek you want to add @@ -129,10 +149,10 @@ class MensaFragment : Fragment() { // add the refreshed menus val dayCurrent = if (NotRetardedCalendar().getDayOfWeekIndex() == 6) 0 else NotRetardedCalendar().getDayOfWeekIndex() - addWeek(mensaCurrentWeek, dayCurrent).get() + addWeek(mensaMenu.currentWeek, dayCurrent).get() // add the next week - addWeek(mensaNextWeek, 0) + addWeek(mensaMenu.nextWeek, 0) refreshLayout_Mensa.isRefreshing = false } diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/DataTypes.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/DataTypes.kt index acd972d..9c279c7 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/DataTypes.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/DataTypes.kt @@ -27,7 +27,8 @@ import java.util.* import kotlin.collections.ArrayList class DataTypes { - val times = arrayOf("8.00 - 9.30", "9.45 - 11.15" ,"11.35 - 13.05", "14.00 -15.30", "15.45 - 17.15", "17.30 - 19.00") + val times = + arrayOf("8.00 - 9.30", "9.45 - 11.15", "11.35 - 13.05", "14.00 -15.30", "15.45 - 17.15", "17.30 - 19.00") val primaryColors = intArrayOf( Color.parseColor("#E53935"), @@ -69,7 +70,7 @@ class DataTypes { Color.parseColor("#FF9100"), Color.parseColor("#FF3D00"), Color.parseColor("#000000") - ) + ) init { // do something @@ -85,7 +86,7 @@ class NotRetardedCalendar { private val calendar = Calendar.getInstance()!! fun getDayOfWeekIndex(): Int { - return when(calendar.get(Calendar.DAY_OF_WEEK)) { + return when (calendar.get(Calendar.DAY_OF_WEEK)) { Calendar.MONDAY -> 0 Calendar.TUESDAY -> 1 Calendar.WEDNESDAY -> 2 @@ -98,7 +99,7 @@ class NotRetardedCalendar { } fun getTomorrowWeekIndex(): Int { - return when(calendar.get(Calendar.DAY_OF_WEEK)) { + return when (calendar.get(Calendar.DAY_OF_WEEK)) { Calendar.MONDAY -> 1 Calendar.TUESDAY -> 2 Calendar.WEDNESDAY -> 3 @@ -111,16 +112,28 @@ class NotRetardedCalendar { } } +// data classes for the course part data class Course(val courseLink: String, val courseName: String) +// data classes for the Mensa part data class Meal(val day: String, val heading: String, val parts: ArrayList, val additives: String) data class Meals(val meals: ArrayList) data class MensaWeek(val days: Array = Array(7) { Meals(ArrayList()) }) -data class Lesson(val lessonSubject: String, val lessonTeacher: String, val lessonRoom:String, val lessonRemark: String) +data class MensaMeta(val updateTime: Long, val mensaName: String) -data class TimetableDay( val timeslots: Array> = Array(6) { ArrayList()}) +data class MensaMenu(val meta: MensaMeta, val currentWeek: MensaWeek, val nextWeek: MensaWeek) + +// data classes for the timetable part +data class Lesson( + val lessonSubject: String, + val lessonTeacher: String, + val lessonRoom: String, + val lessonRemark: String +) + +data class TimetableDay(val timeslots: Array> = Array(6) { ArrayList() }) data class TimetableWeek(val days: Array = Array(6) { TimetableDay() }) \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_mensa.xml b/app/src/main/res/layout/fragment_mensa.xml index cddb0f2..010365e 100644 --- a/app/src/main/res/layout/fragment_mensa.xml +++ b/app/src/main/res/layout/fragment_mensa.xml @@ -1,6 +1,6 @@ @@ -22,6 +22,13 @@ android:id="@+id/linLayout_Mensa"/> + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 3cedbfe..0cf0071 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.4.0' + classpath 'com.android.tools.build:gradle:3.4.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong From 5e766ec12656a6f9e3206ef42654a6da2183dd18 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Mon, 3 Jun 2019 10:59:32 +0200 Subject: [PATCH 04/38] hide the mensa card value button --- .../mosad/seil0/projectlaogai/MainActivity.kt | 44 +++++-------------- .../projectlaogai/fragments/MensaFragment.kt | 18 +++++++- .../fragments/TimeTableFragment.kt | 2 +- app/src/main/res/layout/fragment_mensa.xml | 3 +- 4 files changed, 31 insertions(+), 36 deletions(-) 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 aa3b13d..6741da6 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt @@ -132,22 +132,13 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte override fun onNavigationItemSelected(item: MenuItem): Boolean { // Handle navigation view item clicks here. - when (item.itemId) { - R.id.nav_home -> { - activeFragment = HomeFragment() - } - R.id.nav_mensa -> { - activeFragment = MensaFragment() - } - R.id.nav_timetable -> { - activeFragment = TimeTableFragment() - } - R.id.nav_moodle -> { - activeFragment = MoodleFragment() - } - R.id.nav_settings -> { - activeFragment = SettingsFragment() - } + activeFragment = when(item.itemId) { + R.id.nav_home -> HomeFragment() + R.id.nav_mensa -> MensaFragment() + R.id.nav_timetable -> TimeTableFragment() + R.id.nav_moodle -> MoodleFragment() + R.id.nav_settings -> SettingsFragment() + else -> HomeFragment() } val fragmentTransaction: FragmentTransaction = supportFragmentManager.beginTransaction() @@ -172,13 +163,12 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte val cal = Calendar.getInstance() + // TODO this will backfire if someone has to update before the server finished updating the timetable at 0001/0101 // timetable sunday workaround cal.time = Date(timetableCacheTime * 1000) - val timetableCacheDay = cal.get(Calendar.DAY_OF_WEEK) - // TODO this will backfire if someone has to update before the server finished updating the timetable at 0001/0101 // update blocking if a) it`s monday and the last cache was not on a monday or b) the cache is older than 6 days - if((currentDay == Calendar.MONDAY && timetableCacheDay != Calendar.MONDAY) || (System.currentTimeMillis() / 1000) - timetableCacheTime > 518400) { + if((currentDay == Calendar.MONDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) || currentTime - timetableCacheTime > 518400) { println("updating timetable after sunday!") val jobA = TCoRAPIController.getTimetable(cCourse.courseName, 0, this) val jobB = TCoRAPIController.getTimetable(cCourse.courseName, 1, this) @@ -188,28 +178,16 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte } - -// //mensa sunday workaround -// cal.time = Date(System.currentTimeMillis()) // reset to current time -// -// // update blocking if it's sunday after 1500 -// if(currentDay == Calendar.SUNDAY && cal.get(Calendar.HOUR_OF_DAY) >= 15) { -// TCoRAPIController.getMensa(this).get() -// } - - // TODO test!! // new sunday bug fix CacheController.readMensa(this) - val mensaUpdateTime = Date(mensaMenu.meta.updateTime * 1000) - cal.time = mensaUpdateTime + cal.time = Date(mensaMenu.meta.updateTime * 1000) // if it's monday and the last cache update was on sunday or is older than 24hr, update blocking if ((currentDay == Calendar.MONDAY && cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) || currentTime - mensaMenu.meta.updateTime > 86400) { - println("update blocking") + println("update mensa blocking") TCoRAPIController.getMensa(this).get() } - // get the cached files val cache = CacheController(this) cache.readStartCache(cCourse.courseName) 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 ee2bbf0..7b0149e 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 @@ -22,10 +22,12 @@ package org.mosad.seil0.projectlaogai.fragments +import android.os.Build import android.os.Bundle import android.view.LayoutInflater 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 @@ -49,12 +51,14 @@ import org.mosad.seil0.projectlaogai.uicomponents.MealLinearLayout class MensaFragment : Fragment() { private lateinit var btnCardValue: FloatingActionButton + private lateinit var scrollViewMensa: ScrollView override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view: View = inflater.inflate(R.layout.fragment_mensa, container, false) btnCardValue = view.findViewById(R.id.btnCardValue) + scrollViewMensa = view.findViewById(R.id.scrollView_Mensa) // init actions initActions() @@ -67,7 +71,6 @@ class MensaFragment : Fragment() { addWeek(mensaMenu.nextWeek, 0) // TODO should we show a info if there is no more food this & next week? - // TODO hide the floating button if we are not on the top end of the scroll pane return view } @@ -82,6 +85,19 @@ class MensaFragment : Fragment() { .show() } + // TODO only works with android m(23) or higher + // hide the btnCardValue if the user is scrolling down + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + scrollViewMensa.setOnScrollChangeListener(object: View.OnScrollChangeListener { + override fun onScrollChange(v: View?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int) { + if (scrollY > oldScrollY) { + btnCardValue.hide() + } else { + btnCardValue.show() + } + } + }) + } } 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 824c706..e841244 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 @@ -49,7 +49,7 @@ import java.util.* */ class TimeTableFragment : Fragment() { - private val formatter = SimpleDateFormat("E dd.MM", Locale.getDefault()) // TODO change to android call when min api is 24 + private val formatter = SimpleDateFormat("E dd.MM", Locale.getDefault()) override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { diff --git a/app/src/main/res/layout/fragment_mensa.xml b/app/src/main/res/layout/fragment_mensa.xml index 010365e..b49b038 100644 --- a/app/src/main/res/layout/fragment_mensa.xml +++ b/app/src/main/res/layout/fragment_mensa.xml @@ -12,7 +12,7 @@ + android:layout_height="match_parent" android:id="@+id/scrollView_Mensa"> + Date: Mon, 3 Jun 2019 12:05:33 +0200 Subject: [PATCH 05/38] don't us deprecated tcor api requests --- .../mosad/seil0/projectlaogai/controller/TCoRAPIController.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/TCoRAPIController.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/TCoRAPIController.kt index af16d67..8c22ec9 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/TCoRAPIController.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/TCoRAPIController.kt @@ -80,7 +80,7 @@ class TCoRAPIController(cont: Context) { * get the json object from tcor api and write it as file (cache) */ fun getCoursesList() = doAsync { - val url = URL("https://tcor.mosad.xyz/courses") + val url = URL("https://tcor.mosad.xyz/courseList") val file = File(context.filesDir, "courses.json") // read data from the API From 4838c9406c13124e3e430c8363c17ad95cd5eaab Mon Sep 17 00:00:00 2001 From: Seil0 Date: Thu, 6 Jun 2019 23:36:55 +0200 Subject: [PATCH 06/38] fastlane description spelling fixes --- fastlane/metadata/android/de/full_description.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fastlane/metadata/android/de/full_description.txt b/fastlane/metadata/android/de/full_description.txt index 8acd636..e5910f8 100644 --- a/fastlane/metadata/android/de/full_description.txt +++ b/fastlane/metadata/android/de/full_description.txt @@ -1,7 +1,7 @@ -ProjectLaogai ist eine App um den Stundenplan und das Mensa-Essen der Hochschule Offenburg anzuzeigen. +ProjectLaogai ist eine App um den Vorlesungsplan und den Mensa Speiseplan der Hochschule Offenburg anzuzeigen. Features: -* schaue was es diese und nächste WOche in der Mensa zu Essen gibt -* schaue dir deinen Stundenplan an +* schaue was es diese und nächste Woche in der Mensa zu Essen gibt +* schaue dir deinen Vorlesungsplan an * öffne moodle direkt in der App * viele lustige Bugs From 01db6bb451b86bd6253a77cdd2284491b3ef7872 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sat, 8 Jun 2019 23:14:55 +0200 Subject: [PATCH 07/38] don't use the faBtn in MensaFragment, use it in TimetableFragment --- .../projectlaogai/fragments/MensaFragment.kt | 39 +------------- .../fragments/TimeTableFragment.kt | 54 ++++++++++++++----- app/src/main/res/layout/fragment_mensa.xml | 8 --- .../main/res/layout/fragment_timetable.xml | 11 +++- .../metadata/android/de/full_description.txt | 2 +- 5 files changed, 52 insertions(+), 62 deletions(-) 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 7b0149e..4c3f64b 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 @@ -22,15 +22,11 @@ package org.mosad.seil0.projectlaogai.fragments -import android.os.Build import android.os.Bundle import android.view.LayoutInflater 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_mensa.* import org.jetbrains.anko.doAsync import org.jetbrains.anko.uiThread @@ -47,21 +43,16 @@ import org.mosad.seil0.projectlaogai.uicomponents.MealLinearLayout /** * The mensa controller class * contains all needed parts to display and the mensa detail screen + * TODO investigate reading the mensa card value via nfc in a background task, show value if card detected */ class MensaFragment : Fragment() { - private lateinit var btnCardValue: FloatingActionButton - private lateinit var scrollViewMensa: ScrollView - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view: View = inflater.inflate(R.layout.fragment_mensa, container, false) - btnCardValue = view.findViewById(R.id.btnCardValue) - scrollViewMensa = view.findViewById(R.id.scrollView_Mensa) - // init actions - initActions() + refreshAction() // add the current week (week starts on sunday) val dayCurrent = if(NotRetardedCalendar().getDayOfWeekIndex() == 6) 0 else NotRetardedCalendar().getDayOfWeekIndex() @@ -75,32 +66,6 @@ class MensaFragment : Fragment() { return view } - private fun initActions() { - refreshAction() // must be async - - btnCardValue.setOnClickListener { - MaterialDialog(context!!) - .title(text = "Mensa-Karte") - .message(text = "das aktuelle Guthaben beträgt\n\n13,70€") - .show() - } - - // TODO only works with android m(23) or higher - // hide the btnCardValue if the user is scrolling down - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - scrollViewMensa.setOnScrollChangeListener(object: View.OnScrollChangeListener { - override fun onScrollChange(v: View?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int) { - if (scrollY > oldScrollY) { - btnCardValue.hide() - } else { - btnCardValue.show() - } - } - }) - } - - } - /** * add all menus from dayStart to Friday for a given week * @param menusWeek menu of type MensaWeek you want to add 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 e841244..5fdd17b 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,12 +22,15 @@ package org.mosad.seil0.projectlaogai.fragments +import android.os.Build import android.os.Bundle import android.view.LayoutInflater 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 org.jetbrains.anko.doAsync import org.jetbrains.anko.uiThread @@ -50,13 +53,17 @@ import java.util.* class TimeTableFragment : Fragment() { private val formatter = SimpleDateFormat("E dd.MM", Locale.getDefault()) + private lateinit var scrollViewTimetable: ScrollView + private lateinit var faBtnAddLesson: FloatingActionButton override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view: View = inflater.inflate(R.layout.fragment_timetable, container, false) + scrollViewTimetable = view.findViewById(R.id.scrollView_Timetable) + faBtnAddLesson = view.findViewById(R.id.faBtnAddLesson) // init actions - refreshAction() + initActions() if (timetables[0].days.isNotEmpty() && timetables[1].days.isNotEmpty()) { addInitWeeks() @@ -70,6 +77,38 @@ class TimeTableFragment : Fragment() { return view } + /** + * initialize the actions + */ + private fun initActions() = doAsync { + + uiThread { + refreshLayout_Timetable.setOnRefreshListener { + updateTimetableScreen() + } + + faBtnAddLesson.setOnClickListener { + MaterialDialog(context!!) + .title(text = "Vorlesung hinzufügen") + .message(text = "wähle einen Studiengang aus:\n\nWähle eine Vorlesung aus: \n\n Diese Funktion ist noch nicht verfügbar") + .show() + } + + // TODO only works with android m(23) or higher + // hide the btnCardValue if the user is scrolling down + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + scrollViewTimetable.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY -> + if (scrollY > oldScrollY) { + faBtnAddLesson.hide() + } else { + faBtnAddLesson.show() + } + } + } + } + + } + /** * add the current and next weeks lessons */ @@ -124,19 +163,6 @@ class TimeTableFragment : Fragment() { } } - /** - * initialize the refresh action - */ - private fun refreshAction() = doAsync { - uiThread { - // set the refresh listener - refreshLayout_Timetable.setOnRefreshListener { - updateTimetableScreen() - } - - } - } - private fun updateTimetableScreen() = doAsync { // update the cache TCoRAPIController.getTimetable(cCourse.courseName, 0, context!!).get() // blocking since we want the new data diff --git a/app/src/main/res/layout/fragment_mensa.xml b/app/src/main/res/layout/fragment_mensa.xml index b49b038..b972be0 100644 --- a/app/src/main/res/layout/fragment_mensa.xml +++ b/app/src/main/res/layout/fragment_mensa.xml @@ -23,13 +23,5 @@ - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_timetable.xml b/app/src/main/res/layout/fragment_timetable.xml index 86982a6..ea2f788 100644 --- a/app/src/main/res/layout/fragment_timetable.xml +++ b/app/src/main/res/layout/fragment_timetable.xml @@ -1,6 +1,6 @@ @@ -12,7 +12,7 @@ + android:layout_height="match_parent" android:id="@+id/scrollView_Timetable"> + \ No newline at end of file diff --git a/fastlane/metadata/android/de/full_description.txt b/fastlane/metadata/android/de/full_description.txt index e5910f8..f1f25c7 100644 --- a/fastlane/metadata/android/de/full_description.txt +++ b/fastlane/metadata/android/de/full_description.txt @@ -1,4 +1,4 @@ -ProjectLaogai ist eine App um den Vorlesungsplan und den Mensa Speiseplan der Hochschule Offenburg anzuzeigen. +ProjectLaogai ist eine App um den Vorlesungsplan und den Mensa-Speiseplan der Hochschule Offenburg anzuzeigen. Features: * schaue was es diese und nächste Woche in der Mensa zu Essen gibt From a055f59cc8d1f0aafecc51641ac9f97f9209e9b2 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Mon, 24 Jun 2019 22:41:45 +0200 Subject: [PATCH 08/38] added a dark theme, see #15 * the app now needs sdkversion 23 now an min --- app/build.gradle | 8 +- .../mosad/seil0/projectlaogai/MainActivity.kt | 46 +++--- .../controller/CacheController.kt | 4 + .../projectlaogai/fragments/HomeFragment.kt | 103 +++++++------ .../fragments/SettingsFragment.kt | 22 +++ .../fragments/TimeTableFragment.kt | 15 +- .../main/res/drawable/background_splash.xml | 4 +- app/src/main/res/layout/cardview_day.xml | 2 +- app/src/main/res/layout/fragment_home.xml | 3 +- app/src/main/res/layout/fragment_mensa.xml | 9 +- app/src/main/res/layout/fragment_settings.xml | 141 ++++++++++++------ .../main/res/layout/fragment_timetable.xml | 6 +- .../main/res/layout/linearlayout_lesson.xml | 8 +- app/src/main/res/layout/linearlayout_meal.xml | 6 +- app/src/main/res/values/attrs.xml | 9 ++ app/src/main/res/values/colors.xml | 27 ++-- app/src/main/res/values/styles.xml | 21 ++- 17 files changed, 271 insertions(+), 163 deletions(-) create mode 100644 app/src/main/res/values/attrs.xml diff --git a/app/build.gradle b/app/build.gradle index f5f8ff9..bdb9ee0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,10 +10,10 @@ android { compileSdkVersion 28 defaultConfig { applicationId "org.mosad.seil0.projectlaogai" - minSdkVersion 21 + minSdkVersion 23 targetSdkVersion 28 - versionCode 13 - versionName "0.4.90" + versionCode 14 + versionName "0.4.91" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "build_time", buildTime() setProperty("archivesBaseName", "projectlaogai-$versionName") @@ -37,7 +37,7 @@ dependencies { implementation 'org.jetbrains.anko:anko-commons:0.10.8' implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0' implementation 'com.google.android.material:material:1.0.0' implementation 'com.google.code.gson:gson:2.8.5' 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 6741da6..e0ad511 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt @@ -61,26 +61,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte // load mensa, timetable and color load() - - // If we haven't set any defaults, do that now - if (Aesthetic.isFirstTime) { - // this is executed on the first app start, use this to show tutorial etc. - Aesthetic.config { - colorPrimary(Color.BLACK) - colorPrimaryDark(Color.BLACK) - colorAccent(Color.parseColor("#3F51B5")) - apply() - } - - SettingsFragment().selectCourse(this) - } else { - Aesthetic.config { - colorPrimary(cColorPrimary) - colorPrimaryDark(cColorPrimary) - colorAccent(cColorAccent) - apply() - } - } + initAesthetic() //init home fragment val fragmentTransaction: FragmentTransaction = supportFragmentManager.beginTransaction() @@ -146,6 +127,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte fragmentTransaction.commit() drawer_layout.closeDrawer(GravityCompat.START) + return true } @@ -208,4 +190,28 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte println("startup completed in $startupTime ms") } + private fun initAesthetic() { + // If we haven't set any defaults, do that now + if (Aesthetic.isFirstTime) { + // this is executed on the first app start, use this to show tutorial etc. + Aesthetic.config { + activityTheme(R.style.AppTheme) + colorPrimary(Color.BLACK) + colorPrimaryDark(Color.BLACK) + colorAccent(Color.parseColor("#3f51b5")) + apply() + } + + SettingsFragment().selectCourse(this) + } else { + Aesthetic.config { +// activityTheme(R.style.AppTheme_Light) + colorPrimary(cColorPrimary) + colorPrimaryDark(cColorPrimary) + colorAccent(cColorAccent) + apply() + } + } + } + } diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/CacheController.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/CacheController.kt index 2bed4e2..109e8a4 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/CacheController.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/CacheController.kt @@ -37,6 +37,10 @@ class CacheController(cont: Context) { private val context = cont + init { + // TODO move cache check here + } + companion object { var coursesList = ArrayList() var timetables = ArrayList() 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 e8b2212..68ad76f 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 @@ -60,7 +60,7 @@ class HomeFragment : Fragment() { val view: View = inflater.inflate(R.layout.fragment_home, container, false) addMensaMenu().get() - addTimeTable() + addTimeTable().get() // Inflate the layout for this fragment return view @@ -75,42 +75,48 @@ class HomeFragment : Fragment() { val cal = Calendar.getInstance() val mensaCardView = DayCardView(context!!) + + uiThread { - if (cal.get(Calendar.HOUR_OF_DAY) < 15) { - dayMeals = mensaMenu.currentWeek.days[NotRetardedCalendar().getDayOfWeekIndex()].meals - mensaCardView.setDayHeading(resources.getString(R.string.today_date, formatter.format(cal.time))) - } else { - dayMeals = mensaMenu.currentWeek.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")) { - - val meal1Layout = MealLinearLayout(context) - meal1Layout.setMeal(dayMeals[i]) - mensaCardView.getLinLayoutDay().addView(meal1Layout) - - val meal2Layout = MealLinearLayout(context) - meal2Layout.setMeal(dayMeals[i + 1]) - meal2Layout.disableDivider() - mensaCardView.getLinLayoutDay().addView(meal2Layout) - - break@loop - } + if (isAdded) { + if (cal.get(Calendar.HOUR_OF_DAY) < 15) { + dayMeals = mensaMenu.currentWeek.days[NotRetardedCalendar().getDayOfWeekIndex()].meals + mensaCardView.setDayHeading(activity!!.resources.getString(R.string.today_date, formatter.format(cal.time))) + } else { + dayMeals = mensaMenu.currentWeek.days[NotRetardedCalendar().getTomorrowWeekIndex()].meals + cal.add(Calendar.DATE, 1) + mensaCardView.setDayHeading(activity!!.resources.getString(R.string.tomorrow_date, formatter.format(cal.time))) } - } else { - mensaCardView.getLinLayoutDay().addView(getNoCard(resources.getString(R.string.mensa_closed))) + 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")) { + + val meal1Layout = MealLinearLayout(context) + meal1Layout.setMeal(dayMeals[i]) + mensaCardView.getLinLayoutDay().addView(meal1Layout) + + val meal2Layout = MealLinearLayout(context) + meal2Layout.setMeal(dayMeals[i + 1]) + meal2Layout.disableDivider() + mensaCardView.getLinLayoutDay().addView(meal2Layout) + + break@loop + } + } + + } else { + mensaCardView.getLinLayoutDay().addView(getNoCard(resources.getString(R.string.mensa_closed))) + } + + linLayout_Home.addView(mensaCardView) } - linLayout_Home.addView(mensaCardView) } + } /** @@ -123,29 +129,30 @@ class HomeFragment : Fragment() { uiThread { - if (timetables.isNotEmpty() && dayIndex < 6) { + if (isAdded) { + if (timetables.isNotEmpty() && dayIndex < 6) { - // first check the current day - dayCardView = addDayTimetable(timetables[0].days[dayIndex]) - dayCardView.setDayHeading(resources.getString(R.string.today_date, formatter.format(cal.time))) + // first check the current day + dayCardView = addDayTimetable(timetables[0].days[dayIndex]) + dayCardView.setDayHeading(resources.getString(R.string.today_date, formatter.format(cal.time))) - // if there are no lessons try to find the next day with a lesson - if (dayCardView.getLinLayoutDay().childCount <= 1) - dayCardView = findNextDay(0, dayIndex + 1) + // if there are no lessons try to find the next day with a lesson + if (dayCardView.getLinLayoutDay().childCount <= 1) + dayCardView = findNextDay(0, dayIndex + 1) - linLayout_Home.addView(dayCardView) - } else if (dayIndex == 6) { - // if that's the case it's sunday - dayCardView = findNextDay(1, 0) - linLayout_Home.addView(dayCardView) - } else { - MaterialDialog(context!!) - .title(R.string.error) - .message(R.string.timetable_error) - .show() - // TODO log the error and send feedback + linLayout_Home.addView(dayCardView) + } else if (dayIndex == 6) { + // if that's the case it's sunday + dayCardView = findNextDay(1, 0) + linLayout_Home.addView(dayCardView) + } else { + MaterialDialog(context!!) + .title(R.string.error) + .message(R.string.timetable_error) + .show() + // TODO log the error and send feedback + } } - } } 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 972e243..365e87b 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 @@ -50,6 +50,7 @@ import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.course import org.mosad.seil0.projectlaogai.controller.TCoRAPIController import org.mosad.seil0.projectlaogai.hsoparser.DataTypes import java.util.* +import android.util.TypedValue /** * The settings controller class @@ -87,6 +88,14 @@ class SettingsFragment : Fragment() { txtView_Course.text = cCourse.courseName txtView_AboutDesc.text = resources.getString(R.string.about_version, BuildConfig.VERSION_NAME, getString(R.string.build_time)) switch_buffet.isChecked = cShowBuffet // init switch + + val outValue = TypedValue() + activity!!.theme.resolveAttribute(R.attr.themeName, outValue, true) + if (outValue.string == "dark") { + switch_buffet.setTextColor(activity!!.resources.getColor(R.color.textPrimaryDark, activity!!.theme)) + } else { + switch_buffet.setTextColor(activity!!.resources.getColor(R.color.textPrimaryLight, activity!!.theme)) + } } /** @@ -95,6 +104,19 @@ class SettingsFragment : Fragment() { private fun initActions() { linLayoutUser.setOnClickListener { // open a new dialog + // TODO move and save +// val outValue = TypedValue() +// activity!!.theme.resolveAttribute(R.attr.themeName, outValue, true) +// if (outValue.string == "dark") { +// Aesthetic.config { +// activityTheme(R.style.AppTheme_Light) +// } +// } else { +// Aesthetic.config { +// activityTheme(R.style.AppTheme_Dark) +// } +// } + } linLayoutCourse.setOnClickListener { 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 5fdd17b..90482dd 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.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -94,17 +93,15 @@ class TimeTableFragment : Fragment() { .show() } - // TODO only works with android m(23) or higher // hide the btnCardValue if the user is scrolling down - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - scrollViewTimetable.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY -> - if (scrollY > oldScrollY) { - faBtnAddLesson.hide() - } else { - faBtnAddLesson.show() - } + scrollViewTimetable.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY -> + if (scrollY > oldScrollY) { + faBtnAddLesson.hide() + } else { + faBtnAddLesson.show() } } + } } diff --git a/app/src/main/res/drawable/background_splash.xml b/app/src/main/res/drawable/background_splash.xml index f9df9fc..9de6881 100644 --- a/app/src/main/res/drawable/background_splash.xml +++ b/app/src/main/res/drawable/background_splash.xml @@ -3,9 +3,7 @@ - - - + diff --git a/app/src/main/res/layout/cardview_day.xml b/app/src/main/res/layout/cardview_day.xml index 8c27625..4ce5d7a 100644 --- a/app/src/main/res/layout/cardview_day.xml +++ b/app/src/main/res/layout/cardview_day.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardUseCompatPadding="true" - app:cardElevation="5dp" app:cardBackgroundColor="@color/themeSecondary" + app:cardElevation="5dp" app:cardBackgroundColor="?themeSecondary" > + tools:context=".fragments.HomeFragment" + android:background="?themePrimary"> + tools:context=".fragments.MensaFragment" + android:background="?themePrimary"> + android:layout_height="match_parent" + android:id="@+id/scrollView_Mensa"> diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 6429411..7890591 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -1,9 +1,11 @@ + tools:context=".fragments.SettingsFragment" + android:background="?themePrimary"> + android:layout_height="match_parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + > + android:layout_marginTop="9dp" + android:id="@+id/cardView_Info" + app:cardElevation="5dp" + app:cardUseCompatPadding="true" + app:cardBackgroundColor="?themeSecondary"> + android:textSize="18sp" + android:textStyle="bold" + android:fontFamily="sans-serif" + android:layout_margin="7dp" + android:textColor="?colorAccent"/> + android:layout_height="wrap_content" + android:padding="7dp" + android:id="@+id/linLayout_User"> + android:layout_height="wrap_content" + android:id="@+id/txtView_User" + android:textSize="16sp" + android:textStyle="bold" + /> + android:layout_height="wrap_content" + android:id="@+id/txtView_UserDesc"/> + android:layout_height="wrap_content" + android:id="@+id/txtView_CourseDesc"/> + android:layout_height="wrap_content" + android:id="@+id/txtView_About" + android:textStyle="bold" + android:textSize="16sp" + /> + android:layout_height="wrap_content" + android:id="@+id/txtView_AboutDesc"/> + + android:id="@+id/cardView_Settings" + app:cardElevation="5dp" + app:cardUseCompatPadding="true" + app:cardBackgroundColor="?themeSecondary"> + android:layout_height="wrap_content" + android:id="@+id/linLayout_Settings" + android:padding="7dp"> + android:textSize="18sp" + android:textColor="?colorAccent" + android:textStyle="bold" + android:paddingTop="3dp"/> + android:clickable="true" + android:id="@+id/linLayout_PrimaryColor" + android:focusable="true"> + android:layout_height="wrap_content" + android:id="@+id/txtView_PrimaryColor" + android:textSize="16sp" + android:textStyle="bold" + /> + android:layout_height="wrap_content" + android:id="@+id/txtView_PrimaryColorDesc"/> @@ -145,7 +183,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical|end" - android:clickable="true" android:id="@+id/linLayout_AccentColor" android:focusable="true"> + android:clickable="true" + android:id="@+id/linLayout_AccentColor" + android:focusable="true"> + android:layout_height="wrap_content" + android:id="@+id/txtView_AccentColor" + android:textSize="16sp" + android:textStyle="bold" + /> + android:layout_height="wrap_content" + android:id="@+id/txtView_AccentColorDesc"/> + android:textStyle="bold" + android:text="@string/show_buffet" + /> diff --git a/app/src/main/res/layout/fragment_timetable.xml b/app/src/main/res/layout/fragment_timetable.xml index ea2f788..812720e 100644 --- a/app/src/main/res/layout/fragment_timetable.xml +++ b/app/src/main/res/layout/fragment_timetable.xml @@ -1,9 +1,10 @@ + tools:context=".fragments.TimeTableFragment" + android:background="?themePrimary"> diff --git a/app/src/main/res/layout/linearlayout_lesson.xml b/app/src/main/res/layout/linearlayout_lesson.xml index 4012441..d51021a 100644 --- a/app/src/main/res/layout/linearlayout_lesson.xml +++ b/app/src/main/res/layout/linearlayout_lesson.xml @@ -11,7 +11,7 @@ + android:textSize="15sp"/> + /> + /> \ No newline at end of file diff --git a/app/src/main/res/layout/linearlayout_meal.xml b/app/src/main/res/layout/linearlayout_meal.xml index 15752aa..61d7a32 100644 --- a/app/src/main/res/layout/linearlayout_meal.xml +++ b/app/src/main/res/layout/linearlayout_meal.xml @@ -8,16 +8,16 @@ android:text="@string/meal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/txtView_MealHeading" android:textSize="18sp" - android:textColor="@color/textPrimary" android:textAlignment="center" android:paddingBottom="5dp" + android:textAlignment="center" android:paddingBottom="5dp" android:textStyle="bold"/> + android:textAlignment="center"/> \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 0000000..da9cee6 --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 7f52220..92bab79 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -2,28 +2,27 @@ #000000 #000000 - #3F51B5 - #FFFFFF - - #FFFFFF - #FFFFFF - #FAFAFA + #3f51b5 + #ffffff + #ffffff + #ffffff #000000 #818181 - #FFFFFF - #E0E0E0 - #000000 - #818181 - #000000 #303030 #424242 + #ffffff + #e0e0e0 + #232323 + + #ffffff + #ffffff + #000000 + #818181 + #e0e0e0 - #FFFFFF - #FFFFFF - #424242 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index a27a731..1bd2b68 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,13 +1,30 @@ - + + + + + + + + From 75168c668867efc2a0fcb511057a4abfc8043348 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sun, 25 Aug 2019 22:45:23 +0200 Subject: [PATCH 25/38] some more logging and version 0.4.99 (RC1) --- app/build.gradle | 2 +- .../controller/TCoRAPIController.kt | 85 ++++++++++++------- .../metadata/android/en-US/chnagelogs/14.txt | 2 +- 3 files changed, 54 insertions(+), 35 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9b4a7f1..cdb3cec 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { minSdkVersion 23 targetSdkVersion 28 versionCode 14 - versionName "0.4.95" + versionName "0.4.99" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "build_time", buildTime() setProperty("archivesBaseName", "projectlaogai-$versionName") diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/TCoRAPIController.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/TCoRAPIController.kt index 03a05dd..2d03274 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/TCoRAPIController.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/TCoRAPIController.kt @@ -23,6 +23,7 @@ package org.mosad.seil0.projectlaogai.controller import android.content.Context +import android.util.Log import org.jetbrains.anko.doAsync import org.json.JSONObject import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.coursesCacheTime @@ -32,69 +33,87 @@ import java.io.BufferedWriter import java.io.File import java.io.FileWriter import java.net.URL +import kotlin.Exception class TCoRAPIController { companion object { + private const val className = "TCoRAPIController" + private const val tcorBaseURL = "https://tcor.mosad.xyz" /** * get the json object from tcor api and write it as file (cache) */ fun getCoursesList(context: Context) = doAsync { - val url = URL("https://tcor.mosad.xyz/courseList") - val file = File(context.filesDir, "courses.json") + try { + val url = URL("$tcorBaseURL/courseList") + val file = File(context.filesDir, "courses.json") - // read data from the API - val coursesObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) + // read data from the API + val coursesObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) - // write the json object to a file - val writer = BufferedWriter(FileWriter(file)) - writer.write(coursesObject.toString()) - writer.close() + // write the json object to a file + val writer = BufferedWriter(FileWriter(file)) + writer.write(coursesObject.toString()) + writer.close() + + // update cache time + coursesCacheTime = System.currentTimeMillis() / 1000 + PreferencesController.save(context) + } catch (ex: Exception) { + Log.e(className, "failed to get /courseList", ex) + } - // update cache time - coursesCacheTime = System.currentTimeMillis() / 1000 - PreferencesController.save(context) } /** * get the json object from tcor api and write it as file (cache) */ fun getMensa(context: Context) = doAsync { - val url = URL("https://tcor.mosad.xyz/mensamenu") - val file = File(context.filesDir, "mensa.json") + try { + val url = URL("$tcorBaseURL/mensamenu") + val file = File(context.filesDir, "mensa.json") - // read data from the API - val mensaObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) + // read data from the API + val mensaObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) - // write the json object to a file - val writer = BufferedWriter(FileWriter(file)) - writer.write(mensaObject.toString()) - writer.close() + // write the json object to a file + val writer = BufferedWriter(FileWriter(file)) + writer.write(mensaObject.toString()) + writer.close() + + // update cache time + mensaCacheTime = System.currentTimeMillis() / 1000 + PreferencesController.save(context) + } catch (ex: Exception) { + Log.e(className, "failed to get /mensamenu", ex) + } - // update cache time - mensaCacheTime = System.currentTimeMillis() / 1000 - PreferencesController.save(context) } /** * get the json object from tcor api and write it as file (cache) */ fun getTimetable(courseName: String, week: Int, context: Context) = doAsync { - val url = URL("https://tcor.mosad.xyz/timetable?courseName=$courseName&week=$week") - val file = File(context.filesDir, "timetable-$courseName-$week.json") + try { + val url = URL("$tcorBaseURL/timetable?courseName=$courseName&week=$week") + val file = File(context.filesDir, "timetable-$courseName-$week.json") - // read data from the API - val mensaObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) + // read data from the API + val mensaObject = JSONObject(url.readText()) //JSONObject(inReader.readLine()) - // write the json object to a file - val writer = BufferedWriter(FileWriter(file)) - writer.write(mensaObject.toString()) - writer.close() + // write the json object to a file + val writer = BufferedWriter(FileWriter(file)) + writer.write(mensaObject.toString()) + writer.close() + + // update cache time + timetableCacheTime = System.currentTimeMillis() / 1000 + PreferencesController.save(context) + } catch (ex: Exception) { + Log.e(className, "failed to get /timetable", ex) + } - // update cache time - timetableCacheTime = System.currentTimeMillis() / 1000 - PreferencesController.save(context) } } diff --git a/fastlane/metadata/android/en-US/chnagelogs/14.txt b/fastlane/metadata/android/en-US/chnagelogs/14.txt index 81933ed..cc576b3 100644 --- a/fastlane/metadata/android/en-US/chnagelogs/14.txt +++ b/fastlane/metadata/android/en-US/chnagelogs/14.txt @@ -1,6 +1,6 @@ This release 0.5.0 is called "artistical Apollon". -* new: it's now possible to choos a theme (light, dark or balck) +* new: it's now possible to choose a theme (light, dark or black) * new: you can now check your current mensa card balance * change: updated some libs, updated kotlin to 1.3.41 * fix: the mensa should now show the correct meals on sunday/monday From a23f7c9212002c554fec75f923686aeb20b9f04c Mon Sep 17 00:00:00 2001 From: Seil0 Date: Fri, 30 Aug 2019 14:09:59 +0200 Subject: [PATCH 26/38] update to release 0.5.0 --- app/build.gradle | 2 +- fastlane/metadata/android/{de => de-DE}/full_description.txt | 1 + fastlane/metadata/android/{de => de-DE}/short_description.txt | 0 .../metadata/android/en-US/{chnagelogs => changelogs}/14.txt | 0 fastlane/metadata/android/en-US/full_description.txt | 1 + 5 files changed, 3 insertions(+), 1 deletion(-) rename fastlane/metadata/android/{de => de-DE}/full_description.txt (83%) rename fastlane/metadata/android/{de => de-DE}/short_description.txt (100%) rename fastlane/metadata/android/en-US/{chnagelogs => changelogs}/14.txt (100%) diff --git a/app/build.gradle b/app/build.gradle index cdb3cec..f83b457 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { minSdkVersion 23 targetSdkVersion 28 versionCode 14 - versionName "0.4.99" + versionName "0.5.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "build_time", buildTime() setProperty("archivesBaseName", "projectlaogai-$versionName") diff --git a/fastlane/metadata/android/de/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt similarity index 83% rename from fastlane/metadata/android/de/full_description.txt rename to fastlane/metadata/android/de-DE/full_description.txt index f1f25c7..71eca07 100644 --- a/fastlane/metadata/android/de/full_description.txt +++ b/fastlane/metadata/android/de-DE/full_description.txt @@ -3,5 +3,6 @@ ProjectLaogai ist eine App um den Vorlesungsplan und den Mensa-Speiseplan der Ho Features: * schaue was es diese und nächste Woche in der Mensa zu Essen gibt * schaue dir deinen Vorlesungsplan an +* lass dir das aktuelle Guthaben der Mensakarte anzeigen * öffne moodle direkt in der App * viele lustige Bugs diff --git a/fastlane/metadata/android/de/short_description.txt b/fastlane/metadata/android/de-DE/short_description.txt similarity index 100% rename from fastlane/metadata/android/de/short_description.txt rename to fastlane/metadata/android/de-DE/short_description.txt diff --git a/fastlane/metadata/android/en-US/chnagelogs/14.txt b/fastlane/metadata/android/en-US/changelogs/14.txt similarity index 100% rename from fastlane/metadata/android/en-US/chnagelogs/14.txt rename to fastlane/metadata/android/en-US/changelogs/14.txt diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index aa3f7ce..c080ed0 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -3,5 +3,6 @@ ProjectLaogai is an app to access the timetable and the mensa menu of Hochschule Features: * check out the mensa menu of this and next week * access your timetable +* check the current balance of your mensa card * open moodle * probably some funny bugs From 7550fcfd22efc97c76bc27686c062521a67ed21d Mon Sep 17 00:00:00 2001 From: Jannik Seiler Date: Fri, 30 Aug 2019 14:12:17 +0200 Subject: [PATCH 27/38] Update 'README.md' --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 347da9a..246a159 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ ProjectLaogai is a app to access the timetable and the mensa menu of Hochschule ## Features * check out the mensa menu of this and next week * access your timetable +* check the current balance of your mensa card * open moodle * probably some funny bugs From 4ce37b3dcfcdce80db71f7b561f3f5449dee0edf Mon Sep 17 00:00:00 2001 From: Seil0 Date: Fri, 30 Aug 2019 14:17:07 +0200 Subject: [PATCH 28/38] updated desfire legal notes --- app/src/main/java/com/codebutler/farebot/Utils.kt | 5 +++-- .../java/com/codebutler/farebot/card/desfire/DesfireFile.kt | 3 ++- .../codebutler/farebot/card/desfire/DesfireFileSettings.kt | 5 +++-- .../farebot/card/desfire/DesfireManufacturingData.kt | 5 +++-- .../com/codebutler/farebot/card/desfire/DesfireProtocol.kt | 5 +++-- .../com/codebutler/farebot/card/desfire/DesfireRecord.kt | 3 ++- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/codebutler/farebot/Utils.kt b/app/src/main/java/com/codebutler/farebot/Utils.kt index f8c721b..5abf037 100644 --- a/app/src/main/java/com/codebutler/farebot/Utils.kt +++ b/app/src/main/java/com/codebutler/farebot/Utils.kt @@ -1,7 +1,8 @@ -/* - * Utils.java +/** + * Utils.kt * * Copyright (C) 2011 Eric Butler + * Copyright (C) 2019 * * Authors: * Eric Butler diff --git a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireFile.kt b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireFile.kt index 322b59e..cb70096 100644 --- a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireFile.kt +++ b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireFile.kt @@ -1,7 +1,8 @@ /** - * DesfireFile.java + * DesfireFile.kt * * Copyright (C) 2011 Eric Butler + * Copyright (C) 2019 * * Authors: * Eric Butler diff --git a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireFileSettings.kt b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireFileSettings.kt index f81599f..5e1266d 100644 --- a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireFileSettings.kt +++ b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireFileSettings.kt @@ -1,7 +1,8 @@ -/* - * DesfireFileSettings.java +/** + * DesfireFileSettings.kt * * Copyright (C) 2011 Eric Butler + * Copyright (C) 2019 * * Authors: * Eric Butler diff --git a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireManufacturingData.kt b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireManufacturingData.kt index 76ee098..cbbbd56 100644 --- a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireManufacturingData.kt +++ b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireManufacturingData.kt @@ -1,7 +1,8 @@ -/* - * DesfireManufacturingData.java +/** + * DesfireManufacturingData.kt * * Copyright (C) 2011 Eric Butler + * Copyright (C) 2019 * * Authors: * Eric Butler diff --git a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireProtocol.kt b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireProtocol.kt index e78a521..e205734 100644 --- a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireProtocol.kt +++ b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireProtocol.kt @@ -1,7 +1,8 @@ -/* - * DesfireProtocol.java +/** + * DesfireProtocol.kt * * Copyright (C) 2011 Eric Butler + * Copyright (C) 2019 * * Authors: * Eric Butler diff --git a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireRecord.kt b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireRecord.kt index d3989a6..b328183 100644 --- a/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireRecord.kt +++ b/app/src/main/java/com/codebutler/farebot/card/desfire/DesfireRecord.kt @@ -1,7 +1,8 @@ /* - * DesfireRecord.java + * DesfireRecord.kt * * Copyright (C) 2011 Eric Butler + * Copyright (C) 2019 * * Authors: * Eric Butler From 2f5b2a65797394a78fe370dd0120679e00cb0ae9 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sat, 7 Sep 2019 21:01:17 +0200 Subject: [PATCH 29/38] added drone ci * updated gradle wrapper to gradle 5.6.2 --- .drone.yml | 9 +++++++++ gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- gradlew.bat | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..cfb7155 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,9 @@ +kind: pipeline +name: default + +steps: +- name: assembleRelease + image: gradle:jdk8 + commands: + - gradle assembleRelease + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4b7e1f3..7c4388a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index b0d6d0a..8e25e6c 100755 --- a/gradlew +++ b/gradlew @@ -7,7 +7,7 @@ # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, diff --git a/gradlew.bat b/gradlew.bat index 15e1ee3..24467a1 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -5,7 +5,7 @@ @rem you may not use this file except in compliance with the License. @rem You may obtain a copy of the License at @rem -@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem https://www.apache.org/licenses/LICENSE-2.0 @rem @rem Unless required by applicable law or agreed to in writing, software @rem distributed under the License is distributed on an "AS IS" BASIS, From bd49e482e29fe58576b14f020067200e1f6e33eb Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sat, 7 Sep 2019 21:06:41 +0200 Subject: [PATCH 30/38] updated some libs * appcompat 1.0.2 -> 1.1.0 * material-dialogs 3.1.0 -> 3.1.1 --- app/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f83b457..21666e9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -54,15 +54,15 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation 'org.jetbrains.anko:anko-commons:0.10.8' - implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0' implementation 'com.google.android.material:material:1.0.0' implementation 'com.google.code.gson:gson:2.8.5' implementation 'com.afollestad:aesthetic:1.0.0-beta05' - implementation 'com.afollestad.material-dialogs:core:3.1.0' - implementation 'com.afollestad.material-dialogs:color:3.1.0' + implementation 'com.afollestad.material-dialogs:core:3.1.1' + implementation 'com.afollestad.material-dialogs:color:3.1.1' implementation 'de.psdev.licensesdialog:licensesdialog:2.1.0' implementation 'org.apache.commons:commons-lang3:3.9' From b9ca18044cdae0f0915660c0d6fc264ced290e67 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sat, 7 Sep 2019 21:10:51 +0200 Subject: [PATCH 31/38] drone use gradle test instead of assembleRelease --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index cfb7155..586fd86 100644 --- a/.drone.yml +++ b/.drone.yml @@ -2,8 +2,8 @@ kind: pipeline name: default steps: -- name: assembleRelease +- name: test image: gradle:jdk8 commands: - - gradle assembleRelease + - gradle test From 522f31e0779abce6226ab621a5d790260e0d6dc5 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sun, 8 Sep 2019 20:30:03 +0200 Subject: [PATCH 32/38] added new screenshots --- .drone.yml | 4 ++-- .../ProjectLaogai_Mensa_dark.png | Bin 0 -> 155113 bytes .../ProjectLaogai_Settings_dark.png | Bin 0 -> 130815 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/ProjectLaogai_Mensa_dark.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/ProjectLaogai_Settings_dark.png diff --git a/.drone.yml b/.drone.yml index 586fd86..cfb7155 100644 --- a/.drone.yml +++ b/.drone.yml @@ -2,8 +2,8 @@ kind: pipeline name: default steps: -- name: test +- name: assembleRelease image: gradle:jdk8 commands: - - gradle test + - gradle assembleRelease diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/ProjectLaogai_Mensa_dark.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/ProjectLaogai_Mensa_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..714d246d83e0596b5c9805c92fb137dd51ba68c0 GIT binary patch literal 155113 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 X7>#qM!Wdf7>y(pGkj}ZO=lwqbG(Gm% literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/ProjectLaogai_Settings_dark.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/ProjectLaogai_Settings_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c19082dd353bb14c00cd05d0e5e831c2cce79171 GIT binary patch literal 130815 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

pg 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�K-JU5M3NPjMkdE)Y|8va10EQ@ep6Kz@m{^ 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 Date: Sun, 8 Sep 2019 20:35:06 +0200 Subject: [PATCH 33/38] Update 'README.md' --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 246a159..b72a3f5 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,10 @@ ProjectLaogai is a app to access the timetable and the mensa menu of Hochschule * probably some funny bugs ## Screenshots -[](https://github.com/Seil0/Seil0.github.io/blob/master/images/Project_Laogai/ProjectLaogai_HomeScreen.png) -[](https://github.com/Seil0/Seil0.github.io/blob/master/images/Project_Laogai/ProjectLaogai_Mensa.png) -[](https://github.com/Seil0/Seil0.github.io/blob/master/images/Project_Laogai/ProjectLaogai_Timetable.png) -[](https://github.com/Seil0/Seil0.github.io/blob/master/images/Project_Laogai/ProjectLaogai_Settings.png) -[](https://github.com/Seil0/Seil0.github.io/blob/master/images/Project_Laogai/ProjectLaogai_NavDrawer.png) +[](https://www.mosad.xyz/images/Project_Laogai/ProjectLaogai_HomeScreen.png) +[](https://www.mosad.xyz/images/Project_Laogai/ProjectLaogai_Mensa.png) +[](https://www.mosad.xyz/images/Project_Laogai/ProjectLaogai_Timetable.png) +[](https://www.mosad.xyz/images/Project_Laogai/ProjectLaogai_Settings.png) +[](https://www.mosad.xyz/images/Project_Laogai/ProjectLaogai_Mensa_dark.png) ProjectLaogai © 2019 [@Seil0](https://git.mosad.xyz/Seil0), a [mosad](http://www.mosad.xyz) Project From 6e6c9f71a0935553757d8d239115748d5df4a9bd Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sun, 22 Sep 2019 20:51:36 +0200 Subject: [PATCH 34/38] reworked the way the timetable date is calculated * cleaned up some timetable gui code * close #33 --- app/build.gradle | 6 +- .../projectlaogai/fragments/HomeFragment.kt | 98 +++++-------------- .../projectlaogai/fragments/MensaFragment.kt | 4 +- .../fragments/TimeTableFragment.kt | 56 +++-------- .../projectlaogai/hsoparser/DataTypes.kt | 55 ++++++----- .../projectlaogai/uicomponents/DayCardView.kt | 40 ++++++++ .../activities/layout/linearlayout_lesson.xml | 47 ++++++--- 7 files changed, 146 insertions(+), 160 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 21666e9..5ea0438 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,13 +7,13 @@ apply plugin: 'kotlin-android-extensions' android { signingConfigs { } - compileSdkVersion 28 + compileSdkVersion 29 defaultConfig { applicationId "org.mosad.seil0.projectlaogai" minSdkVersion 23 - targetSdkVersion 28 + targetSdkVersion 29 versionCode 14 - versionName "0.5.0" + versionName "0.4.99" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "build_time", buildTime() setProperty("archivesBaseName", "projectlaogai-$versionName") 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 c475f98..e7aeade 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 @@ -30,19 +30,16 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.Fragment -import com.afollestad.materialdialogs.MaterialDialog import kotlinx.android.synthetic.main.fragment_home.* import org.jetbrains.anko.doAsync import org.jetbrains.anko.uiThread import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.mensaMenu import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.timetables -import org.mosad.seil0.projectlaogai.hsoparser.DataTypes import org.mosad.seil0.projectlaogai.hsoparser.Meal import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar import org.mosad.seil0.projectlaogai.hsoparser.TimetableDay 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.* @@ -53,7 +50,7 @@ import java.util.* */ class HomeFragment : Fragment() { - private val className = "MyActivity" + private val className = "HomeFragment" private val formatter = SimpleDateFormat("E dd.MM", Locale.getDefault()) override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { @@ -80,10 +77,10 @@ class HomeFragment : Fragment() { if (isAdded) { if (cal.get(Calendar.HOUR_OF_DAY) < 15) { - dayMeals = mensaMenu.currentWeek.days[NotRetardedCalendar().getDayOfWeekIndex()].meals + dayMeals = mensaMenu.currentWeek.days[NotRetardedCalendar.getDayOfWeekIndex()].meals mensaCardView.setDayHeading(activity!!.resources.getString(R.string.today_date, formatter.format(cal.time))) } else { - dayMeals = mensaMenu.currentWeek.days[NotRetardedCalendar().getTomorrowWeekIndex()].meals + dayMeals = mensaMenu.currentWeek.days[NotRetardedCalendar.getTomorrowWeekIndex()].meals cal.add(Calendar.DATE, 1) mensaCardView.setDayHeading(activity!!.resources.getString(R.string.tomorrow_date, formatter.format(cal.time))) } @@ -121,101 +118,52 @@ class HomeFragment : Fragment() { * add the current timetable to the home screen */ private fun addTimeTable() = doAsync { - val dayIndex = NotRetardedCalendar().getDayOfWeekIndex() - val cal = Calendar.getInstance() - var dayCardView: DayCardView uiThread { - if (isAdded) { - if (timetables.isNotEmpty() && dayIndex < 6) { - - // first check the current day - dayCardView = addDayTimetable(timetables[0].timetable.days[dayIndex]) - dayCardView.setDayHeading(resources.getString(R.string.today_date, formatter.format(cal.time))) - - // if there are no lessons try to find the next day with a lesson - if (dayCardView.getLinLayoutDay().childCount <= 1) - dayCardView = findNextDay(0, dayIndex + 1) - + if (isAdded && timetables.isNotEmpty()) { + try { + val dayCardView = findNextDay(NotRetardedCalendar.getDayOfWeekIndex()) linLayout_Home.addView(dayCardView) - } else if (dayIndex == 6) { - // if that's the case it's sunday - dayCardView = findNextDay(1, 0) - linLayout_Home.addView(dayCardView) - } else { - MaterialDialog(context!!) - .title(R.string.error) - .message(R.string.timetable_error) - .show() - Log.e(className, "could not load timetable") // TODO send feedback + } catch (ex: Exception) { + Log.e(className, "could not load timetable", ex) // TODO send feedback } } } } - /** - * add the timetable of one day to the home-screen - * @param dayTimetable the day you wish to add - */ - private fun addDayTimetable(dayTimetable: TimetableDay) : DayCardView{ - var helpLesson = LessonLinearLayout(context) - val dayCardView = DayCardView(context!!) - - for ((tsIndex, timeslot) in dayTimetable.timeslots.withIndex()) { - - for(lesson in timeslot) { - if(lesson.lessonSubject.isNotEmpty()) { - - val lessonLayout = LessonLinearLayout(context) - lessonLayout.setLesson(lesson, DataTypes().getTime()[tsIndex]) - dayCardView.getLinLayoutDay().addView(lessonLayout) - - if (lesson != timeslot.last()) { - lessonLayout.disableDivider() - } - - helpLesson = lessonLayout - } - } - } - - helpLesson.disableDivider() - - return dayCardView - } - /** * find the next day with a lesson - * @param startWeekIndex the week you want to start searching + * start at week 0, startDayIndex and search every cached week until we find a) a day with a timetable + * or b) we find no timetable and add a no lesson card * @param startDayIndex the day index you want to start searching * @return a DayCardView with all lessons added */ - private fun findNextDay(startWeekIndex: Int, startDayIndex: Int) : DayCardView { - val cal = Calendar.getInstance() - var dayCardView = DayCardView(context!!) + private fun findNextDay(startDayIndex: Int) : DayCardView { + val dayCardView = DayCardView(context!!) var dayTimetable: TimetableDay? = null var dayIndexSearch = startDayIndex - var weekIndexSearch = startWeekIndex + var weekIndexSearch = 0 - loop@ while (dayTimetable == null && weekIndexSearch <= timetables.size) { - for (i in (dayIndexSearch) ..5) { - dayTimetable = timetables[weekIndexSearch].timetable.days[i] - cal.add(Calendar.DATE, 1) + while (dayTimetable == null && weekIndexSearch < timetables.size) { + for (dayIndex in dayIndexSearch..5) { + dayTimetable = timetables[weekIndexSearch].timetable.days[dayIndex] - // add the timetable to the card, if it contains at least one lesson break! - dayCardView = addDayTimetable(dayTimetable) - dayCardView.setDayHeading(formatter.format(cal.time)) + // some wired calendar magic, calculate the correct date to be shown ((timetable week - current week * 7) + days of calendar week + 1) + val daysToAdd = (timetables[weekIndexSearch].meta.weekNumberYear - NotRetardedCalendar.getWeekOfYear() - 1) * 7 + dayIndex +1 + dayCardView.addTimetableDay(dayTimetable, daysToAdd) + // if there are no lessons don't show the dayCardView if (dayCardView.getLinLayoutDay().childCount > 1) return dayCardView } - dayIndexSearch = 0 + weekIndexSearch++ - cal.add(Calendar.DATE, 1) + dayIndexSearch = 0 } + // there was no day found in the cached weeks, add no lesson card dayCardView.setDayHeading(formatter.format(Calendar.getInstance().time)) dayCardView.getLinLayoutDay().addView(getNoCard(resources.getString(R.string.no_lesson_today))) // if there is no lecture at all show the no lesson card return dayCardView 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 1341914..771637e 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 @@ -54,7 +54,7 @@ class MensaFragment : Fragment() { refreshAction() // add the current week (week starts on sunday) - val dayCurrent = if(NotRetardedCalendar().getDayOfWeekIndex() == 6) 0 else NotRetardedCalendar().getDayOfWeekIndex() + val dayCurrent = if(NotRetardedCalendar.getDayOfWeekIndex() == 6) 0 else NotRetardedCalendar.getDayOfWeekIndex() addWeek(mensaMenu.currentWeek, dayCurrent).get() // add the next week @@ -128,7 +128,7 @@ class MensaFragment : Fragment() { linLayout_Mensa.removeAllViews() // add the refreshed menus - val dayCurrent = if (NotRetardedCalendar().getDayOfWeekIndex() == 6) 0 else NotRetardedCalendar().getDayOfWeekIndex() + val dayCurrent = if (NotRetardedCalendar.getDayOfWeekIndex() == 6) 0 else NotRetardedCalendar.getDayOfWeekIndex() addWeek(mensaMenu.currentWeek, dayCurrent).get() // add the next week 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 41de6c2..bd4a419 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 @@ -38,11 +38,8 @@ import org.mosad.seil0.projectlaogai.controller.CacheController import org.mosad.seil0.projectlaogai.controller.CacheController.Companion.timetables import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion.cCourse import org.mosad.seil0.projectlaogai.controller.TCoRAPIController -import org.mosad.seil0.projectlaogai.hsoparser.DataTypes import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar -import org.mosad.seil0.projectlaogai.hsoparser.TimetableWeek import org.mosad.seil0.projectlaogai.uicomponents.DayCardView -import org.mosad.seil0.projectlaogai.uicomponents.LessonLinearLayout import java.text.SimpleDateFormat import java.util.* @@ -52,7 +49,6 @@ import java.util.* */ class TimeTableFragment : Fragment() { - private val formatter = SimpleDateFormat("E dd.MM", Locale.getDefault()) private lateinit var scrollViewTimetable: ScrollView private lateinit var faBtnAddLesson: FloatingActionButton @@ -111,53 +107,30 @@ class TimeTableFragment : Fragment() { * add the current and next weeks lessons */ private fun addInitWeeks() = doAsync { - val dayIndex = NotRetardedCalendar().getDayOfWeekIndex() - val calendar = Calendar.getInstance() + val currentDayIndex = NotRetardedCalendar.getDayOfWeekIndex() - // add current week - addWeek(dayIndex, 5, timetables[0].timetable, calendar).get() - - // add next week - addWeek(0, dayIndex - 1, timetables[1].timetable, calendar) + addWeek(currentDayIndex, 5, 0).get() // add current week + addWeek(0, currentDayIndex - 1, 1) // add next week } - private fun addWeek(dayStart: Int, dayEnd: Int, timetable: TimetableWeek, calendar: Calendar) = doAsync { + private fun addWeek(startDayIndex: Int, dayEndIndex: Int, weekIndex: Int) = doAsync { + val timetable = timetables[weekIndex].timetable + val timetableMeta = timetables[weekIndex].meta + uiThread { - for (day in dayStart..dayEnd) { - var helpLesson = LessonLinearLayout(context) + for (dayIndex in startDayIndex..dayEndIndex) { val dayCardView = DayCardView(context!!) - dayCardView.setDayHeading(formatter.format(calendar.time)) - // for each timeslot of the day - for ((tsIndex, timeslot) in timetable.days[day].timeslots.withIndex()) { - - for(lesson in timeslot) { - - if(lesson.lessonSubject.isNotEmpty()) { - - val lessonLayout = LessonLinearLayout(context) - lessonLayout.setLesson(lesson, DataTypes().getTime()[tsIndex]) - dayCardView.getLinLayoutDay().addView(lessonLayout) - - if (lesson != timeslot.last()) - lessonLayout.disableDivider() - - helpLesson = lessonLayout - } - } - } - - helpLesson.disableDivider() - calendar.add(Calendar.DATE, 1) + // some wired calendar magic, calculate the correct date to be shown ((timetable week - current week * 7) + days of calendar week + 1) + val daysToAdd = (timetableMeta.weekNumberYear - NotRetardedCalendar.getWeekOfYear() - 1) * 7 + dayIndex +1 + dayCardView.addTimetableDay(timetable.days[dayIndex], daysToAdd) // if there are no lessons don't show the dayCardView if (dayCardView.getLinLayoutDay().childCount > 1) linLayout_Timetable.addView(dayCardView) } - - calendar.add(Calendar.DATE, 1) // before this we are at a sunday (no lecture on sundays!) } } @@ -174,14 +147,13 @@ class TimeTableFragment : Fragment() { linLayout_Timetable.removeAllViews() // add the refreshed timetables - val dayIndex = NotRetardedCalendar().getDayOfWeekIndex() - val calendar = Calendar.getInstance() + val dayIndex = NotRetardedCalendar.getDayOfWeekIndex() // add current week - addWeek(dayIndex, 5, timetables[0].timetable, calendar).get() + addWeek(dayIndex, 5, 0).get() // add next week - addWeek(0, dayIndex - 1, timetables[1].timetable, calendar) + addWeek(0, dayIndex - 1, 1) refreshLayout_Timetable.isRefreshing = false } diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/DataTypes.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/DataTypes.kt index 24ff111..f3936f3 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/DataTypes.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/DataTypes.kt @@ -83,31 +83,40 @@ class DataTypes { } class NotRetardedCalendar { - private val calendar = Calendar.getInstance()!! + companion object { + private val calendar = Calendar.getInstance() - fun getDayOfWeekIndex(): Int { - return when (calendar.get(Calendar.DAY_OF_WEEK)) { - Calendar.MONDAY -> 0 - Calendar.TUESDAY -> 1 - Calendar.WEDNESDAY -> 2 - Calendar.THURSDAY -> 3 - Calendar.FRIDAY -> 4 - Calendar.SATURDAY -> 5 - Calendar.SUNDAY -> 6 - else -> 7 + fun getDayOfWeekIndex(): Int { + return when (calendar.get(Calendar.DAY_OF_WEEK)) { + Calendar.MONDAY -> 0 + Calendar.TUESDAY -> 1 + Calendar.WEDNESDAY -> 2 + Calendar.THURSDAY -> 3 + Calendar.FRIDAY -> 4 + Calendar.SATURDAY -> 5 + Calendar.SUNDAY -> 6 + else -> 7 + } } - } - fun getTomorrowWeekIndex(): Int { - return when (calendar.get(Calendar.DAY_OF_WEEK)) { - Calendar.MONDAY -> 1 - Calendar.TUESDAY -> 2 - Calendar.WEDNESDAY -> 3 - Calendar.THURSDAY -> 4 - Calendar.FRIDAY -> 5 - Calendar.SATURDAY -> 6 - Calendar.SUNDAY -> 0 - else -> 7 + fun getTomorrowWeekIndex(): Int { + return when (calendar.get(Calendar.DAY_OF_WEEK)) { + Calendar.MONDAY -> 1 + Calendar.TUESDAY -> 2 + Calendar.WEDNESDAY -> 3 + Calendar.THURSDAY -> 4 + Calendar.FRIDAY -> 5 + Calendar.SATURDAY -> 6 + Calendar.SUNDAY -> 0 + else -> 7 + } + } + + fun getWeekOfYear(): Int { + return when (calendar.get(Calendar.DAY_OF_WEEK)) { + Calendar.SUNDAY -> Calendar.getInstance().get(Calendar.WEEK_OF_YEAR) - 1 + else -> Calendar.getInstance().get(Calendar.WEEK_OF_YEAR) + } } } } @@ -138,6 +147,6 @@ data class TimetableDay(val timeslots: Array> = Array(6) { Arr data class TimetableWeek(val days: Array = Array(6) { TimetableDay() }) -data class TimetableCourseMeta(var updateTime: Long = 0, val courseName: String = "", val week: Int = 0, val link: String = "") +data class TimetableCourseMeta(val updateTime: Long = 0, val courseName: String = "", val weekIndex: Int = 0, val weekNumberYear: Int = 0, val link: String = "") data class TimetableCourseWeek(val meta: TimetableCourseMeta = TimetableCourseMeta(), var timetable: TimetableWeek = TimetableWeek()) 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 7ab1287..b1e9a95 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 @@ -28,9 +28,15 @@ import android.widget.LinearLayout import androidx.cardview.widget.CardView import kotlinx.android.synthetic.main.cardview_day.view.* import org.mosad.seil0.projectlaogai.R +import org.mosad.seil0.projectlaogai.hsoparser.DataTypes +import org.mosad.seil0.projectlaogai.hsoparser.TimetableDay +import java.text.SimpleDateFormat +import java.util.* class DayCardView(context: Context) : CardView(context) { + private val formatter = SimpleDateFormat("E dd.MM", Locale.getDefault()) + init { inflate(context, R.layout.cardview_day,this) @@ -46,4 +52,38 @@ class DayCardView(context: Context) : CardView(context) { txtView_DayHeading.text = heading } + /** + * add the lessons of one day to the dayCardView + * @param timetable a timetable containing the day (and it's lessons) to be added + */ + fun addTimetableDay(timetable: TimetableDay, daysToAdd: Int) { + var lastLesson = LessonLinearLayout(context) + + // set the heading + val cal = Calendar.getInstance() + cal.add(Calendar.DATE, daysToAdd) + txtView_DayHeading.text = formatter.format(cal.time) + + // for every timeslot of that timetable + for ((tsIndex, timeslot) in timetable.timeslots.withIndex()) { + + for (lesson in timeslot) { + if (lesson.lessonSubject.isNotEmpty()) { + + val lessonLayout = LessonLinearLayout(context) + lessonLayout.setLesson(lesson, DataTypes().getTime()[tsIndex]) + linLayout_Day.addView(lessonLayout) + + if (lesson != timeslot.last()) { + lessonLayout.disableDivider() + } + + lastLesson = lessonLayout + } + } + } + + lastLesson.disableDivider() // disable the divider for the last lesson of the day + } + } \ No newline at end of file diff --git a/app/src/main/res/layouts/activities/layout/linearlayout_lesson.xml b/app/src/main/res/layouts/activities/layout/linearlayout_lesson.xml index 90e6103..591ce3f 100644 --- a/app/src/main/res/layouts/activities/layout/linearlayout_lesson.xml +++ b/app/src/main/res/layouts/activities/layout/linearlayout_lesson.xml @@ -1,35 +1,52 @@ + android:id="@+id/linLayout_lesson" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingLeft="7dp" + android:paddingTop="2dp" + android:paddingRight="7dp" + android:paddingBottom="3dp"> + android:layout_height="wrap_content" + android:orientation="horizontal"> + + android:layout_height="wrap_content" + android:layout_weight="1" + android:textSize="15sp" /> + + android:textColor="@color/textSecondary" /> + + android:layout_height="wrap_content" + android:textSize="15sp" /> + + android:layout_height="wrap_content" /> + + android:layout_marginTop="2dp" + android:background="?dividerColor" /> \ No newline at end of file From aa69d2242f371f2758d27f3aad0c8135da64352a Mon Sep 17 00:00:00 2001 From: Seil0 Date: Mon, 23 Sep 2019 22:44:03 +0200 Subject: [PATCH 35/38] fixed course name not being updated on change * minor GUI improvements --- .../fragments/SettingsFragment.kt | 3 +- .../activities/layout/linearlayout_meal.xml | 34 +++++++++++++------ 2 files changed, 24 insertions(+), 13 deletions(-) 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 fe6b216..50565b9 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 @@ -24,7 +24,6 @@ package org.mosad.seil0.projectlaogai.fragments import android.content.Context import android.os.Bundle -import android.renderscript.Sampler import android.util.TypedValue import android.view.LayoutInflater import android.view.View @@ -132,7 +131,6 @@ class SettingsFragment : Fragment() { linLayoutCourse.setOnClickListener { selectCourse(context!!) - txtView_Course.text = cCourse.courseName // update txtView } linLayoutAbout.setOnClickListener { @@ -263,6 +261,7 @@ class SettingsFragment : Fragment() { uiThread { dialog.dismiss() + txtView_Course.text = cCourse.courseName // update txtView } } diff --git a/app/src/main/res/layouts/activities/layout/linearlayout_meal.xml b/app/src/main/res/layouts/activities/layout/linearlayout_meal.xml index 61d7a32..519307e 100644 --- a/app/src/main/res/layouts/activities/layout/linearlayout_meal.xml +++ b/app/src/main/res/layouts/activities/layout/linearlayout_meal.xml @@ -1,23 +1,35 @@ + android:id="@+id/linLayout_Meal" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingLeft="7dp" + android:paddingTop="2dp" + android:paddingRight="7dp" + android:paddingBottom="2dp"> + android:textAlignment="center" + android:textSize="18sp" + android:textStyle="bold" /> + + android:layout_height="wrap_content" + android:textAlignment="center" + android:textSize="15sp" /> + + android:layout_marginTop="3dp" + android:background="?dividerColor" /> \ No newline at end of file From b240beacc95f0e177ab486c3d8a09d8334f045b0 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Wed, 25 Sep 2019 22:46:58 +0200 Subject: [PATCH 36/38] turns out there is a current week too * don't debug timetable cod on Sundays, since there are no lessons on Sunday --- .../org/mosad/seil0/projectlaogai/fragments/HomeFragment.kt | 4 ++-- .../seil0/projectlaogai/fragments/TimeTableFragment.kt | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) 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 e7aeade..3973212 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 @@ -150,8 +150,8 @@ class HomeFragment : Fragment() { for (dayIndex in dayIndexSearch..5) { dayTimetable = timetables[weekIndexSearch].timetable.days[dayIndex] - // some wired calendar magic, calculate the correct date to be shown ((timetable week - current week * 7) + days of calendar week + 1) - val daysToAdd = (timetables[weekIndexSearch].meta.weekNumberYear - NotRetardedCalendar.getWeekOfYear() - 1) * 7 + dayIndex +1 + // some wired calendar magic, calculate the correct date to be shown ((timetable week - current week * 7) + (dayIndex - dayIndex of current week) + val daysToAdd =(timetables[weekIndexSearch].meta.weekNumberYear - NotRetardedCalendar.getWeekOfYear()) * 7 + (dayIndex - NotRetardedCalendar.getDayOfWeekIndex()) dayCardView.addTimetableDay(dayTimetable, daysToAdd) // if there are no lessons don't show the dayCardView 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 bd4a419..d4a2dc5 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 @@ -40,8 +40,6 @@ import org.mosad.seil0.projectlaogai.controller.PreferencesController.Companion. import org.mosad.seil0.projectlaogai.controller.TCoRAPIController import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar import org.mosad.seil0.projectlaogai.uicomponents.DayCardView -import java.text.SimpleDateFormat -import java.util.* /** * The timetable controller class @@ -122,8 +120,8 @@ class TimeTableFragment : Fragment() { for (dayIndex in startDayIndex..dayEndIndex) { val dayCardView = DayCardView(context!!) - // some wired calendar magic, calculate the correct date to be shown ((timetable week - current week * 7) + days of calendar week + 1) - val daysToAdd = (timetableMeta.weekNumberYear - NotRetardedCalendar.getWeekOfYear() - 1) * 7 + dayIndex +1 + // some wired calendar magic, calculate the correct date to be shown ((timetable week - current week * 7) + (dayIndex - dayIndex of current week) + val daysToAdd =(timetableMeta.weekNumberYear - NotRetardedCalendar.getWeekOfYear()) * 7 + (dayIndex - NotRetardedCalendar.getDayOfWeekIndex()) dayCardView.addTimetableDay(timetable.days[dayIndex], daysToAdd) // if there are no lessons don't show the dayCardView From c23454f08131f135be2fc18d9c586be34b3fa791 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sat, 28 Sep 2019 15:01:19 +0200 Subject: [PATCH 37/38] removed versionNameSuffix, f-droid does not like that --- app/build.gradle | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5ea0438..74fdfb0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,10 +24,6 @@ android { minifyEnabled false shrinkResources false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - versionNameSuffix "-release" - } - debug { - versionNameSuffix "-debug" } } From d5adc4df51714700466af70ca6bb19ec1f36b845 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Mon, 30 Sep 2019 21:25:38 +0200 Subject: [PATCH 38/38] release 0.5.0 --- app/build.gradle | 2 +- .../org/mosad/seil0/projectlaogai/controller/NFCMensaCard.kt | 2 +- fastlane/metadata/android/en-US/changelogs/14.txt | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 74fdfb0..c63918f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { minSdkVersion 23 targetSdkVersion 29 versionCode 14 - versionName "0.4.99" + versionName "0.5.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resValue "string", "build_time", buildTime() setProperty("archivesBaseName", "projectlaogai-$versionName") diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/NFCMensaCard.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/NFCMensaCard.kt index 469f847..e3fbb77 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/controller/NFCMensaCard.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/controller/NFCMensaCard.kt @@ -50,7 +50,7 @@ class NFCMensaCard { * @param context the context to show the dialog in */ fun readBalance(intent: Intent, context: Context) { - val tag: Tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG) + val tag: Tag? = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG) val isoDep = IsoDep.get(tag) try { isoDep.connect() diff --git a/fastlane/metadata/android/en-US/changelogs/14.txt b/fastlane/metadata/android/en-US/changelogs/14.txt index cc576b3..b3cceea 100644 --- a/fastlane/metadata/android/en-US/changelogs/14.txt +++ b/fastlane/metadata/android/en-US/changelogs/14.txt @@ -3,5 +3,6 @@ This release 0.5.0 is called "artistical Apollon". * new: it's now possible to choose a theme (light, dark or black) * new: you can now check your current mensa card balance * change: updated some libs, updated kotlin to 1.3.41 +* change: added a license dialog for all used libraries * fix: the mensa should now show the correct meals on sunday/monday * fix: the timetable should now show the correct on the sunday/monday change