From a2bac74306972e213eaa546f3a7b15ddaf58553b Mon Sep 17 00:00:00 2001 From: Paul Akhamiogu Date: Tue, 17 Aug 2021 04:06:03 +0100 Subject: [PATCH] fix week view missing some days on slider change - reset the view pager to recalculate the week time stamps to get accurate number of days --- .../pro/fragments/WeekFragmentsHolder.kt | 55 +++++++++++-------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/fragments/WeekFragmentsHolder.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/fragments/WeekFragmentsHolder.kt index 24f76eb18..4b9ebee55 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/fragments/WeekFragmentsHolder.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/fragments/WeekFragmentsHolder.kt @@ -60,11 +60,40 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener { } private fun setupFragment() { + addHours() + setupWeeklyViewPager() + + weekHolder!!.week_view_hours_scrollview.setOnTouchListener { view, motionEvent -> true } + + weekHolder!!.week_view_seekbar.apply { + progress = context?.config?.weeklyViewDays ?: 7 + max = MAX_SEEKBAR_VALUE + + onSeekBarChangeListener { + if (it == 0) { + progress = 1 + } + + updateWeeklyViewDays(progress) + } + } + + // avoid seekbar width changing if the days count changes to 1, 10 etc + weekHolder!!.week_view_days_count.onGlobalLayout { + weekHolder!!.week_view_seekbar.layoutParams.width = weekHolder!!.week_view_seekbar.width + (weekHolder!!.week_view_seekbar.layoutParams as RelativeLayout.LayoutParams).removeRule(RelativeLayout.START_OF) + } + + updateDaysCount(context?.config?.weeklyViewDays ?: 7) + updateActionBarTitle() + } + + private fun setupWeeklyViewPager(){ val weekTSs = getWeekTimestamps(currentWeekTS) val weeklyAdapter = MyWeekPagerAdapter(activity!!.supportFragmentManager, weekTSs, this) - addHours() defaultWeeklyPage = weekTSs.size / 2 + viewPager!!.apply { adapter = weeklyAdapter addOnPageChangeListener(object : ViewPager.OnPageChangeListener { @@ -92,29 +121,6 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener { weeklyAdapter.updateScrollY(viewPager!!.currentItem, y) } }) - weekHolder!!.week_view_hours_scrollview.setOnTouchListener { view, motionEvent -> true } - - weekHolder!!.week_view_seekbar.apply { - progress = context?.config?.weeklyViewDays ?: 7 - max = MAX_SEEKBAR_VALUE - - onSeekBarChangeListener { - if (it == 0) { - progress = 1 - } - - updateWeeklyViewDays(progress) - } - } - - // avoid seekbar width changing if the days count changes to 1, 10 etc - weekHolder!!.week_view_days_count.onGlobalLayout { - weekHolder!!.week_view_seekbar.layoutParams.width = weekHolder!!.week_view_seekbar.width - (weekHolder!!.week_view_seekbar.layoutParams as RelativeLayout.LayoutParams).removeRule(RelativeLayout.START_OF) - } - - updateDaysCount(context?.config?.weeklyViewDays ?: 7) - updateActionBarTitle() } private fun addHours(textColor: Int = context!!.config.textColor) { @@ -205,6 +211,7 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener { private fun updateWeeklyViewDays(days: Int) { context!!.config.weeklyViewDays = days updateDaysCount(days) + setupWeeklyViewPager() } private fun updateDaysCount(cnt: Int) {