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< ListType > ViewerType
 视图类型。
 
typedef GValueEventArgs< bool > ViewArgs
 视图参数类型。
 
typedef GHEvent< void(ViewArgs)> HViewEvent
 视图事件委托类型。
 
typedef String ItemType
 项目类型:字符串。
 
typedef vector< ItemType > ListType
 列表类型。
 
typedef ListType::size_type IndexType
 索引类型。
 

Public 成员函数

 Menu (const Rect &={}, const shared_ptr< ListType > &={}, ID=0)
 构造:使用指定边界、文本列表和菜单标识。
 
 Menu (Menu &&)=delete
 禁止转移构造。
 
Menu & operator[] (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
 
Menu * GetParentPtr () const ynothrow
 
void SetItemEnabled (ListType::size_type idx, bool=true)
 设置 idx 指定的菜单项的可用性。
 
bool CheckConfirmed (ListType::size_type) const override
 检查列表中的指定项是否可用。
 
bool Show (ZOrderType=DefaultMenuZOrder)
 按指定 Z 顺序显示菜单。
 
Menu * ShowSub (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 IWidget * GetBoundControlPtr (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 Renderer & GetRenderer () const ynothrow
 取渲染器。
 
virtual View & GetView () const ynothrow
 取部件视图。
 
virtual AController & GetController () 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 ListType & GetList () const ynothrow
 取文本列表。
 
ListType & GetListRef () ynothrow
 取文本列表引用。
 
ItemType * GetItemPtr (const IndexType &)
 取指定项目索引的项目指针。
 
const ItemType * GetItemPtr (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 属性

MenuHost * pHost
 宿主指针。
 
Menu * pParent
 父菜单指针。
 
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< ItemType > ListType
 列表类型。
 
typedef ListType::size_type IndexType
 索引类型。
 

详细描述

文本菜单。

自从
build 252

在文件 menu.h 第 47 行定义.

成员类型定义说明

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

菜单标识类型。

在文件 menu.h 第 52 行定义.

子菜单映射表类型。

在文件 menu.h 第 53 行定义.

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

子菜单映射表项目类型。

在文件 menu.h 第 54 行定义.

构造及析构函数说明

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.cpp 第 152 行定义.

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

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

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

重载 YSLib::UI::TextList .

在文件 menu.cpp 第 161 行定义.

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.h 第 108 行定义.

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

在文件 menu.h 第 109 行定义.

bool Menu::Hide ( )

隐藏菜单。

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

在文件 menu.cpp 第 197 行定义.

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

判断菜单项是否有效。

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

在文件 menu.cpp 第 134 行定义.

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

函数调用图:

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

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

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

在文件 menu.cpp 第 106 行定义.

参考 YSLib::IsInInterval().

函数调用图:

bool Menu::operator-= ( IndexType  idx)

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

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

在文件 menu.cpp 第 116 行定义.

参考 YSLib::IsInInterval().

函数调用图:

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

访问索引指定的子菜单。

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

在文件 menu.h 第 83 行定义.

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

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

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

在文件 menu.cpp 第 143 行定义.

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

函数调用图:

bool Menu::Show ( ZOrderType  z = DefaultMenuZOrder)

按指定 Z 顺序显示菜单。

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

在文件 menu.cpp 第 167 行定义.

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

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

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

在文件 menu.cpp 第 178 行定义.

参考 LocateMenu().

函数调用图:

友元及相关函数文档

friend class MenuHost
friend

在文件 menu.h 第 49 行定义.

类成员变量说明

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

菜单标识。

在文件 menu.h 第 57 行定义.

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

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

在文件 menu.h 第 62 行定义.

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

宿主指针。

在文件 menu.h 第 60 行定义.

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

父菜单指针。

在文件 menu.h 第 61 行定义.

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

未启用菜单项。

在文件 menu.h 第 63 行定义.


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