diff options
Diffstat (limited to 'config.cpp')
-rw-r--r-- | config.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
@@ -1,4 +1,82 @@ #include "config.h" +#include "log.h" + +#include <libreichwein/file.h> +#include <libreichwein/stringhelper.h> + +#include <fmt/format.h> + +#include <string> + const char *device = "default"; // playback device +std::string config_filename = "click.cfg"; + +Config::Config() +{ + try { + // presets / defaults + m_midi_channel = CLICK_CHANNEL; + m_midi_note = CLICK_NOTE; + m_bpm = default_bpm; + + std::string config = Reichwein::File::getFile(config_filename); + + std::vector<std::string> lines = Reichwein::Stringhelper::split(config, "\n"); + + for (const auto& i: lines) { + if (i.starts_with("midi_channel=")) { + m_midi_channel = stoul(i.substr(13)); + } + if (i.starts_with("midi_note=")) { + m_midi_note = stoul(i.substr(10)); + } + if (i.starts_with("bpm=")) { + m_bpm = stoul(i.substr(4)); + } + } + } catch (const std::exception& ex) { + log_cout << "Config not found. Setting config to defaults." << std::endl; + } +} + +Config::~Config() +{ + std::string config = fmt::format("midi_channel={}\n", m_midi_channel) + + fmt::format("midi_note={}\n", m_midi_note) + + fmt::format("bpm={}\n", m_bpm); + + Reichwein::File::setFile(config_filename, config); +} + +int Config::get_midi_channel() +{ + return m_midi_channel; +} + +void Config::set_midi_channel(int channel) +{ + m_midi_channel = channel; +} + +int Config::get_midi_note() +{ + return m_midi_note; +} + +void Config::set_midi_note(int note) +{ + m_midi_note = note; +} + +int Config::get_bpm() +{ + return m_bpm; +} + +void Config::set_bpm(int bpm) +{ + m_bpm = bpm; +} + |