Port welcome screen to Qt Quick 2

This ports the welcome screen to use QtQuick 2.0.
I have disabled the plugin on Qt4 builds.

Change-Id: Ia921d0747c8f7d4441c88fc9fb77b822496091f4
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
Jens Bache-Wiig
2013-09-02 17:29:30 +02:00
committed by Thomas Hartmann
parent 328a24edee
commit cf56178df1
53 changed files with 238 additions and 291 deletions

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
Rectangle {
id: myApp

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
import widgets 1.0
Rectangle {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
ListModel {
ListElement {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
ListModel {
ListElement {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
ListModel {
ListElement {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
ListModel {
ListElement {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
ListModel {
ListElement {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
import widgets 1.0
Rectangle {
@@ -82,6 +82,8 @@ Rectangle {
anchors.rightMargin: 80
anchors.right: parent.right
model: qtVersionModel
textRole: "text"
onCurrentIndexChanged: {
if (comboBox.model === undefined)

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
import widgets 1.0
Rectangle {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
import widgets 1.0
Rectangle {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
import widgets 1.0
Rectangle {
@@ -36,13 +36,13 @@ Rectangle {
color: "#edf0f2"
id: root
property var fonts: CustomFonts {}
property var colors: CustomColors { }
Rectangle {
id: canvas
width: Math.min(1024, parent.width)
//this is a workaround for QTCREATORBUG-6803
anchors.topMargin: (root.height > 700) ? 0 : 0
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter

View File

@@ -27,8 +27,8 @@
**
****************************************************************************/
import QtQuick 1.0
import qtcomponents 1.0
import QtQuick 2.1
import QtQuick.Controls 1.0
ChoiceList {
ComboBox {
}

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
QtObject {
property color linkColor: "#445ba8"

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
QtObject {
property alias linkFont: linkText.font

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
Row {
id: customTab

View File

@@ -27,64 +27,36 @@
**
****************************************************************************/
import QtQuick 1.0
import qtcomponents 1.0
GridView {
id: gridView
interactive: false
clip: true
cellHeight: 240
cellWidth: 216
property int columns: Math.max(Math.floor(width / cellWidth), 1)
cacheBuffer: 1000
import QtQuick 2.1
import QtQuick.Controls 1.0
ScrollView {
x: Math.max((width - (cellWidth * columns)) / 2, 0);
property alias model: gridView.model
GridView {
id: gridView
interactive: false
cellHeight: 240
cellWidth: 216
property int columns: Math.max(Math.floor(width / cellWidth), 1)
delegate: Delegate {
id: delegate
delegate: Delegate {
id: delegate
property bool isHelpImage: model.imageUrl.search(/qthelp/) != -1
property string sourcePrefix: isHelpImage ? "image://helpimage/" : ""
property bool isHelpImage: model.imageUrl.search(/qthelp/) != -1
property string sourcePrefix: isHelpImage ? "image://helpimage/" : ""
property string mockupSource: model.imageSource
property string helpSource: model.imageUrl !== "" ? sourcePrefix + encodeURI(model.imageUrl) : ""
property string mockupSource: model.imageSource
property string helpSource: model.imageUrl !== "" ? sourcePrefix + encodeURI(model.imageUrl) : ""
imageSource: model.imageSource === undefined ? helpSource : mockupSource
videoSource: model.imageSource === undefined ? model.imageUrl : mockupSource
imageSource: model.imageSource === undefined ? helpSource : mockupSource
videoSource: model.imageSource === undefined ? model.imageUrl : mockupSource
caption: model.name;
description: model.description
isVideo: model.isVideo === true
videoLength: model.videoLength !== undefined ? model.videoLength : ""
tags: model.tags
}
WheelArea {
id: wheelarea
anchors.fill: parent
verticalMinimumValue: vscrollbar.minimumValue
verticalMaximumValue: vscrollbar.maximumValue
onVerticalValueChanged: gridView.contentY = verticalValue
verticalValue: gridView.contentY
}
ScrollBar {
id: vscrollbar
orientation: Qt.Vertical
property int availableHeight : gridView.height
visible: contentHeight > availableHeight
maximumValue: contentHeight > availableHeight ? gridView.contentHeight - availableHeight : 0
minimumValue: 0
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.topMargin: styleitem.style == "mac" ? 1 : 0
onValueChanged: gridView.contentY = value
anchors.rightMargin: styleitem.frameoffset
anchors.bottomMargin: hscrollbar.visible ? hscrollbar.height : styleitem.frameoffset
value: gridView.contentY
caption: model.name;
description: model.description
isVideo: model.isVideo === true
videoLength: model.videoLength !== undefined ? model.videoLength : ""
tags: model.tags
}
}
}

View File

@@ -27,8 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import qtcomponents 1.0
import QtQuick 2.1
Rectangle {
id: delegate
@@ -64,17 +63,6 @@ Rectangle {
searchBar.text += " " + tagStr
}
CustomColors {
id: colors
}
CustomFonts {
id: fonts
}
QStyleItem { cursor: "pointinghandcursor"; anchors.fill: parent }
BorderImage {
id: image1
x: 11
@@ -228,6 +216,7 @@ Rectangle {
id: mousearea1
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: {
delegate.state="hover"
}

View File

@@ -1,5 +1,4 @@
import QtQuick 1.1
import qtcomponents 1.0
import QtQuick 2.1
Item {
id: gettingStartedItem
@@ -13,16 +12,6 @@ Item {
signal clicked
CustomColors {
id: colors
}
CustomFonts {
id: fonts
}
QStyleItem { cursor: "pointinghandcursor"; anchors.fill: parent }
Rectangle {
y: 170
width: 20
@@ -106,6 +95,7 @@ Item {
MouseArea {
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: {
gettingStartedItem.state="hover"
}

View File

@@ -1,4 +1,4 @@
import QtQuick 1.1
import QtQuick 2.1
import widgets 1.0
Row {

View File

@@ -27,8 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import qtcomponents 1.0
import QtQuick 2.1
Text {
id: root
@@ -52,14 +51,6 @@ Text {
property bool enlargeMouseArea: true
CustomFonts {
id: fonts
}
CustomColors {
id: colors
}
Rectangle {
color: "#909090"
radius: 6
@@ -89,8 +80,7 @@ Text {
anchors.margins: enlargeMouseArea ? -8 : 0
hoverEnabled: true
QStyleItem { cursor: "pointinghandcursor"; anchors.fill: parent }
cursorShape: Qt.PointingHandCursor
onEntered: {
if (!root.active)
mouseArea.state = "hovered"

View File

@@ -27,8 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import qtcomponents 1.0 as Components
import QtQuick 2.1
Item {
id: tabBar

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
Image {
id: logo

View File

@@ -27,16 +27,16 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 1.0
import QtQuick 2.1
Item {
id: pageCaption
width: 960
height: 40
property int textOffset: captionText.x + captionText.width
property int textOffset: captionText.x + captionText.width
property alias caption: captionText.text
Text {
id: captionText
y: 9
@@ -55,8 +55,4 @@ Item {
anchors.left: parent.left
anchors.right: parent.right
}
CustomColors {
id: colors
}
}

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
Item {
id: pageLoader

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
Item {
id: projectItem
@@ -48,10 +48,6 @@ Item {
anchors.verticalCenter: projectNameText.verticalCenter
}
CustomFonts {
id: fonts
}
LinkedText {
id: projectNameText
y: 2

View File

@@ -27,23 +27,21 @@
**
****************************************************************************/
import QtQuick 1.0
import qtcomponents 1.0
import QtQuick 2.1
import QtQuick.Controls 1.0
ScrollArea {
property bool scrollBarVisible: projectList.verticalScrollBar.visible
ScrollView {
id: projectList
property bool scrollBarVisible: false//projectList.verticalScrollBar.visible
property alias model: repeater.model
// Behavior on verticalScrollBar.opacity {
// PropertyAnimation {
Behavior on verticalScrollBar.opacity {
PropertyAnimation {
// }
// }
}
}
frame: false
horizontalScrollBar.visible: false
clip: true
// frameVisible: false
Column {
id: column

View File

@@ -27,35 +27,42 @@
**
****************************************************************************/
import QtQuick 1.0
import qtcomponents 1.0
import QtQuick 2.1
Rectangle {
id: searchBar
width: 930
height: 31
height: 27
color: "#ffffff"
radius: 6
border.color: "#cccccc"
property alias placeholderText: lineEdit.placeholderText
property alias placeholderText: placeHolderText.text
property alias text: lineEdit.text
CustomFonts {
id: fonts
}
TextField {
TextInput {
id: lineEdit
placeholderText: qsTr("Search...")
anchors.topMargin: 1
anchors.left: parent.left
anchors.right: parent.right
anchors.rightMargin: 12
anchors.leftMargin: 12
anchors.verticalCenter: parent.verticalCenter
background: Item {}
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
renderType: Text.NativeRendering
font.pixelSize: 14
font.bold: false
font.family: "Helvetica"
}
Text {
id: placeHolderText
visible: !lineEdit.text.length
text: qsTr("Search...")
anchors.fill: lineEdit
font: lineEdit.font
verticalAlignment: Text.AlignVCenter
renderType: Text.NativeRendering
color: "gray"
}
}

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
Item {
x: 5
@@ -36,10 +36,6 @@ Item {
height: column.height
property alias name: text.text
CustomFonts {
id: fonts
}
Column {
id: column
spacing: 4
@@ -100,14 +96,13 @@ Item {
Item {
z: -1
property int margin: 6
height: innerColumn.height + margin * 2
height: expanded ? innerColumn.height + margin * 2 : 0
width: delegate.ListView.view.width - 8 - margin * 2
opacity: delegate.expanded ? 1 : 0
Behavior on opacity {
Behavior on height {
ParallelAnimation {
PauseAnimation { duration: delegate.expanded ? 100 : 0; }
PropertyAnimation { duration: 100; }
PropertyAnimation { duration: 160 ; easing.type: Easing.OutCubic }
}
}

View File

@@ -27,33 +27,25 @@
**
****************************************************************************/
import QtQuick 1.0
import qtcomponents 1.0
import QtQuick 2.1
import widgets 1.0
Item {
property alias model: root.model
id: root
property var model
property int topMargin: 6
height: Math.min(root.contentHeight + topMargin, parent.height - 260)
property alias scrollBarVisible: vscrollbar.visible
height: Math.min(content.contentHeight + topMargin, parent.height - 260)
ListView {
id: root
id: content
model: root.model
anchors.fill: parent
anchors.topMargin: topMargin
snapMode: ListView.SnapToItem
property int delegateHeight: currentItem.height + spacing
//property int delegateHeight: 22
interactive: false
spacing: 4
cacheBuffer: 800 //We need a big cache to avoid artefacts caused by delegate recreation
clip: true
delegate: SessionItem {
function fullSessionName()
{
@@ -64,35 +56,7 @@ Item {
newSessionName = qsTr("%1 (current session)").arg(sessionName);
return newSessionName;
}
name: fullSessionName()
}
WheelArea {
id: wheelarea
anchors.fill: parent
verticalMinimumValue: vscrollbar.minimumValue
verticalMaximumValue: vscrollbar.maximumValue
onVerticalValueChanged: root.contentY = verticalValue
}
ScrollBar {
id: vscrollbar
orientation: Qt.Vertical
property int availableHeight : root.height
visible: root.contentHeight > availableHeight
maximumValue: root.contentHeight > availableHeight ? root.contentHeight - availableHeight : 0
minimumValue: 0
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
singleStep: root.delegateHeight
anchors.topMargin: styleitem.style === "mac" ? 1 : 0
onValueChanged: root.contentY = value
anchors.rightMargin: styleitem.frameoffset
anchors.bottomMargin: styleitem.frameoffset
value: root.contentY
}
}
}

View File

@@ -27,14 +27,12 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
Item {
id: toolTip
property alias text: text.text
property int margin: 4
width: text.width + margin * 2

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
import QmlDesigner 1.0
DummyContextObject {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.0
import QtQuick 2.1
import QmlDesigner 1.0
DummyContextObject {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
ListModel {
ListElement {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
ListModel {
ListElement {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
ListModel {
ListElement {

View File

@@ -27,7 +27,7 @@
**
****************************************************************************/
import QtQuick 1.1
import QtQuick 2.1
ListModel {
ListElement {

View File

@@ -35,7 +35,7 @@
#include <QObject>
QT_FORWARD_DECLARE_CLASS(QUrl)
QT_FORWARD_DECLARE_CLASS(QDeclarativeEngine)
QT_FORWARD_DECLARE_CLASS(QQmlEngine)
namespace Utils {
@@ -63,7 +63,7 @@ public:
virtual QUrl pageLocation() const = 0;
virtual QString title() const = 0;
virtual int priority() const { return 0; }
virtual void facilitateQml(QDeclarativeEngine *) {}
virtual void facilitateQml(QQmlEngine *) {}
virtual bool hasSearchBar() const { return false; }
virtual Id id() const = 0;
};

View File

@@ -4,7 +4,6 @@ TEMPLATE = subdirs
SUBDIRS = \
coreplugin \
welcome \
find \
texteditor \
cppeditor \
@@ -70,7 +69,8 @@ contains(QT_CONFIG, declarative)|!isEmpty(QT.declarative.name) {
greaterThan(QT_MAJOR_VERSION, 4) {
SUBDIRS += \
qmldesigner
qmldesigner \
welcome
} else {
include(../private_headers.pri)
exists($${QT_PRIVATE_HEADERS}/QtDeclarative/private/qdeclarativecontext_p.h) {

View File

@@ -2,6 +2,7 @@ import qbs
Project {
name: "Plugins"
references: [
"analyzerbase/analyzerbase.qbs",
"android/android.qbs",
@@ -56,6 +57,11 @@ Project {
"updateinfo/updateinfo.qbs",
"valgrind/valgrind.qbs",
"vcsbase/vcsbase.qbs",
"welcome/welcome.qbs"
]
Group {
condition: qtcore.versionMajor >= 5
references: [ "welcome/welcome.qbs" ]
}
}

View File

@@ -70,7 +70,6 @@
#include "projectnodes.h"
#include "sessiondialog.h"
#include "projectexplorersettingspage.h"
#include "projectwelcomepage.h"
#include "corelistenercheckingforrunningbuild.h"
#include "buildconfiguration.h"
#include "miniprojecttargetselector.h"
@@ -90,6 +89,10 @@
# include "wincetoolchain.h"
#endif
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
#include "projectwelcomepage.h"
#endif
#include <extensionsystem/pluginspec.h>
#include <coreplugin/icore.h>
#include <coreplugin/editormanager/ieditor.h>
@@ -228,8 +231,11 @@ struct ProjectExplorerPluginPrivate {
QString m_projectFilterString;
Internal::MiniProjectTargetSelector * m_targetSelector;
Internal::ProjectExplorerSettings m_projectExplorerSettings;
Internal::ProjectWelcomePage *m_welcomePage;
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
Internal::ProjectWelcomePage *m_welcomePage;
#endif
IMode *m_projectsMode;
TaskHub *m_taskHub;
@@ -284,8 +290,10 @@ ProjectExplorerPlugin::ProjectExplorerPlugin()
ProjectExplorerPlugin::~ProjectExplorerPlugin()
{
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
removeObject(d->m_welcomePage);
delete d->m_welcomePage;
#endif
removeObject(this);
// Force sequence of deletion:
delete d->m_kitManager; // remove all the profile informations
@@ -348,9 +356,11 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
connect(ICore::instance(), SIGNAL(newItemsDialogRequested()), this, SLOT(loadCustomWizards()));
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
d->m_welcomePage = new ProjectWelcomePage;
connect(d->m_welcomePage, SIGNAL(manageSessions()), this, SLOT(showSessionManager()));
addObject(d->m_welcomePage);
#endif
connect(DocumentManager::instance(), SIGNAL(currentFileChanged(QString)),
this, SLOT(setCurrentFile(QString)));
@@ -1085,7 +1095,9 @@ void ProjectExplorerPlugin::closeAllProjects()
SessionManager::closeAllProjects();
updateActions();
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
ModeManager::activateMode(Core::Constants::MODE_WELCOME);
#endif
}
void ProjectExplorerPlugin::extensionsInitialized()
@@ -1212,9 +1224,11 @@ void ProjectExplorerPlugin::showSessionManager()
updateActions();
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
IMode *welcomeMode = ModeManager::mode(Core::Constants::MODE_WELCOME);
if (ModeManager::currentMode() == welcomeMode)
updateWelcomePage();
#endif
}
void ProjectExplorerPlugin::setStartupProject(Project *project)
@@ -1443,7 +1457,9 @@ void ProjectExplorerPlugin::setCurrentNode(Node *node)
void ProjectExplorerPlugin::updateWelcomePage()
{
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
d->m_welcomePage->reloadWelcomeScreenData();
#endif
}
void ProjectExplorerPlugin::currentModeChanged(IMode *mode, IMode *oldMode)
@@ -1564,9 +1580,10 @@ void ProjectExplorerPlugin::restoreSession()
connect(ModeManager::instance(),
SIGNAL(currentModeChanged(Core::IMode*,Core::IMode*)),
SLOT(currentModeChanged(Core::IMode*,Core::IMode*)));
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
connect(d->m_welcomePage, SIGNAL(requestSession(QString)), this, SLOT(loadSession(QString)));
connect(d->m_welcomePage, SIGNAL(requestProject(QString)), this, SLOT(openProjectWelcomePage(QString)));
#endif
d->m_arguments = arguments;
QTimer::singleShot(0, this, SLOT(restoreSession2()));
updateActions();

View File

@@ -1,4 +1,4 @@
QT += xml script declarative
QT += xml script
include(../../qtcreatorplugin.pri)
include(customwizard/customwizard.pri)
@@ -84,7 +84,6 @@ HEADERS += projectexplorer.h \
cesdkhandler.h \
gccparser.h \
projectexplorersettingspage.h \
projectwelcomepage.h \
baseprojectwizarddialog.h \
miniprojecttargetselector.h \
targetselector.h \
@@ -214,7 +213,6 @@ SOURCES += projectexplorer.cpp \
cesdkhandler.cpp \
gccparser.cpp \
projectexplorersettingspage.cpp \
projectwelcomepage.cpp \
corelistenercheckingforrunningbuild.cpp \
baseprojectwizarddialog.cpp \
miniprojecttargetselector.cpp \
@@ -302,6 +300,11 @@ equals(TEST, 1) {
outputparser_test.h
}
greaterThan(QT_MAJOR_VERSION, 4) {
QT += quick
HEADERS += projectwelcomepage.h
SOURCES += projectwelcomepage.cpp
}
macx:LIBS += -framework Carbon
RESOURCES += projectexplorer.qrc

View File

@@ -5,7 +5,7 @@ import "../QtcPlugin.qbs" as QtcPlugin
QtcPlugin {
name: "ProjectExplorer"
Depends { name: "Qt"; submodules: ["widgets", "xml", "network", "script", "declarative"] }
Depends { name: "Qt"; submodules: ["widgets", "xml", "network", "script", "quick"] }
Depends { name: "Core" }
Depends { name: "Locator" }
Depends { name: "Find" }
@@ -109,7 +109,6 @@ QtcPlugin {
"projectmodels.cpp", "projectmodels.h",
"projectnodes.cpp", "projectnodes.h",
"projecttreewidget.cpp", "projecttreewidget.h",
"projectwelcomepage.cpp", "projectwelcomepage.h",
"projectwindow.cpp", "projectwindow.h",
"projectwizardpage.cpp", "projectwizardpage.h", "projectwizardpage.ui",
"removetaskhandler.cpp", "removetaskhandler.h",
@@ -136,6 +135,15 @@ QtcPlugin {
"toolchainoptionspage.cpp", "toolchainoptionspage.h",
"vcsannotatetaskhandler.cpp", "vcsannotatetaskhandler.h",
]
Group {
condition: qtcore.versionMajor >= 5
references: [
"projectwelcomepage.cpp",
"projectwelcomepage.h"
]
}
}
Group {

View File

@@ -31,8 +31,8 @@
#include <utils/stringutils.h>
#include <QDeclarativeEngine>
#include <QDeclarativeContext>
#include <QQmlContext>
#include <QQmlEngine>
#include <QFileInfo>
#include <QDir>
@@ -212,12 +212,12 @@ ProjectWelcomePage::ProjectWelcomePage() :
{
}
void ProjectWelcomePage::facilitateQml(QDeclarativeEngine *engine)
void ProjectWelcomePage::facilitateQml(QQmlEngine *engine)
{
m_sessionModel = new SessionModel(this);
m_projectModel = new ProjectModel(ProjectExplorerPlugin::instance(), this);
QDeclarativeContext *ctx = engine->rootContext();
QQmlContext *ctx = engine->rootContext();
ctx->setContextProperty(QLatin1String("sessionList"), m_sessionModel);
ctx->setContextProperty(QLatin1String("projectList"), m_projectModel);
ctx->setContextProperty(QLatin1String("projectWelcomePage"), this);

View File

@@ -35,7 +35,7 @@
#include <utils/iwelcomepage.h>
QT_BEGIN_NAMESPACE
class QDeclarativeEngine;
class QQmlEngine;
QT_END_NAMESPACE
namespace ProjectExplorer {
@@ -87,7 +87,7 @@ class ProjectWelcomePage : public Utils::IWelcomePage
public:
ProjectWelcomePage();
void facilitateQml(QDeclarativeEngine *engine);
void facilitateQml(QQmlEngine *engine);
QUrl pageLocation() const;
QWidget *page() { return 0; }
QString title() const { return tr("Develop"); }

View File

@@ -61,9 +61,9 @@
#include <QPushButton>
#include <QMessageBox>
#include <QApplication>
#include <QDeclarativeImageProvider>
#include <QDeclarativeEngine>
#include <QDeclarativeContext>
#include <QQuickImageProvider>
#include <QQmlEngine>
#include <QQmlContext>
#include <QDesktopServices>
using namespace Utils;
@@ -170,11 +170,11 @@ public:
bool m_shutdown;
};
class HelpImageProvider : public QDeclarativeImageProvider
class HelpImageProvider : public QQuickImageProvider
{
public:
HelpImageProvider()
: QDeclarativeImageProvider(QDeclarativeImageProvider::Image)
: QQuickImageProvider(QQuickImageProvider::Image)
{
}
@@ -231,7 +231,7 @@ int GettingStartedWelcomePage::priority() const
return 4;
}
void GettingStartedWelcomePage::facilitateQml(QDeclarativeEngine *engine)
void GettingStartedWelcomePage::facilitateQml(QQmlEngine *engine)
{
m_engine = engine;
}
@@ -288,7 +288,7 @@ QUrl ExamplesWelcomePage::pageLocation() const
return QUrl::fromLocalFile(resourcePath + QLatin1String("/welcomescreen/tutorials.qml"));
}
void ExamplesWelcomePage::facilitateQml(QDeclarativeEngine *engine)
void ExamplesWelcomePage::facilitateQml(QQmlEngine *engine)
{
m_engine = engine;
m_engine->addImageProvider(QLatin1String("helpimage"), new HelpImageProvider);
@@ -299,7 +299,7 @@ void ExamplesWelcomePage::facilitateQml(QDeclarativeEngine *engine)
proxy->sort(0);
proxy->setFilterCaseSensitivity(Qt::CaseInsensitive);
QDeclarativeContext *rootContenxt = m_engine->rootContext();
QQmlContext *rootContenxt = m_engine->rootContext();
if (m_showExamples) {
proxy->setShowTutorialsOnly(false);
rootContenxt->setContextProperty(QLatin1String("examplesModel"), proxy);

View File

@@ -35,7 +35,7 @@
#include <QStringList>
QT_BEGIN_NAMESPACE
class QDeclarativeEngine;
class QQmlEngine;
class QFileInfo;
QT_END_NAMESPACE
@@ -54,11 +54,11 @@ public:
QUrl pageLocation() const;
QString title() const;
int priority() const;
void facilitateQml(QDeclarativeEngine *);
void facilitateQml(QQmlEngine *);
Id id() const;
private:
QDeclarativeEngine *m_engine;
QQmlEngine *m_engine;
};
@@ -74,7 +74,7 @@ public:
QString title() const;
int priority() const;
bool hasSearchBar() const;
void facilitateQml(QDeclarativeEngine *);
void facilitateQml(QQmlEngine *);
Id id() const;
Q_INVOKABLE QStringList tagList() const;
Q_INVOKABLE void openUrl(const QUrl &url);
@@ -92,7 +92,7 @@ public slots:
private:
ExamplesListModel *examplesModel() const;
QString copyToAlternativeLocation(const QFileInfo &fileInfo, QStringList &filesToOpen, const QStringList &dependencies);
QDeclarativeEngine *m_engine;
QQmlEngine *m_engine;
bool m_showExamples;
};

View File

@@ -1,5 +1,5 @@
DEFINES += QTSUPPORT_LIBRARY
QT += network declarative
QT += network
include(../../qtcreatorplugin.pri)
@@ -27,7 +27,6 @@ HEADERS += \
qtsupportconstants.h \
profilereader.h \
qtparser.h \
gettingstartedwelcomepage.h \
exampleslistmodel.h \
screenshotcropper.h \
qtconfigwidget.h \
@@ -52,11 +51,16 @@ SOURCES += \
debugginghelperbuildtask.cpp \
profilereader.cpp \
qtparser.cpp \
gettingstartedwelcomepage.cpp \
exampleslistmodel.cpp \
screenshotcropper.cpp \
qtconfigwidget.cpp
greaterThan(QT_MAJOR_VERSION, 4) {
QT += quick
HEADERS += gettingstartedwelcomepage.h
SOURCES += gettingstartedwelcomepage.cpp
}
FORMS += \
showbuildlog.ui \
qtversioninfo.ui \

View File

@@ -5,7 +5,7 @@ import "../QtcPlugin.qbs" as QtcPlugin
QtcPlugin {
name: "QtSupport"
Depends { name: "Qt"; submodules: ["widgets", "declarative"] }
Depends { name: "Qt"; submodules: ["widgets", "quick"] }
Depends { name: "Core" }
Depends { name: "ProjectExplorer" }
Depends { name: "TextEditor" }
@@ -70,8 +70,6 @@ QtcPlugin {
"debugginghelperbuildtask.h",
"exampleslistmodel.cpp",
"exampleslistmodel.h",
"gettingstartedwelcomepage.cpp",
"gettingstartedwelcomepage.h",
"profilereader.cpp",
"profilereader.h",
"qmldebugginglibrary.cpp",
@@ -112,6 +110,15 @@ QtcPlugin {
"images/qt_qrc.png",
]
Group {
condition: qtcore.versionMajor >= 5
files: [
"gettingstartedwelcomepage.cpp",
"gettingstartedwelcomepage.h"
]
}
Export {
Depends { name: "cpp" }
cpp.includePaths: "../../shared"

View File

@@ -38,8 +38,6 @@
#include "profilereader.h"
#include "gettingstartedwelcomepage.h"
#include <coreplugin/icore.h>
#include <coreplugin/mimedatabase.h>
#include <coreplugin/variablemanager.h>
@@ -47,6 +45,10 @@
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/target.h>
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
#include "gettingstartedwelcomepage.h"
#endif
#include <QtPlugin>
static const char kHostBins[] = "CurrentProject:QT_HOST_BINS";
@@ -75,18 +77,16 @@ bool QtSupportPlugin::initialize(const QStringList &arguments, QString *errorMes
addAutoReleasedObject(new QtOptionsPage);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
ExamplesWelcomePage *welcomePage;
welcomePage = new ExamplesWelcomePage;
addAutoReleasedObject(welcomePage);
welcomePage = new ExamplesWelcomePage;
welcomePage->setShowExamples(true);
addAutoReleasedObject(welcomePage);
GettingStartedWelcomePage *gettingStartedWelcomePage = new GettingStartedWelcomePage;
addAutoReleasedObject(gettingStartedWelcomePage);
addAutoReleasedObject(new CustomExecutableRunConfigurationFactory);
#endif
ProjectExplorer::KitManager::registerKitInformation(new QtKitInformation);

View File

@@ -1,4 +1,4 @@
QT += network declarative
QT += network quick
include(../../qtcreatorplugin.pri)

View File

@@ -5,7 +5,7 @@ import "../QtcPlugin.qbs" as QtcPlugin
QtcPlugin {
name: "Welcome"
Depends { name: "Qt"; submodules: ["widgets", "network", "declarative"] }
Depends { name: "Qt"; submodules: ["widgets", "network", "quick"] }
Depends { name: "Core" }
Depends { name: "ProjectExplorer" }

View File

@@ -61,10 +61,10 @@
#include <QUrl>
#include <QtPlugin>
#include <QDeclarativeView>
#include <QDeclarativeContext>
#include <QDeclarativeEngine>
#include <QDeclarativeNetworkAccessManagerFactory>
#include <QtQuick/QQuickView>
#include <QtQml/QQmlContext>
#include <QtQml/QQmlEngine>
#include <QtQml/QQmlNetworkAccessManagerFactory>
enum { debug = 0 };
@@ -76,10 +76,10 @@ static const char currentPageSettingsKeyC[] = "WelcomeTab";
namespace Welcome {
namespace Internal {
class NetworkAccessManagerFactory : public QDeclarativeNetworkAccessManagerFactory
class NetworkAccessManagerFactory : public QQmlNetworkAccessManagerFactory
{
public:
NetworkAccessManagerFactory(): QDeclarativeNetworkAccessManagerFactory() {}
NetworkAccessManagerFactory(): QQmlNetworkAccessManagerFactory() {}
QNetworkAccessManager* create(QObject *parent) { return new Utils::NetworkAccessManager(parent); }
};
@@ -103,7 +103,7 @@ public:
Q_SCRIPTABLE QString platform() const;
bool eventFilter(QObject *, QEvent *);
// bool eventFilter(QObject *, QEvent *);
public slots:
void setActivePlugin(int pos)
@@ -121,10 +121,10 @@ private slots:
void welcomePluginAdded(QObject*);
private:
void facilitateQml(QDeclarativeEngine *engine);
void facilitateQml(QQmlEngine *engine);
QWidget *m_modeWidget;
QDeclarativeView *m_welcomePage;
QQuickView *m_welcomePage;
QList<QObject*> m_pluginList;
int m_activePlugin;
NetworkAccessManagerFactory *m_networkAccessManagerFactory;
@@ -146,40 +146,46 @@ WelcomeMode::WelcomeMode() :
setContextHelpId(QLatin1String("Qt Creator Manual"));
setContext(Core::Context(Core::Constants::C_WELCOME_MODE));
m_welcomePage = new QDeclarativeView;
m_welcomePage->setResizeMode(QDeclarativeView::SizeRootObjectToView);
// filter to forward dragEnter events
m_welcomePage->installEventFilter(this);
m_welcomePage->viewport()->installEventFilter(this);
m_welcomePage = new QQuickView;
m_welcomePage->setResizeMode(QQuickView::SizeRootObjectToView);
// filter to forward dragEnter events
// m_welcomePage->installEventFilter(this);
// m_welcomePage->viewport()->installEventFilter(this);
m_modeWidget = new QWidget;
QVBoxLayout *layout = new QVBoxLayout;
layout->setMargin(0);
layout->setSpacing(0);
m_modeWidget->setLayout(layout);
Utils::StyledBar* styledBar = new Utils::StyledBar(m_modeWidget);
layout->addWidget(styledBar);
QScrollArea *scrollArea = new QScrollArea(m_modeWidget);
scrollArea->setFrameShape(QFrame::NoFrame);
layout->addWidget(scrollArea);
scrollArea->setWidget(m_welcomePage);
scrollArea->setWidgetResizable(true);
// QScrollArea *scrollArea = new QScrollArea(m_modeWidget);
// scrollArea->setFrameShape(QFrame::NoFrame);
// layout->addWidget(scrollArea);
// scrollArea->setWidget(m_welcomePage);
// scrollArea->setWidgetResizable(true);
m_welcomePage->setMinimumWidth(880);
m_welcomePage->setMinimumHeight(548);
QWidget *container = QWidget::createWindowContainer(m_welcomePage, m_modeWidget);
layout->addWidget(container);
m_modeWidget->setLayout(layout);
connect(PluginManager::instance(), SIGNAL(objectAdded(QObject*)), SLOT(welcomePluginAdded(QObject*)));
setWidget(m_modeWidget);
}
bool WelcomeMode::eventFilter(QObject *, QEvent *e)
{
if (e->type() == QEvent::DragEnter) {
e->ignore();
return true;
}
return false;
}
//bool WelcomeMode::eventFilter(QObject *, QEvent *e)
//{
// if (e->type() == QEvent::DragEnter) {
// e->ignore();
// return true;
// }
// return false;
//}
WelcomeMode::~WelcomeMode()
{
@@ -194,7 +200,7 @@ bool sortFunction(Utils::IWelcomePage * a, Utils::IWelcomePage *b)
return a->priority() < b->priority();
}
void WelcomeMode::facilitateQml(QDeclarativeEngine * /*engine*/)
void WelcomeMode::facilitateQml(QQmlEngine * /*engine*/)
{
}
@@ -227,7 +233,7 @@ void WelcomeMode::initPlugins()
if (activePlugin() > 1)
setActivePlugin(1);
QDeclarativeContext *ctx = m_welcomePage->rootContext();
QQmlContext *ctx = m_welcomePage->rootContext();
ctx->setContextProperty(QLatin1String("welcomeMode"), this);
QList<Utils::IWelcomePage*> duplicatePlugins = PluginManager::getObjects<Utils::IWelcomePage>();
@@ -255,7 +261,7 @@ void WelcomeMode::initPlugins()
}
QDeclarativeEngine *engine = m_welcomePage->engine();
QQmlEngine *engine = m_welcomePage->engine();
QStringList importPathList = engine->importPathList();
importPathList << resourcePath() + QLatin1String("/welcomescreen");
engine->setImportPathList(importPathList);
@@ -322,7 +328,7 @@ void WelcomeMode::welcomePluginAdded(QObject *obj)
}
m_pluginList.insert(insertPos, plugin);
// update model through reset
QDeclarativeContext *ctx = m_welcomePage->rootContext();
QQmlContext *ctx = m_welcomePage->rootContext();
ctx->setContextProperty(QLatin1String("pagesModel"), QVariant::fromValue(m_pluginList));
}
}

View File

@@ -33,7 +33,7 @@
#include <extensionsystem/iplugin.h>
QT_BEGIN_NAMESPACE
class QDeclarativeEngine;
class QQmlEngine;
QT_END_NAMESPACE
namespace Welcome {