2020-02-05 22:08:45 +01:00
|
|
|
import options from "./options.js";
|
|
|
|
import Component from "../widgets/component.js";
|
2020-04-12 14:22:51 +02:00
|
|
|
import utils from "../services/utils.js";
|
2018-06-02 13:02:20 -04:00
|
|
|
|
2018-06-09 10:34:51 -04:00
|
|
|
const MIN_ZOOM = 0.5;
|
|
|
|
const MAX_ZOOM = 2.0;
|
2018-06-02 13:02:20 -04:00
|
|
|
|
2020-05-11 20:08:55 +02:00
|
|
|
class ZoomService extends Component {
|
2020-02-27 10:03:14 +01:00
|
|
|
constructor() {
|
|
|
|
super();
|
2018-06-02 13:02:20 -04:00
|
|
|
|
2020-05-11 20:08:55 +02:00
|
|
|
options.initializedPromise.then(() => {
|
|
|
|
this.setZoomFactor(options.getFloat('zoomFactor'));
|
|
|
|
});
|
2018-06-09 10:34:51 -04:00
|
|
|
}
|
|
|
|
|
2020-02-05 22:08:45 +01:00
|
|
|
setZoomFactor(zoomFactor) {
|
|
|
|
zoomFactor = parseFloat(zoomFactor);
|
2020-05-11 20:08:55 +02:00
|
|
|
|
2020-04-12 14:22:51 +02:00
|
|
|
const webFrame = utils.dynamicRequire('electron').webFrame;
|
2020-02-05 22:08:45 +01:00
|
|
|
webFrame.setZoomFactor(zoomFactor);
|
2018-06-09 10:34:51 -04:00
|
|
|
}
|
2020-05-11 20:08:55 +02:00
|
|
|
|
2020-02-05 22:08:45 +01:00
|
|
|
async setZoomFactorAndSave(zoomFactor) {
|
|
|
|
if (zoomFactor >= MIN_ZOOM && zoomFactor <= MAX_ZOOM) {
|
|
|
|
this.setZoomFactor(zoomFactor);
|
2020-05-11 20:08:55 +02:00
|
|
|
|
2020-02-05 22:08:45 +01:00
|
|
|
await options.save('zoomFactor', zoomFactor);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
console.log(`Zoom factor ${zoomFactor} outside of the range, ignored.`);
|
|
|
|
}
|
|
|
|
}
|
2020-05-11 20:08:55 +02:00
|
|
|
|
2020-02-05 22:08:45 +01:00
|
|
|
getCurrentZoom() {
|
2020-04-12 14:22:51 +02:00
|
|
|
return utils.dynamicRequire('electron').webFrame.getZoomFactor();
|
2018-06-09 10:34:51 -04:00
|
|
|
}
|
2018-06-08 23:18:53 -04:00
|
|
|
|
2020-02-16 19:23:49 +01:00
|
|
|
zoomOutEvent() {
|
2020-02-05 22:08:45 +01:00
|
|
|
this.setZoomFactorAndSave(this.getCurrentZoom() - 0.1);
|
|
|
|
}
|
2018-06-08 23:18:53 -04:00
|
|
|
|
2020-02-16 19:23:49 +01:00
|
|
|
zoomInEvent() {
|
2020-02-05 22:08:45 +01:00
|
|
|
this.setZoomFactorAndSave(this.getCurrentZoom() + 0.1);
|
|
|
|
}
|
2018-06-02 13:02:20 -04:00
|
|
|
|
2020-02-16 19:23:49 +01:00
|
|
|
setZoomFactorAndSaveEvent({zoomFactor}) {
|
2020-02-05 22:08:45 +01:00
|
|
|
this.setZoomFactorAndSave(zoomFactor);
|
|
|
|
}
|
2020-05-11 20:08:55 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
const zoomService = new ZoomService();
|
|
|
|
|
|
|
|
export default zoomService;
|