Dynamically loading a hierarchical list in SwiftUI
Today’s challenge: use the standard SwiftUI list view to navigate through a folder structure. All examples I could find work based on a pre-defined nested data structure, but that won’t work for a folder / file hierarchy: the nesting can be so deep that loading performance will be not acceptable. Especially when browsing a network share. The solution is to add an onAppear handler that is called whenever an item in the hierarchy is shown, and trigger the load of the children of that node. By using async/await for the loading, the UI stays responsive. The following gist shows an […]
Love my Nova / Kanta’s
Last year, after we moved into our new apartment I pulled the trigger on a new audio system. The convincing arguments were that we sold our old house very well, and that the existing combination of Arcam FMJ A-30 with Focal 736 speakers would be too small for our living room. There are 4 important things I took into account: it needed to sound good, it needed to look good, it needed to be versatile and it needed to be user-friendly. For the looks, I was already in love with the Focal Kanta’s and confident I would like their sound, […]
Experimental Naim Support
Earlier this year I bought a beautiful Naim Uniti Nova for our living room. In combination with Kanta 2 speakers it sounds fantastic, but I’m less enthusiastic about the accompanying app. Rigelian was the natural candidate to improve on this, so for the last half year I’ve been working on adding support for it in combination with UPnP. Apps like mconnect work as UPnP control point, effectively sitting between a UPnP media server (the music files) and a UPnP renderer (the player). A control point provides music files to the renderer one by one, so it needs to be running […]