QmlDesigner: Allow priorities for resource handlers

Change-Id: If9e9ad3ebc57ba2d80f3b1e89d0643223a00fe72
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Thomas Hartmann
2018-02-07 16:29:46 +01:00
committed by Alessandro Portale
parent 7282e05554
commit 0e6bed71cf
2 changed files with 18 additions and 2 deletions

View File

@@ -49,16 +49,19 @@ struct AddResourceHandler
public: public:
AddResourceHandler( const QString &_category, AddResourceHandler( const QString &_category,
const QString &_filter, const QString &_filter,
AddResourceOperation _operation) AddResourceOperation _operation,
int _priority = 0)
: category(_category) : category(_category)
,filter(_filter) ,filter(_filter)
,operation(_operation) ,operation(_operation)
,piority(_priority)
{ {
} }
QString category; QString category;
QString filter; QString filter;
AddResourceOperation operation; AddResourceOperation operation;
int piority;
}; };
class DesignerActionToolBar : public Utils::StyledBar class DesignerActionToolBar : public Utils::StyledBar

View File

@@ -37,6 +37,7 @@
#include <rewritingexception.h> #include <rewritingexception.h>
#include <qmldesignerplugin.h> #include <qmldesignerplugin.h>
#include <utils/algorithm.h>
#include <utils/flowlayout.h> #include <utils/flowlayout.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/stylehelper.h> #include <utils/stylehelper.h>
@@ -395,14 +396,26 @@ void ItemLibraryWidget::addResources()
QTC_ASSERT(document, return); QTC_ASSERT(document, return);
QList<AddResourceHandler> handlers = QmlDesignerPlugin::instance()->viewManager().designerActionManager().addResourceHandler(); QList<AddResourceHandler> handlers = QmlDesignerPlugin::instance()->viewManager().designerActionManager().addResourceHandler();
QMultiMap<QString, QString> map; QMultiMap<QString, QString> map;
for (const AddResourceHandler &handler : handlers) { for (const AddResourceHandler &handler : handlers) {
map.insert(handler.category, handler.filter); map.insert(handler.category, handler.filter);
} }
QMap<QString, int> priorities;
for (const AddResourceHandler &handler : handlers) {
priorities.insert(handler.category, handler.piority);
}
QStringList sortedKeys = map.uniqueKeys();
Utils::sort(sortedKeys, [&priorities](const QString &first,
const QString &second){
return priorities.value(first) < priorities.value(second);
});
QStringList filters; QStringList filters;
for (const QString &key : map.uniqueKeys()) { for (const QString &key : sortedKeys) {
QString str = key + " ("; QString str = key + " (";
str.append(map.values(key).join(" ")); str.append(map.values(key).join(" "));
str.append(")"); str.append(")");