#! /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 Grupos

class UIGrupos(object):
	"""
	Classe que gerencia a interface grafica para gerenciar grupos
	"""
	
	def __init__(self, ui):
		self.ui =ui
		
		self.grupos = Grupos.Grupos()
		
		# Conecta slots
		self.ui.connect(self.ui._botaoGerenciarGrupos, qt.SIGNAL('clicked()'), self.mostrar)
		self.ui.connect(self.ui.grupos_botaoAdicionar, qt.SIGNAL('clicked()'), self.adicionar)
		self.ui.connect(self.ui.grupos_botaoProcurar, qt.SIGNAL('clicked()'), self.procurar)
		self.ui.connect(self.ui.grupos_botaoSalvar, qt.SIGNAL('clicked()'), self.salvar)
		self.ui.connect(self.ui.grupos_botaoExcluir, qt.SIGNAL('clicked()'), self.excluir)
		self.ui.connect(self.ui.grupos_botaoFechar, qt.SIGNAL('clicked()'), self.fechar)
		
		self.ui.grupos_botaoFechar.setEnabled(False)


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

	def adicionar(self):
		"""
		Habilita objetos para adicionar um novo grupo
		"""
		self.__habilitarObjetosTela(True)
		self.ui.grupos_lineNome.setFocus()
		self.ui.grupos_botaoAdicionar.setEnabled(False)
		self.ui.grupos_botaoSalvar.setEnabled(True)
		self.ui.grupos_botaoExcluir.setEnabled(True)
		self.ui.grupos_lineProcurar.setEnabled(False)
		self.ui.grupos_botaoProcurar.setEnabled(False)
		self.ui.grupos_botaoFechar.setEnabled(True)
		

	def salvar(self):
		"""
		Salva informacoes editadas na janela de gerenciar agentes
		"""
		if len(self.ui.grupos_lineNome.text()) < 1:
			qt.QMessageBox.critical(None, "Gerenciamento de Grupos", qt.QString("Digite um nome válido!"))
		else:
			dicNovoGrupo = {}
			dicNovoGrupo["nome"] = self.ui.grupos_lineNome.text()
			dicNovoGrupo["responsavel"] = self.ui.grupos_lineResponsavel.text()
			dicNovoGrupo["classe"] = self.ui.grupos_lineClasse.text()
			dicNovoGrupo["descricao"] = self.ui.grupos_textDescricao.text()
			resultado = self.grupos.inseri(dicNovoGrupo)
			if resultado == 1:
				qt.QMessageBox.information(None, "Gerenciamento de Grupos", qt.QString("Grupo cadastrado com sucesso!"))
			else:
				QMessageBox.critical(None, "Gerenciamento de Grupos", qt.QString("Falha ao cadastrar o grupo.\nContate o administrador!\n%s", resultado))


	def procurar(self):
		"""
		Procura grupos pelo nome
		"""
		if len(self.ui.grupos_lineProcurar.text()) < 1:
			self.ui.grupos_labelProcurar.setText("Nome inválido!");
		else:
			self.__habilitarObjetosTela(False)
			dicGrupos = self.grupos.informacao(self.ui.grupos_lineProcurar.text())
			if dicGrupos != None:
				self.__habilitarObjetosTela(True)
				self.ui.grupos_lineNome.setReadOnly(True)
				self.ui.grupos_botaoAdicionar.setEnabled(False)
				self.ui.grupos_botaoSalvar.setEnabled(True)
				self.ui.grupos_botaoExcluir.setEnabled(True)
				self.__preencherAgente(dicGrupos)
				self.ui.grupos_botaoFechar.setEnabled(True)
			else:
				self.ui.grupos_labelProcurar.setText("Não encontrado!");


	def fechar(self):
		"""
		Desabilita e limpa os objetos da janela de grupos
		"""
		self.ui.grupos_botaoAdicionar.setEnabled(True)
		self.ui.grupos_botaoSalvar.setEnabled(False)
		self.ui.grupos_botaoExcluir.setEnabled(False)
		self.ui.grupos_botaoProcurar.setEnabled(True)
		self.ui.grupos_lineProcurar.setEnabled(True)
		self.__habilitarObjetosTela(False)
		self.ui.grupos_botaoFechar.setEnabled(False)
		self.ui.grupos_lineProcurar.setFocus()


	def excluir(self):
		"""
		Trata o botao excluir
		"""
		# Remove grpo...
		removeAgente = self.grupos.remove(self.ui.grupos_lineNome.text())
		print removeAgente
		if removeAgente == 1:
			qt.QMessageBox.information(None, "Gerenciamento de Grupos", qt.QString("Grupo removido com sucesso!"))
		else:
			QMessageBox.critical(None, "Gerenciamento de Grupos", qt.QString("Falha ao remover o grupo: %s .\nContate o administrador!", self.ui.grupos_lineNome.text()))
		self.__habilitarObjetosTela(False)
		self.ui.grupos_botaoAdicionar.setEnabled(True)
		self.ui.grupos_botaoSalvar.setEnabled(False)
		self.ui.grupos_botaoProcurar.setEnabled(True)
		self.ui.grupos_botaoAdicionar.setEnabled(True)
		self.ui.grupos_botaoExcluir.setEnabled(False)
		self.ui.grupos_botaoFechar.setEnabled(False)


	def __preencherAgente(self, dicGrupos):
		self.ui.grupos_lineNome.setText(dicGrupos["nome"])
		self.ui.grupos_lineResponsavel.setText(dicGrupos["responsavel"])
		self.ui.grupos_lineClasse.setText(dicGrupos["classe"])
		self.ui.grupos_textDescricao.setText(dicGrupos["descricao"])
		

	def __habilitarObjetosTela(self, opcao=True):
		self.ui.grupos_groupBox.setEnabled(opcao)
		self.ui.grupos_lineNome.setEnabled(opcao)
		self.ui.grupos_lineResponsavel.setEnabled(opcao)
		self.ui.grupos_lineClasse.setEnabled(opcao)
		self.ui.grupos_textDescricao.setEnabled(opcao)
		self.ui.grupos_lineNome.clear()
		self.ui.grupos_lineResponsavel.clear()
		self.ui.grupos_lineClasse.clear()
		self.ui.grupos_textDescricao.clear()
		self.ui.grupos_labelProcurar.clear()
		
