diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-09-12 18:21:53 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2025-09-12 18:21:53 +0200 |
| commit | 5159a53e58cd4b3652ce6255856d50e15c275f80 (patch) | |
| tree | 736d854c472cea59ae919cdc824730819787d4d0 /src/ui/ui_main.cpp | |
| parent | abf01f657d068aa6b22ab962cbe01b88f3b5f7ea (diff) | |
startup views & new administration setup
Diffstat (limited to 'src/ui/ui_main.cpp')
| -rw-r--r-- | src/ui/ui_main.cpp | 119 |
1 files changed, 59 insertions, 60 deletions
diff --git a/src/ui/ui_main.cpp b/src/ui/ui_main.cpp index 61c4784..bc02243 100644 --- a/src/ui/ui_main.cpp +++ b/src/ui/ui_main.cpp @@ -2,23 +2,11 @@ #include "imgui.h" #include "administration.hpp" #include "locales.hpp" +#include "tinyfiledialogs.h" +#include "administration_writer.hpp" -typedef enum -{ - INVOICES = 0, - EXPENSES = 1, - CONTACTS = 2, - REPORT_RESULTS = 3, - REPORT_TAX = 4, - PROJECTS = 5, - SETTINGS = 6, - LOG = 7, - - END -} dashboard_view_state; - -static dashboard_view_state dashboard_state = dashboard_view_state::END; -void (*drawcalls[dashboard_view_state::END])(void) = { +static main_state ui_state = main_state::UI_END; +void (*drawcalls[main_state::UI_END])(void) = { ui_draw_invoices, ui_draw_expenses, ui_draw_contacts, @@ -27,9 +15,10 @@ void (*drawcalls[dashboard_view_state::END])(void) = { ui_draw_projects, ui_draw_settings, ui_draw_log, + ui_draw_start, }; -void (*setupcalls[dashboard_view_state::END])(void) = { +void (*setupcalls[main_state::UI_END])(void) = { ui_setup_invoices, ui_setup_expenses, ui_setup_contacts, @@ -38,9 +27,10 @@ void (*setupcalls[dashboard_view_state::END])(void) = { ui_setup_projects, ui_setup_settings, 0, + 0, }; -void (*destroycalls[dashboard_view_state::END])(void) = { +void (*destroycalls[main_state::UI_END])(void) = { ui_destroy_invoices, ui_destroy_expenses, 0, @@ -49,33 +39,36 @@ void (*destroycalls[dashboard_view_state::END])(void) = { 0, ui_destroy_settings, 0, + 0, }; -static void set_dashboard_state(dashboard_view_state state) +void ui_set_state(main_state state) { - if (dashboard_state != dashboard_view_state::END && destroycalls[dashboard_state]) destroycalls[dashboard_state](); - dashboard_state = state; - if (setupcalls[dashboard_state]) setupcalls[dashboard_state](); + if (ui_state != main_state::UI_END && destroycalls[ui_state]) destroycalls[ui_state](); + ui_state = state; + if (setupcalls[ui_state]) setupcalls[ui_state](); } +void create_new_administration(); + void ui_draw_main() { - if (dashboard_state == dashboard_view_state::END) set_dashboard_state(dashboard_view_state::INVOICES); + if (ui_state == main_state::UI_END) ui_set_state(main_state::UI_START); // @localize if (ImGui::BeginMainMenuBar()) { if (ImGui::BeginMenu("File")) { - if (ImGui::MenuItem("Open", "Ctrl+O")) { /* Handle Open */ } - if (ImGui::MenuItem("Save", "Ctrl+S")) { /* Handle Save */ } + if (ImGui::MenuItem("New")) { create_new_administration(); } + if (ImGui::MenuItem("Open")) { /* Handle Save */ } ImGui::EndMenu(); } if (ImGui::BeginMenu("Help")) { - if (ImGui::MenuItem("Event Log")) { set_dashboard_state(dashboard_view_state::LOG); } + if (ImGui::MenuItem("Event Log")) { ui_set_state(main_state::UI_LOG); } ImGui::EndMenu(); } @@ -89,47 +82,53 @@ void ui_draw_main() ImGui::SetNextWindowPos(ImVec2(0, menuBarHeight)); ImGui::SetNextWindowSize(ImVec2(sidePanelWidth, io.DisplaySize.y - menuBarHeight - statusBarHeight)); - // Side panel - ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0)); - ImGui::Begin("SidePanel", nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse); - { - // Navigation buttons with custom styling - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.0f, 0.0f, 0.0f, 0.0f)); // Transparent background - ImGui::PushStyleVar(ImGuiStyleVar_ButtonTextAlign, ImVec2(0.0f, 0.5f)); - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0)); // Reduce spacing between buttons - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10.0f, 0.0f)); - - float buttonWidth = sidePanelWidth; - - if (ImGui::Button(localize("nav.invoices"), ImVec2(buttonWidth, 24))) set_dashboard_state(dashboard_view_state::INVOICES); - if (ImGui::Button(localize("nav.expenses"), ImVec2(buttonWidth, 24))) set_dashboard_state(dashboard_view_state::EXPENSES); - if (ImGui::Button(localize("nav.contacts"), ImVec2(buttonWidth, 24))) set_dashboard_state(dashboard_view_state::CONTACTS); - - static bool reports_opened = true; - if (ImGui::Button(localize("nav.reports"), ImVec2(buttonWidth, 24))) reports_opened = !reports_opened; - if (reports_opened) + if (ui_state != main_state::UI_START) { + // Side panel + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0)); + ImGui::Begin("SidePanel", nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse); { - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(20.0f, 0.0f)); - if (ImGui::Button(localize("nav.reports.results"), ImVec2(buttonWidth, 24))) set_dashboard_state(dashboard_view_state::REPORT_RESULTS); - if (ImGui::Button(localize("nav.reports.tax"), ImVec2(buttonWidth, 24))) set_dashboard_state(dashboard_view_state::REPORT_TAX); - ImGui::PopStyleVar(); + // Navigation buttons with custom styling + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.0f, 0.0f, 0.0f, 0.0f)); // Transparent background + ImGui::PushStyleVar(ImGuiStyleVar_ButtonTextAlign, ImVec2(0.0f, 0.5f)); + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0)); // Reduce spacing between buttons + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(10.0f, 0.0f)); + + float buttonWidth = sidePanelWidth; + + if (ImGui::Button(localize("nav.invoices"), ImVec2(buttonWidth, 24))) ui_set_state(main_state::UI_INVOICES); + if (ImGui::Button(localize("nav.expenses"), ImVec2(buttonWidth, 24))) ui_set_state(main_state::UI_EXPENSES); + if (ImGui::Button(localize("nav.contacts"), ImVec2(buttonWidth, 24))) ui_set_state(main_state::UI_CONTACTS); + + static bool reports_opened = true; + if (ImGui::Button(localize("nav.reports"), ImVec2(buttonWidth, 24))) reports_opened = !reports_opened; + if (reports_opened) + { + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(20.0f, 0.0f)); + if (ImGui::Button(localize("nav.reports.results"), ImVec2(buttonWidth, 24))) ui_set_state(main_state::UI_REPORT_RESULTS); + if (ImGui::Button(localize("nav.reports.tax"), ImVec2(buttonWidth, 24))) ui_set_state(main_state::UI_REPORT_TAX); + ImGui::PopStyleVar(); + } + + if (ImGui::Button(localize("nav.projects"), ImVec2(buttonWidth, 24))) ui_set_state(main_state::UI_PROJECTS); + if (ImGui::Button(localize("nav.settings"), ImVec2(buttonWidth, 24))) ui_set_state(main_state::UI_SETTINGS); + + ImGui::PopStyleColor(1); + ImGui::PopStyleVar(3); } + ImGui::End(); + ImGui::PopStyleVar(); - if (ImGui::Button(localize("nav.projects"), ImVec2(buttonWidth, 24))) set_dashboard_state(dashboard_view_state::PROJECTS); - if (ImGui::Button(localize("nav.settings"), ImVec2(buttonWidth, 24))) set_dashboard_state(dashboard_view_state::SETTINGS); - - ImGui::PopStyleColor(1); - ImGui::PopStyleVar(3); + ImGui::SetNextWindowPos(ImVec2(sidePanelWidth, menuBarHeight)); + ImGui::SetNextWindowSize(ImVec2(io.DisplaySize.x - sidePanelWidth, io.DisplaySize.y - menuBarHeight - statusBarHeight)); + } + else { + ImGui::SetNextWindowPos(ImVec2(0, 0)); + ImGui::SetNextWindowSize(ImVec2(io.DisplaySize.x, io.DisplaySize.y - statusBarHeight)); } - ImGui::End(); - ImGui::PopStyleVar(); - - ImGui::SetNextWindowPos(ImVec2(sidePanelWidth, menuBarHeight)); - ImGui::SetNextWindowSize(ImVec2(io.DisplaySize.x - sidePanelWidth, io.DisplaySize.y - menuBarHeight - statusBarHeight)); // Main content ImGui::Begin("AccountingMainWindow", nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse); - if (drawcalls[dashboard_state]) drawcalls[dashboard_state](); + if (drawcalls[ui_state]) drawcalls[ui_state](); ImGui::End(); // Status bar. |
