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 + -
显示快捷键?