コード例 #1
0
ファイル: util.c プロジェクト: BackupTheBerlios/paleohack
/**********************************************************************
  Tell the Palm to act like the user tapped the given button...
  Return true if we did (a very few callers would like to know)
**********************************************************************/
Boolean hit_button_if_usable(FormPtr frm, Word btn_index)
{
  ControlPtr btn;
  btn = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, btn_index));
  if (btn->attr.usable)
    CtlHitControl(btn);
  return (btn->attr.usable);
}
コード例 #2
0
ファイル: main_form.c プロジェクト: kjk/noah-palm
void MainFormPressFindButton(const FormType* form) 
{
    Assert(form);
    Assert(formDictMain==FrmGetFormId(form));
    UInt16 index=FrmGetObjectIndex(form, buttonFind);
    Assert(frmInvalidObjectId!=index);
    const ControlType* findButton=static_cast<const ControlType*>(FrmGetObjectPtr(form, index));
    Assert(findButton);
    CtlHitControl(findButton);
}
コード例 #3
0
ファイル: resident_browse_form.c プロジェクト: kjk/noah-palm
static void ResidentBrowseFormChooseWord(AppContext* appContext, FormType* form, UInt32 wordNo)
{
    ControlType* cancelButton=NULL;
    UInt16 index=FrmGetObjectIndex(form, buttonCancel);
    Assert(index!=frmInvalidObjectId);
    appContext->currentWord = wordNo;
    Assert(appContext->currentWord < appContext->wordsCount);
    cancelButton=(ControlType*)FrmGetObjectPtr(form, index);
    Assert(cancelButton);
    CtlHitControl(cancelButton);
}
コード例 #4
0
ファイル: main_form.c プロジェクト: kjk/noah-palm
static Boolean RegistrationFormHandleEvent(EventType* event)
{
    Boolean     handled=false;
    FormType*   form=FrmGetFormPtr(formRegistration);
    UInt16      index;
    char *      regCode;
    AppContext* appContext=GetAppContext();

    switch (event->eType)
    {
        case winEnterEvent:
            if ((reinterpret_cast<_WinEnterEventType&>(event->data)).enterWindow==(void*)form)
            {
                index=FrmGetObjectIndex(form, fieldRegCode);
                Assert(frmInvalidObjectId!=index);
                FrmSetFocus(form, index);
                FieldType* field=static_cast<FieldType*>(FrmGetObjectPtr(form, index));
                Assert(field);

                regCode = (char*)appContext->prefs.regCode;
                if (StrLen(regCode)>0)
                {
                    FldClearInsert(form, fieldRegCode, regCode);
                    FldSelectAllText(field);
                }
            }
            handled = true;
            break;

        case keyDownEvent:
            if (returnChr==event->data.keyDown.chr || linefeedChr==event->data.keyDown.chr)
            {
                index=FrmGetObjectIndex(form, buttonRegister);
                Assert(frmInvalidObjectId!=index);
                const ControlType* regButton=static_cast<const ControlType*>(FrmGetObjectPtr(form, index));
                Assert(regButton);
                CtlHitControl(regButton);
                handled=true;
            }
    }
    return handled;
}
コード例 #5
0
ファイル: exams.c プロジェクト: timn/unimatrix
Boolean
ExamsFormHandleEvent(EventPtr event)
{
  FormPtr frm=FrmGetActiveForm();
  Boolean handled = false;
  Boolean categoryEdited, reDraw=false;
  UInt16 category, numRecords;
  ControlType *ctl;
  UInt32 *recordList;

  if (event->eType == ctlSelectEvent) {
    // button handling
    switch (event->data.ctlSelect.controlID) {
      case BUTTON_ex_back:
        handled=true;
        FrmGotoForm(FORM_main);
        break;

      case BUTTON_ex_add:
        handled=true;
        if (CountCourses() > 0) {
          gExamsLastSelRowUID=0;
          FrmPopupForm(FORM_exam_details);
        } else {
          FrmAlert(ALERT_nocourses);
        }
        break;

      case BUTTON_ex_edit:
        handled=true;
        gExamsLastSelRowUID=TblGetRowData(GetObjectPtr(TABLE_exams), gExamsSelRow);
        FrmPopupForm(FORM_exam_details);
        break;

      case BUTTON_ex_note:
      {
        UInt16 index=0;

        handled=true;

        gExamsLastSelRowUID=TblGetRowData(GetObjectPtr(TABLE_exams), gExamsSelRow);
        DmFindRecordByID(DatabaseGetRefN(DB_MAIN), gExamsLastSelRowUID, &index);
        NoteSet(index, FORM_exams);
        FrmPopupForm(NewNoteView);
        break;
      }

      case BUTTON_ex_del:
        handled=true;
        gExamsLastSelRowUID=TblGetRowData(GetObjectPtr(TABLE_exams), gExamsSelRow);
        ExamDelete();
        break;

      case BUTTON_ex_beam:
        handled=true;
        gExamsLastSelRowUID=TblGetRowData(GetObjectPtr(TABLE_exams), gExamsSelRow);
        ExamBeam();
        break;

      case LIST_ex_cat_trigger:
        handled=true;
        category=DatabaseGetCat();
        numRecords=DmNumRecordsInCategory(DatabaseGetRef(), DELETE_CATEGORY);
        recordList=(UInt32 *)MemPtrNew(numRecords * sizeof(UInt32));
        CatPreEdit(numRecords, recordList);
        categoryEdited = CategorySelect(DatabaseGetRef(), frm,
                                        LIST_ex_cat_trigger, LIST_ex_cat, false,
                                        &category, gCategoryName, 0,
                                        STRING_cat_edit); // categoryDefaultEditCategoryString
        if (categoryEdited || (category != DatabaseGetCat())) {
          reDraw=true;
          DatabaseSetCat(category);
          ctl = GetObjectPtr(LIST_ex_cat_trigger);
          CategoryGetName(DatabaseGetRef(), category, gCategoryName); 
          CategorySetTriggerLabel(ctl, gCategoryName);
        }
        CatPostEdit(numRecords, recordList);
        if (reDraw) {
          gExamsOffset=0;
          gExamsSelRow=0;
          FrmUpdateForm(FORM_exams, frmRedrawUpdateCode);
        }
        if (recordList != NULL)  MemPtrFree((MemPtr)recordList);
        break;

      default:
        break;
    }
  } else if (event->eType == tblEnterEvent) {
    UInt16 i;
    
    if (event->data.tblEnter.column == EXCOL_DONE) {
      handled=false;
    } else if (event->data.tblEnter.column == EXCOL_NOTE) {
      MemHandle m;
      Boolean hasNote=false;

      gExamsSelRow=event->data.tblEnter.row;
      for (i=0; i < TblGetNumberOfRows(event->data.tblEnter.pTable); ++i) {
        RectangleType r;
        TblGetItemBounds(event->data.tblEnter.pTable, i, EXCOL_SELI, &r);
        TableDrawSelection(event->data.tblEnter.pTable, i, event->data.tblEnter.column, &r);
      }


      m = DmQueryRecord(DatabaseGetRefN(DB_MAIN), TblGetRowID(event->data.tblEnter.pTable, event->data.tblEnter.row));
      if (m) {
        ExamDBRecord *ex = (ExamDBRecord *)MemHandleLock(m);
        if (ex->note) hasNote = true;
        else          hasNote = false;
        MemHandleUnlock(m);
      }

      if (hasNote) {
        Coord newPointX, newPointY;
        Boolean isPenDown=false, drawn=false;
        RectangleType fieldBounds;
        IndexedColorType curForeColor, curBackColor, curTextColor;
        Char noteSymb[2] = { GADGET_NOTESYMBOL, 0 };
        FontID oldFont;
  
  
        EvtGetPen(&newPointX, &newPointY, &isPenDown);
        TblGetItemBounds(event->data.tblEnter.pTable, event->data.tblEnter.row, EXCOL_NOTE, &fieldBounds);
  
        oldFont = FntSetFont(symbolFont);
        while (isPenDown){
          if (! drawn && RctPtInRectangle(newPointX, newPointY, &fieldBounds)) {
            curForeColor = WinSetForeColor(UIColorGetTableEntryIndex(UIObjectSelectedForeground));
            curBackColor = WinSetBackColor(UIColorGetTableEntryIndex(UIObjectSelectedFill));
            curTextColor = WinSetTextColor(UIColorGetTableEntryIndex(UIObjectSelectedForeground));
            TNDrawCharsToFitWidth(noteSymb, &fieldBounds);
            WinSetForeColor(curForeColor);
            WinSetForeColor(curBackColor);
            WinSetForeColor(curTextColor);
            drawn = true;
          } else if (drawn && ! RctPtInRectangle(newPointX, newPointY, &fieldBounds)) {
            curForeColor = WinSetForeColor(UIColorGetTableEntryIndex(UIObjectForeground));
            curBackColor = WinSetBackColor(UIColorGetTableEntryIndex(UIObjectFill));
            curTextColor = WinSetTextColor(UIColorGetTableEntryIndex(UIObjectForeground));
            TNDrawCharsToFitWidth(noteSymb, &fieldBounds);
            WinSetForeColor(curForeColor);
            WinSetForeColor(curBackColor);
            WinSetForeColor(curTextColor);
            drawn = false;
          }
          EvtGetPen(&newPointX, &newPointY, &isPenDown);
        }
        FntSetFont(oldFont);
      } else {
        handled = true;
      }
    } else {
      gExamsSelRow=event->data.tblEnter.row;
      for (i=0; i < TblGetNumberOfRows(event->data.tblEnter.pTable); ++i) {
        RectangleType r;
        TblGetItemBounds(event->data.tblEnter.pTable, i, EXCOL_SELI, &r);
        TableDrawSelection(event->data.tblEnter.pTable, i, event->data.tblEnter.column, &r);
      }
      handled=true;
    }
  } else if (event->eType == tblSelectEvent) {
    if (event->data.tblEnter.column == EXCOL_DONE) {
      MemHandle mex;
      ExamDBRecord *ex;
      Boolean done=(TblGetItemInt(event->data.tblSelect.pTable, event->data.tblSelect.row, event->data.tblSelect.column) == 0) ? false : true;
      UInt16 flags, index=TblGetRowID(event->data.tblSelect.pTable, event->data.tblSelect.row);

      mex=DmGetRecord(DatabaseGetRefN(DB_MAIN), index);
      ex = MemHandleLock(mex);
      flags = ex->flags;

      if (done) {
        flags |= EX_FLAG_DONE;
      } else {
        flags &= (EX_FLAG_DONE ^ 0xFFFF);
      }

      DmWrite(ex, offsetof(ExamDBRecord, flags), &flags, sizeof(flags));
      DmReleaseRecord(DatabaseGetRefN(DB_MAIN), index, false);

      TblMarkRowInvalid(event->data.tblSelect.pTable, event->data.tblSelect.row);
      TblRedrawTable(event->data.tblSelect.pTable);

      MemHandleUnlock(mex);

    } else if (event->data.tblEnter.column == EXCOL_NOTE) {
      ControlType *ctl=GetObjectPtr(BUTTON_ex_note);
      // Don't need code twice, just read ctlSelect Event for BUTTON_ex_note
      CtlHitControl(ctl);
    }
    handled=true;
  } else if (event->eType == ctlRepeatEvent) {
    // Repeat buttons pressed
    if( event->data.ctlRepeat.controlID == REPEAT_ex_up )
      gExamsOffset -= 1;
    else
      gExamsOffset += 1;

    ExamsTableInit();
    TblMarkTableInvalid(GetObjectPtr(TABLE_exams));
    TblRedrawTable(GetObjectPtr(TABLE_exams));
  } else if (event->eType == keyDownEvent) {
    // We have a hard button assigned and it was pressed
    if (TxtCharIsHardKey(event->data.keyDown.modifiers, event->data.keyDown.chr)) {
      if (! (event->data.keyDown.modifiers & poweredOnKeyMask)) {
        FrmGotoForm(FORM_main);
        handled = true;
      }
    }
  } else if (event->eType == menuOpenEvent) {
    return HandleMenuOpenEvent(event);
  } else if (event->eType == menuEvent) {
    // forwarding of menu events
    return HandleMenuEvent(event->data.menu.itemID);
  } else if (event->eType == frmOpenEvent) {
    // initializes and draws the form
    ControlType *ctl;

    gExamsOffset=0;
    ExamsTableInit();
    FrmDrawForm (frm);

    ctl = GetObjectPtr(LIST_ex_cat_trigger);
    CategoryGetName (DatabaseGetRef(), DatabaseGetCat(), gCategoryName); 
    CategorySetTriggerLabel (ctl, gCategoryName); 

    handled = true;
  } else if (event->eType == frmUpdateEvent) {
    // redraws the form if needed
    gExamsOffset=0;
    ExamsTableInit();
    FrmDrawForm(frm);
    handled = false;
  } else if (event->eType == frmCloseEvent) {
    // this is done if form is closed
    // TblEraseTable(GetObjectPtr(TABLE_exams));
    // ExamsFormFree();
    FrmEraseForm(frm);
  }

  return (handled);

}
コード例 #6
0
ファイル: SMSReply.cpp プロジェクト: oldhu/smstw
Boolean ReplyFormHandleEvent(EventType * eventP)
{
	Boolean handled = false;
	FormType * frmP;
	static Boolean listShown = false;
	
	frmP = FrmGetActiveForm();

	switch (eventP->eType) 
	{
		case frmOpenEvent:
			switch (g_ComposeMode) {
				case COMPOSE_REPLY:
					ReplyCurrentRecord(g_SmsDb);
					SetupReplyForm(frmP);
					break;
				case COMPOSE_NEW:
					SetupNewForm(frmP);
					break;
				case COMPOSE_FORWARD:
					ForwardCurrentRecord(g_SmsDb);
					SetupNewForm(frmP);
					break;
				case COMPOSE_FEATURE:
					SetupFeatureNew();
					SetupNewForm(frmP);
					break;
				case COMPOSE_RESTORE:
					RestoreReplyForm();
					break;
			}
			FrmDrawForm(frmP);
			ListAllGroups();
			SetTriggerText(0);
			handled = true;
			break;
		case frmCloseEvent:
			ClearPhoneGroups(g_PhoneGroups);
			break;
		case menuEvent:
			switch(eventP->data.menu.itemID) {
				case MenuItemQueue:
					DoQueue();
					break;
				case MenuItemBack:
					DoBack();
					break;
				case MenuItemDraft:
					DoDraft();
					break;
				case MenuItemSend:
					DoSend();
					break;
				case MenuItemSendAndBack:
					DoSendAndBack();
					break;
				case MenuItemSelectTo:
					SelectTo();
					break;
				case MenuItemSelectGroup:
					CtlHitControl((ControlPtr) GetObjectPtr(frmP, TriggerGroup));
					break;
			}
			break;
		case ctlSelectEvent:
			switch(eventP->data.ctlSelect.controlID) {
				case ButtonSendAndBack:
					DoSendAndBack();
					break;
				case ButtonBack:
					DoBack();
					break;
				case ButtonGo:
					DoSend();
					break;
				case ButtonSelectTo:
					SelectTo();
					break;
				case TriggerGroup:
					if (listShown) {
						FrmHideObject(frmP, FrmGetObjectIndex(frmP, ListGroups));
						FrmDrawForm(frmP);
						listShown = false;
					} else {
						FrmShowObject(frmP, FrmGetObjectIndex(frmP, ListGroups));
						listShown = true;
					}
					handled = true;
					break;
			}
			break;
		case penDownEvent:
			if (IsEventInControl(frmP, eventP, TriggerGroup)) break;
			if (IsEventInControl(frmP, eventP, ListGroups)) break;
			FrmHideObject(frmP, FrmGetObjectIndex(frmP, ListGroups));
			FrmDrawForm(frmP);
			listShown = false;
			break;
		case lstSelectEvent:
			if (eventP->data.lstSelect.listID == ListGroups) {
				FrmHideObject(frmP, FrmGetObjectIndex(frmP, ListGroups));
				FrmDrawForm(frmP);
				listShown = false;
				
				ListPtr list = (ListPtr) GetObjectPtr(frmP, ListGroups);
				Int16 sel = LstGetSelection(list);
				if (sel == noListSelection) {
					ShowMsg("Select a group.");
					break;
				}
				SetTriggerText(sel);
			}
			break;
		case keyDownEvent:
			WChar chr = eventP->data.keyDown.chr;
			UInt16 		keyCode		= eventP->data.keyDown.keyCode;
			switch(chr)
			{
				case vchrPageUp:
					if (listShown)
						SelectNextInList(-1);
					else
						ScrollFieldPage(frmP, FieldReference, ScrollbarReference, winUp);
					break;
				case vchrPageDown:
					if (listShown)
						SelectNextInList(1);
					else
						ScrollFieldPage(frmP, FieldReference, ScrollbarReference, winDown);
					break;
				case vchrNavChange:
					if(keyCode & navBitSelect) {
						FrmHideObject(frmP, FrmGetObjectIndex(frmP, ListGroups));
						FrmDrawForm(frmP);
						listShown = false;
						
						ListPtr list = (ListPtr) GetObjectPtr(frmP, ListGroups);
						Int16 sel = LstGetSelection(list);
						if (sel == noListSelection) {
							ShowMsg("Select a group.");
							break;
						}
						SetTriggerText(sel);
					}
					break;
			}
			break;
		case sclRepeatEvent:
			ScrollFieldByEvent(frmP, eventP, FieldReference, ScrollbarReference);
			break;
	}
	return handled;
}