diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/imgui_extensions.cpp | 65 | ||||
| -rw-r--r-- | src/ui/ui_invoices.cpp | 36 | ||||
| -rw-r--r-- | src/ui/ui_settings.cpp | 6 |
3 files changed, 91 insertions, 16 deletions
diff --git a/src/ui/imgui_extensions.cpp b/src/ui/imgui_extensions.cpp index f8adb70..05eeb7b 100644 --- a/src/ui/imgui_extensions.cpp +++ b/src/ui/imgui_extensions.cpp @@ -1,3 +1,5 @@ +#include <time.h> + #include "ui.hpp" #include "strops.hpp" #include "memops.hpp" @@ -707,4 +709,67 @@ namespace ImGui ImGui::CountryDropdown(buffer->country_code, IM_ARRAYSIZE(buffer->country_code), active_countries_only); } + + bool BeginExportDropdown(const char* title, const char* text, exporter::export_request* active_request) + { + static bool is_new_request = false; + static bool show_status_change = false; + static time_t status_changed_at = 0; + static e_err last_err; + + if (active_request && active_request->status == exporter::status::EXPORT_DONE && is_new_request) + { + is_new_request = false; + show_status_change = true; + last_err = active_request->error; + status_changed_at = time(NULL); + } + + if (active_request && active_request->status != exporter::status::EXPORT_DONE) { + is_new_request = true; + ImGui::BeginDisabled(); + ImGui::BeginCombo("##sendStatus", NULL, 1 << 20); + { + if (ImGui::BeginComboPreview()) + { + ImGui::Text("Sending"); // @Localize + ImGui::SameLine(); + ImGui::LoadingIndicatorCircleSmall(); + ImGui::EndComboPreview(); + } + } + ImGui::EndDisabled(); + } + else if (show_status_change) { + ImGui::BeginDisabled(); + ImGui::BeginCombo("##sendStatus", NULL, 1 << 20); + { + if (ImGui::BeginComboPreview()) + { + if (last_err == E_ERR_SUCCESS) { + ImGui::PushStyleColor(ImGuiCol_Text, config::colors::COLOR_SUCCESS); + ImGui::Text("√"); + ImGui::PopStyleColor(); + ImGui::Text("Success"); // @Localize + } + else { + ImGui::PushStyleColor(ImGuiCol_Text, config::colors::COLOR_ERROR); + ImGui::Text("X"); + ImGui::PopStyleColor(); + ImGui::Text("Failed"); // @Localize + } + ImGui::EndComboPreview(); + } + } + ImGui::EndDisabled(); + + if (difftime(time(NULL), status_changed_at) > 1.0f) { + show_status_change = false; + } + } + else { + return ImGui::BeginCombo(title, text); + } + return false; + } }
\ No newline at end of file diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp index 6a50c7f..eb04af4 100644 --- a/src/ui/ui_invoices.cpp +++ b/src/ui/ui_invoices.cpp @@ -20,6 +20,7 @@ #include "ui.hpp" #include "imgui.h" #include "memops.hpp" +#include "config.hpp" #include "strops.hpp" #include "locales.hpp" #include "importer.hpp" @@ -484,6 +485,28 @@ static void draw_invoice_create() ImGui::EndChild(); } +static void draw_send_options() +{ + static exporter::export_request* active_request = NULL; + + if (ImGui::BeginExportDropdown("##Send", locale::get("ui.sendAs"), active_request)) + { + if (ImGui::Selectable(locale::get("ui.sendAs.email"), false)) { + active_request = exporter::send_email("test@test-vz9dlemj2564kj50.mlsender.net", "aldrikboy@gmail.com", "test", "test 123", + [](e_err status) { + if (status == E_ERR_SUCCESS) { + administration::activity_add(ACTIVITY_USER, active_invoice.id, "Sent email", 0); + _reload_activities(); + } + }); + } + // if (ImGui::Selectable(locale::get("ui.sendAs.einvoice"), false)) { + + // } + ImGui::EndCombo(); + } +} + static void draw_invoice_view() { if (ImGui::Button(locale::get("form.back"), true, false)) { @@ -499,17 +522,8 @@ static void draw_invoice_view() ImGui::SameLine(); - ImGui::PushItemWidth(100.0f); - if (ImGui::BeginCombo("##Send", locale::get("ui.sendAs"))) - { - if (ImGui::Selectable(locale::get("ui.sendAs.email"), false)) { - exporter::send_email("test@test-vz9dlemj2564kj50.mlsender.net", "aldrikboy@gmail.com", "test", "test 123"); - } - // if (ImGui::Selectable(locale::get("ui.sendAs.einvoice"), false)) { - - // } - ImGui::EndCombo(); - } + ImGui::PushItemWidth(180.0f); + draw_send_options(); ImGui::PushItemWidth(0.0f); ImGui::SameLine(); diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index fd0d5b9..fb02738 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -314,11 +314,7 @@ static void draw_ai_service_ui() if (ImGui::BeginComboPreview()) { if (model_request->status != importer::status::IMPORT_DONE) { - float radius = 10.0f; - const ImVec4 col = ImGui::GetStyleColorVec4(ImGuiCol_ButtonHovered); - const ImVec4 bg = ImGui::GetStyleColorVec4(ImGuiCol_Button); - ImGui::LoadingIndicatorCircle(radius, bg, col, 6, 4.0f); - + ImGui::LoadingIndicatorCircleSmall(); ImGui::SameLine(); } ImGui::TextUnformatted(new_ai_service.model_name); |
