#!/usr/bin/python3

import logging
import sys

from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QApplication, QWidget, QMessageBox
from python3_mos_pyqt_dialogs.pyqt6_dialogs_functions import alert

from school_ringer_modules.config import config_path, version, sound_path, gui_log_file
from school_ringer_modules.system import run_command, authority_check, reset_log_to_last_week, \
    move_old_configs

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setApplicationName(f'Настройка звонков {version}')
    app.setDesktopFileName('school-ringer')
    app.setWindowIcon(QIcon.fromTheme('school-ringer'))
    try:
        from school_ringer_modules.settings import CallsSettings

        # Создание папки с конфигом и звуками, если их нет
        if not run_command(f'file {config_path}').strip().endswith(': directory'):
            run_command(f'pkexec mkdir -p {config_path} {sound_path}')

        # Перенос старых конфигов и звуков
        move_old_configs()

        # Настройка логирования
        for handler in logging.root.handlers[:]:
            logging.root.removeHandler(handler)
        logging.basicConfig(
            filename=gui_log_file,
            format=u'%(asctime)s %(filename)s [LINE:%(lineno)d] [%(funcName)s()] #%(levelname)-15s %(message)s',
            level=logging.INFO,
            force=True
        )
        reset_log_to_last_week(gui_log_file)
        if authority_check("ru.mos.os.school-ringer"):
            ex = CallsSettings(app)
            app.exec()
            logging.info(f'Приложение завершило работу')
    except Exception as e:
        # error_box = QMessageBox.critical(QWidget(), "Ошибка", f'({e})')
        alert(
            title='Ошибка',
            message=e,
            icon=QMessageBox.Icon.Critical
        )
        logging.info(f'Root exception: ({e})')
    try:
        sys.exit(app)
    except Exception as e:
        print(f'Приложение не было запущено. {e}')
