aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2019-06-20 12:43:23 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2019-06-25 07:14:43 +0000
commit241c35272399f8e87ebeefc58f3d83ec808a8f61 (patch)
treefae0cba70e7c322a8e2ad94cf333504e16a94dd9
parent5be6e8401670c8c6117e95290276b11f4b633a63 (diff)
QmlDesigner: Allow adding of fonts
This adds ResourceHandler for tff and otf files to the resource browser. Change-Id: I8fc757162266d79d656ee58bd0f948107d58db4d Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/qmldesigner/components/componentcore/componentcore_constants.h1
-rw-r--r--src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp7
-rw-r--r--src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp32
-rw-r--r--src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h1
-rw-r--r--src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.h1
5 files changed, 42 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h b/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h
index 028d3a21b4..0535a8f52e 100644
--- a/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h
+++ b/src/plugins/qmldesigner/components/componentcore/componentcore_constants.h
@@ -165,6 +165,7 @@ const int priorityGenericToolBar = 50;
const int priorityLast = 60;
const char addImagesDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Image Files");
+const char addFontsDisplayString[] = QT_TRANSLATE_NOOP("QmlDesignerAddResources", "Font Files");
} //ComponentCoreConstants
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
index 6edbacec36..37e1fdfd53 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
@@ -1026,6 +1026,13 @@ void DesignerActionManager::createDefaultAddResourceHandler()
registerAddResourceHandler(AddResourceHandler(ComponentCoreConstants::addImagesDisplayString,
"*.svg",
ModelNodeOperations::addImageToProject));
+
+ registerAddResourceHandler(AddResourceHandler(ComponentCoreConstants::addFontsDisplayString,
+ "*.ttf",
+ ModelNodeOperations::addFontToProject));
+ registerAddResourceHandler(AddResourceHandler(ComponentCoreConstants::addFontsDisplayString,
+ "*.otf",
+ ModelNodeOperations::addFontToProject));
}
void DesignerActionManager::addDesignerAction(ActionInterface *newAction)
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
index 3c31998576..9f880c453b 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
@@ -966,6 +966,38 @@ void addTabBarToStackedContainer(const SelectionContext &selectionContext)
}
+bool addFontToProject(const QStringList &fileNames, const QString &defaultDirectory)
+{
+ QString directory = AddImagesDialog::getDirectory(fileNames, defaultDirectory);
+
+ if (directory.isEmpty())
+ return true;
+
+ bool allSuccessful = true;
+ for (const QString &fileName : fileNames) {
+ const QString targetFile = directory + "/" + QFileInfo(fileName).fileName();
+ const bool success = QFile::copy(fileName, targetFile);
+
+ auto document = QmlDesignerPlugin::instance()->currentDesignDocument();
+
+ QTC_ASSERT(document, return false);
+
+ if (success) {
+ ProjectExplorer::Node *node = ProjectExplorer::ProjectTree::nodeForFile(document->fileName());
+ if (node) {
+ ProjectExplorer::FolderNode *containingFolder = node->parentFolderNode();
+ if (containingFolder)
+ containingFolder->addFiles(QStringList(targetFile));
+ }
+ } else {
+ allSuccessful = false;
+ }
+ }
+
+ return allSuccessful;
+}
+
+
bool addImageToProject(const QStringList &fileNames, const QString &defaultDirectory)
{
QString directory = AddImagesDialog::getDirectory(fileNames, defaultDirectory);
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h
index e3396a303e..52dfaf6f1d 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.h
@@ -73,6 +73,7 @@ void increaseIndexOfStackedContainer(const SelectionContext &selectionContext);
void decreaseIndexOfStackedContainer(const SelectionContext &selectionContext);
void addTabBarToStackedContainer(const SelectionContext &selectionContext);
bool addImageToProject(const QStringList &fileNames, const QString &directory);
+bool addFontToProject(const QStringList &fileNames, const QString &directory);
} // namespace ModelNodeOperationso
} //QmlDesigner
diff --git a/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.h b/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.h
index cfffeeaca4..f686631079 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.h
+++ b/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.h
@@ -27,6 +27,7 @@
#include <qmlitemnode.h>
+#include <QDir>
#include <QObject>
#include <QStringList>
#include <QUrl>