Skip to content

Commit

Permalink
Merge pull request #39 from noroadsleft000/release/version-12
Browse files Browse the repository at this point in the history
Release/version 12
  • Loading branch information
noroadsleft000 authored Mar 16, 2022
2 parents 82dfc78 + b21dbd8 commit 9287c70
Show file tree
Hide file tree
Showing 17 changed files with 207 additions and 130 deletions.
34 changes: 34 additions & 0 deletions App.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();

const { AppController } = Me.imports.AppController;
const { AppSettingsModel } = Me.imports.AppSettingsModel;
const { DeviceModel } = Me.imports.net.DeviceModel;
const { NetworkMonitor } = Me.imports.net.NetworkMonitor;
const { DeviceMonitor } = Me.imports.net.DeviceMonitor;
const { Logger } = Me.imports.utils.Logger;

class AppClass {

constructor() {
const logger = new Logger();
const appSettingsModel = new AppSettingsModel(logger);
appSettingsModel.init();
const deviceMonitor = new DeviceMonitor(logger);
const networkMonitor = new NetworkMonitor(logger, appSettingsModel);
const deviceModel = new DeviceModel(logger, deviceMonitor, networkMonitor);
this._appController = new AppController(logger, appSettingsModel, deviceModel);
}

start() {
this._appController.init();
this._appController.show();
}

stop() {
this._appController.hide();
this._appController.deinit();
}
}

var App = AppClass;
70 changes: 35 additions & 35 deletions AppController.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@ const Mainloop = imports.mainloop;
const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();

const { appView } = Me.imports.ui.AppView;
const { logger } = Me.imports.utils.Logger;
const { AppView } = Me.imports.ui.AppView;
const { DeviceModel } = Me.imports.net.DeviceModel;
const { appSettingsModel } = Me.imports.AppSettingsModel;

const { DisplayMode } = Me.imports.utils.Constants;
const { bytesSpeedToString } = Me.imports.utils.GenUtils;
const { bytesToString } = Me.imports.utils.GenUtils;
const { getNextResetTime } = Me.imports.utils.DateTimeUtils;
const { titleClickedMessageBroadcaster } = Me.imports.utils.EventBroadcaster;
const { getTitleClickedMessageBroadcaster } = Me.imports.utils.Broadcasters;

const kOneMinuteInMilliSeconds = 60 * 1000;

Expand All @@ -21,39 +19,41 @@ const kOneMinuteInMilliSeconds = 60 * 1000;
* refreshing view and pushing model updates to UI.
*/

class AppController {
class AppControllerClass {

constructor() {
constructor(logger, appSettingsModel, deviceModel) {
this._logger = logger;
this._appSettingsModel = appSettingsModel;
this._deviceModel = deviceModel;
this._appView = new AppView(logger, appSettingsModel);
this._refreshTimeout = undefined;
this._minuteTimeout = undefined;
this._rightClickSubscribeHandle = undefined;
this._settingsSubscribeHandle = undefined;
this._deviceModel = new DeviceModel();
}

init() {
appSettingsModel.init();
// TODO: remove update() call from here and move device reset time to DeviceMonitor.
this.update();
this.resetIfRequired();
this._rightClickSubscribeHandle = this.onRightClick.bind(this);
titleClickedMessageBroadcaster.subscribe(this._rightClickSubscribeHandle);
getTitleClickedMessageBroadcaster().subscribe(this._rightClickSubscribeHandle);
this._settingsSubscribeHandle = this.onSettingChanged.bind(this);
appSettingsModel.subscribe(this._settingsSubscribeHandle);
this._appSettingsModel.subscribe(this._settingsSubscribeHandle);
this.installTimers();
}

deinit() {
titleClickedMessageBroadcaster.unsubscribe(this._rightClickSubscribeHandle);
getTitleClickedMessageBroadcaster().unsubscribe(this._rightClickSubscribeHandle);
this._rightClickSubscribeHandle = undefined;
appSettingsModel.unsubscribe(this._settingsSubscribeHandle);
this._appSettingsModel.unsubscribe(this._settingsSubscribeHandle);
this._settingsSubscribeHandle = undefined;
appSettingsModel.deinit();
this._appSettingsModel.deinit();
this.uninstallTimers();
}

installTimers() {
const { refreshInterval } = appSettingsModel;
const { refreshInterval } = this._appSettingsModel;
this._refreshTimeout = Mainloop.timeout_add(refreshInterval, this.onRefreshTimeout.bind(this));
this._minuteTimeout = Mainloop.timeout_add(kOneMinuteInMilliSeconds, this.onEveryMinute.bind(this));
}
Expand All @@ -70,27 +70,27 @@ class AppController {
}

show() {
appView.show();
this._appView.show();
}

hide() {
appView.hide();
this._appView.hide();
}

_getActiveDeviceName() {
const userPreferedDevice = appSettingsModel.preferedDeviceName;
const userPreferedDevice = this._appSettingsModel.preferedDeviceName;
if (this._deviceModel.hasDevice(userPreferedDevice)) {
return userPreferedDevice;
}
return this._deviceModel.getActiveDeviceName();
}

update() {
const { displayMode, refreshInterval, displayBytes } = appSettingsModel;
//logger.debug(`displayMode : ${displayMode}`);
const { displayMode, refreshInterval, displayBytes } = this._appSettingsModel;
//this._logger.debug(`displayMode : ${displayMode}`);
this._deviceModel.update(refreshInterval, displayBytes);
const activeDevice = this._getActiveDeviceName();
//logger.debug(`activeDevice: ${activeDevice}`);
//this._logger.debug(`activeDevice: ${activeDevice}`);
let titleStr = "----";
switch(displayMode) {
case DisplayMode.TOTAL_SPEED:
Expand Down Expand Up @@ -131,27 +131,27 @@ class AppController {
break;
}
}
appView.setTitleText(titleStr);
appView.update(this._deviceModel);
this._appView.setTitleText(titleStr);
this._appView.update(this._deviceModel);

// Debugging
// const upload = this._deviceModel.getUploadSpeed(activeDevice);
// const download = this._deviceModel.getDownloadSpeed(activeDevice);
// const totalData = this._deviceModel.getTotalDataUsage(activeDevice);
// logger.debug(`upload: ${upload} download: ${download} totalData: ${totalData}`);
// this._logger.debug(`upload: ${upload} download: ${download} totalData: ${totalData}`);
// const uploadStr = bytesSpeedToString(upload, displayBytes);
// const downloadStr = bytesSpeedToString(download, displayBytes);
// const totalDataStr = bytesToString(totalData);
// logger.debug(`deviceName: ${activeDevice} upload: ${uploadStr} download: ${downloadStr} totalData: ${totalDataStr}`);
// this._logger.debug(`deviceName: ${activeDevice} upload: ${uploadStr} download: ${downloadStr} totalData: ${totalDataStr}`);
}

resetIfRequired() {
const now = new Date();
const activeDevice = this._getActiveDeviceName();
const lastResetedAt = appSettingsModel.getLastResetDateTime(activeDevice);
const newResetTime = getNextResetTime(lastResetedAt, appSettingsModel);
//logger.log(`oldResetTime: ${lastResetedAt}`);
//logger.log(`newResetTime: ${newResetTime}`);
const lastResetedAt = this._appSettingsModel.getLastResetDateTime(activeDevice);
const newResetTime = getNextResetTime(lastResetedAt, this._appSettingsModel);
//this._logger.log(`oldResetTime: ${lastResetedAt}`);
//this._logger.log(`newResetTime: ${newResetTime}`);
if (now.getTime() >= newResetTime.getTime()) {
// crossed the mark, Time to reset network stats
this._deviceModel.resetAll();
Expand All @@ -160,21 +160,21 @@ class AppController {

// #region Event handlers
onRefreshTimeout() {
//logger.debug("tick");
//this._logger.debug("tick");
try {
this.update();
} catch(err) {
logger.error(`ERROR: ${err.toString()} TRACE: ${err.stack}`);
this._logger.error(`ERROR: ${err.toString()} TRACE: ${err.stack}`);
}
return true;
}

onEveryMinute() {
//logger.debug("every 1 minutes");
//this._logger.debug("every 1 minutes");
try {
this.resetIfRequired();
} catch(err) {
logger.error(`ERROR: ${err.toString()} TRACE: ${err.stack}`);
this._logger.error(`ERROR: ${err.toString()} TRACE: ${err.stack}`);
}
return true;
}
Expand All @@ -187,7 +187,7 @@ class AppController {
onRightClick({button}) {
if (button === "right") {
// cycle through the modes
let { displayMode } = appSettingsModel;
let { displayMode } = this._appSettingsModel;
switch(displayMode) {
default:
case DisplayMode.TOTAL_SPEED:
Expand Down Expand Up @@ -216,11 +216,11 @@ class AppController {
break;
}
}
appSettingsModel.displayMode = displayMode;
this._appSettingsModel.displayMode = displayMode;
this.update();
}
}
// #endregion Event handlers
}

var appController = new AppController;
var AppController = AppControllerClass;
13 changes: 7 additions & 6 deletions AppSettingsModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ const kSchemaName = "org.gnome.shell.extensions.network-stats";
/*
* AppSettingsModel represents application setttings and user prefrences.
*/
class AppSettingsModel {
class AppSettingsModelClass {

constructor() {
constructor(logger) {
this._logger = logger;
this._schema = undefined;
this._settingListeners = [];
this._refreshInterval = kRefreshInterval;
Expand All @@ -39,7 +40,7 @@ class AppSettingsModel {
this.load();
this._settingsC = this.schema.connect("changed", () => {
// setting changed - get the new values
logger.info("Prefrences/Settings value changed");
this._logger.info("Prefrences/Settings value changed");
this.load();
this.notifyListerners();
});
Expand Down Expand Up @@ -75,8 +76,8 @@ class AppSettingsModel {
this._preferedDeviceName = this.schema.get_string(SettingKeys.PREFERED_DEVICE);
this._displayBytes = this.schema.get_boolean(SettingKeys.DISPLAY_BYTES);
this._showIcon = this.schema.get_boolean(SettingKeys.SHOW_ICON);
// logger.debug(`new values [ refreshInterval: ${this._refreshInterval} displayMode: ${this._displayMode} resetTime: ${this._resetHours} : ${this._resetMinutes}]`);
// logger.debug(`deivicesInfoMap ${str}`);
// this._logger.debug(`new values [ refreshInterval: ${this._refreshInterval} displayMode: ${this._displayMode} resetTime: ${this._resetHours} : ${this._resetMinutes}]`);
// this._logger.debug(`deivicesInfoMap ${str}`);
}

save() {
Expand Down Expand Up @@ -207,4 +208,4 @@ class AppSettingsModel {
}
}

var appSettingsModel = new AppSettingsModel;
var AppSettingsModel = AppSettingsModelClass;
1 change: 1 addition & 0 deletions commands.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ pack()
{
gnome-extensions pack \
--force \
--extra-source=App.js \
--extra-source=AppController.js \
--extra-source=AppSettingsModel.js \
--extra-source=AUTHORS \
Expand Down
21 changes: 14 additions & 7 deletions extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,29 @@

const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const { logger } = Me.imports.utils.Logger;
const { appController } = Me.imports.AppController;
const { Logger } = Me.imports.utils.Logger;
const { App } = Me.imports.App;
const { initBrodcasters, deinitBrodcasters } = Me.imports.utils.Broadcasters;
const Prefs = Me.imports.prefs;

let logger = undefined;
let app = undefined;
function init() {
logger.info(`initializing ${Me.metadata.name}`);
logger = new Logger;
logger.info(`initializing 1 ${Me.metadata.name}`);
}

function enable() {
logger.info(`enabling ${Me.metadata.name}`);
appController.init();
appController.show();
initBrodcasters();
app = new App();
app.start();
}

function disable() {
logger.info(`disabling ${Me.metadata.name}`);
appController.hide();
appController.deinit();
app.stop();
deinitBrodcasters();
app = undefined;
logger = undefined;
}
2 changes: 1 addition & 1 deletion metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,5 @@
"41"
],
"url" : "https://github.com/noroadsleft000/gnome-network-stats",
"version": 11
"version": 12
}
13 changes: 7 additions & 6 deletions net/DeviceModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,14 @@ const { bytesToString } = Me.imports.utils.GenUtils;

class DeviceModelClass {

constructor() {
constructor(logger, deviceMonitor, networkMonitor) {
this._upload = 0;
this._download = 0;
this._stats = {};
this._statsText = {};
this._deviceMonitor = new DeviceMonitor();
this._networkMonitor = new NetworkMonitor();
this._logger = logger;
this._deviceMonitor = deviceMonitor;
this._networkMonitor = networkMonitor;
}

getUploadSpeed(deviceName) {
Expand Down Expand Up @@ -84,7 +85,7 @@ class DeviceModelClass {
deviceLogs
} = this._networkMonitor.getStats();

//logger.debug(`defaultGateway: ${this._deviceMonitor.getActiveDeviceName()}`);
//this._logger.debug(`defaultGateway: ${this._deviceMonitor.getActiveDeviceName()}`);
if (!error) {
const stats = {};
const statsText = {};
Expand Down Expand Up @@ -130,13 +131,13 @@ class DeviceModelClass {
second: "2-digit"
}),
};
//logger.debug(`${name} => upload: ${upSpeed} download: ${downSpeed} total: ${totalData}`);
//this._logger.debug(`${name} => upload: ${upSpeed} download: ${downSpeed} total: ${totalData}`);
}
}
this._stats = stats;
this._statsText = statsText;
} else {
logger.debug(error);
this._logger.debug(error);
}
}

Expand Down
Loading

0 comments on commit 9287c70

Please sign in to comment.