Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recreate alarms screen #512

Closed
12 of 13 tasks
johnjohndoe opened this issue Sep 17, 2022 · 0 comments · Fixed by #550
Closed
12 of 13 tasks

Recreate alarms screen #512

johnjohndoe opened this issue Sep 17, 2022 · 0 comments · Fixed by #550
Assignees
Labels
Alarms The session reminder feature Architecture Feature request A request for a new feature. Help wanted You are invited to help. Please annouce it as a comment on the issue.
Milestone

Comments

@johnjohndoe
Copy link
Member

johnjohndoe commented Sep 17, 2022

Preconditions

Current state

  • The alarm screen has been built a long time ago and must be rebuilt to be maintainable.
  • Classes like CursorAdapter and android.widget.ListView are used.
  • The alarm screen appears and behaves different compared to similar screens such as "favorites" or "schedule changes".
  • Feature set:
    • List of alarms. Each entry show the alarm time, alarm time offset in minutes, session title, session subtile.
    • Delete individual alarms.
    • Delete all alarms at once via the overflow menu.

Target state

  • The new alarm screen is built on the principles of modern Android architecture.
  • The new screen architecture must be a "template" for similar screens such as "favorites" or "schedule changes" to be updated in the future.
  • The new alarm screen appears as a (side) fragment like screens such as "favorites" or "schedule changes".
  • The new alarm screen works both for phones and tablets.

TODOs

  • Compose project setup integrated in former XML layout project setup
  • Activity / Fragment + ViewModel
  • Observable properties + database functions exposes by repository
  • UI state data class (Loading, Success, ...)
  • UI state payload class (view specific data)
  • UI implementation with Compose UI + previews
  • Delete unused files (adapter, repository functions (?), layouts, ...)
  • Alarms icon with alarm time offset
  • Delete icon
  • Select alarm entry -> navigate to associated session details screen
  • Unit test ViewModel
  • Content description (Accessibility, TalkBack) for alarm entries.
  • App Theme to be used by Compose UI and to be customizable via build flavors

Technology discussion

  • ✔️ The screen could be recreated using modern RecyclerView, ViewModel classes and by introducing Compose UI (requires minSdk 21) to the code base. This needs to be discussed before work is started.
@johnjohndoe johnjohndoe added Feature request A request for a new feature. Architecture Alarms The session reminder feature Help wanted You are invited to help. Please annouce it as a comment on the issue. labels Sep 17, 2022
@johnjohndoe johnjohndoe self-assigned this May 20, 2023
johnjohndoe added a commit that referenced this issue May 24, 2023
+ Use Jetpack Compose UI to implement the user interface.
+ Use default Material 3 theming for now. Custom theme has to be
  configured later.
+ Light and dark theme support is not desired at this point.
  Defaults apply and might or not provide good defaults.
+ Bell icon fill and text colors are exposed to be customizable.
+ A close icon in the menu bar is not implemented here, maybe later.
+ The long tap action to delete an alarm has been replaced by a
  trash icon actionable by a single tap.
+ New: Tapping an alarm entry takes you to the session details
  screen.
+ Unused properties of the Alarm data class need to be cleaned up.

Resolves #512
@johnjohndoe johnjohndoe added this to the v.1.59.0 milestone May 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Alarms The session reminder feature Architecture Feature request A request for a new feature. Help wanted You are invited to help. Please annouce it as a comment on the issue.
Development

Successfully merging a pull request may close this issue.

1 participant