še interaktivna kontrola za prelom #3

This commit is contained in:
2026-03-25 22:29:37 +01:00
parent 1dcb80739c
commit 2b0e02e94c
4 changed files with 58 additions and 4 deletions

View File

@@ -62,6 +62,7 @@ def get_state():
'current_text': 'Napaka: Aplikacija ni inicijalizirana',
'page_info': '',
'caps_mode': False,
'split_by_stanza': False,
'can_prev': False,
'can_next': False
})
@@ -89,6 +90,7 @@ def get_state():
'current_text': current_text,
'page_info': page_info,
'caps_mode': _projector_app.all_caps_mode,
'split_by_stanza': _projector_app.settings.get("split_by_stanza", False),
'can_prev': can_prev,
'can_next': can_next
})
@@ -149,6 +151,15 @@ def toggle_caps():
return jsonify({'status': 'ok'})
@app.route('/api/toggle_split', methods=['POST'])
def toggle_split():
"""Preklop med načinom preloma po kiticah in prostim prelomom"""
if _projector_app is not None:
_projector_app.toggle_split_mode()
return jsonify({'status': 'ok'})
@app.route('/api/search_songs', methods=['POST'])
def search_songs():
"""Iskanje besedil po naslovu"""

View File

@@ -7,6 +7,7 @@ const displayArea = document.getElementById('display-area');
const prevBtn = document.getElementById('prev-btn');
const nextBtn = document.getElementById('next-btn');
const darkBtn = document.getElementById('dark-btn');
const splitBtn = document.getElementById('split-btn');
const pageInfo = document.getElementById('page-info');
const clearBtn = document.getElementById('clear-btn');
const keypadButtons = document.querySelectorAll('.btn-key');
@@ -37,6 +38,7 @@ const infoMessage = document.getElementById('info-message');
const infoOkBtn = document.getElementById('info-ok-btn');
let capsMode = false;
let splitByStanza = false;
let wakeLock = null;
let lastStateSignature = "";
let lastPageInfo = "";
@@ -81,6 +83,7 @@ async function updateState(force = false) {
current_text: data.current_text || '',
page_info: data.page_info || '',
caps_mode: data.caps_mode || false,
split_by_stanza: data.split_by_stanza || false,
can_prev: !!data.can_prev
});
@@ -102,6 +105,13 @@ async function updateState(force = false) {
darkBtn.classList.remove('active');
}
splitByStanza = data.split_by_stanza || false;
if (splitByStanza) {
splitBtn.classList.add('active');
} else {
splitBtn.classList.remove('active');
}
prevBtn.disabled = !data.can_prev;
} catch (error) {
console.error('Napaka pri posodabljanju stanja:', error);
@@ -237,6 +247,16 @@ async function toggleCaps() {
}
}
// Preklop načina preloma po kiticah
async function toggleSplit() {
try {
await fetch('/api/toggle_split', { method: 'POST' });
await updateState(true);
} catch (error) {
console.error('Napaka pri preklopu načina preloma:', error);
}
}
// Odpri urejevalnik
async function openEditor(songId = null) {
try {
@@ -383,6 +403,14 @@ darkBtn.addEventListener('click', () => {
toggleCaps();
});
// Prelom po kiticah
if (splitBtn) {
splitBtn.addEventListener('click', () => {
vibrate();
toggleSplit();
});
}
// Skrij/Pokaži tipkovnico
if (toggleKeypadBtn) {
toggleKeypadBtn.addEventListener('click', (e) => {
@@ -551,10 +579,10 @@ document.addEventListener('keydown', (e) => {
return;
}
// AAaa
// preklopi prelom
if (e.key === '*' || e.code === 'NumpadMultiply') {
e.preventDefault();
toggleCaps();
toggleSplit();
return;
}

View File

@@ -26,6 +26,7 @@
<div id="menu-dropdown" class="menu-dropdown">
<button id="toggle-keypad-btn" class="menu-item" type="button">Skrij tipkovnico</button>
<button id="dark-btn" class="menu-item" type="button">Velike/male črke (AAaa)</button>
<button id="split-btn" class="menu-item" type="button">Prelom po kiticah</button>
<button id="edit-song-btn" class="menu-item" type="button">Uredi besedilo</button>
</div>
</div>