diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/imgui_extensions.cpp | 2 | ||||
| -rw-r--r-- | src/ui/ui_invoices.cpp | 4 | ||||
| -rw-r--r-- | src/ui/ui_settings.cpp | 74 |
3 files changed, 60 insertions, 20 deletions
diff --git a/src/ui/imgui_extensions.cpp b/src/ui/imgui_extensions.cpp index a90549f..f8adb70 100644 --- a/src/ui/imgui_extensions.cpp +++ b/src/ui/imgui_extensions.cpp @@ -525,7 +525,7 @@ namespace ImGui } int selected_tax_rate_index = -1; - char rate_str_buf[MAX_LEN_LONG_DESC]; + char rate_str_buf[MAX_LEN_LONG_DESC] = {0}; if (selected_tax_rate) { char category_code_desc[MAX_LEN_LONG_DESC]; diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp index c4d393c..dc51fd6 100644 --- a/src/ui/ui_invoices.cpp +++ b/src/ui/ui_invoices.cpp @@ -503,9 +503,9 @@ static void draw_invoice_view() if (ImGui::Selectable(locale::get("ui.sendAs.email"), false)) { } - if (ImGui::Selectable(locale::get("ui.sendAs.einvoice"), false)) { + // if (ImGui::Selectable(locale::get("ui.sendAs.einvoice"), false)) { - } + // } ImGui::EndCombo(); } ImGui::PushItemWidth(0.0f); diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index c458260..240e376 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -33,7 +33,8 @@ u32 cost_center_count; cost_center* cost_centers = 0; static int select_company_tab = 0; -static ai_service new_service; +static ai_service new_ai_service; +static email_service new_email_service; void ui::destroy_settings() { @@ -54,7 +55,8 @@ void ui::setup_settings() cost_centers = (cost_center*)memops::alloc(cost_center_count * sizeof(cost_center)); administration::cost_center_get_all(cost_centers); - new_service = administration::get_ai_service(); + new_ai_service = administration::get_ai_service(); + new_email_service = administration::get_email_service(); } } @@ -242,12 +244,13 @@ static void draw_cost_centers() } } -static void draw_services() -{ +// Dropdown to select ai service. +// If a new service is selected -> model is set to first result in available model list. +static void draw_ai_service_ui() +{ static importer::model_list_request* model_request = 0; static bool set_model_on_load = false; - // AI service if (ImGui::CollapsingHeader(locale::get("settings.services.ai_service"))) { char* ai_service_names[AI_PROVIDER_END]; @@ -255,13 +258,13 @@ static void draw_services() ai_service_names[i] = importer::get_ai_provider_implementation((ai_provider)i).provider_name; } - if (ImGui::BeginCombo(locale::get("settings.services.ai_service.provider"), ai_service_names[new_service.provider])) + if (ImGui::BeginCombo(locale::get("settings.services.ai_service.provider"), ai_service_names[new_ai_service.provider])) { for (u32 n = 0; n < AI_PROVIDER_END; n++) { - bool is_selected = n == (uint32_t)new_service.provider; + bool is_selected = n == (uint32_t)new_ai_service.provider; if (ImGui::Selectable(ai_service_names[n], is_selected)) { - new_service.provider = (ai_provider)n; + new_ai_service.provider = (ai_provider)n; model_request = 0; set_model_on_load = true; } @@ -270,10 +273,10 @@ static void draw_services() } ImGui::InputTextWithHint(locale::get("settings.services.ai_service.pubkey"), locale::get("settings.services.ai_service.pubkey"), - new_service.api_key_public, sizeof(new_service.api_key_public)); + new_ai_service.api_key_public, sizeof(new_ai_service.api_key_public)); if (!model_request) { - model_request = importer::ai_get_available_models(new_service.provider); + model_request = importer::ai_get_available_models(new_ai_service.provider); } // Default to first result in model list, or hardcoded default model. @@ -282,22 +285,22 @@ static void draw_services() set_model_on_load = false; if (model_request->result_count > 0) { - strops::copy(new_service.model_name, model_request->result[0], sizeof(new_service.model_name)); + strops::copy(new_ai_service.model_name, model_request->result[0], sizeof(new_ai_service.model_name)); } else { - strops::copy(new_service.model_name, importer::get_ai_provider_implementation(new_service.provider).default_model, sizeof(new_service.model_name)); + strops::copy(new_ai_service.model_name, importer::get_ai_provider_implementation(new_ai_service.provider).default_model, sizeof(new_ai_service.model_name)); } } } if (model_request->status == importer::status::IMPORT_DONE && model_request->error == I_ERR_SUCCESS) { - if (ImGui::BeginCombo(locale::get("settings.services.ai_service.model"), new_service.model_name)) + if (ImGui::BeginCombo(locale::get("settings.services.ai_service.model"), new_ai_service.model_name)) { for (u32 n = 0; n < model_request->result_count; n++) { - bool is_selected = strops::equals(new_service.model_name, model_request->result[n]); + bool is_selected = strops::equals(new_ai_service.model_name, model_request->result[n]); if (ImGui::Selectable(model_request->result[n], is_selected)) { - strops::copy(new_service.model_name, model_request->result[n], sizeof(new_service.model_name)); + strops::copy(new_ai_service.model_name, model_request->result[n], sizeof(new_ai_service.model_name)); } } ImGui::EndCombo(); @@ -317,7 +320,7 @@ static void draw_services() ImGui::SameLine(); } - ImGui::TextUnformatted(new_service.model_name); + ImGui::TextUnformatted(new_ai_service.model_name); ImGui::EndComboPreview(); } @@ -329,11 +332,48 @@ static void draw_services() if (ImGui::Button(locale::get("form.save"), true)) { administration_writer::set_write_completed_event_callback(0); - administration::set_ai_service(new_service); + administration::set_ai_service(new_ai_service); } } } +static void draw_email_service_ui() +{ + if (ImGui::CollapsingHeader(locale::get("settings.services.email_service"))) + { + char* email_service_names[EMAIL_PROVIDER_END]; + for (u32 i = 0; i < EMAIL_PROVIDER_END; i++) { + email_service_names[i] = importer::get_email_provider_implementation((email_provider)i).provider_name; + } + + if (ImGui::BeginCombo(locale::get("settings.services.email_service.provider"), email_service_names[new_ai_service.provider])) + { + for (u32 n = 0; n < EMAIL_PROVIDER_END; n++) + { + bool is_selected = n == (uint32_t)new_email_service.provider; + if (ImGui::Selectable(email_service_names[n], is_selected)) { + new_email_service.provider = (email_provider)n; + } + } + ImGui::EndCombo(); + } + + ImGui::InputTextWithHint(locale::get("settings.services.email_service.pubkey"), + locale::get("settings.services.email_service.pubkey"), new_email_service.api_key, sizeof(new_email_service.api_key)); + + if (ImGui::Button(locale::get("form.save"), true)) { + administration_writer::set_write_completed_event_callback(0); + administration::set_email_service(new_email_service); + } + } +} + +static void draw_services() +{ + draw_email_service_ui(); + draw_ai_service_ui(); +} + void ui::draw_settings() { if (ImGui::BeginTabBar("SettingsTabBar")) |
