diff options
Diffstat (limited to 'clients/screens_settings.c')
| -rw-r--r-- | clients/screens_settings.c | 70 |
1 files changed, 52 insertions, 18 deletions
diff --git a/clients/screens_settings.c b/clients/screens_settings.c index c6a46c5..227ee68 100644 --- a/clients/screens_settings.c +++ b/clients/screens_settings.c @@ -355,19 +355,17 @@ void system_settings_screen(struct app *a) settings_can_write(a), 0, &sel); } -void company_screen(struct app *a) +static void company_data_screen(struct app *a) { static int sel = 0; const int nf = (int)(sizeof COMPANY_FIELDS / sizeof COMPANY_FIELDS[0]); int owner = a->role[0] && strcmp(a->role, "owner") == 0; - int writer = settings_can_write(a); - const char *settings_reason = writer ? NULL : "du har inte behörighet"; for (;;) { if (g_quit) return; char *resp = client_rpc(&a->conn, "org.get", a->session, a->org, "{}"); if (!resp || !client_ok(resp)) { - show_error("Bolaget", resp); + show_error("Företagsuppgifter", resp); free(resp); return; } @@ -392,15 +390,7 @@ void company_screen(struct app *a) ff[i].kind = TUI_F_TEXT; } free(resp); - struct tui_form_action acts[3] = { - { "Fakturauppgifter…", writer ? 1 : 0, settings_reason }, - { "E-post (SMTP)…", writer ? 1 : 0, settings_reason }, - { "Styrelseledamöter", 1, NULL }, - }; - tui_form_hint("upp/ned/Tab = flytta Enter = ändra/utför" - " F5 = uppdatera Esc/q = tillbaka ^C = avsluta"); - int r = tui_form_run_actions("Bolaget", ff, nf, owner, acts, 3, NULL, - &sel); + int r = tui_form_run("Företagsuppgifter", ff, nf, owner, &sel); if (r >= 0 && r < nf) { if (!company_field_valid(&COMPANY_FIELDS[r], vals[r])) { tui_message("Ogiltigt värde", "%s", COMPANY_FIELDS[r].label); @@ -426,14 +416,58 @@ void company_screen(struct app *a) } for (int i = 0; i < nf; i++) free(vals[i]); - if (r == TUI_FORM_ACTION + 0) + if (r == TUI_FORM_BACK) + return; + } +} + +static const char *const COMPANY_ITEMS[] = { + "Företagsuppgifter", + "Fakturauppgifter", + "E-post (SMTP)", + "Styrelseledamöter", + MK_SECTION "Register", + "Anställda", + "Kunder", + "Momsregler", +}; + +void company_screen(struct app *a) +{ + static int sel = 0; + for (;;) { + if (g_quit) + return; + int r = tui_menu("Bolaget", COMPANY_ITEMS, + (int)(sizeof COMPANY_ITEMS / sizeof COMPANY_ITEMS[0]), + 0, &sel); + if (r < 0) + return; + switch (r) { + case 0: + company_data_screen(a); + break; + case 1: invoice_settings_screen(a); - else if (r == TUI_FORM_ACTION + 1) + break; + case 2: smtp_settings_screen(a); - else if (r == TUI_FORM_ACTION + 2) + break; + case 3: board_screen(a); - else if (r == TUI_FORM_BACK) - return; + break; + case 5: + employees_screen(a); + break; + case 6: + customers_screen(a); + break; + case 7: + rules_screen(a); + break; + default: + break; + } } } |
