Check sample rate on pop up

This commit is contained in:
hodasemi 2023-03-16 08:49:13 +01:00
parent ec4e3bca02
commit 5e8f17eaf0

View file

@ -31,7 +31,9 @@ const PopupMenu = imports.ui.popupMenu;
const _ = ExtensionUtils.gettext; const _ = ExtensionUtils.gettext;
allowedRateElements = []; let allowedRateElements = [];
let allowedSampleRates = [];
let indicatorButton;
const Indicator = GObject.registerClass( const Indicator = GObject.registerClass(
class Indicator extends PanelMenu.Button { class Indicator extends PanelMenu.Button {
@ -44,35 +46,33 @@ const Indicator = GObject.registerClass(
})); }));
let sampleRate = getForcedSampleRate(); let sampleRate = getForcedSampleRate();
let allowedRates = getAllowedSampleRates(); allowedSampleRates = getAllowedSampleRates();
allowedRateElements = []; allowedRateElements = [];
for (let i = 0; i < allowedRates.length; i++) { for (let i = 0; i < allowedSampleRates.length; i++) {
let allowedRate = new PopupMenu.PopupMenuItem(_("Sample Rate: " + allowedRates[i])); let allowedRate = new PopupMenu.PopupMenuItem(_("Sample Rate: " + allowedSampleRates[i]));
if (allowedRates[i] == sampleRate) { if (allowedSampleRates[i] == sampleRate) {
allowedRate.setOrnament(PopupMenu.Ornament.DOT); allowedRate.setOrnament(PopupMenu.Ornament.DOT);
} }
allowedRate.connect('activate', () => { allowedRate.connect('activate', () => {
console.log("set sample rate " + allowedRates[i]);
for (let k = 0; k < allowedRateElements.length; k++) { for (let k = 0; k < allowedRateElements.length; k++) {
allowedRateElements[k].setOrnament(PopupMenu.Ornament.NONE); allowedRateElements[k].setOrnament(PopupMenu.Ornament.NONE);
} }
setSampleRate(allowedRates[i]); setSampleRate(allowedSampleRates[i]);
// sanity check sample rate // sanity check sample rate
let forcedRate = getForcedSampleRate(); let forcedRate = getForcedSampleRate();
if (forcedRate == allowedRates[i]) { if (forcedRate == allowedSampleRates[i]) {
allowedRate.setOrnament(PopupMenu.Ornament.DOT); allowedRate.setOrnament(PopupMenu.Ornament.DOT);
} }
}); });
this.menu.addMenuItem(allowedRate); this.menu.addMenuItem(allowedRate);
allowedRateElements.push(allowedRate); allowedRateElements.push(allowedRate);
} }
} }
}); });
@ -85,13 +85,26 @@ class Extension {
} }
enable() { enable() {
this._indicator = new Indicator(); indicatorButton = new Indicator();
Main.panel.addToStatusArea(this._uuid, this._indicator);
indicatorButton.connect('button-press-event', () => {
let sampleRate = getForcedSampleRate();
for (let k = 0; k < allowedRateElements.length; k++) {
if (allowedSampleRates[k] == sampleRate) {
allowedRateElements[k].setOrnament(PopupMenu.Ornament.DOT);
} else {
allowedRateElements[k].setOrnament(PopupMenu.Ornament.NONE);
}
}
});
Main.panel.addToStatusArea(this._uuid, indicatorButton);
} }
disable() { disable() {
this._indicator.destroy(); indicatorButton.destroy();
this._indicator = null; indicatorButton = null;
} }
} }
@ -110,16 +123,12 @@ function getForcedSampleRate() {
for (let i = 0; i < lines.length; i++) { for (let i = 0; i < lines.length; i++) {
if (lines[i].includes('clock.force-rate')) { if (lines[i].includes('clock.force-rate')) {
console.log("found current force rate setting");
let phrases = lines[i].split(" "); let phrases = lines[i].split(" ");
for (let j = 0; j < phrases.length; j++) { for (let j = 0; j < phrases.length; j++) {
if (phrases[j].includes("value")) { if (phrases[j].includes("value")) {
let value = phrases[j].slice(7, -1); let value = phrases[j].slice(7, -1);
console.log("with current value " + value);
if (value) { if (value) {
return value; return value;
} }