#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import json
from pathlib import Path

from PyQt6.QtWidgets import (
    QApplication,
    QWidget,
    QVBoxLayout,
    QLabel,
    QPushButton,
    QMessageBox,
)
from PyQt6.QtCore import QSettings, QTimer


APP_NAME = "OtzariaSync"
ORG_NAME = "Otzaria"


def app_data_dir() -> Path:
    """תיקיית נתונים חוצת־מערכות (macOS / Windows / Linux)"""
    base = Path.home() / "Library" / "Application Support" / APP_NAME
    base.mkdir(parents=True, exist_ok=True)
    return base


STATE_FILE = app_data_dir() / "sync_state.json"


def load_state() -> dict:
    if STATE_FILE.exists():
        try:
            return json.loads(STATE_FILE.read_text(encoding="utf-8"))
        except Exception:
            return {}
    return {}


def save_state(state: dict):
    STATE_FILE.write_text(
        json.dumps(state, indent=2, ensure_ascii=False),
        encoding="utf-8"
    )


class OtzariaSync(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("סנכרון ספרי אוצריא")
        self.resize(420, 200)

        self.settings = QSettings(ORG_NAME, APP_NAME)
        self.state = load_state()

        layout = QVBoxLayout(self)

        self.label = QLabel("ברוך הבא 👋\nהתוכנה נטענה בהצלחה.")
        self.label.setStyleSheet("font-size: 15px;")
        layout.addWidget(self.label)

        self.btn = QPushButton("הצג אזהרה לדוגמה")
        self.btn.clicked.connect(self.show_warning)
        layout.addWidget(self.btn)

        QTimer.singleShot(500, self.auto_warning)

    def auto_warning(self):
        if self.should_show_warning():
            self.show_warning()

    def should_show_warning(self) -> bool:
        if self.state.get("dont_show_warning"):
            return False
        if self.settings.value("dont_show_warning", False, type=bool):
            return False
        return True

    def show_warning(self):
        msg = QMessageBox(self)
        msg.setWindowTitle("אזהרה")
        msg.setText("זוהי הודעת אזהרה לדוגמה.")
        msg.setCheckBox(QMessageBox.CheckBox("אל תזכיר שוב"))
        msg.exec()

        if msg.checkBox().isChecked():
            self.state["dont_show_warning"] = True
            save_state(self.state)
            self.settings.setValue("dont_show_warning", True)


def main():
    app = QApplication(sys.argv)
    window = OtzariaSync()
    window.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    main()
