YSTest  PreAlpha_b400_20130424
The YSLib Test Project
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
YSLib::UI::Menu类 参考

文本菜单。 更多...

#include <menu.h>

类 YSLib::UI::Menu 继承关系图:
YSLib::UI::Menu 的协作图:

Public 类型

typedef size_t ID
 菜单标识类型。
 
typedef map< IndexType, Menu * > SubMap
 子菜单映射表类型。
 
typedef SubMap::value_type ValueType
 子菜单映射表项目类型。
 
- Public 类型 继承自 YSLib::UI::TextList
typedef GSequenceViewer< ListTypeViewerType
 视图类型。
 
typedef GValueEventArgs< bool > ViewArgs
 视图参数类型。
 
typedef GHEvent< void(ViewArgs)> HViewEvent
 视图事件委托类型。
 
typedef String ItemType
 项目类型:字符串。
 
typedef vector< ItemTypeListType
 列表类型。
 
typedef ListType::size_type IndexType
 索引类型。
 

Public 成员函数

 Menu (const Rect &={}, const shared_ptr< ListType > &={}, ID=0)
 构造:使用指定边界、文本列表和菜单标识。
 
 Menu (Menu &&)=delete
 禁止转移构造。
 
Menuoperator[] (size_t idx)
 访问索引指定的子菜单。

异常
std::out_of_range异常中立:指定子菜单越界或不存在:由 at 抛出。

 
void operator+= (const ValueType &)
 向子菜单组添加关联索引和指针指定的菜单。
 
bool operator-= (IndexType)
 向菜单组移除指定子菜单索引项。
 
bool IsItemEnabled (ListType::size_type) const
 判断菜单项是否有效。
 
ID GetID () const ynothrow
 
MenuGetParentPtr () const ynothrow
 
void SetItemEnabled (ListType::size_type idx, bool=true)
 设置 idx 指定的菜单项的可用性。
 
bool CheckConfirmed (ListType::size_type) const override
 检查列表中的指定项是否可用。
 
bool Show (ZOrderType=DefaultMenuZOrder)
 按指定 Z 顺序显示菜单。
 
MenuShowSub (IndexType, ZOrderType=DefaultMenuZOrder)
 按指定 Z 顺序显示索引指定的子菜单。
 
bool Hide ()
 隐藏菜单。
 
- Public 成员函数 继承自 YSLib::UI::TextList
 TextList (const Rect &={}, const shared_ptr< ListType > &={}, pair< Color, Color >=FetchGUIState().Colors.GetPair(Styles::Highlight, Styles::HighlightText))
 构造:使用指定边界、文本列表和高亮背景色/文本色对。
 
 TextList (TextList &&)=default
 
bool IsSelected () const ynothrow
 
bool Contains (ListType::size_type i)
 
GEvent< void(HViewEvent::EventArgsType)> & GetViewChanged () ynothrow
 视图变更事件。
 
GEvent< void(HIndexEvent::EventArgsType)> & GetSelected () ynothrow
 项目选择状态变更事件。
 
GEvent< void(HIndexEvent::EventArgsType)> & GetConfirmed () ynothrow
 项目选中确定事件。
 
ListType::size_type GetHeadIndex () const ynothrow
 
ListType::size_type GetSelectedIndex () const ynothrow
 
SDst GetFullViewHeight () const
 取完整视图高。
 
SDst GetViewPosition () const
 取视图顶端竖直位置。
 
void SetList (const shared_ptr< ListType > &)
 设置文本列表。
 
void SetSelected (ListType::size_type)
 按指定项目索引设置选中项目。
 
void SetSelected (SPos, SPos)
 按接触点设置选中项目。
 
void SetSelected (const Point &pt)
 按接触点设置选中项目。
 
void AdjustViewForContent ()
 按内容大小依次调整视图中选中和首个项目的索引,然后按需调整竖直偏移量。
 
void AdjustViewLength ()
 调整视图长度。
 
ListType::size_type CheckPoint (SPos, SPos)
 检查点(相对于所在缓冲区的控件坐标)是否在选择范围内,
 
ListType::size_type CheckPoint (const Point &pt)
 检查点(相对于所在缓冲区的控件坐标)是否在选择范围内,
 
void ClearSelected ()
 
void LocateViewPosition (SDst)
 定位视图顶端至指定竖直位置。
 
void Refresh (PaintEventArgs &&) override
 刷新:按指定参数绘制界面并更新状态。
 
void ResetView ()
 复位视图。
 
void SelectFirst ()
 选择第一个项目。
 
void SelectLast ()
 选择最后一个项目。
 
- Public 成员函数 继承自 YSLib::UI::Control
 Control (const Rect &={})
 构造:使用指定边界,默认背景(同 Widget 默认构造)。
 
 Control (const Rect &, NoBackgroundTag)
 构造:使用指定边界,无背景。
 
 Control (const Control &)
 复制构造:除容器为空外深复制。
 
 Control (Control &&)=default
 
virtual IWidgetGetBoundControlPtr (const KeyInput &)
 取按键-指针设备输入默认事件组映射。
 
void OnTouch_Close (TouchEventArgs &&)
 处理屏幕事件:关闭显示。
 
- Public 成员函数 继承自 YSLib::UI::Widget
 Widget (const Rect &={}, Color=Drawing::ColorSpace::White, Color=Drawing::ColorSpace::Black)
 
template<typename _tView , typename _tRenderer , typename _tController >
 Widget (_tView &&pView_=make_unique< View >(), _tRenderer &&pRenderer_=make_unique< Renderer >(), _tController &&pController_={})
 构造:使用视图指针、渲染器指针和控制器指针,无背景。
 
 Widget (const Widget &)
 复制构造:除容器指针为空外深复制。
 
 Widget (Widget &&)=default
 
virtual ~Widget ()
 析构:虚实现。
 
SPos GetX () const ynothrow
 
SPos GetY () const ynothrow
 
SDst GetWidth () const ynothrow
 
SDst GetHeight () const ynothrow
 
virtual RendererGetRenderer () const ynothrow
 取渲染器。
 
virtual ViewGetView () const ynothrow
 取部件视图。
 
virtual AControllerGetController () const override
 取控制器。
 
virtual WidgetRange GetChildren () override
 
void SetX (SDst _tempArgName)
 
void SetY (SDst _tempArgName)
 
void SetWidth (SDst _tempArgName)
 
void SetHeight (SDst _tempArgName)
 
void SetRenderer (unique_ptr< Renderer > &&)
 设置渲染器为指定指针指向的对象,同时更新渲染器状态。
 
void SetView (unique_ptr< View > &&)
 设置渲染器为指定指针指向的对象,同时更新渲染器状态。
 
- Public 成员函数 继承自 YSLib::UI::IWidget
virtual ~IWidget ()
 

Protected 成员函数

void AdjustSize () const
 调整 vDisabled 大小。
 
void DrawItem (const Graphics &, const Rect &mask, const Rect &, ListType::size_type) override
 绘制菜单项。
 
- Protected 成员函数 继承自 YSLib::UI::TextList
void InvalidateSelected (ListType::difference_type offset, ListType::size_type diff=1)
 无效化偏移量对应的列表项区域。
 
void InvalidateSelected2 (ListType::difference_type, ListType::difference_type)
 无效化偏移量对应的列表项区域。
 
virtual void DrawItemBackground (const PaintContext &, const Rect &r)
 描画列表项背景。
 
virtual void DrawItems (const PaintContext &)
 绘制列表。
 
- Protected 成员函数 继承自 YSLib::UI::MTextList
const ListTypeGetList () const ynothrow
 取文本列表。
 
ListTypeGetListRef () ynothrow
 取文本列表引用。
 
ItemTypeGetItemPtr (const IndexType &)
 取指定项目索引的项目指针。
 
const ItemTypeGetItemPtr (const IndexType &) const
 取指定项目索引的项目 const 指针。
 
SDst GetItemHeight () const ynothrow
 取项目行高。
 
SDst GetMaxTextWidth () const
 取文本列表中的最大文本宽度。
 
void SetList (const shared_ptr< ListType > &h)
 设置文本列表。
 
IndexType Find (const ItemType &) const
 查找项。
 
void RefreshTextState ()
 刷新文本状态。
 
 MTextList (const shared_ptr< ListType > &={}, const Drawing::Font &={})
 构造:使用文本列表句柄和字体指针。
 
 MTextList (MTextList &&)=default
 

Protected 属性

MenuHostpHost
 宿主指针。
 
MenupParent
 父菜单指针。
 
SubMap mSubMenus
 子菜单映射表:存储非空子菜单指针。
 
vector< bool > vDisabled
 未启用菜单项。
 

Private 属性

ID id
 菜单标识。
 

友元

class MenuHost
 

额外继承的成员函数

- Public 属性 继承自 YSLib::UI::TextList
Color HilightBackColor
 高亮背景色。
 
Color HilightTextColor
 高亮文本色。
 
bool CyclicTraverse
 循环选择遍历。
 
- Protected 类型 继承自 YSLib::UI::MTextList
typedef String ItemType
 项目类型:字符串。
 
typedef vector< ItemTypeListType
 列表类型。
 
typedef ListType::size_type IndexType
 索引类型。
 

详细描述

文本菜单。

自从
build 252

在文件 menu.h47 行定义.

成员类型定义说明

typedef size_t YSLib::UI::Menu::ID

菜单标识类型。

在文件 menu.h52 行定义.

子菜单映射表类型。

在文件 menu.h53 行定义.

typedef SubMap::value_type YSLib::UI::Menu::ValueType

子菜单映射表项目类型。

在文件 menu.h54 行定义.

构造及析构函数说明

YSLib::UI::Menu::Menu ( const Rect = {},
const shared_ptr< ListType > &  = {},
ID  = 0 
)
explicit

构造:使用指定边界、文本列表和菜单标识。

自从
build 327
YSLib::UI::Menu::Menu ( Menu &&  )
delete

禁止转移构造。

自从
build 379
待办事项:
实现转移操作。

成员函数说明

void Menu::AdjustSize ( ) const
protected

调整 vDisabled 大小。

后置条件
vDisabled.size() == GetList().size()

在文件 menu.cpp152 行定义.

bool Menu::CheckConfirmed ( ListType::size_type  ) const
overridevirtual

检查列表中的指定项是否可用。

注解
当且仅当可用时响应 Confirmed 事件。

重载 YSLib::UI::TextList .

在文件 menu.cpp161 行定义.

void Menu::DrawItem ( const Graphics g,
const Rect mask,
const Rect unit,
ListType::size_type  i 
)
overrideprotectedvirtual
ID YSLib::UI::Menu::GetID ( ) const
inline

在文件 menu.h108 行定义.

Menu* YSLib::UI::Menu::GetParentPtr ( ) const
inline

在文件 menu.h109 行定义.

bool Menu::Hide ( )

隐藏菜单。

注解
菜单宿主指针为空时忽略。

在文件 menu.cpp197 行定义.

bool Menu::IsItemEnabled ( ListType::size_type  idx) const

判断菜单项是否有效。

前置条件
断言: IsInInterval(idx, GetList().size())
后置条件
vDisabled.size() == GetList().size()

在文件 menu.cpp134 行定义.

参考 YSLib::IsInInterval() , 以及 YAssert.

函数调用图:

void Menu::operator+= ( const ValueType val)

向子菜单组添加关联索引和指针指定的菜单。

注解
若索引越界或菜单指针为空则忽略。

在文件 menu.cpp106 行定义.

参考 YSLib::IsInInterval().

函数调用图:

bool Menu::operator-= ( IndexType  idx)

向菜单组移除指定子菜单索引项。

注解
若索引越界或不存在则忽略。

在文件 menu.cpp116 行定义.

参考 YSLib::IsInInterval().

函数调用图:

Menu& YSLib::UI::Menu::operator[] ( size_t  idx)
inline

访问索引指定的子菜单。

异常
std::out_of_range异常中立:指定子菜单越界或不存在:由 at 抛出。

在文件 menu.h83 行定义.

void Menu::SetItemEnabled ( ListType::size_type  idx,
bool  = true 
)

设置 idx 指定的菜单项的可用性。

前置条件
断言: IsInInterval(idx, GetList().size())
后置条件
vDisabled.size() == GetList().size() ; IsItemEnabled(idx) 。

在文件 menu.cpp143 行定义.

参考 YSLib::IsInInterval() , 以及 YAssert.

函数调用图:

bool Menu::Show ( ZOrderType  z = DefaultMenuZOrder)

按指定 Z 顺序显示菜单。

注解
菜单宿主指针为空时忽略。
返回
菜单宿主指针非空。

在文件 menu.cpp167 行定义.

Menu * Menu::ShowSub ( IndexType  idx,
ZOrderType  z = DefaultMenuZOrder 
)

按指定 Z 顺序显示索引指定的子菜单。

注解
菜单宿主指针为空时忽略。
返回
菜单宿主指针非空且索引指定的子菜单存在时为子菜单指针,否则为空指针。

在文件 menu.cpp178 行定义.

参考 LocateMenu().

函数调用图:

友元及相关函数文档

friend class MenuHost
friend

在文件 menu.h49 行定义.

类成员变量说明

ID YSLib::UI::Menu::id
private

菜单标识。

在文件 menu.h57 行定义.

SubMap YSLib::UI::Menu::mSubMenus
protected

子菜单映射表:存储非空子菜单指针。

在文件 menu.h62 行定义.

MenuHost* YSLib::UI::Menu::pHost
protected

宿主指针。

在文件 menu.h60 行定义.

Menu* YSLib::UI::Menu::pParent
protected

父菜单指针。

在文件 menu.h61 行定义.

vector<bool> YSLib::UI::Menu::vDisabled
mutableprotected

未启用菜单项。

在文件 menu.h63 行定义.


该类的文档由以下文件生成: