summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/locales/en.cpp10
-rw-r--r--src/views/contacts.cpp17
-rw-r--r--src/views/dashboard.cpp75
3 files changed, 86 insertions, 16 deletions
diff --git a/src/locales/en.cpp b/src/locales/en.cpp
index 5e31c5c..d23a766 100644
--- a/src/locales/en.cpp
+++ b/src/locales/en.cpp
@@ -10,6 +10,16 @@ locale_entry en_locales[] = {
{"form.change", "Change"},
{"form.delete", "Delete"},
{"form.confirmDelete", "Are you sure you want to delete this item?"},
+ {"form.required", "required"},
+
+ // Navigation.
+ {"nav.invoices", "Invoices"},
+ {"nav.expenses", "Expenses"},
+ {"nav.contacts", "Contacts"},
+ {"nav.reports", "Reports"},
+ {"nav.reports.results", "Results"},
+ {"nav.reports.tax", "Tax return"},
+ {"nav.Projects", "Projects"},
// Contact strings.
{"contact.form.identifier", "Identifier"},
diff --git a/src/views/contacts.cpp b/src/views/contacts.cpp
index de5e766..2ce300d 100644
--- a/src/views/contacts.cpp
+++ b/src/views/contacts.cpp
@@ -20,7 +20,7 @@ static void draw_required_tag()
{
ImDrawList* draw_list = ImGui::GetWindowDrawList();
- const char* text = "required";
+ const char* text = localize("form.required");
ImVec2 text_pos = ImGui::GetCursorScreenPos();
ImVec2 text_size = ImGui::CalcTextSize(text);
text_pos.y += text_size.y/4.0f;
@@ -51,23 +51,38 @@ static void show_edit_contact()
// Input fields
ImGui::BeginDisabled();
+
+ float widthAvailable = ImGui::GetContentRegionAvail().x;
+ ImGui::SetNextItemWidth(widthAvailable*0.2f);
ImGui::InputText(localize("contact.form.identifier"), edit_contact.id, IM_ARRAYSIZE(edit_contact.id));
ImGui::EndDisabled();
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.fullname"), localize("contact.form.fullname"), edit_contact.name, IM_ARRAYSIZE(edit_contact.name));
ImGui::SameLine();draw_required_tag();
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.address1"), localize("contact.form.address1"), edit_contact.address1, IM_ARRAYSIZE(edit_contact.address1));
ImGui::SameLine();draw_required_tag();
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.address2"), localize("contact.form.address2"), edit_contact.address2, IM_ARRAYSIZE(edit_contact.address2));
ImGui::SameLine();draw_required_tag();
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.taxnumber"), localize("contact.form.taxnumber"), edit_contact.taxid, IM_ARRAYSIZE(edit_contact.taxid));
+
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.businessnumber"), localize("contact.form.businessnumber"), edit_contact.businessid, IM_ARRAYSIZE(edit_contact.businessid));
+
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.email"), localize("contact.form.email"), edit_contact.email, IM_ARRAYSIZE(edit_contact.email));
+
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.phonenumber"), localize("contact.form.phonenumber"), edit_contact.phone_number, IM_ARRAYSIZE(edit_contact.phone_number));
+
+ ImGui::SetNextItemWidth(widthAvailable*0.5f);
ImGui::InputTextWithHint(localize("contact.form.bankaccount"), localize("contact.form.bankaccount"), edit_contact.bank_account, IM_ARRAYSIZE(edit_contact.bank_account));
bool can_save = strlen(edit_contact.name) > 0 && strlen(edit_contact.address1) > 0 && strlen(edit_contact.address2) > 0;
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.