feat: condivisione e importazione automatica del codice comunità nelle playlist con priorità tonalità e autoscroll e rifinitura UI

This commit is contained in:
David Frassi
2026-05-23 16:53:09 +02:00
parent b220167794
commit 960c73fbd0
20 changed files with 680 additions and 122 deletions
+19
View File
@@ -47,6 +47,9 @@ export class SettingsService {
/** Attiva autoscroll acustico nel dettaglio canto: true = attivo */
public enableAcousticAutoscroll = signal<boolean>(false);
/** Preferenza notazione accordi: diesis o bemolle */
public chordNotationPreference = signal<'diesis' | 'bemolle'>('diesis');
private wakeLock: any = null;
// PWA installation signals
@@ -103,6 +106,7 @@ export class SettingsService {
localStorage.setItem('show-update-date', 'true');
localStorage.setItem('enable-standard-autoscroll', 'true');
localStorage.setItem('enable-acoustic-autoscroll', 'false');
localStorage.setItem('chord-notation-preference', 'diesis');
// ThemeService high contrast default
localStorage.setItem('high-contrast', 'true');
@@ -187,6 +191,13 @@ export class SettingsService {
this.enableAcousticAutoscroll.set(false);
}
const savedNotation = localStorage.getItem('chord-notation-preference');
if (savedNotation !== null) {
this.chordNotationPreference.set(savedNotation === 'bemolle' ? 'bemolle' : 'diesis');
} else {
this.chordNotationPreference.set('diesis');
}
// Sync browser fullscreen state with listeners (supporting vendor prefixes)
const updateFullscreenState = () => {
const isFs = !!(
@@ -255,6 +266,10 @@ export class SettingsService {
localStorage.setItem('enable-acoustic-autoscroll', this.enableAcousticAutoscroll().toString());
});
effect(() => {
localStorage.setItem('chord-notation-preference', this.chordNotationPreference());
});
effect(() => {
const active = this.keepScreenOn();
localStorage.setItem('keep-screen-on', active.toString());
@@ -381,6 +396,10 @@ export class SettingsService {
localStorage.setItem('enable-acoustic-autoscroll', newValue.toString());
}
setChordNotationPreference(val: 'diesis' | 'bemolle') {
this.chordNotationPreference.set(val);
}
async installPwa() {
const promptEvent = this.deferredPrompt();
if (!promptEvent) {