diff --git a/renderer/app.js b/renderer/app.js
index 580d0f9..aab6945 100644
--- a/renderer/app.js
+++ b/renderer/app.js
@@ -1719,18 +1719,16 @@ function renderSettings() {
Uploads
-
Verhalten
@@ -1769,6 +1767,15 @@ function renderSettings() {
`;
container.appendChild(generalPanel);
+ // Toggle general panel
+ generalPanel.querySelector('.hoster-panel-header').addEventListener('click', () => {
+ const body = generalPanel.querySelector('.hoster-panel-body');
+ const arrow = generalPanel.querySelector('.panel-arrow');
+ const isOpen = body.style.display !== 'none';
+ body.style.display = isOpen ? 'none' : 'block';
+ arrow.innerHTML = isOpen ? '▶' : '▼';
+ });
+
// --- Folder Monitor Panel ---
const fm = globalSettings.folderMonitor || {};
const folderMonitorPanel = document.createElement('div');
@@ -1780,37 +1787,39 @@ function renderSettings() {
${fm.enabled && fm.folderPath ? 'Aktiv' : 'Inaktiv'}
+
Ordner
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Warten bis Datei fertig geschrieben
+
+
Verhalten
-
-
-
-
-
-
-
-
-
-
-
-
-
- Warten bis Datei fertig geschrieben
-
@@ -1829,14 +1838,62 @@ function renderSettings() {
arrow.innerHTML = isOpen ? '▶' : '▼';
});
+ // Update badge immediately on checkbox/path change
+ const updateFmBadge = () => {
+ const b = document.getElementById('folderMonitorStatusBadge');
+ if (!b) return;
+ const enabled = document.getElementById('fmEnabledInput')?.checked;
+ const hasPath = (document.getElementById('fmFolderPathInput')?.value || '').trim();
+ if (enabled && hasPath) { b.textContent = 'Aktiv'; b.className = 'panel-status active'; }
+ else { b.textContent = 'Inaktiv'; b.className = 'panel-status'; }
+ };
+ document.getElementById('fmEnabledInput')?.addEventListener('change', updateFmBadge);
+ document.getElementById('fmFolderPathInput')?.addEventListener('input', updateFmBadge);
+
document.getElementById('fmChooseFolderBtn')?.addEventListener('click', async () => {
const folder = await window.api.folderMonitorSelectFolder();
if (folder) {
document.getElementById('fmFolderPathInput').value = folder;
+ updateFmBadge();
scheduleSettingsSave();
}
});
+ // --- Backup Panel ---
+ const backupPanel = document.createElement('div');
+ backupPanel.className = 'hoster-settings-panel';
+ backupPanel.innerHTML = `
+
+
+
Alle Accounts, Einstellungen und den Upload-Verlauf verschlüsselt exportieren oder importieren.
+
+
+
+
+
+ `;
+ container.appendChild(backupPanel);
+
+ backupPanel.querySelector('.hoster-panel-header').addEventListener('click', () => {
+ const body = backupPanel.querySelector('.hoster-panel-body');
+ const arrow = backupPanel.querySelector('.panel-arrow');
+ const isOpen = body.style.display !== 'none';
+ body.style.display = isOpen ? 'none' : 'block';
+ arrow.innerHTML = isOpen ? '▶' : '▼';
+ });
+
+ document.getElementById('exportBackupBtn').addEventListener('click', () => openBackupModal('export'));
+ document.getElementById('importBackupBtn').addEventListener('click', () => openBackupModal('import'));
+
+ // --- Separator before hoster panels ---
+ const separator = document.createElement('div');
+ separator.style.cssText = 'height:16px';
+ container.appendChild(separator);
+
if (configuredAccounts.length === 0) {
const empty = document.createElement('div');
empty.className = 'settings-empty';
@@ -2582,9 +2639,7 @@ function setupListeners() {
});
document.getElementById('saveSettingsBtn').addEventListener('click', saveSettings);
- // --- Backup export / import ---
- document.getElementById('exportBackupBtn').addEventListener('click', () => openBackupModal('export'));
- document.getElementById('importBackupBtn').addEventListener('click', () => openBackupModal('import'));
+ // --- Backup export / import (modal listeners stay here, button listeners in renderSettings) ---
document.getElementById('closeBackupModalBtn').addEventListener('click', closeBackupModal);
document.getElementById('cancelBackupModalBtn').addEventListener('click', closeBackupModal);
document.getElementById('confirmBackupBtn').addEventListener('click', confirmBackupAction);
@@ -2649,6 +2704,7 @@ function setupListeners() {
// Right-click on upload view background
document.getElementById('upload-view').addEventListener('contextmenu', (e) => {
if (e.target.closest('.queue-row')) return; // handled per row
+ if (queueJobs.length === 0 && selectedFiles.length === 0) return; // nothing in queue
e.preventDefault();
showContextMenu(e.clientX, e.clientY);
});
diff --git a/renderer/index.html b/renderer/index.html
index c7aae58..a0e37e6 100644
--- a/renderer/index.html
+++ b/renderer/index.html
@@ -219,14 +219,6 @@
Änderungen werden automatisch gespeichert.
-
-
Backup
-
Alle Accounts, Einstellungen und den Upload-Verlauf verschlüsselt exportieren oder importieren.
-
-
-
-
-
diff --git a/renderer/styles.css b/renderer/styles.css
index 269acd2..25afe2d 100644
--- a/renderer/styles.css
+++ b/renderer/styles.css
@@ -662,7 +662,11 @@ body {
gap: 8px;
margin-bottom: 6px;
}
+.checkbox-row {
+ margin-bottom: 0;
+}
.checkbox-row input[type="checkbox"] {
+ order: -1;
width: 16px;
height: 16px;
}