#! /usr/bin/python3
# coding=utf-8

import sys
import os
import signal
import logging
from gi.repository import Gio

# support running uninstalled
_dirname = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if 'BLUEMAN_SOURCE' in os.environ:
    sys.path = [_dirname, os.path.join(_dirname, 'module', '.libs')] + sys.path
    os.environ["GSETTINGS_SCHEMA_DIR"] = os.path.join(_dirname, "data")

from blueman.Functions import create_logger, create_parser, set_proc_title
from blueman.main.Applet import BluemanApplet

# Workaround introspection bug, gnome bug 622084
signal.signal(signal.SIGINT, signal.SIG_DFL)
signal.signal(signal.SIGTERM, signal.SIG_DFL)


class GSConfig(Gio.Settings):
    def __init__(self, schema_id, path=None):
        # Add backwards compat with pygobject < 3.11.2
        if Gio.Settings.__init__.__name__ == "new_init":
            super().__init__(schema_id=schema_id, path=path)
        else:
            super().__init__(schema=schema_id, path=path)

    def get_bool_value(self, key):
        return self.get_boolean(key)

    def get_str_value(self, key):
        return self.get_string(key)

    def set_bool_value(self, key, value):
        self.set_boolean(key, value)

    def set_str_value(self, key, value):
        self.set_string(key, value)

if __name__ == '__main__':
    parser = create_parser()
    args = parser.parse_args()

    if args.LEVEL.upper() == "DEBUG":
        log_level = logging.DEBUG
    elif args.LEVEL.upper() == "INFO":
        log_level = logging.INFO
    elif args.LEVEL.upper() == "WARNING":
        log_level = logging.WARNING
    elif args.LEVEL.upper() == "ERROR":
        log_level = logging.ERROR
    elif args.LEVEL.upper() == "CRITICAL":
        log_level = logging.CRITICAL
    else:
        log_level = logging.WARNING

    create_logger(log_level, "blueman-applet", syslog=args.syslog)

    set_proc_title()

    config = GSConfig("org.blueman.connection")
    config.set_str_value("bluetooth-name", "None")
    config.set_bool_value("connected", False)
    BluemanApplet()
