summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/administration.hpp70
-rw-r--r--include/config.hpp13
-rw-r--r--include/locales.hpp21
-rw-r--r--include/strops.hpp3
-rw-r--r--include/ui.hpp15
5 files changed, 122 insertions, 0 deletions
diff --git a/include/administration.hpp b/include/administration.hpp
new file mode 100644
index 0000000..9506246
--- /dev/null
+++ b/include/administration.hpp
@@ -0,0 +1,70 @@
+#pragma once
+
+#include "config.hpp"
+#include "simclist.h"
+
+typedef struct
+{
+ char id[16];
+ char name[64];
+ char address1[128];
+ char address2[128];
+ char country[128];
+ char taxid[32];
+ char businessid[32];
+ char email[64];
+ char phone_number[16];
+ char bank_account[32];
+} contact;
+
+typedef enum
+{
+ RUNNING,
+ PAUSED,
+ CANCELLED,
+} project_state;
+
+typedef struct
+{
+ char id[16];
+ char description[64];
+ project_state state;
+ time_t start_date;
+ time_t end_date;
+} project;
+
+typedef struct
+{
+ contact company_info;
+ s32 next_id;
+ char path[4096];
+ char program_version[10];
+ char country_code[2];
+ list_t contacts;
+ list_t projects;
+ // invoices
+ char ai_service[16];
+ char ai_key[32];
+ char email_service[16];
+ char email_key[32];
+} administration;
+
+void administration_create();
+void administration_destroy();
+
+char* administration_get_file_path();
+s32 administration_create_id();
+
+bool administration_remove_contact(contact data);
+bool administration_create_contact(contact data);
+bool administration_update_contact(contact data);
+u32 administration_get_contact_count();
+u32 administration_get_contacts(u32 page_index, u32 page_size, contact* buffer);
+
+void administration_cancel_project(project data);
+bool administration_remove_project(project data);
+bool administration_create_project(project data);
+bool administration_update_project(project data);
+char* administration_project_get_status_string(project data);
+u32 administration_get_project_count();
+u32 administration_get_projects(u32 page_index, u32 page_size, project* buffer); \ No newline at end of file
diff --git a/include/config.hpp b/include/config.hpp
new file mode 100644
index 0000000..3279e2e
--- /dev/null
+++ b/include/config.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "stdint.h"
+
+#define s8 int8_t
+#define s16 int16_t
+#define s32 int32_t
+#define s64 int64_t
+
+#define u8 uint8_t
+#define u16 uint16_t
+#define u32 uint32_t
+#define u64 uint64_t \ No newline at end of file
diff --git a/include/locales.hpp b/include/locales.hpp
new file mode 100644
index 0000000..78bb682
--- /dev/null
+++ b/include/locales.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#include <stdio.h>
+#include <string.h>
+
+typedef struct {
+ const char* key;
+ const char* value;
+} locale_entry;
+
+typedef struct {
+ const char* lang_code;
+ locale_entry* entries;
+ int entry_count;
+} locale_map;
+
+extern locale_entry en_locales[];
+extern const int en_locale_count;
+
+void set_locale(const char key[2]);
+const char* localize(const char* key); \ No newline at end of file
diff --git a/include/strops.hpp b/include/strops.hpp
new file mode 100644
index 0000000..daa1d71
--- /dev/null
+++ b/include/strops.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+size_t strops_copy(char *dst, const char *src, size_t size); \ No newline at end of file
diff --git a/include/ui.hpp b/include/ui.hpp
new file mode 100644
index 0000000..827980c
--- /dev/null
+++ b/include/ui.hpp
@@ -0,0 +1,15 @@
+#pragma once
+
+typedef enum
+{
+ LIST,
+ EDIT,
+ CREATE,
+ VIEW,
+} view_state;
+
+void view_draw_required_tag();
+
+void ui_draw_main();
+void ui_draw_contacts();
+void ui_draw_projects(); \ No newline at end of file