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 ...
随机推荐
- LinuxMint19/LMDE3安装后的设置
LinuxMint 安装后进行一些设置. 1.设置主板时间为本地时间,默认为UTC时间,与Windows不同,如果双系统,时间有时差. sudo timedatectl set-local-rtc t ...
- Android 使用SWIG生成Jni代码
一,下载SWIG,并设置好环境变量 二以HelloJni为例子 导入ndk sample的HelloJni工程. 三 创建SWIG接口文件 在jni目录下新建文件Unix.i,输入SWIG代码: %m ...
- Orchard运用 - 理解App_Data目录结构
了解一个系统,应该基本上要了解目录结构及其组织形式.这样对于开发人员更是必备的知识,比如开发模块最终安装到哪,主题Themes是如何配置启用. 今天跟大家分享其实是个笔记记录,就是看到有一篇文章介绍A ...
- 常见文本框提示css技巧
很多时候会碰到那个的表单 一般我们做文字提醒功能时会在value处直接写上,现在总结一个比较好的方法直接上代码: html: <dl class="login_from"&g ...
- jQuery调用ajax获取json格式数据
<body> <div>点击按钮获取音乐列表</div> <input type="button" id="button&quo ...
- 分别用Java和JS读取Properties文件内容
项目中经常用到的配置文件,除了XML文件之外,还会用到Properties文件来存储一些信息,例如国际化的设置.jdbc连接信息的配置等.有时候也会把一些路径或者sql语句放到Properties中, ...
- 不敢想象!Vim使用者的“大脑”竟是这样
原始状态 我曾经观看过小提琴家非常有激情地拉弦演奏,我有了这种想法:也许我投入到文本编辑器中的脑细胞数量和他为投入所喜好的乐器的演奏中差不多吧.我还有种奇异的想象,当他独奏的时候,脑中的核磁共振图和我 ...
- Android高手进阶篇4-实现侧滑菜单框架,一分钟集成到项目中
先来看下面的这张效果图: 上面这张效果图是百度影音的,现在在Android上很流行,最初是由facebook自己实现的,而后各大应用有跟风之势,那么这种侧滑效果是如何实现的呢? 网上现在这种侧滑菜单的 ...
- 转:介绍shell_notifyicon,SendMessage,CallWindowProc,GetWindowLong,SetWindowLong的用法
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA& ...
- IOS客户端Coding项目记录(一)
1:UITextField设置出现清除按键 self.textField.clearButtonMode = UITextFieldViewModeWhileEditing; 说明: UITextFi ...