Ejemplo n.º 1
0
 def _configurarGui(self):
     self._stackedLayout = StackedWidgetConsole()
     self.addTela(self._stackedLayout)
     
     #Tela inicial
     self._mostrarTelaInicial()
Ejemplo n.º 2
0
class TelaConversa(PainelConsole):
    conversasNaoVisualizadas = pyqtSignal(Usuario, int)
    def __init__(self, servico, parent=None):
        super().__init__(parent)
        self._configurarGui()

        self._servico = servico
        self._servico.dadosUsuarioAtualizado.connect(self.atualizarUsuario)
        self._servico.conversaRecebida.connect(self._receberConversa)

    def _receberConversa(self, de, inf):
        usuario = Usuario(nome=NOME_DEFAULT, ip=de)
        if not self.temConversaUsuario(usuario):
            telaConversaUsuario = TelaConversaUsuario(self._servico, usuario)
            telaConversaUsuario.conversasNaoVisualizadas.connect(self._emitirConversasNaoVisualizadas)
            telaConversaUsuario.receberTexto(inf)
            self._stackedLayout.addTela(telaConversaUsuario)

    def _configurarGui(self):
        self._stackedLayout = StackedWidgetConsole()
        self.addTela(self._stackedLayout)
        
        #Tela inicial
        self._mostrarTelaInicial()

    def _mostrarTelaInicial(self):
        painel = PainelConsole()
        painel.addTela(SpacerConsole(2))
        painel.addTela(LabelConsole("<- Selecione o Usuário"))
        self._stackedLayout.addTela(painel)
        
    @pyqtSlot(Usuario, int)
    def _emitirConversasNaoVisualizadas(self, usuario, num):
        self.conversasNaoVisualizadas.emit(usuario, num)

    def atualizarUsuario(self, usuario):
        ind = self.indexTelaConversa(usuario)
        if ind != -1:
            self._stackedLayout.getChild(ind).atualizarUsuario(usuario)

    def setUsuario(self, usuario):
        ind = self.indexTelaConversa(usuario)
        if ind == -1:
            t = TelaConversaUsuario(self._servico, usuario)
            t.conversasNaoVisualizadas.connect(self._emitirConversasNaoVisualizadas)
            self._stackedLayout.addTela(t)
            ind = self._stackedLayout.numTelas()-1
        else:
            self.atualizarUsuario(usuario)
            
        self._stackedLayout.setVisivel(ind)
        self._stackedLayout.getChild(ind).atualizarNumConversasNaoVisualizadas(0)

    def indexTelaConversa(self, usuario):
        for i in range(1, self._stackedLayout.numTelas()):
            if self._stackedLayout.getChild(i).getUsuario().getIP() == usuario.getIP():
                return i

        return -1

    def temConversaUsuario(self, usuario):
        return self.indexTelaConversa(usuario) != -1