frmurl.c

来自「WAP browser is based on the Wireless App」· C语言 代码 · 共 287 行

C
287
字号
// CHANGE: The handle event for the URL Dialog was in frmBrowser.c, 
#include    <PalmOS.h>
#include    <SysEvtMgr.h>
#include	<SystemResources.h>
#include 	"WAPUniverse.h"
#include    "PalmUtils.h"
#include	"build.h"
#include 	"../res/WAPUniverse_res.h"
#include    "formUrlList.h"
#include    "formConnectionList.h"
#include    "formEditConnection.h"
#include    "formEditUrl.h"
#include    "dbConn.h"
#include    "frmScroll.h"
#include 	<NetMgr.h>
#include 	"wml.h"
#include    "history.h"
#include    "frmUrl.h"
#include    "MenuHnd.h"
// 
#ifdef __GNUC__
#include "callbacks.h"
#endif

#define appFileCreator            'gWAP'
#define appVersionNum              0x01
#define appPrefID                  0x00
#define appPrefVersionNum          0x01

#define			UrlDefaultPrefix	     "http://"
#define			UrlDefaultPrefixS	     "https://"
static	char*	UrlDefaultPrefixP      = UrlDefaultPrefix;
//#define			UrlDefaultPrefixCheckL	 4
#define			UrlDefaultPrefixCheckL	 7
static	char*	UrlDefaultPrefixSP      = UrlDefaultPrefixS;
#define			UrlDefaultPrefixSCheckL	 8
#define			UrlDefaultPrefixL	     sizeof(UrlDefaultPrefix) - 1	// -1 for zero ending
#define			UrlDefaultPrefix2	     "www."
static	char*	UrlDefaultPrefix2P      = UrlDefaultPrefix2;
#define			UrlDefaultPrefix2L	     sizeof(UrlDefaultPrefix2) - 1	// -1 for zero ending
#define			UrlDefaultPrefix3	     ".com"
static	char*	UrlDefaultPrefix3P      = UrlDefaultPrefix3;
#define			UrlDefaultPrefix3L	     sizeof(UrlDefaultPrefix3) - 1	// -1 for zero ending
#define			UrlDefaultPrefix4	     ".org"
static	char*	UrlDefaultPrefix4P      = UrlDefaultPrefix4;
#define			UrlDefaultPrefix4L	     sizeof(UrlDefaultPrefix4) - 1	// -1 for zero ending
#define			UrlDefaultPrefix5	     "wap"
static	char*	UrlDefaultPrefix5P      = UrlDefaultPrefix5;
#define			UrlDefaultPrefix5L	     sizeof(UrlDefaultPrefix5) - 1	// -1 for zero ending
#define			UrlDefaultPrefix6	     "/"
static	char*	UrlDefaultPrefix6P      = UrlDefaultPrefix6;
#define			UrlDefaultPrefix6L	     sizeof(UrlDefaultPrefix6) - 1	// -1 for zero ending
#define			UrlDefaultPrefix7	     "index"
static	char*	UrlDefaultPrefix7P      = UrlDefaultPrefix7;
#define			UrlDefaultPrefix7L	     sizeof(UrlDefaultPrefix7) - 1	// -1 for zero ending
#define			UrlDefaultPrefix8	     ".wml"
static	char*	UrlDefaultPrefix8P      = UrlDefaultPrefix8;
#define			UrlDefaultPrefix8L	     sizeof(UrlDefaultPrefix8) - 1	// -1 for zero ending
#define			UrlDefaultPrefix9	     ".net"
static	char*	UrlDefaultPrefix9P      = UrlDefaultPrefix9;
#define			UrlDefaultPrefix9L	     sizeof(UrlDefaultPrefix9) - 1	// -1 for zero ending
#define			UrlDefaultPrefix10	     ".edu"
static	char*	UrlDefaultPrefix10P      = UrlDefaultPrefix10;
#define			UrlDefaultPrefix10L	     sizeof(UrlDefaultPrefix10) - 1	// -1 for zero ending
#define			UrlDefaultPrefix11	     ".co.jp"
static	char*	UrlDefaultPrefix11P      = UrlDefaultPrefix11;
#define			UrlDefaultPrefix11L	     sizeof(UrlDefaultPrefix11) - 1	// -1 for zero ending
#define			UrlDefaultPrefix12	     ".uk"
static	char*	UrlDefaultPrefix12P      = UrlDefaultPrefix12;
#define			UrlDefaultPrefix12L	     sizeof(UrlDefaultPrefix12) - 1	// -1 for zero ending
#define			UrlDefaultPrefix13	     ".de"
static	char*	UrlDefaultPrefix13P      = UrlDefaultPrefix13;
#define			UrlDefaultPrefix13L	     sizeof(UrlDefaultPrefix13) - 1	// -1 for zero ending
#define			UrlDefaultPrefix14	     "http://"
static	char*	UrlDefaultPrefix14P      = UrlDefaultPrefix14;
#define			UrlDefaultPrefix14L	     sizeof(UrlDefaultPrefix14) - 1	// -1 for zero ending
#define			UrlDefaultPrefix15	     "https://"
static	char*	UrlDefaultPrefix15P      = UrlDefaultPrefix15;
#define			UrlDefaultPrefix15L	     sizeof(UrlDefaultPrefix15) - 1	// -1 for zero ending


Boolean ehFormUrl(EventPtr event)
{
    Boolean 		handled = false;
    FormPtr         	frm;
    GlobalsType 	*g;
    Char*           	urlP;
    FieldPtr		urlFldP;
    Int16 		selection;
    Char 		*iDialNumberP;
    UInt16 		cardNo;
    LocalID 		dbID;
    DmSearchStateType 	searchState;
    UInt32 		creator;
    UInt32 		resultP;
    Err 		err;	
    
    
	urlFldP = GetObjectPtr(fldUrl);
		    	urlP    = (Char*) FldGetTextPtr(urlFldP);

	FtrGet(wuAppType, ftrGlobals, (UInt32 *)&g);
    switch (event->eType) 
        {
        case frmOpenEvent:
            frm = FrmGetActiveForm();
            FrmDrawForm(frm);
            FrmSetFocus(frm, FrmGetObjectIndex(frm, fldUrl));
            //WinDrawLine (116, 115, 153, 115);
            //WinDrawLine (153, 116, 153, 128);
            //WinDrawLine (116, 128, 153, 128);
            handled = true;
            break;
            
        case frmUpdateEvent:
            // To do any custom drawing here, first call 
            // FrmDrawForm(), then do your drawing, and 
            // then set handled to true.
            break;
        case frmCloseEvent:
			handled = true;
			break;
		case menuEvent:
           mhMenuEdit(event->data.menu.itemID);
    	   break;
         case ctlSelectEvent:
		switch (event->data.ctlSelect.controlID)
		{
			case triggerMore:
				selection = LstPopupList(GetObjectPtr (lstMore));
				if ( selection == 0 )
                	FldInsert( urlFldP, UrlDefaultPrefix14P, UrlDefaultPrefix14L );
            	else if ( selection == 1 )
                	FldInsert( urlFldP, UrlDefaultPrefix15P, UrlDefaultPrefix15L );
				else if ( selection == 2 )
                	FldInsert( urlFldP, UrlDefaultPrefix7P, UrlDefaultPrefix7L );
            	else if ( selection == 3 )
                	FldInsert( urlFldP, UrlDefaultPrefix8P, UrlDefaultPrefix8L );
                else if ( selection == 4 )
                	FldInsert( urlFldP, UrlDefaultPrefix9P, UrlDefaultPrefix9L );
                else if ( selection == 5 )
                	FldInsert( urlFldP, UrlDefaultPrefix10P, UrlDefaultPrefix10L );
                else if ( selection == 6 )
                	FldInsert( urlFldP, UrlDefaultPrefix11P, UrlDefaultPrefix11L );
                else if ( selection == 7 )
                	FldInsert( urlFldP, UrlDefaultPrefix12P, UrlDefaultPrefix12L );
                else if ( selection == 8 )
                	FldInsert( urlFldP, UrlDefaultPrefix13P, UrlDefaultPrefix13L );
				handled = true;
				break;
			case pushWww:
				FldInsert( urlFldP, UrlDefaultPrefix2P, UrlDefaultPrefix2L );
				CtlSetValue (GetObjectPtr(pushWww), 0);
				handled = true;
				break;
			case pushCom:
				FldInsert( urlFldP, UrlDefaultPrefix3P, UrlDefaultPrefix3L );
				CtlSetValue (GetObjectPtr(pushCom), 0);
				handled = true;
				break;
			case pushOrg:
				FldInsert( urlFldP, UrlDefaultPrefix4P, UrlDefaultPrefix4L );
				CtlSetValue (GetObjectPtr(pushOrg), 0);
				handled = true;
				break;
			case pushWap:
				FldInsert( urlFldP, UrlDefaultPrefix5P, UrlDefaultPrefix5L );
				CtlSetValue (GetObjectPtr(pushWap), 0);
				handled = true;
				break;
			case pushSlash:
				FldInsert( urlFldP, UrlDefaultPrefix6P, UrlDefaultPrefix6L );
				CtlSetValue (GetObjectPtr(pushSlash), 0);
				handled = true;
				break;
			
			case buttonUrlOpen:
				urlFldP = GetObjectPtr(fldUrl);
		    	urlP    = FldGetTextPtr(urlFldP);
		    	if (urlP && (FldGetTextLength(urlFldP) > 1) && (StrNCompare( urlP, UrlDefaultPrefixP, UrlDefaultPrefixCheckL ) != 0))
				{
					if (urlP && (StrNCompare( urlP, UrlDefaultPrefixSP, UrlDefaultPrefixSCheckL ) != 0))
					    {
					    if (urlP && (StrNCompare( urlP, "wtai://", 7) != 0 )){
					    
						    if (urlP && (StrNCompare( urlP, "tel:", 4) != 0 )){
						    
							    if (urlP && (StrNCompare( urlP, "mailto:", 7) != 0 )){
							    
								    if (urlP && (StrNCompare( urlP, "device:", 7) != 0 )){
								    
									    if (urlP && (StrNCompare( urlP, "internal:", 9) != 0 )){
									    
									    	if (urlP && (StrNCompare( urlP, "proxy:", 6) != 0 )){
										    
												FldSetInsPtPosition( urlFldP, 0 );
												FldInsert( urlFldP, UrlDefaultPrefixP, UrlDefaultPrefixL );
												FldReleaseFocus( urlFldP );
											}
										}
									}
								}
							}
					   }
			    	}
				}
			urlP    = FldGetTextPtr(urlFldP);
			if(/*urlP*/FldGetTextLength(urlFldP) > 1)
			{
				if (urlP && (StrNCompare( urlP, "wtai://wp/mc;", 13) == 0 )){
					iDialNumberP = malloc(StrLen(urlP+13)+1);
  					StrCopy(iDialNumberP, urlP + 13);
  					if (!iDialNumberP)
  						MyErrorFunc ("Could not dial the phone number. No phone number.\n", "Dial Phone Number");
  					else
  						DisplayDial(iDialNumberP,1);
			    }
			    else {
			    	if (urlP && (StrNCompare( urlP, "wtai://wp/sd;", 13) == 0 )){
						iDialNumberP = malloc(StrLen(urlP+13)+1);
	  					StrCopy(iDialNumberP, urlP + 13);
	  					if (!iDialNumberP)
	  						MyErrorFunc ("Could not send the DTMF. No DTMF.\n", "Send DTMF");
	  					else
	  						DisplayDial(iDialNumberP,2);
				    }
				    else {
				    	if (urlP && (StrNCompare( urlP, "wtai://wp/ap;", 13) == 0 )){
							iDialNumberP = malloc(StrLen(urlP+13)+1);
		  					StrCopy(iDialNumberP, urlP + 13);
		  					if (!iDialNumberP)
		  						MyErrorFunc ("Could not add Address/Phone Book entry. No data.\n", "Add Address/Phone Book entry");
		  					else
		  						DisplayDial(iDialNumberP,3);
					    }
					    else {
						    if (urlP && (StrNCompare( urlP, "mailto:", 7) == 0 )){
								if (ExgGetDefaultApplication (&creator, exgRegSchemeID, "mailto")){
									MyErrorFunc("You do not have compatible e-mail software installed","mailto");
									//return -1;
								}
								else {
									DmGetNextDatabaseByTypeCreator(true, &searchState, sysFileTApplication,
								        creator, true, &cardNo, &dbID);
									err = SysAppLaunch (cardNo, dbID, 0, sysAppLaunchCmdGoToURL, urlP, &resultP);
									//return err;
								}
						    }
						    else {
				    			if (g->OpenUrl && g->OpenUrl != NULL)
			        				Free(g->OpenUrl);
				        		g->OpenUrl = Malloc(StrLen(urlP)+1);
				        		ErrFatalDisplayIf (!g->OpenUrl, "Malloc Failed");
				    			if (!urlP) {
										MyErrorFunc ("Could not open the URL. No URL!\n", "Open URL"); 
										return true;
								}
								else {
					    			StrCopy(g->OpenUrl, urlP);
									FrmReturnToForm(frmBrowser);
									FrmUpdateForm(frmBrowser,frmUpdateGotoUrl);
								}
							}
						}
					}
				}
			}
			else
			{
			  MyErrorFunc ("No URL. If you want to close the URL dialog without loading a URL please click the Cancel button.\n", "Open URL");
			}
				handled = true;
				break;
			case buttonUrlCancel:
				FrmReturnToForm(frmBrowser);
				handled = true;
				break;
		}
		break;
		
        
        default:
            break;
        }
       
    return handled;
}

⌨️ 快捷键说明

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