home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 Mobile / Chip_Mobile_2001.iso / palm / business / printcar / printcar.exe / src / UI / Form.cc < prev    next >
C/C++ Source or Header  |  2000-06-06  |  3KB  |  148 lines

  1. //
  2. //  $Id: Form.cc,v 1.3 2000/06/06 09:31:11 sergey Exp $
  3. //
  4.  
  5. #include <Pilot.h>
  6. #include "Form.h"
  7. #include "Util/Assert.h"
  8.  
  9.  
  10. namespace UI
  11. {
  12.     Form::Form(Word formID):
  13.         _formID(formID),
  14.         _formPtr(NULL)
  15.     {}
  16.  
  17.     Form::~Form()
  18.     {
  19.         destroy();
  20.     }
  21.  
  22.     // operations
  23.  
  24.     void Form::create()
  25.     {
  26.         _formPtr = FrmInitForm(_formID);
  27.     }
  28.  
  29.     void Form::destroy()
  30.     {
  31.         if (_formPtr)
  32.         {
  33.             FrmEraseForm(_formPtr);
  34.             FrmDeleteForm(_formPtr);
  35.  
  36.             _formPtr = 0;
  37.         }
  38.     }
  39.  
  40.     void Form::display()
  41.     {
  42.         FrmDrawForm(_formPtr);
  43.         FrmSetActiveForm(_formPtr);
  44.     }
  45.  
  46.     void Form::showObject(Word objectID)
  47.     {
  48.         FrmShowObject(formPtr(), FrmGetObjectIndex(formPtr(), objectID));
  49.     }
  50.  
  51.     void Form::hideObject(Word objectID)
  52.     {
  53.         FrmHideObject(formPtr(), FrmGetObjectIndex(formPtr(), objectID));
  54.     }
  55.  
  56.     // attributes
  57.  
  58.     void* Form::getGenericObjectPtr(FormObjectKind objectKind, Word objectID) const
  59.     {
  60.         int index = FrmGetObjectIndex(formPtr(), objectID);
  61.         assert(FrmGetObjectType(formPtr(), index) == objectKind);
  62.  
  63.         void* ptr = FrmGetObjectPtr(formPtr(), index);
  64.         assert(ptr != NULL);
  65.  
  66.         return ptr;
  67.     }
  68.  
  69.     // implementation
  70.  
  71.     bool Form::eventHandler(EventType* event)
  72.     {
  73.         // TO DO:
  74.         // Should I check if the event belongs to this form?
  75.  
  76.         switch(event->eType)
  77.         {
  78.             case frmLoadEvent:
  79.                 if (event->data.frmLoad.formID == _formID)
  80.                     return handleLoadFormEvent(event->data.frmLoad.formID);
  81.                 break;
  82.  
  83.             case frmOpenEvent:
  84.                 if (event->data.frmLoad.formID == _formID)
  85.                     return handleOpenFormEvent(event->data.frmOpen.formID);
  86.                 break;
  87.  
  88.             case frmUpdateEvent:
  89.                 if (event->data.frmLoad.formID == _formID)
  90.                     return handleUpdateFormEvent(event->data.frmUpdate.formID);
  91.                 break;
  92.  
  93.             case ctlSelectEvent:
  94.                 return handleCtlSelectEvent(event->data.ctlSelect.controlID, event->data.ctlSelect.on);
  95.  
  96.             case menuEvent:
  97.                 return handleMenuEvent(event->data.menu.itemID);
  98.  
  99.             case keyDownEvent:
  100.                 return handleKeyDownEvent(event->data.keyDown.chr, event->data.keyDown.keyCode, event->data.keyDown.modifiers);
  101.  
  102.             case nilEvent:
  103.                 return handleNilEvent();
  104.         }
  105.  
  106.         return false;
  107.     }
  108.  
  109.     bool Form::handleLoadFormEvent(Word formID)
  110.     {
  111.         // Form actually loaded by create() method.
  112.         return false;
  113.     }
  114.  
  115.     bool Form::handleOpenFormEvent(Word formID)
  116.     {
  117.         display();
  118.         return true;
  119.     }
  120.  
  121.     bool Form::handleUpdateFormEvent(Word formID)
  122.     {
  123.         FrmDrawForm(_formPtr);
  124.         return true;
  125.     }
  126.  
  127.     bool Form::handleCtlSelectEvent(Word controlID, bool on)
  128.     {
  129.         return false;
  130.     }
  131.  
  132.     bool Form::handleMenuEvent(Word menuID)
  133.     {
  134.         return false;
  135.     }
  136.  
  137.     bool Form::handleKeyDownEvent(char asciiChar, Word keyCode, Word modifiers)
  138.     {
  139.         return false;
  140.     }
  141.  
  142.     bool Form::handleNilEvent()
  143.     {
  144.         return false;
  145.     }
  146. }
  147. // namespace UI
  148.