diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/ui_contacts.cpp | 5 | ||||
| -rw-r--r-- | src/ui/ui_invoices.cpp | 58 | ||||
| -rw-r--r-- | src/ui/ui_main.cpp | 2 | ||||
| -rw-r--r-- | src/ui/ui_projects.cpp | 9 |
4 files changed, 63 insertions, 11 deletions
diff --git a/src/ui/ui_contacts.cpp b/src/ui/ui_contacts.cpp index 0ade9b0..e19f571 100644 --- a/src/ui/ui_contacts.cpp +++ b/src/ui/ui_contacts.cpp @@ -14,7 +14,7 @@ static contact active_contact; void ui_setup_contacts() { current_view_state = view_state::LIST; - memset(&active_contact, 0, sizeof(contact)); + active_contact = active_contact = administration_create_empty_contact(); memset(&selected_for_removal, 0, sizeof(contact)); } @@ -156,8 +156,7 @@ static void draw_contact_list() if (ImGui::Button(localize("form.create"))) { current_view_state = view_state::CREATE; - memset(&active_contact, 0, sizeof(contact)); - snprintf(active_contact.id, IM_ARRAYSIZE(active_contact.id), "C/%d", administration_create_id()); + active_contact = administration_create_empty_contact(); } if (current_page >= max_page-1) current_page = max_page-1; diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp index ea45f4e..26f60c4 100644 --- a/src/ui/ui_invoices.cpp +++ b/src/ui/ui_invoices.cpp @@ -6,10 +6,64 @@ #include "administration.hpp" #include "locales.hpp" -static view_state current_view_state = LIST; +static view_state current_view_state = view_state::LIST; static invoice active_invoice; -void ui_draw_invoices() +void ui_setup_invoices() +{ + current_view_state = view_state::LIST; + active_invoice = administration_create_empty_invoice(); +} + +bool draw_invoice_form(invoice* buffer, bool back_button_enabled = true, bool viewing_only = false) { + if (back_button_enabled) + { + if (ImGui::Button(localize("form.back"))) { + current_view_state = view_state::LIST; + return false; + } + } + ImGui::Spacing(); + float widthAvailable = ImGui::GetContentRegionAvail().x; + + // 1. Identifier + //ImGui::BeginDisabled(); + //ImGui::SetNextItemWidth(widthAvailable*0.2f); + //ImGui::InputText(localize("contact.form.identifier"), buffer->id, IM_ARRAYSIZE(buffer->id)); + // 2. Sequential number + ImGui::SetNextItemWidth(widthAvailable*0.5f); + ImGui::InputTextWithHint("Invoice number", "Invoice number", buffer->sequential_number, IM_ARRAYSIZE(buffer->sequential_number)); + ImGui::SameLine();ui_helper_draw_required_tag(); + if (!viewing_only) ImGui::EndDisabled(); + + return false; +} + +void draw_invoices_list() +{ + // Table header controls: create button and pagination. + if (ImGui::Button(localize("form.create"))) + { + current_view_state = view_state::CREATE; + active_invoice = administration_create_empty_invoice(); + } +} + +void ui_draw_invoices() +{ + switch(current_view_state) + { + case view_state::LIST: draw_invoices_list(); break; + case view_state::CREATE: + if (draw_invoice_form(&active_invoice)) + { + //administration_create_invoice(active_invoice); + current_view_state = view_state::LIST; + } + break; + case view_state::EDIT: break; + case view_state::VIEW: break; + } }
\ No newline at end of file diff --git a/src/ui/ui_main.cpp b/src/ui/ui_main.cpp index 10f9cea..05a98b4 100644 --- a/src/ui/ui_main.cpp +++ b/src/ui/ui_main.cpp @@ -28,7 +28,7 @@ void (*drawcalls[dashboard_view_state::END])(void) = { }; void (*setupcalls[dashboard_view_state::END])(void) = { - 0, + ui_setup_invoices, 0, ui_setup_contacts, 0, diff --git a/src/ui/ui_projects.cpp b/src/ui/ui_projects.cpp index 377155e..5cb412f 100644 --- a/src/ui/ui_projects.cpp +++ b/src/ui/ui_projects.cpp @@ -13,7 +13,7 @@ static project active_project; void ui_setup_projects() { current_view_state = view_state::LIST; - memset(&active_project, 0, sizeof(contact)); + active_project = administration_create_empty_project(); } static void draw_project_form() @@ -22,7 +22,7 @@ static void draw_project_form() if (ImGui::Button(localize("form.back"))) { current_view_state = view_state::LIST; - memset(&active_project, 0, sizeof(project)); + active_project = administration_create_empty_project(); selected_country = 0; return; } @@ -57,9 +57,9 @@ static void draw_project_form() else if (current_view_state == view_state::EDIT) administration_update_project(active_project); - memset(&active_project, 0, sizeof(project)); current_view_state = view_state::LIST; selected_country = 0; + active_project = administration_create_empty_project(); } if (!can_save) ImGui::EndDisabled(); } @@ -78,8 +78,7 @@ static void draw_project_list() if (ImGui::Button(localize("form.create"))) { current_view_state = view_state::CREATE; - memset(&active_project, 0, sizeof(project)); - snprintf(active_project.id, IM_ARRAYSIZE(active_project.id), "P/%d", administration_create_id()); + active_project = administration_create_empty_project(); } if (current_page >= max_page-1) current_page = max_page-1; |
