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