new display stuff, DOESNT WORK!!11
[my-code/ivac.git] / src / ivac.c
index 44e831c..55188ec 100644 (file)
@@ -130,7 +130,8 @@ int main(int argc,char **argv) {
   audio_setup(&(ivac.audio));
 
   /* display */
-  ivac_display(&(ivac.display));
+  ivac_display(&ivac);
+  ivac_display_draw(&ivac);
 
   /* start event system - callbacks used: ivac_event_cb + ivac_regular_cb */
   event_start(&(ivac.event),(void *)&ivac,ivac_event_cb,ivac_regular_cb);
@@ -274,6 +275,7 @@ int ivac_event_cb(t_event *event,void *ptr) {
       ivac_send_info(channel,ivac);
     }
     ivac_display_content(ivac);
+    ivac_display_draw(ivac);
   }
 
   /* wait for user info */
@@ -288,6 +290,7 @@ int ivac_event_cb(t_event *event,void *ptr) {
           ivac_add_to_monitor(ivac,c_str);
         }
         ivac_display_content(ivac);
+        ivac_display_draw(ivac);
       }
     }
   } 
@@ -320,7 +323,7 @@ int ivac_parse_command(t_input *input,void *ptr) {
   data=input->content;
   valid=0;
 
-  /* refresh prompt content only! */
+  /* refresh prompt content only */
   ivac_display_prompt_content(ivac);
 
   /* parse command routines */
@@ -454,6 +457,7 @@ int ivac_parse_command(t_input *input,void *ptr) {
 
     /* refresh whole display content */
     ivac_display_content(ivac);
+    ivac_display_draw(ivac);
 
     /* delete content buffer + reset counter */
     memset(input->content,0,input->c_count-1);
@@ -464,16 +468,27 @@ int ivac_parse_command(t_input *input,void *ptr) {
   return SUCCESS;
 }
 
-int ivac_display_head(t_display *display) {
+int ivac_display_head(t_ivac *ivac) {
 
-  puts("#########################################################");
-  puts("##### ivac - -  Copyright (C) 2004 Frank Zirkelbach #####");
-  puts("#########################################################");
+  display_line(&(ivac->display),0,0,ivac->display.max_x,0,'#');
+  display_string(&(ivac->display),(ivac->display.max_x-strlen(PROG_NAME))/2,1,
+                 PROG_NAME,strlen(PROG_NAME));
+  display_line(&(ivac->display),0,2,ivac->display.max_x,2,'#');
 
   return SUCCESS;
 }
 
-int ivac_display_box(t_display *display) {
+int ivac_display_box(t_ivac *ivac) {
+
+  display_line(&(ivac->display),0,3,ivac->display.max_x,3,'-');
+  printf("username: %s, capabilities: %02x|%04x\n",ivac->username,ivac->g_cap,
+                                                   ivac->av_cap);
+  display_line(&(ivac->display),0,5,ivac->display.max_x,5,'-');
+  display_string(&(ivac->display),0,6,"connections:",12);
+  display_line(&(ivac->display),
+               0,ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN-1,
+               ivac->display.max_x,
+               ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN-1,'-');
  
   return SUCCESS;
 }
@@ -481,16 +496,34 @@ int ivac_display_box(t_display *display) {
 int ivac_display_box_content(t_ivac *ivac) {
 
   int channel;
+  char string[MAX_BOX_CHARS];
 
   /* prepare challenger names */
   for(channel=0;channel<MAX_CONNECTIONS;channel++)
     if(ivac->challenger[channel].name[0]==0)
       strcpy(ivac->challenger[channel].name,"<empty>");
 
+  for(channel=0;channel<MAX_CONNECTIONS;channel++) {
+    if(ivac->net.connection[channel].status&C_INFO_A) {
+      snprintf(string,MAX_BOX_CHARS,
+               "channel %02d: %s:%d, status: %02x, name: %s\n",channel,
+               ivac->net.connection[channel].ip,
+               ivac->net.connection[channel].port,
+               ivac->net.connection[channel].status,
+               ivac->challenger[channel].name);
+      display_string(&(ivac->display),0,IVAC_HEAD_LEN+4+channel,
+                     string,strlen(string));
+    }
+  }
+
   return SUCCESS;
 }
 
-int ivac_display_console(t_display *display) {
+int ivac_display_console(t_ivac *ivac) {
+
+  display_string(&(ivac->display),
+                 0,ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN,
+                 "console messages:",17);
 
   return SUCCESS;
 }
@@ -498,55 +531,70 @@ int ivac_display_console(t_display *display) {
 int ivac_display_console_content(t_ivac *ivac) {
 
   int i;
+  char string[IVAC_CONSOLE_STRING_LEN];
 
-  for(i=0;i<IVAC_CONSOLE_LEN;i++)
-    printf("[ivac] console line %d: %s\n",i,ivac->console[i]);
+  for(i=0;i<IVAC_CONSOLE_LEN;i++) {
+    snprintf(string,IVAC_CONSOLE_STRING_LEN,"%s\n",ivac->console[i]);
+    display_string(&(ivac->display),
+                   0,ivac->display.max_y-IVAC_PROMPT_LEN-IVAC_CONSOLE_LEN+1+i,
+                   string,strlen(string));
+  }
 
   return SUCCESS;
 }
 
-int ivac_display_prompt(t_display *display) {
+int ivac_display_prompt(t_ivac *ivac) {
+
+  /* simply a printf - dirty! */
+  printf("prompt: ");
+  fflush(NULL);
 
   return SUCCESS;
 }
 
 int ivac_display_prompt_content(t_ivac *ivac) {
 
+  /* simply a printf - dirty! */
   printf("%c",ivac->input.content[ivac->input.c_count-1]);
   fflush(NULL);
 
   return SUCCESS;
 }
 
-int ivac_display(t_display *display) {
+int ivac_display_content(t_ivac *ivac) {
+
+  /* display box content */
+  ivac_display_box_content(ivac);
+
+  /* display console content */
+  ivac_display_console_content(ivac);
+
+  return SUCCESS;
+}
+
+int ivac_display(t_ivac *ivac) {
 
   int x,y;
 
-  /* display head */
-  ivac_display_head(display);
+  /* display static head */
+  ivac_display_head(ivac);
 
-  /* display box */
-  ivac_display_box(display);
+  /* display static box */
+  ivac_display_box(ivac);
 
-  /* display console */
-  ivac_display_console(display);
+  /* display static console */
+  ivac_display_console(ivac);
 
   /* display command prompt */
-  ivac_display_prompt(display);
+  ivac_display_prompt(ivac);
 
   return SUCCESS;
 }
 
-int ivac_display_content(t_ivac *ivac) {
-
-  /* display box content */
-  ivac_display_box_content(ivac);
-
-  /* display console content */
-  ivac_display_console_content(ivac);
-
-  /* display prompt content */
-  ivac_display_prompt_content(ivac);
+int ivac_display_draw(t_ivac *ivac) {
+  
+  display_draw_until_line(&(ivac->display),ivac->display.max_y-1);
+  ivac_display_prompt(ivac);
 
   return SUCCESS;
 }