summaryrefslogtreecommitdiff
path: root/src/plugins/qmldesigner/openuiqmlfiledialog.cpp
diff options
context:
space:
mode:
authorThomas Hartmann <Thomas.Hartmann@theqtcompany.com>2016-06-23 15:09:32 +0200
committerTim Jenssen <tim.jenssen@theqtcompany.com>2016-06-27 13:27:35 +0000
commite1f5fd202aa421c8b510d902a68a03a5345f3ec4 (patch)
tree2529baee95cd6a5be0f942bffa38a354083a209d /src/plugins/qmldesigner/openuiqmlfiledialog.cpp
parente12949a38a6bdb124b27d14876bf3f19d0ef29ca (diff)
downloadqt-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.cpp92
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