mirror of
https://github.com/vczh-libraries/Release.git
synced 2026-05-22 23:36:46 +08:00
...
This commit is contained in:
+50
-63
@@ -4771,54 +4771,14 @@ GuiBindableTextList
|
||||
return itemSource->Get(index);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
GuiBindableListView::ListViewDataColumns
|
||||
***********************************************************************/
|
||||
|
||||
void GuiBindableListView::ListViewDataColumns::NotifyUpdateInternal(vint start, vint count, vint newCount)
|
||||
{
|
||||
itemProvider->NotifyUpdate(0, itemProvider->Count());
|
||||
}
|
||||
|
||||
GuiBindableListView::ListViewDataColumns::ListViewDataColumns()
|
||||
:itemProvider(0)
|
||||
{
|
||||
}
|
||||
|
||||
GuiBindableListView::ListViewDataColumns::~ListViewDataColumns()
|
||||
{
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
GuiBindableListView::ListViewColumns
|
||||
***********************************************************************/
|
||||
|
||||
void GuiBindableListView::ListViewColumns::NotifyUpdateInternal(vint start, vint count, vint newCount)
|
||||
{
|
||||
for(vint i=0;i<itemProvider->columnItemViewCallbacks.Count();i++)
|
||||
{
|
||||
itemProvider->columnItemViewCallbacks[i]->OnColumnChanged();
|
||||
}
|
||||
itemProvider->NotifyUpdate(0, itemProvider->Count());
|
||||
}
|
||||
|
||||
GuiBindableListView::ListViewColumns::ListViewColumns()
|
||||
:itemProvider(0)
|
||||
{
|
||||
}
|
||||
|
||||
GuiBindableListView::ListViewColumns::~ListViewColumns()
|
||||
{
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
GuiBindableListView::ItemSource
|
||||
***********************************************************************/
|
||||
|
||||
GuiBindableListView::ItemSource::ItemSource()
|
||||
:columns(this)
|
||||
, dataColumns(this)
|
||||
{
|
||||
columns.itemProvider = this;
|
||||
dataColumns.itemProvider = this;
|
||||
}
|
||||
|
||||
GuiBindableListView::ItemSource::~ItemSource()
|
||||
@@ -4895,15 +4855,30 @@ GuiBindableListView::ItemSource
|
||||
}
|
||||
}
|
||||
|
||||
GuiBindableListView::ListViewDataColumns& GuiBindableListView::ItemSource::GetDataColumns()
|
||||
list::ListViewDataColumns& GuiBindableListView::ItemSource::GetDataColumns()
|
||||
{
|
||||
return dataColumns;
|
||||
}
|
||||
|
||||
GuiBindableListView::ListViewColumns& GuiBindableListView::ItemSource::GetColumns()
|
||||
list::ListViewColumns& GuiBindableListView::ItemSource::GetColumns()
|
||||
{
|
||||
return columns;
|
||||
}
|
||||
|
||||
// ===================== list::IListViewItemProvider =====================
|
||||
|
||||
void GuiBindableListView::ItemSource::NotifyAllItemsUpdate()
|
||||
{
|
||||
NotifyUpdate(0, Count());
|
||||
}
|
||||
|
||||
void GuiBindableListView::ItemSource::NotifyAllColumnsUpdate()
|
||||
{
|
||||
for (vint i = 0; i < columnItemViewCallbacks.Count(); i++)
|
||||
{
|
||||
columnItemViewCallbacks[i]->OnColumnChanged();
|
||||
}
|
||||
}
|
||||
|
||||
// ===================== GuiListControl::IItemProvider =====================
|
||||
|
||||
@@ -5136,12 +5111,12 @@ GuiBindableListView
|
||||
{
|
||||
}
|
||||
|
||||
GuiBindableListView::ListViewDataColumns& GuiBindableListView::GetDataColumns()
|
||||
list::ListViewDataColumns& GuiBindableListView::GetDataColumns()
|
||||
{
|
||||
return itemSource->GetDataColumns();
|
||||
}
|
||||
|
||||
GuiBindableListView::ListViewColumns& GuiBindableListView::GetColumns()
|
||||
list::ListViewColumns& GuiBindableListView::GetColumns()
|
||||
{
|
||||
return itemSource->GetColumns();
|
||||
}
|
||||
@@ -11161,6 +11136,7 @@ ListViewTileContentProvider
|
||||
|
||||
GuiTableComposition* table=new GuiTableComposition;
|
||||
contentComposition->AddChild(table);
|
||||
table->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren);
|
||||
table->SetRowsAndColumns(3, 2);
|
||||
table->SetRowOption(0, GuiCellOption::PercentageOption(0.5));
|
||||
table->SetRowOption(1, GuiCellOption::MinSizeOption());
|
||||
@@ -11190,6 +11166,7 @@ ListViewTileContentProvider
|
||||
cell->SetPreferredMinSize(Size(224, 0));
|
||||
|
||||
textTable=new GuiTableComposition;
|
||||
textTable->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren);
|
||||
textTable->SetCellPadding(1);
|
||||
ResetTextTable(1);
|
||||
textTable->SetAlignmentToParent(Margin(0, 0, 0, 0));
|
||||
@@ -11300,6 +11277,7 @@ ListViewInformationContentProvider
|
||||
|
||||
GuiTableComposition* table=new GuiTableComposition;
|
||||
contentComposition->AddChild(table);
|
||||
table->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren);
|
||||
table->SetRowsAndColumns(3, 3);
|
||||
table->SetRowOption(0, GuiCellOption::PercentageOption(0.5));
|
||||
table->SetRowOption(1, GuiCellOption::MinSizeOption());
|
||||
@@ -11343,6 +11321,7 @@ ListViewInformationContentProvider
|
||||
cell->SetPreferredMinSize(Size(224, 0));
|
||||
|
||||
textTable=new GuiTableComposition;
|
||||
textTable->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren);
|
||||
textTable->SetCellPadding(4);
|
||||
textTable->SetAlignmentToParent(Margin(0, 0, 0, 0));
|
||||
cell->AddChild(textTable);
|
||||
@@ -11387,7 +11366,8 @@ ListViewInformationContentProvider
|
||||
|
||||
vint dataColumnCount=view->GetDataColumnCount();
|
||||
dataTexts.Resize(dataColumnCount);
|
||||
textTable->SetRowsAndColumns(dataColumnCount, 1);
|
||||
textTable->SetRowsAndColumns(dataColumnCount+1, 1);
|
||||
textTable->SetRowOption(dataColumnCount, GuiCellOption::PercentageOption(1.0));
|
||||
textTable->SetColumnOption(0, GuiCellOption::PercentageOption(1.0));
|
||||
for(vint i=0;i<dataColumnCount;i++)
|
||||
{
|
||||
@@ -12008,7 +11988,7 @@ ListViewColumn
|
||||
if (owner)
|
||||
{
|
||||
vint index = owner->IndexOf(this);
|
||||
owner->NotifyUpdateInternal(index, 1, 1);
|
||||
owner->NotifyUpdate(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12082,11 +12062,11 @@ ListViewDataColumns
|
||||
|
||||
void ListViewDataColumns::NotifyUpdateInternal(vint start, vint count, vint newCount)
|
||||
{
|
||||
itemProvider->NotifyUpdate(0, itemProvider->Count());
|
||||
itemProvider->NotifyAllItemsUpdate();
|
||||
}
|
||||
|
||||
ListViewDataColumns::ListViewDataColumns()
|
||||
:itemProvider(0)
|
||||
ListViewDataColumns::ListViewDataColumns(IListViewItemProvider* _itemProvider)
|
||||
:itemProvider(_itemProvider)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -12112,18 +12092,12 @@ ListViewColumns
|
||||
|
||||
void ListViewColumns::NotifyUpdateInternal(vint start, vint count, vint newCount)
|
||||
{
|
||||
for(vint i=0;i<itemProvider->columnItemViewCallbacks.Count();i++)
|
||||
{
|
||||
itemProvider->columnItemViewCallbacks[i]->OnColumnChanged();
|
||||
}
|
||||
if (count != newCount)
|
||||
{
|
||||
itemProvider->NotifyUpdate(0, itemProvider->Count());
|
||||
}
|
||||
itemProvider->NotifyAllColumnsUpdate();
|
||||
itemProvider->NotifyAllItemsUpdate();
|
||||
}
|
||||
|
||||
ListViewColumns::ListViewColumns()
|
||||
:itemProvider(0)
|
||||
ListViewColumns::ListViewColumns(IListViewItemProvider* _itemProvider)
|
||||
:itemProvider(_itemProvider)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -12147,6 +12121,19 @@ ListViewItemProvider
|
||||
ListProvider<Ptr<ListViewItem>>::AfterInsert(index, value);
|
||||
}
|
||||
|
||||
void ListViewItemProvider::NotifyAllItemsUpdate()
|
||||
{
|
||||
NotifyUpdate(0, Count());
|
||||
}
|
||||
|
||||
void ListViewItemProvider::NotifyAllColumnsUpdate()
|
||||
{
|
||||
for (vint i = 0; i < columnItemViewCallbacks.Count(); i++)
|
||||
{
|
||||
columnItemViewCallbacks[i]->OnColumnChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool ListViewItemProvider::ContainsPrimaryText(vint itemIndex)
|
||||
{
|
||||
return true;
|
||||
@@ -12289,9 +12276,9 @@ ListViewItemProvider
|
||||
}
|
||||
|
||||
ListViewItemProvider::ListViewItemProvider()
|
||||
:columns(this)
|
||||
, dataColumns(this)
|
||||
{
|
||||
columns.itemProvider=this;
|
||||
dataColumns.itemProvider=this;
|
||||
}
|
||||
|
||||
ListViewItemProvider::~ListViewItemProvider()
|
||||
|
||||
+26
-47
@@ -12394,42 +12394,45 @@ ListView
|
||||
void SetSortingState(GuiListViewColumnHeader::ColumnSortingState value);
|
||||
};
|
||||
|
||||
class ListViewItemProvider;
|
||||
class IListViewItemProvider : public virtual Interface
|
||||
{
|
||||
public:
|
||||
virtual void NotifyAllItemsUpdate() = 0;
|
||||
virtual void NotifyAllColumnsUpdate() = 0;
|
||||
};
|
||||
|
||||
/// <summary>List view data column container.</summary>
|
||||
class ListViewDataColumns : public ItemsBase<vint>
|
||||
{
|
||||
friend class ListViewItemProvider;
|
||||
protected:
|
||||
ListViewItemProvider* itemProvider;
|
||||
IListViewItemProvider* itemProvider;
|
||||
|
||||
void NotifyUpdateInternal(vint start, vint count, vint newCount)override;
|
||||
public:
|
||||
/// <summary>Create a container.</summary>
|
||||
ListViewDataColumns();
|
||||
ListViewDataColumns(IListViewItemProvider* _itemProvider);
|
||||
~ListViewDataColumns();
|
||||
};
|
||||
|
||||
/// <summary>List view column container.</summary>
|
||||
class ListViewColumns : public ItemsBase<Ptr<ListViewColumn>>
|
||||
{
|
||||
friend class ListViewColumn;
|
||||
friend class ListViewItemProvider;
|
||||
protected:
|
||||
ListViewItemProvider* itemProvider;
|
||||
IListViewItemProvider* itemProvider;
|
||||
|
||||
void AfterInsert(vint index, const Ptr<ListViewColumn>& value)override;
|
||||
void BeforeRemove(vint index, const Ptr<ListViewColumn>& value)override;
|
||||
void NotifyUpdateInternal(vint start, vint count, vint newCount)override;
|
||||
public:
|
||||
/// <summary>Create a container.</summary>
|
||||
ListViewColumns();
|
||||
ListViewColumns(IListViewItemProvider* _itemProvider);
|
||||
~ListViewColumns();
|
||||
};
|
||||
|
||||
/// <summary>Item provider for <see cref="GuiListViewBase"/> and <see cref="ListViewItemStyleProvider"/>.</summary>
|
||||
class ListViewItemProvider
|
||||
: public ListProvider<Ptr<ListViewItem>>
|
||||
, protected virtual IListViewItemProvider
|
||||
, protected virtual ListViewItemStyleProvider::IListViewItemView
|
||||
, protected virtual ListViewColumnItemArranger::IColumnItemView
|
||||
, protected GuiListControl::IItemBindingView
|
||||
@@ -12447,6 +12450,9 @@ ListView
|
||||
void AfterInsert(vint index, const Ptr<ListViewItem>& value)override;
|
||||
void BeforeRemove(vint index, const Ptr<ListViewItem>& value)override;
|
||||
|
||||
void NotifyAllItemsUpdate()override;
|
||||
void NotifyAllColumnsUpdate()override;
|
||||
|
||||
bool ContainsPrimaryText(vint itemIndex)override;
|
||||
WString GetPrimaryTextViewText(vint itemIndex)override;
|
||||
Ptr<GuiImageData> GetSmallImage(vint itemIndex)override;
|
||||
@@ -16746,50 +16752,18 @@ GuiBindableListView
|
||||
/// <summary>A bindable List view control.</summary>
|
||||
class GuiBindableListView : public GuiVirtualListView, public Description<GuiBindableListView>
|
||||
{
|
||||
protected:
|
||||
class ItemSource;
|
||||
public:
|
||||
/// <summary>List view data column container.</summary>
|
||||
class ListViewDataColumns : public list::ItemsBase<vint>
|
||||
{
|
||||
friend class ItemSource;
|
||||
protected:
|
||||
ItemSource* itemProvider;
|
||||
|
||||
void NotifyUpdateInternal(vint start, vint count, vint newCount)override;
|
||||
public:
|
||||
/// <summary>Create a container.</summary>
|
||||
ListViewDataColumns();
|
||||
~ListViewDataColumns();
|
||||
};
|
||||
|
||||
/// <summary>List view column container.</summary>
|
||||
class ListViewColumns : public list::ItemsBase<Ptr<list::ListViewColumn>>
|
||||
{
|
||||
friend class ItemSource;
|
||||
protected:
|
||||
ItemSource* itemProvider;
|
||||
|
||||
void NotifyUpdateInternal(vint start, vint count, vint newCount)override;
|
||||
public:
|
||||
/// <summary>Create a container.</summary>
|
||||
ListViewColumns();
|
||||
~ListViewColumns();
|
||||
};
|
||||
|
||||
protected:
|
||||
class ItemSource
|
||||
: public list::ItemProviderBase
|
||||
, protected virtual list::IListViewItemProvider
|
||||
, protected GuiListControl::IItemBindingView
|
||||
, protected virtual list::ListViewItemStyleProvider::IListViewItemView
|
||||
, protected virtual list::ListViewColumnItemArranger::IColumnItemView
|
||||
{
|
||||
friend class ListViewDataColumns;
|
||||
friend class ListViewColumns;
|
||||
typedef collections::List<list::ListViewColumnItemArranger::IColumnItemViewCallback*> ColumnItemViewCallbackList;
|
||||
protected:
|
||||
ListViewDataColumns dataColumns;
|
||||
ListViewColumns columns;
|
||||
list::ListViewDataColumns dataColumns;
|
||||
list::ListViewColumns columns;
|
||||
ColumnItemViewCallbackList columnItemViewCallbacks;
|
||||
Ptr<EventHandler> itemChangedEventHandler;
|
||||
Ptr<description::IValueReadonlyList> itemSource;
|
||||
@@ -16808,8 +16782,13 @@ GuiBindableListView
|
||||
description::Value Get(vint index);
|
||||
void UpdateBindingProperties();
|
||||
bool NotifyUpdate(vint start, vint count);
|
||||
ListViewDataColumns& GetDataColumns();
|
||||
ListViewColumns& GetColumns();
|
||||
list::ListViewDataColumns& GetDataColumns();
|
||||
list::ListViewColumns& GetColumns();
|
||||
|
||||
// ===================== list::IListViewItemProvider =====================
|
||||
|
||||
void NotifyAllItemsUpdate()override;
|
||||
void NotifyAllColumnsUpdate()override;
|
||||
|
||||
// ===================== GuiListControl::IItemProvider =====================
|
||||
|
||||
@@ -16859,10 +16838,10 @@ GuiBindableListView
|
||||
|
||||
/// <summary>Get all data columns indices in columns.</summary>
|
||||
/// <returns>All data columns indices in columns.</returns>
|
||||
ListViewDataColumns& GetDataColumns();
|
||||
list::ListViewDataColumns& GetDataColumns();
|
||||
/// <summary>Get all columns.</summary>
|
||||
/// <returns>All columns.</returns>
|
||||
ListViewColumns& GetColumns();
|
||||
list::ListViewColumns& GetColumns();
|
||||
|
||||
/// <summary>Get the item source.</summary>
|
||||
/// <returns>The item source.</returns>
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
</Cell>
|
||||
|
||||
<Cell Site="row:1 column:0">
|
||||
<BindableListView ref.Name="listViewContacts" HorizontalAlwaysVisible="false" VerticalAlwaysVisible="false">
|
||||
<BindableListView ref.Name="listViewContacts" View="Detail" IconSize="x:16 y:16" HorizontalAlwaysVisible="false" VerticalAlwaysVisible="false">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<att.ItemSource-bind>ViewModel.SelectedCategory.Contacts ?? null</att.ItemSource-bind>
|
||||
<att.LargeImageProperty>BigImage</att.LargeImageProperty>
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user