-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathprogressBar.js
More file actions
113 lines (66 loc) · 2.75 KB
/
progressBar.js
File metadata and controls
113 lines (66 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/****************************************************************************
* progressBar.js
* openacousticdevices.info
* May 2026
*****************************************************************************/
'use strict';
const electron = require('electron');
let progressBarMaxValue = 100;
let progressBarCurrentValue = 0;
let progressBarCancelable = false;
const progressBarWindowTitleElement = document.getElementById('progress-bar-window-title');
const progressBarHeadingElement = document.getElementById('progress-bar-heading');
const progressBarDetailElement = document.getElementById('progress-bar-detail');
const progressBarElement = document.getElementById('progress-bar');
const cancelButtonElement = document.getElementById('cancel-button');
function createProgressBar (windowTitle, heading, detail, maxValue, cancelable) {
progressBarMaxValue = maxValue;
progressBarCurrentValue = 0;
progressBarCancelable = cancelable;
if (progressBarCancelable) {
cancelButtonElement.disabled = false;
cancelButtonElement.addEventListener('click', () => {
electron.ipcRenderer.send('cancel-progress-bar');
});
} else {
cancelButtonElement.disabled = true;
}
progressBarWindowTitleElement.textContent = windowTitle;
progressBarHeadingElement.textContent = heading;
progressBarDetailElement.textContent = detail;
progressBarElement.style.width = '0%';
}
function setProgressBarValue (value) {
value = Math.min(value, progressBarMaxValue);
progressBarCurrentValue = value;
const percentage = (progressBarCurrentValue / progressBarMaxValue) * 100;
progressBarElement.style.width = `${percentage}%`;
}
function setDetailText (detail) {
console.log(`Setting detail ${detail}`);
progressBarDetailElement.innerHTML = detail;
}
function setHeadingText (heading) {
progressBarHeadingElement.innerHTML = heading;
}
function setWindowTitle (windowTitle) {
progressBarWindowTitleElement.textContent = windowTitle;
}
electron.ipcRenderer.on('create-progress-bar', (event, {windowTitle, heading, detail, maxValue, cancelable}) => {
createProgressBar(windowTitle, heading, detail, maxValue, cancelable);
});
electron.ipcRenderer.on('set-progress-bar-value', (event, value) => {
setProgressBarValue(value);
});
electron.ipcRenderer.on('set-progress-bar-completed', (event) => {
setProgressBarValue(progressBarMaxValue);
});
electron.ipcRenderer.on('set-progress-bar-detail', (event, detail) => {
setDetailText(detail);
});
electron.ipcRenderer.on('set-progress-bar-heading', (event, heading) => {
setHeadingText(heading);
});
electron.ipcRenderer.on('set-progress-bar-window-title', (event, windowTitle) => {
setWindowTitle(windowTitle);
});