home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / CSSRC / IDLECLK.C < prev    next >
C/C++ Source or Header  |  1990-10-31  |  2KB  |  88 lines

  1. /*
  2.       idleclk.c    11/05/88
  3.  
  4.     % idle_Clock
  5.  
  6.     Keyboard Idle clock function.
  7.  
  8.     Places a clock window in the bottom ot the display 
  9.  
  10.     C-scape 3.2
  11.     Copyright (c) 1988, by Oakland Group, Inc.
  12.     ALL RIGHTS RESERVED.
  13.  
  14.     Revision History:
  15.     -----------------
  16.      7/24/89 gam    Fixed for mouse. Now paints only when necessary
  17.      3/28/90 jmd    ansi-fied
  18.      5/17/90 jmd    modified for new kb_Idle scheme
  19.     10/16/90 jmd    added cast to menu_Printf for DG
  20.     10/25/90 jmd    sed_Top is now called every second
  21.      11/31/90 ted    added oak_notused call in idle_Clock().
  22. */
  23.  
  24. #include <stdio.h>
  25.  
  26. #include "cscape.h"
  27.  
  28. #include <time.h>
  29. #include "cstime.h"
  30.  
  31. #include "kbidle.h"
  32. #include "scancode.h"        /* for KEY_NONE */
  33.  
  34. int idle_Clock(int msg, unsigned wait)
  35. /*
  36.     Places a clock in a window.    
  37. */
  38. {
  39.     menu_type menu;
  40.     static sed_type timesed = NULL;
  41.     static struct tm t;
  42.     static short oldsec;
  43.  
  44.     oak_notused(wait);
  45.  
  46.     switch (msg) {
  47.     case IDLE_START:
  48.         /* create timesed */
  49.         /* this is called when kb_Idle first sets up the idle func */
  50.         menu = menu_Open();
  51.         menu_Printf(menu, "@f[##:##:##]", (VOID *) &t, &time_funcs);
  52.         menu_Flush(menu);
  53.  
  54.         timesed = sed_Open(menu);
  55.         sed_SetPosition(timesed, disp_GetHeight() - 1, disp_GetWidth() - 10);
  56.  
  57.         /* Get current time */
  58.         tm_Now(&t);
  59.         oldsec = (short)t.tm_sec;
  60.  
  61.         /* Paint the sed */
  62.         sed_Repaint(timesed);
  63.         break;
  64.  
  65.     case IDLE_CHECK:
  66.     case IDLE_READ:
  67.         /* Get current time */
  68.         tm_Now(&t);
  69.  
  70.         /* Paint the field */
  71.         if (oldsec != t.tm_sec) {
  72.             oldsec = (short)t.tm_sec;
  73.             sed_RepaintField(timesed, 0);
  74.  
  75.             /* Make sure window is visible */
  76.             sed_Top(timesed);
  77.         }
  78.         break;
  79.  
  80.     case IDLE_STOP:
  81.         /* Destroy the sed */
  82.         sed_Close(timesed);
  83.         break;
  84.     }
  85.  
  86.     return(KEY_NONE);
  87. }
  88.