// This script will handle the renderer process for the settings.html page. const { ipcRenderer } = require('electron'); document.addEventListener('DOMContentLoaded', () => { loadSettings(); setupEventListeners(); }); function loadSettings() { const settings = ipcRenderer.sendSync('get-all-settings'); // Synchronous call to get settings // General settings document.getElementById('autoHideEnabled').checked = settings.autoHideEnabled; document.getElementById('reloadOnPasteEnabled').checked = settings.reloadOnPasteEnabled; document.getElementById('isAlwaysOnTop').checked = settings.isAlwaysOnTop; document.getElementById('isFrameVisible').checked = settings.isFrameVisible; document.getElementById('launchOnStartup').checked = settings.launchOnStartup; // Current Provider Dropdown const currentProviderSelect = document.getElementById('currentProviderSelect'); currentProviderSelect.innerHTML = ''; // Clear existing options settings.providers.forEach(provider => { const option = document.createElement('option'); option.value = provider.name; option.textContent = provider.name; if (provider.name === settings.currentProvider) { option.selected = true; } currentProviderSelect.appendChild(option); }); // Providers Table const providersTableBody = document.getElementById('providersTable').getElementsByTagName('tbody')[0]; providersTableBody.innerHTML = ''; // Clear existing rows settings.providers.forEach((provider, index) => { const row = providersTableBody.insertRow(); row.insertCell().textContent = provider.name; row.insertCell().textContent = provider.url; const actionsCell = row.insertCell(); const deleteButton = document.createElement('button'); deleteButton.textContent = 'Delete'; deleteButton.onclick = () => deleteProvider(index); actionsCell.appendChild(deleteButton); // Add an edit button (optional, for more advanced CRUD) // const editButton = document.createElement('button'); // editButton.textContent = 'Edit'; // editButton.onclick = () => editProvider(index); // actionsCell.appendChild(editButton); }); } function setupEventListeners() { // General settings listeners document.getElementById('autoHideEnabled').addEventListener('change', (event) => { ipcRenderer.send('update-setting', { key: 'autoHideEnabled', value: event.target.checked }); }); document.getElementById('reloadOnPasteEnabled').addEventListener('change', (event) => { ipcRenderer.send('update-setting', { key: 'reloadOnPasteEnabled', value: event.target.checked }); }); document.getElementById('isAlwaysOnTop').addEventListener('change', (event) => { ipcRenderer.send('update-setting', { key: 'isAlwaysOnTop', value: event.target.checked }); }); document.getElementById('isFrameVisible').addEventListener('change', (event) => { ipcRenderer.send('update-setting', { key: 'isFrameVisible', value: event.target.checked }); }); document.getElementById('launchOnStartup').addEventListener('change', (event) => { ipcRenderer.send('update-setting', { key: 'launchOnStartup', value: event.target.checked }); }); // Current provider select listener document.getElementById('currentProviderSelect').addEventListener('change', (event) => { ipcRenderer.send('update-setting', { key: 'currentProvider', value: event.target.value }); // Optionally, send a specific event if the main window needs to react immediately without a full settings reload signal ipcRenderer.send('current-provider-changed'); }); // Provider table listeners document.getElementById('addProviderBtn').addEventListener('click', () => { const nameInput = document.getElementById('newProviderName'); const urlInput = document.getElementById('newProviderUrl'); const name = nameInput.value.trim(); const url = urlInput.value.trim(); if (name && url) { ipcRenderer.send('add-provider', { name, url }); nameInput.value = ''; // Clear input urlInput.value = ''; // Clear input loadSettings(); // Reload to show the new provider } }); } function deleteProvider(index) { ipcRenderer.send('delete-provider', index); loadSettings(); // Reload to reflect deletion } // Example of editProvider (requires more UI/logic for editing) /* function editProvider(index) { const provider = ipcRenderer.sendSync('get-all-settings').providers[index]; const newName = prompt('Enter new name:', provider.name); const newUrl = prompt('Enter new URL:', provider.url); if (newName !== null && newUrl !== null) { ipcRenderer.send('update-provider', { index, name: newName, url: newUrl }); loadSettings(); } } */ // Listen for settings-updated from main process if other windows can change settings ipcRenderer.on('settings-updated', () => { loadSettings(); });