mirror of
https://github.com/vczh-libraries/Release.git
synced 2026-05-10 14:33:47 +08:00
Update release
This commit is contained in:
+86
-74
@@ -8429,6 +8429,14 @@ NodeItemProvider
|
||||
{
|
||||
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();
|
||||
for (vint i = 0; i < count; i++)
|
||||
@@ -8451,24 +8459,6 @@ NodeItemProvider
|
||||
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)
|
||||
:root(_root)
|
||||
{
|
||||
@@ -8485,6 +8475,28 @@ NodeItemProvider
|
||||
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()
|
||||
{
|
||||
return root->GetRootNode()->CalculateTotalVisibleNodes()-1;
|
||||
@@ -8492,20 +8504,20 @@ NodeItemProvider
|
||||
|
||||
WString NodeItemProvider::GetTextValue(vint itemIndex)
|
||||
{
|
||||
if (auto node = RequestNode(itemIndex))
|
||||
{
|
||||
return root->GetTextValue(node.Obj());
|
||||
}
|
||||
return L"";
|
||||
#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.");
|
||||
auto node = RequestNode(itemIndex);
|
||||
return root->GetTextValue(node.Obj());
|
||||
#undef ERROR_MESSAGE_PREFIX
|
||||
}
|
||||
|
||||
description::Value NodeItemProvider::GetBindingValue(vint itemIndex)
|
||||
{
|
||||
if (auto node = RequestNode(itemIndex))
|
||||
{
|
||||
return root->GetBindingValue(node.Obj());
|
||||
}
|
||||
return Value();
|
||||
#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.");
|
||||
auto node = RequestNode(itemIndex);
|
||||
return root->GetBindingValue(node.Obj());
|
||||
#undef ERROR_MESSAGE_PREFIX
|
||||
}
|
||||
|
||||
IDescriptable* NodeItemProvider::RequestView(const WString& identifier)
|
||||
@@ -8627,7 +8639,7 @@ MemoryNodeProvider
|
||||
void MemoryNodeProvider::OnChildTotalVisibleNodesChanged(vint offset)
|
||||
{
|
||||
totalVisibleNodeCount+=offset;
|
||||
if(parent)
|
||||
if(parent && parent->GetExpanding())
|
||||
{
|
||||
parent->OnChildTotalVisibleNodesChanged(offset);
|
||||
}
|
||||
@@ -15547,39 +15559,6 @@ TreeViewItem
|
||||
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()
|
||||
{
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
MemoryNodeProvider* memoryNode=GetMemoryNode(node);
|
||||
@@ -15630,6 +15597,51 @@ TreeViewItemRootProvider
|
||||
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 OnItemCollapsed(INodeProvider* node)override;
|
||||
vint CalculateNodeVisibilityIndexInternal(INodeProvider* node);
|
||||
vint CalculateNodeVisibilityIndex(INodeProvider* node)override;
|
||||
|
||||
Ptr<INodeProvider> RequestNode(vint index)override;
|
||||
public:
|
||||
/// <summary>Create an item provider using a node root provider.</summary>
|
||||
/// <param name="_root">The node root provider.</param>
|
||||
@@ -1375,6 +1373,14 @@ NodeItemProvider
|
||||
/// <summary>Get the owned node root provider.</summary>
|
||||
/// <returns>The node root provider.</returns>
|
||||
Ptr<INodeRootProvider> GetRoot();
|
||||
|
||||
// ===================== list::INodeItemView =====================
|
||||
|
||||
Ptr<INodeProvider> RequestNode(vint index)override;
|
||||
vint CalculateNodeVisibilityIndex(INodeProvider* node)override;
|
||||
|
||||
// ===================== list::IItemProvider =====================
|
||||
|
||||
vint Count()override;
|
||||
WString GetTextValue(vint itemIndex)override;
|
||||
description::Value GetBindingValue(vint itemIndex)override;
|
||||
@@ -11265,18 +11271,11 @@ TreeViewItemRootProvider
|
||||
, public virtual ITreeViewItemView
|
||||
, public Description<TreeViewItemRootProvider>
|
||||
{
|
||||
protected:
|
||||
|
||||
Ptr<GuiImageData> GetNodeImage(INodeProvider* node)override;
|
||||
WString GetTextValue(INodeProvider* node)override;
|
||||
description::Value GetBindingValue(INodeProvider* node)override;
|
||||
public:
|
||||
/// <summary>Create a item root provider.</summary>
|
||||
TreeViewItemRootProvider();
|
||||
~TreeViewItemRootProvider();
|
||||
|
||||
IDescriptable* RequestView(const WString& identifier)override;
|
||||
|
||||
/// <summary>Get the <see cref="TreeViewItem"/> object from a node.</summary>
|
||||
/// <returns>The <see cref="TreeViewItem"/> object.</returns>
|
||||
/// <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>
|
||||
/// <param name="node">The node.</param>
|
||||
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