From ccab280b21f53505c1a9dccf183b651619f7065a Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Thu, 25 Nov 2010 12:54:58 +0100
Subject: [PATCH] QmlProject: Support arbitrary file suffixes

Add new "Files {}" element that supports showing files with arbitrary
endings in the project tree.

This new element is only available in new "QmlProject 1.1" namespace.

Task-number: QTCREATORBUG-3197
Reviewed-by: Thomas Hartmann
---
 .../qml-type-descriptions/qmlproject-types.xml     | 11 +++++++++++
 .../fileformat/filefilteritems.cpp                 | 11 +++++++++++
 .../qmlprojectmanager/fileformat/filefilteritems.h | 14 ++++++++++++++
 .../fileformat/qmlprojectfileformat.cpp            |  6 ++++++
 4 files changed, 42 insertions(+)

diff --git a/share/qtcreator/qml-type-descriptions/qmlproject-types.xml b/share/qtcreator/qml-type-descriptions/qmlproject-types.xml
index f8ae4aa1bcc..0a7a68e0348 100644
--- a/share/qtcreator/qml-type-descriptions/qmlproject-types.xml
+++ b/share/qtcreator/qml-type-descriptions/qmlproject-types.xml
@@ -3,6 +3,7 @@
     <type name="QmlProject.Project">
         <exports>
             <export module="QmlProject" version="1.0" type="Project"/>
+            <export module="QmlProject" version="1.1" type="Project"/>
         </exports>
         <property name="sourceDirectory" type="string"/>
         <property name="importPaths" type="string" isList="true"/>
@@ -19,24 +20,34 @@
     <type name="QmlProject.QmlFiles" extends="FileFilterBaseItem">
         <exports>
             <export module="QmlProject" version="1.0" type="QmlFiles"/>
+            <export module="QmlProject" version="1.1" type="QmlFiles"/>
         </exports>
     </type>
     <type name="QmlProject.JavaScriptFiles" extends="FileFilterBaseItem">
         <exports>
             <export module="QmlProject" version="1.0" type="JavaScriptFiles"/>
+            <export module="QmlProject" version="1.1" type="JavaScriptFiles"/>
         </exports>
 	<property name="filter" type="string"/>
     </type>
     <type name="QmlProject.ImageFiles" extends="FileFilterBaseItem">
         <exports>
             <export module="QmlProject" version="1.0" type="ImageFiles"/>
+            <export module="QmlProject" version="1.1" type="ImageFiles"/>
         </exports>
 	<property name="filter" type="string"/>
     </type>
     <type name="QmlProject.CssFiles" extends="FileFilterBaseItem">
         <exports>
             <export module="QmlProject" version="1.0" type="CssFiles"/>
+            <export module="QmlProject" version="1.1" type="CssFiles"/>
         </exports>
 	<property name="filter" type="string"/>
     </type>
+    <type name="QmlProject.Files" extends="FileFilterBaseItem">
+        <exports>
+            <export module="QmlProject" version="1.1" type="Files"/>
+        </exports>
+        <property name="filter" type="string"/>
+    </type>
 </module>
diff --git a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp
index 3c2ab7c8d9c..f5e9c78afd4 100644
--- a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp
+++ b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp
@@ -296,5 +296,16 @@ void CssFileFilterItem::setFilter(const QString &filter)
     emit filterChanged();
 }
 
+OtherFileFilterItem::OtherFileFilterItem(QObject *parent)
+    : FileFilterBaseItem(parent)
+{
+}
+
+void OtherFileFilterItem::setFilter(const QString &filter)
+{
+    FileFilterBaseItem::setFilter(filter);
+    emit filterChanged();
+}
+
 } // namespace QmlProjectManager
 
diff --git a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h
index 9c69c31bc28..ac007d1f380 100644
--- a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h
+++ b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h
@@ -131,11 +131,25 @@ public:
     CssFileFilterItem(QObject *parent = 0);
 };
 
+class OtherFileFilterItem : public FileFilterBaseItem {
+    Q_OBJECT
+    Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
+
+    void setFilter(const QString &filter);
+
+signals:
+    void filterChanged();
+
+public:
+    OtherFileFilterItem(QObject *parent = 0);
+};
+
 } // namespace QmlProjectManager
 
 QML_DECLARE_TYPE(QmlProjectManager::QmlFileFilterItem)
 QML_DECLARE_TYPE(QmlProjectManager::JsFileFilterItem)
 QML_DECLARE_TYPE(QmlProjectManager::ImageFileFilterItem)
 QML_DECLARE_TYPE(QmlProjectManager::CssFileFilterItem)
+QML_DECLARE_TYPE(QmlProjectManager::OtherFileFilterItem)
 
 #endif // FILEFILTERITEMS_HPROJECTITEM_H
diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp b/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp
index 46b624fec48..220deb62c31 100644
--- a/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp
+++ b/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp
@@ -10,11 +10,17 @@ void QmlProjectFileFormat::registerDeclarativeTypes()
 {
     qmlRegisterType<QmlProjectManager::QmlProjectContentItem>();
     qmlRegisterType<QmlProjectManager::QmlProjectItem>("QmlProject",1,0,"Project");
+    qmlRegisterType<QmlProjectManager::QmlProjectItem>("QmlProject",1,1,"Project");
 
     qmlRegisterType<QmlProjectManager::QmlFileFilterItem>("QmlProject",1,0,"QmlFiles");
+    qmlRegisterType<QmlProjectManager::QmlFileFilterItem>("QmlProject",1,1,"QmlFiles");
     qmlRegisterType<QmlProjectManager::JsFileFilterItem>("QmlProject",1,0,"JavaScriptFiles");
+    qmlRegisterType<QmlProjectManager::JsFileFilterItem>("QmlProject",1,1,"JavaScriptFiles");
     qmlRegisterType<QmlProjectManager::ImageFileFilterItem>("QmlProject",1,0,"ImageFiles");
+    qmlRegisterType<QmlProjectManager::ImageFileFilterItem>("QmlProject",1,1,"ImageFiles");
     qmlRegisterType<QmlProjectManager::CssFileFilterItem>("QmlProject",1,0,"CssFiles");
+    qmlRegisterType<QmlProjectManager::CssFileFilterItem>("QmlProject",1,1,"CssFiles");
+    qmlRegisterType<QmlProjectManager::OtherFileFilterItem>("QmlProject",1,1,"Files");
 }
 
 } // namespace QmlProjectManager
-- 
GitLab