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