diff options
author | Thomas Hartmann <Thomas.Hartmann@theqtcompany.com> | 2016-06-23 15:09:32 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@theqtcompany.com> | 2016-06-27 13:27:35 +0000 |
commit | e1f5fd202aa421c8b510d902a68a03a5345f3ec4 (patch) | |
tree | 2529baee95cd6a5be0f942bffa38a354083a209d /src/plugins/qmldesigner/openuiqmlfiledialog.cpp | |
parent | e12949a38a6bdb124b27d14876bf3f19d0ef29ca (diff) | |
download | qt-creator-e1f5fd202aa421c8b510d902a68a03a5345f3ec4.tar.gz |
QmlDesigner: Propose to open a .ui.qml file instead of .qml
If the project contains .ui.qml files the designer proposes to
open .ui.qml files instead of opening a .qml file.
This encourages to not open the .qml files in the designer.
This feature can be disabled.
Change-Id: I47a877ea72fafb07ebee485b8f22509f6162993c
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
Diffstat (limited to 'src/plugins/qmldesigner/openuiqmlfiledialog.cpp')
-rw-r--r-- | src/plugins/qmldesigner/openuiqmlfiledialog.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/openuiqmlfiledialog.cpp b/src/plugins/qmldesigner/openuiqmlfiledialog.cpp new file mode 100644 index 0000000000..75837654dc --- /dev/null +++ b/src/plugins/qmldesigner/openuiqmlfiledialog.cpp @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "openuiqmlfiledialog.h" +#include "ui_openuiqmlfiledialog.h" + +#include <qmldesignerplugin.h> + +#include <QDir> + +namespace QmlDesigner { + +OpenUiQmlFileDialog::OpenUiQmlFileDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::OpenUiQmlFileDialog) +{ + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + ui->setupUi(this); + + connect(ui->cancelButton, &QPushButton::clicked, this, &QDialog::close); + connect(ui->openButton, &QPushButton::clicked, [this] { + QListWidgetItem *item = ui->listWidget->currentItem(); + if (item) { + m_uiFileOpened = true; + m_uiQmlFile = item->data(Qt::UserRole).toString(); + } + close(); + }); + connect(ui->listWidget, &QListWidget::itemDoubleClicked, [this](QListWidgetItem *item) { + if (item) { + m_uiFileOpened = true; + m_uiQmlFile = item->data(Qt::UserRole).toString(); + } + close(); + }); + connect(ui->checkBox, &QCheckBox::toggled, [this](bool b){ + DesignerSettings settings = QmlDesignerPlugin::instance()->settings(); + settings.insert(DesignerSettingsKey::WARNING_FOR_QML_FILES_INSTEAD_OF_UIQML_FILES, !b); + QmlDesignerPlugin::instance()->setSettings(settings); + }); +} + +OpenUiQmlFileDialog::~OpenUiQmlFileDialog() +{ + delete ui; +} + +bool OpenUiQmlFileDialog::uiFileOpened() const +{ + return m_uiFileOpened; +} + +void OpenUiQmlFileDialog::setUiQmlFiles(const QString &projectPath, const QStringList &stringList) +{ + QDir projectDir(projectPath); + + foreach (const QString &fileName, stringList) { + QListWidgetItem *item = new QListWidgetItem(projectDir.relativeFilePath(fileName), ui->listWidget); + item->setData(Qt::UserRole, fileName); + ui->listWidget->addItem(item); + } + ui->listWidget->setCurrentItem(ui->listWidget->item(0)); +} + +QString OpenUiQmlFileDialog::uiQmlFile() const +{ + return m_uiQmlFile; +} + +} // namespace QmlDesigner |