diff --git a/extension.js b/extension.js index b1015c1..ff5837e 100644 --- a/extension.js +++ b/extension.js @@ -31,6 +31,8 @@ const PopupMenu = imports.ui.popupMenu; const _ = ExtensionUtils.gettext; +allowedRateElements = []; + const Indicator = GObject.registerClass( class Indicator extends PanelMenu.Button { _init() { @@ -42,21 +44,35 @@ const Indicator = GObject.registerClass( })); let sampleRate = getForcedSampleRate(); - let currentSampleRate = new PopupMenu.PopupMenuItem(_("Sample Rate: " + sampleRate)); - this.menu.addMenuItem(currentSampleRate); - let allowedRates = getAllowedSampleRates(); + allowedRateElements = []; for (let i = 0; i < allowedRates.length; i++) { - let allowedRate = new PopupMenu.PopupMenuItem(_("Allowed Rates: " + allowedRates[i])); + let allowedRate = new PopupMenu.PopupMenuItem(_("Sample Rate: " + allowedRates[i])); + + if (allowedRates[i] == sampleRate) { + allowedRate.setOrnament(PopupMenu.Ornament.DOT); + } + allowedRate.connect('activate', () => { console.log("set sample rate " + allowedRates[i]); + for (let k = 0; k < allowedRateElements.length; k++) { + allowedRateElements[k].setOrnament(PopupMenu.Ornament.NONE); + } + setSampleRate(allowedRates[i]); - currentSampleRate.label.text = "Sample Rate: " + getForcedSampleRate(); + + // sanity check sample rate + let forcedRate = getForcedSampleRate(); + + if (forcedRate == allowedRates[i]) { + allowedRate.setOrnament(PopupMenu.Ornament.DOT); + } }); - this.menu.addMenuItem(allowedRate); + this.menu.addMenuItem(allowedRate); + allowedRateElements.push(allowedRate); } } });