from PySide6.QtCore import Qt, Signal
from PySide6.QtWidgets import QLabel, QMessageBox, QTabWidget, QVBoxLayout, QWidget

from pypos.modules.settings.views.history_settings_view import HistorySettingsView
from pypos.modules.settings.views.printer_settings_view import SettingsPrinterView
from pypos.modules.settings.views.scanner_settings_view import ScannerSettingsView


class SettingsView(QWidget):
    scanner_settings_saved = Signal(dict)

    def __init__(self, controller, parent=None):
        super().__init__(parent)
        self.controller = controller
        self._build_ui()

    def _build_ui(self):
        layout = QVBoxLayout(self)
        layout.setContentsMargins(8, 8, 8, 8)
        layout.setSpacing(8)

        title = QLabel("Pengaturan Aplikasi")
        title.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
        title.setStyleSheet("font-size: 16px; font-weight: bold;")
        layout.addWidget(title)

        self.tabs = QTabWidget(self)
        layout.addWidget(self.tabs, 1)

        self.printer_widget = SettingsPrinterView(self.controller, self)
        self.tabs.addTab(self.printer_widget, "Printer")

        self.history_widget = HistorySettingsView(self.controller, self)
        self.tabs.addTab(self.history_widget, "History Transaksi")

        self.scanner_widget = ScannerSettingsView(self.controller, self)
        self.scanner_widget.settings_saved.connect(self._on_scanner_settings_saved)
        self.tabs.addTab(self.scanner_widget, "Scanner")

    def _on_scanner_settings_saved(self, payload):
        self.scanner_settings_saved.emit(payload or {})
        QMessageBox.information(self, "Pengaturan", "Pengaturan scanner berhasil disimpan.")
