YSTest: YSLib::UI::TextList类 参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 类列表
- 类索引
- 类继承关系
- 类成员

Public 成员函数 | Public 属性 | Protected 成员函数 | Private 成员函数 | 所有成员列表
YSLib::UI::TextList类 参考

文本列表。 更多...

`#include <ListControl.h>`

类 YSLib::UI::TextList 继承关系图:
[图例]
YSLib::UI::TextList 的协作图:
[图例]

## Public 成员函数

| TextList (const Rect &={}, const shared_ptr< ListType > &={}, const pair< Color, Color > &=FetchGUIConfiguration().Colors.GetPair(Styles::Highlight, Styles::HighlightText))
| 构造：使用指定边界、文本列表和高亮背景色/文本色对。 更多...
| DefDeMoveCtor (TextList) DefPredMem(const ynothrow
vwList | PDefH (bool, Contains, ListType::size_type i) const ynothrow ImplRet(vwList.Contains(i)) DefGetter(override
vwList | WidgetRange (begin(), end())) DefGetterMem(const ynothrow
vwList vwList size_t | GetLastLabelIndex () const
| DefGetterMem (const ynothrow, ListType::size_type, SelectedIndex, vwList) PDefH(Rect
size_t idx | ImplRet (Rect(GetUnitLocation(idx), GetWidth(), GetItemHeight())) void SetList(const shared_ptr< ListType > &)
| 设置文本列表。 更多...
void | SetSelected (ListType::size_type)
| 按指定项目索引设置选中项目。 更多...
void | LocateViewPosition (SDst)
| 定位视图顶端至指定竖直位置。 更多...
void | Refresh (PaintEventArgs &&) override
| 刷新：按指定参数绘制界面并更新状态。 更多...
void | ResetView ()
| 复位视图：调用 MUnitList::ResetView 和 UpdateView 。 更多...
void | SelectFirst ()
| 选择第一个项目。 更多...
void | SelectLast ()
| 选择最后一个项目。 更多...
WidgetIterator | begin ()
WidgetIterator | end ()
Public 成员函数 继承自 YSLib::UI::Widget
| Widget (const Rect &={})
| Widget (const Rect &, HBrush)
template<typename _tView , typename _tRenderer , typename _tController >
| Widget (_tView &&pView_=make_unique< View >(), _tRenderer &&pRenderer_=make_unique< Renderer >(), _tController &&pController_={})
| 构造：使用视图指针、渲染器指针和控制器指针，无背景。 更多...
| Widget (const Widget &)
| 复制构造：除容器指针为空外深复制。 更多...
| DefDelMoveCtor (Widget) virtual ~Widget()
| since build 428 更多...
| DefGetter (ImplI(IWidget), WidgetRange, Children, WidgetRange()) static HBrush MakeBlankBrush()
| 取空白画刷。 更多...
| DefGetter (const ImplI(IWidget), AController &, Controller, Deref(controller_ptr)) DefGetterMem(const ynothrow
| GetView ()) DefGetter(const ImplI(IWidget)
Renderer | Deref (renderer_ptr)) DefGetter(const ImplI(IWidget)
Renderer AView | Deref (view_ptr)) DefGetterMem(const ynothrow
Renderer AView | GetView ()) DefGetterMem(const ynothrow
Renderer AView | GetView ()) DefGetterMem(const ynothrow
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) DefSetterMem(
Renderer AView | GetView ()) void SetRenderer(unique_ptr< Renderer >)
| 设置渲染器为指定指针指向的对象，同时更新渲染器状态。 更多...
void | SetView (unique_ptr< AView >)
| 设置视图为指定指针指向的对象。 更多...
Public 成员函数 继承自 YSLib::UI::MTextList
| MTextList (const shared_ptr< ListType > &={})
| 构造：使用文本列表句柄。 更多...
| DefDeMoveCtor (MTextList) DefGetter(const ynothrow
| 取文本列表。 更多...
size_t | GetTotal () const ImplI(AMUnitList)
| 取文本列表引用。 更多...
void | SetList (const shared_ptr< ListType > &)
| 设置文本列表。 更多...
Public 成员函数 继承自 YSLib::UI::AMUnitControlList
| AMUnitControlList (unique_ptr< IWidget >)
| 构造：使用部件指针。 更多...
IWidget & | GetUnitRef () const ImplI(AMUnitList)
void | SetUnit (unique_ptr< IWidget >)
| 设置单元部件。 更多...
WidgetIterator | MakeIterator (size_t)
| 构造共享子部件迭代器。 更多...

## Public 属性

Color | ForeColor {Drawing::ColorSpace::Black}
| 默认前景色。 更多...
| Selected
vwList | WidgetRange
vwList | Children
vwList | HeadIndex
| GetUnitBounds
Public 属性 继承自 YSLib::UI::Widget
HBrush | Background
| 背景。 更多...
| SDst
| Height
Renderer | Renderer
Renderer AView | View
Renderer AView | SDst
Renderer AView | Width
Renderer AView | SPos
Renderer AView | X
Renderer AView | Y
Renderer AView | Height
Public 属性 继承自 YSLib::UI::MTextList
MLabel | LabelBrush {}
const ListType | List
Public 属性 继承自 YSLib::UI::AMUnitControlList
GEvent< void(ViewArgs)> | ViewChanged
| 视图变更事件。 更多...
GEvent< void(IndexEventArgs)> | Selected
| 项目选择状态变更事件。 更多...
GEvent< void(IndexEventArgs)> | Confirmed
| 项目选中确认事件。 更多...
GEvent< void(size_t)> | Iterated
| 迭代器迭代事件。 更多...

## Protected 成员函数

void | InvalidateSelected (ListType::difference_type offset, ListType::size_type diff=1)
| 按内容大小依次调整视图中选中和首个项目的索引，然后按需调整竖直偏移量。 更多...
void | InvalidateSelected2 (ListType::difference_type, ListType::difference_type)
| 无效化偏移量对应的列表项区域。 更多...
Protected 成员函数 继承自 YSLib::UI::Control
| Control (const Rect &, HBrush)
| 构造：使用指定边界和背景画刷。 更多...
| Control (const Control &)
| 复制构造：除容器为空外深复制。 更多...
| DefDeMoveCtor (Control)~Control() override
| 虚析构：类定义外默认实现。 更多...
virtual | PDefH (observer_ptr< IWidget >, GetBoundControlPtr, const KeyInput &) ImplRet(nullptr) void OnTouch_Close(CursorEventArgs &&)
| 取按键-指针设备输入默认事件组映射。 更多...
Protected 成员函数 继承自 YSLib::UI::AMUnitList
virtual SDst | GetItemHeightCore () const
| 取默认行高：实现。 更多...
virtual | DefDeDtor (AMUnitList) bool CyclicTraverse
| 循环选择遍历。 更多...
SDst | GetFullViewHeight () const
| 取完整视图高。 更多...
SDst | GetItemHeight () const
| 取项目行高：调用 GetItemHeightCore 取结果。 更多...
size_t | GetLastLabelIndexClipped (SPos, SDst) const
| DefGetter (const ynothrow, size_t, SharedIndex, idxShared) DefGetter(const ynothrow
uTopOffset | DeclIEntry (size_t GetTotal() const) DeclIEntry(IWidget &GetUnitRef() const ) Point GetUnitLocation(size_t) const
| 取单元总数。 更多...
SDst | GetViewPosition () const
| 取视图顶端竖直位置。 更多...
SDst | AdjustBottomForHeight (SDst, SDst)
| 调整列表视图底项目（可能不完全）超出下边界以上的竖直偏移量为零。 更多...
SDst | AdjustOffsetForHeight (SDst, bool)
| 调整列表视图底项目的竖直偏移量为零。 更多...
void | AdjustViewForContent (SDst)
| 按内容大小依次调整视图中选中和首个项目的索引，然后按需调整竖直偏移量。 更多...
void | AdjustViewLengthForHeight (SDst, SDst)
| 根据指定的单元部件的高和视图可视区域的高调整视图长度。 更多...
size_t | CheckPoint (const Size &, const Point &)
| 检查点（相对左上角）是否在选择范围内， 更多...
void | ResetView ()
| 复位视图。 更多...
Protected 成员函数 继承自 YSLib::UI::MHilightText
| MHilightText (const Color &bc, const Color &fc)
template<class _type >
| MHilightText (const _type &pr)

## Private 成员函数

void | InvokeConfirmed (ListType::size_type)
| 检查和调用确认事件处理器。 更多...

## 相关函数

(请注意: 这些不是成员函数.)
YF_API void | ResizeForContent (TextList &)
| 根据文本内容调整文本列表大小。 更多...
YF_API void | UpdateView (TextList &, bool is_active={})
| 更新文本列表视图。 更多...
相关函数 继承自 YSLib::UI::Widget
template<class... _tWidgets>
void | InvalidateWidgets (_tWidgets &...wgts)
| 向无效化部件。 更多...
template<class _tRenderer >
_tRenderer & | WrapRenderer (Widget &wgt, unique_ptr< _tRenderer > p_renderer)
| 包装渲染器：设置渲染器并返回被设置的渲染器引用。 更多...
enum | SelectionOption : size_t { ClearSelectionOnConfirm, ClearSelectionOnLeave, SelectOnHover, SelectionOptionMax }
| 选择操作选项。 更多...
std::bitset< SelectionOptionMax > | SelectionOptions {}
| 选择操作选项。 更多...
std::function< bool(IWidget &)> | IsRelated {}
| 判断是否为 Leave 目标时不取消选择的相关部件。 更多...

## 额外继承的成员函数

Public 类型 继承自 YSLib::UI::MTextList
using | ItemType = String
| 项目类型：字符串。 更多...
using | ListType = vector< ItemType >
| 列表类型。 更多...
using | IndexType = typename ListType::size_type
| 索引类型。 更多...
Public 类型 继承自 YSLib::UI::AMUnitControlList
using | ViewArgs = GValueEventArgs< bool >
| 视图参数类型。 更多...
Protected 属性 继承自 YSLib::UI::MTextList
shared_ptr< ListType > | hList
| 文本列表句柄。 更多...
Protected 属性 继承自 YSLib::UI::AMUnitList
SequenceViewer | vwList {}
| 列表视图。 更多...
SDst | uTopOffset = 0
| 列表视图首项目超出上边界的竖直偏移量。 更多...
size_t | idxShared = size_t(-1)
| SDst
| TopOffset
Protected 属性 继承自 YSLib::UI::MHilightText
Color | HilightBackColor
| 高亮背景色。 更多...
Color | HilightTextColor
| 高亮文本色。 更多...

## 详细描述

文本列表。

注解
  LabelBrush 非强异常安全：不抛出异常时保持每次绘制最后项目的状态。

自从
  build 212

在文件 ListControl.h 第 201 行定义.

## 成员枚举类型说明

enum YSLib::UI::TextList::SelectionOption : size_t

选择操作选项。

自从
  build 581

枚举值
ClearSelectionOnConfirm | 确认时自动清空选择。
ClearSelectionOnLeave | 离开时自动清空选择。
SelectOnHover | 悬停时自动选择。
SelectionOptionMax |

在文件 ListControl.h 第 207 行定义.

## 构造及析构函数说明

YSLib::UI::TextList::TextList | ( | const Rect & | r = `{}`,
|  | const shared_ptr< ListType > & | h = `{}`,
|  | const pair< Color, Color > & | hilight_pair = `FetchGUIConfiguration().Colors.GetPair( Styles::Highlight, Styles::HighlightText)`
| ) |  |

explicit

构造：使用指定边界、文本列表和高亮背景色/文本色对。

自从
  build 486

在文件 ListControl.cpp 第 117 行定义.

参考 YSLib::UI::AMUnitList::AdjustOffsetForHeight(), YSLib::UI::BackgroundPriority(), YSLib::UI::BoundaryPriority(), YSLib::UI::RoutedEventArgs::Bubble, YSLib::UI::AMUnitList::CheckPoint(), YSLib::UI::Down, YSLib::UI::e, platform::KeyCodes::DS::Enter, platform::KeyCodes::DS::Esc, YSLib::UI::FetchGUIState(), YSLib::Drawing::FillRect(), YSLib::UI::MLabel::ForeColor, ForeColor, YSLib::Drawing::GetHeight(), YSLib::UI::AMUnitList::GetItemHeight(), YSLib::UI::GetSizeOf, YSLib::UI::AMUnitControlList::GetUnitRef(), YSLib::UI::Widget::Height, YSLib::UI::MHilightText::HilightBackColor, YSLib::UI::MHilightText::HilightTextColor, YSLib::UI::AMUnitList::idxShared, YSLib::UI::SequenceViewer::IncreaseSelected(), YSLib::UI::Invalidate(), InvalidateSelected(), InvalidateSelected2(), InvokeConfirmed(), YSLib::UI::MTextList::LabelBrush, YSLib::UI::SequenceViewer::Length, ystdex::make_observer(), YSLib::UI::OnKeyHeld(), platform::KeyCodes::DS::PgDn, platform::KeyCodes::DS::PgUp, SelectFirst(), SelectionOptions, SelectLast(), SelectOnHover, SetSelected(), YSLib::UI::SetSizeOf(), ystdex::size(), YSLib::UI::Widget::SPos, YSLib::UI::Up, UpdateView(), YSLib::UI::AMUnitList::uTopOffset, YSLib::UI::AMUnitList::vwList, YSLib::UI::Widget::Width , 以及 yunseq.

函数调用图:

## 成员函数说明

WidgetIterator YSLib::UI::TextList::begin | ( |  | ) |

自从
  build 530

在文件 ListControl.cpp 第 401 行定义.

参考 YSLib::UI::AMUnitControlList::MakeIterator().

参考自 Refresh().

函数调用图:

这是这个函数的调用关系图:

YSLib::UI::TextList::DefDeMoveCtor | ( | TextList |  | ) | const

YSLib::UI::TextList::DefGetterMem | ( | const ynothrow | ,
|  | ListType::size_type | ,
|  | SelectedIndex | ,
|  | vwList |
| ) |  |

自从
  build 522

WidgetIterator YSLib::UI::TextList::end | ( |  | ) |

在文件 ListControl.cpp 第 407 行定义.

参考 YSLib::Drawing::GetHeight(), YSLib::UI::AMUnitList::GetLastLabelIndexClipped() , 以及 YSLib::UI::AMUnitControlList::MakeIterator().

函数调用图:

size_t YSLib::UI::TextList::GetLastLabelIndex | ( |  | ) | const

自从
  build 523

在文件 ListControl.cpp 第 269 行定义.

参考 YSLib::Drawing::GetHeight() , 以及 YSLib::UI::AMUnitList::GetLastLabelIndexClipped().

函数调用图:

size_t idx YSLib::UI::TextList::ImplRet | ( | Rect(GetUnitLocation(idx), GetWidth(), GetItemHeight()) |  | ) | const

设置文本列表。

注解
  若参数为空则忽略，否则设置列表并重置视图。

自从
  build 292

void YSLib::UI::TextList::InvalidateSelected | ( | ListType::difference_type | offset,
|  | ListType::size_type | diff = `1`
| ) |  |

protected

按内容大小依次调整视图中选中和首个项目的索引，然后按需调整竖直偏移量。

警告
  若视图大小变化后不调用此方法调整视图，可能引起选择项越界而行为未定义。

自从
  build 392

调整视图长度。

注解
  视图长为当项目数足够时所有在视图中显示的（可能不完全）项目总数。
  当部件高为 0 时忽略。

警告
  设置大小或列表内容后不调用此方法可能导致显示错误。

自从
  build 285

调用选中事件处理器。

当 ClearSelectionOnLeave 被设置时在 Leave 事件中清除已选择项。

注解
  若 IsRelated 非空，使用 IsRelated 判端是否忽略。

参见
  IsRelated

自从
  build 581

无效化偏移量对应的列表项区域。

参数

  offset | 起始偏移量。
  diff | 终止偏移量相对起始偏移量的距离偏移量。

自从
  build 318

在文件 ListControl.cpp 第 296 行定义.

参考 YSLib::Drawing::GetHeight(), YSLib::UI::AMUnitList::GetItemHeight(), YSLib::Drawing::Size::Height, YSLib::UI::Invalidate(), YSLib::Drawing::r, YSLib::RestrictUnsignedStrict(), YSLib::UI::Widget::SDst, YSLib::UI::Widget::SPos, YSLib::UI::AMUnitList::uTopOffset , 以及 YSLib::Drawing::GBinaryGroup< _type >::Y.

参考自 InvalidateSelected2() , 以及 TextList().

函数调用图:

这是这个函数的调用关系图:

void YSLib::UI::TextList::InvalidateSelected2 | ( | ListType::difference_type | x,
|  | ListType::difference_type | y
| ) |  |

protected

无效化偏移量对应的列表项区域。

注解
  若第二参数小于第一参数则交换它们的值。
  区域由参数组成的闭区间指定，若区间左端小于 0 则视为 0 。

自从
  build 318

在文件 ListControl.cpp 第 316 行定义.

参考 InvalidateSelected() , 以及 ystdex::swap().

参考自 SetSelected() , 以及 TextList().

函数调用图:

这是这个函数的调用关系图:

void YSLib::UI::TextList::InvokeConfirmed | ( | ListType::size_type | idx | ) |

private

检查和调用确认事件处理器。

在文件 ListControl.cpp 第 325 行定义.

参考 ClearSelectionOnConfirm, YSLib::UI::AMUnitControlList::Confirmed, IsRelated, SelectionOptions , 以及 YSLib::UI::AMUnitList::vwList.

参考自 TextList().

这是这个函数的调用关系图:

void YSLib::UI::TextList::LocateViewPosition | ( | SDst | h | ) |

定位视图顶端至指定竖直位置。

在文件 ListControl.cpp 第 337 行定义.

参考 YSLib::UI::AMUnitList::GetFullViewHeight(), YSLib::Drawing::GetHeight(), YSLib::UI::AMUnitList::GetItemHeight(), YSLib::UI::AMUnitList::GetViewPosition(), YSLib::RestrictUnsignedStrict(), YSLib::UI::Widget::SDst, YSLib::UI::SequenceViewer::SetHeadIndex(), ystdex::size(), UpdateView(), YSLib::UI::AMUnitList::uTopOffset , 以及 YSLib::UI::AMUnitList::vwList.

函数调用图:

vwList YSLib::UI::TextList::PDefH | ( | bool | ,
|  | Contains | ,
|  | ListType::size_type | i
| ) |  | const

override

自从
  build 639
  build 530

void YSLib::UI::TextList::Refresh | ( | PaintEventArgs && | e | ) |

overridevirtual

刷新：按指定参数绘制界面并更新状态。

注解
  非强异常安全：不抛出异常时保持每次绘制最后项目的状态。

参见
  AMUnitControlList::MakeIterator

自从
  build 294

重载 YSLib::UI::Widget .

在文件 ListControl.cpp 第 358 行定义.

参考 begin(), YSLib::Drawing::bounds, YSLib::UI::e, YSLib::Drawing::GetHeight(), YSLib::UI::AMUnitList::GetItemHeight(), YSLib::UI::AMUnitList::GetLastLabelIndexClipped(), YSLib::UI::AMUnitControlList::GetUnitRef(), YSLib::Drawing::Size::Height, YSLib::UI::AMUnitControlList::MakeIterator(), YSLib::UI::PaintVisibleChildAndCommit(), YSLib::UI::SetSizeOf() , 以及 YSLib::Drawing::GBinaryGroup< _type >::Y.

函数调用图:

void YSLib::UI::TextList::ResetView | ( |  | ) |

复位视图：调用 MUnitList::ResetView 和 UpdateView 。

参见
  MUnitList::ResetView
  UpdateView

在文件 ListControl.cpp 第 378 行定义.

参考 YSLib::UI::AMUnitList::ResetView() , 以及 UpdateView().

函数调用图:

void YSLib::UI::TextList::SelectFirst | ( |  | ) |

选择第一个项目。

注解
  仅操作 vwList 并调整视图偏移量，不更新视图。

在文件 ListControl.cpp 第 385 行定义.

参考 YSLib::UI::AMUnitList::AdjustOffsetForHeight(), YSLib::Drawing::GetHeight(), YSLib::UI::SequenceViewer::SetSelectedIndex(), ystdex::size() , 以及 YSLib::UI::AMUnitList::vwList.

参考自 TextList().

函数调用图:

这是这个函数的调用关系图:

void YSLib::UI::TextList::SelectLast | ( |  | ) |

选择最后一个项目。

注解
  仅操作 vwList 并调整视图偏移量，不更新视图。

在文件 ListControl.cpp 第 392 行定义.

参考 YSLib::UI::AMUnitList::AdjustOffsetForHeight(), YSLib::Drawing::GetHeight(), CHRLib::s, YSLib::UI::SequenceViewer::SetSelectedIndex(), ystdex::size() , 以及 YSLib::UI::AMUnitList::vwList.

参考自 TextList().

函数调用图:

这是这个函数的调用关系图:

void YSLib::UI::TextList::SetSelected | ( | ListType::size_type | i | ) |

按指定项目索引设置选中项目。

在文件 ListControl.cpp 第 275 行定义.

参考 InvalidateSelected2(), YSLib::UI::SequenceViewer::SetSelectedIndex(), ystdex::size() , 以及 YSLib::UI::AMUnitList::vwList.

参考自 TextList() , 以及 YSLib::UI::TreeList::TreeList().

函数调用图:

这是这个函数的调用关系图:

vwList YSLib::UI::TextList::WidgetRange | ( | begin() | ,
|  | end() |
| ) |  | const

## 友元及相关函数文档

YF_API void ResizeForContent | ( | TextList & |  | ) |

related

根据文本内容调整文本列表大小。

注解
  调整大小后自动调整视图长度。

在文件 ListControl.cpp 第 414 行定义.

YF_API void UpdateView | ( | TextList & | ,
|  | bool | is_active = `{}`
| ) |  |

related

更新文本列表视图。

参数

  is_active | 是否确定仅变更视图位置。

自从
  build 392

调用视图变更事件、调整视图长度并无效化。

在文件 ListControl.cpp 第 425 行定义.

参考自 LocateViewPosition(), ResetView(), TextList() , 以及 YSLib::UI::TreeList::TreeList().

这是这个函数的调用关系图:

## 类成员变量说明

vwList YSLib::UI::TextList::Children

在文件 ListControl.h 第 249 行定义.

Color YSLib::UI::TextList::ForeColor {Drawing::ColorSpace::Black}

默认前景色。

自从
  build 525

在文件 ListControl.h 第 227 行定义.

参考自 TextList().

YSLib::UI::TextList::GetUnitBounds

在文件 ListControl.h 第 256 行定义.

vwList YSLib::UI::TextList::HeadIndex

在文件 ListControl.h 第 250 行定义.

std::function<bool(IWidget&)> YSLib::UI::TextList::IsRelated {}

判断是否为 Leave 目标时不取消选择的相关部件。

在文件 ListControl.h 第 221 行定义.

参考自 InvokeConfirmed() , 以及 YSLib::UI::Menu::Menu().

YSLib::UI::TextList::Selected

在文件 ListControl.h 第 243 行定义.

std::bitset<SelectionOptionMax> YSLib::UI::TextList::SelectionOptions {}

选择操作选项。

在文件 ListControl.h 第 219 行定义.

参考自 InvokeConfirmed(), YSLib::UI::Menu::Menu() , 以及 TextList().

vwList YSLib::UI::TextList::WidgetRange

在文件 ListControl.h 第 249 行定义.

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

- ListControl.h
- ListControl.cpp