# coding=utf-8
"""
Flash
-----
"""
from plyer.facades import Flash
from pyobjus import autoclass

NSString = autoclass("NSString")
AVCaptureDevice = autoclass("AVCaptureDevice")
AVMediaTypeVideo = NSString.alloc().initWithUTF8String_("vide")
AVCaptureTorchModeOff = 0
AVCaptureTorchModeOn = 1


class IosFlash(Flash):
    _camera = None

    def _on(self):
        if self._camera is None:
            self._camera_open()
        if not self._camera:
            return
        self._camera.lockForConfiguration_(None)
        try:
            self._camera.setTorchMode(AVCaptureTorchModeOn)
        finally:
            self._camera.unlockForConfiguration()

    def _off(self):
        if not self._camera:
            return
        self._camera.lockForConfiguration_(None)
        try:
            self._camera.setTorchMode(AVCaptureTorchModeOff)
        finally:
            self._camera.unlockForConfiguration()

    def _release(self):
        pass

    def _camera_open(self):
        device = AVCaptureDevice.defaultDeviceWithMediaType_(AVMediaTypeVideo)
        if not device:
            return
        self._camera = device


def instance():
    return IosFlash()