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