StHandle<StFileNode> StFileNode::detach() const { StHandle<StFileNode> aCopy = new StFileNode(getPath()); aCopy->setMIME(getMIME()); for(size_t aSubId = 0; aSubId < size(); ++aSubId) { const StFileNode* aSubNode = getValue(aSubId); aCopy->add(new StFileNode(aSubNode->getSubPath(), aCopy.access())); } return aCopy; }
void StPlayList::loadRecentList(const StString theString) { StMutexAuto anAutoLock(myMutex); StArgumentsMap aMap; aMap.parseString(theString); myRecent.clear(); for(size_t anIter = 0; anIter < myRecentLimit; ++anIter) { const StArgument anArgFile = aMap[StString("file") + anIter]; const StArgument anArgLeft = aMap[StString("left") + anIter]; const StArgument anArgRight = aMap[StString("right") + anIter]; const StArgument anArgTime = aMap[StString("time") + anIter]; StHandle<StRecentItem> aRecent; if(anArgLeft.isValid() && anArgRight.isValid()) { StHandle<StFileNode> aFileNode = new StFileNode(StString()); aFileNode->add(new StFileNode(anArgLeft.getValue(), aFileNode.access())); aFileNode->add(new StFileNode(anArgRight.getValue(), aFileNode.access())); aRecent = addRecentFile(*aFileNode, false); } else if(anArgFile.isValid()) { StHandle<StFileNode> aFileNode = new StFileNode(anArgFile.getValue()); const StArgument anArgPos = aMap[StString("pos") + anIter]; if(anArgPos.isValid()) { aFileNode->add(new StFileNode(anArgPos.getValue(), aFileNode.access())); } aRecent = addRecentFile(*aFileNode, false); } if(aRecent.isNull()) { continue; } if(anArgTime.isValid()) { if(aRecent->Params.isNull()) { aRecent->Params = new StStereoParams(); } std::stringstream aStream; aStream.imbue(std::locale("C")); aStream << anArgTime.getValue().toCString(); aStream >> aRecent->Params->Timestamp; } } }