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

class UIRepositorio(object):
	"""
	Classe que gerencia a interface grafica do repositorio
	"""
	
	def __init__(self, ui):
		self.ui =ui
		
		self.repositorio = Repositorio.Repositorio()
		
		# Conecta slots
		self.ui.connect(self.ui._botaoGerenciarRepositorio, qt.SIGNAL('clicked()'), self.exibir)
		self.ui.connect(self.ui.repositorio_listSoftwares, qt.SIGNAL('clicked(QListViewItem *)'), self.softwareInformacao)
		self.ui.connect(self.ui.repositorio_botaoAtualizar, qt.SIGNAL('clicked()'), self.atualizarRepositorio)


	def exibir(self):
		"""
		Exibe a janela de gerenciar o repositorio
		"""
		# Exibe janela interna para gerenciar repositorio
		self.ui.widgetStack.raiseWidget(self.ui.wStackRepositorio)
		self.exibeSoftwaresRepositorio()


	def exibeSoftwaresRepositorio(self):
		""" 
		Atualiza tabela de softwares
		"""
		self.ui.repositorio_listSoftwares.clear()
		dicGruposSoftwares = self.repositorio.grupo()
		if dicGruposSoftwares == -1:
			qt.QMessageBox.critical(None, "Gerenciamento do Repositório", qt.QString("Falha ao verificar repositório!"))
		else:
			for grupo in dicGruposSoftwares:
				listGrupo = qt.QListViewItem(self.ui.repositorio_listSoftwares, qt.QString(grupo["grupo"]))
				dicSoftwares = self.repositorio.grupo(grupo["grupo"])
				if dicSoftwares == -1:
					qt.QMessageBox.critical(None, "Gerenciamento do Repositório", qt.QString("Falha ao buscar softwares do grupo:!" + str(grupo["grupo"])))
				else:
					for sw in dicSoftwares:
						listGrupo.insertItem(qt.QListViewItem(listGrupo, qt.QString(sw["nome"]), qt.QString(sw["versao"]), qt.QString(sw["md5"])))
					self.ui.repositorio_listSoftwares.insertItem(listGrupo)
	
	
	def softwareInformacao(self, opcao):
		sw_md5 = self.ui.repositorio_listSoftwares.currentItem()
		if sw_md5.text(2):
			sw = self.repositorio.informacao(sw_md5.text(2))
			if sw == -1:
				qt.QMessageBox.critical(None, "Gerenciamento do Repositório", qt.QString("Falha ao buscar informacoes do software:\n" + sw))
			else:
				self.ui.repositorio_labelPacote.setText(sw["nomeArquivo"])
				self.ui.repositorio_labelGrupo.setText(sw["grupo"])
				self.ui.repositorio_labelVersao.setText(sw["versao"])
				self.ui.repositorio_labelNome.setText(sw["nome"])
				self.ui.repositorio_labelTamanho.setText(str(sw["tamanho"]))
				self.ui.repositorio_labelLiberacao.setText(sw["liberacao"])
				self.ui.repositorio_labelPlataforma.setText(sw["plataforma"])
				self.ui.repositorio_textDescricao.setText(sw["descricao"])
		else:
			self.ui.repositorio_labelPacote.clear()
			self.ui.repositorio_labelGrupo.clear()
			self.ui.repositorio_labelVersao.clear()
			self.ui.repositorio_labelNome.clear()
			self.ui.repositorio_labelTamanho.clear()
			self.ui.repositorio_labelLiberacao.clear()
			self.ui.repositorio_labelPlataforma.clear()
			self.ui.repositorio_textDescricao.clear()
			
	def atualizarRepositorio(self):
		reposta = self.repositorio.atualiza()
		if reposta == -1:
			qt.QMessageBox.critical(None, "Gerenciamento do Repositório", qt.QString("Falha ao atualizar repositório!\n"))
		else:
			qt.QMessageBox.information(None, "Gerenciamento do Repositório", qt.QString("Repositório atualizado com sucesso!"))
			self.exibeSoftwaresRepositorio()
