126 lines
3.4 KiB
C++
126 lines
3.4 KiB
C++
#include "ElaNavigationNode.h"
|
|
|
|
#include <QUuid>
|
|
|
|
ElaNavigationNode::ElaNavigationNode(QString nodeTitle, ElaNavigationNode *parent) : QObject(parent) {
|
|
_pDepth = 0;
|
|
_pKeyPoints = 0;
|
|
_nodeKey = QUuid::createUuid().toString().remove("{").remove("}").remove("-");
|
|
_nodeTitle = nodeTitle;
|
|
_pIsRootNode = false;
|
|
_pIsFooterNode = false;
|
|
_pIsHasFooterPage = false;
|
|
_pParentNode = parent;
|
|
_pIsExpanderNode = false;
|
|
_pIsVisible = false;
|
|
}
|
|
|
|
ElaNavigationNode::~ElaNavigationNode() { qDeleteAll(_pChildrenNodes); }
|
|
|
|
QString ElaNavigationNode::getNodeKey() const { return _nodeKey; }
|
|
|
|
QString ElaNavigationNode::getNodeTitle() const { return _nodeTitle; }
|
|
|
|
void ElaNavigationNode::setIsExpanded(bool isExpanded) {
|
|
_isExpanded = isExpanded;
|
|
setChildVisible(isExpanded);
|
|
}
|
|
|
|
bool ElaNavigationNode::getIsExpanded() const { return _isExpanded; }
|
|
|
|
void ElaNavigationNode::setChildVisible(bool isVisible) {
|
|
if (isVisible) {
|
|
for (auto node : _pChildrenNodes) {
|
|
node->setIsVisible(isVisible);
|
|
if (node->getIsExpanderNode() && !node->getIsExpanded()) {
|
|
continue;
|
|
}
|
|
node->setChildVisible(isVisible);
|
|
}
|
|
} else {
|
|
for (auto node : _pChildrenNodes) {
|
|
node->setChildVisible(isVisible);
|
|
node->setIsVisible(isVisible);
|
|
}
|
|
}
|
|
}
|
|
|
|
bool ElaNavigationNode::getIsHasChild() const {
|
|
if (_pChildrenNodes.count() > 0) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool ElaNavigationNode::getIsHasPageChild() const {
|
|
if (_pChildrenNodes.count() == 0) {
|
|
return false;
|
|
}
|
|
for (auto childNode : _pChildrenNodes) {
|
|
if (!childNode->getIsExpanderNode()) {
|
|
return true;
|
|
}
|
|
if (childNode->getIsHasPageChild()) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void ElaNavigationNode::appendChildNode(ElaNavigationNode *childNode) {
|
|
if (_pIsExpanderNode) {
|
|
_pChildrenNodes.append(childNode);
|
|
}
|
|
}
|
|
|
|
void ElaNavigationNode::removeChildNode(ElaNavigationNode *childNode) {
|
|
if (_pIsExpanderNode) {
|
|
_pChildrenNodes.removeOne(childNode);
|
|
}
|
|
}
|
|
|
|
bool ElaNavigationNode::getIsChildHasKeyPoints() const {
|
|
for (auto childNnode : _pChildrenNodes) {
|
|
if (childNnode->getKeyPoints()) {
|
|
return true;
|
|
}
|
|
if (childNnode->getIsChildHasKeyPoints()) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
ElaNavigationNode *ElaNavigationNode::getOriginalNode() {
|
|
if (this->getParentNode()->getIsRootNode()) {
|
|
return this;
|
|
} else {
|
|
ElaNavigationNode *originalNode = this->getParentNode();
|
|
while (!originalNode->getIsRootNode() && !originalNode->getParentNode()->getIsRootNode()) {
|
|
originalNode = originalNode->getParentNode();
|
|
}
|
|
return originalNode;
|
|
}
|
|
}
|
|
|
|
bool ElaNavigationNode::getIsChildNode(ElaNavigationNode *node) {
|
|
if (_pChildrenNodes.count() > 0) {
|
|
if (_pChildrenNodes.contains(node)) {
|
|
return true;
|
|
}
|
|
for (auto childNnode : _pChildrenNodes) {
|
|
if (childNnode->getIsChildNode(node)) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
int ElaNavigationNode::getRow() const {
|
|
if (_pParentNode) {
|
|
return _pParentNode->getChildrenNodes().indexOf(const_cast<ElaNavigationNode *>(this));
|
|
}
|
|
return 0;
|
|
}
|