def _NH_XCAPManagerDidReloadData(self, notification): account = notification.sender.account blink_settings = BlinkSettings() icon_manager = IconManager() offline_status = notification.data.offline_status status_icon = notification.data.status_icon try: offline_note = next(note for service in offline_status.pidf.services for note in service.notes) except (AttributeError, StopIteration): offline_note = None blink_settings.presence.offline_note = offline_note blink_settings.save() if status_icon: icon_hash = hashlib.sha1(status_icon.data).hexdigest() icon_desc = IconDescriptor(status_icon.url, icon_hash) if not blink_settings.presence.icon or blink_settings.presence.icon.etag != icon_hash: icon = icon_manager.store_data('avatar', status_icon.data) blink_settings.presence.icon = IconDescriptor(FileURL(icon.filename), icon_hash) if icon is not None else None blink_settings.save() else: icon_desc = None icon_manager.remove('avatar') blink_settings.presence.icon = None blink_settings.save() account.xcap.icon = icon_desc account.save()
def _NH_XCAPManagerDidReloadData(self, notification): account = notification.sender.account blink_settings = BlinkSettings() icon_manager = IconManager() offline_status = notification.data.offline_status status_icon = notification.data.status_icon try: offline_note = next(note for service in offline_status.pidf.services for note in service.notes) except (AttributeError, StopIteration): offline_note = None blink_settings.presence.offline_note = offline_note blink_settings.save() try: offline_icon = next(service.icon for service in offline_status.pidf.services) except (AttributeError, StopIteration): offline_icon_hash = None else: offline_icon_hash = str(offline_icon).partition( '#blink-icon')[2] or None if status_icon: icon_hash = hashlib.sha1(status_icon.data).hexdigest() icon_desc = IconDescriptor(status_icon.url, icon_hash) if not blink_settings.presence.icon or blink_settings.presence.icon.etag != icon_hash: icon = icon_manager.store_data('avatar', status_icon.data) blink_settings.presence.icon = IconDescriptor( FileURL(icon.filename), icon_hash) if icon is not None else None blink_settings.save() elif account.xcap.icon != icon_desc and icon_hash != offline_icon_hash: self._should_set_offline_status.add(account.id) else: if blink_settings.presence.icon is None is not account.xcap.icon: self._should_set_offline_status.add(account.id) elif blink_settings.presence.icon is account.xcap.icon is offline_status is None and account.xcap_manager.pidf_manipulation.supported: state = BlinkPresenceState(account).offline_state account.xcap_manager.set_offline_status( OfflineStatus(state) if state is not None else None) icon_desc = None icon_manager.remove('avatar') blink_settings.presence.icon = None blink_settings.save() account.xcap.icon = icon_desc account.save()
def _NH_XCAPManagerDidReloadData(self, notification): account = notification.sender.account blink_settings = BlinkSettings() icon_manager = IconManager() offline_status = notification.data.offline_status status_icon = notification.data.status_icon try: offline_note = next(note for service in offline_status.pidf.services for note in service.notes) except (AttributeError, StopIteration): offline_note = None blink_settings.presence.offline_note = offline_note blink_settings.save() try: offline_icon = next(service.icon for service in offline_status.pidf.services) except (AttributeError, StopIteration): offline_icon_hash = None else: offline_icon_hash = str(offline_icon).partition('#blink-icon')[2] or None if status_icon: icon_hash = hashlib.sha1(status_icon.data).hexdigest() icon_desc = IconDescriptor(status_icon.url, icon_hash) if not blink_settings.presence.icon or blink_settings.presence.icon.etag != icon_hash: icon = icon_manager.store_data('avatar', status_icon.data) blink_settings.presence.icon = IconDescriptor(FileURL(icon.filename), icon_hash) if icon is not None else None blink_settings.save() elif account.xcap.icon != icon_desc and icon_hash != offline_icon_hash: self._should_set_offline_status.add(account.id) else: if blink_settings.presence.icon is None is not account.xcap.icon: self._should_set_offline_status.add(account.id) elif blink_settings.presence.icon is account.xcap.icon is offline_status is None and account.xcap_manager.pidf_manipulation.supported: state = BlinkPresenceState(account).offline_state account.xcap_manager.set_offline_status(OfflineStatus(state) if state is not None else None) icon_desc = None icon_manager.remove('avatar') blink_settings.presence.icon = None blink_settings.save() account.xcap.icon = icon_desc account.save()
def _SH_AccountStateClicked(self, checked): filename = QFileDialog.getOpenFileName(self, u'Select Icon', self.last_icon_directory, u"Images (*.png *.tiff *.jpg *.xmp *.svg)") if filename: self.last_icon_directory = os.path.dirname(filename) filename = filename if os.path.realpath(filename) != os.path.realpath(self.default_icon_path) else None blink_settings = BlinkSettings() icon_manager = IconManager() if filename is not None: icon = icon_manager.store_file('avatar', filename) if icon is not None: blink_settings.presence.icon = IconDescriptor(FileURL(icon.filename), hashlib.sha1(icon.content).hexdigest()) else: icon_manager.remove('avatar') blink_settings.presence.icon = None else: icon_manager.remove('avatar') blink_settings.presence.icon = None blink_settings.save()
def _SH_AccountStateClicked(self, checked): filename = QFileDialog.getOpenFileName(self, 'Select Icon', self.last_icon_directory, "Images (*.png *.tiff *.jpg *.xmp *.svg)")[0] if filename: self.last_icon_directory = os.path.dirname(filename) filename = filename if os.path.realpath(filename) != os.path.realpath(self.default_icon_path) else None blink_settings = BlinkSettings() icon_manager = IconManager() if filename is not None: icon = icon_manager.store_file('avatar', filename) if icon is not None: blink_settings.presence.icon = IconDescriptor(FileURL(icon.filename), hashlib.sha1(icon.content).hexdigest()) else: icon_manager.remove('avatar') blink_settings.presence.icon = None else: icon_manager.remove('avatar') blink_settings.presence.icon = None blink_settings.save()