Implemented recursive scan for mesh files on selection of dir path. Setup name instead of full path in list.
This commit is contained in:
		@@ -11,6 +11,9 @@
 | 
			
		||||
#include <QMessageBox>
 | 
			
		||||
#include <QPalette>
 | 
			
		||||
#include <QResizeEvent>
 | 
			
		||||
#include <QDirIterator>
 | 
			
		||||
 #include <QFileInfo>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define WINDOW_NAME "Mesh Viewer"
 | 
			
		||||
 | 
			
		||||
@@ -42,18 +45,10 @@ MainWindow::MainWindow(QWidget *parent)
 | 
			
		||||
	// set default text to file info
 | 
			
		||||
	m_fileInfo = "Filename: -\nMaterials: -\nVertices: -\nTriangle: -<detail>No file is open";
 | 
			
		||||
 | 
			
		||||
	// set filter and apply drop down tabs/links
 | 
			
		||||
	m_filters << "*.msh" << "*.MSH" << "*.mesh" << "*.MESH";
 | 
			
		||||
	m_fmodel = new QFileSystemModel(this);
 | 
			
		||||
	m_fmodel->setNameFilters(m_filters);
 | 
			
		||||
	m_fmodel->setFilter(QDir::NoDotAndDotDot | QDir::Files);
 | 
			
		||||
	m_fmodel->setNameFilterDisables(false);
 | 
			
		||||
 | 
			
		||||
	ui->dirDropDownList->addItem("BF1_ModTools", "C:/BF1_ModTools/Assets/Shipped Worlds/"); // temp here
 | 
			
		||||
	ui->dirDropDownList->addItem("BF2_ModTools", "C:/BF2_ModTools/assets/Sides/");  // temp here
 | 
			
		||||
	ui->dirDropDownList->addItem("BF1_ModTools", "C:/BF1_ModTools/Assets/Shipped Worlds/");
 | 
			
		||||
	ui->dirDropDownList->addItem("BF2_ModTools", "C:/BF2_ModTools/assets/Sides/");
 | 
			
		||||
 | 
			
		||||
	// add widgets to the window
 | 
			
		||||
	// the settingsmanger is alive now. So use it ;)
 | 
			
		||||
	setupWidgets();
 | 
			
		||||
 | 
			
		||||
	// load stylesheet
 | 
			
		||||
@@ -61,6 +56,7 @@ MainWindow::MainWindow(QWidget *parent)
 | 
			
		||||
	styleSheet.open(QIODevice::ReadOnly);
 | 
			
		||||
	this->setStyleSheet(styleSheet.readAll());
 | 
			
		||||
 | 
			
		||||
	// setup dropdown
 | 
			
		||||
	setupAssetLibrary();
 | 
			
		||||
	printMessage("MeshViewer by Anakin", 0);
 | 
			
		||||
}
 | 
			
		||||
@@ -185,30 +181,17 @@ void MainWindow::setupAssetLibrary()
 | 
			
		||||
 | 
			
		||||
void MainWindow::updateAssetTree(QString path)
 | 
			
		||||
{
 | 
			
		||||
	// TODO: deep search seams to be missing.
 | 
			
		||||
	// take a look at the search MeshFiles function. I already implemented something like
 | 
			
		||||
	// that but never finsihed. But you can use this function. Just adjust it as it fits
 | 
			
		||||
	// to the m_fmodel. I never used those model based trees before.
 | 
			
		||||
	m_fmodel->setRootPath(path);
 | 
			
		||||
	ui->fileListView->setModel(m_fmodel);
 | 
			
		||||
	ui->fileListView->setRootIndex(m_fmodel->index(path));
 | 
			
		||||
}
 | 
			
		||||
	ui->fileListWidget->clear();
 | 
			
		||||
	m_Paths.clear();
 | 
			
		||||
 | 
			
		||||
void MainWindow::searchMeshFiles(QString path)
 | 
			
		||||
{
 | 
			
		||||
	QDir directory(path);
 | 
			
		||||
	directory.setNameFilters(QStringList("*.msh"));
 | 
			
		||||
	QDirIterator itterator(path, QStringList() << "*.msh" << "*.MSH" << "*.mesh" << "*.MESH",
 | 
			
		||||
												  QDir::Files, QDirIterator::Subdirectories);
 | 
			
		||||
 | 
			
		||||
	QStringList childDirectories = directory.entryList(QDir::AllDirs | QDir::NoDotAndDotDot);
 | 
			
		||||
 | 
			
		||||
	QStringList fileNames = directory.entryList(QDir::Files);
 | 
			
		||||
 | 
			
		||||
	for (auto &it : childDirectories)
 | 
			
		||||
		qDebug() << it;
 | 
			
		||||
 | 
			
		||||
	for (auto &it : fileNames)
 | 
			
		||||
		qDebug() << it;
 | 
			
		||||
	while (itterator.hasNext()) {
 | 
			
		||||
 | 
			
		||||
		ui->fileListWidget->insertItem(0, new QListWidgetItem(itterator.fileName()));
 | 
			
		||||
		m_Paths.append(itterator.next());
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MainWindow::openFileDialog()
 | 
			
		||||
@@ -260,9 +243,10 @@ void MainWindow::resizeEvent(QResizeEvent * e)
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// slots
 | 
			
		||||
 | 
			
		||||
void MainWindow::on_fileListView_doubleClicked(const QModelIndex &index)
 | 
			
		||||
void MainWindow::on_fileListWidget_doubleClicked(const QModelIndex &index)
 | 
			
		||||
{
 | 
			
		||||
	QString clickedFile = m_fmodel->fileInfo(index).absoluteFilePath();
 | 
			
		||||
	int slotVal = index.row();
 | 
			
		||||
	QString clickedFile = m_Paths.at(slotVal);
 | 
			
		||||
	openFile(clickedFile);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -414,4 +398,3 @@ void MainWindow::setFileInfo(QString name, QVector<Material>* materials, int ver
 | 
			
		||||
	m_infoWindow->setDetailText(QString(m_fileInfo.right(m_fileInfo.size() - m_fileInfo.indexOf("<detail>") - 8)));
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user