QmlDesigner: Allow going into component from item library

Added "Go into Component" to item library context menu for items that
have customComponentSource available. Doubleclicking on the item also
does the same.

Fixes: QDS-5786
Change-Id: I954bfb4864d74fa04b5da5b961f9aa2035132022
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Miikka Heikkinen
2022-02-11 13:41:22 +02:00
parent b0589fb8fe
commit 6173b78860
9 changed files with 59 additions and 11 deletions

View File

@@ -68,6 +68,11 @@ QString ItemLibraryItem::requiredImport() const
return m_itemLibraryEntry.requiredImport();
}
QString ItemLibraryItem::componentSource() const
{
return m_itemLibraryEntry.customComponentSource();
}
bool ItemLibraryItem::setVisible(bool isVisible)
{
if (isVisible != m_isVisible) {

View File

@@ -45,6 +45,7 @@ class ItemLibraryItem: public QObject
Q_PROPERTY(QString componentPath READ componentPath FINAL)
Q_PROPERTY(bool itemUsable READ isUsable FINAL)
Q_PROPERTY(QString itemRequiredImport READ requiredImport FINAL)
Q_PROPERTY(QString itemComponentSource READ componentSource FINAL)
public:
ItemLibraryItem(const ItemLibraryEntry &itemLibraryEntry, bool isImported, QObject *parent);
@@ -55,6 +56,7 @@ public:
QString itemLibraryIconPath() const;
QString componentPath() const;
QString requiredImport() const;
QString componentSource() const;
bool setVisible(bool isVisible);
bool isVisible() const;

View File

@@ -32,6 +32,7 @@
#include <designeractionmanager.h>
#include <designermcumanager.h>
#include <documentmanager.h>
#include <itemlibraryimageprovider.h>
#include <itemlibraryinfo.h>
#include <itemlibrarymodel.h>
@@ -269,6 +270,11 @@ void ItemLibraryWidget::handleAddImport(int index)
updateSearch();
}
void ItemLibraryWidget::goIntoComponent(const QString &source)
{
DocumentManager::goIntoComponent(source);
}
void ItemLibraryWidget::delayedUpdateModel()
{
static bool disableTimer = DesignerSettings::getValue(DesignerSettingsKey::DISABLE_ITEM_LIBRARY_UPDATE_TIMER).toBool();

View File

@@ -95,6 +95,7 @@ public:
Q_INVOKABLE void addImportForItem(const QString &importUrl);
Q_INVOKABLE void handleSearchfilterChanged(const QString &filterText);
Q_INVOKABLE void handleAddImport(int index);
Q_INVOKABLE void goIntoComponent(const QString &source);
signals:
void itemActivated(const QString &itemName);

View File

@@ -108,14 +108,19 @@ static inline void applyProperties(ModelNode &node, const QHash<PropertyName, QV
}
}
static void openFileComponent(const ModelNode &modelNode)
static void openFileComponentForFile(const QString &fileName)
{
QmlDesignerPlugin::instance()->viewManager().nextFileIsCalledInternally();
Core::EditorManager::openEditor(FilePath::fromString(modelNode.metaInfo().componentFileName()),
Core::EditorManager::openEditor(FilePath::fromString(fileName),
Utils::Id(),
Core::EditorManager::DoNotMakeVisible);
}
static void openFileComponent(const ModelNode &modelNode)
{
openFileComponentForFile(modelNode.metaInfo().componentFileName());
}
static void openFileComponentForDelegate(const ModelNode &modelNode)
{
openFileComponent(modelNode.nodeProperty("delegate").modelNode());
@@ -305,6 +310,11 @@ bool DocumentManager::goIntoComponent(const ModelNode &modelNode)
return false;
}
void DocumentManager::goIntoComponent(const QString &fileName)
{
openFileComponentForFile(fileName);
}
bool DocumentManager::createFile(const QString &filePath, const QString &contents)
{
Utils::TextFileFormat textFileFormat;

View File

@@ -52,6 +52,7 @@ public:
void removeEditors(const QList<Core::IEditor *> &editors);
static bool goIntoComponent(const ModelNode &modelNode);
static void goIntoComponent(const QString &fileName);
static bool createFile(const QString &filePath, const QString &contents);
static void addFileToVersionControl(const QString &directoryPath, const QString &newFilePath);