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 >
Wrap
C/C++ Source or Header
|
2000-06-06
|
3KB
|
148 lines
//
// $Id: Form.cc,v 1.3 2000/06/06 09:31:11 sergey Exp $
//
#include <Pilot.h>
#include "Form.h"
#include "Util/Assert.h"
namespace UI
{
Form::Form(Word formID):
_formID(formID),
_formPtr(NULL)
{}
Form::~Form()
{
destroy();
}
// operations
void Form::create()
{
_formPtr = FrmInitForm(_formID);
}
void Form::destroy()
{
if (_formPtr)
{
FrmEraseForm(_formPtr);
FrmDeleteForm(_formPtr);
_formPtr = 0;
}
}
void Form::display()
{
FrmDrawForm(_formPtr);
FrmSetActiveForm(_formPtr);
}
void Form::showObject(Word objectID)
{
FrmShowObject(formPtr(), FrmGetObjectIndex(formPtr(), objectID));
}
void Form::hideObject(Word objectID)
{
FrmHideObject(formPtr(), FrmGetObjectIndex(formPtr(), objectID));
}
// attributes
void* Form::getGenericObjectPtr(FormObjectKind objectKind, Word objectID) const
{
int index = FrmGetObjectIndex(formPtr(), objectID);
assert(FrmGetObjectType(formPtr(), index) == objectKind);
void* ptr = FrmGetObjectPtr(formPtr(), index);
assert(ptr != NULL);
return ptr;
}
// implementation
bool Form::eventHandler(EventType* event)
{
// TO DO:
// Should I check if the event belongs to this form?
switch(event->eType)
{
case frmLoadEvent:
if (event->data.frmLoad.formID == _formID)
return handleLoadFormEvent(event->data.frmLoad.formID);
break;
case frmOpenEvent:
if (event->data.frmLoad.formID == _formID)
return handleOpenFormEvent(event->data.frmOpen.formID);
break;
case frmUpdateEvent:
if (event->data.frmLoad.formID == _formID)
return handleUpdateFormEvent(event->data.frmUpdate.formID);
break;
case ctlSelectEvent:
return handleCtlSelectEvent(event->data.ctlSelect.controlID, event->data.ctlSelect.on);
case menuEvent:
return handleMenuEvent(event->data.menu.itemID);
case keyDownEvent:
return handleKeyDownEvent(event->data.keyDown.chr, event->data.keyDown.keyCode, event->data.keyDown.modifiers);
case nilEvent:
return handleNilEvent();
}
return false;
}
bool Form::handleLoadFormEvent(Word formID)
{
// Form actually loaded by create() method.
return false;
}
bool Form::handleOpenFormEvent(Word formID)
{
display();
return true;
}
bool Form::handleUpdateFormEvent(Word formID)
{
FrmDrawForm(_formPtr);
return true;
}
bool Form::handleCtlSelectEvent(Word controlID, bool on)
{
return false;
}
bool Form::handleMenuEvent(Word menuID)
{
return false;
}
bool Form::handleKeyDownEvent(char asciiChar, Word keyCode, Word modifiers)
{
return false;
}
bool Form::handleNilEvent()
{
return false;
}
}
// namespace UI