def __init__(self, ctx):
     super(ReceivedInviteWindow, self).__init__()
     self._inviteInfo = PrbInviteInfo(ctx.get('inviteID'))
class ReceivedInviteWindow(View, WindowViewMeta, GlobalListener, ReceivedInviteWindowMeta):

    def __init__(self, ctx):
        super(ReceivedInviteWindow, self).__init__()
        self._inviteInfo = PrbInviteInfo(ctx.get('inviteID'))

    @prbInvitesProperty
    def prbInvites(self):
        pass

    def acceptInvite(self):
        postActions = []
        if self.prbDispatcher.hasModalEntity():
            postActions.append(actions.LeavePrbModalEntity())
        inviteID = self._inviteInfo.getID()
        invite, _ = self.prbInvites.getReceivedInvite(inviteID)
        if invite.anotherPeriphery:
            postActions.append(actions.DisconnectFromPeriphery())
            postActions.append(actions.ConnectToPeriphery(invite.peripheryID))
            postActions.append(actions.PrbInvitesInit())
        self.prbInvites.acceptInvite(inviteID, postActions=postActions)
        self.onWindowClose()

    def declineInvite(self):
        self.prbInvites.declineInvite(self._inviteInfo.getID())
        self.onWindowClose()

    def cancelInvite(self):
        self.onWindowClose()

    def onWindowClose(self):
        self.destroy()

    def onPrbFunctionalInited(self):
        self.__updateReceivedInfo()

    def onPrbFunctionalFinished(self):
        self.__updateReceivedInfo()

    def onTeamStatesReceived(self, functional, team1State, team2State):
        self.__updateReceivedInfo()

    def onIntroUnitFunctionalInited(self):
        self.__updateReceivedInfo()

    def onIntroUnitFunctionalFinished(self):
        self.__updateReceivedInfo()

    def onUnitFunctionalInited(self):
        self.__updateReceivedInfo()

    def onUnitFunctionalFinished(self):
        self.__updateReceivedInfo()

    def onUnitStateChanged(self, state, timeLeft):
        self.__updateReceivedInfo()

    def _populate(self):
        super(ReceivedInviteWindow, self)._populate()
        self.startGlobalListening()
        self.prbInvites.onReceivedInviteListModified += self.__invitesListModified
        self.as_setTitleS(self._inviteInfo.getTitle())
        self.__updateReceivedInfo()

    def _dispose(self):
        self._inviteInfo = None
        self.stopGlobalListening()
        self.prbInvites.onReceivedInviteListModified -= self.__invitesListModified
        super(ReceivedInviteWindow, self)._dispose()
        return

    def __updateReceivedInfo(self):
        self.as_setReceivedInviteInfoS(self._inviteInfo.as_dict())

    def __invitesListModified(self, added, changed, deleted):
        inviteID = self._inviteInfo.getID()
        if len(deleted) > 0 and inviteID in deleted:
            self.onWindowClose()
            return
        if len(changed) > 0 and inviteID in changed:
            self.__updateReceivedInfo()