package tool.xfy9326.keyblocker.service;

import android.annotation.TargetApi;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.preference.PreferenceManager;
import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;

import tool.xfy9326.keyblocker.R;
import tool.xfy9326.keyblocker.base.BaseMethod;
import tool.xfy9326.keyblocker.config.Config;

@TargetApi(Build.VERSION_CODES.N)
public class QuickSettingService extends TileService {

    @Override
    public void onStartListening() {
        super.onStartListening();
        updateView(false, true);
    }

    @Override
    public void onClick() {
        super.onClick();
        updateView(true, false);
        BaseMethod.KeyLockBroadcast(this, true, false);
        BaseMethod.collapseStatusBar(this);
    }

    private void updateView(boolean displayToast, boolean init) {
        Tile tile = getQsTile();
        if (BaseMethod.isAccessibilitySettingsOn(this)) {
            boolean KeyBlocked = PreferenceManager.getDefaultSharedPreferences(this).getBoolean(Config.ENABLED_KEYBLOCK, false);
            if (init) {
                if (KeyBlocked) {
                    tile.setState(Tile.STATE_ACTIVE);
                    tile.setIcon(Icon.createWithResource(this, R.drawable.ic_notification_blocked));
                } else {
                    tile.setState(Tile.STATE_INACTIVE);
                    tile.setIcon(Icon.createWithResource(this, R.drawable.ic_notification_not_blocked));
                }
            } else {
                if (tile.getState() == Tile.STATE_ACTIVE) {
                    tile.setState(Tile.STATE_INACTIVE);
                    tile.setIcon(Icon.createWithResource(this, R.drawable.ic_notification_not_blocked));
                } else if (tile.getState() == Tile.STATE_INACTIVE) {
                    tile.setState(Tile.STATE_ACTIVE);
                    tile.setIcon(Icon.createWithResource(this, R.drawable.ic_notification_blocked));
                }
            }
        } else {
            tile.setState(Tile.STATE_INACTIVE);
            tile.setIcon(Icon.createWithResource(this, R.drawable.ic_notification_not_blocked));
            if (displayToast) {
                BaseMethod.RunAccessibilityService(this);
            }
        }
        tile.updateTile();
    }
}