The Output fader is for sending to server?
it's a good idea to separate local channel monitor and sending volume.
one of big confusion in NINJAM UI, local channel effect to monitor only,
when users ask to down volume more, they down the local channel fader
not sending volume. they does not care which "volume"
Output volume can show the actual volume which others will hear.
tea "Output" is the master volume for monitoring the whole jam. It doesn't affect the upload volume. Thanks for the suggestion, the current prototype let's the user control the local channel upload volume, but I realized it doesn't let them see a different monitoring volume.
Personally I monitor myself at the same volume as the upload volume, but I know some people like to hear themselves louder.
The advantage of Model-View is, remove dependency from view.
I think a module design topic.
e.g. if js or cpp code had direct access to VirticalBar
the code assume VirticalBar's properties,
when you want to change component, then have to modify code together. (in that case, View has dependency)
Model-View is a flexible that point, ideal situation is change the view-component only and same business logic code works.
I understand that cost and benefit too, so it's just note at this moment.
There are several issue for performance, I did not test this yet.
I had research about VUMeter component,
that may require some optimization for the animation.
but not for active objects like Local/RemoteChannel that the UI needs to interact with heavily.
Yes true, this point is an important.
an exists Model-View which Qt provide may be the limitation
for the dynamic use case, like nested-channels etc.
but I still think benefit of Model-View,
need new model which fit to our use case.
(agree: your point, it's the cost and not needed in this stage yet)
Pros: it's reduce the cost of change view component.
Cons: it's increase cost when the model did not fit.
--> can't apply easily for uncertain use cases
There are easier ways to expose C++ objects, however
it has pros/cons by which model to choose.
There are 3 different use-cases.
about SessionList I found
QJsonArray could be pass as the model directly
I'm not sure which version of qt support this,
as i know previous version required JsonListModel
LGTM that client code in C++, reusable.
I have one more reason that wanted to share.
it's a known issue in dynamic scripting language,
it often problem lack of compile time type check,
JS code easy to make runtime error, like typo field/property names.
that C++ can detect before compile or static code check.
in dynamic scripting language, avoid such easy mistake
by unit test and coverage. or using static code check tools with type annotations.
if View had a code then it became hard to make the test code.
NOTE: Qt also has "qmllint" I had not use this yet. will be my next research
@teamikl:matrix.org I pushed my latest work on audio settings and the lobby (list of jam sessions). The client is not functional yet but it's getting closer.
I'll implement the private jam creation UI next. Once private jams can be created I'll start working on the main jam session UI.