qds: remove Quick Control 1 feature

Tab and TabView are not existing in QuickControls 2.

Change-Id: I16694d6015927c54087e0b4aeebb8dee245f04f8
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Tim Jenssen
2023-06-14 18:53:12 +02:00
parent d3177b84bc
commit 039898058c
16 changed files with 0 additions and 594 deletions

View File

@@ -1129,13 +1129,8 @@ extend_qtc_plugin(componentsplugin
extend_qtc_plugin(componentsplugin
SOURCES_PREFIX componentsplugin
SOURCES
addtabdesigneraction.cpp addtabdesigneraction.h
addtabtotabviewdialog.cpp addtabtotabviewdialog.h
addtabtotabviewdialog.ui
componentsplugin.cpp componentsplugin.h
componentsplugin.qrc
entertabdesigneraction.cpp entertabdesigneraction.h
tabviewindexmodel.cpp tabviewindexmodel.h
)
add_qtc_plugin(qmlpreviewplugin

View File

@@ -42,9 +42,6 @@ namespace {
bool itemIsResizable(const ModelNode &modelNode)
{
if (modelNode.metaInfo().isQtQuickControlsTab())
return false;
return NodeHints::fromModelNode(modelNode).isResizable();
}

View File

@@ -1,118 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "addtabdesigneraction.h"
#include "addtabtotabviewdialog.h"
#include <QCoreApplication>
#include <QMessageBox>
#include <QUrl>
#include <QFileInfo>
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
#include <documentmanager.h>
#include <nodemetainfo.h>
#include <modelnode.h>
#include <nodeabstractproperty.h>
#include <qmldesignerplugin.h>
namespace QmlDesigner {
bool isTabView(const ModelNode &modelNode)
{
return modelNode.metaInfo().isQtQuickControlsTabView();
}
bool isTabAndParentIsTabView(const ModelNode &modelNode)
{
return modelNode.metaInfo().isQtQuickControlsTab() && modelNode.hasParentProperty()
&& modelNode.parentProperty().parentModelNode().metaInfo().isQtQuickControlsTabView();
}
AddTabDesignerAction::AddTabDesignerAction()
: AbstractAction(QCoreApplication::translate("TabViewToolAction","Add Tab..."))
{
connect(action(), &QAction::triggered, this, &AddTabDesignerAction::addNewTab);
}
QByteArray AddTabDesignerAction::category() const
{
return QByteArray();
}
QByteArray AddTabDesignerAction::menuId() const
{
return "TabViewAction";
}
int AddTabDesignerAction::priority() const
{
return CustomActionsPriority;
}
ActionInterface::Type AddTabDesignerAction::type() const
{
return ContextMenuAction;
}
bool AddTabDesignerAction::isVisible(const SelectionContext &selectionContext) const
{
if (selectionContext.singleNodeIsSelected()) {
ModelNode selectedModelNode = selectionContext.currentSingleSelectedNode();
return isTabView(selectedModelNode) || isTabAndParentIsTabView(selectedModelNode);
}
return false;
}
bool AddTabDesignerAction::isEnabled(const SelectionContext &selectionContext) const
{
return isVisible(selectionContext);
}
static ModelNode findTabViewModelNode(const ModelNode &currentModelNode)
{
if (currentModelNode.metaInfo().isQtQuickControlsTabView())
return currentModelNode;
else
return findTabViewModelNode(currentModelNode.parentProperty().parentModelNode());
}
void AddTabDesignerAction::addNewTab()
{
QString tabName = AddTabToTabViewDialog::create(QStringLiteral("Tab"),
Core::ICore::dialogParent());
if (!tabName.isEmpty()) {
QString directoryPath = QFileInfo(selectionContext().view()->model()->fileUrl().toLocalFile()).absolutePath();
QString newFilePath = directoryPath +QStringLiteral("/") + tabName + QStringLiteral(".qml");
if (QFileInfo::exists(newFilePath)) {
Core::AsynchronousMessageBox::warning(tr("Naming Error"), tr("Component already exists."));
} else {
const QString sourceString = QStringLiteral("import QtQuick 2.1\nimport QtQuick.Controls 1.0\n\nItem {\n anchors.fill: parent\n}");
bool fileCreated = DocumentManager::createFile(newFilePath, sourceString);
if (fileCreated) {
DocumentManager::addFileToVersionControl(directoryPath, newFilePath);
ModelNode tabViewModelNode = findTabViewModelNode(selectionContext().currentSingleSelectedNode());
PropertyListType propertyList;
propertyList.append(QPair<PropertyName, QVariant>("source", QString(tabName + QStringLiteral(".qml"))));
propertyList.append(QPair<PropertyName, QVariant>("title", tabName));
ModelNode newTabModelNode = selectionContext().view()->createModelNode("QtQuick.Controls.Tab",
tabViewModelNode.majorVersion(),
tabViewModelNode.minorVersion(),
propertyList);
newTabModelNode.setIdWithRefactoring(newTabModelNode.model()->generateNewId(tabName));
tabViewModelNode.defaultNodeAbstractProperty().reparentHere(newTabModelNode);
}
}
}
}
} // namespace QmlDesigner

View File

@@ -1,29 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "abstractaction.h"
namespace QmlDesigner {
class AddTabDesignerAction : public QObject, public AbstractAction
{
Q_OBJECT
public:
AddTabDesignerAction();
QByteArray category() const override;
QByteArray menuId() const override;
int priority() const override;
Type type() const override;
protected:
bool isVisible(const SelectionContext &selectionContext) const override;
bool isEnabled(const SelectionContext &selectionContext) const override;
private:
void addNewTab();
};
} // namespace QmlDesigner

View File

@@ -1,39 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "addtabtotabviewdialog.h"
#include "ui_addtabtotabviewdialog.h"
namespace QmlDesigner {
AddTabToTabViewDialog::AddTabToTabViewDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AddTabToTabViewDialog)
{
ui->setupUi(this);
ui->addTabLineEdit->setForceFirstCapitalLetter(true);
}
AddTabToTabViewDialog::~AddTabToTabViewDialog()
{
delete ui;
}
QString AddTabToTabViewDialog::create(const QString &tabName, QWidget *parent)
{
AddTabToTabViewDialog addTabToTabViewDialog(parent);
Utils::FileNameValidatingLineEdit *fileNameValidatingLineEdit = addTabToTabViewDialog.ui->addTabLineEdit;
fileNameValidatingLineEdit->setText(tabName);
int result = addTabToTabViewDialog.exec();
if (result == QDialog::Accepted && fileNameValidatingLineEdit->isValid())
return fileNameValidatingLineEdit->text();
else
return QString();
}
} // namespace QmlDesigner

View File

@@ -1,25 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <QDialog>
namespace QmlDesigner {
namespace Ui { class AddTabToTabViewDialog; }
class AddTabToTabViewDialog : public QDialog
{
Q_OBJECT
public:
explicit AddTabToTabViewDialog(QWidget *parent = nullptr);
~AddTabToTabViewDialog() override;
static QString create(const QString &tabName, QWidget *parent);
private:
Ui::AddTabToTabViewDialog *ui;
};
} // namespace QmlDesigner

View File

@@ -1,85 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QmlDesigner::AddTabToTabViewDialog</class>
<widget class="QDialog" name="QmlDesigner::AddTabToTabViewDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>362</width>
<height>80</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="addTabLabel">
<property name="text">
<string>Add tab:</string>
</property>
</widget>
</item>
<item>
<widget class="Utils::FileNameValidatingLineEdit" name="addTabLineEdit"/>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>Utils::FileNameValidatingLineEdit</class>
<extends>QLineEdit</extends>
<header location="global">utils/filenamevalidatinglineedit.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>QmlDesigner::AddTabToTabViewDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>QmlDesigner::AddTabToTabViewDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -3,22 +3,12 @@
#include "componentsplugin.h"
#include "tabviewindexmodel.h"
#include "addtabdesigneraction.h"
#include "entertabdesigneraction.h"
#include <designeractionmanager.h>
#include <viewmanager.h>
#include <qmldesignerplugin.h>
namespace QmlDesigner {
ComponentsPlugin::ComponentsPlugin()
{
TabViewIndexModel::registerDeclarativeType();
DesignerActionManager *actionManager = &QmlDesignerPlugin::instance()->viewManager().designerActionManager();
actionManager->addDesignerAction(new AddTabDesignerAction);
actionManager->addDesignerAction(new EnterTabDesignerAction);
}
QString ComponentsPlugin::pluginName() const

View File

@@ -1,116 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "entertabdesigneraction.h"
#include <abstractaction.h>
#include <documentmanager.h>
#include <modelnode.h>
#include <nodeabstractproperty.h>
#include <nodemetainfo.h>
#include <qmlitemnode.h>
#include <QCoreApplication>
namespace QmlDesigner {
class EnterTabAction : public DefaultAction
{
public:
EnterTabAction(const QString &description)
: DefaultAction(description)
{ }
public:
void actionTriggered(bool) override
{
DocumentManager::goIntoComponent(m_selectionContext.targetNode());
}
};
EnterTabDesignerAction::EnterTabDesignerAction()
: AbstractActionGroup(QCoreApplication::translate("TabViewToolAction", "Step into Tab"))
{
}
QByteArray EnterTabDesignerAction::category() const
{
return QByteArray();
}
QByteArray EnterTabDesignerAction::menuId() const
{
return "TabViewAction";
}
int EnterTabDesignerAction::priority() const
{
//Editing tabs is above adding tabs
return CustomActionsPriority + 10;
}
void EnterTabDesignerAction::updateContext()
{
menu()->clear();
if (selectionContext().isValid()) {
action()->setEnabled(isEnabled(selectionContext()));
action()->setVisible(isVisible(selectionContext()));
if (action()->isEnabled()) {
const ModelNode selectedModelNode = selectionContext().currentSingleSelectedNode();
if (selectedModelNode.metaInfo().isValid()
&& selectedModelNode.metaInfo().isQtQuickControlsTabView()) {
const NodeAbstractProperty defaultProperty = selectedModelNode
.defaultNodeAbstractProperty();
const QList<QmlDesigner::ModelNode> childModelNodes = defaultProperty.directSubNodes();
for (const QmlDesigner::ModelNode &childModelNode : childModelNodes) {
createActionForTab(childModelNode);
}
}
}
}
}
bool EnterTabDesignerAction::isVisible(const SelectionContext &selectionContext) const
{
if (selectionContext.singleNodeIsSelected()) {
ModelNode selectedModelNode = selectionContext.currentSingleSelectedNode();
return selectedModelNode.metaInfo().isQtQuickControlsTabView();
}
return false;
}
static bool tabViewIsNotEmpty(const SelectionContext &selectionContext)
{
return selectionContext.currentSingleSelectedNode().defaultNodeAbstractProperty().isNodeListProperty();
}
bool EnterTabDesignerAction::isEnabled(const SelectionContext &selectionContext) const
{
return isVisible(selectionContext) && tabViewIsNotEmpty(selectionContext);
}
void EnterTabDesignerAction::createActionForTab(const ModelNode &modelNode)
{
if (modelNode.metaInfo().isQtQuickControlsTab()) {
QmlDesigner::QmlItemNode itemNode(modelNode);
if (itemNode.isValid()) {
QString what = tr("Step into: %1").
arg(itemNode.instanceValue("title").toString());
auto selectionAction = new EnterTabAction(what);
SelectionContext nodeSelectionContext = selectionContext();
nodeSelectionContext.setTargetNode(modelNode);
selectionAction->setSelectionContext(nodeSelectionContext);
menu()->addAction(selectionAction);
}
}
}
} // namespace QmlDesigner

View File

@@ -1,32 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <abstractactiongroup.h>
#include <QCoreApplication>
namespace QmlDesigner {
class EnterTabDesignerAction : public AbstractActionGroup
{
Q_DECLARE_TR_FUNCTIONS(EnterTabDesignerAction)
public:
EnterTabDesignerAction();
QByteArray category() const override;
QByteArray menuId() const override;
int priority() const override;
void updateContext() override;
protected:
bool isVisible(const SelectionContext &selectionContext) const override;
bool isEnabled(const SelectionContext &selectionContext) const override;
private:
void createActionForTab(const ModelNode &modelNode);
};
} // namespace QmlDesigner

View File

@@ -1,61 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "tabviewindexmodel.h"
#include <metainfo.h>
#include <variantproperty.h>
#include <nodelistproperty.h>
TabViewIndexModel::TabViewIndexModel(QObject *parent) :
QObject(parent)
{
}
void TabViewIndexModel::setModelNodeBackend(const QVariant &modelNodeBackend)
{
auto modelNodeBackendObject = modelNodeBackend.value<QObject*>();
if (modelNodeBackendObject)
setModelNode(modelNodeBackendObject->property("modelNode").value<QmlDesigner::ModelNode>());
setupModel();
emit modelNodeBackendChanged();
}
void TabViewIndexModel::setModelNode(const QmlDesigner::ModelNode &modelNode)
{
m_modelNode = modelNode;
}
QStringList TabViewIndexModel::tabViewIndexModel() const
{
return m_tabViewIndexModel;
}
void TabViewIndexModel::setupModel()
{
m_tabViewIndexModel.clear();
if (m_modelNode.metaInfo().isQtQuickControlsTabView()) {
const QList<QmlDesigner::ModelNode> childModelNodes
= m_modelNode.defaultNodeAbstractProperty().directSubNodes();
for (const QmlDesigner::ModelNode &childModelNode : childModelNodes) {
if (childModelNode.metaInfo().isQtQuickControlsTab()) {
QmlDesigner::QmlItemNode itemNode(childModelNode);
if (itemNode.isValid()) {
m_tabViewIndexModel.append(itemNode.instanceValue("title").toString());
}
}
}
}
}
void TabViewIndexModel::registerDeclarativeType()
{
qmlRegisterType<TabViewIndexModel>("HelperWidgets",2,0,"TabViewIndexModel");
}
QVariant TabViewIndexModel::modelNodeBackend() const
{
return QVariant::fromValue(m_modelNode);
}

View File

@@ -1,38 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <qmlitemnode.h>
#include <QObject>
#include <QtQml>
class TabViewIndexModel : public QObject
{
Q_OBJECT
Q_PROPERTY(QVariant modelNodeBackendProperty READ modelNodeBackend WRITE setModelNodeBackend NOTIFY modelNodeBackendChanged)
Q_PROPERTY(QStringList tabViewIndexModel READ tabViewIndexModel NOTIFY modelNodeBackendChanged)
public:
explicit TabViewIndexModel(QObject *parent = nullptr);
void setModelNodeBackend(const QVariant &modelNodeBackend);
void setModelNode(const QmlDesigner::ModelNode &modelNode);
QStringList tabViewIndexModel() const;
void setupModel();
static void registerDeclarativeType();
signals:
void modelNodeBackendChanged();
private:
QVariant modelNodeBackend() const;
QmlDesigner::ModelNode m_modelNode;
QStringList m_tabViewIndexModel;
};
QML_DECLARE_TYPE(TabViewIndexModel)

View File

@@ -145,9 +145,7 @@ public:
bool isQtQuick3DView3D() const;
bool isQtQuickBorderImage() const;
bool isQtQuickControlsSwipeView() const;
bool isQtQuickControlsTab() const;
bool isQtQuickControlsTabBar() const;
bool isQtQuickControlsTabView() const;
bool isQtQuickExtrasPicture() const;
bool isQtQuickImage() const;
bool isQtQuickItem() const;

View File

@@ -2107,16 +2107,6 @@ bool NodeMetaInfo::isListOrGridView() const
}
}
bool NodeMetaInfo::isQtQuickControlsTabView() const
{
if constexpr (useProjectStorage()) {
using namespace Storage::Info;
return isBasedOnCommonType<QtQuick_Controls, TabView>(m_projectStorage, m_typeId);
} else {
return isValid() && isSubclassOf("QtQuick.Controls.TabView");
}
}
bool NodeMetaInfo::isQtQuickExtrasPicture() const
{
if constexpr (useProjectStorage()) {
@@ -2195,17 +2185,6 @@ bool NodeMetaInfo::isQtQuickControlsTabBar() const
}
}
bool NodeMetaInfo::isQtQuickControlsTab() const
{
if constexpr (useProjectStorage()) {
using namespace Storage::Info;
return isBasedOnCommonType<QtQuick_Controls, Tab>(m_projectStorage, m_typeId);
} else {
return isValid() && isSubclassOf("QtQuick.Controls.Tab");
}
}
bool NodeMetaInfo::isQtQuickControlsSwipeView() const
{
if constexpr (useProjectStorage()) {

View File

@@ -349,9 +349,6 @@ bool QmlItemNode::instanceHasScaleOrRotationTransform() const
bool itemIsMovable(const ModelNode &modelNode)
{
if (modelNode.metaInfo().isQtQuickControlsTab())
return false;
if (!modelNode.hasParentProperty())
return false;
@@ -363,9 +360,6 @@ bool itemIsMovable(const ModelNode &modelNode)
bool itemIsResizable(const ModelNode &modelNode)
{
if (modelNode.metaInfo().isQtQuickControlsTab())
return false;
return NodeHints::fromModelNode(modelNode).isResizable();
}

View File

@@ -106,8 +106,6 @@ inline constexpr char StateGroup[] = "StateGroup";
inline constexpr char State[] = "State";
inline constexpr char SwipeView[] = "SwipeView";
inline constexpr char TabBar[] = "TabBar";
inline constexpr char TabView[] = "TabView";
inline constexpr char Tab[] = "Tab";
inline constexpr char TextArea[] = "TextArea";
inline constexpr char TextEdit[] = "TextEdit";
inline constexpr char Text[] = "Text";
@@ -215,9 +213,7 @@ class CommonTypeCache
CacheType<QtQuick_Controls, Popup>,
CacheType<QtQuick_Controls, SplitView>,
CacheType<QtQuick_Controls, SwipeView>,
CacheType<QtQuick_Controls, Tab>,
CacheType<QtQuick_Controls, TabBar>,
CacheType<QtQuick_Controls, TabView>,
CacheType<QtQuick_Controls, TextArea>,
CacheType<QtQuick_Dialogs, Dialog>,
CacheType<QtQuick_Extras, Picture>,