def new_message(self, conversation): if not settings.get_notify_on_messagerecieve() or self.skype.skype_presence == Skype4Py.cusDoNotDisturb: return #conversation.skypereturn.Chat.Type == Skype4Py.chatTypeMultiChat and if conversation.skypereturn.Chat.Topic: group_chat_title = unicode(conversation.skypereturn.Sender.FullName + " ► " + conversation.skypereturn.Chat.Topic) else: group_chat_title = unicode(conversation.display_name) icon = "" if settings.get_display_notification_avatars(): avatar = SkypeAvatar(conversation.skypereturn.Sender.Handle) if avatar.filename: icon = '-i "'+avatar.filename+'" ' else: icon = '-i "/usr/share/skype-wrapper/icons/skype-wrapper-48.svg" ' fullname = conversation.skypereturn.Sender.FullName if not fullname: fullname = username #doesn't work unitylauncher.urgent(True) os.system(u'notify-send '+icon+'"'+group_chat_title+'" "'+conversation.skypereturn.Body+'"');
def calls_ringing(self) : self.calls_ringing_started = True if self.call_ringing > 0: unitylauncher.urgent() else : self.calls_ringing_started = False return self.call_ringing > 0
def calls_ringing(self) : self.calls_ringing_started = True if self.call_ringing > 0: if helpers.isUnityRunning(): unitylauncher.urgent() else : self.calls_ringing_started = False return self.call_ringing > 0
def checkUnreadMessages(self): if not self.messageupdatepending: return AppletRunning self.messageupdatepending = False try : log("Checking unread messages", INFO) missedmessages = [] if self.skype.MissedMessages: for mesg in self.skype.MissedMessages: missedmessages.append(mesg) unread = self.unread_conversations self.unread_conversations = {} logged = False if missedmessages and self.cb_show_indicator: for mesg in reversed(missedmessages): try: id = mesg.Id if self.skype.Friends: for friend in self.skype.Friends: if mesg.Chat.DialogPartner == friend.Handle: display_name = friend.DisplayName or friend.FullName or friend.Handle break except: log("Couldn't get missed message Chat object", ERROR) continue if not id in self.unread_conversations: conversation = Conversation(display_name, mesg.Timestamp, mesg.Sender.Handle, mesg) self.name_mappings[id] = mesg.Sender.Handle self.unread_conversations[id] = conversation else: self.unread_conversations[id].add_timestamp(mesg.Timestamp) if helpers.isUserBlacklisted(mesg.Sender.Handle): self.unread_conversations[id].Read = True if not self.unread_conversations[id].Read: self.logMessage(self.unread_conversations[id]) self.cb_show_indicator(self.unread_conversations[id]) if len(unread) != len(self.unread_conversations): CPUPRIORITY = 1 if self.cb_read_within_skype: self.cb_read_within_skype() if helpers.haveUnity(): unitylauncher.urgent(True) unitylauncher.urgent(False) #limitcpu() CPUPRIORITY = 0 except Exception, e: log("Checking unread messages failed: "+str(e), WARNING)
def CallStatus(self, call, status): global active_player, player_paused, volume_level if status == "RINGING": if settings.get_control_music_player() and active_player == "unknown" and player_paused == False: controlMusicPlayer() if settings.get_restore_volume(): SaveRestore_Volume() self.call_ringing = self.call_ringing + 1 self.calls[call.PartnerHandle] = call else: self.call_ringing = self.call_ringing - 1 #if status == "INPROGRESS":LOCALHOLD if (status == "MISSED" or status == "FINISHED" or status == "REFUSED" or status == "CANCELLED") and call.PartnerHandle in self.calls: if settings.get_restore_volume(): SaveRestore_Volume() volume_level = "unknown" if settings.get_control_music_player(): controlMusicPlayer() active_player = "unknown" player_paused = False del self.calls[call.PartnerHandle] if helper.isUnityRunning(): unitylauncher.createCallsQuickList(self.calls, self.cb_call_action) unitylauncher.redrawQuicklist() # wiggle the launcher if self.call_ringing > 0 and not self.calls_ringing_started: if helpers.isUnityRunning(): unitylauncher.urgent() GObject.timeout_add(1000, self.calls_ringing) icon = "" if settings.get_display_notification_avatars(): avatar = SkypeAvatar(call.PartnerHandle) if avatar.filename: icon = avatar.filename else: icon = wrapperPath + "/icons/skype-wrapper-48.svg" partner = call.PartnerDisplayName or call.PartnerHandle notification = "" if status == "RINGING" and (call.Type == "INCOMING_P2P" or call.Type == "INCOMING_PSTN"): notification = "* Incoming call"; if status == "INPROGRESS": notification = "* Call started"; if status == "MISSED": notification = "* Missed call"; if status == "FINISHED": notification = "* Call ended"; if status == "REMOTEHOLD": notification = "* Call put on hold"; if notification: helpers.notify(partner, notification, icon, "call://"+call.PartnerHandle, True, True)
def CallStatus(self, call, status): global active_player, player_paused, volume_level if status == "RINGING": if settings.get_control_music_player() and active_player == "unknown" and player_paused == False: controlMusicPlayer() if settings.get_restore_volume(): SaveRestore_Volume() self.call_ringing = self.call_ringing + 1 self.calls[call.PartnerHandle] = call else: self.call_ringing = self.call_ringing - 1 #if status == "INPROGRESS":LOCALHOLD if (status == "MISSED" or status == "FINISHED" or status == "REFUSED" or status == "CANCELLED") and call.PartnerHandle in self.calls: if settings.get_restore_volume(): SaveRestore_Volume() volume_level = "unknown" if settings.get_control_music_player(): controlMusicPlayer() active_player = "unknown" player_paused = False del self.calls[call.PartnerHandle] unitylauncher.createCallsQuickList(self.calls, self.cb_call_action) unitylauncher.redrawQuicklist() # wiggle the launcher if self.call_ringing > 0 and not self.calls_ringing_started: unitylauncher.urgent() GObject.timeout_add(1000, self.calls_ringing) icon = "" if settings.get_display_notification_avatars(): avatar = SkypeAvatar(call.PartnerHandle) if avatar.filename: icon = avatar.filename else: icon = "/usr/share/skype-wrapper/icons/skype-wrapper-48.svg" partner = call.PartnerDisplayName or call.PartnerHandle notification = "" if status == "RINGING" and (call.Type == "INCOMING_P2P" or call.Type == "INCOMING_PSTN"): notification = "* Incoming call"; if status == "INPROGRESS": notification = "* Call started"; if status == "MISSED": notification = "* Missed call"; if status == "FINISHED": notification = "* Call ended"; if status == "REMOTEHOLD": notification = "* Call put on hold"; if notification: helpers.notify(partner, notification, icon, "call://"+call.PartnerHandle, True, True)
def CallStatus(self, call, status): if status == "RINGING": self.call_ringing = self.call_ringing + 1 self.calls[call.PartnerHandle] = call else: self.call_ringing = self.call_ringing - 1 #if status == "INPROGRESS":LOCALHOLD if (status == "MISSED" or status == "FINISHED") and call.PartnerHandle in self.calls: del self.calls[call.PartnerHandle] unitylauncher.createCallsQuickList(self.calls, self.cb_call_action) unitylauncher.redrawQuicklist() # wiggle the launcher if self.call_ringing > 0 and not self.calls_ringing_started: unitylauncher.urgent() GObject.timeout_add(1000, self.calls_ringing) icon = "" if settings.get_display_notification_avatars(): avatar = SkypeAvatar(call.PartnerHandle) if avatar.filename: icon = avatar.filename else: icon = "/usr/share/skype-wrapper/icons/skype-wrapper-48.svg" partner = call.PartnerDisplayName or call.PartnerHandle notification = "" if status == "RINGING": notification = "* Incoming call"; if status == "INPROGRESS": notification = "* Call started"; if status == "MISSED": notification = "* Missed call"; if status == "FINISHED": notification = "* Call ended"; if status == "REMOTEHOLD": notification = "* Call put on hold"; if notification: helpers.notify(partner, notification, icon, "call://"+call.PartnerHandle, True, True)
def checkUnreadMessages(self): try: log("Checking unread messages", INFO) missedmessages = [] if self.skype.MissedMessages: for mesg in self.skype.MissedMessages: missedmessages.append(mesg) unread = self.unread_conversations self.unread_conversations = {} if missedmessages and self.cb_show_indicator: for mesg in reversed(missedmessages): try: id = mesg.Id display_name = mesg.Chat.FriendlyName except: log("Couldn't get missed message Chat object", ERROR) continue if not id in self.unread_conversations: conversation = Conversation(display_name, mesg.Timestamp, mesg.Sender.Handle, mesg) self.name_mappings[id] = mesg.Sender.Handle self.unread_conversations[id] = conversation else: self.unread_conversations[id].add_timestamp( mesg.Timestamp) if helpers.isUserBlacklisted(mesg.Sender.Handle): self.unread_conversations[id].Read = True if not self.unread_conversations[id].Read: self.logMessage(self.unread_conversations[id]) self.cb_show_indicator(self.unread_conversations[id]) if len(unread) != len( self.unread_conversations) and self.cb_read_within_skype: self.cb_read_within_skype() unitylauncher.urgent(True) unitylauncher.urgent(False) limitcpu() except Exception, e: log("Checking unread messages failed: " + str(e), WARNING)
def checkUnreadMessages(self): try : log("Checking unread messages", INFO) missedmessages = [] if self.skype.MissedMessages: for mesg in self.skype.MissedMessages: missedmessages.append(mesg) unread = self.unread_conversations self.unread_conversations = {} if missedmessages and self.cb_show_indicator: for mesg in reversed(missedmessages): try: id = mesg.Id display_name = mesg.Chat.FriendlyName except: log("Couldn't get missed message Chat object", ERROR) continue if not id in self.unread_conversations: conversation = Conversation(display_name, mesg.Timestamp, mesg.Sender.Handle, mesg) self.name_mappings[id] = mesg.Sender.Handle self.unread_conversations[id] = conversation else: self.unread_conversations[id].add_timestamp(mesg.Timestamp) if helpers.isUserBlacklisted(mesg.Sender.Handle): self.unread_conversations[id].Read = True if not self.unread_conversations[id].Read: self.logMessage(self.unread_conversations[id]) self.cb_show_indicator(self.unread_conversations[id]) if len(unread) != len(self.unread_conversations) and self.cb_read_within_skype: self.cb_read_within_skype() unitylauncher.urgent(True) unitylauncher.urgent(False) limitcpu() except Exception, e: log("Checking unread messages failed: "+str(e), WARNING)
def checkFileTransfers(self) : if not self.filetransferupdatepending: return AppletRunning self.filetransferupdatepending = False try : log("Checking file transfers", INFO) for transfer in self.skype.ActiveFileTransfers: if not transfer.Id in self.filetransfers: self.filetransfers[transfer.Id] = FileTransfer(transfer) for transfer in self.skype.FileTransfers: if transfer.Id in self.filetransfers: self.filetransfers[transfer.Id].update(transfer) oldincoming = self.incomingfilecount self.incomingfilecount = 0 self.filetransfer = { "total" : -1, "current" : 0 } # should we send out notifications for k in self.filetransfers: v = self.filetransfers[k] if str(v.type) == "INCOMING": if "NEW" in str(v.status): self.incomingfilecount = self.incomingfilecount + 1 if helpers.haveUnity(): unitylauncher.urgent(True) else: if helpers.haveUnity(): unitylauncher.urgent(False) if settings.get_show_incoming_filetransfer_progress(): if "TRANSFERRING" in str(v.status) or "PAUSED" in str(v.status): self.filetransfer['total'] = self.filetransfer['total'] + v.skype_transfer.FileSize self.filetransfer['current'] = self.filetransfer['current'] + v.skype_transfer.BytesTransferred self.incomingfilecount = self.incomingfilecount + 1 self.filetransferupdatepending = True if not str(v.status) in v.notifications: if "NEW" in v.status: self.filetransfers[k].notifications[str(v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer(v, "* " + v.partner+ " wants to send you a file") if "TRANSFERRING" in v.status: self.filetransfers[k].notifications[str(v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer(v, "* " + v.partner+ " is busy sending you a file") self.filetransferupdatepending = True if "CANCELLED" in v.status: self.filetransfers[k].notifications[str(v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer(v, "* file transfer with " + v.partner+ " has been cancelled") if "COMPLETED" in v.status: self.filetransfers[k].notifications[str(v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer(v, "* " + v.partner+ " finished sending you a file") if helpers.haveUnity(): unitylauncher.urgent(True) if "FAILED" in v.status: self.filetransfers[k].notifications[str(v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer(v, "* " + v.partner+ " failed to send you a file") else: if "COMPLETED" in v.status: if helpers.haveUnity(): unitylauncher.urgent(False) if str(v.type) == "OUTGOING": if settings.get_show_outgoing_filetransfer_progress(): if "TRANSFERRING" in str(v.status) or "PAUSED" in str(v.status) or "REMOTELY_PAUSED" in str(v.status): self.filetransfer['total'] = self.filetransfer['total'] + v.skype_transfer.FileSize self.filetransfer['current'] = self.filetransfer['current'] + v.skype_transfer.BytesTransferred self.incomingfilecount = self.incomingfilecount + 1 self.filetransferupdatepending = True if not str(v.status) in v.notifications: if "TRANSFERRING" in v.status: self.filetransfers[k].notifications[str(v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer(v, "* " + v.partner+ " is busy receiving your file") self.filetransferupdatepending = True if "CANCELLED" in v.status: self.filetransfers[k].notifications[str(v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer(v, "* file transfer with " + v.partner+ " has been cancelled") if "COMPLETED" in v.status: self.filetransfers[k].notifications[str(v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer(v, "* " + v.partner+ " has received your file") if "FAILED" in v.status: self.filetransfers[k].notifications[str(v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer(v, "* " + v.partner+ " failed to receive your file") if self.filetransfer['total'] > -1: currentprogress = float(self.filetransfer['current']) / float(self.filetransfer['total']) if helpers.haveUnity(): unitylauncher.progress(currentprogress) else: if helpers.haveUnity(): unitylauncher.progress(-1) if oldincoming != self.incomingfilecount and self.cb_read_within_skype: self.cb_read_within_skype() #limitcpu() except Exception, e: log("Checking file transfers failed ("+str(e)+")", WARNING) raise
def checkFileTransfers(self): if not self.filetransferupdatepending: return AppletRunning self.filetransferupdatepending = False try: log("Checking file transfers", INFO) for transfer in self.skype.ActiveFileTransfers: if not transfer.Id in self.filetransfers: self.filetransfers[transfer.Id] = FileTransfer(transfer) for transfer in self.skype.FileTransfers: if transfer.Id in self.filetransfers: self.filetransfers[transfer.Id].update(transfer) oldincoming = self.incomingfilecount self.incomingfilecount = 0 self.filetransfer = {"total": -1, "current": 0} # should we send out notifications for k in self.filetransfers: v = self.filetransfers[k] if str(v.type) == "INCOMING": if "NEW" in str(v.status): self.incomingfilecount = self.incomingfilecount + 1 if helpers.haveUnity(): unitylauncher.urgent(True) else: if helpers.haveUnity(): unitylauncher.urgent(False) if settings.get_show_incoming_filetransfer_progress(): if "TRANSFERRING" in str(v.status) or "PAUSED" in str( v.status): self.filetransfer['total'] = self.filetransfer[ 'total'] + v.skype_transfer.FileSize self.filetransfer['current'] = self.filetransfer[ 'current'] + v.skype_transfer.BytesTransferred self.incomingfilecount = self.incomingfilecount + 1 self.filetransferupdatepending = True if not str(v.status) in v.notifications: if "NEW" in v.status: self.filetransfers[k].notifications[str( v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer( v, "* " + v.partner + " wants to send you a file") if "TRANSFERRING" in v.status: self.filetransfers[k].notifications[str( v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer( v, "* " + v.partner + " is busy sending you a file") self.filetransferupdatepending = True if "CANCELLED" in v.status: self.filetransfers[k].notifications[str( v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer( v, "* file transfer with " + v.partner + " has been cancelled") if "COMPLETED" in v.status: self.filetransfers[k].notifications[str( v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer( v, "* " + v.partner + " finished sending you a file") if helpers.haveUnity(): unitylauncher.urgent(True) if "FAILED" in v.status: self.filetransfers[k].notifications[str( v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer( v, "* " + v.partner + " failed to send you a file") else: if "COMPLETED" in v.status: if helpers.haveUnity(): unitylauncher.urgent(False) if str(v.type) == "OUTGOING": if settings.get_show_outgoing_filetransfer_progress(): if "TRANSFERRING" in str(v.status) or "PAUSED" in str( v.status) or "REMOTELY_PAUSED" in str( v.status): self.filetransfer['total'] = self.filetransfer[ 'total'] + v.skype_transfer.FileSize self.filetransfer['current'] = self.filetransfer[ 'current'] + v.skype_transfer.BytesTransferred self.incomingfilecount = self.incomingfilecount + 1 self.filetransferupdatepending = True if not str(v.status) in v.notifications: if "TRANSFERRING" in v.status: self.filetransfers[k].notifications[str( v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer( v, "* " + v.partner + " is busy receiving your file") self.filetransferupdatepending = True if "CANCELLED" in v.status: self.filetransfers[k].notifications[str( v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer( v, "* file transfer with " + v.partner + " has been cancelled") if "COMPLETED" in v.status: self.filetransfers[k].notifications[str( v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer( v, "* " + v.partner + " has received your file") if "FAILED" in v.status: self.filetransfers[k].notifications[str( v.status)] = str(v.status) if self.cb_log_transfer: self.cb_log_transfer( v, "* " + v.partner + " failed to receive your file") if self.filetransfer['total'] > -1: currentprogress = float(self.filetransfer['current']) / float( self.filetransfer['total']) if helpers.haveUnity(): unitylauncher.progress(currentprogress) else: if helpers.haveUnity(): unitylauncher.progress(-1) if oldincoming != self.incomingfilecount and self.cb_read_within_skype: self.cb_read_within_skype() #limitcpu() except Exception, e: log("Checking file transfers failed (" + str(e) + ")", WARNING) raise