#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的更多相关文章

  1. 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

    前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...

  2. Json CPP 中文支持与入门示例

    在每一个Json Cpp自带*.cpp文件头加上: #include "stdafx.h" 将Json Cpp对自带的头文件的引用修改为单引号方式,例如json_reader.cp ...

  3. cpp 调用python

    在用cpp调用python时, 出现致命错误: no module named site  ,  原因解释器在搜索路径下没有找到python库.可以在调用Py_Initialize前,调用 Py_Se ...

  4. nginx+fastcgi+c/cpp

    参考:http://github.tiankonguse.com/blog/2015/01/19/cgi-nginx-three/ 跟着做了一遍,然后根据记忆写的,不清楚有没错漏步骤,希望多多评论多多 ...

  5. APM程序分析-ArduCopter.cpp

    该文件是APM的主文件. #define SCHED_TASK(func, rate_hz, max_time_micros) SCHED_TASK_CLASS(Copter, &copter ...

  6. APM程序分析-AC_WPNav.cpp

    APM程序分析 主程序在ArduCopter.cpp的loop()函数. /// advance_wp_target_along_track - move target location along ...

  7. Dev Cpp 输出中文字符问题

    最近 c++ 上机作业,vc++6.0 挂了没法用,只好用 Dev Cpp 先顶替一下,然而在遇到输出中文字符的时候出现了乱码的情况,但这种情况又非常诡异.于是简单了解了一下写成此博客. [写在前面] ...

  8. 【安卓】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 ...

  9. Identify Memory Leaks in Visual CPP Applications —— VLD内存泄漏检测工具

    原文地址:http://www.codeproject.com/Articles/1045847/Identify-Memory-Leaks-in-Visual-CPP-Applications 基于 ...

  10. 估计PI——OpenCV&Cpp

    来源:<Learning Image Processing With OpenCV> 算法原理:蒙特卡洛 PI的计算公式: Cpp代码: #include <opencv2/open ...

随机推荐

  1. 推荐一份 Google 面试指南

    经常有不少读者在我公众号后台留言,说自己还是应届毕业生,缺乏工作经验与项目经验,不知道如何才能通过面试? 其实,项目经验固然重要,但是企业也知道,对于应届毕业生,是很难有拿得出手的项目经验出来的,毕竟 ...

  2. Python学习(四)数据结构 —— dict

    词典类型 dict 字典由键(key)和对应值(value)成对组成.字典也被称作关联数组或哈希表. dict 赋值 dict 整体放在花括号{}中,每个键与值用冒号隔开(:),每对用逗号分割: d ...

  3. MySQL: tinyint(1) 和 tinyint(4), char 和varchar

    1.BIT[M] 位字段类型,M表示每个值的位数,范围从1到64,如果M被忽略,默认为1 2.TINYINT[(M)] [UNSIGNED] [ZEROFILL]  M默认为4,占1个字节 很小的整数 ...

  4. 要做的题目-要用到hadoop资源

    关于项目,我出两个练手题目: 一.多机数据处理.有 10 台机器,每台机器上保存着 10 亿个 64-bit 整数(不一定刚好 10 亿个,可能有上下几千万的浮动),一共约 100 亿个整数(其实一共 ...

  5. 转:mac下安装Sublime Text

    转:http://blog.sina.com.cn/s/blog_559d66460101cab0.html 正版的买个license其实并不贵,定价为70美元.如果不买license,也可acces ...

  6. [Functional Programming] Unbox types with foldMap

    Previously we have seen how to use Concat with reduce: ), Sum(), Sum()] .reduce((acc, x) => acc.c ...

  7. ERROR security.UserGroupInformation: Priviledge...

    http://my.oschina.net/u/617085/blog/71740 "Failed to set permissions of path"问题 参考文献:https ...

  8. Unity开发 手机平台播放影片

    http://www.cnblogs.com/zhaoqingqing/p/3401747.html 截止到目前的Unity4.2版本,要在手机平台上播放影片,有两种方法: 使用Unity自带的Mov ...

  9. 微信群的id

    今天网速慢了,竟然把微信群的id卡出来了,记录一下. 格式应该是一个像QQ群一样的数字,然后+@chatroom 看图!   文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论.

  10. Be Happy.——我的ACM退役贴

    一个月的忙碌后,最终能静下心来写一些什么. 该结束的最终都要结束了.考试,课程设计,所剩寥寥无几的大学时光,ACM. 看过不少大牛的退役贴,自嘲成银牌狗铜牌狗.写一写碎碎念,大抵如此,每一个人都无法落 ...