#!python
# -*- coding: UTF8 -*-

# Importation de la librairie système os pour pouvoir exécuter les commandes shells
import os
# Pour pouvoir récupérer le résultat d'une commande (sans ça, ça donne le code de retour)
import commands

# Librairie propre à TuxDroid
from tuxisalive.api.TuxAPIConst import *
from tuxisalive.api.TuxAPI import TuxAPI

# Connexion du TuxDroid
tux = TuxAPI('127.0.0.1', 270)
tux.server.autoConnect(CLIENT_LEVEL_RESTRICTED, 'none', 'none')
tux.server.waitConnected(10.0)
tux.dongle.waitConnected(10.0)
tux.radio.waitConnected(10.0)

if tux.access.waitAcquire(10.0, ACCESS_PRIORITY_NORMAL):

    def playpause(*args):
            os.system('exaile -t')

    def stop(*args):
            os.system('exaile -s')

    def next(*args):
            os.system('exaile -n')

    def prev(*args):
            os.system('exaile -p')

    def osd(*args):
            os.system('exaile --gui-query')

    def title(*args):
            tux.tts.speakAsync(commands.getoutput('exaile --get-title'))

    def album(*args):
            tux.tts.speakAsync(commands.getoutput('exaile --get-album'))

    def artist(*args):
            tux.tts.speakAsync(commands.getoutput('exaile --get-artist'))

    def length(*args):
            tux.tts.speakAsync(commands.getoutput('exaile --get-length'))

    def increase(*args):
            os.system('exaile -i 10')

    def decrease(*args):
            os.system('exaile -l 10')

    def mute(*args):
            os.system('exaile -l 100')

    tux.button.remote.registerEventOnPressed(playpause, K_PLAYPAUSE)
    tux.button.remote.registerEventOnPressed(stop, K_STOP)
    tux.button.remote.registerEventOnPressed(next, K_NEXT)
    tux.button.remote.registerEventOnPressed(prev, K_PREVIOUS)
    tux.button.remote.registerEventOnPressed(osd, K_0)
    tux.button.remote.registerEventOnPressed(title, K_1)
    tux.button.remote.registerEventOnPressed(album, K_2)
    tux.button.remote.registerEventOnPressed(artist, K_3)
    tux.button.remote.registerEventOnPressed(length, K_4)
    tux.button.remote.registerEventOnPressed(increase, K_VOLUMEPLUS)
    tux.button.remote.registerEventOnPressed(decrease, K_VOLUMEMINUS)
    tux.button.remote.registerEventOnPressed(mute, K_MUTE)

    while(not tux.button.remote.waitPressed(500.0, K_STANDBY)):
        pass
    tux.access.release()
else:
	print "Problème de connexion avec TuxDroid"

tux.server.disconnect()
tux.destroy()
