From d81968df510b3f8de66656fc409e412ad1e177ef Mon Sep 17 00:00:00 2001 From: stojce Date: Sat, 11 Jan 2014 15:30:03 +0100 Subject: [PATCH] refactoring --- interface/src/ImportDialog.cpp | 116 ++++++++++++++++----------------- interface/src/ImportDialog.h | 1 + 2 files changed, 57 insertions(+), 60 deletions(-) diff --git a/interface/src/ImportDialog.cpp b/interface/src/ImportDialog.cpp index 3788c19d86..dc05204804 100644 --- a/interface/src/ImportDialog.cpp +++ b/interface/src/ImportDialog.cpp @@ -10,12 +10,7 @@ #include #include #include -#include -#include -#include - #include -#include #include #include #include @@ -24,10 +19,6 @@ const QString WINDOW_NAME = QObject::tr("Import Voxels"); const QString IMPORT_BUTTON_NAME = QObject::tr("Import"); const QString IMPORT_INFO = QObject::tr("Import %1 as voxels"); const QString CANCEL_BUTTON_NAME = QObject::tr("Cancel"); -const QString IMPORT_FILE_TYPES = QObject::tr("Sparse Voxel Octree Files, " - "Square PNG, " - "Schematic Files " - "(*.svo *.png *.schematic)"); const QString INFO_LABEL_TEXT = QObject::tr("This will load selected file into Hifi and\n" "allow you to place it with Command V"); @@ -88,59 +79,16 @@ QIcon HiFiIconProvider::icon(const QFileInfo &info) const { return QIcon("resources/icons/file.svg"); } -ImportDialog::ImportDialog(QWidget *parent) : QFileDialog(parent, WINDOW_NAME, DESKTOP_LOCATION, NULL), -_importButton(IMPORT_BUTTON_NAME, this), -_cancelButton(CANCEL_BUTTON_NAME, this) { +ImportDialog::ImportDialog(QWidget *parent) : + QFileDialog(parent, WINDOW_NAME, DESKTOP_LOCATION, NULL), + _importButton(IMPORT_BUTTON_NAME, this), + _cancelButton(CANCEL_BUTTON_NAME, this) { setOption(QFileDialog::DontUseNativeDialog, true); setFileMode(QFileDialog::ExistingFile); setViewMode(QFileDialog::Detail); - switchToResourcesParentIfRequired(); - QFile config("resources/config/config.json"); - config.open(QFile::ReadOnly | QFile::Text); - QJsonDocument document = QJsonDocument::fromJson(config.readAll()); - if (!document.isNull() && !document.isEmpty()) { - - QString importFormatsInfo; - QStringList importFormatsFilterList; - QHash iconsMap; - - QJsonObject config = document.object(); - if (!config.isEmpty()) { - QJsonArray fileFormats = config["importFormats"].toArray(); - int ff = 0; - foreach (const QJsonValue& fileFormat, fileFormats) { - QJsonObject fileFormatObject = fileFormat.toObject(); - - QString ext(fileFormatObject["extension"].toString()); - QString description(fileFormatObject.value("description").toString()); - QString icon(fileFormatObject.value("icon").toString()); - - if (ff > 0) { - importFormatsInfo.append(","); - } - - if (ff == fileFormats.count() - 1) { - importFormatsInfo.append(" or"); - } - - importFormatsFilterList.append(QString("%1 (*.%2)").arg(description, ext)); - importFormatsInfo.append(" .").append(ext); - iconsMap[ext] = icon; - ff++; - } - } - - // set custom file icons - setIconProvider(new HiFiIconProvider(iconsMap)); - - setNameFilters(importFormatsFilterList); - - setLabelText(QFileDialog::LookIn, QString(IMPORT_INFO).arg(importFormatsInfo)); - setLabelText(QFileDialog::FileName, INFO_LABEL_TEXT); - - } + setImportTypes(); setLayout(); QGridLayout* gridLayout = (QGridLayout*) layout(); @@ -150,7 +98,6 @@ _cancelButton(CANCEL_BUTTON_NAME, this) { connect(&_importButton, SIGNAL(pressed()), SLOT(import())); connect(this, SIGNAL(currentChanged(QString)), SLOT(saveCurrentFile(QString))); connect(&_cancelButton, SIGNAL(pressed()), SLOT(close())); - } ImportDialog::~ImportDialog() { @@ -183,7 +130,7 @@ void ImportDialog::saveCurrentFile(QString filename) { _currentFile = filename; _importButton.setEnabled(true); } else { - _currentFile = ""; + _currentFile.clear(); _importButton.setEnabled(false); } } @@ -198,7 +145,7 @@ void ImportDialog::setLayout() { _importButton.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); _cancelButton.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - // hide unused embeded widgets in QFileDialog + // hide unused embedded widgets in QFileDialog QWidget* widget = findChild("lookInCombo"); widget->hide(); @@ -253,3 +200,52 @@ void ImportDialog::setLayout() { } } + +void ImportDialog::setImportTypes() { + + switchToResourcesParentIfRequired(); + QFile config("resources/config/config.json"); + config.open(QFile::ReadOnly | QFile::Text); + QJsonDocument document = QJsonDocument::fromJson(config.readAll()); + if (!document.isNull() && !document.isEmpty()) { + + QString importFormatsInfo; + QStringList importFormatsFilterList; + QHash iconsMap; + + QJsonObject configObject = document.object(); + if (!configObject.isEmpty()) { + QJsonArray fileFormats = configObject["importFormats"].toArray(); + int ff = 0; + foreach (const QJsonValue& fileFormat, fileFormats) { + QJsonObject fileFormatObject = fileFormat.toObject(); + + QString ext(fileFormatObject["extension"].toString()); + QString description(fileFormatObject.value("description").toString()); + QString icon(fileFormatObject.value("icon").toString()); + + if (ff > 0) { + importFormatsInfo.append(","); + } + + // set ' or' on last import type text + if (ff == fileFormats.count() - 1) { + importFormatsInfo.append(" or"); + } + + importFormatsFilterList.append(QString("%1 (*.%2)").arg(description, ext)); + importFormatsInfo.append(" .").append(ext); + iconsMap[ext] = icon; + ff++; + } + } + + // set custom file icons + setIconProvider(new HiFiIconProvider(iconsMap)); + + setNameFilters(importFormatsFilterList); + + setLabelText(QFileDialog::LookIn, QString(IMPORT_INFO).arg(importFormatsInfo)); + setLabelText(QFileDialog::FileName, INFO_LABEL_TEXT); + } +} diff --git a/interface/src/ImportDialog.h b/interface/src/ImportDialog.h index b32b104408..8dc9bda7d1 100644 --- a/interface/src/ImportDialog.h +++ b/interface/src/ImportDialog.h @@ -54,6 +54,7 @@ private: QPushButton _cancelButton; void setLayout(); + void setImportTypes(); }; #endif /* defined(__hifi__ImportDialog__) */