forked from qt-creator/qt-creator
QuickDesigner: Update ItemLibrary when imported directories change
ItemLibraryInfo has now a signal "entriesChanged()", which the ItemLibrary connects to. To allow this, ItemLibraryInfo was moved from a stack-based to a heap-based class. Reviewed-by: Thomas Hartmann
This commit is contained in:
@@ -170,7 +170,7 @@ void ItemCreatorTool::createAtItem(const QRectF &rect)
|
|||||||
return;
|
return;
|
||||||
if (list.first() == "item") {
|
if (list.first() == "item") {
|
||||||
RewriterTransaction transaction = view()->beginRewriterTransaction();
|
RewriterTransaction transaction = view()->beginRewriterTransaction();
|
||||||
ItemLibraryEntry itemLibraryEntry = view()->model()->metaInfo().itemLibraryInfo().entry(list.at(1));
|
ItemLibraryEntry itemLibraryEntry = view()->model()->metaInfo().itemLibraryInfo()->entry(list.at(1));
|
||||||
QmlItemNode newNode = view()->createQmlItemNode(itemLibraryEntry, pos, parentNode);
|
QmlItemNode newNode = view()->createQmlItemNode(itemLibraryEntry, pos, parentNode);
|
||||||
newNode.modelNode().variantProperty("width") = rect.width();
|
newNode.modelNode().variantProperty("width") = rect.width();
|
||||||
newNode.modelNode().variantProperty("height") = rect.height();
|
newNode.modelNode().variantProperty("height") = rect.height();
|
||||||
|
|||||||
@@ -344,7 +344,7 @@ void DesignDocumentController::loadCurrentModel()
|
|||||||
m_d->model->setMasterModel(m_d->masterModel.data());
|
m_d->model->setMasterModel(m_d->masterModel.data());
|
||||||
|
|
||||||
m_d->model->attachView(m_d->navigator.data());
|
m_d->model->attachView(m_d->navigator.data());
|
||||||
m_d->itemLibrary->setMetaInfo(m_d->model->metaInfo());
|
m_d->itemLibrary->setItemLibraryInfo(m_d->model->metaInfo().itemLibraryInfo());
|
||||||
m_d->itemLibrary->setResourcePath(QFileInfo(m_d->fileName).absolutePath());
|
m_d->itemLibrary->setResourcePath(QFileInfo(m_d->fileName).absolutePath());
|
||||||
|
|
||||||
if (!m_d->componentAction) {
|
if (!m_d->componentAction) {
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ public:
|
|||||||
Utils::FilterLineEdit *m_lineEdit;
|
Utils::FilterLineEdit *m_lineEdit;
|
||||||
QDeclarativeView *m_itemsView;
|
QDeclarativeView *m_itemsView;
|
||||||
Internal::ItemLibraryTreeView *m_resourcesView;
|
Internal::ItemLibraryTreeView *m_resourcesView;
|
||||||
|
QWeakPointer<ItemLibraryInfo> m_itemLibraryInfo;
|
||||||
|
|
||||||
QSize m_itemIconSize, m_resIconSize;
|
QSize m_itemIconSize, m_resIconSize;
|
||||||
MyFileIconProvider m_iconProvider;
|
MyFileIconProvider m_iconProvider;
|
||||||
@@ -233,9 +234,20 @@ ItemLibrary::~ItemLibrary()
|
|||||||
delete m_d;
|
delete m_d;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemLibrary::setMetaInfo(const MetaInfo &metaInfo)
|
void ItemLibrary::setItemLibraryInfo(ItemLibraryInfo *itemLibraryInfo)
|
||||||
{
|
{
|
||||||
m_d->m_itemLibraryModel->update(metaInfo);
|
if (m_d->m_itemLibraryInfo.data() == itemLibraryInfo)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (m_d->m_itemLibraryInfo)
|
||||||
|
disconnect(m_d->m_itemLibraryInfo.data(), SIGNAL(entriesChanged()),
|
||||||
|
this, SLOT(updateModel()));
|
||||||
|
m_d->m_itemLibraryInfo = itemLibraryInfo;
|
||||||
|
if (itemLibraryInfo)
|
||||||
|
connect(m_d->m_itemLibraryInfo.data(), SIGNAL(entriesChanged()),
|
||||||
|
this, SLOT(updateModel()));
|
||||||
|
|
||||||
|
updateModel();
|
||||||
updateSearch();
|
updateSearch();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,6 +274,12 @@ void ItemLibrary::setSearchFilter(const QString &searchFilter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ItemLibrary::updateModel()
|
||||||
|
{
|
||||||
|
m_d->m_itemLibraryModel->update(m_d->m_itemLibraryInfo.data());
|
||||||
|
updateSearch();
|
||||||
|
}
|
||||||
|
|
||||||
void ItemLibrary::updateSearch()
|
void ItemLibrary::updateSearch()
|
||||||
{
|
{
|
||||||
setSearchFilter(m_d->m_lineEdit->text());
|
setSearchFilter(m_d->m_lineEdit->text());
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#ifndef ITEMLIBRARY_H
|
#ifndef ITEMLIBRARY_H
|
||||||
#define ITEMLIBRARY_H
|
#define ITEMLIBRARY_H
|
||||||
|
|
||||||
|
#include "itemlibraryinfo.h"
|
||||||
#include <QtGui/QFrame>
|
#include <QtGui/QFrame>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
@@ -47,10 +48,11 @@ public:
|
|||||||
ItemLibrary(QWidget *parent = 0);
|
ItemLibrary(QWidget *parent = 0);
|
||||||
virtual ~ItemLibrary();
|
virtual ~ItemLibrary();
|
||||||
|
|
||||||
void setMetaInfo(const MetaInfo &metaInfo);
|
void setItemLibraryInfo(ItemLibraryInfo *itemLibraryInfo);
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void setSearchFilter(const QString &searchFilter);
|
void setSearchFilter(const QString &searchFilter);
|
||||||
|
void updateModel();
|
||||||
void updateSearch();
|
void updateSearch();
|
||||||
void clearLineEditFocus();
|
void clearLineEditFocus();
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#include "itemlibrarymodel.h"
|
#include "itemlibrarymodel.h"
|
||||||
#include "metainfo.h"
|
#include "itemlibraryinfo.h"
|
||||||
|
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
@@ -317,7 +317,6 @@ bool ItemLibrarySectionModel::operator<(const ItemLibrarySectionModel &other) co
|
|||||||
ItemLibraryModel::ItemLibraryModel(QScriptEngine *scriptEngine, QObject *parent)
|
ItemLibraryModel::ItemLibraryModel(QScriptEngine *scriptEngine, QObject *parent)
|
||||||
: ItemLibrarySortedModel<ItemLibrarySectionModel>(parent),
|
: ItemLibrarySortedModel<ItemLibrarySectionModel>(parent),
|
||||||
m_scriptEngine(scriptEngine),
|
m_scriptEngine(scriptEngine),
|
||||||
m_metaInfo(0),
|
|
||||||
m_searchText(""),
|
m_searchText(""),
|
||||||
m_itemIconSize(64, 64),
|
m_itemIconSize(64, 64),
|
||||||
m_nextLibId(0)
|
m_nextLibId(0)
|
||||||
@@ -327,8 +326,6 @@ ItemLibraryModel::ItemLibraryModel(QScriptEngine *scriptEngine, QObject *parent)
|
|||||||
|
|
||||||
ItemLibraryModel::~ItemLibraryModel()
|
ItemLibraryModel::~ItemLibraryModel()
|
||||||
{
|
{
|
||||||
if (m_metaInfo)
|
|
||||||
delete m_metaInfo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -387,7 +384,7 @@ bool ItemLibraryModel::isItemVisible(int itemLibId)
|
|||||||
return elementModel(sectionLibId)->isItemVisible(itemLibId);
|
return elementModel(sectionLibId)->isItemVisible(itemLibId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemLibraryModel::update(const MetaInfo &metaInfo)
|
void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo)
|
||||||
{
|
{
|
||||||
QMap<QString, int> sections;
|
QMap<QString, int> sections;
|
||||||
|
|
||||||
@@ -396,13 +393,7 @@ void ItemLibraryModel::update(const MetaInfo &metaInfo)
|
|||||||
m_sections.clear();
|
m_sections.clear();
|
||||||
m_nextLibId = 0;
|
m_nextLibId = 0;
|
||||||
|
|
||||||
if (!m_metaInfo) {
|
foreach (ItemLibraryEntry entry, itemLibraryInfo->entries()) {
|
||||||
m_metaInfo = new MetaInfo(metaInfo);
|
|
||||||
} else {
|
|
||||||
*m_metaInfo = metaInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (ItemLibraryEntry entry, metaInfo.itemLibraryInfo().entries()) {
|
|
||||||
QString itemSectionName = entry.category();
|
QString itemSectionName = entry.category();
|
||||||
ItemLibrarySectionModel *sectionModel;
|
ItemLibrarySectionModel *sectionModel;
|
||||||
ItemLibraryItemModel *itemModel;
|
ItemLibraryItemModel *itemModel;
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ QT_FORWARD_DECLARE_CLASS(QMimeData);
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
class MetaInfo;
|
class ItemLibraryInfo;
|
||||||
class ItemLibraryEntry;
|
class ItemLibraryEntry;
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -131,7 +131,7 @@ public:
|
|||||||
|
|
||||||
QString searchText() const;
|
QString searchText() const;
|
||||||
|
|
||||||
void update(const MetaInfo &metaInfo);
|
void update(ItemLibraryInfo *itemLibraryInfo);
|
||||||
|
|
||||||
QString getTypeName(int libId);
|
QString getTypeName(int libId);
|
||||||
QMimeData *getMimeData(int libId);
|
QMimeData *getMimeData(int libId);
|
||||||
@@ -159,7 +159,6 @@ private:
|
|||||||
QPixmap createDragPixmap(int width, int height);
|
QPixmap createDragPixmap(int width, int height);
|
||||||
|
|
||||||
QWeakPointer<QScriptEngine> m_scriptEngine;
|
QWeakPointer<QScriptEngine> m_scriptEngine;
|
||||||
MetaInfo *m_metaInfo;
|
|
||||||
QMap<int, ItemLibraryEntry> m_itemInfos;
|
QMap<int, ItemLibraryEntry> m_itemInfos;
|
||||||
QMap<int, int> m_sections;
|
QMap<int, int> m_sections;
|
||||||
|
|
||||||
|
|||||||
@@ -172,10 +172,10 @@ void IdItemDelegate::paint(QPainter *painter,
|
|||||||
{
|
{
|
||||||
// if node has no own icon, search for it in the itemlibrary
|
// if node has no own icon, search for it in the itemlibrary
|
||||||
const NodeMetaInfo typeInfo = node.metaInfo();
|
const NodeMetaInfo typeInfo = node.metaInfo();
|
||||||
const ItemLibraryInfo libraryInfo = node.metaInfo().metaInfo().itemLibraryInfo();
|
const ItemLibraryInfo *libraryInfo = node.metaInfo().metaInfo().itemLibraryInfo();
|
||||||
QList <ItemLibraryEntry> infoList = libraryInfo.entriesForType(typeInfo.typeName(),
|
QList <ItemLibraryEntry> infoList = libraryInfo->entriesForType(typeInfo.typeName(),
|
||||||
typeInfo.majorVersion(),
|
typeInfo.majorVersion(),
|
||||||
typeInfo.minorVersion());
|
typeInfo.minorVersion());
|
||||||
foreach (const ItemLibraryEntry &entry, infoList) {
|
foreach (const ItemLibraryEntry &entry, infoList) {
|
||||||
if (!icon.isNull()) {
|
if (!icon.isNull()) {
|
||||||
icon = entry.icon();
|
icon = entry.icon();
|
||||||
|
|||||||
@@ -87,19 +87,14 @@ private:
|
|||||||
QExplicitlySharedDataPointer<Internal::ItemLibraryEntryData> m_data;
|
QExplicitlySharedDataPointer<Internal::ItemLibraryEntryData> m_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CORESHARED_EXPORT ItemLibraryInfo : public QObject
|
||||||
class CORESHARED_EXPORT ItemLibraryInfo
|
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_DISABLE_COPY(ItemLibraryInfo)
|
||||||
friend class Internal::MetaInfoPrivate;
|
friend class Internal::MetaInfoPrivate;
|
||||||
public:
|
public:
|
||||||
ItemLibraryInfo();
|
|
||||||
ItemLibraryInfo(const ItemLibraryInfo &other);
|
|
||||||
~ItemLibraryInfo();
|
~ItemLibraryInfo();
|
||||||
|
|
||||||
ItemLibraryInfo& operator=(const ItemLibraryInfo &other);
|
|
||||||
|
|
||||||
bool isValid();
|
|
||||||
|
|
||||||
QList<ItemLibraryEntry> entries() const;
|
QList<ItemLibraryEntry> entries() const;
|
||||||
QList<ItemLibraryEntry> entriesForType(const QString &typeName, int majorVersion, int minorVersion) const;
|
QList<ItemLibraryEntry> entriesForType(const QString &typeName, int majorVersion, int minorVersion) const;
|
||||||
ItemLibraryEntry entry(const QString &name) const;
|
ItemLibraryEntry entry(const QString &name) const;
|
||||||
@@ -108,9 +103,13 @@ public:
|
|||||||
bool removeEntry(const QString &name);
|
bool removeEntry(const QString &name);
|
||||||
void clearEntries();
|
void clearEntries();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void entriesChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static ItemLibraryInfo createItemLibraryInfo(const ItemLibraryInfo &parentInfo);
|
ItemLibraryInfo(QObject *parent = 0);
|
||||||
QSharedPointer<Internal::ItemLibraryInfoPrivate> m_data;
|
void setBaseInfo(ItemLibraryInfo *baseInfo);
|
||||||
|
QScopedPointer<Internal::ItemLibraryInfoPrivate> m_d;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public:
|
|||||||
bool hasEnumerator(const QString &enumeratorName) const;
|
bool hasEnumerator(const QString &enumeratorName) const;
|
||||||
EnumeratorMetaInfo enumerator(const QString &enumeratorName) const;
|
EnumeratorMetaInfo enumerator(const QString &enumeratorName) const;
|
||||||
|
|
||||||
ItemLibraryInfo itemLibraryInfo() const;
|
ItemLibraryInfo *itemLibraryInfo() const;
|
||||||
|
|
||||||
QString fromQtTypes(const QString &type) const;
|
QString fromQtTypes(const QString &type) const;
|
||||||
|
|
||||||
|
|||||||
@@ -55,12 +55,9 @@ public:
|
|||||||
class ItemLibraryInfoPrivate
|
class ItemLibraryInfoPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef QSharedPointer<ItemLibraryInfoPrivate> Pointer;
|
|
||||||
typedef QSharedPointer<ItemLibraryInfoPrivate> WeakPointer;
|
|
||||||
|
|
||||||
QHash<QString, ItemLibraryEntry> nameToEntryHash;
|
QHash<QString, ItemLibraryEntry> nameToEntryHash;
|
||||||
|
|
||||||
Pointer parentData;
|
QWeakPointer<ItemLibraryInfo> baseInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
@@ -212,13 +209,9 @@ QDataStream& operator>>(QDataStream& stream, ItemLibraryEntry &itemLibraryEntry)
|
|||||||
// ItemLibraryInfo
|
// ItemLibraryInfo
|
||||||
//
|
//
|
||||||
|
|
||||||
ItemLibraryInfo::ItemLibraryInfo(const ItemLibraryInfo &other) :
|
ItemLibraryInfo::ItemLibraryInfo(QObject *parent) :
|
||||||
m_data(other.m_data)
|
QObject(parent),
|
||||||
{
|
m_d(new Internal::ItemLibraryInfoPrivate())
|
||||||
}
|
|
||||||
|
|
||||||
ItemLibraryInfo::ItemLibraryInfo() :
|
|
||||||
m_data(new Internal::ItemLibraryInfoPrivate())
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,89 +219,72 @@ ItemLibraryInfo::~ItemLibraryInfo()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemLibraryInfo& ItemLibraryInfo::operator=(const ItemLibraryInfo &other)
|
|
||||||
{
|
|
||||||
m_data = other.m_data;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ItemLibraryInfo::isValid()
|
|
||||||
{
|
|
||||||
return m_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemLibraryInfo ItemLibraryInfo::createItemLibraryInfo(const ItemLibraryInfo &parentInfo)
|
|
||||||
{
|
|
||||||
ItemLibraryInfo info;
|
|
||||||
Q_ASSERT(parentInfo.m_data);
|
|
||||||
info.m_data->parentData = parentInfo.m_data;
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<ItemLibraryEntry> ItemLibraryInfo::entriesForType(const QString &typeName, int majorVersion, int minorVersion) const
|
QList<ItemLibraryEntry> ItemLibraryInfo::entriesForType(const QString &typeName, int majorVersion, int minorVersion) const
|
||||||
{
|
{
|
||||||
QList<ItemLibraryEntry> entries;
|
QList<ItemLibraryEntry> entries;
|
||||||
|
|
||||||
Internal::ItemLibraryInfoPrivate::WeakPointer pointer(m_data);
|
foreach (const ItemLibraryEntry &entry, m_d->nameToEntryHash.values()) {
|
||||||
while (pointer) {
|
if (entry.typeName() == typeName
|
||||||
foreach (const ItemLibraryEntry &entry, m_data->nameToEntryHash.values()) {
|
&& entry.majorVersion() == majorVersion
|
||||||
if (entry.typeName() == typeName
|
&& entry.minorVersion() == minorVersion)
|
||||||
&& entry.majorVersion() == majorVersion
|
entries += entry;
|
||||||
&& entry.minorVersion() == minorVersion)
|
|
||||||
entries += entry;
|
|
||||||
}
|
|
||||||
|
|
||||||
pointer = pointer->parentData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_d->baseInfo)
|
||||||
|
entries += m_d->baseInfo->entriesForType(typeName, majorVersion, minorVersion);
|
||||||
|
|
||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemLibraryEntry ItemLibraryInfo::entry(const QString &name) const
|
ItemLibraryEntry ItemLibraryInfo::entry(const QString &name) const
|
||||||
{
|
{
|
||||||
Internal::ItemLibraryInfoPrivate::WeakPointer pointer(m_data);
|
if (m_d->nameToEntryHash.contains(name))
|
||||||
while (pointer) {
|
return m_d->nameToEntryHash.value(name);
|
||||||
if (pointer->nameToEntryHash.contains(name))
|
|
||||||
return pointer->nameToEntryHash.value(name);
|
if (m_d->baseInfo)
|
||||||
pointer = pointer->parentData;
|
return m_d->baseInfo->entry(name);
|
||||||
}
|
|
||||||
|
|
||||||
return ItemLibraryEntry();
|
return ItemLibraryEntry();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ItemLibraryEntry> ItemLibraryInfo::entries() const
|
QList<ItemLibraryEntry> ItemLibraryInfo::entries() const
|
||||||
{
|
{
|
||||||
QList<ItemLibraryEntry> list;
|
QList<ItemLibraryEntry> list = m_d->nameToEntryHash.values();
|
||||||
|
if (m_d->baseInfo)
|
||||||
Internal::ItemLibraryInfoPrivate::WeakPointer pointer(m_data);
|
list += m_d->baseInfo->entries();
|
||||||
while (pointer) {
|
|
||||||
list += pointer->nameToEntryHash.values();
|
|
||||||
pointer = pointer->parentData;
|
|
||||||
}
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemLibraryInfo::addEntry(const ItemLibraryEntry &entry)
|
void ItemLibraryInfo::addEntry(const ItemLibraryEntry &entry)
|
||||||
{
|
{
|
||||||
if (m_data->nameToEntryHash.contains(entry.name()))
|
if (m_d->nameToEntryHash.contains(entry.name()))
|
||||||
throw InvalidMetaInfoException(__LINE__, __FUNCTION__, __FILE__);
|
throw InvalidMetaInfoException(__LINE__, __FUNCTION__, __FILE__);
|
||||||
m_data->nameToEntryHash.insert(entry.name(), entry);
|
m_d->nameToEntryHash.insert(entry.name(), entry);
|
||||||
|
|
||||||
|
emit entriesChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ItemLibraryInfo::removeEntry(const QString &name)
|
bool ItemLibraryInfo::removeEntry(const QString &name)
|
||||||
{
|
{
|
||||||
Internal::ItemLibraryInfoPrivate::WeakPointer pointer(m_data);
|
if (m_d->nameToEntryHash.remove(name)) {
|
||||||
while (pointer) {
|
emit entriesChanged();
|
||||||
if (pointer->nameToEntryHash.remove(name))
|
return true;
|
||||||
return true;
|
|
||||||
pointer = pointer->parentData;
|
|
||||||
}
|
}
|
||||||
|
if (m_d->baseInfo)
|
||||||
|
return m_d->baseInfo->removeEntry(name);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemLibraryInfo::clearEntries()
|
void ItemLibraryInfo::clearEntries()
|
||||||
{
|
{
|
||||||
m_data->nameToEntryHash.clear();
|
m_d->nameToEntryHash.clear();
|
||||||
|
emit entriesChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ItemLibraryInfo::setBaseInfo(ItemLibraryInfo *baseInfo)
|
||||||
|
{
|
||||||
|
m_d->baseInfo = baseInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
|||||||
@@ -83,18 +83,19 @@ public:
|
|||||||
QHash<QString, NodeMetaInfo> m_nodeMetaInfoHash;
|
QHash<QString, NodeMetaInfo> m_nodeMetaInfoHash;
|
||||||
QHash<QString, EnumeratorMetaInfo> m_enumeratorMetaInfoHash;
|
QHash<QString, EnumeratorMetaInfo> m_enumeratorMetaInfoHash;
|
||||||
QHash<QString, QString> m_QtTypesToQmlTypes;
|
QHash<QString, QString> m_QtTypesToQmlTypes;
|
||||||
ItemLibraryInfo m_itemLibraryInfo;
|
QScopedPointer<ItemLibraryInfo> m_itemLibraryInfo;
|
||||||
|
|
||||||
MetaInfo *m_q;
|
MetaInfo *m_q;
|
||||||
bool m_isInitialized;
|
bool m_isInitialized;
|
||||||
};
|
};
|
||||||
|
|
||||||
MetaInfoPrivate::MetaInfoPrivate(MetaInfo *q) :
|
MetaInfoPrivate::MetaInfoPrivate(MetaInfo *q) :
|
||||||
|
m_itemLibraryInfo(new ItemLibraryInfo()),
|
||||||
m_q(q),
|
m_q(q),
|
||||||
m_isInitialized(false)
|
m_isInitialized(false)
|
||||||
{
|
{
|
||||||
if (!m_q->isGlobal())
|
if (!m_q->isGlobal())
|
||||||
m_itemLibraryInfo = ItemLibraryInfo::createItemLibraryInfo(m_q->global().itemLibraryInfo());
|
m_itemLibraryInfo->setBaseInfo(MetaInfo::global().itemLibraryInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MetaInfoPrivate::clear()
|
void MetaInfoPrivate::clear()
|
||||||
@@ -102,7 +103,7 @@ void MetaInfoPrivate::clear()
|
|||||||
m_superClassHash.clear();
|
m_superClassHash.clear();
|
||||||
m_nodeMetaInfoHash.clear();
|
m_nodeMetaInfoHash.clear();
|
||||||
m_enumeratorMetaInfoHash.clear();
|
m_enumeratorMetaInfoHash.clear();
|
||||||
m_itemLibraryInfo.clearEntries();
|
m_itemLibraryInfo->clearEntries();
|
||||||
m_isInitialized = false;
|
m_isInitialized = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -534,9 +535,9 @@ EnumeratorMetaInfo MetaInfo::enumerator(const QString &enumeratorName) const
|
|||||||
return EnumeratorMetaInfo();
|
return EnumeratorMetaInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemLibraryInfo MetaInfo::itemLibraryInfo() const
|
ItemLibraryInfo *MetaInfo::itemLibraryInfo() const
|
||||||
{
|
{
|
||||||
return m_p->m_itemLibraryInfo;
|
return m_p->m_itemLibraryInfo.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -609,8 +610,8 @@ void MetaInfo::removeNodeInfo(NodeMetaInfo &info)
|
|||||||
m_p->m_superClassHash.remove(info.typeName());
|
m_p->m_superClassHash.remove(info.typeName());
|
||||||
// TODO: Other types might specify type as parent type
|
// TODO: Other types might specify type as parent type
|
||||||
foreach (const ItemLibraryEntry &entry,
|
foreach (const ItemLibraryEntry &entry,
|
||||||
m_p->m_itemLibraryInfo.entriesForType(info.typeName(), info.majorVersion(), info.minorVersion())) {
|
m_p->m_itemLibraryInfo->entriesForType(info.typeName(), info.majorVersion(), info.minorVersion())) {
|
||||||
m_p->m_itemLibraryInfo.removeEntry(entry.name());
|
m_p->m_itemLibraryInfo->removeEntry(entry.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (!isGlobal()) {
|
} else if (!isGlobal()) {
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ void MetaInfoParser::handleNodeItemLibraryEntryElement(QXmlStreamReader &reader,
|
|||||||
handleItemLibraryEntryPropertyElement(reader, entry);
|
handleItemLibraryEntryPropertyElement(reader, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_metaInfo.itemLibraryInfo().addEntry(entry);
|
m_metaInfo.itemLibraryInfo()->addEntry(entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -307,7 +307,7 @@ void SubComponentManagerPrivate::registerQmlFile(const QFileInfo &fileInfo, cons
|
|||||||
itemLibraryEntry.setType(nodeInfo.typeName(), nodeInfo.majorVersion(), nodeInfo.minorVersion());
|
itemLibraryEntry.setType(nodeInfo.typeName(), nodeInfo.majorVersion(), nodeInfo.minorVersion());
|
||||||
itemLibraryEntry.setName(componentName);
|
itemLibraryEntry.setName(componentName);
|
||||||
itemLibraryEntry.setCategory(tr("QML Components"));
|
itemLibraryEntry.setCategory(tr("QML Components"));
|
||||||
m_metaInfo.itemLibraryInfo().addEntry(itemLibraryEntry);
|
m_metaInfo.itemLibraryInfo()->addEntry(itemLibraryEntry);
|
||||||
|
|
||||||
m_metaInfo.addNodeInfo(nodeInfo, baseType);
|
m_metaInfo.addNodeInfo(nodeInfo, baseType);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user