Ignore:
Timestamp:
Nov 29, 2013 5:56:02 AM (10 years ago)
Author:
ming
Message:

Re #1519: Add Call API in pjsua2.

Location:
pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/account.py

    r4657 r4663  
    3434import accountsetting 
    3535import application 
     36import call 
    3637 
    3738# Account class 
     
    4748                self.cfgChanged = False 
    4849                self.buddyList = [] 
     50                self.callList = [] 
    4951 
    5052        def statusText(self): 
     
    7375                        status = '- not created -' 
    7476                return status 
     77         
     78        def makeCall(self): 
     79                mycall = call.Call(self.app, self, pj.PJSUA_INVALID_ID) 
     80                callPrm = pj.CallOpParam() 
     81                callPrm.opt.audioCount = 1 
     82                callPrm.opt.videoCount = 0 
     83                mycall.uri = "sip:test1@pjsip.org" 
     84                self.callList.append(mycall) 
     85                mycall.makeCall(mycall.uri, callPrm) 
    7586         
    7687        def onRegState(self, prm): 
    7788                self.app.updateAccount(self) 
     89 
     90        def onIncomingCall(self, prm): 
     91                mycall = call.Call(self.app, self, prm.callId) 
     92                self.callList.append(mycall) 
     93                self.app.updateCall(self) 
     94                callPrm = pj.CallOpParam() 
     95                msg = "Incoming call for account '%s'" % self.cfg.idUri 
     96                if msgbox.askquestion(msg, 'Accept call?', default=msgbox.YES) == u'yes': 
     97                        callPrm.statusCode = 200 
     98                        mycall.answer(callPrm) 
     99                else: 
     100                        mycall.hangup(callPrm) 
    78101 
    79102 
  • pjproject/branches/projects/pjsua2/pjsip-apps/src/pygui/application.py

    r4657 r4663  
    191191                self._onTimer() 
    192192 
     193        def updateCall(self, acc): 
     194                iid = str(acc.randId) 
     195                for call in acc.callList: 
     196                        calliid = str(call.randId) 
     197                        uri, status = call.statusText() 
     198                        if self.tv.exists(calliid): 
     199                                self.tv.item(call.iid, text=uri, values=(status,)) 
     200                        else: 
     201                                call.iid = self.tv.insert(iid, 0, calliid, open=True, text=uri, values=(status,)) 
     202 
    193203        def updateAccount(self, acc): 
    194204                iid = str(acc.randId) 
     
    270280                self.accMenu = tk.Menu(top, tearoff=False) 
    271281                # Labels, must match with _onAccContextMenu() 
    272                 labels = ['Unregister', 'Reregister', 'Add buddy...', '-', 
     282                labels = ['Call', '-', 'Unregister', 'Reregister', 'Add buddy...', '-', 
    273283                          'Online', 'Invisible', 'Away', 'Busy', '-', 
    274284                          'Settings...', '-', 
     
    351361                        return 
    352362                 
    353                 if label=='Unregister': 
     363                if label=='Call': 
     364                        acc.makeCall() 
     365                elif label=='Unregister': 
    354366                        acc.setRegistration(False) 
    355367                elif label=='Reregister': 
Note: See TracChangeset for help on using the changeset viewer.