Clarify how roster.quit_on_next_offline works with comments.

Use only one function when user wants to quit. Bad dup code !
Maybe see #3643.
This commit is contained in:
Jean-Marie Traissard 2008-03-20 16:31:21 +00:00
parent e07ce48240
commit d7a6734601
3 changed files with 16 additions and 25 deletions

View file

@ -119,7 +119,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_Quit</property> <property name="label" translatable="yes">_Quit</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<signal name="activate" handler="on_quit_menuitem_activate"/> <signal name="activate" handler="on_quit_request"/>
<accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image1609"> <widget class="GtkImage" id="image1609">

View file

@ -3847,8 +3847,10 @@ class RosterWindow:
self.set_account_status_icon(account) self.set_account_status_icon(account)
if status == 'offline': if status == 'offline':
if self.quit_on_next_offline > -1: if self.quit_on_next_offline > -1:
# we want to quit, we are waiting for all accounts to be offline
self.quit_on_next_offline -= 1 self.quit_on_next_offline -= 1
if self.quit_on_next_offline < 1: if self.quit_on_next_offline < 1:
# all accounts offline, quit
self.quit_gtkgui_interface() self.quit_gtkgui_interface()
else: else:
# No need to redraw contacts if we're quitting # No need to redraw contacts if we're quitting
@ -4142,32 +4144,14 @@ class RosterWindow:
force = force) force = force)
def on_roster_window_delete_event(self, widget, event): def on_roster_window_delete_event(self, widget, event):
'''When we want to close the window''' '''Main window X button was clicked'''
if gajim.interface.systray_enabled and not gajim.config.get( if gajim.interface.systray_enabled and not gajim.config.get(
'quit_on_roster_x_button'): 'quit_on_roster_x_button'):
self.tooltip.hide_tooltip() self.tooltip.hide_tooltip()
self.window.hide() self.window.hide()
else: else:
accounts = gajim.connections.keys() self.on_quit_request()
get_msg = False return True # do NOT destroy the window
self.quit_on_next_offline = 0
for acct in accounts:
if gajim.connections[acct].connected:
get_msg = True
break
if get_msg:
message = self.get_status_message('offline')
if message is None:
# user pressed Cancel to change status message dialog
message = ''
for acct in accounts:
if gajim.connections[acct].connected:
self.quit_on_next_offline += 1
self.send_status(acct, 'offline', message)
if not self.quit_on_next_offline:
self.quit_gtkgui_interface()
return True # do NOT destory the window
def on_roster_window_focus_in_event(self, widget, event): def on_roster_window_focus_in_event(self, widget, event):
# roster received focus, so if we had urgency REMOVE IT # roster received focus, so if we had urgency REMOVE IT
@ -4246,7 +4230,10 @@ class RosterWindow:
gajim.interface.hide_systray() gajim.interface.hide_systray()
gtk.main_quit() gtk.main_quit()
def on_quit_menuitem_activate(self, widget): def on_quit_request(self, widget = None):
''' user want to quit. Check if he should be warned about messages
pending. Send offline to all connected account. We do NOT really quit
gajim here '''
accounts = gajim.connections.keys() accounts = gajim.connections.keys()
get_msg = False get_msg = False
for acct in accounts: for acct in accounts:
@ -5414,8 +5401,12 @@ class RosterWindow:
model.set_sort_func(1, self.compareIters) model.set_sort_func(1, self.compareIters)
model.set_sort_column_id(1, gtk.SORT_ASCENDING) model.set_sort_column_id(1, gtk.SORT_ASCENDING)
self.tree.set_model(model) self.tree.set_model(model)
# when this value become 0 we quit main application
# when this value become 0 we quit main application. If it's more than 0
# it means we are waiting for this number of accounts to disconnect before
# quitting
self.quit_on_next_offline = -1 self.quit_on_next_offline = -1
self.make_jabber_state_images() self.make_jabber_state_images()
# uf_show, img, show, sensitive # uf_show, img, show, sensitive

View file

@ -281,7 +281,7 @@ class Systray:
gajim.interface.instances['preferences'] = config.PreferencesWindow() gajim.interface.instances['preferences'] = config.PreferencesWindow()
def on_quit_menuitem_activate(self, widget): def on_quit_menuitem_activate(self, widget):
gajim.interface.roster.on_quit_menuitem_activate(widget) gajim.interface.roster.on_quit_request()
def on_left_click(self): def on_left_click(self):
win = gajim.interface.roster.window win = gajim.interface.roster.window