The combination of the method's name 'signalStartupAutomatically'
and the default argument, I completely misunderstood the purpose
of the method in case the argument was skipped.
'a.signalStartupAutomatically()' actually disabled automatic signaling.
The reason for moving the implementation out from CSoundGenerator into
its own class is, because CSoundGenerator was a very complex and
obscure class. It mixed many tasks in one place. CSelcalPlayer
is designed to play SELCALs only.
The following design changes have been made, compared to CSoundGenerator:
* Use pull mode instead of push mode. QBuffer is used as the QIODevice and
is a wrapper around QByteArray. Therefore it is not necessary to
implement our own QIODevice.
* Internally it uses a CThreadedSelcalPlayer to relieve the load of the
main thread. CThreadedSelcalPlayer inherits CContinuousWorker, no
low level QThread implementation was necessary.
* Push mode was not implemented.
* It is important that the QAudioOutput is allocated in the worker thread.
QAudioOutput allocates internal objects, which cannot be moved to
the worker thread.
* Data caching. The generated seclal audio data is cached.
refs #736
The Mac OS/X event loop complained that system event processing took
too much time and disabled event taps. This commit speeds up system
event handling by connecting CInputManager with a queued connection.
This calls all (potentially expensive) hotkey actions asynchronously.
When the component was constructed, the table view with configured
hotkeys was empty even if hotkeys were configured.
This commit reloads the configured settings during component construction
and populates the table.
Up to now the UI appearance on all platforms was aligned as much as
possible with stylesheets. Since the base widget styles still were
platform dependent defaults, there were many small differences in
details and controls. Some of them were even broken. Instead of
trying to tweak all platform specific styles, default to one on all
platforms. This guarantees that the UI is truly cross platform and
all styles and fixes cover all platforms at the same time.
For users who want to change the default style, they have now a gui
setting. But it is strongly recommended to stick with the default.
refs #683
Even though QTabBar's property usesScrollButtons is set to true in Qt
Designer, it is not set explicitly in generated C++ code. The default
value is style dependent, which caused the scroll buttons to be visibile
everywhere except Mac OS/X.
refs #683
Up to know, the initial weather injection was done in the constructor
of ISimulator implementation. This was to early, since in the best case
the injection was not doing anything and in the worst case, crashed
the application because the plugin wasn't ready yet.
This change also replaces ps_reloadSettings with a specific non-slot
version to avoid code duplication.
abandon changes if destruction is due to an exception,
instead of applying changes if destruction is NOT due to an exception.
Because otherwise QFile destructor will apply changes regardless,
by calling the close method via virtual dispatch.