52 lines
1.9 KiB
C++
52 lines
1.9 KiB
C++
#include <imgui.h>
|
|
#include <imgui_stdlib.h>
|
|
|
|
#include "../config.h"
|
|
#include "settings.h"
|
|
|
|
static void try_write_config(const Config& config) {
|
|
try {
|
|
write_config(config);
|
|
} catch (const std::exception& e) {
|
|
log(std::string("Failed to write config: ") + e.what());
|
|
}
|
|
}
|
|
|
|
void settings_window(Config& active_config, Config& inactive_config, bool* p_open) {
|
|
if (!ImGui::Begin("Settings", p_open)) {
|
|
ImGui::End();
|
|
return;
|
|
}
|
|
// TODO actually have process control
|
|
ImGui::TextUnformatted("Logcat command only takes effect when logcat is not running");
|
|
ImGui::InputTextWithHint("Logcat command", "adb logcat -Dv 'threadtime UTC epoch usec uid'", &inactive_config.logcat_command);
|
|
|
|
ImGui::Text("Font sizes only take effect when LogMeow is restarted");
|
|
#ifdef USE_FONTCONFIG
|
|
ImGui::InputFloat("Normal font size", &inactive_config.normal_font_size, 0.5f, 1.0f, "%.3f");
|
|
#endif
|
|
ImGui::InputFloat("Monospace font size", &inactive_config.monospace_font_size, 0.5f, 1.0f, "%.3f");
|
|
|
|
ImGui::Separator();
|
|
ImVec2 button_size(4 * ImGui::GetFontSize(), 0);
|
|
if (ImGui::Button("OK", button_size)) {
|
|
active_config.logcat_command = std::move(inactive_config.logcat_command);
|
|
active_config.normal_font_size = inactive_config.normal_font_size;
|
|
active_config.monospace_font_size = inactive_config.monospace_font_size;
|
|
try_write_config(active_config);
|
|
*p_open = false;
|
|
}
|
|
ImGui::SameLine();
|
|
if (ImGui::Button("Cancel", button_size)) {
|
|
*p_open = false;
|
|
}
|
|
ImGui::SameLine();
|
|
if (ImGui::Button("Apply", button_size)) {
|
|
active_config.logcat_command = inactive_config.logcat_command;
|
|
active_config.normal_font_size = inactive_config.normal_font_size;
|
|
active_config.monospace_font_size = inactive_config.monospace_font_size;
|
|
try_write_config(active_config);
|
|
}
|
|
ImGui::End();
|
|
}
|