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

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

Revision 1.3, Sat Nov 12 20:41:57 2005 UTC (18 years, 4 months ago) by koli


Changes since 1.2: +0 -0 lines

*** empty log message ***

// Copyright (c) 2003,2004,2005 Juraj Kolesár <koli@koli.sk>
#include "api.h"
#include "t_c_company.h"
/* qs {{{ *********************************************************************/
int t_c_company_qs(WINDOW *win, T_DB *tdb, T_QS *qs, T_COMPANY *company) {
    bool End = false;
    bool Empty = false;
    T_COLS * cols = NULL;
    lt_c_company_qs_init(company, &cols, qs);
    while (!End) {
        lt_c_company_data_clear(company);
        switch (tt_table_qs(win, tdb, qs, cols)) {
            case __TT_ENTER:
                company->status[__PK] = true;
                company->status[__NAME] = true;
                company->status[__IDN] = true;
                company->status[__TXN] = true;
                lt_c_company_data_get(tdb, company);
                break;
            case __TT_INS: lt_c_company_data_clear(company); break;
            case __TT_NULL: Empty = true; break;
            case __TT_ESC:
                lt_c_company_data_clear(company);
                return(__LT_EMPTY);
                break;
        }
        switch (t_c_company_form(win, tdb, company)) {
            case __LT_FILLED: return (__LT_FILLED); break;
            case __LT_EMPTY: if (Empty) End = true; break;
        }
    }
    return(__LT_EMPTY);
}
/* }}} */
/* form {{{1 ******************************************************************/
int t_c_company_form(WINDOW *win, T_DB *tdb, T_COMPANY * company) {
    /* init {{{2 */
    register int i;
    bool End = false;
    int menu_cursor = 0;
    WINDOW *win_employees = subwin(win,9,78,11,1);
    POS pos[] = {
        {win, 1, 50},    //FORM MENU
        {win, 1, 13},    //NAME
        {win, 2, 13},    //IDN
        {win, 3, 13},    //TXN
        {win_employees,1, 1},    //EMPLOYEES
        {win, 5, 13},    //ADDRESS
        {win, 6, 13},    //PHONE
        {win, 7, 13},    //EMAIL
    };
    T_CELLIST * menu = NULL;
    T_CELL menu_item[] = {
        {"[POUŽI ]", "", 0},    //0
        {"[ SPÄŤ ]", "", 0},    //1
        {"[ĽUDIA ]", "", 0},    //2
        {"[EDITUJ]", "", 0},    //3
        {"[ ULOŽ ]", "", 0},    //4
        {"[ ZMAŽ ]", "", 0}        //5
    };
    for (i=0; i < 7; i++) {
        menu_item[i].width = strlen(menu_item[i].value);
        menu = g_list_append(menu, &menu_item[i]);
    }
    /* }}}2 */
    t_c_company_form_draw(company, pos);
    /* new {{{2 */
    if (!(company->status[__LT_C_COMPANY_PK])) {
        switch (t_c_company_form_edit(company, pos)) {
            case __TT_ENTER: menu_cursor = 4; 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;
            case (1): End = true; break;
            case (2):
                t_c_company_employ(pos[__EMPLOYEES].win, tdb, company);
                touchwin(win);
                wrefresh(win);
                break;
            case (3):
                switch (t_c_company_form_edit(company, pos)) {
                    case __TT_ENTER: menu_cursor = 4; break;
                    case __TT_ESC: End = true; break;
                }
                break;
            case (4):
                lt_c_company_data_set(tdb, company);
                menu_cursor = 0;
                break;
            case (5):
                lt_c_company_data_remove(tdb, company);
                End = true;
                break;
        }
    }
    werase(win);
    return(__LT_EMPTY);
}
/* }}} */
/* form draw {{{ **************************************************************/
int t_c_company_form_draw(T_COMPANY *company, POS *pos) {
    register int i;
    T_CELL phone_cell[] = {
        {"", "", __LT_C_PHONE_WIDTH_PK},
        {"", "", __LT_C_PHONE_WIDTH_NUMBER},
        {"", "", __LT_C_PHONE_WIDTH_NOTE}
    };
    T_CELL email_cell[] = {
        {"", "", __LT_C_EMAIL_WIDTH_PK},
        {"", "", __LT_C_EMAIL_WIDTH_URL},
        {"", "", __LT_C_EMAIL_WIDTH_NOTE}
    };
    T_CELL cell_employees[] = {
        {"","",0},
        {"","",13},
        {"","",20}
    };
    T_COLS * cols = NULL;
    werase(pos[__NAME].win);
    box(pos[__NAME].win,0,0);
    tt_label_left(pos[__NAME],    "Názov:");
    tt_label_left(pos[__IDN],     "IČO:");
    tt_label_left(pos[__TXN],     "DIČ:");
    tt_label_left(pos[__PHONE], "Telefón:");
    tt_label_left(pos[__EMAIL], "Email:");
    mvwprintw(pos[__EMPLOYEES].win, pos[__EMPLOYEES].y , pos[__EMPLOYEES].x, "Zamestnanci:");
    mvwprintw(GET_POS(pos[__NAME]),    company->name.value);
    mvwprintw(GET_POS(pos[__IDN]),    company->idn.value);
    mvwprintw(GET_POS(pos[__TXN]),    company->txn.value);
    FILL_COLS(cols,cell_employees,3,i);
    if (company->employees.table != NULL)
        tt_table_draw(pos[__EMPLOYEES].win, cols, company->employees.table);
    if (company->phone.table != NULL)
        tt_table_draw_row(pos[__PHONE], 0, cols, company->phone.table->data);
    if (company->email.table != NULL)
        tt_table_draw_row(pos[__EMAIL], 0, cols, company->email.table->data);
    return(__LT_OK);
}
/* }}} */ 
/* form edit {{{ **************************************************************/
int t_c_company_form_edit(T_COMPANY *company, POS *pos) {
    bool End = false;
    int Object = __NAME;
    int Status;
    TT_TABLE v_table;
    int i;
    T_CELL cell[] = {    //for additional datas stored in T_TABLE to showrow
        {"", "", 0},    //PK
        {"", "", 13},    //VALUE
        {"", "", 20},    //NOTE
        {"", "", 20}    //NOTE
    };
    T_COLS *cols = NULL;
    for (i=0; i<3; i++) cols = g_slist_append(cols, &(cell[i]));
    while (!End) {
        switch (Object) {
            case __NAME:
                Status = tt_str_get(pos[__NAME], company->name.width,
                    company->name.value);
                company->status[__NAME] = false;
                break;
            case __IDN:
                Status = tt_str_get(pos[__IDN], company->idn.width,
                    company->idn.value);
                company->status[__IDN] = false;
                break;
            case __TXN:
                Status = tt_str_get(pos[__TXN], company->txn.width,
                    company->txn.value);
                company->status[__TXN] = false;
                break;
            case __EMPLOYEES:
                tt_table(pos[__EMPLOYEES],&(company->employees.table),cols);
                touchwin(pos->win);
                wrefresh(pos->win);
                break;
        }
        switch (Status) {
            case __TT_ENTER: End = true; break;
            case __TT_TAB: Object++; break;
            case __TT_ESC: End = true; break;
        }
        if (Object > 4) Object = __NAME;
    }
    return(Status);
}
/* }}} */
/* company employ {{{ *********************************************************/
int t_c_company_employ(WINDOW *win, T_DB *tdb, T_COMPANY *company) {
    bool End = false;
    T_PERSON person;
    T_QS qs;
    INIT_QS(qs);
    lt_c_company_employees_qs_init(&qs, company);
    lt_c_person_data_init(&person);
    if (t_c_person_qs(win, tdb, &qs, &person))
        lt_c_company_employ(tdb, company, &person);
    return(__LT_OK);
}
/* }}} */


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