def _add_bookmark(self, jid, autojoin, password, method): nick = None if not jid: tab = self.current_tab() roomname = tab.name if tab.joined and tab.own_nick != self.own_nick: nick = tab.own_nick if password is None and tab.password is not None: password = tab.password elif jid == '*': return _add_wildcard_bookmarks(self, method) else: info = safeJID(jid) roomname, nick = info.bare, info.resource if roomname == '': if not isinstance(self.current_tab(), tabs.MucTab): return roomname = self.current_tab().name bookmark = self.bookmarks[roomname] if bookmark is None: bookmark = Bookmark(roomname) self.bookmarks.append(bookmark) bookmark.method = method bookmark.autojoin = autojoin if nick: bookmark.nick = nick if password: bookmark.password = password def callback(iq): if iq["type"] != "error": self.information('Bookmark added.', 'Info') else: self.information("Could not add the bookmarks.", "Info") self.bookmarks.save_local() self.bookmarks.save_remote(self.xmpp, callback)
def _add_wildcard_bookmarks(self, method): new_bookmarks = [] for tab in self.get_tabs(tabs.MucTab): bookmark = self.bookmarks[tab.name] if not bookmark: bookmark = Bookmark(tab.name, autojoin=True, method=method) new_bookmarks.append(bookmark) else: bookmark.method = method new_bookmarks.append(bookmark) self.bookmarks.remove(bookmark) new_bookmarks.extend(self.bookmarks.bookmarks) self.bookmarks.set(new_bookmarks) def _cb(iq): if iq["type"] != "error": self.information("Bookmarks saved.", "Info") else: self.information("Could not save the remote bookmarks.", "Info") self.bookmarks.save_local() self.bookmarks.save_remote(self.xmpp, _cb)