Changeset 718

Show
Ignore:
Timestamp:
07/18/08 06:03:22 (5 months ago)
Author:
sylvain
Message:

more work on managing contacts and their chats

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • oss/jlib/examples/basic/client.py

    r717 r718  
    66from jlib.gui.chat import jlibChatWidget 
    77from jlib.gui.contact import jlibContactWidget 
     8from jlib.core.chat import jlibChat, jlibChatComponent 
    89 
    910from clientui import Ui_MainWindow 
     
    1213    def setupUi(self, parent): 
    1314        Ui_MainWindow.setupUi(self, parent) 
    14         QtCore.QObject.connect(self.actionSettings, QtCore.SIGNAL("triggered()"), self.showConnectionSettings) 
     15        QtCore.QObject.connect(self.actionSettings, QtCore.SIGNAL("triggered()"),  
     16                               self.showConnectionSettings) 
    1517        QtCore.QObject.connect(self.actionStart, QtCore.SIGNAL("triggered()"), self.start) 
    1618        QtCore.QObject.connect(self.actionStop, QtCore.SIGNAL("triggered()"), self.stop) 
     
    1921        self.actionStart.setEnabled(False) 
    2022        self.actionStop.setEnabled(False) 
     23 
     24        self.openedChats = [] 
    2125 
    2226        self.connection = None 
     
    2731 
    2832    def start(self): 
     33        QtCore.QObject.connect(self.connection.qobj, QtCore.SIGNAL("sessionReady(PyQt_PyObject)"),  
     34                               self.clientReady) 
    2935        self.connection.emit(QtCore.SIGNAL("activateChat()")) 
    3036        self.connection.emit(QtCore.SIGNAL("registerLinkages(PyQt_PyObject)"), self.contactUi.contact) 
     
    5258            self.actionStart.setEnabled(True) 
    5359            self.actionStop.setEnabled(True) 
     60 
     61    def clientReady(self, jid): 
     62        QtCore.QObject.connect(self.connection.qobj.chat, QtCore.SIGNAL("receivedMessage(PyQt_PyObject)"),  
     63                               self.messageReceived) 
     64 
     65    def messageReceived(self, message): 
     66        contact_jid = str(message.from_jid.nodeid()) 
     67        if contact_jid not in self.openedChats: 
     68            self._openChat(contact_jid) 
     69            self.openedChats.append(contact_jid) 
     70 
     71        chat = self.connection.qobj.chat 
     72        chat.emit(QtCore.SIGNAL("receivedMessage.%s(PyQt_PyObject)" % contact_jid), message) 
    5473         
    5574    def openChat(self, contact): 
     75        self._openChat(str(contact.jid)) 
     76 
     77    def _openChat(self, contact_jid): 
    5678        widget = QtGui.QWidget() 
    57         chatUi = jlibChatWidget(str(contact.jid), chat=self.connection.chat, 
     79        chatUi = jlibChatWidget(contact_jid, chat=self.connection.qobj.chat, 
    5880                                parent=widget) 
    59         tab = self.tabWidget.addTab(widget, QtCore.QString(str(contact.jid))) 
     81        tab = self.tabWidget.addTab(widget, QtCore.QString(contact_jid)) 
    6082        self.tabWidget.setCurrentIndex(tab) 
    6183 
  • oss/jlib/jlib/core/chat.py

    r717 r718  
    9898            if self.dataReady("inbox"): 
    9999                m = self.recv("inbox") 
    100                 self.qobj.emit(QtCore.SIGNAL("receivedMessage.%s(PyQt_PyObject)" % str(m.from_jid.nodeid())), m) 
     100                self.qobj.emit(QtCore.SIGNAL("receivedMessage(PyQt_PyObject)"), m) 
    101101 
    102102            if not self.anyReady(): 
  • oss/jlib/jlib/core/connection.py

    r709 r718  
    2222 
    2323from jlib.core.qaxon import QAxonObject 
     24from jlib.core.chat import jlibChat, jlibChatComponent 
    2425 
    2526__all__ = ['jlibConnection', 'jlibConnectionComponent'] 
     
    3233        QtCore.QObject.connect(self, QtCore.SIGNAL("registerComponents(PyQt_PyObject, PyQt_PyObject)"),  
    3334                               self.registerComponents) 
     35        QtCore.QObject.connect(self, QtCore.SIGNAL("activateChat()"), self.enableChat) 
    3436 
    3537    def start(self): 
     
    4143    def registerComponents(self, components, linkages): 
    4244        self.component.registerComponents(components, linkages) 
     45 
     46    def enableChat(self): 
     47        self.chat = jlibChat() 
     48        self.chat.setComponent(jlibChatComponent()) 
     49        components, linkages = self.chat.getLinkages() 
     50        self.registerComponents(components, linkages) 
     51         
     52    def messageReceived(self, message): 
     53        print message 
    4354 
    4455class jlibConnectionComponent(component): 
     
    199210            if self.dataReady("jid"): 
    200211                self.jid = self.recv('jid') 
     212                self.qobj.emit(QtCore.SIGNAL("sessionReady(PyQt_PyObject)"), self.jid) 
    201213                 
    202214            if not self.anyReady(): 
  • oss/jlib/jlib/gui/chat.py

    r717 r718  
    1717        Ui_jlibChat.setupUi(self, parent) 
    1818        QtCore.QObject.connect(self.message, QtCore.SIGNAL("returnPressed()"), self.sendMessage) 
    19         QtCore.QObject.connect(self.qobj, QtCore.SIGNAL("receivedMessage.%s(PyQt_PyObject)" % self.contact_jid),  
     19        QtCore.QObject.connect(self.qobj, QtCore.SIGNAL("receivedMessage.%s(PyQt_PyObject)" % str(self.contact_jid)),  
    2020                               self.receivedMessage) 
    2121 
  • oss/jlib/jlib/gui/connection.py

    r717 r718  
    44from jlib.gui.connectionui import Ui_jlibConnection 
    55from jlib.core.connection import jlibConnection, jlibConnectionComponent 
    6 from jlib.core.chat import jlibChat, jlibChatComponent 
    76 
    87__all__ = ['jlibConnectionWidget', 'jlibConnectionDialog'] 
     
    1211        QtGui.QWidget.__init__(self, parent) 
    1312        self.setupUi(parent=parent) 
    14  
    15         self.chat = None 
    1613 
    1714    def setupUi(self, parent=None): 
     
    4138 
    4239    def enableChat(self): 
    43         self.chat = jlibChat(parent=self) 
    44         self.chat.setComponent(jlibChatComponent()) 
    45         self.registerLinkages(self.chat) 
     40        self.qobj.emit(QtCore.SIGNAL("activateChat()")) 
    4641         
    4742    def registerLinkages(self, qobj): 
  • oss/jlib/jlib/gui/contact.py

    r717 r718  
    121121        menu.addAction(actionNewGroup) 
    122122 
     123        actionChangeGroup = QtGui.QAction(QtCore.QString("Change group"), self.parent()) 
     124        QtCore.QObject.connect(actionChangeGroup, QtCore.SIGNAL("triggered()"), self.changeGroup) 
     125        menu.addAction(actionChangeGroup) 
     126 
    123127        menu.exec_(event.globalPos()) 
    124128 
    125129    def dragEnterEvent(self, event): 
     130        event.ignore() 
     131 
     132 
     133 
    126134        data = event.mimeData() 
    127135        model = self.contacts.model()