1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of Qt Creator. 7 ** 8 ** Commercial License Usage 9 ** Licensees holding valid commercial Qt licenses may use this file in 10 ** accordance with the commercial license agreement provided with the 11 ** Software or, alternatively, in accordance with the terms contained in 12 ** a written agreement between you and The Qt Company. For licensing terms 13 ** and conditions see https://www.qt.io/terms-conditions. For further 14 ** information use the contact form at https://www.qt.io/contact-us. 15 ** 16 ** GNU General Public License Usage 17 ** Alternatively, this file may be used under the terms of the GNU 18 ** General Public License version 3 as published by the Free Software 19 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 20 ** included in the packaging of this file. Please review the following 21 ** information to ensure the GNU General Public License requirements will 22 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 23 ** 24 ****************************************************************************/ 25 26 #include "tabviewindexmodel.h" 27 28 #include <metainfo.h> 29 #include <variantproperty.h> 30 #include <nodelistproperty.h> 31 TabViewIndexModel(QObject * parent)32TabViewIndexModel::TabViewIndexModel(QObject *parent) : 33 QObject(parent) 34 { 35 } 36 setModelNodeBackend(const QVariant & modelNodeBackend)37void TabViewIndexModel::setModelNodeBackend(const QVariant &modelNodeBackend) 38 { 39 auto modelNodeBackendObject = modelNodeBackend.value<QObject*>(); 40 41 if (modelNodeBackendObject) 42 setModelNode(modelNodeBackendObject->property("modelNode").value<QmlDesigner::ModelNode>()); 43 44 setupModel(); 45 emit modelNodeBackendChanged(); 46 } 47 setModelNode(const QmlDesigner::ModelNode & modelNode)48void TabViewIndexModel::setModelNode(const QmlDesigner::ModelNode &modelNode) 49 { 50 m_modelNode = modelNode; 51 } 52 tabViewIndexModel() const53QStringList TabViewIndexModel::tabViewIndexModel() const 54 { 55 return m_tabViewIndexModel; 56 } 57 setupModel()58void TabViewIndexModel::setupModel() 59 { 60 m_tabViewIndexModel.clear(); 61 if (m_modelNode.isValid() 62 && m_modelNode.metaInfo().isValid() 63 && m_modelNode.metaInfo().isSubclassOf("QtQuick.Controls.TabView")) { 64 65 foreach (const QmlDesigner::ModelNode &childModelNode, m_modelNode.defaultNodeAbstractProperty().directSubNodes()) { 66 if (childModelNode.metaInfo().isValid() 67 && childModelNode.metaInfo().isSubclassOf("QtQuick.Controls.Tab")) { 68 QmlDesigner::QmlItemNode itemNode(childModelNode); 69 if (itemNode.isValid()) { 70 m_tabViewIndexModel.append(itemNode.instanceValue("title").toString()); 71 } 72 } 73 } 74 } 75 } 76 registerDeclarativeType()77void TabViewIndexModel::registerDeclarativeType() 78 { 79 qmlRegisterType<TabViewIndexModel>("HelperWidgets",2,0,"TabViewIndexModel"); 80 } 81 modelNodeBackend() const82QVariant TabViewIndexModel::modelNodeBackend() const 83 { 84 return QVariant::fromValue(m_modelNode); 85 } 86