# edited by glg


class PrinterSettingsFacadeService:
    def __init__(self, controller=None):
        self._controller = controller

    def get_legacy_controller(self):
        return self._get_controller()

    def _get_controller(self):
        if self._controller is None:
            module = __import__(
                "pypos.modules.printer.controllers.printer_settings_controller",
                fromlist=["PrinterSettingsController"],
            )
            self._controller = module.PrinterSettingsController()
        return self._controller

    def get_printers(self):
        return self._get_controller().get_printers()

    def get_default_printer(self):
        return self._get_controller().get_default_printer()

    def add_printer(self, name, paper_size, is_default=False):
        return self._get_controller().add_printer(name, paper_size, is_default)

    def remove_printer(self, index):
        return self._get_controller().remove_printer(index)

    def set_default_printer(self, index):
        return self._get_controller().set_default(index)

    def test_print(self, index):
        return self._get_controller().test_print(index)

    def preview_print(self, index, parent=None):
        return self._get_controller().preview_print(index, parent)

    def run_printer_diagnostic(self, timeout_seconds=2.0, output_path=""):
        return self._get_controller().run_printer_diagnostic(
            timeout_seconds=timeout_seconds,
            output_path=output_path,
        )

    def get_print_mode(self):
        return self._get_controller().get_print_mode()

    def set_print_mode(self, mode):
        return self._get_controller().set_print_mode(mode)

    def get_history_retention_days(self):
        return self._get_controller().get_history_retention_days()

    def set_history_retention_days(self, days):
        return self._get_controller().set_history_retention_days(days)

    # edited by glg
    def get_settlement_print_option(self, option_key, default=False):
        return self._get_controller().get_settlement_print_option(option_key, default=default)

    # edited by glg
    def set_settlement_print_option(self, option_key, enabled):
        return self._get_controller().set_settlement_print_option(option_key, enabled)

    def refresh_company_logo_assets(self, force_refresh=True):
        return self._get_controller().refresh_company_logo_assets(force_refresh=force_refresh)
