📄 responsescreen.c
字号:
#include "responsescreen.h"
void spm_responsescreenInit(IRootForm *pIRootForm,IShell *pIShell,IDisplay *pIDisplay)
{
responsescreen *pMe=(responsescreen*)MALLOCREC(responsescreen);
pMe->pIShell=pIShell;
pMe->pIDisplay=pIDisplay;
pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo);
ISHELL_GetDeviceInfo(pMe->pIShell,&pMe->DeviceInfo);
pMe->pIRootForm=pIRootForm;
//creation of the Login form
spm_createresponseScreen(pMe);
}
void spm_createresponseScreen(responsescreen* pMe)
{
int nErr=0;
AECHAR *tabText=NULL;
AECHAR *tabText1=NULL;
AECHAR *tabText2=NULL;
AECHAR *tabText3=NULL;
IImage *pIImage;
IImage *pITitleImage;
ImageStaticInfo *imageinfo,*imageinfo1,*imageinfo2,*imageinfo3;
IWidget *pIWImageStatic=NULL;
WExtent wex;
WidgetPos wPos;
IWidget *pIWTitle=NULL;
IWidget *pIWSoft=NULL;
IModel *pIViewModel;
IModel *pIModel;
nErr=ISHELL_CreateInstance(pMe->pIShell,AEECLSID_FORM,(void**)&pMe->pIForm);
nErr=ISHELL_CreateInstance(pMe->pIShell,AEECLSID_TABWIDGET,(void**)&pMe->pIWTab);
nErr=ISHELL_CreateInstance(pMe->pIShell,AEECLSID_HTMLWIDGET,(void**)&pMe->pIWHtml);
nErr=ISHELL_CreateInstance(pMe->pIShell,AEECLSID_VECTORMODEL,(void**)&pMe->pIVectorModel);
ISHELL_CreateInstance(pMe->pIShell,AEECLSID_WEB,(void**)&pMe->pIWeb);
ISHELL_CreateInstance(pMe->pIShell, AEECLSID_SOURCEUTIL, (void **)&(pMe->pISourceUtil));
pITitleImage=ISHELL_LoadResImage(pMe->pIShell,RES_FILE,TITLE_ICON);
//Setting Widget Properties
IWIDGET_SetBGColor(pMe->pIWTab,RGB_ITEMBACKCOLOR);//RGB_MAINBACK);
//IWIDGET_SetFGColor(pMe->pIWTab,MAKE_RGB(255,0,0));
IWIDGET_SetBGColor(pMe->pIWHtml,RGB_ITEMBACKCOLOR);
//RGB_ITEMBACKCOLOR MAKE_RGBA(255,255,206,255)
//IWIDGET_SetGradientStyle(pMe->pIWHtml,1);
IWIDGET_SetBorderWidth(pMe->pIWTab,1);
IWIDGET_SetBorderColor(pMe->pIWTab,RGB_BORDERCOLOR);
IWIDGET_SetFlags(pMe->pIWTab,TABWF_WRAP|TABWF_SHOWBORDER| TABWF_FILLWIDTH);//|TABWF_SHOWTEXTALWAYS);
IWIDGET_SetBorderWidth(pMe->pIWHtml,0);
IWIDGET_SetProperty(pMe->pIWTab,PROP_TABHEIGHT,8);
IFORM_SetWidget(pMe->pIForm,WID_FORM,pMe->pIWTab);
IFORM_SetTitleImage(pMe->pIForm,pITitleImage);
IFORM_SetResText(pMe->pIForm,FID_TITLE,RES_FILE,TITLE_TEXT);
IFORM_SetResText(pMe->pIForm,FID_SOFTKEY1,RES_FILE,SOFT_KEY1);
IFORM_SetResText(pMe->pIForm,FID_SOFTKEY2,RES_FILE,SOFT_KEY2);
//TitleWidget
IFORM_GetWidget(IROOTFORM_TO_IFORM(pMe->pIRootForm),WID_TITLE,&pIWTitle);
IWIDGET_SetBGColor(pIWTitle,RGB_BACKCOLOR);
IWIDGET_SetFGColor(pIWTitle,RGB_FORECOLOR);
//IWIDGET_SetGradientStyle(pIWTitle,1);
//SoftKeyWidget
IFORM_GetWidget(IROOTFORM_TO_IFORM(pMe->pIRootForm),WID_SOFTKEYS,&pIWSoft);
IWIDGET_SetBGColor(pIWSoft,RGB_BACKCOLOR);
IWIDGET_SetFGColor(pIWSoft,RGB_FORECOLOR);
//IWIDGET_SetGradientStyle(pIWSoft,1);
//Creating the MenuModel
tabText=(AECHAR*)MALLOC(STRLEN("My Mobile Picture")*2+1);
STRTOWSTR("My Mobile Picture",tabText,(STRLEN("My Mobile Picture")*2+1));
tabText1=(AECHAR*)MALLOC(STRLEN("My Family")*2+1);
STRTOWSTR("My Family",tabText1,(STRLEN("My Family")*2+1));
tabText2=(AECHAR*)MALLOC(STRLEN("My Family")*2+1);
STRTOWSTR("View Sight",tabText2,(STRLEN("View Sight")*2+1));
tabText3=(AECHAR*)MALLOC(STRLEN("My Folder")*2+1);
STRTOWSTR("My Folder",tabText3,(STRLEN("My Folder")*2+1));
pIImage=ISHELL_LoadResImage(pMe->pIShell,RES_FILE,IDI_FOLDER);
imageinfo=(ImageStaticInfo*)MALLOC(sizeof(ImageStaticInfo));
imageinfo->piImage=pIImage;
imageinfo->pwText=tabText;
imageinfo1=(ImageStaticInfo*)MALLOC(sizeof(ImageStaticInfo));
imageinfo1->piImage=pIImage;
imageinfo1->pwText=tabText1;
imageinfo2=(ImageStaticInfo*)MALLOC(sizeof(ImageStaticInfo));
imageinfo2->piImage=pIImage;
imageinfo2->pwText=tabText2;
imageinfo3=(ImageStaticInfo*)MALLOC(sizeof(ImageStaticInfo));
imageinfo3->piImage=pIImage;
imageinfo3->pwText=tabText3;
IWIDGET_GetModel(pMe->pIWTab,AEEIID_VECTORMODEL,(IModel**)(void**)&pMe->pIVectorModel);
IVECTORMODEL_InsertAt(pMe->pIVectorModel,0,imageinfo);
IVECTORMODEL_InsertAt(pMe->pIVectorModel,1,imageinfo1);
IVECTORMODEL_InsertAt(pMe->pIVectorModel,2,imageinfo2);
IVECTORMODEL_InsertAt(pMe->pIVectorModel,3,imageinfo3);
IWIDGET_SetModel(pMe->pIWTab,(IModel*)pMe->pIVectorModel);
IWIDGET_GetViewModel(pMe->pIWTab,&pIViewModel);
IMODEL_AddListenerEx(pIViewModel,&pMe->pIListenre,(PFNLISTENER)spm_tabListener,pMe);
IDECORATOR_SetWidget((IDecorator*)(void*)pMe->pIWTab,pMe->pIWHtml);
HANDLERDESC_Init(&pMe->responsescreenHandler,(PFNHANDLER)spm_responsescreenEventHandler,pMe,spm_freeresponsescreenData);
IFORM_SetHandler(pMe->pIForm,&pMe->responsescreenHandler);
//contents for html widget
IWIDGET_GetModel(pMe->pIWHtml,AEEIID_DOCMODEL,(IModel**)(void*)(&pMe->pIDocModel));
IWIDGET_GetViewModel(pMe->pIWHtml,(IModel**)&pIModel);
IMODEL_QueryInterface(pIModel,AEEIID_HTMLVIEWMODEL,(void**)&pMe->pIHtmlViewModel);
LISTENER_Init(&pMe->pIHtmlView,spm_htmlviewlistener,pMe);
LISTENER_Init(&pMe->pIHtmlDoc,spm_htmldoclistener,pMe);
IDOCMODEL_AddListener(pMe->pIDocModel,&pMe->pIHtmlDoc);
IHTMLVIEWMODEL_AddListener(pMe->pIHtmlViewModel,&pMe->pIHtmlView);
pMe->m_BodySize=0;
pMe->m_BodyAllocSize=0;
spm_loadhtmlfile(pMe,HOME_PAGE);
IROOTFORM_PushForm(pMe->pIRootForm,pMe->pIForm);
}
void spm_tabListener(responsescreen *pMe,ModelEvent *eEvent)
{
DBGPRINTF("Inside the listener event..........");
}
void spm_htmlviewlistener(responsescreen *pMe,ModelEvent *pEv){
//if (pEv->evCode == EVT_HVM_JUMP) {
// loadhtmlfile(pMe, ((HtmlViewEvent *)pEv)->u.jump.pszURL);
//}
DBGPRINTF("in html view Liatener");
if (pEv->evCode == EVT_HVM_JUMP) {
//samplehtmlwidgetapp_loadhtmlfile(me, ((HtmlViewEvent *)pEv)->u.jump.pszURL);
}
return;
}
void spm_htmldoclistener(responsescreen *pMe,ModelEvent *pEv)
{
DBGPRINTF("in html doc Model");
return;
}
int spm_responsescreenEventHandler(responsescreen *pMe,AEEEvent eCode,uint16 wParam,uint32 dwParam)
{
//DBGPRINTF("111111111111111111111111.");
if(eCode==EVT_KEY)
{
switch(wParam)
{
case AVK_SOFT1:
DBGPRINTF("The left soft key pressed");
spm_createUserMenu(pMe);
return TRUE;
case AVK_SOFT2:
DBGPRINTF("The right soft key pressed");
return TRUE;
}
}
return HANDLERDESC_Call(&pMe->responsescreenHandler,eCode,wParam,dwParam);
}
void spm_freeresponsescreenData(responsescreen *pMe)
{
DBGPRINTF("Main form data..............");
}
void spm_loadhtmlfile(responsescreen *pMe,const char *url)
{
CALLBACK_Init(&pMe->callback,spm_WebReadCB,pMe);
IWEB_GetResponse(pMe->pIWeb,(pMe->pIWeb,&pMe->pIWebResp,&pMe->callback,url,WEBOPT_HANDLERDATA,pMe,WEBOPT_END));
}
void spm_WebReadCB(void *ptr)
{
char buf[128];
int ByteCount;
responsescreen *pMe=(responsescreen*)ptr;
WebRespInfo *pIWebRespInfo=IWEBRESP_GetInfo(pMe->pIWebResp);
pMe->pISource=pIWebRespInfo->pisMessage;
if (pIWebRespInfo)
{
ByteCount = ISOURCE_Read(pMe->pISource, (char*)buf, sizeof(buf));
switch (ByteCount)
{
case ISOURCE_WAIT:
ISOURCE_Readable(pMe->pISource, &pMe->callback);
return;
case ISOURCE_ERROR:
break;
case ISOURCE_END:
if (pMe->m_BodySize < pMe->m_BodyAllocSize)
pMe->m_BodyBuffer[pMe->m_BodySize] = 0;
else
pMe->m_BodyBuffer[pMe->m_BodyAllocSize - 1] = 0;
DBGPRINTF("1............");
//pMe->buffer=pMe->m_BodyBuffer;
IWEB_Release(pMe->pIWeb);
//pMe->buffer=pMe->m_BodyBuffer;
DBGPRINTF("2................");
spm_sethtmlfile(pMe);
break;
default:
if (ByteCount)
{
if (pMe->m_BodySize + ByteCount > pMe->m_BodyAllocSize)
{
const int NewSize = pMe->m_BodyAllocSize + 1024;
char* NewBuf = (char*)REALLOC(pMe->m_BodyBuffer, NewSize);
if (NewBuf)
{
pMe->m_BodyBuffer = NewBuf;
pMe->m_BodyAllocSize = NewSize;
}
}
if (pMe->m_BodySize + ByteCount <= pMe->m_BodyAllocSize)
{
MEMCPY(pMe->m_BodyBuffer + pMe->m_BodySize, buf, ByteCount);
pMe->m_BodySize += ByteCount;
}
}
ISOURCE_Readable(pMe->pISource, &pMe->callback);
return;
}
}
}
void spm_sethtmlfile(responsescreen *pMe)
{
const char *buf="<html><body>testing<img width=50 height=50 src=\"http://localhost:3972/SPM/image02.jpg\"><hr></body></html>";
ISource *pISource=NULL;
ISOURCEUTIL_SourceFromMemory(pMe->pISourceUtil,pMe->m_BodyBuffer,pMe->m_BodySize,NULL,NULL,&pISource);
IDOCMODEL_LoadSource(pMe->pIDocModel,pISource);
}
void spm_createUserMenu(responsescreen *pMe)
{
int nErr=0;
IWidget *pIWStatic=NULL;
IWidget *pIWScroll=NULL;
WidgetProp wProp;
wProp.bVisible=TRUE;wProp.prop=WIDGET_KEEP_EXTENT;
nErr=ISHELL_CreateInstance(pMe->pIShell,AEECLSID_PROPCONTAINER,(void**)&pMe->pIPropContainer);
nErr=ISHELL_CreateInstance(pMe->pIShell,AEECLSID_STATICWIDGET,(void**)&pIWStatic);
nErr=ISHELL_CreateInstance(pMe->pIShell,AEECLSID_SCROLLBARWIDGET,(void**)&pIWScroll);
nErr=ISHELL_CreateInstance(pMe->pIShell,AEECLSID_LISTWIDGET,(void**)&pMe->pIWList);
IPROPCONTAINER_QueryInterface(pMe->pIPropContainer,AEEIID_WIDGET,(void**)&pMe->pIWTab);
IWIDGET_SetText(pIWStatic,L"Testing",TRUE);
IFORM_SetWidget(pMe->pIForm,WID_FORM,pMe->pIWTab);
IWIDGET_SetBGColor(pIWStatic,MAKE_RGB(255,0,0));
IPROPCONTAINER_Insert(pMe->pIPropContainer,pIWStatic,WIDGET_ZNORMAL,&wProp);
//IXYCONTAINER_Insert(pMe->
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -