void VirtualDirectoryTree::BuildTree(const wxString& projName) { ProjectPtr proj = ManagerST::Get()->GetProject(projName); wxCHECK_RET(proj, "Can't find a Project with the supplied name"); ProjectTreePtr tree = proj->AsTree(); TreeWalker<wxString, ProjectItem> walker(tree->GetRoot()); for ( ; !walker.End(); walker++ ) { ProjectTreeNode* node = walker.GetNode(); wxString displayname(node->GetData().GetDisplayName()); if (node->GetData().GetKind() == ProjectItem::TypeVirtualDirectory) { wxString vdPath = displayname; ProjectTreeNode* tempnode = node->GetParent(); while (tempnode) { vdPath = tempnode->GetData().GetDisplayName() + ':' + vdPath; tempnode = tempnode->GetParent(); } VirtualDirectoryTree* parent = FindParent(vdPath.BeforeLast(':')); if (parent) { parent->StoreChild(displayname, vdPath); } else { // Any orphans must be root's top-level children, and we're root StoreChild(displayname, vdPath); } } } }
void CSkypeProto::UpdateProfileDisplayName(const JSONNode &root, MCONTACT hContact) { ptrT firstname(getTStringA(hContact, "FirstName")); ptrT lastname(getTStringA(hContact, "LastName")); if (firstname) { CMString nick = firstname; if (lastname) nick.AppendFormat(_T(" %s"), lastname); setTString(hContact, "Nick", nick); } else if (lastname) setTString(hContact, "Nick", lastname); else { const JSONNode &node = root["displayname"]; CMString displayname((!node) ? root["username"].as_mstring() : node.as_mstring()); if (!displayname.IsEmpty() && displayname != "null") setTString(hContact, "Nick", displayname); else delSetting(hContact, "Nick"); } }