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 ...
随机推荐
- iOS:切换视图时,反向传递数据方法二:代理
代理: 1.发送信息的控制器设置一个代理,并自定义一个代理的方法,用来传递数据 2.接受信息的控制器遵循发送信息的控制器的协议 3.接受信息的控制器设置发送信息的控制器的代理为自己self 4.接受信 ...
- Qt Creator的安装与Qt交叉编译的配置
Qt Creator 的安装 到Qt官网下载Qt Creator https://www.qt.io/download-open-source/ 其它旧版本点击Achieve连接下载 或登录http ...
- JS实现的MAP结构数据
Array.prototype.remove = function(s) { for (var i = 0; i < this.length; i++) { if (s == this[i]) ...
- [ES6] 05. The leg keyword -- 3. Block Scope
In ES6, IIFE is not necessary: // IIFE写法 (function () { var tmp = ...; ... }()); // 块级作用域写法 { let tm ...
- share_ptr
1.为了保证不会重复释放内存,auto_ptr的copy构造和copy赋值都是破坏性操作,执行后,导致右操作数的指针为0.这就出现了,copy构造或者copy赋值后,两个对象不相等了. 2.auto_ ...
- 编写nios-shell时想到的问题-回车vs换行
在编写nios上类shell用户交互代码时.由于要检測终端输入字符.所以想到了这个问题,故分析之. 回车符的ascii码,ASCII码13 '\r' 换行符的ascii码.ASCII码10 '\n' ...
- UNIX网络编程读书笔记:select函数
select函数概况: select函数允许进程指示内核等待多个事件中的任何一个发生,并仅在有一个或多个事件发生或经历一段指定的时间后才唤醒它. 作为一个例子,我们可以调用select,告知内核仅在下 ...
- spring错误汇总
在学习spring过程中遇见了种种不同的异常错误,这里做了一下总结.希望遇见类似错误的同学们共勉一下. 1. 错误一 Error creating bean with name 'helloServi ...
- Linux日志分析的实战专题
来自 日志也是用户应该注意的地方之一.不要低估日志文件对网络安全的重要作用,因为日志文件能够详细记录系统每天发生的各种各样的事件.用户可以通过日志文件 检查错误产生的原因,或者在受到攻击和黑客入侵 ...
- Jquery—Jquery中的(function($){...})(jQuery)
当你第一眼看到"(function($){...})(jQuery)"的时候.你有什么感觉?呵呵呵,我当时还是止不住的从心底里骂了一句--操,这他妈什么劳什子.时过境迁,对于如今无 ...