From a8d9c75ea65ae9a60af979bcee919bf69fece06e Mon Sep 17 00:00:00 2001 From: Robert Ros Date: Mon, 9 Feb 2026 00:33:54 +0100 Subject: [PATCH 1/2] Save current day, week, month, year when in Fragments holders when rotating --- .../org/fossify/calendar/fragments/DayFragmentsHolder.kt | 8 ++++++++ .../fossify/calendar/fragments/MonthDayFragmentsHolder.kt | 8 ++++++++ .../fossify/calendar/fragments/MonthFragmentsHolder.kt | 8 ++++++++ .../org/fossify/calendar/fragments/WeekFragmentsHolder.kt | 8 ++++++++ .../org/fossify/calendar/fragments/YearFragmentsHolder.kt | 8 ++++++++ 5 files changed, 40 insertions(+) diff --git a/app/src/main/kotlin/org/fossify/calendar/fragments/DayFragmentsHolder.kt b/app/src/main/kotlin/org/fossify/calendar/fragments/DayFragmentsHolder.kt index 67231c049..c70598332 100644 --- a/app/src/main/kotlin/org/fossify/calendar/fragments/DayFragmentsHolder.kt +++ b/app/src/main/kotlin/org/fossify/calendar/fragments/DayFragmentsHolder.kt @@ -34,6 +34,9 @@ class DayFragmentsHolder : MyFragmentHolder(), NavigationListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) currentDayCode = arguments?.getString(DAY_CODE) ?: "" + if (savedInstanceState != null) { + currentDayCode = savedInstanceState.getString(::currentDayCode.name) ?: currentDayCode + } todayDayCode = Formatter.getTodayCode() } @@ -46,6 +49,11 @@ class DayFragmentsHolder : MyFragmentHolder(), NavigationListener { return binding.root } + override fun onSaveInstanceState(outState: Bundle) { + outState.putString(::currentDayCode.name, currentDayCode) + super.onSaveInstanceState(outState) + } + private fun setupFragment() { val codes = getDays(currentDayCode) val dailyAdapter = MyDayPagerAdapter(requireActivity().supportFragmentManager, codes, this) diff --git a/app/src/main/kotlin/org/fossify/calendar/fragments/MonthDayFragmentsHolder.kt b/app/src/main/kotlin/org/fossify/calendar/fragments/MonthDayFragmentsHolder.kt index b33add80a..b1159dbef 100644 --- a/app/src/main/kotlin/org/fossify/calendar/fragments/MonthDayFragmentsHolder.kt +++ b/app/src/main/kotlin/org/fossify/calendar/fragments/MonthDayFragmentsHolder.kt @@ -37,6 +37,9 @@ class MonthDayFragmentsHolder : MyFragmentHolder(), NavigationListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) currentDayCode = arguments?.getString(DAY_CODE) ?: "" + if (savedInstanceState != null) { + currentDayCode = savedInstanceState.getString(::currentDayCode.name) ?: currentDayCode + } todayDayCode = Formatter.getTodayCode() } @@ -49,6 +52,11 @@ class MonthDayFragmentsHolder : MyFragmentHolder(), NavigationListener { return binding.root } + override fun onSaveInstanceState(outState: Bundle) { + outState.putString(::currentDayCode.name, currentDayCode) + super.onSaveInstanceState(outState) + } + private fun setupFragment() { val codes = getMonths(currentDayCode) val monthlyDailyAdapter = MyMonthDayPagerAdapter(requireActivity().supportFragmentManager, codes, this) diff --git a/app/src/main/kotlin/org/fossify/calendar/fragments/MonthFragmentsHolder.kt b/app/src/main/kotlin/org/fossify/calendar/fragments/MonthFragmentsHolder.kt index 1096cdfcd..5706e1df8 100644 --- a/app/src/main/kotlin/org/fossify/calendar/fragments/MonthFragmentsHolder.kt +++ b/app/src/main/kotlin/org/fossify/calendar/fragments/MonthFragmentsHolder.kt @@ -37,6 +37,9 @@ class MonthFragmentsHolder : MyFragmentHolder(), NavigationListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) currentDayCode = arguments?.getString(DAY_CODE) ?: "" + if (savedInstanceState != null) { + currentDayCode = savedInstanceState.getString(::currentDayCode.name) ?: currentDayCode + } todayDayCode = Formatter.getTodayCode() } @@ -49,6 +52,11 @@ class MonthFragmentsHolder : MyFragmentHolder(), NavigationListener { return binding.root } + override fun onSaveInstanceState(outState: Bundle) { + outState.putString(::currentDayCode.name, currentDayCode) + super.onSaveInstanceState(outState) + } + private fun setupFragment() { val codes = getMonths(currentDayCode) val monthlyAdapter = MyMonthPagerAdapter(requireActivity().supportFragmentManager, codes, this) diff --git a/app/src/main/kotlin/org/fossify/calendar/fragments/WeekFragmentsHolder.kt b/app/src/main/kotlin/org/fossify/calendar/fragments/WeekFragmentsHolder.kt index 0b43f0841..ac0bf1828 100644 --- a/app/src/main/kotlin/org/fossify/calendar/fragments/WeekFragmentsHolder.kt +++ b/app/src/main/kotlin/org/fossify/calendar/fragments/WeekFragmentsHolder.kt @@ -44,6 +44,9 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener { super.onCreate(savedInstanceState) val dateTimeString = arguments?.getString(WEEK_START_DATE_TIME) ?: return currentWeekTS = (DateTime.parse(dateTimeString) ?: DateTime()).seconds() + if (savedInstanceState != null) { + currentWeekTS = savedInstanceState.getLong(::currentWeekTS.name) + } updateThisWeekTS() } @@ -72,6 +75,11 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener { setupSeekbar() } + override fun onSaveInstanceState(outState: Bundle) { + outState.putLong(::currentWeekTS.name, currentWeekTS) + super.onSaveInstanceState(outState) + } + private fun setupFragment() { addHours() setupWeeklyViewPager() diff --git a/app/src/main/kotlin/org/fossify/calendar/fragments/YearFragmentsHolder.kt b/app/src/main/kotlin/org/fossify/calendar/fragments/YearFragmentsHolder.kt index e91fb6351..81d394c04 100644 --- a/app/src/main/kotlin/org/fossify/calendar/fragments/YearFragmentsHolder.kt +++ b/app/src/main/kotlin/org/fossify/calendar/fragments/YearFragmentsHolder.kt @@ -37,6 +37,9 @@ class YearFragmentsHolder : MyFragmentHolder(), NavigationListener { super.onCreate(savedInstanceState) val dateTimeString = arguments?.getString(YEAR_TO_OPEN) currentYear = (if (dateTimeString != null) DateTime.parse(dateTimeString) else DateTime()).toString(Formatter.YEAR_PATTERN).toInt() + if (savedInstanceState != null) { + currentYear = savedInstanceState.getInt(::currentYear.name) + } todayYear = DateTime().toString(Formatter.YEAR_PATTERN).toInt() } @@ -49,6 +52,11 @@ class YearFragmentsHolder : MyFragmentHolder(), NavigationListener { return binding.root } + override fun onSaveInstanceState(outState: Bundle) { + outState.putInt(::currentYear.name, currentYear) + super.onSaveInstanceState(outState) + } + private fun setupFragment() { val years = getYears(currentYear) val yearlyAdapter = MyYearPagerAdapter(requireActivity().supportFragmentManager, years, this) From 8ba9447e41333cedc6cb8744414617f14f714e32 Mon Sep 17 00:00:00 2001 From: Robert Ros Date: Sat, 14 Feb 2026 20:29:57 +0100 Subject: [PATCH 2/2] Update Changelog. --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f5f0c34b..5304837c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Fixed +- Preserve current day when changing orientation ([#1042]) ## [1.10.3] - 2026-02-14 ### Changed @@ -237,6 +239,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#1003]: https://github.com/FossifyOrg/Calendar/issues/1003 [#1019]: https://github.com/FossifyOrg/Calendar/issues/1019 [#1024]: https://github.com/FossifyOrg/Calendar/issues/1024 +[#1042]: https://github.com/FossifyOrg/Calendar/issues/1042 [Unreleased]: https://github.com/FossifyOrg/Calendar/compare/1.10.3...HEAD [1.10.3]: https://github.com/FossifyOrg/Calendar/compare/1.10.2...1.10.3