Changeset View
Changeset View
Standalone View
Standalone View
applet/contents/ui/ListItemBase.qml
Show First 20 Lines • Show All 153 Lines • ▼ Show 20 Line(s) | 153 | PlasmaComponents.Slider { | |||
---|---|---|---|---|---|
154 | id: slider | 154 | id: slider | ||
155 | 155 | | |||
156 | // Helper properties to allow async slider updates. | 156 | // Helper properties to allow async slider updates. | ||
157 | // While we are sliding we must not react to value updates | 157 | // While we are sliding we must not react to value updates | ||
158 | // as otherwise we can easily end up in a loop where value | 158 | // as otherwise we can easily end up in a loop where value | ||
159 | // changes trigger volume changes trigger value changes. | 159 | // changes trigger volume changes trigger value changes. | ||
160 | property int volume: Volume | 160 | property int volume: Volume | ||
161 | property bool ignoreValueChange: true | 161 | property bool ignoreValueChange: true | ||
162 | property bool forceRaiseMaxVolume: false | 162 | readonly property bool forceRaiseMaxVolume: (raiseMaximumVolumeCheckbox.checked && (type === "sink" || type === "source")) | ||
163 | readonly property bool raiseMaxVolume: forceRaiseMaxVolume || volume >= PulseAudio.NormalVolume * 1.01 | 163 | || volume >= PulseAudio.NormalVolume * 1.01 | ||
164 | 164 | | |||
165 | Layout.fillWidth: true | 165 | Layout.fillWidth: true | ||
166 | minimumValue: PulseAudio.MinimalVolume | 166 | minimumValue: PulseAudio.MinimalVolume | ||
167 | maximumValue: raiseMaxVolume ? PulseAudio.MaximalVolume : PulseAudio.NormalVolume | 167 | maximumValue: forceRaiseMaxVolume ? PulseAudio.MaximalVolume : PulseAudio.NormalVolume | ||
168 | stepSize: maximumValue / (maximumValue / PulseAudio.NormalVolume * 100.0) | 168 | stepSize: maximumValue / (maximumValue / PulseAudio.NormalVolume * 100.0) | ||
169 | visible: HasVolume | 169 | visible: HasVolume | ||
170 | enabled: VolumeWritable | 170 | enabled: VolumeWritable | ||
171 | opacity: Muted ? 0.5 : 1 | 171 | opacity: Muted ? 0.5 : 1 | ||
172 | 172 | | |||
173 | Accessible.name: i18nc("Accessibility data on volume slider", "Adjust volume for %1", defaultButton.text) | 173 | Accessible.name: i18nc("Accessibility data on volume slider", "Adjust volume for %1", defaultButton.text) | ||
174 | 174 | | |||
175 | Component.onCompleted: { | 175 | Component.onCompleted: { | ||
▲ Show 20 Lines • Show All 100 Lines • ▼ Show 20 Line(s) | 262 | PlasmaComponents.ContextMenu { | |||
276 | } | 276 | } | ||
277 | function newMenuItem() { | 277 | function newMenuItem() { | ||
278 | return Qt.createQmlObject("import org.kde.plasma.components 2.0 as PlasmaComponents; PlasmaComponents.MenuItem {}", contextMenu); | 278 | return Qt.createQmlObject("import org.kde.plasma.components 2.0 as PlasmaComponents; PlasmaComponents.MenuItem {}", contextMenu); | ||
279 | } | 279 | } | ||
280 | 280 | | |||
281 | function loadDynamicActions() { | 281 | function loadDynamicActions() { | ||
282 | contextMenu.clearMenuItems(); | 282 | contextMenu.clearMenuItems(); | ||
283 | 283 | | |||
284 | // Raise max volume | | |||
285 | menuItem = newMenuItem(); | | |||
286 | menuItem.text = i18n("Raise maximum volume"); | | |||
287 | menuItem.checkable = true; | | |||
288 | menuItem.checked = slider.forceRaiseMaxVolume; | | |||
289 | menuItem.clicked.connect(function() { | | |||
290 | slider.forceRaiseMaxVolume = !slider.forceRaiseMaxVolume; | | |||
291 | if (!slider.forceRaiseMaxVolume && Volume > PulseAudio.NormalVolume) { | | |||
292 | Volume = PulseAudio.NormalVolume; | | |||
293 | } | | |||
294 | }); | | |||
295 | contextMenu.addMenuItem(menuItem); | | |||
296 | | ||||
297 | // Switch all streams of the relevant kind to this device | 284 | // Switch all streams of the relevant kind to this device | ||
298 | if (type == "source" && sourceView.model.count > 1) { | 285 | if (type == "source") { | ||
299 | menuItem = newMenuItem(); | 286 | menuItem = newMenuItem(); | ||
300 | menuItem.text = i18n("Record all audio via this device"); | 287 | menuItem.text = i18n("Record all audio via this device"); | ||
301 | menuItem.icon = "mic-on" // or "mic-ready" // or "audio-input-microphone-symbolic" | 288 | menuItem.icon = "mic-on" // or "mic-ready" // or "audio-input-microphone-symbolic" | ||
302 | menuItem.clicked.connect(function() { | 289 | menuItem.clicked.connect(function() { | ||
303 | PulseObject.switchStreams(); | 290 | PulseObject.switchStreams(); | ||
304 | }); | 291 | }); | ||
305 | contextMenu.addMenuItem(menuItem); | 292 | contextMenu.addMenuItem(menuItem); | ||
306 | } else if (type == "sink" && sinkView.model.count > 1) { | 293 | } else if (type == "sink") { | ||
307 | menuItem = newMenuItem(); | 294 | menuItem = newMenuItem(); | ||
308 | menuItem.text = i18n("Play all audio via this device"); | 295 | menuItem.text = i18n("Play all audio via this device"); | ||
309 | menuItem.icon = "audio-on" // or "audio-ready" // or "audio-speakers-symbolic" | 296 | menuItem.icon = "audio-on" // or "audio-ready" // or "audio-speakers-symbolic" | ||
310 | menuItem.clicked.connect(function() { | 297 | menuItem.clicked.connect(function() { | ||
311 | PulseObject.switchStreams(); | 298 | PulseObject.switchStreams(); | ||
312 | }); | 299 | }); | ||
313 | contextMenu.addMenuItem(menuItem); | 300 | contextMenu.addMenuItem(menuItem); | ||
314 | } | 301 | } | ||
▲ Show 20 Lines • Show All 79 Lines • Show Last 20 Lines |