summaryrefslogtreecommitdiff
path: root/src/ui/ui_settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/ui_settings.cpp')
-rw-r--r--src/ui/ui_settings.cpp60
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();
}
}