#include "config.h" #include "log.h" #include #include #include #include const char *device = "default"; // playback device std::string config_filename = "click.cfg"; Config::Config() { recover(); } Config::~Config() { persist(); } void Config::recover() { 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 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; } } void Config::persist() { 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; }