on xenial help sign in
MenuitemFactory: add utility functions to get proper components allow user to override
4084254Marco Trevisan (Treviño)
qml/Panel/Indicators/MenuItemFactory.qml+32−16
@@ -31,7 +31,8 @@ Item {
31 property var rootModel: null
31 property var rootModel: null
32 property var menuModel: null
32 property var menuModel: null
33
33
34+ property var _userMap: null
34− readonly property var _map: {
35+ readonly property var _typeToComponent: {
35 "default": {
36 "default": {
36 "unity.widgets.systemsettings.tablet.volumecontrol" : sliderMenu,
37 "unity.widgets.systemsettings.tablet.volumecontrol" : sliderMenu,
37 "unity.widgets.systemsettings.tablet.switch" : switchMenu,
38 "unity.widgets.systemsettings.tablet.switch" : switchMenu,
@@ -87,6 +88,32 @@ Item {
87 }
88 }
88 }
89 }
89
90
91+ function getComponentForIndicatorEntryType(indicator, type) {
92+ var component = undefined;
93+ var map = _userMap || _typeToComponent
94+ var indicatorComponents = map[indicator];
95+
96+ if (indicatorComponents !== undefined) {
97+ component = indicatorComponents[type];
98+ }
99+
100+ if (component === undefined) {
101+ component = map["default"][type];
102+ }
103+
104+ return component
105+ }
106+
107+ function getComponentForIndicatorEntryAction(indicator, action) {
108+ var component = undefined;
109+ var indicatorFilter = _action_filter_map[indicator]
110+
111+ if (indicatorFilter !== undefined) {
112+ component = indicatorFilter[action];
113+ }
114+ return component
115+ }
116+
90 function getExtendedProperty(object, propertyName, defaultValue) {
117 function getExtendedProperty(object, propertyName, defaultValue) {
91 if (object && object.hasOwnProperty(propertyName)) {
118 if (object && object.hasOwnProperty(propertyName)) {
92 return object[propertyName];
119 return object[propertyName];
@@ -974,25 +1001,14 @@ Item {
974 context = context.substring("fake-".length)
1001 context = context.substring("fake-".length)
975
1002
976 if (modelData.action !== undefined && modelData.action !== "") {
1003 if (modelData.action !== undefined && modelData.action !== "") {
977− var contextFilter = _action_filter_map[context]
1004+ var component = getComponentForIndicatorEntryAction(context, modelData.action)
978− if (contextFilter !== undefined) {
979− var component = contextFilter[modelData.action];
980− if (component !== undefined)
1005+ if (component !== undefined) {
981− return component
1006+ return component
982 }
1007 }
983 }
1008 }
984
1009
985 if (modelData.type !== undefined && modelData.type !== "") {
1010 if (modelData.type !== undefined && modelData.type !== "") {
986− var component = undefined;
1011+ var component = getComponentForIndicatorEntryType(context, modelData.type)
987−
988− var contextComponents = _map[context];
989− if (contextComponents !== undefined) {
990− component = contextComponents[modelData.type];
991− }
992−
993− if (component === undefined) {
994− component = _map["default"][modelData.type];
995− }
996 if (component !== undefined) {
1012 if (component !== undefined) {
997 return component;
1013 return component;
998 }
1014 }
tests/qmltests/Panel/tst_IndicatorPage.qml+1−1
@@ -36,7 +36,7 @@ Item {
36 menuObjectPath: "/com/canonical/indicator/test"
36 menuObjectPath: "/com/canonical/indicator/test"
37
37
38 factory {
38 factory {
39− _map: {
39+ _userMap: {
40 "default": {
40 "default": {
41 "com.canonical.indicator.test" : testMenu
41 "com.canonical.indicator.test" : testMenu
42 }
42 }