From 44732057b6816112e1a0bfe9bb0c4dca010a9b62 Mon Sep 17 00:00:00 2001 From: Anakin Date: Tue, 20 Jun 2017 11:41:10 +0200 Subject: [PATCH] using signal slot to update the combobox entries --- QtMeshViewer/Header/MainWindow.h | 12 ++++---- QtMeshViewer/Header/SettingsManager.h | 4 +++ QtMeshViewer/Source/MainWindow.cpp | 37 ++++++++++++++----------- QtMeshViewer/Source/SettingsManager.cpp | 3 +- 4 files changed, 33 insertions(+), 23 deletions(-) diff --git a/QtMeshViewer/Header/MainWindow.h b/QtMeshViewer/Header/MainWindow.h index 25b4312..457e1b9 100644 --- a/QtMeshViewer/Header/MainWindow.h +++ b/QtMeshViewer/Header/MainWindow.h @@ -31,7 +31,6 @@ private: // functions private: void setupWidgets(); - void setupAssetLibrary(); void updateAssetTree(QString); void openFileDialog(); void openFile(QString); @@ -46,12 +45,13 @@ public slots: void printMessage(QString message, int severity); void setFileInfo(QString name, QVector* materials, int vertices, int triangle); +// private slots +private slots: + void setupAssetLibrary(); + void on_fileListWidget_doubleClicked(const QModelIndex &index); + void on_dirDropDownList_currentTextChanged(const QString &arg1); + // signals signals: void loadFile(QString); - -// private slots -private slots: - void on_fileListWidget_doubleClicked(const QModelIndex &index); - void on_dirDropDownList_currentTextChanged(const QString &arg1); }; diff --git a/QtMeshViewer/Header/SettingsManager.h b/QtMeshViewer/Header/SettingsManager.h index 93e4372..041d899 100644 --- a/QtMeshViewer/Header/SettingsManager.h +++ b/QtMeshViewer/Header/SettingsManager.h @@ -72,4 +72,8 @@ public: void setAutoColor(int value); void updateDirectories(QString path); + +// signals +signals: + void dirsChanged(); }; diff --git a/QtMeshViewer/Source/MainWindow.cpp b/QtMeshViewer/Source/MainWindow.cpp index f8d9d22..14ec8a1 100644 --- a/QtMeshViewer/Source/MainWindow.cpp +++ b/QtMeshViewer/Source/MainWindow.cpp @@ -58,6 +58,8 @@ MainWindow::MainWindow(QWidget *parent) // setup dropdown setupAssetLibrary(); + connect(SettingsManager::getInstance(), &SettingsManager::dirsChanged, this, &MainWindow::setupAssetLibrary); + printMessage("MeshViewer by Anakin", 0); } @@ -167,29 +169,17 @@ void MainWindow::setupWidgets() m_output->raise(); } -void MainWindow::setupAssetLibrary() -{ - // get all directories and put them in the dropdown. - QStringList tmp_list = SettingsManager::getInstance()->getListOfDirs(); - for (QString &it : tmp_list) - ui->dirDropDownList->addItem(it, it); - - // choose the current path and display it. - if (ui->dirDropDownList->currentData().isValid()) - updateAssetTree(ui->dirDropDownList->currentData().toString()); -} - void MainWindow::updateAssetTree(QString path) { ui->fileListWidget->clear(); m_Paths.clear(); - QDirIterator itterator(path, QStringList() << "*.msh" << "*.MSH" << "*.mesh" << "*.MESH", + QDirIterator itterator(path, QStringList() << "*.msh" << "*.MSH" << "*.mesh" << "*.MESH", QDir::Files, QDirIterator::Subdirectories); while (itterator.hasNext()) { - ui->fileListWidget->insertItem(0, new QListWidgetItem(itterator.fileName())); - m_Paths.prepend(itterator.fileInfo().absoluteFilePath()); - itterator.next(); + ui->fileListWidget->insertItem(0, new QListWidgetItem(itterator.fileName())); + m_Paths.prepend(itterator.fileInfo().absoluteFilePath()); + itterator.next(); } } @@ -242,6 +232,21 @@ void MainWindow::resizeEvent(QResizeEvent * e) ///////////////////////////////////////////////////////////////////////// // slots +void MainWindow::setupAssetLibrary() +{ + // get all directories and put them in the dropdown. + while (ui->dirDropDownList->count() != 0) + ui->dirDropDownList->removeItem(0); + + QStringList tmp_list = SettingsManager::getInstance()->getListOfDirs(); + for (QString &it : tmp_list) + ui->dirDropDownList->addItem(it, it); + + // choose the current path and display it. + if (ui->dirDropDownList->currentData().isValid()) + updateAssetTree(ui->dirDropDownList->currentData().toString()); +} + void MainWindow::on_fileListWidget_doubleClicked(const QModelIndex &index) { int slotVal = index.row(); diff --git a/QtMeshViewer/Source/SettingsManager.cpp b/QtMeshViewer/Source/SettingsManager.cpp index 40a1d72..5c04670 100644 --- a/QtMeshViewer/Source/SettingsManager.cpp +++ b/QtMeshViewer/Source/SettingsManager.cpp @@ -238,5 +238,6 @@ void SettingsManager::updateDirectories(QString path) m_listOfDirs.removeAll(path); else m_listOfDirs.append(path); -} + emit dirsChanged(); +}