
# -*- coding: latin-1 -*-

from PySide import QtCore, QtGui

from Code.Traducir import tr

import Code.Util as Util

import QTUtil2
import Colocacion
import Iconos
import Controles

import urllib, urllib2
import Code.Usu as Usu

#==========================================================================================================================================
class WPuntuacion(QtGui.QDialog):
    def __init__( self, web, procesador ) :
        super(WPuntuacion, self).__init__(procesador.pantalla)

        self.setWindowTitle( tr( "PUNTUACION" ) )

        self.setWindowFlags( QtCore.Qt.Dialog | QtCore.Qt.WindowMinimizeButtonHint)
        self.setWindowIcon( Iconos.Puntuacion() )
        self.setStyleSheet("QWidget { background: #f5f5f5 }")

        self.web = web
        self.procesador = procesador
        self.configuracion = self.procesador.configuracion
        self.ficheroDIC = self.configuracion.ficheroPuntuacion

        f = Controles.TipoLetra( puntos=12, peso = 75 )
        flb = Controles.TipoLetra( puntos=10 )

        # Creamos los controles
        lbAlias = Controles.LB( "<b>%s</b> : "%tr("PALIAS") ).ponFuente( flb )
        self.edAlias = Controles.ED( self, self.configuracion.jugador ).ponFuente( flb ).anchoFijo( 100 )

        lbInfo = Controles.LB( tr( "PINFO" ) ).ponFuente( flb )

        # ¿ Que envias ?
        puntos = procesador.configuracion.puntuacion()
        elo = procesador.configuracion.elo
        self.cbMotores = Controles.CHB( "%s (%d)"%(tr("PINFO_MOTORES"), puntos ), puntos > 0  )
        self.cbLucasElo = Controles.CHB( "Lucas-Elo (%d)"%elo, elo > 0 )
        if puntos == 0 :
            self.cbMotores.setDisabled( True )
        if elo == 0 :
            self.cbLucasElo.setDisabled( True )

        btEnvio = Controles.PB( self, tr( "PENVIAR" ), self.enviar ).ponPlano( False ).ponFuente( flb )

        # Creamos los layouts
        ly = Colocacion.G().control( lbInfo, 0, 0 ).controlc(self.cbMotores, 1, 0).controlc(self.cbLucasElo, 2, 0).margen( 7 )
        gb = Controles.GB( self, tr( "PINFOTITULO" ), ly ).ponFuente( f )

        ly = Colocacion.H().relleno(1).control( lbAlias ).control( self.edAlias ).relleno(1)

        layout = Colocacion.V().otro( ly ).espacio(15).control( gb ).espacio(15).control(btEnvio).margen(30)

        self.setLayout( layout )

        self.recuperaDIC()

    #--------------------------------------------------------------------------------------------------------------------------------------------
    def guardaDIC( self ) :
        dic = {}
        dic[ "ALIAS" ] = self.edAlias.texto().strip()
        dic[ "SIMOTORES" ] = self.cbMotores.valor()
        dic[ "SIELO" ] = self.cbLucasElo.valor()
        Util.guardaDIC( dic, self.ficheroDIC )

    #--------------------------------------------------------------------------------------------------------------------------------------------
    def recuperaDIC( self ) :
        dic = Util.recuperaDIC( self.ficheroDIC )
        if dic :
            self.edAlias.ponTexto(dic["ALIAS"])
            self.cbMotores.ponValor(dic["SIMOTORES"])
            self.cbLucasElo.ponValor(dic["SIELO"])

    #--------------------------------------------------------------------------------------------------------------------------------------------
    def enviar( self ) :

        alias = self.edAlias.texto().strip()
        s = ""
        for x in alias :
            if x.isalnum() or x == " ":
                s += x
        alias = s
        n = len(alias)
        if n < 2 or n > 120 :
            QTUtil2.mensError( self, tr( "PERRORALIAS" ) )
            return

        me = QTUtil2.mensEspera.inicio( self, tr( "UN_MOMENTO" ) )

        url = '%s/validar.php'%self.web

        bl, bid = Usu.bloqueP(alias, self.procesador, self.cbMotores.valor(), self.cbLucasElo.valor() )

        values = { 'ID' : bid, 'INFO' : bl, }

        try:
            data = urllib.urlencode(values)
            req = urllib2.Request(url, data)
            response = urllib2.urlopen(req)
            txt = response.read()
            if txt == bid :
                mens = tr( "PEXITO" )
            else :
                mens = tr( "PFRACASO" ) + " " + txt
        except Exception : #, detail:
            mens = tr( "PERRORCONEXION" )

        me.final()
        QTUtil2.mensaje( self, mens )

        self.guardaDIC()

        self.accept()

#==========================================================================================================================================
def lanzaPuntuacion( web, procesador ) :
    puntos = procesador.configuracion.puntuacion()
    elo = procesador.configuracion.elo

    if (puntos + elo) > 0 :

        w = WPuntuacion( web, procesador )
        w.exec_()
