コード例 #1
0
void FlatStyle_RDM::updateRefs()
{
	if(RsAutoUpdatePage::eventsLocked())
	{
		_needs_update = true ;
		return ;
	}

	RetroshareDirModel::preMods() ;

	static const uint32_t MAX_REFS_PER_SECOND = 2000 ;
	uint32_t nb_treated_refs = 0 ;

	while(!_ref_stack.empty())
	{
		void *ref = _ref_stack.back() ;
#ifdef RDM_DEBUG
		std::cerr << "FlatStyle_RDM::postMods(): poped ref " << ref << std::endl;
#endif
		_ref_stack.pop_back() ;
		uint32_t flags = DIR_FLAGS_DETAILS;
		DirDetails details ;

		if (requestDirDetails(ref, details, flags))
		{
			if(details.type == DIR_TYPE_FILE)		// only push files, not directories nor persons.
				_ref_entries.push_back(std::pair<void*,QString>(ref,computeDirectoryPath(details)));
#ifdef RDM_DEBUG
			std::cerr << "FlatStyle_RDM::postMods(): addign ref " << ref << std::endl;
#endif
			for(std::list<DirStub>::iterator it = details.children.begin(); it != details.children.end(); it++) 
				_ref_stack.push_back(it->ref) ;
		}
		if(++nb_treated_refs > MAX_REFS_PER_SECOND) 	// we've done enough, let's give back hand to 
		{															// the user and setup a timer to finish the job later.
			_needs_update = true ;

			if(visible())
				QTimer::singleShot(2000,this,SLOT(updateRefs())) ;
			else
				std::cerr << "Not visible: suspending update"<< std::endl;
			break ;
		}
	}
	std::cerr << "reference tab contains " << _ref_entries.size() << " files" << std::endl;

	if(_ref_stack.empty())
		_needs_update = false ;

	RetroshareDirModel::postMods() ;
}
コード例 #2
0
void FlatStyle_RDM::postMods()
{
	if(visible())
	{
		_ref_entries.clear() ;
		_ref_stack.clear() ;

		_ref_stack.push_back(NULL) ; // init the stack with the topmost parent directory

		std::cerr << "FlatStyle_RDM::postMods(): cleared ref entries" << std::endl;
		_needs_update = false ;
		updateRefs() ;
	}
	else
		_needs_update = true ;
}
コード例 #3
0
ファイル: MFilesUpdate.cpp プロジェクト: Keedu/maratis
void MFilesUpdate::update(void)
{
	MEngine * engine = MEngine::getInstance();
	MLevel * level = engine->getLevel();

	MDataManager * textureManager = level->getTextureManager();
	MDataManager * shaderManager = level->getShaderManager();
	MDataManager * soundManager = level->getSoundManager();
	MDataManager * meshManager = level->getMeshManager();
	MDataManager * armatureAnimManager = level->getArmatureAnimManager();
	MDataManager * texturesAnimManager = level->getTexturesAnimManager();
	MDataManager * materialsAnimManager = level->getMaterialsAnimManager();

	updateRefs(textureManager);
	updateRefs(shaderManager);
	updateRefs(meshManager);
	updateRefs(soundManager);
	updateRefs(armatureAnimManager);
	updateRefs(texturesAnimManager);
	updateRefs(materialsAnimManager);
}