From 34738a4839f221bcf7e0901ae217ddb36b3fae47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Fri, 14 Feb 2020 09:58:58 +0100 Subject: [PATCH] Show semester in appbar subtitle in grades view (#684) --- .../wulkanowy/ui/modules/grade/GradeFragment.kt | 7 +++++++ .../wulkanowy/ui/modules/grade/GradePresenter.kt | 16 ++++++++++------ .../wulkanowy/ui/modules/grade/GradeView.kt | 2 ++ .../studentselect/LoginStudentSelectItem.kt | 3 --- .../wulkanowy/ui/modules/main/MainActivity.kt | 6 ++++++ .../wulkanowy/ui/modules/main/MainPresenter.kt | 1 + .../github/wulkanowy/ui/modules/main/MainView.kt | 8 ++++++++ app/src/main/res/values-pl/strings.xml | 3 +++ app/src/main/res/values-ru/strings.xml | 3 +++ app/src/main/res/values/strings.xml | 3 +++ 10 files changed, 43 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeFragment.kt index e8d97001..b1faf18f 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeFragment.kt @@ -40,6 +40,8 @@ class GradeFragment : BaseFragment(), GradeView, MainView.MainChildView, MainVie override val titleStringId get() = R.string.grade_title + override var subtitleString = "" + override val currentPageIndex get() = gradeViewPager.currentItem override fun onCreate(savedInstanceState: Bundle?) { @@ -133,6 +135,11 @@ class GradeFragment : BaseFragment(), GradeView, MainView.MainChildView, MainVie .show() } + override fun setCurrentSemesterName(semester: Int, schoolYear: Int) { + subtitleString = getString(R.string.grade_subtitle, semester, schoolYear, schoolYear + 1) + (activity as MainView).setViewSubTitle(subtitleString) + } + fun onChildRefresh() { presenter.onChildViewRefresh() } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradePresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradePresenter.kt index d8c20238..948d5a94 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradePresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradePresenter.kt @@ -21,6 +21,8 @@ class GradePresenter @Inject constructor( var selectedIndex = 0 private set + private var schoolYear = 0 + private var semesters = emptyList() private val loadedSemesterId = mutableMapOf() @@ -56,6 +58,7 @@ class GradePresenter @Inject constructor( selectedIndex = index + 1 loadedSemesterId.clear() view?.let { + it.setCurrentSemesterName(index + 1, schoolYear) notifyChildrenSemesterChange() loadChild(it.currentPageIndex) } @@ -96,16 +99,17 @@ class GradePresenter @Inject constructor( Timber.i("Loading grade data started") disposable.add(studentRepository.getCurrentStudent() .flatMap { semesterRepository.getSemesters(it) } - .doOnSuccess { - it.first { item -> item.isCurrent }.also { current -> - selectedIndex = if (selectedIndex == 0) current.semesterName else selectedIndex - semesters = it.filter { semester -> semester.diaryId == current.diaryId } - } - } .subscribeOn(schedulers.backgroundThread) .observeOn(schedulers.mainThread) .doFinally { view?.showProgress(false) } .subscribe({ + it.first { item -> item.isCurrent }.also { current -> + selectedIndex = if (selectedIndex == 0) current.semesterName else selectedIndex + schoolYear = current.schoolYear + semesters = it.filter { semester -> semester.diaryId == current.diaryId } + view?.setCurrentSemesterName(current.semesterName, schoolYear) + } + view?.run { Timber.i("Loading grade result: Attempt load index $currentPageIndex") loadChild(currentPageIndex) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeView.kt index bbdbc32e..7b52daa8 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/grade/GradeView.kt @@ -20,6 +20,8 @@ interface GradeView : BaseView { fun showSemesterDialog(selectedIndex: Int) + fun setCurrentSemesterName(semester: Int, schoolYear: Int) + fun notifyChildLoadData(index: Int, semesterId: Int, forceRefresh: Boolean) fun notifyChildParentReselected(index: Int) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectItem.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectItem.kt index 967e762e..06be6138 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectItem.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/studentselect/LoginStudentSelectItem.kt @@ -12,7 +12,6 @@ import io.github.wulkanowy.R import io.github.wulkanowy.data.db.entities.Student import kotlinx.android.extensions.LayoutContainer import kotlinx.android.synthetic.main.item_login_student_select.* -import timber.log.Timber class LoginStudentSelectItem(val student: Student, val alreadySaved: Boolean) : AbstractFlexibleItem() { @@ -20,8 +19,6 @@ class LoginStudentSelectItem(val student: Student, val alreadySaved: Boolean) : override fun getLayoutRes() = R.layout.item_login_student_select override fun createViewHolder(view: View, adapter: FlexibleAdapter>): ItemViewHolder { - Timber.i("createViewHolder()") - Timber.i(alreadySaved.toString()) return ItemViewHolder(view, adapter) } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt index ae4be953..864ad423 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt @@ -68,6 +68,8 @@ class MainActivity : BaseActivity(), MainView { override val currentViewTitle get() = (navController.currentFrag as? MainView.TitledView)?.titleStringId?.let { getString(it) } + override val currentViewSubtitle get() = (navController.currentFrag as? MainView.TitledView)?.subtitleString + override var startMenuIndex = 0 override var startMenuMoreIndex = -1 @@ -152,6 +154,10 @@ class MainActivity : BaseActivity(), MainView { supportActionBar?.title = title } + override fun setViewSubTitle(subtitle: String?) { + supportActionBar?.subtitle = subtitle + } + override fun showHomeArrow(show: Boolean) { supportActionBar?.setDisplayHomeAsUpEnabled(show) } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt index 8eccbc67..e6c29917 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt @@ -41,6 +41,7 @@ class MainPresenter @Inject constructor( view?.apply { showActionBarElevation(section != GRADE && section != MESSAGE && section != SCHOOL) currentViewTitle?.let { setViewTitle(it) } + currentViewSubtitle?.let { setViewSubTitle(it.ifBlank { null }) } currentStackSize?.let { if (it > 1) showHomeArrow(true) else showHomeArrow(false) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt index 0d8b1416..97b556e3 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt @@ -12,6 +12,8 @@ interface MainView : BaseView { val currentViewTitle: String? + val currentViewSubtitle: String? + val currentStackSize: Int? fun initView() @@ -30,6 +32,8 @@ interface MainView : BaseView { fun setViewTitle(title: String) + fun setViewSubTitle(subtitle: String?) + fun popView(depth: Int = 1) interface MainChildView { @@ -42,6 +46,10 @@ interface MainView : BaseView { interface TitledView { val titleStringId: Int + + var subtitleString: String + get() = "" + set(_) {} } enum class Section(val id: Int) { diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 4eb3b006..d6ef19d7 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -20,6 +20,9 @@ Zadania domowe Wybierz konto + + Semestr %d, %d/%d + Zaloguj się za pomocą konta ucznia lub rodzica diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index e0b07aeb..6a994f6d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -21,6 +21,9 @@ Домашние задания Выберите аккаунт + + Семестр %d, %d/%d + Авторизируйтесь при помощи аккаунта ученика или родителя diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4bc0aaa6..e2afb061 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,6 +20,9 @@ Homework Choose account + + Semester %d, %d/%d + Sign in with the student or parent account