diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/helpers.cpp | 58 | ||||
| -rw-r--r-- | src/ui/ui_main.cpp | 3 | ||||
| -rw-r--r-- | src/ui/ui_settings.cpp | 15 |
3 files changed, 76 insertions, 0 deletions
diff --git a/src/ui/helpers.cpp b/src/ui/helpers.cpp index 6ca1bd2..c15528e 100644 --- a/src/ui/helpers.cpp +++ b/src/ui/helpers.cpp @@ -1,8 +1,66 @@ +#include <tinyfiledialogs.h> + #include "ui.hpp" #include "imgui.h" #include "locales.hpp" #include "strops.hpp" +static ui_status current_status; + +void ui_draw_status() +{ + float region_width = ImGui::GetContentRegionAvail().x; + float text_width = ImGui::CalcTextSize(current_status.text).x; + + // Move cursor so that the text ends at the right edge + if (current_status.visible) + { + ImGui::SetCursorPosX(ImGui::GetCursorPosX() + region_width - text_width); + ImGui::PushStyleColor(ImGuiCol_Text, current_status.color); + ImGui::TextUnformatted(current_status.text); + ImGui::PopStyleColor(); + } + + ImGuiIO& io = ImGui::GetIO(); + current_status.time += io.DeltaTime; + + if (current_status.time >= STATUS_FLASH_INTERVAL && current_status.flash_count < STATUS_MAX_FLASHES) + { + current_status.visible = !current_status.visible; + if (current_status.visible) current_status.flash_count++; + current_status.time = 0.0f; + } + + if (current_status.time >= STATUS_DURATION) + { + current_status.text[0] = 0; + } +} + +void ui_set_status_ex(const char* txt, int color) +{ + current_status.flash_count = 0; + current_status.visible = true; + current_status.time = 0.0f; + current_status.color = color; + strops_copy(current_status.text, txt, STATUS_TEXT_LEN); +} + +void ui_set_status_error(const char* txt) +{ + ui_set_status_ex(txt, COLOR_ERROR); +} + +void ui_set_status(const char* txt) +{ + ui_set_status_ex(txt, COLOR_DEFAULT); +} + +ui_status ui_get_status() +{ + return current_status; +} + void ui_helper_draw_required_tag() { ImDrawList* draw_list = ImGui::GetWindowDrawList(); diff --git a/src/ui/ui_main.cpp b/src/ui/ui_main.cpp index f6b179e..33747f1 100644 --- a/src/ui/ui_main.cpp +++ b/src/ui/ui_main.cpp @@ -143,6 +143,9 @@ void ui_draw_main() ImGui::Text("%s: %s", localize("ui.workingOn"), administration_file_path_get()); } + ImGui::SameLine(); + ui_draw_status(); + ImGui::End(); ImGui::PopStyleVar(); }
\ No newline at end of file diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index 3f9ab6d..9cc2cd9 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -6,6 +6,7 @@ #include "imgui.h" #include "administration.hpp" #include "locales.hpp" +#include "administration_writer.hpp" extern void draw_contact_form(contact* buffer, bool viewing_only = false); @@ -124,6 +125,12 @@ static void ui_draw_vat_rates() is_adding_item = false; administration_tax_bracket_update(new_tax_bracket); + if (administration_writer_save_tax_brackets()) { + ui_set_status(localize("status.saved")); + } + else { + ui_set_status_error(localize("status.saveFailed")); + } ui_destroy_settings(); ui_setup_settings(); @@ -170,6 +177,12 @@ static void ui_draw_vat_rates() is_adding_item = false; administration_tax_bracket_add(new_tax_bracket); + if (administration_writer_save_tax_brackets()) { + ui_set_status(localize("status.saved")); + } + else { + ui_set_status_error(localize("status.saveFailed")); + } ui_destroy_settings(); ui_setup_settings(); @@ -226,6 +239,7 @@ static void ui_draw_cost_centers() is_adding_item = false; administration_cost_center_update(new_cost_center); + administration_writer_save_cost_centers(); memset(&new_cost_center, 0, sizeof(new_cost_center)); ui_destroy_settings(); @@ -280,6 +294,7 @@ static void ui_draw_cost_centers() is_adding_item = false; is_editing_item = false; administration_cost_center_add(new_cost_center); + administration_writer_save_cost_centers(); ui_destroy_settings(); ui_setup_settings(); |
