CWidgetMgr---cpp
#include "WidgetMgr.h"
#include "XWidget.h"
#include "Config.h"
#include "XButton.h"
#include "XImage.h"
#include "XStatic.h"
#include "XNoTouch.h"
#include "XSroll.h" CWidgetMgr* CWidgetMgr::g_pUiMgr = NULL; CWidgetMgr::CWidgetMgr()
{
m_deqWnd.clear();
} CWidgetMgr::~CWidgetMgr()
{
m_deqWnd.clear();
} CWidgetMgr* CWidgetMgr::getInstance()
{
if (!g_pUiMgr)
{
g_pUiMgr = new CWidgetMgr();
ASSERT(g_pUiMgr);
}
return g_pUiMgr; } void CWidgetMgr::destroy()
{
SAFE_DELETE(g_pUiMgr);
} bool CWidgetMgr::addWnd( CXWindow* pWnd, PRIORITY tpOrder /*= TP_NORMAL*/ )
{
ASSERT(pWnd);
for (deque<CXWindow*>::iterator it = m_deqWnd.begin(); it != m_deqWnd.end(); it++)
{
if (pWnd == (*it))
{
CCLog("error: CWidgetMgr::addWnd");
ASSERT(false);
}
}
m_deqWnd.push_back(pWnd); //设置窗口的优先级
//数字越低优先级越高
//pWnd->setTouchPriority((TOUCH_PRIORITY)tpOrder); return true;
} void CWidgetMgr::eraseWnd( int nId )
{
for (unsigned int i = ; i < m_deqWnd.size(); i++ )
{
if (nId == m_deqWnd[i]->getId())
{
m_deqWnd.erase(m_deqWnd.begin() + i);
} }
} CXWindow* CWidgetMgr::getWnd( int nId )
{
for (unsigned int i = ; i < m_deqWnd.size(); i++ )
{
if (nId == m_deqWnd[i]->getId())
{
return m_deqWnd[i];
}
} CCLog("error: CWidgetMgr::getWnd");
return NULL;
} CXWindow* CWidgetMgr::loadWidget( CXWidget* pWnd, int nId )
{
vector<WidgetInfo>& vecWidgetInfo = *(CConfig::getInstance()->getWidgetInfo());
for (unsigned int i = ; i < vecWidgetInfo.size(); i++)
{
if (vecWidgetInfo[i].nId == nId)
{
pWnd->init(vecWidgetInfo[i].nId, vecWidgetInfo[i].tPos,
vecWidgetInfo[i].rRect, vecWidgetInfo[i].strPic.c_str());
pWnd->setAnchorPoint(vecWidgetInfo[i].tAnchor); vector<CtrlInfo>& vecCtrlInfo = vecWidgetInfo[i].m_vecCtrlInfo;
for (unsigned int j = ; j < vecCtrlInfo.size(); j++)
{
switch( vecCtrlInfo[j].wType)
{
case CtrlInfo::_IDC_BTN :
{
CXButton* pBtn = CXButton::create(vecCtrlInfo[j].nId, vecCtrlInfo[j].tPos,vecCtrlInfo[j].rRect,
vecCtrlInfo[j].strPic.c_str(), NULL, vecCtrlInfo[j].strAudioFile.c_str());
if (pBtn)
{
pBtn->setAnchorPoint(vecCtrlInfo[j].tAnchor);
pBtn->setBtnType((CXButton::BTN_TYPE)vecCtrlInfo[j].btnType);
pBtn->setBtnState((CXButton::BTN_STATE)vecCtrlInfo[j].btnState);
pWnd->addCtrl(pBtn,);
}
}
break;
case CtrlInfo::_IDC_IMG:
{
CXImage* pImg = CXImage::create(vecCtrlInfo[j].nId, vecCtrlInfo[j].tPos,
vecCtrlInfo[j].rRect, vecCtrlInfo[j].strPic.c_str());
if (pImg)
{
pWnd->setAnchorPoint(vecCtrlInfo[j].tAnchor);
pWnd->addCtrl(pImg,);
} }
break;
case CtrlInfo::_IDC_STA:
{
CXStatic* pSta = CXStatic::create(vecCtrlInfo[j].nId, vecCtrlInfo[j].tPos,vecCtrlInfo[j].rRect,
vecCtrlInfo[j].strFont.c_str(),vecCtrlInfo[j].nFontSize, vecCtrlInfo[j].wAlignment, (CXStatic::LabelType)vecCtrlInfo[j].wLabelType);
if (pSta)
{
pSta->setAnchorPoint(vecCtrlInfo[j].tAnchor);
pSta->setText(vecCtrlInfo[j].strText.c_str());
pSta->setColor(vecCtrlInfo[j].color3B);
pWnd->addCtrl(pSta,);
}
}
break;
case CtrlInfo::_IDC_SROLL:
{
CXSroll* pSroll = CXSroll::create(vecCtrlInfo[j].nId, vecCtrlInfo[j].tPos, vecCtrlInfo[j].rRect, NULL);
if (pSroll)
{
pSroll->setSrollType((CXSroll::XSrollType)vecCtrlInfo[j].wRollType);
pSroll->setBounds(vecCtrlInfo[j].fBounds);
vector<WidgetInfo>& widgetInfo = *CConfig::getInstance()->getSrollInfoByKey(vecCtrlInfo[j].strItem.c_str());
for (vector<WidgetInfo>::iterator it = widgetInfo.begin(); it != widgetInfo.end(); it++)
{
CXWidget* pWidget = CXWidget::create(it->nId, it->tPos, it->rRect, it->strPic.c_str(), NULL);
for (vector<CtrlInfo>::iterator itCtrl = it->m_vecCtrlInfo.begin(); itCtrl != it->m_vecCtrlInfo.end(); itCtrl++)
{
switch( itCtrl->wType)
{
case CtrlInfo::_IDC_BTN :
{
CXButton* pBtn = CXButton::create(itCtrl->nId, itCtrl->tPos,itCtrl->rRect,
itCtrl->strPic.c_str(), NULL, itCtrl->strAudioFile.c_str());
if (pBtn)
{
pBtn->setAnchorPoint(itCtrl->tAnchor);
pBtn->setBtnType((CXButton::BTN_TYPE)itCtrl->btnType);
pBtn->setBtnState((CXButton::BTN_STATE)itCtrl->btnState);
pWidget->addCtrl(pBtn,); pBtn->setTouchEnabled(false);
}
}
break;
case CtrlInfo::_IDC_IMG:
{
CXImage* pImg = CXImage::create(itCtrl->nId, itCtrl->tPos,
itCtrl->rRect, itCtrl->strPic.c_str());
if (pImg)
{
pWnd->setAnchorPoint(itCtrl->tAnchor);
pWidget->addCtrl(pImg,);
}
}
break;
case CtrlInfo::_IDC_STA:
{
CXStatic* pSta = CXStatic::create(itCtrl->nId, itCtrl->tPos,itCtrl->rRect,
itCtrl->strFont.c_str(),itCtrl->nFontSize,itCtrl->wAlignment, (CXStatic::LabelType)itCtrl->wLabelType);
if (pSta)
{
pSta->setAnchorPoint(itCtrl->tAnchor);
pSta->setText(itCtrl->strText.c_str());
pSta->setColor(itCtrl->color3B);
pWidget->addCtrl(pSta,);
}
}
break;
default:
break;
}
}
pSroll->addItem(pWidget, );
}
pWnd->addCtrl(pSroll,);
} }
break;
case CtrlInfo::_IDC_NOT:
{
CXNoTouch* pNot = CXNoTouch::create(vecCtrlInfo[j].nId, vecCtrlInfo[j].tPos,
vecCtrlInfo[j].rRect);
if (pNot)
{
pNot->setNoTouchType((CXNoTouch::NoTouchType)vecCtrlInfo[j].notType);
pNot->setAnchorPoint(vecCtrlInfo[j].tAnchor);
pNot->setTouchPriority((TOUCH_PRIORITY)vecCtrlInfo[j].nPriority);
pWnd->addCtrl(pNot,);
}
}
break;
default:
break;
} }
return pWnd;
}
}
return NULL;
} void CWidgetMgr::clearAllWnd()
{
for(deque<CXWindow*>::iterator it = m_deqWnd.begin(); it != m_deqWnd.end(); it++ )
{
(*it)->removeFromParentAndCleanup(true);
}
m_deqWnd.clear();
}
CWidgetMgr---cpp的更多相关文章
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
- Json CPP 中文支持与入门示例
在每一个Json Cpp自带*.cpp文件头加上: #include "stdafx.h" 将Json Cpp对自带的头文件的引用修改为单引号方式,例如json_reader.cp ...
- cpp 调用python
在用cpp调用python时, 出现致命错误: no module named site , 原因解释器在搜索路径下没有找到python库.可以在调用Py_Initialize前,调用 Py_Se ...
- nginx+fastcgi+c/cpp
参考:http://github.tiankonguse.com/blog/2015/01/19/cgi-nginx-three/ 跟着做了一遍,然后根据记忆写的,不清楚有没错漏步骤,希望多多评论多多 ...
- APM程序分析-ArduCopter.cpp
该文件是APM的主文件. #define SCHED_TASK(func, rate_hz, max_time_micros) SCHED_TASK_CLASS(Copter, &copter ...
- APM程序分析-AC_WPNav.cpp
APM程序分析 主程序在ArduCopter.cpp的loop()函数. /// advance_wp_target_along_track - move target location along ...
- Dev Cpp 输出中文字符问题
最近 c++ 上机作业,vc++6.0 挂了没法用,只好用 Dev Cpp 先顶替一下,然而在遇到输出中文字符的时候出现了乱码的情况,但这种情况又非常诡异.于是简单了解了一下写成此博客. [写在前面] ...
- 【安卓】aidl.exe E 10744 10584 io_delegate.cpp:102] Error while creating directories: Invalid argument
这几天在使用.aidl文件的时候eclipse的控制台总是爆出如下提示: aidl.exe E 10744 10584 io_delegate.cpp:102] Error while creatin ...
- Identify Memory Leaks in Visual CPP Applications —— VLD内存泄漏检测工具
原文地址:http://www.codeproject.com/Articles/1045847/Identify-Memory-Leaks-in-Visual-CPP-Applications 基于 ...
- 估计PI——OpenCV&Cpp
来源:<Learning Image Processing With OpenCV> 算法原理:蒙特卡洛 PI的计算公式: Cpp代码: #include <opencv2/open ...
随机推荐
- poi 技术动态更新 Excel模板内容,动态更新内容
1.控制器方法 private URL base = this.getClass().getResource(""); /** * 流拍之后,可以下载询价单 * * @param ...
- linux清空文件方法
1.以下方法,清除后,文件大小为0 2.以下方法,清除后,文件大小为1 多了一个结束字符
- Hibernate查询语言
HQL(Hibernate Query Language)查询语言是完全面向对象的查询语言,它提供了更加面向对象的封装,它可以理解如多态.继承和关联的概念.HQL看上去和SQL语句相似,但它却提供了更 ...
- C#文件系统管理【转】
目录 前言 Directory类和DirectoryInfo类 File类和FileInfo类 Path类 前言 管理文件系统主要是对计算机中文件和目录的管理,例如,读取文件信息.删除文件和读取目录信 ...
- C#中的数组【转】
目录 数组的声明 数组的初始化 数组的访问 数组的常用属性和方法 为方便起见,以下数组均定义为整型 数组的声明 C#声明数组时,方括号[]必须跟在类型后面,而不是标识符后面 1. 声明一维数组 C#数 ...
- 20个初学者实用的CSS技巧
过去就连一个镜像站点,我们都依靠大量的开发人员和程序员进行维护.得益于CSS和它的灵活性使得样式能够从代码中被独立抽离出来,从而让一个只具备基本CSS理论的初学者都能够轻易地改变网站的样式. 不论你是 ...
- FrameWork模型中引入宏函数报错解决方法
如下图在Framework的一个简单维度中加入宏函数 解决办法如下图 step1: step2: PS :Cognos 10.1.1中 在cognos connection中创建数据源,为什么没有od ...
- Hive集成Mysql作为元数据时,提示错误:Specified key was too long; max key length is 767 bytes
在进行Hive集成Mysql作为元数据过程中.做全然部安装配置工作后.进入到hive模式,运行show databases.运行正常,接着运行show tables:时却报错. 关键错误信息例如以下: ...
- MyEclipse发布按钮无效的办法
删除存放您MyEclipse项目的目录下的“/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.genuitec.eclipse.as ...
- 【转】linux下的单线程
传统的每个进程中只有一个线程在执行,称作单线程方法.MS-DOS是一种支持单用户进程和单线程的操作系统,UNIX支持多用户进程,但只支持每个进程一个线程,WINDOWS 2000(W2K).SOLAR ...