// sc-settings-co.js
import { SettingsUI } from './sc-settings-ui.js';
import { ScUserLocation } from './sc-user-location.js';

export class SettingsCoordinator {
    /**
     * @private {SettingsUI} _settingsUI - Die Instanz der SettingsUI.
     * @private {ScUserLocation} _userLocation - Die Instanz der ScUserLocation.
     * @private {function(): boolean} _getAdminModeStatus - Eine Funktion, die den Admin-Modus-Status abfragt.
     */
    constructor(settingsUI, userLocation, getAdminModeStatusFn) {
        if (!settingsUI) {
            console.error("SettingsCoordinator: SettingsUI Instanz ist erforderlich.");
            throw new Error("SettingsCoordinator benötigt eine SettingsUI-Instanz.");
        }
        if (!(userLocation instanceof ScUserLocation)) {
            console.error("SettingsCoordinator: ScUserLocation Instanz ist erforderlich.");
            throw new Error("SettingsCoordinator benötigt eine ScUserLocation-Instanz.");
        }

        this._settingsUI = settingsUI;
        this._userLocation = userLocation;
        this._getAdminModeStatus = getAdminModeStatusFn;

        this._addEventListeners();
        console.log("SettingsCoordinator initialisiert.");
    }

    _addEventListeners() {
        // Abonniert den Klick auf den Schließen-Button des Einstellungs-Panels.
        this._settingsUI.onCloseButtonClick(() => this._handleCloseButtonClick());

        // NEU: Listener für Änderungen am Standort-Toggle
        // Der Coordinator lauscht direkt bei der ScUserLocation-Instanz.
        this._userLocation.onTrackingStateChange(isEnabled => {
            console.log(`SettingsCoordinator: Erhaltener Tracking-Status von ScUserLocation: ${isEnabled}`);
            if (isEnabled) {
                this._userLocation.startTrackingAndHandlePermission();
            } else {
                this._userLocation.stopLocationTracking();
            }
        });

        // Abonniert den Klick auf den Hilfe/Info-Button.
        this._settingsUI.onHelpButtonClick(() => {
            console.log("SettingsCoordinator: Help Button geklickt.");
        });
        
        console.log("SettingsCoordinator: Generische UI-Event-Listener hinzugefügt.");
    }

    _handleCloseButtonClick() {
        console.log("SettingsCoordinator: Schließen-Button geklickt.");
    }

    initializeSettingsState() {
        console.log("SettingsCoordinator: initializeSettingsState aufgerufen.");
    }

    showSettingsPanel() {
        console.log("SettingsCoordinator: showSettingsPanel aufgerufen.");
        this._settingsUI.open();
        this.initializeSettingsState();
    }

    isAdminMode() {
        return this._getAdminModeStatus();
    }
}