mirror of
https://gitlab.gnome.org/julianschacher/top-bar-organizer.git
synced 2025-10-27 15:19:09 +00:00
Refactor: Group "private" methods
Group "private" methods to make their purpose clearer.
This commit is contained in:
parent
a73ed96bda
commit
572c6b69c1
172
src/extension.js
172
src/extension.js
@ -40,6 +40,10 @@ class Extension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// Methods used on extension enable. ///
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method adds all new items currently present in the Gnome Shell top
|
* This method adds all new items currently present in the Gnome Shell top
|
||||||
* bar to the box orders.
|
* bar to the box orders.
|
||||||
@ -109,88 +113,6 @@ class Extension {
|
|||||||
this._orderTopBarItems("right");
|
this._orderTopBarItems("right");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This method orders the top bar items of the specified box according to
|
|
||||||
* the configured box orders.
|
|
||||||
* @param {string} box - The box to order.
|
|
||||||
*/
|
|
||||||
_orderTopBarItems(box) {
|
|
||||||
// Get the valid box order.
|
|
||||||
const validBoxOrder = this._createValidBoxOrder(box);
|
|
||||||
|
|
||||||
// Get the relevant box of `Main.panel`.
|
|
||||||
let panelBox;
|
|
||||||
switch (box) {
|
|
||||||
case "left":
|
|
||||||
panelBox = Main.panel._leftBox;
|
|
||||||
break;
|
|
||||||
case "center":
|
|
||||||
panelBox = Main.panel._centerBox;
|
|
||||||
break;
|
|
||||||
case "right":
|
|
||||||
panelBox = Main.panel._rightBox;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Go through the items (or rather their roles) of the validBoxOrder and
|
|
||||||
// order the panelBox accordingly.
|
|
||||||
for (let i = 0; i < validBoxOrder.length; i++) {
|
|
||||||
const role = validBoxOrder[i];
|
|
||||||
// Get the indicator container associated with the current role.
|
|
||||||
const associatedIndicatorContainer = Main.panel.statusArea[role].container;
|
|
||||||
|
|
||||||
panelBox.set_child_at_index(associatedIndicatorContainer, i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function creates a valid box order for the given box.
|
|
||||||
* @param {string} box - The box to return the valid box order for.
|
|
||||||
* Must be one of the following values:
|
|
||||||
* - "left"
|
|
||||||
* - "center"
|
|
||||||
* - "right"
|
|
||||||
* @returns {string[]} - The valid box order.
|
|
||||||
*/
|
|
||||||
_createValidBoxOrder(box) {
|
|
||||||
// Load the configured box order from settings and get the indicator
|
|
||||||
// containers (of the items) currently present in the Gnome Shell top
|
|
||||||
// bar.
|
|
||||||
let boxOrder;
|
|
||||||
let boxIndicatorContainers;
|
|
||||||
switch (box) {
|
|
||||||
case "left":
|
|
||||||
boxOrder = this.settings.get_strv("left-box-order");
|
|
||||||
boxIndicatorContainers = Main.panel._leftBox.get_children();
|
|
||||||
break;
|
|
||||||
case "center":
|
|
||||||
boxOrder = this.settings.get_strv("center-box-order");
|
|
||||||
boxIndicatorContainers = Main.panel._centerBox.get_children();
|
|
||||||
break;
|
|
||||||
case "right":
|
|
||||||
boxOrder = this.settings.get_strv("right-box-order");
|
|
||||||
boxIndicatorContainers = Main.panel._rightBox.get_children();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create an indicator containers set from the indicator containers for
|
|
||||||
// fast easy access.
|
|
||||||
const boxIndicatorContainersSet = new Set(boxIndicatorContainers);
|
|
||||||
|
|
||||||
// Go through the box order and only add items to the valid box order,
|
|
||||||
// where their indicator is present in the Gnome Shell top bar
|
|
||||||
// currently.
|
|
||||||
let validBoxOrder = [ ];
|
|
||||||
for (const role of boxOrder) {
|
|
||||||
// Get the indicator container associated with the current role.
|
|
||||||
const associatedIndicatorContainer = Main.panel.statusArea[role]?.container;
|
|
||||||
|
|
||||||
if (boxIndicatorContainersSet.has(associatedIndicatorContainer)) validBoxOrder.push(role);
|
|
||||||
}
|
|
||||||
|
|
||||||
return validBoxOrder;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overwrite `Panel._addToPanelBox` with a custom method, which handles top
|
* Overwrite `Panel._addToPanelBox` with a custom method, which handles top
|
||||||
* bar item additions to make sure that they are added in the correct
|
* bar item additions to make sure that they are added in the correct
|
||||||
@ -295,6 +217,92 @@ class Extension {
|
|||||||
this._originalAddToPanelBox(role, indicator, positionOverwrite, box);
|
this._originalAddToPanelBox(role, indicator, positionOverwrite, box);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// Helper methods holding logic needed by other methods. ///
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function creates a valid box order for the given box.
|
||||||
|
* @param {string} box - The box to return the valid box order for.
|
||||||
|
* Must be one of the following values:
|
||||||
|
* - "left"
|
||||||
|
* - "center"
|
||||||
|
* - "right"
|
||||||
|
* @returns {string[]} - The valid box order.
|
||||||
|
*/
|
||||||
|
_createValidBoxOrder(box) {
|
||||||
|
// Load the configured box order from settings and get the indicator
|
||||||
|
// containers (of the items) currently present in the Gnome Shell top
|
||||||
|
// bar.
|
||||||
|
let boxOrder;
|
||||||
|
let boxIndicatorContainers;
|
||||||
|
switch (box) {
|
||||||
|
case "left":
|
||||||
|
boxOrder = this.settings.get_strv("left-box-order");
|
||||||
|
boxIndicatorContainers = Main.panel._leftBox.get_children();
|
||||||
|
break;
|
||||||
|
case "center":
|
||||||
|
boxOrder = this.settings.get_strv("center-box-order");
|
||||||
|
boxIndicatorContainers = Main.panel._centerBox.get_children();
|
||||||
|
break;
|
||||||
|
case "right":
|
||||||
|
boxOrder = this.settings.get_strv("right-box-order");
|
||||||
|
boxIndicatorContainers = Main.panel._rightBox.get_children();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create an indicator containers set from the indicator containers for
|
||||||
|
// fast easy access.
|
||||||
|
const boxIndicatorContainersSet = new Set(boxIndicatorContainers);
|
||||||
|
|
||||||
|
// Go through the box order and only add items to the valid box order,
|
||||||
|
// where their indicator is present in the Gnome Shell top bar
|
||||||
|
// currently.
|
||||||
|
let validBoxOrder = [ ];
|
||||||
|
for (const role of boxOrder) {
|
||||||
|
// Get the indicator container associated with the current role.
|
||||||
|
const associatedIndicatorContainer = Main.panel.statusArea[role]?.container;
|
||||||
|
|
||||||
|
if (boxIndicatorContainersSet.has(associatedIndicatorContainer)) validBoxOrder.push(role);
|
||||||
|
}
|
||||||
|
|
||||||
|
return validBoxOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method orders the top bar items of the specified box according to
|
||||||
|
* the configured box orders.
|
||||||
|
* @param {string} box - The box to order.
|
||||||
|
*/
|
||||||
|
_orderTopBarItems(box) {
|
||||||
|
// Get the valid box order.
|
||||||
|
const validBoxOrder = this._createValidBoxOrder(box);
|
||||||
|
|
||||||
|
// Get the relevant box of `Main.panel`.
|
||||||
|
let panelBox;
|
||||||
|
switch (box) {
|
||||||
|
case "left":
|
||||||
|
panelBox = Main.panel._leftBox;
|
||||||
|
break;
|
||||||
|
case "center":
|
||||||
|
panelBox = Main.panel._centerBox;
|
||||||
|
break;
|
||||||
|
case "right":
|
||||||
|
panelBox = Main.panel._rightBox;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Go through the items (or rather their roles) of the validBoxOrder and
|
||||||
|
// order the panelBox accordingly.
|
||||||
|
for (let i = 0; i < validBoxOrder.length; i++) {
|
||||||
|
const role = validBoxOrder[i];
|
||||||
|
// Get the indicator container associated with the current role.
|
||||||
|
const associatedIndicatorContainer = Main.panel.statusArea[role].container;
|
||||||
|
|
||||||
|
panelBox.set_child_at_index(associatedIndicatorContainer, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user