mirror of
https://github.com/vczh-libraries/Release.git
synced 2026-06-01 06:14:11 +08:00
Update release
This commit is contained in:
+86
-74
@@ -8429,6 +8429,14 @@ NodeItemProvider
|
|||||||
{
|
{
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
if (index == -1)
|
||||||
|
{
|
||||||
|
// Parent returned -1, which means parent has no parent (is a root node)
|
||||||
|
// Check if this parent is OUR root - if not, this is a foreign node
|
||||||
|
#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::tree::NodeItemProvider::CalculateNodeVisibilityIndexInternal(INodeProvider*)#"
|
||||||
|
CHECK_ERROR(parent.Obj() == root->GetRootNode().Obj(), ERROR_MESSAGE_PREFIX L"The node does not belong to the tree associated with this NodeItemProvider.");
|
||||||
|
#undef ERROR_MESSAGE_PREFIX
|
||||||
|
}
|
||||||
|
|
||||||
vint count = parent->GetChildCount();
|
vint count = parent->GetChildCount();
|
||||||
for (vint i = 0; i < count; i++)
|
for (vint i = 0; i < count; i++)
|
||||||
@@ -8451,24 +8459,6 @@ NodeItemProvider
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
vint NodeItemProvider::CalculateNodeVisibilityIndex(INodeProvider* node)
|
|
||||||
{
|
|
||||||
vint result = CalculateNodeVisibilityIndexInternal(node);
|
|
||||||
return result < 0 ? -1 : result;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ptr<INodeProvider> NodeItemProvider::RequestNode(vint index)
|
|
||||||
{
|
|
||||||
if(root->CanGetNodeByVisibleIndex())
|
|
||||||
{
|
|
||||||
return root->GetNodeByVisibleIndex(index+1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return GetNodeByOffset(root->GetRootNode(), index+1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
NodeItemProvider::NodeItemProvider(Ptr<INodeRootProvider> _root)
|
NodeItemProvider::NodeItemProvider(Ptr<INodeRootProvider> _root)
|
||||||
:root(_root)
|
:root(_root)
|
||||||
{
|
{
|
||||||
@@ -8485,6 +8475,28 @@ NodeItemProvider
|
|||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ptr<INodeProvider> NodeItemProvider::RequestNode(vint index)
|
||||||
|
{
|
||||||
|
if (index < 0 || index >= Count())
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
else if (root->CanGetNodeByVisibleIndex())
|
||||||
|
{
|
||||||
|
return root->GetNodeByVisibleIndex(index + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return GetNodeByOffset(root->GetRootNode(), index + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vint NodeItemProvider::CalculateNodeVisibilityIndex(INodeProvider* node)
|
||||||
|
{
|
||||||
|
vint result = CalculateNodeVisibilityIndexInternal(node);
|
||||||
|
return result < 0 ? -1 : result;
|
||||||
|
}
|
||||||
|
|
||||||
vint NodeItemProvider::Count()
|
vint NodeItemProvider::Count()
|
||||||
{
|
{
|
||||||
return root->GetRootNode()->CalculateTotalVisibleNodes()-1;
|
return root->GetRootNode()->CalculateTotalVisibleNodes()-1;
|
||||||
@@ -8492,20 +8504,20 @@ NodeItemProvider
|
|||||||
|
|
||||||
WString NodeItemProvider::GetTextValue(vint itemIndex)
|
WString NodeItemProvider::GetTextValue(vint itemIndex)
|
||||||
{
|
{
|
||||||
if (auto node = RequestNode(itemIndex))
|
#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::tree::NodeItemProvider::GetTextValue(vint)#"
|
||||||
{
|
CHECK_ERROR(0 <= itemIndex && itemIndex < Count(), ERROR_MESSAGE_PREFIX L"Index out of range.");
|
||||||
return root->GetTextValue(node.Obj());
|
auto node = RequestNode(itemIndex);
|
||||||
}
|
return root->GetTextValue(node.Obj());
|
||||||
return L"";
|
#undef ERROR_MESSAGE_PREFIX
|
||||||
}
|
}
|
||||||
|
|
||||||
description::Value NodeItemProvider::GetBindingValue(vint itemIndex)
|
description::Value NodeItemProvider::GetBindingValue(vint itemIndex)
|
||||||
{
|
{
|
||||||
if (auto node = RequestNode(itemIndex))
|
#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::tree::NodeItemProvider::GetBindingValue(vint)#"
|
||||||
{
|
CHECK_ERROR(0 <= itemIndex && itemIndex < Count(), ERROR_MESSAGE_PREFIX L"Index out of range.");
|
||||||
return root->GetBindingValue(node.Obj());
|
auto node = RequestNode(itemIndex);
|
||||||
}
|
return root->GetBindingValue(node.Obj());
|
||||||
return Value();
|
#undef ERROR_MESSAGE_PREFIX
|
||||||
}
|
}
|
||||||
|
|
||||||
IDescriptable* NodeItemProvider::RequestView(const WString& identifier)
|
IDescriptable* NodeItemProvider::RequestView(const WString& identifier)
|
||||||
@@ -8627,7 +8639,7 @@ MemoryNodeProvider
|
|||||||
void MemoryNodeProvider::OnChildTotalVisibleNodesChanged(vint offset)
|
void MemoryNodeProvider::OnChildTotalVisibleNodesChanged(vint offset)
|
||||||
{
|
{
|
||||||
totalVisibleNodeCount+=offset;
|
totalVisibleNodeCount+=offset;
|
||||||
if(parent)
|
if(parent && parent->GetExpanding())
|
||||||
{
|
{
|
||||||
parent->OnChildTotalVisibleNodesChanged(offset);
|
parent->OnChildTotalVisibleNodesChanged(offset);
|
||||||
}
|
}
|
||||||
@@ -15547,39 +15559,6 @@ TreeViewItem
|
|||||||
TreeViewItemRootProvider
|
TreeViewItemRootProvider
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
Ptr<GuiImageData> TreeViewItemRootProvider::GetNodeImage(INodeProvider* node)
|
|
||||||
{
|
|
||||||
MemoryNodeProvider* memoryNode=dynamic_cast<MemoryNodeProvider*>(node);
|
|
||||||
if(memoryNode)
|
|
||||||
{
|
|
||||||
Ptr<TreeViewItem> data=memoryNode->GetData().Cast<TreeViewItem>();
|
|
||||||
if(data)
|
|
||||||
{
|
|
||||||
return data->image;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
WString TreeViewItemRootProvider::GetTextValue(INodeProvider* node)
|
|
||||||
{
|
|
||||||
MemoryNodeProvider* memoryNode = dynamic_cast<MemoryNodeProvider*>(node);
|
|
||||||
if (memoryNode)
|
|
||||||
{
|
|
||||||
Ptr<TreeViewItem> data = memoryNode->GetData().Cast<TreeViewItem>();
|
|
||||||
if (data)
|
|
||||||
{
|
|
||||||
return data->text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return L"";
|
|
||||||
}
|
|
||||||
|
|
||||||
description::Value TreeViewItemRootProvider::GetBindingValue(INodeProvider* node)
|
|
||||||
{
|
|
||||||
return Value::From(GetTreeViewData(node));
|
|
||||||
}
|
|
||||||
|
|
||||||
TreeViewItemRootProvider::TreeViewItemRootProvider()
|
TreeViewItemRootProvider::TreeViewItemRootProvider()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -15588,18 +15567,6 @@ TreeViewItemRootProvider
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
IDescriptable* TreeViewItemRootProvider::RequestView(const WString& identifier)
|
|
||||||
{
|
|
||||||
if(identifier==ITreeViewItemView::Identifier)
|
|
||||||
{
|
|
||||||
return (ITreeViewItemView*)this;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return MemoryNodeRootProvider::RequestView(identifier);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ptr<TreeViewItem> TreeViewItemRootProvider::GetTreeViewData(INodeProvider* node)
|
Ptr<TreeViewItem> TreeViewItemRootProvider::GetTreeViewData(INodeProvider* node)
|
||||||
{
|
{
|
||||||
MemoryNodeProvider* memoryNode=GetMemoryNode(node);
|
MemoryNodeProvider* memoryNode=GetMemoryNode(node);
|
||||||
@@ -15630,6 +15597,51 @@ TreeViewItemRootProvider
|
|||||||
memoryNode->NotifyDataModified();
|
memoryNode->NotifyDataModified();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ptr<GuiImageData> TreeViewItemRootProvider::GetNodeImage(INodeProvider* node)
|
||||||
|
{
|
||||||
|
MemoryNodeProvider* memoryNode = dynamic_cast<MemoryNodeProvider*>(node);
|
||||||
|
if (memoryNode)
|
||||||
|
{
|
||||||
|
Ptr<TreeViewItem> data = memoryNode->GetData().Cast<TreeViewItem>();
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
|
return data->image;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
WString TreeViewItemRootProvider::GetTextValue(INodeProvider* node)
|
||||||
|
{
|
||||||
|
MemoryNodeProvider* memoryNode = dynamic_cast<MemoryNodeProvider*>(node);
|
||||||
|
if (memoryNode)
|
||||||
|
{
|
||||||
|
Ptr<TreeViewItem> data = memoryNode->GetData().Cast<TreeViewItem>();
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
|
return data->text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return L"";
|
||||||
|
}
|
||||||
|
|
||||||
|
description::Value TreeViewItemRootProvider::GetBindingValue(INodeProvider* node)
|
||||||
|
{
|
||||||
|
return Value::From(GetTreeViewData(node));
|
||||||
|
}
|
||||||
|
|
||||||
|
IDescriptable* TreeViewItemRootProvider::RequestView(const WString& identifier)
|
||||||
|
{
|
||||||
|
if (identifier == ITreeViewItemView::Identifier)
|
||||||
|
{
|
||||||
|
return (ITreeViewItemView*)this;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return MemoryNodeRootProvider::RequestView(identifier);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
|||||||
+18
-9
@@ -1363,9 +1363,7 @@ NodeItemProvider
|
|||||||
void OnItemExpanded(INodeProvider* node)override;
|
void OnItemExpanded(INodeProvider* node)override;
|
||||||
void OnItemCollapsed(INodeProvider* node)override;
|
void OnItemCollapsed(INodeProvider* node)override;
|
||||||
vint CalculateNodeVisibilityIndexInternal(INodeProvider* node);
|
vint CalculateNodeVisibilityIndexInternal(INodeProvider* node);
|
||||||
vint CalculateNodeVisibilityIndex(INodeProvider* node)override;
|
|
||||||
|
|
||||||
Ptr<INodeProvider> RequestNode(vint index)override;
|
|
||||||
public:
|
public:
|
||||||
/// <summary>Create an item provider using a node root provider.</summary>
|
/// <summary>Create an item provider using a node root provider.</summary>
|
||||||
/// <param name="_root">The node root provider.</param>
|
/// <param name="_root">The node root provider.</param>
|
||||||
@@ -1375,6 +1373,14 @@ NodeItemProvider
|
|||||||
/// <summary>Get the owned node root provider.</summary>
|
/// <summary>Get the owned node root provider.</summary>
|
||||||
/// <returns>The node root provider.</returns>
|
/// <returns>The node root provider.</returns>
|
||||||
Ptr<INodeRootProvider> GetRoot();
|
Ptr<INodeRootProvider> GetRoot();
|
||||||
|
|
||||||
|
// ===================== list::INodeItemView =====================
|
||||||
|
|
||||||
|
Ptr<INodeProvider> RequestNode(vint index)override;
|
||||||
|
vint CalculateNodeVisibilityIndex(INodeProvider* node)override;
|
||||||
|
|
||||||
|
// ===================== list::IItemProvider =====================
|
||||||
|
|
||||||
vint Count()override;
|
vint Count()override;
|
||||||
WString GetTextValue(vint itemIndex)override;
|
WString GetTextValue(vint itemIndex)override;
|
||||||
description::Value GetBindingValue(vint itemIndex)override;
|
description::Value GetBindingValue(vint itemIndex)override;
|
||||||
@@ -11265,18 +11271,11 @@ TreeViewItemRootProvider
|
|||||||
, public virtual ITreeViewItemView
|
, public virtual ITreeViewItemView
|
||||||
, public Description<TreeViewItemRootProvider>
|
, public Description<TreeViewItemRootProvider>
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
|
|
||||||
Ptr<GuiImageData> GetNodeImage(INodeProvider* node)override;
|
|
||||||
WString GetTextValue(INodeProvider* node)override;
|
|
||||||
description::Value GetBindingValue(INodeProvider* node)override;
|
|
||||||
public:
|
public:
|
||||||
/// <summary>Create a item root provider.</summary>
|
/// <summary>Create a item root provider.</summary>
|
||||||
TreeViewItemRootProvider();
|
TreeViewItemRootProvider();
|
||||||
~TreeViewItemRootProvider();
|
~TreeViewItemRootProvider();
|
||||||
|
|
||||||
IDescriptable* RequestView(const WString& identifier)override;
|
|
||||||
|
|
||||||
/// <summary>Get the <see cref="TreeViewItem"/> object from a node.</summary>
|
/// <summary>Get the <see cref="TreeViewItem"/> object from a node.</summary>
|
||||||
/// <returns>The <see cref="TreeViewItem"/> object.</returns>
|
/// <returns>The <see cref="TreeViewItem"/> object.</returns>
|
||||||
/// <param name="node">The node to get the tree view item.</param>
|
/// <param name="node">The node to get the tree view item.</param>
|
||||||
@@ -11288,6 +11287,16 @@ TreeViewItemRootProvider
|
|||||||
/// <summary>Notify the tree view control that the node is changed. This is required when content in a <see cref="TreeViewItem"/> is modified, but both <see cref="SetTreeViewData"/> or [M:vl.presentation.controls.tree.MemoryNodeProvider.SetData] are not called.</summary>
|
/// <summary>Notify the tree view control that the node is changed. This is required when content in a <see cref="TreeViewItem"/> is modified, but both <see cref="SetTreeViewData"/> or [M:vl.presentation.controls.tree.MemoryNodeProvider.SetData] are not called.</summary>
|
||||||
/// <param name="node">The node.</param>
|
/// <param name="node">The node.</param>
|
||||||
void UpdateTreeViewData(INodeProvider* node);
|
void UpdateTreeViewData(INodeProvider* node);
|
||||||
|
|
||||||
|
// ===================== list::ITreeViewItemView =====================
|
||||||
|
|
||||||
|
Ptr<GuiImageData> GetNodeImage(INodeProvider* node)override;
|
||||||
|
WString GetTextValue(INodeProvider* node)override;
|
||||||
|
description::Value GetBindingValue(INodeProvider* node)override;
|
||||||
|
|
||||||
|
// ===================== list::IItemProvider =====================
|
||||||
|
|
||||||
|
IDescriptable* RequestView(const WString& identifier)override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user