diff --git a/interface/src/ImportDialog.cpp b/interface/src/ImportDialog.cpp index c3f499b038..ec64b84e63 100644 --- a/interface/src/ImportDialog.cpp +++ b/interface/src/ImportDialog.cpp @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -20,38 +19,38 @@ 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 INFO_LABEL_TEXT = QObject::tr("
" - "This will load the selected file into Hifi and allow you
" - "to place it with %1-V; you must be in select or
" - "add mode (S or V keys will toggle mode) to place.
"); + "This will load the selected file into Hifi and allow you
" + "to place it with %1-V; you must be in select or
" + "add mode (S or V keys will toggle mode) to place."); const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); const int SHORT_FILE_EXTENSION = 4; const int SECOND_INDEX_LETTER = 1; QIcon HiFiIconProvider::icon(QFileIconProvider::IconType type) const { - + switchToResourcesParentIfRequired(); - + // types // Computer, Desktop, Trashcan, Network, Drive, Folder, File QString typeString; - + switch (type) { case QFileIconProvider::Computer: typeString = "computer"; break; - + case QFileIconProvider::Desktop: typeString = "desktop"; break; - + case QFileIconProvider::Trashcan: case QFileIconProvider::Network: case QFileIconProvider::Drive: case QFileIconProvider::Folder: typeString = "folder"; break; - + default: typeString = "file"; break; @@ -63,7 +62,7 @@ QIcon HiFiIconProvider::icon(QFileIconProvider::IconType type) const { QIcon HiFiIconProvider::icon(const QFileInfo &info) const { switchToResourcesParentIfRequired(); const QString ext = info.suffix().toLower(); - + if (info.isDir()) { if (info.absoluteFilePath() == QDir::homePath()) { return QIcon("resources/icons/home.svg"); @@ -74,12 +73,12 @@ QIcon HiFiIconProvider::icon(const QFileInfo &info) const { } return QIcon("resources/icons/folder.svg"); } - + QFileInfo iconFile("resources/icons/" + iconsMap[ext]); if (iconFile.exists() && iconFile.isFile()) { return QIcon(iconFile.filePath()); } - + return QIcon("resources/icons/file.svg"); } @@ -99,7 +98,7 @@ 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); @@ -111,16 +110,18 @@ ImportDialog::ImportDialog(QWidget* parent) : #endif QLabel* infoLabel = new QLabel(QString(INFO_LABEL_TEXT).arg(cmdString)); infoLabel->setObjectName("infoLabel"); - + QGridLayout* gridLayout = (QGridLayout*) layout(); gridLayout->addWidget(infoLabel, 2, 0, 2, 1); gridLayout->addWidget(&_cancelButton, 2, 1, 2, 1); gridLayout->addWidget(&_importButton, 2, 2, 2, 1); - + setImportTypes(); setLayout(); connect(&_importButton, SIGNAL(pressed()), SLOT(import())); + connect(this, SIGNAL(currentChanged(QString)), SLOT(saveCurrentFile(QString))); + connect(&_cancelButton, SIGNAL(pressed()), SLOT(close())); connect(this, SIGNAL(currentChanged(QString)), SLOT(saveCurrentFile(QString))); } @@ -131,7 +132,6 @@ ImportDialog::~ImportDialog() { void ImportDialog::import() { emit accepted(); - close(); } void ImportDialog::accept() { @@ -163,72 +163,72 @@ void ImportDialog::saveCurrentFile(QString filename) { } void ImportDialog::setLayout() { - + // set ObjectName used in qss for styling _importButton.setObjectName("importButton"); _cancelButton.setObjectName("cancelButton"); - + // set fixed size _importButton.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); _cancelButton.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - + // hide unused embedded widgets in QFileDialog QWidget* widget = findChild("lookInCombo"); widget->hide(); - + widget = findChild("backButton"); widget->hide(); - + widget = findChild("forwardButton"); widget->hide(); - + widget = findChild("toParentButton"); widget->hide(); - + widget = findChild("newFolderButton"); widget->hide(); - + widget = findChild("listModeButton"); widget->hide(); - + widget = findChild("detailModeButton"); widget->hide(); - + widget = findChild("fileNameEdit"); widget->hide(); - + widget = findChild("fileTypeCombo"); widget->hide(); - + widget = findChild("fileTypeLabel"); widget->hide(); - + widget = findChild("fileNameLabel"); widget->hide(); - + widget = findChild("buttonBox"); widget->hide(); - + QSplitter* splitter = findChild("splitter"); splitter->setHandleWidth(0); - + // remove blue outline on Mac widget = findChild("sidebar"); widget->setAttribute(Qt::WA_MacShowFocusRect, false); - + widget = findChild("treeView"); widget->setAttribute(Qt::WA_MacShowFocusRect, false); - + // remove reference to treeView widget = NULL; widget->deleteLater(); - + switchToResourcesParentIfRequired(); QFile styleSheet("resources/styles/import_dialog.qss"); if (styleSheet.open(QIODevice::ReadOnly)) { setStyleSheet(styleSheet.readAll()); } - + } void ImportDialog::setImportTypes() { @@ -251,7 +251,6 @@ void ImportDialog::setImportTypes() { QJsonObject fileFormatObject = fileFormat.toObject(); QString ext(fileFormatObject["extension"].toString()); - QString description(fileFormatObject.value("description").toString()); QString icon(fileFormatObject.value("icon").toString()); if (formatsCounter > 0) { @@ -273,7 +272,7 @@ void ImportDialog::setImportTypes() { // set custom file icons setIconProvider(new HiFiIconProvider(iconsMap)); setNameFilter(importFormatsFilterList); - + #ifdef Q_OS_MAC QString cmdString = ("Command"); #else diff --git a/interface/src/VoxelImporter.cpp b/interface/src/VoxelImporter.cpp index 49b28c850f..0011b0abb7 100644 --- a/interface/src/VoxelImporter.cpp +++ b/interface/src/VoxelImporter.cpp @@ -102,7 +102,22 @@ int VoxelImporter::preImport() { if (!QFileInfo(filename).isFile()) { return 0; } - + + _filename = filename; + + if (_nextTask) { + delete _nextTask; + } + + _nextTask = new ImportTask(_filename); + connect(_nextTask, SIGNAL(destroyed()), SLOT(launchTask())); + + if (_currentTask != NULL) { + _voxelTree.cancelImport(); + } else { + launchTask(); + } + return 1; }