📄 roll_frame.c
字号:
time_t s;
struct tm *t;
time(&s);
t=gmtime(&s);
get_business_number(number);
mvprintw(1,45,"%s",number);
mvprintw(1,58,"时间:%d%02d%02d%02d%02d%02d",1900+t->tm_year,t->tm_mon,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
sprintf(date,"%d%02d%02d%02d%02d%02d",1900+t->tm_year,t->tm_mon,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
}
/*0:ESC键;1:向上键;2:向下键; 10:Enter键;*/
void PrintStuInfo(ROLL *r,EMP *e)/*多个函数可以封装*/
{
int i=0,j=0;
int cur_x=0,cur_y=0;
int returnValues=-2;
int node_index=0;
int maxSize=(r->link)->len(r->link);
int if_hang_up=0,get_list_re=0,remove=0,log_out=0;
int sign=1;
char number[5]={"\0"};
char date[15]={"\0"};
NODE *temp=NULL;
GMSG *msg=NULL;
SELL_LIST *list=NULL;
LINK *sell_list_link=new_link();
FRAME *hang_up_frame=NULL;
getbegyx(r->f->win,cur_x,cur_y);
do
{
returnValues=GetInputString(r);
maxSize=(r->link)->len(r->link);
switch (returnValues)
{
case 266:/*F2键*/
msg=add_list(r);
if(msg == NULL)
{
continue;
}
else
{
if(/*sell_list_link->count == 0&&*/r->link->count == 0)
{
create_business_number_and_date(date,number);
}
insert_to_roll(r,msg);
free(msg);
msg=NULL;
}
break;
case 267:/*F3键*/
msg=del_list(r);
if (msg == NULL)
{
continue;
}
else
{
del_from_roll(r,msg);
free(msg);
msg=NULL;
}
break;
case 268:/*F4键*/
list=settle_accounts(r,date,number,e);
if(list == NULL)
{
continue;
}
else
{
del_link(r,list);
}
break;
case 269:/*F5键*/
if_hang_up=hang_up(r);
if(if_hang_up)
{
hang_up_frame=hang_and_change_link(r,sell_list_link,date,number);
sign=1;
}
else
{
continue;
}
break;
case 270:/*F6键*/
get_list_re=get_list(r,sell_list_link);
if(get_list_re)
{
get_list_and_change_link(r,sell_list_link,hang_up_frame,get_list_re,date,number);
}
else
{
continue;
}
break;
case 271:/*F7*/
remove=remove_list(r);
if(remove)
{
clear_roll(r);
r->link->del_all_data(r->link);
}
else
{
continue;
}
break;
case 272:/*F8*/
tuihuo_user(r,sell_list_link);
break;
case 273:/*F9键*/
log_out=logout(r,sell_list_link);
if(log_out)
{
sign=0;
}
else
{
continue;
}
break;
case 1:/*向上键*/
if(r->current_suffix==0)
{
continue;
}
if (r->current_place>1)
{
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);////////
print_node_frame(r,r->current_suffix,2);
r->current_place--;
r->current_suffix--;
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
else
{
if (r->current_suffix>1)
{
r->current_suffix--;
for (i=0;i<r->height_and_length[0]-2;i++)
{
mvwin(r->f->win,cur_x+r->current_place+i,cur_y);
print_node_frame(r,r->current_suffix+i+1,2);
}
mvwin(r->f->win,cur_x,cur_y);
print_node_frame(r,r->current_suffix,1);
}
else
{
continue;
}
}
break;
case 2:/*向下键*/
if(r->current_suffix==0)
{
continue;
}
if(r->current_suffix<maxSize)
{
if (r->current_place<r->height_and_length[0]-1)
{
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);////////
print_node_frame(r,r->current_suffix,2);
r->current_place++;
r->current_suffix++;
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
else
{
r->current_suffix++;
for (i=0;i<r->height_and_length[0]-2;i++)
{
mvwin(r->f->win,cur_x+i,cur_y);
print_node_frame(r,r->current_suffix-r->current_place+1+i,2);
}
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
}
}
else
{
continue;
}
break;
case 10:
if(isdigital(r->i->str)&&strlen(r->i->str)!=0)
{
if(/*sell_list_link->count == 0&&*/r->link->count == 0)
{
create_business_number_and_date(date,number);
}
temp=subm_bar(r->link,r->i->str,1);
maxSize=r->link->len(r->link);
if((int)temp == -1)
{
messagebox(stdscr,7,19,44,12,PAUSE,"仓库中没这东西");
r->i->del_str(r->i);
continue;
}
if(temp == NULL)
{
if(maxSize > 1)
{
if(maxSize<r->height_and_length[0])
{
print_node_frame(r,r->current_suffix,2);
r->current_suffix=maxSize;
r->current_place=maxSize;
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
r->i->del_str(r->i);
}
else
{
r->current_suffix=maxSize;
r->current_place=r->height_and_length[0] - 1;
for (i=0;i<r->height_and_length[0]-1;i++)
{
mvwin(r->f->win,cur_x+i,cur_y);
print_node_frame(r,r->current_suffix - r->height_and_length[0] + 2 + i,2);
}
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
r->i->del_str(r->i);
}
}
else
{
if(maxSize == 1)
{
r->current_suffix=1;
r->current_place=1;
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
r->i->del_str(r->i);
}
else
{
r->i->del_str(r->i);
}
}
}
else
{
node_index=(r->link)->get_index_by_key(r->link,((UNS *)(temp->data))->bar_code,(int (*)(void *,void*))fp1);
if(abs(r->current_suffix + r->height_and_length[0] - 1 -r->current_place-node_index )<r->height_and_length[0]-1)
{
if(r->current_suffix + r->height_and_length[0] - 1 -r->current_place-node_index>=0)
{
print_node_frame(r,r->current_suffix,2);
r->current_place+=(node_index-r->current_suffix);
r->current_suffix=node_index;
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
r->i->del_str(r->i);
}
else
{
r->current_suffix=node_index;
r->current_place=r->height_and_length[0]-1;
for (i=0;i<r->height_and_length[0]-2;i++)
{
mvwin(r->f->win,cur_x+i,cur_y);
print_node_frame(r,r->current_suffix-r->current_place+1+i,2);
}
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
r->i->del_str(r->i);
}
}
else
{
if(node_index - r->current_suffix >0)
{
r->current_suffix=node_index;
r->current_place=r->height_and_length[0]-1;
for (i=0;i<r->height_and_length[0]-2;i++)
{
mvwin(r->f->win,cur_x+i,cur_y);
print_node_frame(r,r->current_suffix-r->current_place+1+i,2);
}
mvwin(r->f->win,cur_x+r->current_place-1,cur_y);
print_node_frame(r,r->current_suffix,1);
r->i->del_str(r->i);
}
else
{
r->current_suffix=node_index;
r->current_place=1;
for (i=0;i<r->height_and_length[0]-2;i++)
{
mvwin(r->f->win,cur_x+r->current_place+i,cur_y);
print_node_frame(r,r->current_suffix+i+1,2);
}
mvwin(r->f->win,cur_x,cur_y);
print_node_frame(r,r->current_suffix,1);
r->i->del_str(r->i);
}
}
}
}
else
{
r->i->del_str(r->i);
}
break;
}
} while (sign);
sell_list_link->del_all(&sell_list_link);
}
void free_roll(ROLL **r)
{
delwin((*r)->win);
(*r)->f->free(&((*r)->f));
free((*r));
(*r)=NULL;
}
ROLL *create_roll(LINK *l,INPUT *ip,int x,int y,int h,int len,int color)
{
ROLL *r=(ROLL *)malloc(sizeof(ROLL));
r->win=newwin(x,y,h,len);
r->f=creat_frame(x,y,1,len-y,color);
r->link=l;
r->i=ip;
r->startXY[0]=x;
r->startXY[1]=y;
r->height_and_length[0]=h;
r->height_and_length[1]=len;
r->current_place=0;
r->current_suffix=0;
r->get_input_string=GetInputString;
r->print_info=PrintStuInfo;
r->free=free_roll;
return r;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -