Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Friday, March 29, 2024

File: [Platon] / tucniak / api / t_c_person.c (download)

Revision 1.1.1.1 (vendor branch), Fri Nov 11 16:08:29 2005 UTC (18 years, 4 months ago) by koli


Changes since 1.1: +0 -0 lines

Initial import

// Copyright (c) 2003,2004,2005 Juraj Kolesár <koli@koli.sk>               
#include "api.h"
#include "t_c_person.h"
/* qs {{{ *********************************************************************/
int t_c_person_qs(WINDOW *win, T_DB *tdb, T_QS *qs, T_PERSON *person) {
    bool End = false;
    bool Empty = false;
    T_COLS *cols = NULL;
    lt_c_person_qs_init(person, &cols, qs);
    while (!End) {
        lt_c_person_data_clear(person);
        switch (tt_table_qs(win, tdb, qs, cols)) {
            case __TT_ENTER:
                if (strlen(person->pk.value) > 0) {
                    person->status[__PK] = true;
                    person->status[__NAME] = true;
                    person->status[__SURNAME] = true;
                    person->status[__NICKNAME] = true;
                    lt_c_person_data_get(tdb, person);
                }
                break;
            case __TT_INS: lt_c_person_data_clear(person); break;
            case __TT_ESC:
                lt_c_person_data_clear(person);
                return(__LT_EMPTY);
                break;
            case __TT_NULL: Empty = true; break;
        }
        switch (t_c_person_form(win, tdb, person)) {
            case __LT_FILLED: return (__LT_FILLED); break;
            case __LT_EMPTY: if (Empty) End = true; break;
        }
    }
    return(__LT_EMPTY);
}
/* }}} */
/* form {{{1 ******************************************************************/
int t_c_person_form(WINDOW *win, T_DB *tdb, T_PERSON * person) {
    /* init {{{2 */
    register int i;
    bool End = false;
    int menu_cursor = 0;
    POS pos[__LT_C_PERSON_PARAM_COUNT];
    T_CELLIST *menu = NULL;
    T_CELL menu_item[] = {
        {"[POUŽI ]", "", 0},
        {"[ SPÄŤ ]", "", 0},
        {"[EDITUJ]", "", 0},
        {"[ ULOŽ ]", "", 0},
        {"[ ZMAŽ ]", "", 0}
    };
    for (i=0; i < 6; i++) {
        menu_item[i].width = strlen(menu_item[i].value) + 1;
        menu = g_list_append(menu, &menu_item[i]);
    }
    SET_POS(pos[__PK],        win, 1, 50);     //used for FORM MENU 
    SET_POS(pos[__NAME],    win, 1, 13);
    SET_POS(pos[__SURNAME],    win, 2, 13);
    SET_POS(pos[__NICKNAME],win, 3, 13);
    SET_POS(pos[__COMPANY],    win, 5, 10);
    SET_POS(pos[__ADDRESS],    win, 0, 0);
    SET_POS(pos[__PHONE],    win, 8, 10);
    SET_POS(pos[__EMAIL],    win, 9, 10);
    /* }}}2 */
    /* new {{{2 */
    t_c_person_form_draw(person, pos);
    if (!(person->status[__LT_C_PERSON_PK])) {            //NEW
        switch (t_c_person_form_edit(person, pos)) {
            case __TT_ENTER: menu_cursor = 3; break;
            case __TT_ESC: End = true; break;
        }
    }
    /* }}}2 */
    while (!End) {
        menu = g_list_first(menu);
        menu = g_list_nth(menu, menu_cursor);
        switch(tt_menu_vertical(pos[0], menu, 9)) {
            case __TT_ESC: End = true; break;
            case (0): werase(win); return(__LT_FILLED); break;    //USE
            case (1): End = true; break;   //BACK
            case (2):                        //EDIT
                switch (t_c_person_form_edit(person, pos)) {
                    case __TT_ENTER: menu_cursor = 3; break;
                    case __TT_ESC: End = true; break;
                }
                break;
            case (3):                        //UPDATE
                lt_c_person_data_set(tdb, person);
                menu_cursor = 0;
                break;
            case (4):                        //DELETE
                lt_c_person_data_remove(tdb, person);
                End = true;
                break;
        }
    }
    werase(win);
    return(__LT_EMPTY);
}
/* }}} */
/* form draw {{{ **************************************************************/
int t_c_person_form_draw(T_PERSON *person, POS *pos) {
    register int i;
    T_CELL phone_cells[] = {
        {"", "", __LT_C_PHONE_WIDTH_PK, 0},
        {"", "", __LT_C_PHONE_WIDTH_NUMBER, 0},
        {"", "", __LT_C_PHONE_WIDTH_NOTE, 0}
    };
    T_CELL email_cells[] = {
        {"", "", __LT_C_EMAIL_WIDTH_PK, 0},
        {"", "", __LT_C_EMAIL_WIDTH_URL, 0},
        {"", "", __LT_C_EMAIL_WIDTH_NOTE, 0}
    };
    T_CELL company_cells[] = {
        {"", "", __LT_C_COMPANY_WIDTH_PK, 0},
        {"", "", __LT_C_COMPANY_WIDTH_NAME, 0}
    };
    T_COLS *cols = NULL;
    werase(pos->win);
    box(pos->win,0,0);
    tt_label_left(pos[__NAME],        "Meno:");
    tt_label_left(pos[__SURNAME],    "Priezvisko:");
    tt_label_left(pos[__NICKNAME],    "Prezývka:");
    tt_label_left(pos[__COMPANY],    "Práca:");
    tt_label_left(pos[__PHONE],        "Telefon:");
    tt_label_left(pos[__EMAIL],        "Email:");
    mvwprintw(GET_POS(pos[__NAME]),        person->name.value);
    mvwprintw(GET_POS(pos[__SURNAME]),    person->surname.value);
    mvwprintw(GET_POS(pos[__NICKNAME]),    person->nickname.value);
    FILL_COLS(cols, company_cells, 2, i);
    tt_table_draw_combo(pos[__COMPANY], cols, person->company.table);
    FILL_COLS(cols, phone_cells, __LT_C_EMAIL_PARAM_COUNT, i);
    tt_table_draw_combo(pos[__PHONE], cols, person->phone.table);
    FILL_COLS(cols, email_cells, __LT_C_EMAIL_PARAM_COUNT, i);
    tt_table_draw_combo(pos[__EMAIL], cols, person->email.table);
    return(__LT_OK);
}
/* }}} */
/* form edit {{{ **************************************************************/
int t_c_person_form_edit(T_PERSON *person, POS *pos) {
    bool End = false;
    int Object = __NAME;
    int Status;
    register int i;
    T_CELL phone_cells[] = {
        {"", "", __LT_C_PHONE_WIDTH_PK, 0},
        {"", "", __LT_C_PHONE_WIDTH_NUMBER, 0},
        {"", "", __LT_C_PHONE_WIDTH_NOTE, 0}
    };
    T_CELL email_cells[] = {
        {"", "", __LT_C_EMAIL_WIDTH_PK, 0},
        {"", "", __LT_C_EMAIL_WIDTH_URL, 0},
        {"", "", __LT_C_EMAIL_WIDTH_NOTE, 0}
    };
    T_COLS *cols = NULL;
    while (!End) {
        switch (Object) {
            case __NAME:
                Status = tt_str_get(pos[__NAME],
                    person->name.width, person->name.value);
                person->status[__NAME] = false;
                break;
            case __SURNAME:
                Status = tt_str_get(pos[__SURNAME],
                    person->surname.width, person->surname.value);
                person->status[__SURNAME] = false;
                break;
            case __NICKNAME:
                Status = tt_str_get(pos[__NICKNAME],
                    person->nickname.width, person->nickname.value);
                person->status[__NICKNAME] = false;
                break;
            case __PHONE:
                FILL_COLS(cols, phone_cells, __LT_C_PHONE_PARAM_COUNT, i);
                Status = tt_table_combo(pos[__PHONE],
                    &(person->phone.table), cols);
                break;
            case __EMAIL:
                FILL_COLS(cols, email_cells, __LT_C_EMAIL_PARAM_COUNT, i);
                Status = tt_table_combo(pos[__EMAIL],
                    &(person->email.table), cols);
                break;
        }
        switch (Status) {
            case __TT_ENTER: End = true; break;
            case __TT_TAB: Object++; break;
            case __TT_ESC: End = true; break;
            case __TT_UP: if (Object > __NAME) Object--; break;
            case __TT_DOWN: Object++; break;
        }
        if (Object > __EMAIL) Object = __NAME;
    }
    return(Status);
}
/* }}} */

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top