void dragTarget::recursivePopulate ( QTreeWidgetItem *folder ) //questa funzione è molto simile a quella precedente a parte qualche differenza per la ricorsione { QString folderPath = folder -> text ( 1 ) + folder -> text ( 0 ); //QMessageBox::information(this, "DEBUG", folderPath); QDir folderDir ( folderPath ); QStringList folderEntries; /**QDir::Filters filtri = sourceView -> filters(); if(filtri.testFlag(QDir::Hidden) == true) folderEntries = folderDir.entryList (QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); else folderEntries = folderDir.entryList ( QDir::NoDotAndDotDot | QDir::AllDirs ); //elenchiamo le cartelle figlie**/ if(sourceView -> hiddenShown() == true ) folderEntries = folderDir.entryList (QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); else folderEntries = folderDir.entryList ( QDir::NoDotAndDotDot | QDir::AllDirs ); //elenchiamo le cartelle figlie //scansione delle cartelle QString joint = folderEntries.join ( " " ); for ( int i = 0; i < folderEntries.size(); i++ ) { QTreeWidgetItem *child = new QTreeWidgetItem ( folder ); child -> setText ( 0, folderEntries[i] ); child -> setText ( 1, folderPath+"/" ); child -> setText ( 2, "inode/directory" ); child -> setIcon ( 0, KIcon ( "inode-directory" ) ); recursivePopulate ( child ); } /**if(filtri.testFlag(QDir::Hidden) == true) folderEntries = folderDir.entryList ( QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden); else folderEntries = folderDir.entryList ( QDir::NoDotAndDotDot | QDir::Files ); //elenchiamo i file figli**/ if(sourceView -> hiddenShown() == true ) folderEntries = folderDir.entryList ( QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden); else folderEntries = folderDir.entryList ( QDir::NoDotAndDotDot | QDir::Files ); //elenchiamo i file figli for ( int i = 0; i < folderEntries.size(); i++ ) { QTreeWidgetItem *child = new QTreeWidgetItem ( folder ); child -> setText ( 0, folderEntries[i] ); child -> setText ( 1, folderPath +"/" ); //scriviamo le informazioni sulla dimensione QFile sizeInfo ( child -> text ( 1 ) + child -> text ( 0 ) ); child -> setText ( 3, KLocale("").formatByteSize(sizeInfo.size())); //usiamo la funzione della classe rar per la conversione della dimensione child -> setTextAlignment ( 3, Qt::AlignRight | Qt::AlignVCenter ); //-----------------------------------------------------// //-------troviamo e impostiamo l'icona grazie al mime ricavato-----// //speziamo il nome del file per ricavare il mime QString mime = KMimeType::findByUrl(KUrl(folderEntries[i])) -> iconName(); ///fileItem.iconName(); child -> setIcon ( 0, KIcon ( mime ) ); //se sono riuscito a ricavare il mime setto l'icona child -> setText ( 2, KMimeType::findByUrl(KUrl(folderEntries[i])) -> name() ); //scrivo il mime nella colonna appropriata //----------------------------------------------------------------------// } }
void dragTarget::retrieveChildren ( QTreeWidgetItem *rootItem ) //si preoccupa di allocare tutti i figli a partire dall'elemento passato { QString rootPath = rootItem -> text ( 1 ) + rootItem -> text ( 0 ); //percorso completo del file QDir rootDir ( rootPath ); //scansione separata, una per le directory e l'altra per i figli QStringList rootEntries; ///QDir::Filters filtri = sourceView -> filters(); /**if(filtri.testFlag(QDir::Hidden) == true) rootEntries = rootDir.entryList (QDir::NoDotAndDotDot | QDir::AllDirs| QDir::Hidden); else rootEntries = rootDir.entryList ( QDir::NoDotAndDotDot | QDir::AllDirs); //elenchiamo le cartelle figlie**/ if(sourceView -> hiddenShown() == true) rootEntries = rootDir.entryList (QDir::NoDotAndDotDot | QDir::AllDirs| QDir::Hidden); else rootEntries = rootDir.entryList ( QDir::NoDotAndDotDot | QDir::AllDirs); //elenchiamo le cartelle figlie for ( int i = 0; i < rootEntries.size(); i++ ) { QTreeWidgetItem *child = new QTreeWidgetItem ( rootItem ); child -> setText ( 0, rootEntries[i] ); child -> setText ( 1, rootPath +"/" ); child -> setText ( 2, "inode/directory" ); child -> setIcon ( 0, KIcon ( "inode-directory" ) ); recursivePopulate ( child ); } /**if(filtri.testFlag(QDir::Hidden) == true) rootEntries = rootDir.entryList ( QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden); else rootEntries = rootDir.entryList (QDir::NoDotAndDotDot | QDir::Files); //elenchiamo le cartelle figlie**/ if(sourceView ->hiddenShown() == true) rootEntries = rootDir.entryList ( QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden); else rootEntries = rootDir.entryList (QDir::NoDotAndDotDot | QDir::Files); //elenchiamo le cartelle figlie for ( int i = 0; i < rootEntries.size(); i++ ) { QTreeWidgetItem *child = new QTreeWidgetItem ( rootItem ); child -> setText ( 0, rootEntries[i] ); child -> setText ( 1, rootPath +"/" ); //scriviamo le informazioni sulla dimensione QFile sizeInfo ( child -> text ( 1 ) + child -> text ( 0 ) ); child -> setText ( 3, KLocale("").formatByteSize(sizeInfo.size()) ); //usiamo la funzione della classe rar per la conversione della dimensione child -> setTextAlignment ( 3, Qt::AlignRight | Qt::AlignVCenter ); //-----------------------------------------------------// //-------troviamo e impostiamo l'icona grazie al mime ricavato-----// //speziamo il nome del file per ricavare il mime //----------------------------------------------------------------------// QString mime = KMimeType::findByUrl(KUrl(rootEntries[i])) -> iconName();///fileItem.iconName(); child -> setIcon ( 0, KIcon ( mime ) ); //se sono riuscito a ricavare il mime setto l'icona child -> setText ( 2, KMimeType::findByUrl(KUrl(rootEntries[i])) -> name() ); //scrivo il mime nella colonna appropriata } }
Game::Game(void) { // Build the tree: auto top=tree_.begin(); PositionedCurl child; // Add the root node: auto root = tree_.insert(top, child); // Add children: recursivePopulate(root); /* auto child2 = tree_.append_child(root, child); auto child3 = tree_.append_child(child2, child); auto child4 = tree_.append_child(child3, child); */ }
void Game::recursivePopulate(CurlTree::iterator & it) { if(tree_.depth(it)>4) { return; } for(int i=0; i<3; i++) { if(rand() % 5 == 0) { continue; } float randomAngle = distribution(engine); PositionedCurl p(randomAngle*0.9f, /*rand() % 2 == 0 ? */Curl::Direction::Clockwise/* :Curl::Direction::AntiClockwise*/); CurlTree::iterator ci = tree_.append_child(it, p); recursivePopulate(ci); } }