Skip to content

Commit 03da093

Browse files
committed
add default notif. sounds and volume settings
1 parent 2789c04 commit 03da093

File tree

10 files changed

+68
-7
lines changed

10 files changed

+68
-7
lines changed

options.html

+27-2
Original file line numberDiff line numberDiff line change
@@ -175,12 +175,37 @@ <h3 class="section-header">Sound notifications</h3>
175175
<input type="checkbox" id="soundNotifications" />
176176
</label>
177177
</div>
178-
<div class="settings-row learn-more" title="If enabled, browser will make a sound when new articles are downloaded.">
178+
179+
<div class="settings-row learn-more" title="">
179180
<label class="web-content-select-label">
180-
<span class="selectLabel">Default sound:</span>
181+
<span class="selectLabel">Use sound:</span>
182+
<select id="useSound">
183+
<option value=":user">User sound</option>
184+
<option value=":none">None</option>
185+
<optgroup label="Default sounds">
186+
<option value="knock">Knock</option>
187+
<option value="taptap">Taptap</option>
188+
<option value="glass">Glass</option>
189+
<option value="pop">Pop</option>
190+
<option value="nightbird">Nightbird</option>
191+
</optgroup>
192+
</select>
193+
</label>
194+
</div>
195+
196+
<div class="settings-row learn-more" title="Select sound file to be played.">
197+
<label class="web-content-select-label">
198+
<span class="selectLabel">User sound:</span>
181199
<input type="file" id="default-sound" />
182200
</label>
183201
</div>
202+
203+
<div class="settings-row learn-more" title="">
204+
<label class="web-content-select-label">
205+
<span class="selectLabel">Volume:</span>
206+
<span class="valspan">0% <input type="range" id="soundVolume" min="0" max="1" step="0.05" /> 100%</span>
207+
</label>
208+
</div>
184209
</section>
185210

186211
<section>

scripts/bgprocess/models/Loader.js

+21-3
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,28 @@ define(['backbone', 'modules/RSSParser', 'modules/Animation'], function (BB, RSS
7676

7777
}
7878

79+
function playNotificationSound() {
80+
81+
var audio;
82+
if (!settings.get('useSound') || settings.get('useSound') == ':user') {
83+
audio = new Audio(settings.get('defaultSound'));
84+
} else if (settings.get('useSound') == ':none') {
85+
audio = false;
86+
} else {
87+
audio = new Audio('/sounds/' + settings.get('useSound') + '.ogg');
88+
}
89+
if (audio) {
90+
audio.volume = parseFloat(settings.get('soundVolume'));
91+
audio.play();
92+
}
93+
94+
}
95+
7996
function downloadStopped() {
8097
if (loader.itemsDownloaded && settings.get('soundNotifications')) {
81-
var audio = new Audio(settings.get('defaultSound'));
82-
audio.play();
98+
playNotificationSound();
8399
}
100+
84101
loader.set('maxSources', 0);
85102
loader.set('loaded', 0);
86103
loader.set('loading', false);
@@ -244,7 +261,8 @@ define(['backbone', 'modules/RSSParser', 'modules/Animation'], function (BB, RSS
244261
download: download,
245262
downloadURL: downloadURL,
246263
downloadOne: downloadOne,
247-
downloadAll: downloadAll
264+
downloadAll: downloadAll,
265+
playNotificationSound: playNotificationSound
248266
});
249267

250268
return Loader;

scripts/bgprocess/models/Settings.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ define(['backbone', 'preps/indexeddb'], function (BB) {
5353
askRmPinned: true,
5454
titleIsLink: true,
5555
soundNotifications: false,
56-
defaultSound: ''
56+
defaultSound: '',
57+
useSound: ':user',
58+
soundVolume: 1 // min: 0, max: 1
5759
},
5860

5961
/**

scripts/options/options.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ chrome.runtime.getBackgroundPage(function(bg) {
5353
$('#version').html(bg.version || 'dev build');
5454

5555

56-
$('select[id], input[type=number], input[type=range]').each(function(i, item) {
56+
$('select[id], input[type=number], input[type=range], input[type=range]').each(function(i, item) {
5757
$(item).val(bg.settings.get(item.id));
5858
if (item.type == 'number') {
5959
$(item).on('input', handleChange);
@@ -67,6 +67,10 @@ chrome.runtime.getBackgroundPage(function(bg) {
6767
$(item).change(handleCheck);
6868
});
6969

70+
$('#useSound').change(function() {
71+
bg.loader.playNotificationSound();
72+
});
73+
7074
$('#default-sound').change(handleDefaultSound);
7175
$('#export-smart').click(handleExportSmart);
7276
$('#export-opml').click(handleExportOPML);

sounds/glass.ogg

7.47 KB
Binary file not shown.

sounds/knock.ogg

9.62 KB
Binary file not shown.

sounds/nightbird.ogg

10.8 KB
Binary file not shown.

sounds/pop.ogg

5.56 KB
Binary file not shown.

sounds/taptap.ogg

7.96 KB
Binary file not shown.

styles/option.css

+12
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,18 @@ section div {
132132
cursor: pointer;
133133
}
134134

135+
.valspan {
136+
vertical-align: middle;
137+
font-size: 0.8rem;
138+
color: #666;
139+
}
140+
141+
.valspan input[type=range] {
142+
padding: 0;
143+
margin: 0;
144+
vertical-align: middle;
145+
}
146+
135147
select {
136148
cursor: pointer;
137149
min-width: 110px;

0 commit comments

Comments
 (0)