- 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
.editorconfigin root of repo - is editor-agnostic[*] end_of_line = lf [*.ahk] end_of_line = crlf - Fix Git with
.gitattributesThis will cause a lot of files to be re-committed# default behavior for all files * text eol=lf # override for AutoHotkey scripts *.ahk text eol=crlf
- 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
- Parameters of components can be made non-nullable by setting to
- 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?
- Generally, the stub seems to be there (eg
- 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
Savein 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)
- Various places where null-forgiving operators are used
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
- 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
- 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
- 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
- Options page
- 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
PRmatrix-reset-01submitted to rectify this