From 5019513efc8517969a9ccf0fbea26eff26e6fd91 Mon Sep 17 00:00:00 2001 From: Tapani Mattila Date: Fri, 6 May 2022 09:52:21 +0300 Subject: [PATCH] QmlDesigner: Implement first iteration of QDS landing page Task-number: QDS-6564 Change-Id: I7f92024f9ec521ff9ebe2637146b56c9b30edd59 Reviewed-by: Reviewed-by: Alessandro Portale --- .../qmldesigner/landingpage/content/App.qml | 62 ++++++ .../content/InstallQdsStatusBlock.ui.qml | 77 +++++++ .../landingpage/content/LandingSeparator.qml | 39 ++++ .../content/ProjectInfoStatusBlock.ui.qml | 204 ++++++++++++++++++ .../landingpage/content/PushButton.ui.qml | 126 +++++++++++ .../landingpage/content/Screen01.ui.qml | 199 +++++++++++++++++ .../qmldesigner/landingpage/content/logo.png | Bin 0 -> 3449 bytes .../landingpage/content/logo@2x.png | Bin 0 -> 7320 bytes .../imports/LandingPage/Constants.qml | 32 +++ .../landingpage/imports/LandingPage/qmldir | 1 + .../landingpage/landingpage.qmlproject | 79 +++++++ .../qmldesigner/landingpage/main.qml | 9 + 12 files changed, 828 insertions(+) create mode 100644 share/qtcreator/qmldesigner/landingpage/content/App.qml create mode 100644 share/qtcreator/qmldesigner/landingpage/content/InstallQdsStatusBlock.ui.qml create mode 100644 share/qtcreator/qmldesigner/landingpage/content/LandingSeparator.qml create mode 100644 share/qtcreator/qmldesigner/landingpage/content/ProjectInfoStatusBlock.ui.qml create mode 100644 share/qtcreator/qmldesigner/landingpage/content/PushButton.ui.qml create mode 100644 share/qtcreator/qmldesigner/landingpage/content/Screen01.ui.qml create mode 100644 share/qtcreator/qmldesigner/landingpage/content/logo.png create mode 100644 share/qtcreator/qmldesigner/landingpage/content/logo@2x.png create mode 100644 share/qtcreator/qmldesigner/landingpage/imports/LandingPage/Constants.qml create mode 100644 share/qtcreator/qmldesigner/landingpage/imports/LandingPage/qmldir create mode 100644 share/qtcreator/qmldesigner/landingpage/landingpage.qmlproject create mode 100644 share/qtcreator/qmldesigner/landingpage/main.qml diff --git a/share/qtcreator/qmldesigner/landingpage/content/App.qml b/share/qtcreator/qmldesigner/landingpage/content/App.qml new file mode 100644 index 00000000000..1a5e1efe05e --- /dev/null +++ b/share/qtcreator/qmldesigner/landingpage/content/App.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Quick Studio Components. +** +** $QT_BEGIN_LICENSE:GPL$ +** 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 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** 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. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Window 2.15 + +Item { + width: 1024 + height: 768 + + visible: true + property alias qtVersion: mainScreen.qtVersion + property alias qdsVersion: mainScreen.qdsVersion + property alias cmakeLists: mainScreen.cmakeLists + property alias qdsInstalled: mainScreen.qdsInstalled + property alias projectFileExists: mainScreen.projectFileExists + property alias rememberSelection: mainScreen.rememberCheckboxCheckState + + signal openQtc(bool rememberSelection) + signal openQds(bool rememberSelection) + signal installQds() + signal generateCmake() + signal generateProjectFile() + + Screen01 { + id: mainScreen + anchors.fill: parent + openQtcButton.onClicked: openQtc(rememberSelection === Qt.Checked) + openQdsButton.onClicked: openQds(rememberSelection === Qt.Checked) + installButton.onClicked: installQds() + generateCmakeButton.onClicked: generateCmake() + generateProjectFileButton.onClicked: generateProjectFile() + } + +} + diff --git a/share/qtcreator/qmldesigner/landingpage/content/InstallQdsStatusBlock.ui.qml b/share/qtcreator/qmldesigner/landingpage/content/InstallQdsStatusBlock.ui.qml new file mode 100644 index 00000000000..4132d62b200 --- /dev/null +++ b/share/qtcreator/qmldesigner/landingpage/content/InstallQdsStatusBlock.ui.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Quick Studio Components. +** +** $QT_BEGIN_LICENSE:GPL$ +** 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 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** 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. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import LandingPage + +Rectangle { + id: installQdsBlock + color: "#c3c3c3" + border.width: 0 + property alias installQdsBlockVisible: installQdsBlock.visible + property alias installButton: installButton + height: 200 + + Text { + id: statusText + text: qsTr("No Qt Design Studio installation found") + font.family: "TitilliumWeb" + font.pixelSize: 18 + anchors.top: parent.top + anchors.topMargin: 10 + anchors.horizontalCenter: parent.horizontalCenter + } + + Text { + id: suggestionText + text: qsTr("Would you like to install it now?") + font.family: "TitilliumWeb" + font.pixelSize: 18 + anchors.top: statusText.bottom + anchors.topMargin: 10 + anchors.horizontalCenterOffset: 0 + anchors.horizontalCenter: parent.horizontalCenter + } + + PushButton { + id: installButton + anchors.top: suggestionText.bottom + text: "Install" + anchors.topMargin: Constants.buttonDefaultMargin + anchors.horizontalCenterOffset: 0 + anchors.horizontalCenter: parent.horizontalCenter + } +} diff --git a/share/qtcreator/qmldesigner/landingpage/content/LandingSeparator.qml b/share/qtcreator/qmldesigner/landingpage/content/LandingSeparator.qml new file mode 100644 index 00000000000..41dda25cd3d --- /dev/null +++ b/share/qtcreator/qmldesigner/landingpage/content/LandingSeparator.qml @@ -0,0 +1,39 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Quick Studio Components. +** +** $QT_BEGIN_LICENSE:GPL$ +** 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 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** 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. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Rectangle { + color: "#313131" + width: parent.width + height: 2 + z: 10 + anchors.horizontalCenter: parent.horizontalCenter +} diff --git a/share/qtcreator/qmldesigner/landingpage/content/ProjectInfoStatusBlock.ui.qml b/share/qtcreator/qmldesigner/landingpage/content/ProjectInfoStatusBlock.ui.qml new file mode 100644 index 00000000000..2ee64e0f397 --- /dev/null +++ b/share/qtcreator/qmldesigner/landingpage/content/ProjectInfoStatusBlock.ui.qml @@ -0,0 +1,204 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Quick Studio Components. +** +** $QT_BEGIN_LICENSE:GPL$ +** 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 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** 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. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import LandingPage + +Rectangle { + id: projectInfo + height: 300 + color: "#c3c3c3" + border.color: "#ffffff" + border.width: 0 + property bool qdsInstalled: qdsVersionText.text.length > 0 + property bool projectFileExists: false + property string qdsVersion: "UNKNOWN" + property string qtVersion: "UNKNOWN" + property alias cmakeListText: cmakeList.text + property alias generateCmakeButton: generateCmakeButton + property alias generateProjectFileButton: generateProjectFileButton + + Item { + id: projectFileInfoBox + width: projectInfo.width + height: 150 + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 30 + + Text { + id: projectFileInfoTitle + text: qsTr("QML PROJECT FILE INFO") + font.family: "TitilliumWeb" + font.pixelSize: 18 + anchors.top: parent.top + horizontalAlignment: Text.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 10 + } + + Item { + id: projectFileInfoVersionBox + width: parent.width + height: 150 + visible: projectFileExists + anchors.top: projectFileInfoTitle.bottom + anchors.topMargin: 0 + anchors.horizontalCenter: parent.horizontalCenter + + Text { + id: qtVersionText + text: qsTr("Qt Version - ") + qtVersion + font.family: "TitilliumWeb" + font.pixelSize: 18 + anchors.top: parent.top + horizontalAlignment: Text.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 10 + } + + Text { + id: qdsVersionText + text: qsTr("Qt Design Studio Version - ") + qdsVersion + font.family: "TitilliumWeb" + font.pixelSize: 18 + anchors.top: qtVersionText.bottom + horizontalAlignment: Text.AlignHCenter + anchors.topMargin: 10 + anchors.horizontalCenter: parent.horizontalCenter + } + } + + Item { + id: projectFileInfoMissingBox + width: parent.width + height: 200 + visible: !projectFileInfoVersionBox.visible + anchors.top: projectFileInfoTitle.bottom + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 0 + + Text { + id: projectFileInfoMissingText + text: qsTr("No QML project file found - Would you like to create one?") + font.family: "TitilliumWeb" + font.pixelSize: 18 + anchors.top: parent.top + horizontalAlignment: Text.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 10 + } + + PushButton { + id: generateProjectFileButton + anchors.top: projectFileInfoMissingText.bottom + text: "Generate" + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: Constants.buttonDefaultMargin + } + } + } + + Item { + id: cmakeInfoBox + width: projectInfo.width + height: 200 + anchors.top: projectFileInfoBox.bottom + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 40 + + Text { + id: cmakeInfoTitle + text: qsTr("CMAKE RESOURCE FILES") + font.family: "TitilliumWeb" + font.pixelSize: 18 + anchors.top: parent.top + horizontalAlignment: Text.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 10 + } + + Item { + id: cmakeListBox + width: 150 + height: 40 + visible: cmakeListText.length > 0 + anchors.top: cmakeInfoTitle.bottom + anchors.topMargin: 10 + anchors.horizontalCenter: parent.horizontalCenter + + Text { + id: cmakeList + text: qsTr("") + font.family: "TitilliumWeb" + font.pixelSize: 18 + anchors.top: parent.top + horizontalAlignment: Text.AlignHCenter + anchors.topMargin: 0 + anchors.horizontalCenter: parent.horizontalCenter + } + } + + Item { + id: cmakeMissingBox + width: cmakeInfoBox.width + height: 200 + visible: cmakeListText.length === 0 + anchors.top: cmakeInfoTitle.bottom + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 10 + + Text { + id: cmakeMissingText + text: qsTr("No resource files found - Would you like to generate them?") + font.family: "TitilliumWeb" + font.pixelSize: 18 + anchors.top: parent.top + horizontalAlignment: Text.AlignHCenter + anchors.topMargin: 10 + anchors.horizontalCenter: parent.horizontalCenter + } + + PushButton { + id: generateCmakeButton + anchors.top: cmakeMissingText.bottom + text: "Generate" + anchors.topMargin: Constants.buttonDefaultMargin + anchors.horizontalCenter: parent.horizontalCenter + } + } + } +} diff --git a/share/qtcreator/qmldesigner/landingpage/content/PushButton.ui.qml b/share/qtcreator/qmldesigner/landingpage/content/PushButton.ui.qml new file mode 100644 index 00000000000..63bb38565f6 --- /dev/null +++ b/share/qtcreator/qmldesigner/landingpage/content/PushButton.ui.qml @@ -0,0 +1,126 @@ + + +/**************************************************************************** +** +** Copyright (C) 2021 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. +** +****************************************************************************/ +import QtQuick 2.15 +import QtQuick.Templates 2.15 + +Button { + id: control + + implicitWidth: Math.max( + buttonBackground ? buttonBackground.implicitWidth : 0, + textItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max( + buttonBackground ? buttonBackground.implicitHeight : 0, + textItem.implicitHeight + topPadding + bottomPadding) + leftPadding: 4 + rightPadding: 4 + + text: "My Button" + property alias fontpixelSize: textItem.font.pixelSize + property bool forceHover: false + state: "normal" + + background: buttonBackground + Rectangle { + id: buttonBackground + color: "#00000000" + implicitWidth: 100 + implicitHeight: 40 + opacity: enabled ? 1 : 0.3 + radius: 2 + border.color: "#047eff" + anchors.fill: parent + } + + contentItem: textItem + + Text { + id: textItem + text: control.text + font.pixelSize: 18 + + opacity: enabled ? 1.0 : 0.3 + color: "#ffffff" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + rightPadding: 5 + leftPadding: 5 + } + + states: [ + State { + name: "normal" + when: !control.down && !control.hovered && !control.forceHover + + PropertyChanges { + target: buttonBackground + color: "#323232" + border.color: "#868686" + } + + PropertyChanges { + target: textItem + color: "#ffffff" + } + }, + State { + name: "hover" + when: (control.hovered || control.forceHover) && !control.down + PropertyChanges { + target: textItem + color: "#ffffff" + } + + PropertyChanges { + target: buttonBackground + color: "#474747" + border.color: "#adadad" + } + }, + State { + name: "activeQds" + when: control.down + PropertyChanges { + target: textItem + color: "#111111" + } + + PropertyChanges { + target: buttonBackground + color: "#2e769e" + border.color: "#2e769e" + } + } + ] +} + +/*##^## +Designer { + D{i:0;height:40;width:142} +} +##^##*/ + diff --git a/share/qtcreator/qmldesigner/landingpage/content/Screen01.ui.qml b/share/qtcreator/qmldesigner/landingpage/content/Screen01.ui.qml new file mode 100644 index 00000000000..e54a5d058b9 --- /dev/null +++ b/share/qtcreator/qmldesigner/landingpage/content/Screen01.ui.qml @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Quick Studio Components. +** +** $QT_BEGIN_LICENSE:GPL$ +** 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 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** 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. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/* +This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only. +It is supposed to be strictly declarative and only uses a subset of QML. If you edit +this file manually, you might introduce QML code that is not supported by Qt Design Studio. +Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files. +*/ +import QtQuick 2.15 +import QtQuick.Controls 6.2 +import LandingPage + +Rectangle { + id: rectangle2 + width: 1024 + height: 768 + color: "#c3c3c3" + property bool qdsInstalled: true + property alias openQtcButton: openQtc + property alias openQdsButton: openQds + property alias projectFileExists: projectInfoStatusBlock.projectFileExists + property alias installButton: installQdsStatusBlock.installButton + property alias generateCmakeButton: projectInfoStatusBlock.generateCmakeButton + property alias generateProjectFileButton: projectInfoStatusBlock.generateProjectFileButton + property alias qtVersion: projectInfoStatusBlock.qtVersion + property alias qdsVersion: projectInfoStatusBlock.qdsVersion + property alias cmakeLists: projectInfoStatusBlock.cmakeListText + property alias installQdsBlockVisible: installQdsStatusBlock.visible + property alias rememberCheckboxCheckState: rememberCheckbox.checkState + + Rectangle { + id: logoArea + width: parent.width + height: 180 + color: "#c3c3c3" + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + + Image { + id: qdsLogo + source: "logo.png" + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + anchors.topMargin: 30 + } + + Text { + id: qdsText + text: qsTr("Qt Design Studio") + font.pixelSize: 55 + font.family: "TitilliumWeb" + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: 20 + } + } + + Item { + id: statusBox + anchors.top: logoArea.bottom + anchors.bottom: buttonBox.top + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: 0 + anchors.leftMargin: 0 + + LandingSeparator { + id: topSeparator + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + } + + InstallQdsStatusBlock { + id: installQdsStatusBlock + width: parent.width + anchors.top: parent.top + anchors.topMargin: 0 + anchors.horizontalCenter: parent.horizontalCenter + visible: !qdsInstalled + } + + ProjectInfoStatusBlock { + id: projectInfoStatusBlock + width: parent.width + visible: !installQdsStatusBlock.visible + anchors.top: parent.top + anchors.topMargin: 0 + anchors.horizontalCenter: parent.horizontalCenter + } + + LandingSeparator { + id: bottomSeparator + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + } + } + + Rectangle { + id: buttonBox + width: parent.width + height: 220 + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + color: "#c3c3c3" + + Item { + id: openQdsBox + width: parent.width / 2 + height: parent.height + anchors.left: parent.left + anchors.bottom: parent.bottom + anchors.bottomMargin: 0 + anchors.leftMargin: 0 + + Text { + id: openQdsText + text: qsTr("Open with Qt Design Studio") + font.pixelSize: 22 + font.family: "TitilliumWeb" + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + anchors.topMargin: 50 + } + + PushButton { + id: openQds + anchors.top: openQdsText.bottom + anchors.horizontalCenter: parent.horizontalCenter + text: "Open" + anchors.topMargin: Constants.buttonSmallMargin + enabled: qdsInstalled + } + } + + Item { + id: openQtcBox + width: parent.width / 2 + height: parent.height + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.bottomMargin: 0 + anchors.rightMargin: 0 + + Text { + id: openQtcText + text: qsTr("Open with Qt Creator - Text Mode") + font.pixelSize: 22 + font.family: "TitilliumWeb" + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + anchors.topMargin: 50 + } + + PushButton { + id: openQtc + anchors.top: openQtcText.bottom + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: Constants.buttonSmallMargin + text: "Open" + } + } + + CheckBox { + id: rememberCheckbox + text: qsTr("Remember my choice") + font.family: "TitilliumWeb" + anchors.bottom: parent.bottom + anchors.bottomMargin: 30 + anchors.horizontalCenter: parent.horizontalCenter + } + } +} diff --git a/share/qtcreator/qmldesigner/landingpage/content/logo.png b/share/qtcreator/qmldesigner/landingpage/content/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e4cf99cfa9b316c9fe4be31fb81325f447ade7a5 GIT binary patch literal 3449 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