// 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/
|