summaryrefslogtreecommitdiff
path: root/src/views/dashboard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/dashboard.cpp')
-rw-r--r--src/views/dashboard.cpp75
1 files changed, 60 insertions, 15 deletions
diff --git a/src/views/dashboard.cpp b/src/views/dashboard.cpp
index 16d31c4..45658b0 100644
--- a/src/views/dashboard.cpp
+++ b/src/views/dashboard.cpp
@@ -2,6 +2,28 @@
#include "imgui.h"
+typedef enum
+{
+ INVOICES = 0,
+ EXPENSES = 1,
+ CONTACTS = 2,
+ REPORT_RESULTS = 3,
+ REPORT_TAX = 4,
+ PROJECTS = 5,
+
+ END
+} dashboard_view_state;
+
+static dashboard_view_state view_state = dashboard_view_state::INVOICES;
+void (*drawcalls[dashboard_view_state::END])(void) = {
+ 0,
+ 0,
+ show_contacts,
+ 0,
+ 0,
+ 0,
+};
+
void show_dashboard()
{
if (ImGui::BeginMainMenuBar())
@@ -19,27 +41,50 @@ void show_dashboard()
ImGuiIO& io = ImGui::GetIO();
float menuBarHeight = ImGui::GetFrameHeight();
float statusBarHeight = 26.0f;
+ float sidePanelWidth = 120.0f;
ImGui::SetNextWindowPos(ImVec2(0, menuBarHeight));
- ImGui::SetNextWindowSize(ImVec2(io.DisplaySize.x, io.DisplaySize.y - menuBarHeight - statusBarHeight));
+ ImGui::SetNextWindowSize(ImVec2(sidePanelWidth, io.DisplaySize.y - menuBarHeight - statusBarHeight));
- ImGui::Begin("AccountingMainWindow", nullptr, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse);
+ // 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))) view_state = dashboard_view_state::INVOICES;
+ if (ImGui::Button(localize("nav.expenses"), ImVec2(buttonWidth, 24))) view_state = dashboard_view_state::EXPENSES;
+ if (ImGui::Button(localize("nav.contacts"), ImVec2(buttonWidth, 24))) view_state = dashboard_view_state::CONTACTS;
- ImGui::AlignTextToFramePadding();
- const char* names[3] = { "Incoming", "Outgoing", "Contacts" };
- void (*drawcalls[3])(void) = { show_contacts, show_contacts, show_contacts };
+ static bool reports_opened = false;
+ 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))) view_state = dashboard_view_state::REPORT_RESULTS;
+ if (ImGui::Button(localize("nav.reports.tax"), ImVec2(buttonWidth, 24))) view_state = dashboard_view_state::REPORT_TAX;
+ ImGui::PopStyleVar();
+ }
- if (ImGui::BeginTabBar("mainNavigationTabBar", 0))
- {
- for (int n = 0; n < IM_ARRAYSIZE(names); n++)
- if (ImGui::BeginTabItem(names[n], 0, ImGuiTabItemFlags_None))
- {
- ImGui::Spacing();
- drawcalls[n]();
- ImGui::EndTabItem();
- }
- ImGui::EndTabBar();
+ if (ImGui::Button(localize("nav.Projects"), ImVec2(buttonWidth, 24))) view_state = dashboard_view_state::PROJECTS;
+
+ ImGui::PopStyleColor(1);
+ ImGui::PopStyleVar(3);
}
+ 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[view_state]) drawcalls[view_state]();
ImGui::End();
// Status bar.