From 75a457312d39c64538416d691e69b6e3337d64a6 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Thu, 3 Jan 2019 13:46:09 +0100 Subject: [PATCH] major bug fixes & version 0.3.2 * fixed a issue that prevented the app from showing the second weeks schedule, until now the app showed always the current week as next week * minor color chooser improvements * minor code clean up --- app/build.gradle | 3 - .../mosad/seil0/projectlaogai/MainActivity.kt | 92 ++++--------------- .../projectlaogai/fragments/HomeFragment.kt | 2 +- .../projectlaogai/fragments/MensaFragment.kt | 2 +- .../projectlaogai/fragments/MoodleFragment.kt | 2 +- .../fragments/SettingsFragment.kt | 6 +- .../fragments/TimeTableFragment.kt | 11 +-- .../projectlaogai/hsoparser/DataTypes.kt | 2 +- .../projectlaogai/hsoparser/MensaParser.kt | 2 +- .../hsoparser/TimeTableParser.kt | 22 ++--- .../uicomponents/LessonCardView.kt | 2 +- .../uicomponents/MensaDayCardView.kt | 2 +- app/src/main/res/values/strings.xml | 6 +- 13 files changed, 41 insertions(+), 113 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 625cc48..c8c3f5b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -39,9 +39,6 @@ dependencies { implementation 'com.afollestad.material-dialogs:core:2.0.0-rc5' implementation 'com.afollestad.material-dialogs:color:2.0.0-rc5' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.0' - testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' 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 29a9c45..665822b 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/MainActivity.kt @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,9 +35,6 @@ import com.afollestad.materialdialogs.MaterialDialog import com.google.android.material.navigation.NavigationView import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.app_bar_main.* -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking import org.jetbrains.anko.doAsync import org.jetbrains.anko.uiThread import org.mosad.seil0.projectlaogai.fragments.* @@ -51,16 +48,12 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte private var weekMenus = ArrayList() private var courseTTLinkList = ArrayList() - //private var timeTableCurrentWeek = arrayOf>() - //private var timeTableNextWeek = arrayOf>() - private lateinit var timeTableCurrentWeek : Array> - private lateinit var timeTableNextWeek: Array> + private var timeTableCurrentWeek = arrayOf>() + private var timeTableNextWeek = arrayOf>() private lateinit var course: CourseTTLink private var color: Int = Color.BLACK - private var ls = Lesson("","","", "") - override fun onCreate(savedInstanceState: Bundle?) { Aesthetic.attach(this) super.onCreate(savedInstanceState) @@ -75,6 +68,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte // this is executed on the first app start, use this to show tutorial etc. Aesthetic.config { colorPrimary(Color.BLACK) + colorPrimaryDark(Color.BLACK) apply() } } else { @@ -85,9 +79,6 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte } } - - - //init home fragment TODO make a abstract fragment class val homeFragment = HomeFragment() homeFragment.setMainActivity(this) @@ -236,44 +227,6 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte */ val time = measureTimeMillis { - runBlocking { - /* getting the course list should be faster than the timetable, - * we need have time until the user opens the dialog - */ - val jobTTLinkList = GlobalScope.launch { - courseTTLinkList = timeTableParser.getCourseTTLinks() - } - - val jobTTNextWeek = GlobalScope.launch { - timeTableNextWeek = timeTableParser.getTimeTable(course.courseTTLink.replace("week=0","week=1")) - println("next: " + timeTableNextWeek.size) - println(timeTableNextWeek) - println(ls.lessonSubject) - timeTableParser.printTimeTableWeek(timeTableNextWeek) // Wieso sind die daten hier noch im array - } - - val jobTTCurrentWeek = GlobalScope.launch { - timeTableCurrentWeek = timeTableParser.getTimeTable(course.courseTTLink) - } - - val jobMenus = GlobalScope.launch { - weekMenus = mensaParser.getMensaMenu() - } - - - - jobTTLinkList.join() // wait until child coroutine completes - jobTTNextWeek.join() - jobTTCurrentWeek.join() - jobMenus.join() - - println("next end:" + timeTableNextWeek.size) - println(timeTableNextWeek) - timeTableParser.printTimeTableWeek(timeTableNextWeek) // und hier nicht mehr - } - - return - /* getting the course list should be faster than the timetable, * we need have time until the user opens the dialog */ @@ -281,28 +234,13 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte courseTTLinkList = timeTableParser.getCourseTTLinks() } - val t0 = doAsync { - try { - timeTableNextWeek = timeTableParser.getTimeTable(course.courseTTLink.replace("week=0","week=1")) - ls = timeTableNextWeek[0][0] - println("next: " + timeTableNextWeek.size) - println(timeTableNextWeek) - println(ls.lessonSubject) - timeTableParser.printTimeTableWeek(timeTableNextWeek) - } catch (e: Exception) { - e.stackTrace - } - } - - val t1 = doAsync { + val jobMenus = doAsync { weekMenus = mensaParser.getMensaMenu() } - val t2 = doAsync { + val jobTTCurrentWeek = doAsync { try { timeTableCurrentWeek = timeTableParser.getTimeTable(course.courseTTLink) - println("current: " + timeTableCurrentWeek.size) - timeTableParser.printTimeTableWeek(timeTableCurrentWeek) } catch (e: Exception) { uiThread { @@ -316,17 +254,19 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte } } - t0.get() - t1.get() - t2.get() + val jobTTNextWeek = doAsync { + try { + timeTableNextWeek = timeTableParser.getTimeTable(course.courseTTLink.replace("week=0","week=1")) + } catch (e: Exception) { + e.stackTrace + } + } - println("next end:" + timeTableNextWeek.size) - println(timeTableNextWeek) - timeTableParser.printTimeTableWeek(timeTableNextWeek) - println(ls.lessonSubject) + jobMenus.get() + jobTTCurrentWeek.get() + jobTTNextWeek.get() } println("Completed in $time ms") - println(ls.lessonSubject) } fun getCourseTTLinkList(): 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 aee73b0..4c8db33 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 @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by 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 fa93596..0a2cefd 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 @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MoodleFragment.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MoodleFragment.kt index 900704f..5ad6696 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MoodleFragment.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/fragments/MoodleFragment.kt @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by 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 a48e276..8592e56 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 @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -126,11 +126,11 @@ class SettingsFragment : Fragment() { linLayoutMainColor.setOnClickListener { // open a new color chooser dialog - val colors = intArrayOf(Color.BLACK, Color.CYAN, Color.MAGENTA, Color.YELLOW) + val colors = intArrayOf(Color.BLACK, Color.DKGRAY, Color.RED, Color.GREEN, Color.YELLOW) MaterialDialog(context!!) .title(R.string.primary_color) - .colorChooser(colors, initialSelection = mainActivity.getColorPrimary()) { _, color -> + .colorChooser(colors, allowCustomArgb = true,initialSelection = mainActivity.getColorPrimary()) { _, color -> viewPrimaryColor.setBackgroundColor(color) Aesthetic.config { colorPrimary(color) 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 8ae93f5..5aab51d 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 @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,7 +35,6 @@ import org.mosad.seil0.projectlaogai.MainActivity import org.mosad.seil0.projectlaogai.R import org.mosad.seil0.projectlaogai.hsoparser.DataTypes import org.mosad.seil0.projectlaogai.hsoparser.NotRetardedCalendar -import org.mosad.seil0.projectlaogai.hsoparser.TimeTableParser import org.mosad.seil0.projectlaogai.uicomponents.LessonCardView import org.mosad.seil0.projectlaogai.uicomponents.MensaDayCardView import java.text.SimpleDateFormat @@ -73,9 +72,6 @@ class TimeTableFragment : Fragment() { val formatter = SimpleDateFormat("E dd.MM", Locale.GERMANY) // TODO change to android call when min api is 24 val calendar = Calendar.getInstance() - println(mainActivity.getTimeTableCurrentWeek().size) - println(mainActivity.getTimeTableNextWeek().size) - doAsync { uiThread { @@ -113,6 +109,7 @@ class TimeTableFragment : Fragment() { linLayoutTTFragment.addView(cardViewTimeTableDay) } + // TODO if there is no lesson at one day , show a no lesson card // add next weeks days, max number = dayIndex, if timetable was loaded if (mainActivity.getTimeTableNextWeek().isNotEmpty()) { calendar.add(Calendar.DATE,1) // before this we are at a sunday (no lecture on sundays!) @@ -122,9 +119,6 @@ class TimeTableFragment : Fragment() { val cardViewTimeTableDay = MensaDayCardView(context!!, null) cardViewTimeTableDay.setDayHeading(formatter.format(calendar.time)) - //val ttp = TimeTableParser() - //ttp.printTimeTableWeek(mainActivity.getTimeTableNextWeek()) - // for each lessen of the day for((i, lesson) in mainActivity.getTimeTableNextWeek()[day].withIndex()) { val lessonCardView = LessonCardView(context!!, null) @@ -144,7 +138,6 @@ class TimeTableFragment : Fragment() { } } - // TODO if there is no lesson at one day , show a no lesson card } } 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 fcc9dd1..e375d8b 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 @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/MensaParser.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/MensaParser.kt index d4016d5..d13c77e 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/MensaParser.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/MensaParser.kt @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/TimeTableParser.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/TimeTableParser.kt index 5c8680e..2782759 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/TimeTableParser.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/hsoparser/TimeTableParser.kt @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,9 +27,16 @@ import org.jsoup.Jsoup class TimeTableParser { private val days = arrayOf("Monday", "Tuesday" ,"Wednesday", "Thursday", "Friday", "Saturday") private var courseTTLinkList = ArrayList() - private var timeTableWeek = arrayOf>() - init { + /** + * get the timetable from the given url + * the timetable is organised per row not per column; + * Mon 1, Tue 1, Wed 1, Thur 1, Fri 1, Sat 1, Mon 2 and so on + */ + fun getTimeTable(courseTTURL: String): Array> { + var timeTableWeek = arrayOf>() + val scheduleHTML = Jsoup.connect(courseTTURL).get() + // create the timetable array for (i in 0..5) { var timeTableDay = arrayOf() @@ -38,15 +45,6 @@ class TimeTableParser { } timeTableWeek += timeTableDay } - } - - /** - * get the timetable from the given url - * the timetable is organised per row not per column; - * Mon 1, Tue 1, Wed 1, Thur 1, Fri 1, Sat 1, Mon 2 and so on - */ - fun getTimeTable(courseTTURL: String): Array> { - val scheduleHTML = Jsoup.connect(courseTTURL).get() //val week = scheduleHTML.select("h1.timetable-caption").text() //println("$week successful!\n") diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonCardView.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonCardView.kt index 739d635..7a972dc 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonCardView.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/LessonCardView.kt @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/MensaDayCardView.kt b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/MensaDayCardView.kt index 38f4aee..2d5bfea 100644 --- a/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/MensaDayCardView.kt +++ b/app/src/main/java/org/mosad/seil0/projectlaogai/uicomponents/MensaDayCardView.kt @@ -1,7 +1,7 @@ /** * ProjectLaogai * - * Copyright 2018 + * Copyright 2019 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ba4631e..62a13c6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,7 +2,7 @@ Project Laogai Open navigation drawer Close navigation drawer - hso App 0.3.1 + hso App 0.3.2 seil0@mosad.xyz Project Laogai @@ -37,11 +37,11 @@ primary color The primary color, default is black select - version 0.3.1 + version 0.3.2 about hso App by @Seil0 "This software is made by @Seil0 and is published under the terms and - conditions of GPL 3. For further information visit \ngit.mosad.xyz/Seil0/ProjectLaogai \n\n© 2018 + conditions of GPL 3. For further information visit \ngit.mosad.xyz/Seil0/ProjectLaogai \n\n© 2018-2019 seil0@mosad.xyz " loading timetable …