home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
linuxmafia.com 2016
/
linuxmafia.com.tar
/
linuxmafia.com
/
pub
/
palmos
/
linkmaster-src-1.0.4.tar.gz
/
linkmaster-src-1.0.4.tar
/
linkmaster-1.0.4
/
proxy
/
db
/
proxydb.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-10-22
|
5KB
|
226 lines
/* Main code for Proxy Datebook */
#include <Pilot.h>
#include "callback.h"
#include "DateDB.h"
#include "linkaware.h"
#include "proxydbRsc.h"
static DmOpenRef DatebookDB;
static Word FirstIndex;
static VoidPtr GetObjectPtr(Word id)
{
FormPtr frm;
frm=FrmGetActiveForm();
return FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, id));
}
static void MainListDraw(UInt item, RectanglePtr bounds, CharPtr* text)
{
ApptDBRecordType r;
VoidHand handle;
Word index;
CALLBACK_PROLOGUE;
index=FirstIndex;
DmSeekRecordInCategory(DatebookDB, &index, item, dmSeekForward,
dmAllCategories);
ApptGetRecord(DatebookDB, index, &r, &handle);
WinDrawChars(r.description, StrLen(r.description),
bounds->topLeft.x, bounds->topLeft.y);
MemHandleUnlock(handle);
CALLBACK_EPILOGUE;
}
static void MainFormInit()
{
Boolean showpast;
FormPtr frm;
DateType date;
ListPtr list;
frm=FrmGetActiveForm();
showpast=CtlGetValue(GetObjectPtr(MainPastCheckBox));
if (!DatebookDB)
DatebookDB=DmOpenDatabaseByTypeCreator('DATA', 'date', dmModeReadOnly);
DateSecondsToDate(TimGetSeconds(), &date);
FirstIndex=0;
if (!showpast)
ApptFindFirst(DatebookDB, date, &FirstIndex);
list=GetObjectPtr(MainList);
LstSetListChoices(list, NULL,
DmNumRecordsInCategory(DatebookDB, dmAllCategories)
-DmPositionInCategory(DatebookDB,
FirstIndex, dmAllCategories));
LstSetDrawFunction(list, MainListDraw);
}
static Boolean MainFormHandleEvent (EventPtr e)
{
Boolean handled = false;
FormPtr frm;
CALLBACK_PROLOGUE
switch (e->eType) {
case frmOpenEvent:
MainFormInit();
frm = FrmGetActiveForm();
FrmDrawForm(frm);
handled = true;
break;
case frmCloseEvent:
DmCloseDatabase(DatebookDB);
break;
case menuEvent:
MenuEraseStatus(NULL);
switch(e->data.menu.itemID) {
}
handled = true;
break;
case ctlSelectEvent:
switch(e->data.ctlSelect.controlID) {
case MainPastCheckBox:
MainFormInit();
FrmDrawForm(FrmGetActiveForm());
break;
case MainPublishButton: {
ApptDBRecordType r;
Word index;
VoidHand handle;
index=FirstIndex;
DmSeekRecordInCategory(DatebookDB, &index,
LstGetSelection(GetObjectPtr(MainList)),
dmSeekForward, dmAllCategories);
ApptGetRecord(DatebookDB, index, &r, &handle);
LinkPublish((LinkInfoPtr)LinkSimpleNew(DatebookDB,
index, r.description));
MemHandleUnlock(handle);
break;
};
default:
break;
}
break;
default:
break;
}
CALLBACK_EPILOGUE
return handled;
}
static Boolean ApplicationHandleEvent(EventPtr e)
{
FormPtr frm;
Word formId;
Boolean handled = false;
if (e->eType == frmLoadEvent) {
formId = e->data.frmLoad.formID;
frm = FrmInitForm(formId);
FrmSetActiveForm(frm);
switch(formId) {
case MainForm:
FrmSetEventHandler(frm, MainFormHandleEvent);
break;
}
handled = true;
}
return handled;
}
/* Get preferences, open (or create) app database */
static Word StartApplication(void)
{
FrmGotoForm(MainForm);
return 0;
}
/* Save preferences, close forms, close app database */
static void StopApplication(void)
{
FrmSaveAllForms();
FrmCloseAllForms();
}
/* The main event loop */
static void EventLoop(void)
{
Word err;
EventType e;
do {
EvtGetEvent(&e, evtWaitForever);
if (! SysHandleEvent (&e))
if (! MenuHandleEvent (NULL, &e, &err))
if (! ApplicationHandleEvent (&e))
FrmDispatchEvent (&e);
} while (e.eType != appStopEvent);
}
/* Main entry point; it is unlikely you will need to change this except to
handle other launch command codes */
DWord PilotMain(Word cmd, Ptr cmdPBP, Word launchFlags)
{
Word err;
switch (cmd) {
case sysAppLaunchCmdNormalLaunch:
case linkAppLaunchRequestLink:
err = StartApplication();
if (err) return err;
EventLoop();
StopApplication();
break;
case linkAppLaunchFollowLinkSubCall: {
GoToParamsPtr gotoparams;
DmSearchStateType searchstate;
UInt cardno;
LocalID dbid;
Err err;
gotoparams=LinkSimpleToGoToParams((LinkSimplePtr)cmdPBP);
/* try datebk3/4 first, then actionnames, then fallback to standard db */
err=DmGetNextDatabaseByTypeCreator(true, &searchstate, 'appl', 'CESF',
true, &cardno, &dbid);
if (err==dmErrCantFind)
err=DmGetNextDatabaseByTypeCreator(true, &searchstate, 'appl', 'CESD',
true, &cardno, &dbid);
if (err==dmErrCantFind)
err=DmGetNextDatabaseByTypeCreator(true, &searchstate, 'appl', 'Actn',
true, &cardno, &dbid);
if (err==dmErrCantFind)
err=DmGetNextDatabaseByTypeCreator(true, &searchstate, 'appl', 'date',
true, &cardno, &dbid);
MemPtrSetOwner(gotoparams, 0);
SysUIAppSwitch(cardno, dbid, sysAppLaunchCmdGoTo, (Ptr)gotoparams);
break;
};
default:
return sysErrParamErr;
};
return 0;
}