bitfireAT / icsx5

ICSx⁵ is an Android app to subscribe to remote or local iCalendar files (like time tables of your school/university or event files of your sports team).
https://icsx5.bitfire.at
GNU General Public License v3.0
186 stars 9 forks source link

Rewrite to Jetpack Compose #91

Closed rfc2822 closed 1 year ago

rfc2822 commented 1 year ago

To experiment with Jetpack Compose (also for DAVx⁵), I'd suggest to rewrite ICSx⁵ to Jetpack Compose as a clean "sample" :)

Depends on #151

ArnyminerZ commented 1 year ago

Checklist:

ArnyminerZ commented 1 year ago

A thing that must be discussed is whether to keep using Activities, or use a variant of Jetpack Compose's navigation system. I think that navigation would be more performant for using the app, but also having all the view models and logic in the same activity may not be the best option.

ArnyminerZ commented 1 year ago

Implementation steps

Phase I - Setup

Description

In this phase the project is configured, and all the dependencies are added, as well as properly configuring Jetpack Compose. Even though more dependencies may be added in the following phases, the base ones will be in this one.

Steps

Phase II - Foundations

Description

May be implemented together with Phase I. In this phase, we should design and discuss all the individual components needed by the application. Those will be packaged inside .ui.reusable.

Steps

Phase III - Calendars list

Description

Since we are already using Room, migrating the calendars list screen (CalendarListActivity) is the easiest first step. This would involve migrating all the fragments and layouts to a single activity with all the contents designed.

Steps

ArnyminerZ commented 1 year ago

@rfc2822 I've finished the first three phases of the planning for the migration. I think it's a good start to migrate the calendar list screen, which is a quite simple Activity, and it would give a good feeling about the migration process, and how it works. It's Phase III on the planning above.

I've opened #140 so you can take a look, but that's just some dependencies and theme.

github-actions[bot] commented 1 year ago

This PR/issue depends on: * bitfireAT/icsx5#151

ArnyminerZ commented 1 year ago

Some screenshots of the new subscriptions list screen migrated to Jetpack Compose: Screenshot_20230720-122906

Screenshot_20230720-122902

Screenshot_20230720-122853

Screenshot_20230720-123020

The only thing that cannot be migrated are the colors of the "pull-to-refresh" spinner. It's not supported by Jetpack Compose. Just one color can be set. We can just set it to the primary blue color and call it a day