From fa088bb60692ba02d30d39affa9a31d9e2b688e2 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Sat, 27 Sep 2025 14:23:56 +0200 Subject: ai service settings --- src/ui/imgui_extensions.cpp | 6 +++--- src/ui/ui_settings.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) (limited to 'src/ui') diff --git a/src/ui/imgui_extensions.cpp b/src/ui/imgui_extensions.cpp index 483f5f6..4dc1fb9 100644 --- a/src/ui/imgui_extensions.cpp +++ b/src/ui/imgui_extensions.cpp @@ -49,12 +49,12 @@ namespace ImGui float widthAvailable = ImGui::GetContentRegionAvail().x; ImGui::SetNextItemWidth(widthAvailable*0.5f); - if (ImGui::Button("Select file...")) + if (ImGui::Button("Select file...")) // @localize { // You can adjust filters, title, default path const char *filterPatterns[] = { "*.png", "*.jpg", "*.pdf", "*" }; const char *file = tinyfd_openFileDialog( - "Choose a file", // dialog title + "Choose a file", // dialog title // @localize NULL, // default path 4, // number of filter patterns filterPatterns, // filter patterns array @@ -77,7 +77,7 @@ namespace ImGui result = true; } ImGui::SameLine(); - ImGui::TextWrapped("Selected: %s", buffer); + ImGui::TextWrapped("Selected: %s", buffer); // @localize } diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index 892e580..1f9fe5a 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -35,6 +35,7 @@ u32 cost_center_count; cost_center* cost_centers = 0; static int select_company_tab = 0; +static ai_service new_service; void ui_destroy_settings() { @@ -54,6 +55,8 @@ void ui_setup_settings() cost_center_count = administration_cost_center_count(); cost_centers = (cost_center*)malloc(cost_center_count * sizeof(cost_center)); administration_cost_center_get_all(cost_centers); + + new_service = administration_get_ai_service(); } static void ui_draw_vat_rates() @@ -330,6 +333,39 @@ static void ui_draw_cost_centers() } } +static void ui_draw_services() +{ + // AI service + if (ImGui::CollapsingHeader(localize("settings.services.ai_service"))) + { + char* services[1] = { + "OpenAI" + }; + + if (ImGui::BeginCombo(localize("settings.services.ai_service.provider"), services[new_service.provider])) + { + for (u32 n = 0; n < 1; n++) + { + bool is_selected = n == (uint32_t)new_service.provider; + if (ImGui::Selectable(services[n], is_selected)) { + new_service.provider = (ai_provider)n; + } + } + ImGui::EndCombo(); + } + + ImGui::InputTextWithHint(localize("settings.services.ai_service.pubkey"), localize("settings.services.ai_service.pubkey"), + new_service.api_key_public, sizeof(new_service.api_key_public)); + + ImGui::InputTextWithHint(localize("settings.services.ai_service.privkey"), localize("settings.services.ai_service.privkey"), + new_service.api_key_private, sizeof(new_service.api_key_private)); + + if (ImGui::Button(localize("form.save"))) { + administration_set_ai_service(new_service); + } + } +} + void ui_draw_settings() { if (ImGui::BeginTabBar("SettingsTabBar")) @@ -360,6 +396,11 @@ void ui_draw_settings() ui_draw_cost_centers(); ImGui::EndTabItem(); } + if (ImGui::BeginTabItem(localize("settings.table.services"))) + { + ui_draw_services(); + ImGui::EndTabItem(); + } ImGui::EndTabBar(); } } \ No newline at end of file -- cgit v1.2.3-70-g09d2