📄 wmlelm.c
字号:
{
((OPTIONELEMENT *)(pElement))->pOnpick=*ppURL;
*ppURL=NULL;
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetOnTimer (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppURL)
{
pDecStr=pDecStr;
if (pElement->iType==Type_CARD)
{
if (((CARDELEMENT *)(pElement))->pOnTimer==NULL)
{
((CARDELEMENT *)(pElement))->pOnTimer=*ppURL;
/* ppURL MUST NOT be set to NULL here. The pointer is also
used in the calling function. */
return TRUE;
}
}
else if (pElement->iType==Type_TEMPLATE)
{
if (((TEMPLATEELEMENT *)(pElement))->pOnTimer==NULL)
{
((TEMPLATEELEMENT *)(pElement))->pOnTimer=*ppURL;
/* ppURL MUST NOT be set to NULL here. The pointer is also
used in the calling function. */
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetOptional (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppOptional, BOOL fOptional)
{
BOOL fResult=fOptional;
if (pElement->iType==Type_DO)
{
if (*ppOptional!=NULL)
{
WCHAR* pwchTemp=XML_ConvertToString(ppOptional,pDecStr);
if (!Convert_StringToBool(&pwchTemp,&fResult))
{
/* Error in conversion */
return FALSE;
}
}
((DOELEMENT *)(pElement))->fOptional=fResult;
return TRUE;
}
return FALSE;
}
BOOL WML_SetPath (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppPath)
{
if (pElement->iType==Type_ACCESS)
{
if (((ACCESSELEMENT *)(pElement))->pchPath==NULL)
{
((ACCESSELEMENT *)(pElement))->pchPath=XML_ConvertToString(ppPath,pDecStr);
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetScheme (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppScheme)
{
if (pElement->iType==Type_META)
{
if (((METAELEMENT *)(pElement))->pchScheme==NULL)
{
((METAELEMENT *)(pElement))->pchScheme=XML_ConvertToString(ppScheme,pDecStr);
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetSendReferer (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppSendRef, BOOL fSendRef)
{
BOOL fResult=fSendRef;
if (pElement->iType==Type_GO)
{
if (*ppSendRef!=NULL)
{
WCHAR* pwchTemp=XML_ConvertToString(ppSendRef,pDecStr);
if (!Convert_StringToBool(&pwchTemp,&fResult))
{
/* Error in conversion */
return FALSE;
}
}
((GOELEMENT *)(pElement))->fSendRef=fResult;
return TRUE;
}
return FALSE;
}
BOOL WML_SetSize (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppSize)
{
UINT32 iSize=0;
/* Convert size (text) to UINT32. The ELEMENTTYPE is removed
in the XML_ConvertToString function and the string is removed
in the Convert_StringToUINT32 function. */
WCHAR* pwchSize=XML_ConvertToString(ppSize,pDecStr);
if (Convert_StringToUINT32(&pwchSize,&iSize))
{
if (pElement->iType==Type_INPUT)
{
if (iSize>127)
{
((INPUTELEMENT *)(pElement))->iSize=-1;
}
else
{
((INPUTELEMENT *)(pElement))->iSize=(INT8)iSize;
}
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetSrc (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppHref)
{
pDecStr=pDecStr;
if (pElement->iType==Type_IMG)
{
if (((IMGELEMENT *)(pElement))->pSrc==NULL)
{
((IMGELEMENT *)(pElement))->pSrc=*ppHref;
*ppHref=NULL;
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetOrdered (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppOrdered, BOOL fOrdered)
{
BOOL fResult=fOrdered;
if (pElement->iType==Type_CARD)
{
if (*ppOrdered!=NULL)
{
WCHAR* pwchTemp=XML_ConvertToString(ppOrdered,pDecStr);
if (!Convert_StringToBool(&pwchTemp,&fResult))
{
/* Error in conversion */
return FALSE;
}
}
((CARDELEMENT *)(pElement))->fOrdered=fResult;
return TRUE;
}
return FALSE;
}
BOOL WML_SetTabIndex (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppTabIndex)
{
UINT8 iTabIndex=0;
/* Convert tabindex (text) to UINT8. The ELEMENTTYPE is removed
in the XML_ConvertToString function and the string is removed
in the ConvertNumber function. */
WCHAR* pwchTabIndex=XML_ConvertToString(ppTabIndex,pDecStr);
if (Convert_StringToUINT8(&pwchTabIndex,&iTabIndex))
{
if (pElement->iType==Type_INPUT)
{
((INPUTELEMENT *)(pElement))->iTabIndex=iTabIndex;
return TRUE;
}
else if (pElement->iType==Type_SELECT)
{
((SELECTELEMENT *)(pElement))->iTabIndex=iTabIndex;
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetTitle (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppTitle)
{
pDecStr=pDecStr;
switch (pElement->iType)
{
case Type_A:
case Type_ANCHOR:
if (((AELEMENT *)(pElement))->pTitle==NULL)
{
((AELEMENT *)(pElement))->pTitle=*ppTitle;
*ppTitle=NULL;
return TRUE;
}
break;
case Type_CARD:
if (((CARDELEMENT *)(pElement))->pTitle==NULL)
{
((CARDELEMENT *)(pElement))->pTitle=*ppTitle;
*ppTitle=NULL;
return TRUE;
}
break;
case Type_FIELDSET:
if (((FIELDSETELEMENT *)(pElement))->pTitle==NULL)
{
((FIELDSETELEMENT *)(pElement))->pTitle=*ppTitle;
*ppTitle=NULL;
return TRUE;
}
break;
case Type_INPUT:
if (((INPUTELEMENT *)(pElement))->pTitle==NULL)
{
((INPUTELEMENT *)(pElement))->pTitle=*ppTitle;
*ppTitle=NULL;
return TRUE;
}
break;
case Type_OPTGROUP:
if (((OPTGROUPELEMENT *)(pElement))->pTitle==NULL)
{
((OPTGROUPELEMENT *)(pElement))->pTitle=*ppTitle;
*ppTitle=NULL;
return TRUE;
}
break;
case Type_OPTION:
if (((OPTIONELEMENT *)(pElement))->pTitle==NULL)
{
((OPTIONELEMENT *)(pElement))->pTitle=*ppTitle;
*ppTitle=NULL;
return TRUE;
}
break;
case Type_SELECT:
if (((SELECTELEMENT *)(pElement))->pTitle==NULL)
{
((SELECTELEMENT *)(pElement))->pTitle=*ppTitle;
*ppTitle=NULL;
return TRUE;
}
break;
case Type_TABLE:
if (((TABLEELEMENT *)(pElement))->pTitle==NULL)
{
((TABLEELEMENT *)(pElement))->pTitle=*ppTitle;
*ppTitle=NULL;
return TRUE;
}
break;
}
return FALSE;
}
BOOL WML_SetType (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppType, BOOL fWTA)
{
INT8 iType=DEF_TYPE_UNKNOWN;
WCHAR* pwchType=XML_ConvertToString(ppType,pDecStr);
fWTA=fWTA;
switch (pElement->iType)
{
case Type_DO:
if (pwchType!=NULL)
{
/* Remove old type (default value) */
DEALLOC(&((DOELEMENT*)(pElement))->pchType);
((DOELEMENT*)(pElement))->pchType=pwchType;
return TRUE;
}
break;
case Type_INPUT:
/* Only predefined events -> convert to integer */
iType=WML_ConvertInputToInt(&pwchType);
if (iType!=DEF_TYPE_UNKNOWN)
{
((INPUTELEMENT*)(pElement))->iInputType=iType;
return TRUE;
}
break;
case Type_ONEVENT:
/* Check WTA events if WTA enabled AND the user agent
is a WTA user agent */
#ifdef CONFIG_WTA
if (fWTA)
{
/* Convert WTA event */
iType=WTA_ConvertEventToInt(pwchType);
/* The function WTA_ConvertEventToInt returns
DEF_TYPE_UNKNOWN if the string was not a WTA event.
In this case the WML_ConvertTypeToInt should be called.
Otherwise the string should be deleted. */
}
#endif
/* Only predefined events -> convert to integer */
if (iType==DEF_TYPE_UNKNOWN)
{
iType=WML_ConvertEventToInt(&pwchType);
}
if (iType!=DEF_TYPE_UNKNOWN)
{
((ONEVENTELEMENT *)(pElement))->iEventType=iType;
DEALLOC(&pwchType);
return TRUE;
}
}
/* Delete string pchType */
DEALLOC(&pwchType);
return FALSE;
}
BOOL WML_SetValue (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppValue)
{
pDecStr=pDecStr;
switch (pElement->iType)
{
case Type_INPUT:
if (((INPUTELEMENT *)(pElement))->pValue==NULL)
{
((INPUTELEMENT *)(pElement))->pValue=*ppValue;
*ppValue=NULL;
return TRUE;
}
case Type_OPTION:
if (((OPTIONELEMENT *)(pElement))->pValue==NULL)
{
((OPTIONELEMENT *)(pElement))->pValue=*ppValue;
*ppValue=NULL;
return TRUE;
}
case Type_POSTFIELD:
if (((POSTFIELDELEMENT *)(pElement))->pValue==NULL)
{
((POSTFIELDELEMENT *)(pElement))->pValue=*ppValue;
*ppValue=NULL;
return TRUE;
}
case Type_SELECT:
if (((SELECTELEMENT *)(pElement))->pValue==NULL)
{
((SELECTELEMENT *)(pElement))->pValue=*ppValue;
*ppValue=NULL;
return TRUE;
}
case Type_SETVAR:
if (((SETVARELEMENT *)(pElement))->pValue==NULL)
{
((SETVARELEMENT *)(pElement))->pValue=*ppValue;
*ppValue=NULL;
return TRUE;
}
case Type_TIMER:
if (((TIMERELEMENT *)(pElement))->pValue==NULL)
{
((TIMERELEMENT *)(pElement))->pValue=*ppValue;
*ppValue=NULL;
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetVSpace (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppVSpace)
{
UINT8 iVSpace=0;
BOOL fIsPercent=FALSE;
/* Convert VSpace (text) to UINT8. The ELEMENTTYPE is removed
in the XML_ConvertToString function and the string is removed
in the Convert_StringToUINT8percent function. */
WCHAR* pwchVSpace=XML_ConvertToString(ppVSpace,pDecStr);
if (Convert_StringToUINT8percent(&pwchVSpace,&iVSpace,&fIsPercent))
{
if (pElement->iType==Type_IMG)
{
if (fIsPercent)
{
((IMGELEMENT *)(pElement))->iIsPercent|=VSPACE_IS_PERCENT;
}
((IMGELEMENT *)(pElement))->iVSpace=iVSpace;
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetWidth (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppWidth)
{
UINT16 iWidth=0;
BOOL fIsPercent=FALSE;
/* Convert Width (text) to UINT16. The ELEMENTTYPE is removed
in the XML_ConvertToString function and the string is removed
in the Convert_StringToUINT16percent function. */
WCHAR* pwchWidth=XML_ConvertToString(ppWidth,pDecStr);
if (Convert_StringToUINT16percent(&pwchWidth,&iWidth,&fIsPercent))
{
if (pElement->iType==Type_IMG)
{
if (fIsPercent)
{
((IMGELEMENT *)(pElement))->iIsPercent|=WIDTH_IS_PERCENT;
}
((IMGELEMENT *)(pElement))->iWidth=iWidth;
return TRUE;
}
}
return FALSE;
}
BOOL WML_SetXmllang (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppXmllang)
{
WCHAR* pwchLang=XML_ConvertToString(ppXmllang,pDecStr);
switch (pElement->iType)
{
case Type_WML:
if (((WMLELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((WMLELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
case Type_A:
if (((AELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((AELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_ANCHOR:
if (((ANCHORELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((ANCHORELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_BR:
/* This attribute is only only allowed in this element
if the document is 1.1 or older. */
if (pDecStr->iVersion<=WML_VERSION_1_1)
{
if (((BRELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((BRELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
}
break;
case Type_B:
case Type_BIG:
case Type_EM:
case Type_I:
case Type_SMALL:
case Type_STRONG:
case Type_U:
if (((EMPHELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((EMPHELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_CARD:
if (((CARDELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((CARDELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_DO:
if (((DOELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((DOELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_FIELDSET:
if (((FIELDSETELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((FIELDSETELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_IMG:
if (((IMGELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((IMGELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_INPUT:
if (((INPUTELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((INPUTELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_OPTGROUP:
if (((OPTGROUPELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((OPTGROUPELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_OPTION:
if (((OPTIONELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((OPTIONELEMENT*)(pElement))->pwchXmlLang=pwchLang;
return TRUE;
}
break;
case Type_P:
if (((PELEMENT*)(pElement))->pwchXmlLang==NULL)
{
((PELEMENT*)(pElement))->pwchXmlLang=p
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -