void FormMain::selectFolders() { DialogInput d; if ( d.exec() ) setFolders( d.cur(), d.exc() ); }
// set path void FileStoreDialog::setPath(QString path, bool refresh) { QStringList errors; // keep a track of errors QString pathing; // keeping a track of the path we have followed // get root FileStoreEntry *fse = store->root(); // is it NULL!? if (fse == NULL) return; // get list of paths to travers QStringList paths = path.split("/"); // remove first and last blanks that are caused // by path beginning and ending in a "/" if (paths.count() && paths.first() == "") paths.removeAt(0); if (paths.count() && paths.last() == "") paths.removeAt(paths.count()-1); // start at root pathing = "/"; if (refresh || fse->initial == true) { fse->children = store->readdir(pathing, errors); if (errors.count() == 0) { fse->initial = false; // initialise the folders list setFolders(fse); } } // traverse the paths to the destination foreach(QString directory, paths) { // find the directory in children int index = fse->child(directory); // not found! if (index == -1) break; // update pathing if (!pathing.endsWith("/")) pathing += "/"; pathing += directory; // drop into directory and refresh if needed fse = fse->children[index]; if (refresh || fse->initial == true) { fse->children = store->readdir(pathing, errors); if (errors.count() == 0) fse->initial = false; } }