From 9dbac0f0980dc236dc7fbbba6f1e20dec47279a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= <philipp@hoerist.com> Date: Fri, 17 May 2019 23:38:06 +0200 Subject: [PATCH] Remove custom status per contact feature --- gajim/common/modules/privacylists.py | 17 ------ gajim/data/gui/contact_context_menu.ui | 15 ----- gajim/gui_interface.py | 9 --- gajim/gui_menu_builder.py | 49 +-------------- gajim/roster_window.py | 82 -------------------------- test/lib/gajim_mocks.py | 1 - 6 files changed, 2 insertions(+), 171 deletions(-) diff --git a/gajim/common/modules/privacylists.py b/gajim/common/modules/privacylists.py index 0e8088d669..64d5250b1e 100644 --- a/gajim/common/modules/privacylists.py +++ b/gajim/common/modules/privacylists.py @@ -242,23 +242,6 @@ class PrivacyLists(BaseModule): def _build_invisible_rule(self): node = nbxmpp.Node('list', {'name': 'invisible'}) iq = nbxmpp.Iq('set', nbxmpp.NS_PRIVACY, payload=[node]) - if (self._account in app.interface.status_sent_to_groups and - app.interface.status_sent_to_groups[self._account]): - for group in app.interface.status_sent_to_groups[self._account]: - item = node.setTag('item', {'type': 'group', - 'value': group, - 'action': 'allow', - 'order': '1'}) - item.setTag('presence-out') - - if (self._account in app.interface.status_sent_to_users and - app.interface.status_sent_to_users[self._account]): - for jid in app.interface.status_sent_to_users[self._account]: - item = node.setTag('item', {'type': 'jid', - 'value': jid, - 'action': 'allow', - 'order': '2'}) - item.setTag('presence-out') item = node.setTag('item', {'action': 'deny', 'order': '3'}) item.setTag('presence-out') diff --git a/gajim/data/gui/contact_context_menu.ui b/gajim/data/gui/contact_context_menu.ui index 8912111695..53e85a09ae 100644 --- a/gajim/data/gui/contact_context_menu.ui +++ b/gajim/data/gui/contact_context_menu.ui @@ -51,21 +51,6 @@ <property name="can_focus">False</property> </object> </child> - <child> - <object class="GtkMenuItem" id="send_custom_status_menuitem"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes">Send Cus_tom Status</property> - <property name="use_underline">True</property> - <child type="submenu"> - <object class="GtkMenu" id="menu5"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </object> - </child> - </object> - </child> <child> <object class="GtkMenuItem" id="execute_command_menuitem"> <property name="visible">True</property> diff --git a/gajim/gui_interface.py b/gajim/gui_interface.py index dd9c0b71c7..2e4695f3fb 100644 --- a/gajim/gui_interface.py +++ b/gajim/gui_interface.py @@ -311,13 +311,6 @@ class Interface: account = obj.conn.name jid = obj.jid - # unset custom status - if (obj.old_show == 0 and obj.new_show > 1) or \ - (obj.old_show > 1 and obj.new_show == 0 and obj.conn.connected > 1): - if account in self.status_sent_to_users and \ - jid in self.status_sent_to_users[account]: - del self.status_sent_to_users[account][jid] - if app.jid_is_transport(jid): # It must be an agent @@ -2272,8 +2265,6 @@ class Interface: # This is the manager and factory of message windows set by the module self.msg_win_mgr = None self.minimized_controls = {} - self.status_sent_to_users = {} - self.status_sent_to_groups = {} self.pass_dialog = {} self.db_error_dialog = None diff --git a/gajim/gui_menu_builder.py b/gajim/gui_menu_builder.py index 93af1dd669..28af51d16f 100644 --- a/gajim/gui_menu_builder.py +++ b/gajim/gui_menu_builder.py @@ -221,7 +221,6 @@ control=None, gc_contact=None, is_anonymous=True): send_file_menuitem = xml.get_object('send_file_menuitem') information_menuitem = xml.get_object('information_menuitem') history_menuitem = xml.get_object('history_menuitem') - send_custom_status_menuitem = xml.get_object('send_custom_status_menuitem') send_single_message_menuitem = xml.get_object('send_single_message_menuitem') invite_menuitem = xml.get_object('invite_menuitem') block_menuitem = xml.get_object('block_menuitem') @@ -327,7 +326,7 @@ control=None, gc_contact=None, is_anonymous=True): # Zeroconf Account if app.config.get_per('accounts', account, 'is_zeroconf'): - for item in (send_custom_status_menuitem, send_single_message_menuitem, + for item in (send_single_message_menuitem, invite_menuitem, block_menuitem, unblock_menuitem, ignore_menuitem, unignore_menuitem, subscription_menuitem, manage_contact_menuitem, convert_to_gc_menuitem): @@ -348,22 +347,6 @@ control=None, gc_contact=None, is_anonymous=True): # normal account - # send custom status icon - blocked = False - if helpers.jid_is_blocked(account, jid): - blocked = True - else: - for group in contact.get_shown_groups(): - if helpers.group_is_blocked(account, group): - blocked = True - break - transport = app.get_transport_name_from_jid(jid, use_config_setting=False) - if transport and transport != 'jabber': - # Transport contact, send custom status unavailable - send_custom_status_menuitem.set_sensitive(False) - elif blocked: - send_custom_status_menuitem.set_sensitive(False) - if gc_contact: if not gc_contact.jid: # it's a pm and we don't know real JID @@ -387,16 +370,6 @@ control=None, gc_contact=None, is_anonymous=True): if app.account_is_disconnected(account): invite_menuitem.set_sensitive(False) - # One or several resource, we do the same for send_custom_status - status_menuitems = Gtk.Menu() - send_custom_status_menuitem.set_submenu(status_menuitems) - for s in ('online', 'chat', 'away', 'xa', 'dnd', 'offline'): - # icon MUST be different instance for every item - status_menuitem = Gtk.MenuItem.new_with_label(helpers.get_uf_show(s)) - status_menuitem.connect('activate', roster.on_send_custom_status, - [(contact, account)], s) - status_menuitems.append(status_menuitem) - send_single_message_menuitem.connect('activate', roster.on_send_single_message_menuitem_activate, account, contact) @@ -447,7 +420,7 @@ control=None, gc_contact=None, is_anonymous=True): if app.account_is_disconnected(account): for widget in (send_single_message_menuitem, subscription_menuitem, add_to_roster_menuitem, remove_from_roster_menuitem, - execute_command_menuitem, send_custom_status_menuitem): + execute_command_menuitem): widget.set_sensitive(False) @@ -507,24 +480,6 @@ def get_transport_menu(contact, account): if helpers.jid_is_blocked(account, jid): blocked = True - # Send Custom Status - send_custom_status_menuitem = Gtk.MenuItem.new_with_mnemonic( - _('Send Cus_tom Status')) - if blocked: - send_custom_status_menuitem.set_sensitive(False) - else: - status_menuitems = Gtk.Menu() - send_custom_status_menuitem.set_submenu(status_menuitems) - for s in ('online', 'chat', 'away', 'xa', 'dnd', 'offline'): - status_menuitem = Gtk.MenuItem.new_with_label(helpers.get_uf_show( - s)) - status_menuitem.connect('activate', roster.on_send_custom_status, - [(contact, account)], s) - status_menuitems.append(status_menuitem) - menu.append(send_custom_status_menuitem) - if app.account_is_disconnected(account): - send_custom_status_menuitem.set_sensitive(False) - item = Gtk.SeparatorMenuItem.new() # separator menu.append(item) diff --git a/gajim/roster_window.py b/gajim/roster_window.py index 9b2c01bcf2..4175ce0ac5 100644 --- a/gajim/roster_window.py +++ b/gajim/roster_window.py @@ -2113,10 +2113,6 @@ class RosterWindow: app.SHOW_LIST.index('invisible') app.connections[account].change_status(status, txt, auto) - if account in app.interface.status_sent_to_users: - app.interface.status_sent_to_users[account] = {} - if account in app.interface.status_sent_to_groups: - app.interface.status_sent_to_groups[account] = {} for gc_control in app.interface.msg_win_mgr.get_controls( message_control.TYPE_GC) + \ list(app.interface.minimized_controls[account].values()): @@ -3362,67 +3358,6 @@ class RosterWindow: 'offline.') % jids ConfirmationDialog(pritext, sectext, on_response_ok=on_ok2) - def on_send_custom_status(self, widget, contact_list, show, group=None): - """ - Send custom status - """ - # contact_list has only one element except if group != None - def on_response(message, pep_dict): - if message is None: # None if user pressed Cancel - return - account_list = [] - for (contact, account) in contact_list: - if account not in account_list: - account_list.append(account) - # 1. update status_sent_to_[groups|users] list - if group: - for account in account_list: - if account not in app.interface.status_sent_to_groups: - app.interface.status_sent_to_groups[account] = {} - app.interface.status_sent_to_groups[account][group] = show - else: - for (contact, account) in contact_list: - if account not in app.interface.status_sent_to_users: - app.interface.status_sent_to_users[account] = {} - app.interface.status_sent_to_users[account][contact.jid] \ - = show - - # 2. update privacy lists if main status is invisible - for account in account_list: - if app.SHOW_LIST[app.connections[account].connected] == \ - 'invisible': - con = app.connections[account] - con.get_module('PrivacyLists').set_invisible_rule() - - # 3. send directed presence - for (contact, account) in contact_list: - our_jid = app.get_jid_from_account(account) - jid = contact.jid - if jid == our_jid: - jid += '/' + contact.resource - self.send_status(account, show, message, to=jid) - - def send_it(is_checked=None): - if is_checked is not None: # dialog has been shown - if is_checked: # user does not want to be asked again - app.config.set('confirm_custom_status', 'no') - else: - app.config.set('confirm_custom_status', 'yes') - self.get_status_message(show, on_response, show_pep=False, - always_ask=True) - - confirm_custom_status = app.config.get('confirm_custom_status') - if confirm_custom_status == 'no': - send_it() - return - pritext = _('You are about to send a custom status. Are you sure you ' - 'want to continue?') - sectext = _('This contact will temporarily see you as %(status)s, ' - 'but only until you change your status. Then they will see ' - 'your global status.') % {'status': show} - ConfirmationDialogCheck(pritext, sectext, - _('_Do not ask me again'), on_response_ok=send_it) - def on_status_combobox_changed(self, widget): """ When we change our status via the combobox @@ -5025,30 +4960,13 @@ class RosterWindow: list_online, show_bookmarked=show_bookmarked) menu.append(invite_menuitem) - # Send Custom Status - send_custom_status_menuitem = Gtk.MenuItem.new_with_mnemonic( - _('Send Cus_tom Status')) - if helpers.group_is_blocked(account, group): - send_custom_status_menuitem.set_sensitive(False) - status_menuitems = Gtk.Menu() - send_custom_status_menuitem.set_submenu(status_menuitems) - for s in ('online', 'chat', 'away', 'xa', 'dnd', 'offline'): - status_menuitem = Gtk.MenuItem.new_with_label( - helpers.get_uf_show(s)) - status_menuitem.connect('activate', self.on_send_custom_status, - list_, s, group) - status_menuitems.append(status_menuitem) - menu.append(send_custom_status_menuitem) - # there is no singlemessage and custom status for zeroconf if app.config.get_per('accounts', account, 'is_zeroconf'): - send_custom_status_menuitem.set_sensitive(False) send_group_message_item.set_sensitive(False) if app.connections[account].connected < 2: send_group_message_item.set_sensitive(False) invite_menuitem.set_sensitive(False) - send_custom_status_menuitem.set_sensitive(False) if not group in helpers.special_groups: item = Gtk.SeparatorMenuItem.new() # separator diff --git a/test/lib/gajim_mocks.py b/test/lib/gajim_mocks.py index f554d58f5b..69efeecd6b 100644 --- a/test/lib/gajim_mocks.py +++ b/test/lib/gajim_mocks.py @@ -104,7 +104,6 @@ class MockInterface(Mock): self.instances = {} self.minimized_controls = {} - self.status_sent_to_users = Mock() class MockLogger(Mock): -- GitLab