diff options
| author | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-11 16:20:15 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-11 16:20:15 +0100 |
| commit | 1ab0d5fb96624e0fb92b961fc02b3e6344126033 (patch) | |
| tree | 78aa653a5ca9c894ec6c4dc2000d1e6115c4c5b8 /src/ui/ui_settings.cpp | |
| parent | 08d42688d851eb134da496be721e234f53ff8d0b (diff) | |
add icons for external providers
Diffstat (limited to 'src/ui/ui_settings.cpp')
| -rw-r--r-- | src/ui/ui_settings.cpp | 60 |
1 files changed, 50 insertions, 10 deletions
diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index f0a0a53..95f24e3 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -16,6 +16,7 @@ #include "ui.hpp" +#include "assets.hpp" #include "strops.hpp" #include "memops.hpp" #include "locales.hpp" @@ -264,18 +265,20 @@ static void draw_ai_service_ui() if (ImGui::CollapsingHeader(locale::get("settings.services.ai_service"))) { + const char* ai_service_icons[AI_PROVIDER_END]; const char* ai_service_names[AI_PROVIDER_END]; for (u32 i = 0; i < AI_PROVIDER_END; i++) { - ai_service_names[i] = importer::get_ai_provider_implementation((ai_provider)i).provider_name; + importer::ai_provider_impl impl = importer::get_ai_provider_implementation((ai_provider)i); + ai_service_names[i] = impl.provider_name; + ai_service_icons[i] = impl.icon_name; } - if (ImGui::BeginCombo(locale::get("settings.services.ai_service.provider"), ai_service_names[new_ai_service.provider])) - { + if (ImGui::BeginCombo(locale::get("settings.services.ai_service.provider"), NULL, 1 << 20)) { for (u32 n = 0; n < AI_PROVIDER_END; n++) { + ImGui::PushID(n); bool is_selected = n == (uint32_t)new_ai_service.provider; - if (ImGui::Selectable(ai_service_names[n], is_selected)) { - + if (ImGui::Selectable("##emailProviderOption", is_selected)) { ai_service service = administration::get_ai_service((ai_provider)n); new_ai_service.provider = (ai_provider)n; strops::copy(new_ai_service.model_name, service.model_name, MAX_LEN_SHORT_DESC); @@ -284,9 +287,25 @@ static void draw_ai_service_ui() model_request = 0; set_model_on_load = strops::length(new_ai_service.model_name) == 0; } + + ImGui::SameLine(); + ImGui::Image(assets::load_image(ai_service_icons[n]), ImVec2(16, 16)); + + ImGui::SameLine(); + ImGui::Text(ai_service_names[n]); + + ImGui::PopID(); } ImGui::EndCombo(); } + + ImGui::BeginComboPreview(); + { + ImGui::Image(assets::load_image(ai_service_icons[new_ai_service.provider]), ImVec2(16, 16)); + ImGui::Text(ai_service_names[new_ai_service.provider]); + + ImGui::EndComboPreview(); + } ImGui::InputTextWithHint(locale::get("settings.services.ai_service.pubkey"), locale::get("settings.services.ai_service.pubkey"), new_ai_service.api_key_public, sizeof(new_ai_service.api_key_public)); @@ -348,6 +367,7 @@ static void draw_ai_service_ui() administration_writer::set_write_completed_event_callback(0); administration::set_active_ai_service(new_ai_service); } + ImGui::Spacing(); } } @@ -356,21 +376,40 @@ static void draw_email_service_ui() if (ImGui::CollapsingHeader(locale::get("settings.services.email_service"))) { const char* email_service_names[EMAIL_PROVIDER_END]; + const char* email_service_images[EMAIL_PROVIDER_END]; for (u32 i = 0; i < EMAIL_PROVIDER_END; i++) { - email_service_names[i] = exporter::get_email_provider_implementation((email_provider)i).provider_name; + exporter::email_provider_impl impl = exporter::get_email_provider_implementation((email_provider)i); + email_service_names[i] = impl.provider_name; + email_service_images[i] = impl.icon_name; } - - if (ImGui::BeginCombo(locale::get("settings.services.email_service.provider"), email_service_names[new_ai_service.provider])) - { + + if (ImGui::BeginCombo("##emailProviderDropdown", NULL, 1 << 20)) { for (u32 n = 0; n < EMAIL_PROVIDER_END; n++) { + ImGui::PushID(n); bool is_selected = n == (uint32_t)new_email_service.provider; - if (ImGui::Selectable(email_service_names[n], is_selected)) { + if (ImGui::Selectable("##emailProviderOption", is_selected)) { new_email_service.provider = (email_provider)n; } + + ImGui::SameLine(); + ImGui::Image(assets::load_image(email_service_images[n]), ImVec2(16, 16)); + + ImGui::SameLine(); + ImGui::Text(email_service_names[n]); + + ImGui::PopID(); } ImGui::EndCombo(); } + + ImGui::BeginComboPreview(); + { + ImGui::Image(assets::load_image(email_service_images[new_email_service.provider]), ImVec2(16, 16)); + ImGui::Text(email_service_names[new_email_service.provider]); + + ImGui::EndComboPreview(); + } 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)); @@ -381,6 +420,7 @@ static void draw_email_service_ui() administration_writer::set_write_completed_event_callback(0); administration::set_email_service(new_email_service); } + ImGui::Spacing(); } } |
