Exemple #1
0
struct treeNode* findChildNode(Tree* tree ,struct Node* ptr, void* key){
	ptr = ptr->value->child;
	while(ptr != NULL){
		if(tree->comparatorFun(ptr->value->employee ,key))return ptr->value;
		if(ptr->value->child != NULL && findChildNode(tree, ptr, key) != NULL){
			return findChildNode(tree, ptr, key);
		}
		ptr = ptr->next;
	}

	return NULL;
}
bool RangeProfilePlotManager::deserialize(SessionItemDeserializer& deserializer)
{
   XmlReader reader(NULL, false);
   DOMElement* pRootElement = deserializer.deserialize(reader, "RangeProfilePlotManager");
   if (pRootElement)
   {
      std::string viewId = A(pRootElement->getAttribute(X("viewId")));
      mpView = dynamic_cast<PlotView*>(Service<SessionManager>()->getSessionItem(viewId));

      mpPlot = Service<DesktopServices>()->createPlotWidget(getName(), CARTESIAN_PLOT);
      VERIFY(mpPlot);
      Serializable* pPlotSer = dynamic_cast<Serializable*>(mpPlot); // The imp side is serializable
      VERIFY(pPlotSer);
      if (!pPlotSer->fromXml(findChildNode(pRootElement, "plot"), reader.VERSION))
      {
         return false;
      }

      mpView = mpPlot->getPlot();
      VERIFY(mpView);
      Serializable* pPlotViewSer = dynamic_cast<Serializable*>(mpView); // The imp side is serializable
      VERIFY(pPlotViewSer);
      if (!pPlotViewSer->fromXml(findChildNode(pRootElement, "plotView"), reader.VERSION))
      {
         return false;
      }

      std::list<PlotObject*> objects;
      mpView->getObjects(POINT_SET, objects);
      FOR_EACH_DOMNODE(pRootElement, pChild)
      {
         if (XMLString::equals(pChild->getNodeName(), X("signature")))
         {
            DOMElement* pChldElmnt = static_cast<DOMElement*>(pChild);
            std::string sigId = A(pChldElmnt->getAttribute(X("sigId")));
            std::string pointSetName = A(pChldElmnt->getAttribute(X("pointSetName")));
            Signature* pSignature = static_cast<Signature*>(Service<SessionManager>()->getSessionItem(sigId));
            if (pSignature == NULL)
            {
               return false;
            }
            mSigPointSets[pSignature] = pointSetName;
            pSignature->attach(SIGNAL_NAME(Subject, Deleted), Slot(this, &RangeProfilePlotManager::signatureDeleted));
            pSignature->getDataDescriptor()->attach(SIGNAL_NAME(DataDescriptor, Renamed),
               Slot(this, &RangeProfilePlotManager::signatureRenamed));
         }
      }
      deserializer.nextBlock();
      return DockWindowShell::deserialize(deserializer);
   }
   return false;
}
Exemple #3
0
Node::NodeSP Node::addChildNode(Node* child) {
    if(child != nullptr) {
        QString key(child->getName());
        NodeSP child_sp(child);
        mChildren.insert(std::make_pair(key, child_sp));
        child_sp->setParent(this);
        child_sp->initialize();

        if(!mIsEnabled)
            child->disable();

        return findChildNode(key, false);
    }
    else {
        return nullptr;
    }
}
Exemple #4
0
QStringList Bookmarks::bookmarkList(const QString &type)
{
    QStringList bookmarkedItemList;
    if (type == "Verses" || type == tr("Verses")) {
        QDomElement verseNode = findChildNode("folder", "Verses");
        if (!verseNode.isNull()) {
            QTreeWidgetItem* versesParentItem = m_domElementForItem.key(verseNode);
            if (versesParentItem) {
                int countOfChildren = versesParentItem->childCount();
                for (int i = 0; i < countOfChildren; ++i) {
                    QTreeWidgetItem* child = versesParentItem->child(i);
                    if (child) {
                        bookmarkedItemList << versesParentItem->child(i)->data(0, Qt::UserRole).toString();
                    }
                }
            }
        }
    }

    return bookmarkedItemList;
}
Exemple #5
0
//查找某号码
char *searchCallNumber(Tree *pTree, NodeType *callNum, int len)
{
	int i;
	TreeNode *ptempNode;

	if (pTree == NULL)
		return NULL;
	if (pTree->root == NULL)
		return NULL;

	ptempNode = pTree->root;
	if (ptempNode->val != callNum[0])
		return NULL;

	for (i=1; i<len; i++)
	{
		ptempNode = findChildNode(ptempNode, callNum[i]);
		if (ptempNode == NULL)
			return NULL;
	}

	printf("success.\n");
	return (char *)ptempNode->child; //最后一个节点child指针指向用户名,或数据结构
}
Exemple #6
0
void Node::removeChildNode(const QString name) {
    if(findChildNode(name, false) != nullptr) {
        findChildNode(name, false)->deinitialize(); // destroy recursively
        mChildren.erase(name);
    }
}
Exemple #7
0
//删除号码
BOOL delCallNumber(Tree *pTree, NodeType *callNum, int len)
{
	int i;
	int delIndex = 0;
	TreeNode *ptempNode;

	TreeNode *delList[CALL_NUM_LENGHT];
	BOOL hasBorther[CALL_NUM_LENGHT];
	memset(delList, 0, sizeof(delList));
	memset(hasBorther, 0, sizeof(hasBorther));

	if (pTree == NULL || callNum == NULL)
		return FALSE;

	delList[0] = pTree->root;
	if (delList[0] == NULL)
		return FALSE;
	if (delList[0]->val != callNum[0])
		return FALSE;

	for (i=1; i<CALL_NUM_LENGHT; i++)
	{
		ptempNode = findChildNode(delList[i-1], callNum[i]);
		if (ptempNode == NULL)
		{
			printf("\ncall number not exist.\n");
			return FALSE;
		}

		hasBorther[i] = delList[i-1]->child->brother != NULL ? TRUE : FALSE;
		delList[i] = ptempNode;
	}

	delIndex = getDelIndex(hasBorther, sizeof(hasBorther)/sizeof(hasBorther[0]));
	if (delIndex != -2)
	{	
		if (delIndex == -1)
		{
			pTree->root = NULL;
			ptempNode = delList[0];
		}
		else
		{
			//有兄弟节点
			ptempNode = findPreNode(delList[delIndex], delList[delIndex+1]);
			if (ptempNode == NULL)
				return FALSE;

			if (ptempNode == delList[delIndex]) //左
				delList[delIndex]->child = delList[delIndex+1]->brother;
			else
				ptempNode->brother = delList[delIndex+1]->brother;

			ptempNode = delList[delIndex+1];
		}

		while (ptempNode)
		{
			ptempNode = delChildNode(ptempNode);
		}
	}
	else
	{
		return FALSE;
	}


	return TRUE;
}
Exemple #8
0
bool Bookmarks::updateBookmarkState(const QString &type, const QVariant &data, bool state)
{
    if (type == "Verses" || type == tr("Verses")) {
        QDomElement verseNode = findChildNode("folder", "Verses");
        if (verseNode.isNull()) {
            QDomElement root = m_domDocument.createElement("folder");
            QDomElement child = m_domDocument.createElement("title");
            QDomText newTitleText = m_domDocument.createTextNode(tr("Verses"));
            root.setAttribute("folded", "no");
            child.appendChild(newTitleText);
            root.appendChild(child);
            m_domDocument.documentElement().appendChild(root);
            verseNode = root;
            parseFolderElement(root);
        }

        QTreeWidgetItem* parentItem = m_domElementForItem.key(verseNode);
        //REMOVE OPERATION
        if (!state) {
            int countOfChildren = parentItem->childCount();
            int numOfDel = 0;
            bool allMatchedRemoved = true;
            for (int i = 0; i < countOfChildren; ++i) {
                QTreeWidgetItem* childItem = parentItem->child(i);
                if (!childItem) {
                    continue;
                }

                if (childItem->data(0, Qt::UserRole).toString() == data.toStringList().at(0) + "|" + data.toStringList().at(1)) {
                    ++numOfDel;

                    if (unBookmarkItem(childItem)) {
                        --i; //because one of children was deleted
                        --countOfChildren;
                    }
                    else {
                        allMatchedRemoved = false;
                    }
                }
            }

            //allMatchedRemoved is false when at least one of
            // matched items are not deleted!!
            return allMatchedRemoved;
        }

        QDomElement bookmark = m_domDocument.createElement("bookmark");
        QDomElement bookmarkTitle = m_domDocument.createElement("title");
        QDomElement bookmarkDescription = m_domDocument.createElement("desc");
        QDomElement bookmarkInfo = m_domDocument.createElement("info");
        QDomElement infoMetaData = m_domDocument.createElement("metadata");

        infoMetaData.setAttribute("owner", "http://saaghar.pozh.org");
        QDomText bookmarkSaagharMetadata = m_domDocument.createTextNode(data.toStringList().at(0) + "|" + data.toStringList().at(1));
        infoMetaData.appendChild(bookmarkSaagharMetadata);
        bookmarkInfo.appendChild(infoMetaData);
        bookmark.appendChild(bookmarkTitle);
        bookmark.appendChild(bookmarkDescription);
        bookmark.appendChild(bookmarkInfo);
        verseNode.appendChild(bookmark);

        qDebug() << data << state;
        QDomElement firstChild = m_domDocument.documentElement().firstChildElement("folder");
        firstChild.text();
        QTreeWidgetItem* item = createItem(bookmark, parentItem);
        item->setIcon(0, m_bookmarkIcon);

        QString title = data.toStringList().at(2);
        item->setText(0, title);
        item->setToolTip(0, title);
        item->setData(0, Qt::UserRole, data.toStringList().at(0) + "|" + data.toStringList().at(1));
        item->setData(1, Qt::UserRole, data.toStringList().at(3));
        if (data.toStringList().size() == 5) {
            item->setText(1, data.toStringList().at(4));
            item->setToolTip(1, data.toStringList().at(4));
        }

        if (parentItem->childCount() == 1) {
            resizeColumnToContents(0);
            resizeColumnToContents(1);
        }

        return true;
    }

    //an unknown type!!
    return false;
}