⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calltoda.c

📁 palm os上的DA编程
💻 C
📖 第 1 页 / 共 3 页
字号:
/* CallToDA * Find phone# info from Address database (Desk Accessory) * * by TERADA, Koichi * email: kterada@iname.com * web:   http://www04.u-page.so-net.ne.jp/zd5/kterada/ * Jan. 2000 */#include <Pilot.h>#include <Common.h>#include <System/SysAll.h>#include <UI/UIAll.h>#include <Hardware/Hardware.h>#include "CallToDA.h"#include "CallToDA_res.h"/* Internal Functions prototyping */static void initParam( Param *param );static void showSearchDialog( Param *param );static void showMainDialog( Param *param, Char *buttonLabel );static Boolean EventMainLoop( Param * );static Boolean HandleMainEvent(EventPtr, Param *);static Boolean IsInside(RectanglePtr, SWord, SWord);static Boolean IsOutside(RectanglePtr, SWord, SWord);static void ExorFrame(Word, Word);static CharPtr copyButtonLabel( CharPtr, Word, Word );static void switchFormBitmaps( FormPtr, Word );static void formSetHelpResource( FormPtr, Word );static void showObject( FormPtr, Word );static void hideObject( FormPtr, Word );static void showMoreOptionControls( FormPtr );static void showOptionControls( FormPtr, Param * );static void showMainControls( FormPtr, Param * );static void setCompanyTitleFlags( Param *param );static void ctrlButton( Param *, FormPtr, Word, AddressPhoneLabels );static void showCtrlButtons( Param *, FormPtr );static void frmSetObjectValue( FormPtr, Word, Boolean);static void frmSetPopTriggerLabel( FormPtr form, Word listId, Word triggerId, Word item );static void setAndDrawFields( Param * );static void getSelectedButtonLabel( CharPtr buttonLabel, Param *param );static void CopyClipboard( Param *param );void displayNextIndicate( UInt index );void initIndicate( void );static Word showInputDialog( Param *param );static Boolean EventInputLoop( Param *param );static Boolean HandleInputEvent(EventPtr event, Param *param);static Boolean copyFieldToBuf( Param *param );/* End of Header */void start(){	FormPtr		orgForm;	VoidHand	handle;	Param		*param;	DWord		featureValue;//	int			i;	Boolean		launchAddrAppl;	Word		rec;	ULong		creator;	Char		*applName;	Char		buttonLabel[MAX_BTN_TXT];//	FieldPtr	fieldptr;	Word		strLen;	orgForm = FrmGetActiveForm();	if( PrefGetPreference(prefDeviceLocked) )		return;		if( FtrGet( CallToAppID, 0, &featureValue ) == 0 ) {		FrmAlert( QuitAlert );		return;	}	FtrSet( CallToAppID, 0, 0 );		handle = MemHandleNew( sizeof( Param ));	param = MemHandleLock( handle );	LoadFromPrefs( param );	initParam( param );	param->disableInsert = false;	param->noInsertField = false;	param->rootWindow = WinGetDisplayWindow();	setCompanyTitleFlags( param );		param->dbP = DmOpenDatabaseByTypeCreator( Address_Type, Address_AppID, dmModeReadOnly );	if( param->dbP != 0 ) {		strLen = getSelectedText( param->src, param );		if( strLen <= 0 ) {			strLen = showInputDialog( param );			if( param->fieldptr == NULL ) {				param->noInsertField = true;			}//			if( strLen <= 0 )//				FrmAlert( NoselectionAlert );		}		if( strLen > 0 ) {			do {				/* Init parameteres */				initParam( param );				/* show "searching" dialog */				showSearchDialog( param );				if( param->indexNum == 0 || param->noInsertField ) {					param->disableInsert = true;				} else {					param->disableInsert = false;				}				/* show main dialog */				showMainDialog( param, buttonLabel );			} while( param->searchAgain );			/*{	char buf[20];				StrIToA( buf, param->indexNum );				FrmCustomAlert( MsgAlert, "param->indexNum", buf, " " );	}	*/			if( !param->disableInsert && param->insert && param->indexNum > 0 ) {				char temp[MAX_TEXT * 2];				/*{	char buf[20];					StrIToA( buf, StrLen(param->buf2) );					FrmCustomAlert( MsgAlert, "StrLen(param->buf2)", buf, " " );	}*/				FrmSetActiveForm( orgForm );				reformatPastableText( temp, buttonLabel, param );				putSelectedText( temp, param );			}		}		DmCloseDatabase( param->dbP );	}	launchAddrAppl = param->launchAddrAppl;	rec = param->indexList[ param->index ];	switch( param->p.launchAppl ) {	case LAUNCH_ADDR_J:		creator = Address_AppID_AddressJ;		applName = Address_AppName_AddressJ;		break;	case LAUNCH_ADDR_PLUS:		creator = Address_AppID_AddressPlus;		applName = Address_AppName_AddressPlus;		break;	case LAUNCH_SUPERNAMES:		creator = Address_AppID_SuperNames;		applName = Address_AppName_SuperNames;		break;	case LAUNCH_TEALPHONE:		creator = Address_AppID_TealPhone;		applName = Address_AppName_TealPhone;		break;	case LAUNCH_ADDR_ORG:	default:		creator = sysFileCAddress;		applName = "Address";		break;	}	SaveToPrefs( param );	MemHandleUnlock( handle );	MemHandleFree( handle );	FtrUnregister( CallToAppID, 0 );	if( launchAddrAppl ) {		launchAddress( rec, creator, applName );	}}static void initParam( Param *param ){	int i;		param->index = 0;	param->searchAgain = false;	param->indicateStatus = 0;	param->optionControl = MAIN_FORM;	*(param->buf1) = *(param->buf2) = '\0';	param->moving = false;	param->insert = false;	param->launchAddrAppl = false;	param->mode = -1;	param->modeNum = -1;	for( i = 0 ; i < numPhoneLabels ; i ++ ) {	    param->availPhone[i] = false;	}	return;}static void showSearchDialog( Param *param ){	FieldPtr fieldptr;	FormPtr form;		form = FrmInitForm( SearchingForm );	FrmSetActiveForm( form );			fieldptr = FrmGetObjectPtr(form, FrmGetObjectIndex(form, searchingSearchTextField));	FldSetTextPtr(fieldptr, param->src);	FldRecalculateField(fieldptr, true);	FrmDrawForm( form );	param->indexNum = FindAddrDB( param );	FrmEraseForm( form );	FrmDeleteForm( form );	if( param->indexNum >= MAX_ADDR_LIST )		FrmAlert( TooManyRecordsFoundAlert );		return;}static void showMainDialog( Param *param, Char *buttonLabel ){	FormPtr form;		form = FrmInitForm( MainForm );	form->window.windowBounds.topLeft.x = param->p.lastX;	form->window.windowBounds.topLeft.y = param->p.lastY;	FrmSetActiveForm( form );	formSetHelpResource( form, helpString );//	if( param->indexNum == 0 ) {//		FrmAlert( NomatchAlert );//	}	showMainControls( form, param );	setAndDrawFields( param );	EventMainLoop( param );	getSelectedButtonLabel( buttonLabel, param );	FrmEraseForm( form );	FrmDeleteForm( form );	return;}static Boolean EventMainLoop( Param *param ){	EventType event;	Word error;	Boolean done = false;		do {		EvtGetEvent (&event, evtWaitForever);		if (! SysHandleEvent (&event))			if (! MenuHandleEvent (NULL, &event, &error)) {				if ( param->moving 							|| event.eType == menuEvent 							|| event.eType == popSelectEvent 							|| !FrmHandleEvent(FrmGetActiveForm(), &event)) {					done = HandleMainEvent(&event, param);				}			}	} while ((event.eType != appStopEvent) && !done);	return done;}static Boolean HandleMainEvent(EventPtr event, Param *param){	Boolean handled = false;	Boolean done = false;	FormPtr form;	SWord moveX, moveY;		form = FrmGetActiveForm();	switch (event->eType) {		case appStopEvent:			EvtAddEventToQueue(event);			done= true;			handled = true;			break;				case ctlSelectEvent:			switch (event->data.ctlSelect.controlID) {				case mainButtonDoneButton:					done= true;					handled = true;					break;				case mainAgainButton:					param->searchAgain = true;					done= true;					handled = true;					break;				case mainButtonInsertButton:					param->insert = true;					done= true;					handled = true;					break;				case mainButtonOptionButton:					param->optionControl = OPTION_FORM;					formSetHelpResource( form, helpOptionString );					showOptionControls( form, param );					//param->MenuP = MenuSetActiveMenu( NULL );					setAndDrawFields( param );					handled = true;					break;				case mainButtonOKButton:					if( param->optionControl == OPTION_FORM ) {						param->optionControl = MAIN_FORM;						formSetHelpResource( form, helpString );						showMainControls( form, param );						//MenuSetActiveMenu( param->MenuP );					} else {						param->optionControl = OPTION_FORM;						formSetHelpResource( form, helpOptionString );						showOptionControls( form, param );					}					setAndDrawFields( param );					handled = true;					break;				case mainMoreButton:					param->optionControl = MORE_FORM;					formSetHelpResource( form, helpSearchString );					showMoreOptionControls( form );					setAndDrawFields( param );					handled = true;					break;				case mainNameFormat0PushButton:		// First					param->p.includeLastname = false;					param->p.swapFirstLast = false;					param->p.omitComma = false;					setAndDrawFields( param );					handled = true;					break;				case mainNameFormat1PushButton:		// Last, First					param->p.includeLastname = true;					param->p.swapFirstLast = true;					param->p.omitComma = false;					setAndDrawFields( param );					handled = true;					break;				case mainNameFormat2PushButton:		// First Last					param->p.includeLastname = true;					param->p.swapFirstLast = false;					param->p.omitComma = false;					setAndDrawFields( param );					handled = true;					break;				case mainNameFormat3PushButton:		// Last First					param->p.includeLastname = true;					param->p.swapFirstLast = true;					param->p.omitComma = true;					setAndDrawFields( param );					handled = true;					break;/*				case mainCheckbox_includeCheckbox:					param->p.includeLastname = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainCheckbox_swapCheckbox:					param->p.swapFirstLast = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainNoCommaCheckbox:					param->p.omitComma = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;*/				case mainPasteTypeCheckbox:					param->p.pasteType = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainPasteCompanyCheckbox:					param->pasteCompany = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainPasteTitleCheckbox:					param->pasteTitle = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;//				case mainJapaneseCheckbox://					param->p.japanese = event->data.ctlSelect.on;//					setAndDrawFields( param );//					handled = true;//					break;				case mainLangUSPushButton:					param->p.language = LANG_US;					setAndDrawFields( param );					handled = true;					break;				case mainLangJPPushButton:					param->p.language = LANG_JP;					setAndDrawFields( param );					handled = true;					break;				case mainLangEUPushButton:					param->p.language = LANG_EU;					setAndDrawFields( param );					handled = true;					break;	/*			case mainAltStrstriCheckbox:					param->p.altStrstri = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;	*/				case mainIgnoreCaseCheckbox:					param->p.ignoreCase = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainFindNameCompanyCheckbox:					param->p.findNameCompany = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainFindPhonesCheckbox:					param->p.findPhones = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainFindAddressCheckbox:					param->p.findAddress = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainFindCustomsCheckbox:					param->p.findCustoms = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainFindNoteCheckbox:					param->p.findNote = event->data.ctlSelect.on;					setAndDrawFields( param );					handled = true;					break;				case mainButtonUpButton:					if( param->index > 0 ) {						param->index --;					}					param->mode = param->modeNum = -1;					setAndDrawFields( param );					handled = true;					break;				case mainButtonDownButton:					if( param->index + 1 < param->indexNum ) {						param->index ++;					}					param->mode = param->modeNum = -1;					setAndDrawFields( param );					handled = true;					break;				case mainButtonWPushButton:					if( event->data.ctlSelect.on ) {						if( param->mode == workLabel )							param->modeNum ++;						else							param->modeNum = -1;						param->mode = workLabel;					} else {						param->mode = 0;					}					setAndDrawFields( param );					handled = true;					break;				case mainButtonHPushButton:					if( event->data.ctlSelect.on ) {						if( param->mode == homeLabel )							param->modeNum ++;						else							param->modeNum = -1;						param->mode = homeLabel;					} else {						param->mode = 0;					}					setAndDrawFields( param );					handled = true;					break;				case mainButtonMoPushButton:					if( event->data.ctlSelect.on ) {						if( param->mode == mobileLabel )							param->modeNum ++;						else							param->modeNum = -1;						param->mode = mobileLabel;					} else {						param->mode = 0;					}					setAndDrawFields( param );					handled = true;					break;				case mainButtonMaPushButton:					if( event->data.ctlSelect.on ) {						if( param->mode == mainLabel )							param->modeNum ++;						else							param->modeNum = -1;						param->mode = mainLabel;					} else {						param->mode = 0;					}					setAndDrawFields( param );					handled = true;					break;				case mainButtonOPushButton:					if( event->data.ctlSelect.on ) {						if( param->mode == otherLabel )							param->modeNum ++;						else							param->modeNum = -1;						param->mode = otherLabel;					} else {						param->mode = 0;					}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -