📄 uiiconlist.c
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : uiIconList.c
Desc : 九宫格型控件
Author : GUI Develop Group.lzj
Date : 2007-08-10
Notes :
$Log: uiIconList.c,v $
Revision 1.3 2008/07/18 06:52:30 CF
缩略图大小修改时,只改NINE_SCREEN_W及NINE_SCREEN_H即可,原来控件上有问题
Revision 1.2 2008/06/19 04:43:20 Administrator
代码整理!
Revision 1.1.1.1 2008/05/07 04:15:08 Administrator
no message
Revision 1.1.1.1 2008/03/06 13:29:09 Lingzhaojun
no message
Revision 1.15 2008/01/03 04:54:46 Penghuacheng
媒体库、资源管理器大更新
Revision 1.14 2007/12/28 06:36:35 Lingzhaojun
no message
Revision 1.13 2007/12/14 14:00:34 Hanjiang
合并蓝魔
Revision 1.12 2007/12/06 05:16:18 Huangshilin
增加 视频静态buffer和GUI 复用.修改窗口系统.
Revision 1.11 2007/11/30 01:25:09 Penghuacheng
修改没有文件警告窗口创建方式
Revision 1.10 2007/11/22 12:53:12 Lingzhaojun
no message
Revision 1.9 2007/11/14 14:24:13 Lingzhaojun
增加九宫格标题文本修改
Revision 1.8 2007/10/23 01:52:20 Penghuacheng
增加ROCK_FS编译开关限制
Revision 1.7 2007/10/23 01:37:11 Lingzhaojun
增加按OK键选择游戏的功能
Revision 1.6 2007/10/22 12:36:38 Penghuacheng
媒体库支持,九宫图支持
Revision 1.5 2007/10/16 04:03:25 Lingzhaojun
提交九宫格相关修改,加入游戏菜单,整理CVS音频库文件等
Revision 1.4 2007/10/15 02:58:09 Lingzhaojun
添加GUI控件注释
Revision 1.3 2007/10/12 08:22:01 Lingzhaojun
提交九宫格控件的修改,加入滚动条等,提交文本框修改,
Revision 1.2 2007/10/11 13:34:30 Lingzhaojun
GUI增加九宫格控件
Revision 1.1 2007/10/11 13:26:24 Lingzhaojun
GUI增加九宫格控件
*********************************************************************/
#include "uiIconList.h"
/*----------------------------------------------------------------------
Name : IconWinAddItem
Desc : 列表框(弹出菜单)添加菜单条目
Params: wParam:添加的条目数,lParam 条目
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 IconListAddItem(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_Icon *W_IconObj = (W_Icon*)win->Data;
UINT16 len, i = 0;
UINT32 number = wParam;
IconListItem *IconList = NULL;
UINT16 X0, Y0, WinIndex;
WINDOW* PerentW = NULL;
UINT8 *p = NULL;
WCHAR *Q = NULL;
IconList = (IconListItem*)lParam;
for (i = 0;i < number;i++)
{
len = GetUnicodeLen((WCHAR*)IconList->pText);
p = MALLOC(sizeof(IconListItem) + (len + 1) * 2);
Q = Unicodestrcat((WCHAR*)(p + sizeof(IconListItem)), (WCHAR*)IconList->pText);
*Q = 0x0a;
*(Q--) = 0x0d;
memcpy(p, IconList, sizeof(IconListItem));
((IconListItem*)p)->pText = (WCHAR*)p + sizeof(IconListItem);
IconList++;
ListAddItem(W_IconObj->ListList, (IconListItem*)p);
}
W_IconObj->CurrItem = (IconListItem*)ListGetItem(W_IconObj->ListList, 0);
//-----添加图标子窗口----------
IconList = (IconListItem*)lParam;
for (i = 0;i < number;i++)
{
WinIndex = W_IconObj->MaxItemIndex + i;
X0 = (win->x + W_IconObj->LeftLen + EmptyPix / 2) + ((W_IconObj->IconBoxW + EmptyPix) * (WinIndex % W_IconObj->NumX));
Y0 = (win->y + W_IconObj->TitleHeight + EmptyPix / 2) + ((W_IconObj->IconBoxH + EmptyPix) * (WinIndex / W_IconObj->NumX));
PerentW = WindowCreate(win ,
WS_Transp | WS_CHILDS | WS_ACTIVE | WES_Iconbox,
WID_IconBox + W_IconObj->MaxItemIndex + i,
X0, Y0,
W_IconObj->IconBoxW, W_IconObj->IconBoxH,
0, 0, 0, NULL,
WinIconProcMap,
NULL);
WindowSendMessage(PerentW, WM_SetPic, (UINT32)((W_IconObj->IconW << 16) + W_IconObj->IconH), IconList); //set color
IconList++;
}
W_IconObj->MaxItemIndex = W_IconObj->MaxItemIndex + number;
WindowSetFocus(WindowGetChildByID(win, WID_IconBox + W_IconObj->CurrItemIndex));
WindowInvalidateWindow(win);
return TRUE;
}
/*----------------------------------------------------------------------
Name : IconWinAddItem
Desc : 列表框(弹出菜单)添加菜单条目
Params: wParam:添加的条目数,lParam 条目
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 IconListAddItem1( WINDOW* win , WMPARAM wParam, WLPARAM lParam )
{
W_Icon *W_IconObj=(W_Icon*)win->Data;
UINT16 len,i=0;
UINT32 number=wParam;
IconListItem *IconList=NULL;
UINT16 X0,Y0,WinIndex;
WINDOW* PerentW=NULL;
UINT8 *p=NULL;
WCHAR *Q=NULL;
IconList=(IconListItem*)lParam;
for(i=0;i<number;i++)
{
len=GetUnicodeLen((WCHAR*)IconList->pText);
p=MALLOC(sizeof(IconListItem)+(len+1)*2);
Q=Unicodestrcat((WCHAR*)(p+sizeof(IconListItem)),(WCHAR*)IconList->pText);
*Q=0x0a;
*(Q--)=0x0d;
memcpy(p,IconList,sizeof(IconListItem));
((IconListItem*)p)->pText=(WCHAR*)p+sizeof(IconListItem);
IconList++;
ListAddItem(W_IconObj->ListList, (IconListItem*)p);
}
W_IconObj->CurrItem=(IconListItem*)ListGetItem(W_IconObj->ListList,0);
//-----添加图标子窗口----------
IconList=(IconListItem*)lParam;
for(i=0;i<number;i++)
{
WinIndex=W_IconObj->MaxItemIndex+i;
X0=(win->x+W_IconObj->LeftLen+EmptyPix/2)+((W_IconObj->IconBoxW+EmptyPix)*(WinIndex%W_IconObj->NumX));
Y0=(win->y+W_IconObj->TitleHeight+EmptyPix/2)+((W_IconObj->IconBoxH+EmptyPix)*(WinIndex/W_IconObj->NumX));
PerentW=WindowCreate( win ,
WS_Transp|WS_CHILDS|WS_ACTIVE|WES_Iconbox,
WID_IconBox+W_IconObj->MaxItemIndex+i,
X0,Y0,
W_IconObj->IconBoxW,W_IconObj->IconBoxH,
0,0,0,NULL,
IconTouchListProcMap,
NULL );
WindowSendMessage(PerentW,WM_SetPic,(UINT32)((W_IconObj->IconW<<16)+W_IconObj->IconH), IconList); //set color
IconList++;
}
W_IconObj->MaxItemIndex=W_IconObj->MaxItemIndex+number;
WindowSetFocus(WindowGetChildByID(win,WID_IconBox+W_IconObj->CurrItemIndex));
WindowInvalidateWindow(win);
return TRUE;
}
/*----------------------------------------------------------------------
Name : IconWinChangeItem
Desc : 列表框(弹出菜单)改变一个条目内容
Params: wParam: 条目Index lParam:新的内容
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 IconWinChangeItem(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_Icon *W_IconObj = (W_Icon*)win->Data;
UINT16 Index = wParam;
IconListItem*IconItem = (IconListItem*)lParam;
IconListItem *OldItem = NULL;
WINDOW* winCld = NULL;
UINT8 *p = NULL;
WCHAR *Q = NULL;
UINT16 len;
winCld = WindowGetChildByID(win, WID_IconBox + Index);
if (!winCld) return FALSE;
ListDeleteItem(W_IconObj->ListList, Index);
len = GetUnicodeLen((WCHAR*)IconItem->pText);
p = MALLOC(sizeof(IconListItem) + (len + 1) * 2);
Q = Unicodestrcat((WCHAR*)((char*)p + sizeof(IconListItem)), (WCHAR*)(IconItem->pText));
*Q = 0x0a;
*(Q--) = 0x0d;
memcpy(p, IconItem, sizeof(IconListItem));
((IconListItem*)p)->pText = (WCHAR*)p + sizeof(IconListItem);
ListInsertItem(W_IconObj->ListList, p, Index);
WindowSendMessage(winCld, WM_SetPic, (UINT32)((W_IconObj->IconW << 16) + W_IconObj->IconH), IconItem); //set color
WindowInvalidateWindow(win);
return TRUE;
}
/*----------------------------------------------------------------------
Name : IconWinGetMaxItem
Desc : 列表框(弹出菜单)获取Item总数目
Params:
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 IconWinGetMaxItem(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_Icon *W_IconObj = (W_Icon *)win->Data;
return W_IconObj->MaxItemIndex;
}
/*----------------------------------------------------------------------
Name : IconWinSetTotalTxt
Desc : 设置标题文本
Params:
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 IconWinSetTotalTxt(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_Icon *W_IconObj = (W_Icon*)win->Data;
if (win->style&WES_TotolTxt)
W_IconObj->pTitleText = (WCHAR*)lParam;
else
W_IconObj->TitleText = (UINT16)wParam;
WindowInvalidateWindow(win);
return TRUE;
}
/*----------------------------------------------------------------------
Name : IconWinKey
Desc : 列表框(弹出菜单)按键处理
Params:
Return: 处理结果
Author: Lingzj
Date : 070830
----------------------------------------------------------------------*/
UINT32 IconWinKey(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
W_Icon *W_IconObj = (W_Icon*)win->Data;
UINT16 keyPress = (INT16U)((wParam) >> 16);
UINT16 KEY_EV = (INT16U)(wParam);
WINDOW* Childwin = NULL;
if (keyPress)
return FALSE;
switch (KEY_EV)
{
case KE_UP_RELEASE:
if (W_IconObj->CurrItemIndex > W_IconObj->NumX - 1)
W_IconObj->CurrItemIndex = W_IconObj->CurrItemIndex - W_IconObj->NumX;
break;
case KE_DN_RELEASE:
if (W_IconObj->CurrItemIndex <= W_IconObj->MaxItemIndex - W_IconObj->NumX - 1)
W_IconObj->CurrItemIndex = W_IconObj->CurrItemIndex + W_IconObj->NumX;
break;
case KE_NEXT_RELEASE:
if (W_IconObj->CurrItemIndex < W_IconObj->MaxItemIndex - 1)
W_IconObj->CurrItemIndex++;
else
W_IconObj->CurrItemIndex = 0;
break;
case KE_PREV_RELEASE:
if (W_IconObj->CurrItemIndex)
W_IconObj->CurrItemIndex--;
else
W_IconObj->CurrItemIndex = W_IconObj->MaxItemIndex - 1;
break;
case KE_PLAY_RELEASE:
case KE_MENU_RELEASE:
WinSendCommand(WindowGetChildByID(win, (WID_IconBox + W_IconObj->CurrItemIndex)), EV_ListSelect);
return TRUE;
case KE_RETURN_RELEASE:
case KE_EXIT_RELEASE:
WindowDestroy(win);
return TRUE;
default:
return TRUE;
break;
}
Childwin = WindowGetChildByID(win, WID_IconBox + W_IconObj->CurrItemIndex);
if (!Childwin)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -