void FilesView::scanFiles() { DiZipArchive* zip = DiK2Configs::RESOURCE_PACK; if (!zip) return; DiTimer timer; mResources = nullptr; zip->GenerateFileTree(mResources, "*.mdf"); MyGUI::TreeControl::Node* root = mResourcesTree->getRoot(); root->removeAll(); DiFileTree* nullfile = nullptr; root->setData(nullfile); for (auto i = mResources->children.begin(); i != mResources->children.end(); ++i) { DiFileTree* cur = i->second; MyGUI::TreeControl::Node* pNode = new MyGUI::TreeControl::Node(cur->fileName.c_str(), cur->folder ? "Folder" : "File"); pNode->setData(cur); if (!cur->folder) pNode->setPrepared(true); root->add(pNode); } double loadingTime = timer.GetElapse(); DI_LOG("Zip files scanning time: %f", loadingTime); }
SampleLayout::SampleLayout() : BaseLayout("SampleLayout.layout") { assignWidget(mpResourcesTree, "ResourcesTree"); mpResourcesTree->eventTreeNodePrepare += newDelegate(this, &SampleLayout::notifyTreeNodePrepare); MyGUI::TreeControl::Node* pRoot = mpResourcesTree->getRoot(); /*#ifdef MYGUI_OGRE_PLATFORM Ogre::ArchiveManager::ArchiveMapIterator ArchiveIterator = Ogre::ArchiveManager::getSingleton().getArchiveIterator(); while (ArchiveIterator.hasMoreElements()) { Ogre::Archive* pArchive = ArchiveIterator.getNext(); MyGUI::TreeControl::Node* pNode = new MyGUI::TreeControl::Node(pArchive->getName(), "Data"); pNode->setData(pArchive); pRoot->add(pNode); } #else*/ common::VectorFileInfo result; common::getSystemFileList(result, gMediaBase, L"*.*"); for (common::VectorFileInfo::iterator item = result.begin(); item != result.end(); ++item) { if ((*item).name == L".." || (*item).name == L".") continue; MyGUI::TreeControl::Node* pNode = new MyGUI::TreeControl::Node((*item).name, "Data"); pNode->setData(PairFileInfo(gMediaBase, *item)); pRoot->add(pNode); } //#endif }
void FilesView::notifyTreeNodePrepare(MyGUI::TreeControl* pTreeControl, MyGUI::TreeControl::Node* pNode) { if (pNode == pTreeControl->getRoot()) return; pNode->removeAll(); DiFileTree* filetree = *(pNode->getData<DiFileTree*>()); for (auto i = filetree->children.begin(); i != filetree->children.end(); ++i) { DiFileTree* cur = i->second; MyGUI::TreeControl::Node* nd = new MyGUI::TreeControl::Node(cur->fileName.c_str(), cur->folder ? "Folder" : "File"); nd->setData(cur); if (!cur->folder) nd->setPrepared(true); pNode->add(nd); } }
void SampleLayout::notifyTreeNodePrepare(MyGUI::TreeControl* pTreeControl, MyGUI::TreeControl::Node* pNode) { if (pNode == pTreeControl->getRoot()) return; pNode->removeAll(); /*#ifdef MYGUI_OGRE_PLATFORM Ogre::Archive* pArchive = *(pNode->getData<Ogre::Archive*>()); MyGUI::UString strPath(getPath(pNode)); Ogre::StringVectorPtr Resources = pArchive->find(strPath + "*", false, true); for (Ogre::StringVector::iterator Iterator = Resources->begin(); Iterator != Resources->end(); ++Iterator) { MyGUI::TreeControl::Node* pChild = new MyGUI::TreeControl::Node(*Iterator, "Folder"); pChild->setData(pArchive); pNode->add(pChild); } Resources = pArchive->find(strPath + "*", false, false); for (Ogre::StringVector::iterator Iterator = Resources->begin(); Iterator != Resources->end(); ++Iterator) { MyGUI::UString strName(*Iterator); MyGUI::UString strExtension; size_t nPosition = strName.rfind("."); if (nPosition != MyGUI::UString::npos) { strExtension = strName.substr(nPosition + 1); std::transform(strExtension.begin(), strExtension.end(), strExtension.begin(), tolower); } MyGUI::UString strImage; if (strExtension == "png" || strExtension == "tif" || strExtension == "tiff" || strExtension == "jpg" || strExtension == "jpeg") strImage = "Image"; else if (strExtension == "mat" || strExtension == "material") strImage = "Material"; else if (strExtension == "layout") strImage = "Layout"; else if (strExtension == "ttf" || strExtension == "font" || strExtension == "fontdef") strImage = "Font"; else if (strExtension == "txt" || strExtension == "text") strImage = "Text"; else if (strExtension == "xml") strImage = "XML"; else if (strExtension == "mesh") strImage = "Mesh"; else if (strExtension == "htm" || strExtension == "html") strImage = "HTML"; else strImage = "Unknown"; MyGUI::TreeControl::Node* pChild = new MyGUI::TreeControl::Node(strName, strImage); pChild->setPrepared(true); pNode->add(pChild); } #else*/ PairFileInfo info = *(pNode->getData<PairFileInfo>()); // если папка, то добавляем детей if (info.second.folder) { std::wstring path = info.first + L"/" + info.second.name; common::VectorFileInfo result; common::getSystemFileList(result, path, L"*.*"); for (common::VectorFileInfo::iterator item = result.begin(); item != result.end(); ++item) { if ((*item).name == L".." || (*item).name == L".") continue; if ((*item).folder) { MyGUI::TreeControl::Node* pChild = new MyGUI::TreeControl::Node((*item).name, "Folder"); pChild->setData(PairFileInfo(path, *item)); pNode->add(pChild); } else { MyGUI::UString strName((*item).name); MyGUI::UString strExtension; size_t nPosition = strName.rfind("."); if (nPosition != MyGUI::UString::npos) { strExtension = strName.substr(nPosition + 1); std::transform(strExtension.begin(), strExtension.end(), strExtension.begin(), tolower); } MyGUI::UString strImage; if (strExtension == "png" || strExtension == "tif" || strExtension == "tiff" || strExtension == "jpg" || strExtension == "jpeg") strImage = "Image"; else if (strExtension == "mat" || strExtension == "material") strImage = "Material"; else if (strExtension == "layout") strImage = "Layout"; else if (strExtension == "ttf" || strExtension == "font" || strExtension == "fontdef") strImage = "Font"; else if (strExtension == "txt" || strExtension == "text") strImage = "Text"; else if (strExtension == "xml") strImage = "XML"; else if (strExtension == "mesh") strImage = "Mesh"; else if (strExtension == "htm" || strExtension == "html") strImage = "HTML"; else strImage = "Unknown"; MyGUI::TreeControl::Node* pChild = new MyGUI::TreeControl::Node((*item).name, strImage); pChild->setPrepared(true); pNode->add(pChild); } } } //#endif }