diff options
-rw-r--r-- | plugingui/maintab.cc | 1 | ||||
-rw-r--r-- | plugingui/maintab.h | 2 | ||||
-rw-r--r-- | plugingui/statusframecontent.cc | 93 | ||||
-rw-r--r-- | plugingui/statusframecontent.h | 21 |
4 files changed, 113 insertions, 4 deletions
diff --git a/plugingui/maintab.cc b/plugingui/maintab.cc index 7680bcd..d93fd5f 100644 --- a/plugingui/maintab.cc +++ b/plugingui/maintab.cc @@ -35,6 +35,7 @@ MainTab::MainTab(Widget* parent, Config& config) : Widget(parent) , drumkitframe_content{this, settings, settings_notifier, config} + , statusframe_content{this, settings_notifier} , humanizerframe_content{this, settings, settings_notifier} , diskstreamingframe_content{this, settings, settings_notifier} , settings(settings) diff --git a/plugingui/maintab.h b/plugingui/maintab.h index 941932f..abb7e8d 100644 --- a/plugingui/maintab.h +++ b/plugingui/maintab.h @@ -62,7 +62,7 @@ private: FrameWidget diskstreaming_frame{this, false}; DrumkitframeContent drumkitframe_content; - StatusframeContent statusframe_content{this}; + StatusframeContent statusframe_content; HumanizerframeContent humanizerframe_content; DiskstreamingframeContent diskstreamingframe_content; diff --git a/plugingui/statusframecontent.cc b/plugingui/statusframecontent.cc index 33a1367..196c0d3 100644 --- a/plugingui/statusframecontent.cc +++ b/plugingui/statusframecontent.cc @@ -29,11 +29,25 @@ namespace GUI { -StatusframeContent::StatusframeContent(Widget* parent) : Widget(parent) +StatusframeContent::StatusframeContent( + Widget* parent, SettingsNotifier& settings_notifier) + : Widget(parent), settings_notifier(settings_notifier) { + CONNECT(this, settings_notifier.drumkit_load_status, + this, &StatusframeContent::updateDrumkitLoadStatus); + CONNECT(this, settings_notifier.midimap_load_status, + this, &StatusframeContent::updateMidimapLoadStatus); + CONNECT(this, settings_notifier.samplerate, + this, &StatusframeContent::updateSamplerate); + CONNECT(this, settings_notifier.enable_resampling, + this, &StatusframeContent::updateResamplingEnabled); + CONNECT(this, settings_notifier.number_of_underruns, + this, &StatusframeContent::updateNumberOfUnderruns); + text_field.move(0, 0); - text_field.setText("This is a status message."); text_field.setReadOnly(true); + + updateContent(); text_field.show(); } @@ -43,4 +57,79 @@ void StatusframeContent::resize(std::size_t width, std::size_t height) text_field.resize(width, height); } +void StatusframeContent::updateContent() +{ + text_field.setText( + "Drumkit load status: " + drumkit_load_status + "\n" + "Midimap load status: " + midimap_load_status + "\n" + "Samplerate: " + samplerate + "\n" + "Resampling enabled: " + resampling_enabled + "\n" + "Number of underruns: " + number_of_underruns + "\n" + ); +} + +void StatusframeContent::updateDrumkitLoadStatus(LoadStatus load_status) +{ + switch(load_status) + { + case LoadStatus::Idle: + drumkit_load_status = "idle"; + break; + case LoadStatus::Loading: + drumkit_load_status = "loading"; + break; + case LoadStatus::Done: + drumkit_load_status = "done"; + break; + case LoadStatus::Error: + drumkit_load_status = "error"; + break; + } + + updateContent(); +} + +void StatusframeContent::updateMidimapLoadStatus(LoadStatus load_status) +{ + switch(load_status) + { + case LoadStatus::Idle: + midimap_load_status = "idle"; + break; + case LoadStatus::Loading: + midimap_load_status = "loading"; + break; + case LoadStatus::Done: + midimap_load_status = "done"; + break; + case LoadStatus::Error: + midimap_load_status = "error"; + break; + } + + updateContent(); +} + +void StatusframeContent::updateSamplerate(double samplerate) +{ + this->samplerate = std::to_string((std::size_t)samplerate); + + updateContent(); +} + +void StatusframeContent::updateResamplingEnabled(bool enable_resampling) +{ + this->resampling_enabled = enable_resampling ? "yes" : "no"; + + updateContent(); +} + +void StatusframeContent::updateNumberOfUnderruns( + std::size_t number_of_underruns) +{ + this->number_of_underruns = std::to_string(number_of_underruns); + + updateContent(); +} + } // GUI:: diff --git a/plugingui/statusframecontent.h b/plugingui/statusframecontent.h index 020855c..0ca5bfe 100644 --- a/plugingui/statusframecontent.h +++ b/plugingui/statusframecontent.h @@ -26,22 +26,41 @@ */ #pragma once +#include "settings.h" #include "textedit.h" #include "widget.h" +class SettingsNotifier; + namespace GUI { class StatusframeContent : public Widget { public: - StatusframeContent(Widget* parent); + StatusframeContent(Widget* parent, SettingsNotifier& settings_notifier); // From Widget virtual void resize(std::size_t width, std::size_t height) override; + void updateContent(); + + void updateDrumkitLoadStatus(LoadStatus load_status); + void updateMidimapLoadStatus(LoadStatus load_status); + void updateSamplerate(double samplerate); + void updateResamplingEnabled(bool enable_resampling); + void updateNumberOfUnderruns(std::size_t number_of_underruns); + private: TextEdit text_field{this}; + + SettingsNotifier& settings_notifier; + + std::string drumkit_load_status; + std::string midimap_load_status; + std::string samplerate; + std::string resampling_enabled; + std::string number_of_underruns; }; } // GUI:: |