diff options
Diffstat (limited to 'src/ui/ui_contacts.cpp')
| -rw-r--r-- | src/ui/ui_contacts.cpp | 103 |
1 files changed, 61 insertions, 42 deletions
diff --git a/src/ui/ui_contacts.cpp b/src/ui/ui_contacts.cpp index e19f571..c381db5 100644 --- a/src/ui/ui_contacts.cpp +++ b/src/ui/ui_contacts.cpp @@ -18,30 +18,33 @@ void ui_setup_contacts() memset(&selected_for_removal, 0, sizeof(contact)); } -bool draw_contact_form(contact* buffer, bool back_button_enabled = true, bool viewing_only = false) +void draw_contact_form(contact* buffer, bool viewing_only = false) { + bool with_autocomplete = false; const char* selected_country = NULL; - if (back_button_enabled) - { - if (ImGui::Button(localize("form.back"))) { - current_view_state = view_state::LIST; - selected_country = 0; - return false; - } - } ImGui::Spacing(); float widthAvailable = ImGui::GetContentRegionAvail().x; + ImGui::BeginDisabled(); + // 1. Identifier - //ImGui::BeginDisabled(); //ImGui::SetNextItemWidth(widthAvailable*0.2f); //ImGui::InputText(localize("contact.form.identifier"), buffer->id, IM_ARRAYSIZE(buffer->id)); - //if (!viewing_only) ImGui::EndDisabled(); + + if (!viewing_only) ImGui::EndDisabled(); // 2. Full name ImGui::SetNextItemWidth(widthAvailable*0.5f); - ImGui::InputTextWithHint(localize("contact.form.fullname"), localize("contact.form.fullname"), buffer->name, IM_ARRAYSIZE(buffer->name)); + if (with_autocomplete) { + contact autocomplete_list[5]; + int autocomplete_count = 5; + char* autocomplete_strings[5] = { "1", "2", "3", "4", "5" }; + + ui_helper_TextInputWithAutocomplete(localize("contact.form.fullname"), localize("contact.form.fullname"), + buffer->name, IM_ARRAYSIZE(buffer->name), (char**)autocomplete_strings, autocomplete_count); + } + else ImGui::InputTextWithHint(localize("contact.form.fullname"), localize("contact.form.fullname"), buffer->name, IM_ARRAYSIZE(buffer->name)); ImGui::SameLine();ui_helper_draw_required_tag(); // 3. Address line 1 @@ -126,23 +129,6 @@ bool draw_contact_form(contact* buffer, bool back_button_enabled = true, bool vi ImGui::InputTextWithHint(localize("contact.form.bankaccount"), localize("contact.form.bankaccount"), buffer->bank_account, IM_ARRAYSIZE(buffer->bank_account)); if (viewing_only) ImGui::EndDisabled(); - - if (!viewing_only) { - bool can_save = strlen(buffer->name) > 0 && strlen(buffer->address.address1) > 0 && - strlen(buffer->address.address2) > 0 && strlen(buffer->address.country_code) > 0; - - if (!can_save) ImGui::BeginDisabled(); - // Save button - ImGui::Spacing(); - if (ImGui::Button(localize("form.save"))) { - return true; - } - if (!can_save) ImGui::EndDisabled(); - } - else { - // TODO list invoices connected to contact. - } - return false; } static void draw_contact_list() @@ -248,25 +234,58 @@ static void draw_contact_list() } } +static void ui_draw_contacts_create() +{ + if (ImGui::Button(localize("form.back"))) { + current_view_state = view_state::LIST; + } + + draw_contact_form(&active_contact); + + bool can_save = administration_is_contact_valid(active_contact); + if (!can_save) ImGui::BeginDisabled(); + // Save button + ImGui::Spacing(); + if (ImGui::Button(localize("form.save"))) { + administration_create_contact(active_contact); + current_view_state = view_state::LIST; + } + if (!can_save) ImGui::EndDisabled(); +} + +static void ui_draw_contacts_update() +{ + if (ImGui::Button(localize("form.back"))) { + current_view_state = view_state::LIST; + } + + draw_contact_form(&active_contact); + + bool can_save = administration_is_contact_valid(active_contact); + if (!can_save) ImGui::BeginDisabled(); + // Save button + ImGui::Spacing(); + if (ImGui::Button(localize("form.save"))) { + administration_update_contact(active_contact); + current_view_state = view_state::LIST; + } + if (!can_save) ImGui::EndDisabled(); +} + void ui_draw_contacts() { switch(current_view_state) { case view_state::LIST: draw_contact_list(); break; - case view_state::CREATE: - if (draw_contact_form(&active_contact)) - { - administration_create_contact(active_contact); + case view_state::CREATE: ui_draw_contacts_create(); break; + case view_state::EDIT: ui_draw_contacts_update(); break; + + case view_state::VIEW: + if (ImGui::Button(localize("form.back"))) { current_view_state = view_state::LIST; - } - break; - case view_state::EDIT: - if (draw_contact_form(&active_contact)) - { - administration_update_contact(active_contact); - current_view_state = view_state::LIST; - } + } + + draw_contact_form(&active_contact, true); break; - case view_state::VIEW: draw_contact_form(&active_contact, true, true); break; } }
\ No newline at end of file |
