ability to sort by status in roster and in muc separatly. Fixes #3823
This commit is contained in:
		
							parent
							
								
									62fe4b1874
								
							
						
					
					
						commit
						22cc993fa7
					
				
					 5 changed files with 58 additions and 21 deletions
				
			
		|  | @ -124,19 +124,49 @@ | |||
|                               </packing> | ||||
|                             </child> | ||||
|                             <child> | ||||
|                               <widget class="GtkCheckButton" id="sort_by_show_checkbutton"> | ||||
|                               <widget class="GtkHBox" id="hbox3"> | ||||
|                                 <property name="visible">True</property> | ||||
|                                 <property name="can_focus">True</property> | ||||
|                                 <property name="tooltip" translatable="yes">If checked, Gajim will sort contacts in roster window and groupchats by their status and not by the shown name</property> | ||||
|                                 <property name="label" translatable="yes">_Sort contacts by status</property> | ||||
|                                 <property name="use_underline">True</property> | ||||
|                                 <property name="response_id">0</property> | ||||
|                                 <property name="draw_indicator">True</property> | ||||
|                                 <signal name="toggled" handler="on_sort_by_show_checkbutton_toggled"/> | ||||
|                                 <property name="spacing">6</property> | ||||
|                                 <child> | ||||
|                                   <widget class="GtkLabel" id="label10"> | ||||
|                                     <property name="visible">True</property> | ||||
|                                     <property name="label" translatable="yes">Sort contacts by status</property> | ||||
|                                   </widget> | ||||
|                                   <packing> | ||||
|                                     <property name="expand">False</property> | ||||
|                                   </packing> | ||||
|                                 </child> | ||||
|                                 <child> | ||||
|                                   <widget class="GtkCheckButton" id="sort_by_show_in_roster_checkbutton"> | ||||
|                                     <property name="visible">True</property> | ||||
|                                     <property name="can_focus">True</property> | ||||
|                                     <property name="label" translatable="yes">in _roster</property> | ||||
|                                     <property name="use_underline">True</property> | ||||
|                                     <property name="response_id">0</property> | ||||
|                                     <property name="draw_indicator">True</property> | ||||
|                                     <signal name="toggled" handler="on_sort_by_show_in_roster_checkbutton_toggled"/> | ||||
|                                   </widget> | ||||
|                                   <packing> | ||||
|                                     <property name="expand">False</property> | ||||
|                                     <property name="position">1</property> | ||||
|                                   </packing> | ||||
|                                 </child> | ||||
|                                 <child> | ||||
|                                   <widget class="GtkCheckButton" id="sort_by_show_in_muc_checkbutton"> | ||||
|                                     <property name="visible">True</property> | ||||
|                                     <property name="can_focus">True</property> | ||||
|                                     <property name="label" translatable="yes">in _group chats</property> | ||||
|                                     <property name="use_underline">True</property> | ||||
|                                     <property name="response_id">0</property> | ||||
|                                     <property name="draw_indicator">True</property> | ||||
|                                     <signal name="toggled" handler="on_sort_by_show_in_muc_checkbutton_toggled"/> | ||||
|                                   </widget> | ||||
|                                   <packing> | ||||
|                                     <property name="position">2</property> | ||||
|                                   </packing> | ||||
|                                 </child> | ||||
|                               </widget> | ||||
|                               <packing> | ||||
|                                 <property name="expand">False</property> | ||||
|                                 <property name="fill">False</property> | ||||
|                                 <property name="position">5</property> | ||||
|                               </packing> | ||||
|                             </child> | ||||
|  | @ -220,7 +250,7 @@ Detached roster with chat grouped by type</property> | |||
|                                 <property name="visible">True</property> | ||||
|                                 <property name="can_focus">True</property> | ||||
|                                 <property name="tooltip" translatable="yes">Some messages may include rich content (formatting, colors etc). If checked, Gajim will just display the raw message text.</property> | ||||
|                                 <property name="label" translatable="yes">Ignore rich content in incoming messages</property> | ||||
|                                 <property name="label" translatable="yes">_Ignore rich content in incoming messages</property> | ||||
|                                 <property name="use_underline">True</property> | ||||
|                                 <property name="response_id">0</property> | ||||
|                                 <property name="draw_indicator">True</property> | ||||
|  | @ -259,7 +289,8 @@ Detached roster with chat grouped by type</property> | |||
|                                     <property name="visible">True</property> | ||||
|                                     <property name="xalign">0</property> | ||||
|                                     <property name="xpad">1</property> | ||||
|                                     <property name="label" translatable="yes">Emoticons:</property> | ||||
|                                     <property name="label" translatable="yes">_Emoticons:</property> | ||||
|                                     <property name="use_underline">True</property> | ||||
|                                   </widget> | ||||
|                                 </child> | ||||
|                               </widget> | ||||
|  |  | |||
|  | @ -111,7 +111,8 @@ class Config: | |||
| 		'collapsed_rows': [ opt_str, '', _('List (space separated) of rows (accounts and groups) that are collapsed.'), True ], | ||||
| 		'roster_theme': [ opt_str, _('default'), '', True ], | ||||
| 		'mergeaccounts': [ opt_bool, False, '', True ], | ||||
| 		'sort_by_show': [ opt_bool, True, '', True ], | ||||
| 		'sort_by_show_in_roster': [ opt_bool, True, '', True ], | ||||
| 		'sort_by_show_in_muc': [ opt_bool, False, '', True ], | ||||
| 		'enable_zeroconf': [opt_bool, False, _('Enable link-local/zeroconf messaging')], | ||||
| 		'use_speller': [ opt_bool, False, ], | ||||
| 		'ignore_incoming_xhtml': [ opt_bool, False, ], | ||||
|  |  | |||
|  | @ -124,8 +124,10 @@ class PreferencesWindow: | |||
| 			set_active(st) | ||||
| 
 | ||||
| 		# Sort contacts by show | ||||
| 		st = gajim.config.get('sort_by_show') | ||||
| 		self.xml.get_widget('sort_by_show_checkbutton').set_active(st) | ||||
| 		st = gajim.config.get('sort_by_show_in_roster') | ||||
| 		self.xml.get_widget('sort_by_show_in_roster_checkbutton').set_active(st) | ||||
| 		st = gajim.config.get('sort_by_show_in_muc') | ||||
| 		self.xml.get_widget('sort_by_show_in_muc_checkbutton').set_active(st) | ||||
| 
 | ||||
| 		# emoticons | ||||
| 		emoticons_combobox = self.xml.get_widget('emoticons_combobox') | ||||
|  | @ -529,9 +531,12 @@ class PreferencesWindow: | |||
| 				w.set_sensitive(widget.get_active()) | ||||
| 		gajim.interface.save_config() | ||||
| 
 | ||||
| 	def on_sort_by_show_checkbutton_toggled(self, widget): | ||||
| 		self.on_checkbutton_toggled(widget, 'sort_by_show') | ||||
| 	def on_sort_by_show_in_roster_checkbutton_toggled(self, widget): | ||||
| 		self.on_checkbutton_toggled(widget, 'sort_by_show_in_roster') | ||||
| 		gajim.interface.roster.setup_and_draw_roster() | ||||
| 
 | ||||
| 	def on_sort_by_show_in_muc_checkbutton_toggled(self, widget): | ||||
| 		self.on_checkbutton_toggled(widget, 'sort_by_show_in_muc') | ||||
| 		# Redraw connected groupchats | ||||
| 		for account in gajim.connections: | ||||
| 			if gajim.connections[account].connected: | ||||
|  |  | |||
|  | @ -402,7 +402,7 @@ class GroupchatControl(ChatControlBase): | |||
| 			if not gc_contact2: | ||||
| 				return 0 | ||||
| 		if type1 == 'contact' and type2 == 'contact' and \ | ||||
| 		gajim.config.get('sort_by_show'): | ||||
| 		gajim.config.get('sort_by_show_in_muc'): | ||||
| 			cshow = {'online':0, 'chat': 1, 'away': 2, 'xa': 3, 'dnd': 4, | ||||
| 				'invisible': 5, 'offline': 6, 'error': 7} | ||||
| 			show1 = cshow[gc_contact1.show] | ||||
|  |  | |||
|  | @ -1561,10 +1561,10 @@ class RosterWindow: | |||
| 			if not contact2: | ||||
| 				return 0 | ||||
| 			name2 = contact2.get_shown_name() | ||||
| 		# We first compare by show if sort_by_show is True or if it's a child | ||||
| 		# contact | ||||
| 		# We first compare by show if sort_by_show_in_roster is True or if it's a | ||||
| 		# child contact | ||||
| 		if type1 == 'contact' and type2 == 'contact' and \ | ||||
| 		gajim.config.get('sort_by_show'): | ||||
| 		gajim.config.get('sort_by_show_in_roster'): | ||||
| 			cshow = {'online':0, 'chat': 1, 'away': 2, 'xa': 3, 'dnd': 4, | ||||
| 				'invisible': 5, 'offline': 6, 'not in roster': 7, 'error': 8} | ||||
| 			s = self.get_show(lcontact1) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue