// Copyright (c) 2003,2004,2005 Juraj Kolesár #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); } /* }}} */