diff options
author | Svetlana Abramenkova <sabramenkova@luxoft.com> | 2019-05-15 16:30:03 +0300 |
---|---|---|
committer | Svetlana Abramenkova <sabramenkova@luxoft.com> | 2019-05-15 16:35:01 +0300 |
commit | 57a01a6a87bdb33d73d6fbb6fe39d071d52522aa (patch) | |
tree | a844d3d3156c53f2f481bbfb5e73a8f827ef2e8b | |
parent | aa5b08501ef8fe1aabf85286c2d8c8fa697d956c (diff) |
Fix set imports to preferences from console
Change-Id: Iba70c12ee5dd418421365933477eef6d3d2e07b9
Fixed: AUTOSUITE-855
Reviewed-by: Nikolay Zamotaev <nzamotaev@luxoft.com>
-rw-r--r-- | src/bench/importpathoptionpage.cpp | 31 | ||||
-rw-r--r-- | src/bench/importpathoptionpage.h | 5 | ||||
-rw-r--r-- | src/bench/main.cpp | 12 | ||||
-rw-r--r-- | src/bench/mainwindow.cpp | 30 | ||||
-rw-r--r-- | src/bench/mainwindow.h | 12 | ||||
-rw-r--r-- | src/bench/optionsdialog.cpp | 5 | ||||
-rw-r--r-- | src/bench/optionsdialog.h | 2 |
7 files changed, 60 insertions, 37 deletions
diff --git a/src/bench/importpathoptionpage.cpp b/src/bench/importpathoptionpage.cpp index 6796aca..21edb84 100644 --- a/src/bench/importpathoptionpage.cpp +++ b/src/bench/importpathoptionpage.cpp @@ -38,16 +38,6 @@ ImportPathOptionPage::ImportPathOptionPage(QWidget *parent) : ui(new Ui::ImportPathOptionPage) { ui->setupUi(this); - QSettings s; - int count = s.beginReadArray("imports"); - QListWidgetItem *item; - for (int i=0; i<count; i++) { - s.setArrayIndex(i); - item = new QListWidgetItem(s.value("path").toString()); - item->setFlags(item->flags () | Qt::ItemIsEditable); - ui->importList->addItem(item); - } - s.endArray(); connect(ui->addButton, &QAbstractButton::clicked, this, &ImportPathOptionPage::addItem); connect(ui->removeButton, &QAbstractButton::clicked, this, &ImportPathOptionPage::removeItem); @@ -62,15 +52,10 @@ ImportPathOptionPage::~ImportPathOptionPage() void ImportPathOptionPage::apply() { QStringList paths; - QSettings s; - s.beginWriteArray("imports"); - for (int i=0; i<ui->importList->count(); i++) { - QString path(ui->importList->item(i)->text()); - paths << path; - s.setArrayIndex(i); - s.setValue("path", path); + for (int i = 0; i < ui->importList->count(); i++) { + paths << ui->importList->item(i)->text(); } - s.endArray(); + emit updateImportPaths(paths); } void ImportPathOptionPage::addItem() @@ -99,3 +84,13 @@ void ImportPathOptionPage::editItem() ui->importList->editItem(item); } } + +void ImportPathOptionPage::setImports(const QStringList &imports) +{ + QListWidgetItem *item; + for (int i = 0; i < imports.count(); i++) { + item = new QListWidgetItem(imports.at(i)); + item->setFlags(item->flags () | Qt::ItemIsEditable); + ui->importList->addItem(item); + } +} diff --git a/src/bench/importpathoptionpage.h b/src/bench/importpathoptionpage.h index 8a57d6a..2000b9f 100644 --- a/src/bench/importpathoptionpage.h +++ b/src/bench/importpathoptionpage.h @@ -50,6 +50,11 @@ public: explicit ImportPathOptionPage(QWidget *parent = 0); ~ImportPathOptionPage(); void apply(); + void setImports(const QStringList &imports); + +signals: + void updateImportPaths(const QStringList &imports); + private slots: void addItem(); void removeItem(); diff --git a/src/bench/main.cpp b/src/bench/main.cpp index 292f289..8ca51c0 100644 --- a/src/bench/main.cpp +++ b/src/bench/main.cpp @@ -458,16 +458,10 @@ void MasterApplication::applyOptions(const Options &options) LiveHubEngine::setMaximumWatches(options.maximumWatches()); if (!options.project().isEmpty()) { - if (m_window->isInitialized()) + if (!m_window->isInitialized()) m_window->setProject(options.project()); - else { - ProjectManager pr; - if (pr.read(options.project())) { - m_window->setWorkspace(pr.workspace()); - m_window->setImportPaths(pr.imports()); - m_window->activateDocument(LiveDocument(pr.mainDocument())); - } - } + else + qDebug() << "Ignoring attempt to set project file after initialization."; } if (!options.workspace().isEmpty()) diff --git a/src/bench/mainwindow.cpp b/src/bench/mainwindow.cpp index dbebae0..15fcdac 100644 --- a/src/bench/mainwindow.cpp +++ b/src/bench/mainwindow.cpp @@ -106,6 +106,7 @@ MainWindow::MainWindow(QWidget *parent) , m_node(new BenchLiveNodeEngine(this)) , m_newProjectWizard(new NewProjectWizard(this)) , m_projectManager(new ProjectManager(this)) + , m_imports (nullptr) { setupContent(); setupMenuBar(); @@ -388,7 +389,7 @@ void MainWindow::init() m_workspace->activateRootPath(); } - resetImportPaths(); + restoreImportPathsFromSettings(); m_hostModel->restoreFromSettings(&s); restoreState(s.value("windowState").toByteArray()); @@ -415,20 +416,32 @@ void MainWindow::writeSettings() s.endArray(); m_hostModel->saveToSettings(&s); + + if (m_imports != nullptr) { + s.beginWriteArray("imports"); + int j = 0; + for (auto i = m_imports->begin(); i != m_imports->end(); i++, j++) { + s.setArrayIndex(j); + s.setValue("path", *i); + } + s.endArray(); + } } -void MainWindow::resetImportPaths() +void MainWindow::restoreImportPathsFromSettings() { - QStringList importPaths; + if (m_imports == nullptr) + m_imports = new QSet<QString>(); + QSettings s; int count = s.beginReadArray("imports"); for (int i=0; i<count; i++) { s.setArrayIndex(i); - importPaths.append(s.value("path").toString()); + m_imports->insert(s.value("path").toString()); } s.endArray(); - setImportPaths(importPaths); + m_node->qmlEngine()->setImportPathList(m_imports->toList() + m_qmlDefaultimportList); } void MainWindow::setupToolBar() @@ -501,6 +514,10 @@ void MainWindow::setPluginPath(const QString &path) void MainWindow::setImportPaths(const QStringList &pathList) { + if (m_imports == nullptr) + m_imports = new QSet<QString>(); + *m_imports = QSet<QString>::fromList(pathList); + m_node->qmlEngine()->setImportPathList(pathList + m_qmlDefaultimportList); } @@ -556,13 +573,14 @@ void MainWindow::openPreferences(Host *host) { OptionsDialog dialog; connect(&dialog, &OptionsDialog::hideNonQMLFiles, m_workspace, &WorkspaceView::hideNonQMLFiles); + connect(&dialog, &OptionsDialog::updateImportPaths, this, &MainWindow::setImportPaths); dialog.setHostModel(m_hostModel); dialog.setDiscoveredHostsModel(m_discoveryManager->discoveredHostsModel()); + dialog.setImports(m_imports->toList()); if (host) dialog.openHostConfig(host); if (dialog.exec()) { - resetImportPaths(); m_discoveryManager->rescan(); } } diff --git a/src/bench/mainwindow.h b/src/bench/mainwindow.h index d92868f..833b53d 100644 --- a/src/bench/mainwindow.h +++ b/src/bench/mainwindow.h @@ -65,7 +65,6 @@ public: void activateDocument(const LiveDocument &path); void setWorkspace(const QString& path, bool activateRootPath = true); void setPluginPath(const QString& path); - void setImportPaths(const QStringList& pathList); void setStaysOnTop(bool enabled); void setProject(const QString& projectFile); void init(); @@ -74,9 +73,13 @@ public: HostModel *hostModel() const { return m_hostModel; } HostManager *hostManager() const { return m_hostManager; } +public slots: + void setImportPaths(const QStringList& pathList); + protected: void closeEvent(QCloseEvent *event); void showEvent(QShowEvent *event); + private: void setupContent(); void setupWorkspaceView(); @@ -85,8 +88,10 @@ private: void setupToolBar(); void setupMenuBar(); void writeSettings(); - void resetImportPaths(); + void restoreImportPathsFromSettings(); void openProjectFile(const QString& path); + void saveImportPathToSettings(const QString& path); + private slots: void resizeToFit(); void takeSnapshot(); @@ -101,9 +106,7 @@ private slots: void openProject(); void newProjectWizard(); void newProject(); - void onActiveWindowChanged(QQuickWindow *activeWindow); - void onLogWidgetAdded(QDockWidget* logDock); private: @@ -139,4 +142,5 @@ private: QAction *m_createProject; NewProjectWizard *m_newProjectWizard; ProjectManager *m_projectManager; + QSet<QString> *m_imports; }; diff --git a/src/bench/optionsdialog.cpp b/src/bench/optionsdialog.cpp index 4ae3dd3..82c6223 100644 --- a/src/bench/optionsdialog.cpp +++ b/src/bench/optionsdialog.cpp @@ -71,6 +71,7 @@ OptionsDialog::OptionsDialog(QWidget *parent) connect(ui->optionsView, &QListWidget::currentItemChanged, this, &OptionsDialog::optionSelected); connect(m_appearanceForm, &AppearanceOptionPage::hideNonQMLFiles, this, &OptionsDialog::hideNonQMLFiles); + connect(m_importPathsForm, &ImportPathOptionPage::updateImportPaths, this, &OptionsDialog::updateImportPaths); } OptionsDialog::~OptionsDialog() @@ -114,5 +115,9 @@ void OptionsDialog::reject() QDialog::reject(); } +void OptionsDialog::setImports(const QStringList &imports) +{ + m_importPathsForm->setImports(imports); +} diff --git a/src/bench/optionsdialog.h b/src/bench/optionsdialog.h index 3b9b08d..2e728ce 100644 --- a/src/bench/optionsdialog.h +++ b/src/bench/optionsdialog.h @@ -58,11 +58,13 @@ public: void setHostModel(HostModel* model); void setDiscoveredHostsModel(HostModel* model); + void setImports(const QStringList &imports); void openHostConfig(Host* host); signals: void hideNonQMLFiles(bool hide); + void updateImportPaths(const QStringList &imports); private slots: void optionSelected(QListWidgetItem* current); |