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