@@ -20,6 +20,7 @@
20import QtQuick 2.0
20import QtQuick 2.0
21import Unity.Indicators 0.1 as Indicators
21import Unity.Indicators 0.1 as Indicators
22import Unity.Indicators.Network 0.1 as ICNetwork
22import Unity.Indicators.Network 0.1 as ICNetwork
23+import QMenuModel 0.1 as QMenuModel
25 id: menuFactory
26 id: menuFactory
@@ -47,35 +48,151 @@ Item {
47 Component {
48 Component {
48 id: sliderMenu;
49 id: sliderMenu;
49 Indicators.SliderMenuItem {
50 Indicators.SliderMenuItem {
51+ property QtObject menu: null
53+ text: menu && menu.label ? menu.label : ""
54+ icon: menu ? menu.icon : ""
55+ minIcon: menu.ext.minIcon
56+ maxIcon: menu.ext.maxIcon
58+ minimumValue: menu.ext.minValue ? menu.ext.minValue : 0.0
60+ var maximum = menu.ext.maxValue ? menu.ext.maxValue : 1.0
61+ if (maximum <= minimumValue) {
62+ return minimumValue + 1;
66+ value: menu ? menu.actionState : 0.0
67+ enabled: menu ? menu.sensitive : false
50 Component.onCompleted: {
69 Component.onCompleted: {
51 model.loadExtendedAttributes(modelIndex, {'min-value': 'double',
70 model.loadExtendedAttributes(modelIndex, {'min-value': 'double',
52 'max-value': 'double',
71 'max-value': 'double',
53 'min-icon': 'icon',
72 'min-icon': 'icon',
54 'max-icon': 'icon'});
73 'max-icon': 'icon'});
76+ // FIXME: The interval should be [0.0 - 1.0]. Unfortunately, when
77+ // reaching the boundaries (0.0 or 1.0), the value is converted
78+ // to an integer when automatically wrapped in a variant when
79+ // passed to QStateAction::updateState(…). The server chokes on
80+ // those values, complaining that they’re not of the right type…
82+ if (value == Math.round(value)) {
83+ if (value >= maximumValue) {
84+ model.changeState(modelIndex, maximumValue - 0.000001);
85+ } else if (value <= minimumValue) {
86+ model.changeState(modelIndex, minimumValue + 0.000001);
88+ model.changeState(modelIndex, value * 1.000001);
91+ model.changeState(modelIndex, value);
58− Component { id: buttonMenu; Indicators.ButtonMenuItem {} }
96+
59 Component { id: divMenu; Indicators.DivMenuItem {} }
97 Component { id: divMenu; Indicators.DivMenuItem {} }
101+ Indicators.ButtonMenuItem {
102+ property QtObject menu: null
104+ text: menu && menu.label ? menu.label : ""
105+ enabled: menu ? menu.sensitive : false
107+ onActivate: model.activate(modelIndex);
60− Component { id: sectionMenu; Indicators.SectionMenuItem {} }
112+ Indicators.SectionMenuItem {
113+ property QtObject menu: null
115+ text: menu && menu.label ? menu.label : ""
61− Component { id: progressMenu; Indicators.ProgressMenuItem {} }
121+ Indicators.ProgressMenuItem {
122+ property QtObject menu: null
124+ text: menu && menu.label ? menu.label : ""
125+ icon: menu ? menu.icon : ""
126+ value : menu ? menu.actionState : 0.0
62− Component { id: standardMenu; Indicators.StandardMenuItem {} }
132+ Indicators.StandardMenuItem {
133+ property QtObject menu: null
135+ text: menu && menu.label ? menu.label : ""
136+ icon: menu ? menu.icon : ""
137+ checkable: menu ? (menu.isCheck || menu.isRadio) : false
138+ checked: checkable ? menu.isToggled : false
139+ enabled: menu ? menu.sensitive : false
141+ onActivate: model.activate(modelIndex);
63− Component { id: switchMenu; Indicators.SwitchMenuItem {} }
147+ Indicators.SwitchMenuItem {
148+ property QtObject menu: null
150+ text: menu && menu.label ? menu.label : ""
151+ icon: menu ? menu.icon : ""
152+ checked: menu ? menu.isToggled : false
153+ enabled: menu ? menu.sensitive : false
155+ onActivate: model.activate(modelIndex);
64 Component {
159 Component {
65 id: wifiSection;
160 id: wifiSection;
66− ICNetwork.WifiSection {
161+ Indicators.SectionMenuItem {
162+ property QtObject menu: null
164+ text: menu && menu.label ? menu.label : ""
165+ busy: menu ? menu.ext.xCanonicalBusyAction : false
67 Component.onCompleted: {
167 Component.onCompleted: {
68 model.loadExtendedAttributes(modelIndex, {'x-canonical-busy-action': 'bool'});
168 model.loadExtendedAttributes(modelIndex, {'x-canonical-busy-action': 'bool'});
72 Component {
173 Component {
73 id: accessPoint;
174 id: accessPoint;
74 ICNetwork.AccessPoint {
175 ICNetwork.AccessPoint {
176+ property QtObject menu: null
177+// property var strenthAction: QMenuModel.UnityMenuAction {
178+// model: menuFactory.model ? menuFactory.model : null
179+// name: menu ? menu.ext.xCanonicalWifiApStrengthAction : ""
182+ text: menu && menu.label ? menu.label : ""
183+ icon: menu ? menu.icon : ""
184+ secure: menu ? menu.ext.xCanonicalWifiApIsSecure : false
185+ adHoc: menu ? menu.ext.xCanonicalWifiApIsAdhoc : false
186+ checked: menu ? menu.isToggled : false
187+// signalStrength: strenthAction.valid ? strenthAction.state : 0
188+ enabled: menu ? menu.sensitive : false
75 Component.onCompleted: {
190 Component.onCompleted: {
76 model.loadExtendedAttributes(modelIndex, {'x-canonical-wifi-ap-is-adhoc': 'bool',
191 model.loadExtendedAttributes(modelIndex, {'x-canonical-wifi-ap-is-adhoc': 'bool',
77− 'x-canonical-wifi-ap-is-secure': 'bool'});
192+ 'x-canonical-wifi-ap-is-secure': 'bool',
193+ 'x-canonical-wifi-ap-strength-action': 'string'});
195+ onActivate: model.activate(modelIndex);