Skip to content

Latest commit

 

History

History
114 lines (99 loc) · 4.48 KB

File metadata and controls

114 lines (99 loc) · 4.48 KB

ToDo list

High Priority

  • Error handling in Add / Edit (Copying files + converting stream)
  • Make line-endings consistent throughout the repo
    • Massive mix of CRLF and LF, even among files of same file extension
    • Whole repo should default to LF
      Except maybe .ahk files, which may need to be CRLF
    • Fix editor with .editorconfig in root of repo - is editor-agnostic
      [*]
      end_of_line = lf
      
      [*.ahk]
      end_of_line = crlf
      
    • Fix Git with .gitattributes
      # default behavior for all files
      * text eol=lf
      
      # override for AutoHotkey scripts
      *.ahk text eol=crlf
      
      This will cause a lot of files to be re-committed

Code overhaul

  • Components
    • Parameters of components can be made non-nullable by setting to default!;
    • Components can be wrapped in an <ErrorBoundary>
      If something goes wrong, alternate UI can be shown and error does not bubble up to parent
  • Enable Streaming Rendering
    @attribute [StreamRendering(true)] to start of all pages.
    • Generally, the stub seems to be there (eg if (importFiles == null) on Import page)
      However, even in that example, it's after another check. Should always be first?

Med Priority

  • Implement Max Brightness option
    Limits maximum brightness that could ever be set.
    eg BEC will not handle 100% brightness for full white images
    Would require dynamic form validation?
  • Implement nicer confirm dialog for delete
  • Public everywhere! Change to internal where possible
  • Reorder playlist
  • If FOREVER mode item is playing, clicking Save in Matrix options does not close the page.
    It does seem to save though, and manually navigating to another page does work.
  • Review storing of matrix options in PlayableItem / Re-use of matrix instance for all items
    Is there any advantage to newing up a matrix instance for each PlayableItem?
    • Some options will be baked into the stream (eg brightness)
    • Some options will be ignored on playback, as the same matrix instance is used for each item (eg limit refresh)

Crash hardening.

  • Various places where null-forgiving operators are used

Rework stream conversion success / fail handling + reporting?

TaskResult seems clunky. Int error results yucky
Return enum?
Custom exceptions?
Either way, need to be able to tell if original file got overwritten or not

Low Priority

  • If we trigger QuickMedia while the playlist is stopped, after it finishes playing, it should not start
  • Allow configuration of ButtonPins via GUI
  • PlaylistService tidy
    • A bunch of stuff in here should be moved to PlaylistItems
  • Clicking on Buttons can be bouncy? - seen ?Import? ?Add Item to Playlist? show duplicates

Extra button functionality

  • Add button config
  • QuickActions
    • Start / Stop playlist
    • Shutdown
  • QuickActions and QuickMedia would need to share same GPIO handler
    So that they do not try to subscribe to same button
  • PlayableItem's Matrix Options are not actually being used.
    It's using a stored one
    Every time we modify a playableItem's options, we should rebuild the native matrix options
    playableItem.MatrixOptions.ToRGBLedMatrixOptions()
    Changing Matrix however seems to caus corruption for 2nd item played

General refactor of MediaController Start / Stop etc

  • New interface:
    • PlaylistRunning: true if playlist is set to play
    • QuickMediaPlaying: true if QuickMedia currently playing
    • MediaPlaying: true if Playlist or QuickMedia is playing
    • Start / Stop to private
    • SetPlaylistState starts or stops playlist
    • PlayQuickMedia plays QuickMedia
  • Things that need to speak to MediaController:
    • Options page
      • Stop all playback, update options, then resume playback
    • QuickMediaService
      • Stop playback of button if Button is deleted while being playing
      • Stop playback of button if edited while playing, then restart
    • PlaylistService
      • Jump to playlist item
      • Add / Remove playlist item
        • If item is before currently playing item, needs to stop and restart, else current index could be off
      • Update item
        • If item set to disabled while playing, will need to move to next
      • Change of playlist
      • Delete playlist
    • Shutdown servive - stop all

MatrixOptions hot reload

  • Something odd going on with 1st start. Set MatrixOptions, load playlist, but screen is garbled
    Restart and it is OK
    This is because some Matrix options (eg RowAddressType) cannot be changed
    PR matrix-reset-01 submitted to rectify this