#! /usr/bin/python
# -*- coding: iso-8859-1 -*-

#####################################################
#    Copyright (C) 2006 by Cesar Kallas   	
#    cesarkallas@soulivre.org   
#    http://cesarkallas.soulivre.org
#                                                                          
#    This program is free software; you can redistribute it and#or modify  
#    it under the terms of the GNU General Public License as published by 
#    the Free Software Foundation; either version 2 of the License, or     
#    (at your option) any later version.                                   
#                                                                          
#    This program is distributed in the hope that it will be useful,       
#    but WITHOUT ANY WARRANTY; without even the implied warranty of        
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         
#    GNU General Public License for more details.                          
#                                                                          
#    You should have received a copy of the GNU General Public License     
#    along with this program; if not, write to the                         
#    Free Software Foundation, Inc.,                                       
#    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             
#####################################################

import qt
import Operadores

class UIOperadores(object):
	"""
	Classe que gerencia a interface grafica de operadores
	"""
	
	def __init__(self, ui):
		self.ui =ui
		
		self.operadores = Operadores.Operadores()
		
		# Conecta slots
		self.ui.connect(self.ui._botaoGerenciarOperadores, qt.SIGNAL('clicked()'), self.mostrar)
		self.ui.connect(self.ui.operadores_botaoAdicionar, qt.SIGNAL('clicked()'), self.adicionar)
		self.ui.connect(self.ui.operadores_botaoProcurar, qt.SIGNAL('clicked()'), self.procurar)
		self.ui.connect(self.ui.operadores_botaoSalvar, qt.SIGNAL('clicked()'), self.salvar)
		self.ui.connect(self.ui.operadores_botaoExcluir, qt.SIGNAL('clicked()'), self.excluir)
		self.ui.connect(self.ui.operadores_botaoFechar, qt.SIGNAL('clicked()'), self.fechar)
		
		self.ui.operadores_botaoFechar.setEnabled(False)
		self.__habilitarObjetosTela(False)

	def mostrar(self):
		"""
		Exibe a janela de gerenciar grupos
		"""
		# Exibe janela interna para gerenciar grupos
		self.ui.widgetStack.raiseWidget(self.ui.wStackOperadores)
		self.ui.operadores_lineProcurar.setFocus()


	def adicionar(self):
		"""
		Habilita objetos para adicionar um novo operador
		"""
		self.__habilitarObjetosTela(True)
		self.ui.operadores_lineLogin.setReadOnly(False)
		self.ui.operadores_lineLogin.setFocus()
		self.ui.operadores_botaoAdicionar.setEnabled(False)
		self.ui.operadores_botaoSalvar.setEnabled(True)
		self.ui.operadores_botaoExcluir.setEnabled(True)
		self.ui.operadores_lineProcurar.setEnabled(False)
		self.ui.operadores_botaoProcurar.setEnabled(False)
		self.ui.operadores_botaoFechar.setEnabled(True)
	

	def salvar(self):
		"""
		Salva informacoes editadas na janela
		"""
		if len(self.ui.operadores_lineLogin.text()) < 1:
			qt.QMessageBox.critical(None, "Gerenciamento de Operadores", qt.QString("Digite um login válido!"))
		else:
			dicOperador = {}
			dicOperador["nome"] = str(self.ui.operadores_lineNome.text())
			dicOperador["login"] = str(self.ui.operadores_lineLogin.text())
			dicOperador["nivel"] = str(self.ui.operadores_listNivel.currentText())
			print dicOperador["nivel"] 
			dicOperador["senha"] = str(self.ui.operadores_lineSenha.text())
			if self.ui.operadores_lineLogin.isReadOnly():
				resultado = self.operadores.atualiza(dicOperador)	
			else:
				resultado = self.operadores.inseri(dicOperador)
			if resultado == 1:
				qt.QMessageBox.information(None, "Gerenciamento de Operadores", qt.QString("Operador cadastrado com sucesso!"))
				
			else:
				qt.QMessageBox.critical(None, "Gerenciamento de Operadores", qt.QString("Falha ao cadastrar o operador.\nContate o administrador!\n"))


	def procurar(self):
		"""
		Procura operadores pelo login
		"""
		self.__habilitarObjetosTela(False)
		if len(self.ui.operadores_lineProcurar.text()) < 1:
			self.ui.operadores_labelProcurar.setText("Login inválido!");
		else:
			dicOperadores = self.operadores.informacao(self.ui.operadores_lineProcurar.text())
			if dicOperadores != None:
				self.__habilitarObjetosTela(True)
				self.ui.operadores_lineLogin.setReadOnly(True)
				self.ui.operadores_botaoAdicionar.setEnabled(False)
				self.ui.operadores_botaoSalvar.setEnabled(True)
				self.ui.operadores_botaoExcluir.setEnabled(True)
				self.__preencherAgente(dicOperadores)
				self.ui.operadores_botaoFechar.setEnabled(True)
				self.ui.operadores_labelProcurar.clear()
			else:
				self.ui.operadores_labelProcurar.setText("Não encontrado!");


	def fechar(self):
		"""
		Desabilita e limpa os objetos da janela de grupos
		"""
		self.ui.operadores_botaoAdicionar.setEnabled(True)
		self.ui.operadores_botaoSalvar.setEnabled(False)
		self.ui.operadores_botaoExcluir.setEnabled(False)
		self.ui.operadores_botaoProcurar.setEnabled(True)
		self.ui.operadores_lineProcurar.setEnabled(True)
		self.__habilitarObjetosTela(False)
		self.ui.operadores_botaoFechar.setEnabled(False)
		self.ui.operadores_lineProcurar.setFocus()


	def excluir(self):
		"""
		Trata o botao excluir
		"""
		# Remove agente...
		removeAgente = self.operadores.remove(str(self.ui.operadores_lineLogin.text()))
		print removeAgente
		if removeAgente == 1:
			qt.QMessageBox.information(None, "Gerenciamento de Agentes", qt.QString("Agente removido com sucesso!"))
		else:
			QMessageBox.critical(None, "Gerenciamento de Agentes", qt.QString("Falha ao remover o agente: %s .\nContate o administrador!", self.ui.operadores_lineProcurar.text()))
		self.__habilitarObjetosTela(False)
		self.ui.operadores_botaoAdicionar.setEnabled(True)
		self.ui.operadores_botaoSalvar.setEnabled(False)
		self.ui.operadores_botaoProcurar.setEnabled(True)
		self.ui.operadores_botaoAdicionar.setEnabled(True)
		self.ui.operadores_botaoExcluir.setEnabled(False)
		self.ui.operadores_botaoFechar.setEnabled(False)


	def __preencherAgente(self, dicGrupos):
		self.ui.operadores_lineNome.setText(dicGrupos["nome"])
		self.ui.operadores_lineLogin.setText(dicGrupos["login"])
		nivel = self.ui.operadores_listNivel.findItem(qt.QString(dicGrupos["nivel"]))
		self.ui.operadores_listNivel.setCurrentItem(nivel)
		self.ui.operadores_lineSenha.setText(dicGrupos["senha"])


	def __habilitarObjetosTela(self, opcao=True):
		self.ui.operadores_groupBox.setEnabled(opcao)
		self.ui.operadores_lineNome.setEnabled(opcao)
		self.ui.operadores_lineLogin.setEnabled(opcao)
		self.ui.operadores_lineSenha.setEnabled(opcao)
		self.ui.operadores_lineNome.clear()
		self.ui.operadores_lineLogin.clear()
		self.ui.operadores_listNivel.clearSelection()
		self.ui.operadores_labelProcurar.clear()
		self.ui.operadores_lineSenha.clear()

