summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/administration.cpp12
-rw-r--r--src/locales/en.cpp3
-rw-r--r--src/ui/imgui_extensions.cpp36
-rw-r--r--src/ui/ui_contacts.cpp8
-rw-r--r--src/ui/ui_expenses.cpp8
-rw-r--r--src/ui/ui_invoices.cpp10
-rw-r--r--src/ui/ui_projects.cpp8
7 files changed, 72 insertions, 13 deletions
diff --git a/src/administration.cpp b/src/administration.cpp
index 495f847..6e6cfb4 100644
--- a/src/administration.cpp
+++ b/src/administration.cpp
@@ -799,9 +799,6 @@ void administration::company_info_set(contact data)
// =======================
a_err administration::contact_import(contact data)
{
- a_err result = administration::contact_is_valid(data);
- if (result != A_ERR_SUCCESS) return result;
-
if (strcmp(data.id, MY_COMPANY_ID) == 0)
{
administration::company_info_import(data);
@@ -1104,9 +1101,6 @@ char* administration::project_get_status_string(project data)
a_err administration::project_import(project data)
{
- a_err result = administration::project_is_valid(data);
- if (result != A_ERR_SUCCESS) return result;
-
project* new_project = (project*)memops::alloc(sizeof(project));
if (!new_project) return A_ERR_GENERIC;
@@ -1443,9 +1437,6 @@ a_err administration::cost_center_is_valid(cost_center data)
a_err administration::cost_center_import(cost_center data)
{
- a_err result = administration::cost_center_is_valid(data);
- if (result != A_ERR_SUCCESS) return result;
-
cost_center* tb = (cost_center*)memops::alloc(sizeof(cost_center));
if (!tb) return A_ERR_GENERIC;
@@ -1701,9 +1692,6 @@ a_err administration::invoice_update(invoice* inv)
a_err administration::invoice_import(invoice* inv)
{
- //a_err result = administration::invoice_is_valid(inv);
- //if (result != A_ERR_SUCCESS) return result;
-
inv->is_triangulation = !(memcmp(&inv->addressee.address, &inv->customer.address, sizeof(address)) == 0);
inv->issued_at -= (inv->issued_at % 86400);
diff --git a/src/locales/en.cpp b/src/locales/en.cpp
index e68e930..8ab4eaf 100644
--- a/src/locales/en.cpp
+++ b/src/locales/en.cpp
@@ -24,6 +24,9 @@ locale_entry en_locales[] = {
{"ui.invoiceRequirementP2", "needs to be completed before adding invoices."},
{"ui.next", "Next >>"},
{"ui.prev", "<< Prev"},
+ {"ui.tooltip.invalidInvoice", "Invoice has missing information."},
+ {"ui.tooltip.invalidProject", "Project has missing information."},
+ {"ui.tooltip.invalidContact", "Contact has missing information."},
// Status strings.
{"status.saved", "[Saved to disk]"},
diff --git a/src/ui/imgui_extensions.cpp b/src/ui/imgui_extensions.cpp
index ee0bebb..0bfd5c8 100644
--- a/src/ui/imgui_extensions.cpp
+++ b/src/ui/imgui_extensions.cpp
@@ -470,4 +470,40 @@ namespace ImGui
ImGui::EndCombo();
}
}
+
+ bool DrawWarningIcon(float radius)
+ {
+ ImGui::SameLine();
+
+ ImVec2 cursor_pos = ImGui::GetCursorScreenPos();
+ ImVec2 center = ImVec2(cursor_pos.x + radius, cursor_pos.y + radius + 4);
+
+ ImGui::PushID((int)center.y);
+ ImDrawList* draw_list = ImGui::GetWindowDrawList();
+
+ // Draw red circle
+ draw_list->AddCircleFilled(center, radius, IM_COL32(255, 0, 0, 255));
+
+ // Draw exclamation mark
+ float line_height = radius * 0.9f;
+ float line_thickness = radius * 0.3f;
+ float dot_radius = radius * 0.2f;
+
+ ImVec2 line_start(center.x - line_thickness/3.0f, center.y - line_height * 0.7f);
+ ImVec2 line_end(center.x - line_thickness/3.0f, center.y + line_height * 0.1f);
+
+ // Vertical bar
+ draw_list->AddLine(line_start, line_end, IM_COL32(255, 255, 255, 255), line_thickness);
+
+ // Bottom dot
+ draw_list->AddCircleFilled(ImVec2(center.x - dot_radius/3.0f, center.y + line_height * 0.55f), dot_radius, IM_COL32(255, 255, 255, 255));
+
+ ImGui::SetCursorScreenPos(ImVec2(center.x - radius, center.y - radius));
+ ImGui::InvisibleButton("##warning_icon", ImVec2(radius * 2, radius * 2));
+ ImGui::PopID();
+ if (ImGui::IsItemHovered()) {
+ return true;
+ }
+ return false;
+ }
} \ No newline at end of file
diff --git a/src/ui/ui_contacts.cpp b/src/ui/ui_contacts.cpp
index 7d585c9..30d01de 100644
--- a/src/ui/ui_contacts.cpp
+++ b/src/ui/ui_contacts.cpp
@@ -154,6 +154,14 @@ static void draw_contact_list()
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0); ImGui::Text(c.id);
+
+ if (administration::contact_is_valid(c) != A_ERR_SUCCESS)
+ {
+ if (ImGui::DrawWarningIcon(8.0f)) {
+ ImGui::SetTooltip(locale::get("ui.tooltip.invalidContact"));
+ }
+ }
+
ImGui::TableSetColumnIndex(1); ImGui::Text(c.name);
ImGui::TableSetColumnIndex(2); ImGui::Text("%s %s", c.address.address1, c.address.address2);
diff --git a/src/ui/ui_expenses.cpp b/src/ui/ui_expenses.cpp
index e22b5b1..b3c878a 100644
--- a/src/ui/ui_expenses.cpp
+++ b/src/ui/ui_expenses.cpp
@@ -228,6 +228,14 @@ static void draw_expenses_list()
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0); ImGui::Text(c.sequential_number);
+
+ if (administration::invoice_is_valid(&c) != A_ERR_SUCCESS)
+ {
+ if (ImGui::DrawWarningIcon(8.0f)) {
+ ImGui::SetTooltip(locale::get("ui.tooltip.invalidInvoice"));
+ }
+ }
+
ImGui::TableSetColumnIndex(1); ImGui::Text(c.supplier.name);
ImGui::TableSetColumnIndex(2); ImGui::Text(c.customer.name);
diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp
index 850c9a3..fbc6eb0 100644
--- a/src/ui/ui_invoices.cpp
+++ b/src/ui/ui_invoices.cpp
@@ -311,7 +311,7 @@ static void draw_invoices_list()
if (ImGui::BeginTable("TableInvoices", 7, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg)) {
- ImGui::TableSetupColumn(locale::get("invoice.table.invoicenumber"), ImGuiTableColumnFlags_WidthFixed, 120);
+ ImGui::TableSetupColumn(locale::get("invoice.table.invoicenumber"), ImGuiTableColumnFlags_WidthFixed, 130);
ImGui::TableSetupColumn(locale::get("invoice.table.customer"));
ImGui::TableSetupColumn(locale::get("invoice.table.addressee"));
ImGui::TableSetupColumn(locale::get("invoice.table.issuedat"));
@@ -325,6 +325,14 @@ static void draw_invoices_list()
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0); ImGui::Text(c.sequential_number);
+
+ if (administration::invoice_is_valid(&c) != A_ERR_SUCCESS)
+ {
+ if (ImGui::DrawWarningIcon(8.0f)) {
+ ImGui::SetTooltip(locale::get("ui.tooltip.invalidInvoice"));
+ }
+ }
+
ImGui::TableSetColumnIndex(1); ImGui::Text(c.customer.name);
ImGui::TableSetColumnIndex(2); ImGui::Text(c.addressee.name);
diff --git a/src/ui/ui_projects.cpp b/src/ui/ui_projects.cpp
index 66cc336..43a8eb4 100644
--- a/src/ui/ui_projects.cpp
+++ b/src/ui/ui_projects.cpp
@@ -134,6 +134,14 @@ static void draw_project_list()
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0); ImGui::Text(c.id);
+
+ if (administration::project_is_valid(c) != A_ERR_SUCCESS)
+ {
+ if (ImGui::DrawWarningIcon(8.0f)) {
+ ImGui::SetTooltip(locale::get("ui.tooltip.invalidInvoice"));
+ }
+ }
+
ImGui::TableSetColumnIndex(1); ImGui::Text(locale::get(administration::project_get_status_string(c)));
ImGui::TableSetColumnIndex(2); ImGui::Text(c.description);