#include "simplevisualization.hpp"
#include "qmpkeyboardwindow.hpp"
qmpSimpleVisualization::qmpSimpleVisualization(qmpPluginAPI *_api)
{
api = _api;
}
void qmpSimpleVisualization::show()
{
p->show();
p->resetAll();
}
void qmpSimpleVisualization::close()
{
p->close();
}
void qmpSimpleVisualization::init()
{
api->registerFunctionality(this, "Keyboard", "Keyboard", api->isDarkTheme() ? ":/img/visualization_i.svg" : ":/img/visualization.svg", 0, true);
for (int i = 0; i < 16; ++i)
{
api->registerOptionUint("", "", "Keyboard/acolor" + std::to_string(i), 0, 0xffffff, 0xffff66cc);
api->registerOptionUint("", "", "Keyboard/bcolor" + std::to_string(i), 0, 0xffffff, 0xff66ccff);
}
p = new qmpKeyboardWindow(api, (QWidget *)api->getMainWindow());
auto refreshfn = [this](const void *, void *)
{
this->p->resetAll();
};
uihs = api->registerUIHook("main.stop", refreshfn, nullptr);
uihsk = api->registerUIHook("main.seek", refreshfn, nullptr);
uihsk = api->registerUIHook("main.start", refreshfn, nullptr);
uihsk = api->registerUIHook("main.reset", refreshfn, nullptr);
uihsk = api->registerUIHook("preset.set", refreshfn, nullptr);
uihsk = api->registerUIHook("channel.ccchange", refreshfn, nullptr);
}
void qmpSimpleVisualization::deinit()
{
if (!api)
return;
close();
api->unregisterFunctionality("Keyboard");
api->unregisterUIHook("main.stop", uihs);
api->unregisterUIHook("main.seek", uihsk);
delete p;
}
const char *qmpSimpleVisualization::pluginGetName()
{
return "QMidiPlayer Simple Visualization Plugin";
}
const char *qmpSimpleVisualization::pluginGetVersion()
{
return PLUGIN_VERSION;
}