⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uiiconlist.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************/
/*  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 + -