"""
AndroidToast
============

.. rubric:: Native implementation of toast for Android devices.

.. code-block:: python

    from kivymd.app import MDApp
    # Will be automatically used native implementation of the toast
    # if your application is running on an Android device.
    # Otherwise, will be used toast implementation
    # from the kivymd/toast/kivytoast package.
    from kivymd.toast import toast

    KV = '''
    BoxLayout:
        orientation:'vertical'

        MDToolbar:
            id: toolbar
            title: 'Test Toast'
            md_bg_color: app.theme_cls.primary_color
            left_action_items: [['menu', lambda x: '']]

        FloatLayout:

            MDRaisedButton:
                text: 'TEST KIVY TOAST'
                on_release: app.show_toast()
                pos_hint: {'center_x': .5, 'center_y': .5}

    '''


    class Test(MDApp):
        def show_toast(self):
            '''Displays a toast on the screen.'''

            toast('Test Kivy Toast')

        def build(self):
            return Builder.load_string(KV)

    Test().run()
"""

from kivy.logger import Logger
from jnius import autoclass, PythonJavaClass, java_method, cast
from android import activity
from android.runnable import run_on_ui_thread

Toast = autoclass("android.widget.Toast")
context = autoclass("org.kivy.android.PythonActivity").mActivity


@run_on_ui_thread
def toast(text, length_long=False):
    """Displays a toast.

    :length_long: The amount of time (in seconds) that the toast is visible on the screen.
    """

    duration = Toast.LENGTH_LONG if length_long else Toast.LENGTH_SHORT
    String = autoclass("java.lang.String")
    c = cast("java.lang.CharSequence", String(text))
    t = Toast.makeText(context, c, duration)
    t.show()
