From a6a9a647b2cedbfebfbb91335aaab1ffc6721449 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Mon, 5 Oct 2009 15:29:37 +0200
Subject: [PATCH] add a checkbutton in join groupchat dialog to decide if we
 want to bookmark the room. Fixes #5245

---
 data/glade/join_groupchat_window.glade | 49 ++++++++++++++++----------
 src/dialogs.py                         | 17 +++++++--
 2 files changed, 45 insertions(+), 21 deletions(-)

diff --git a/data/glade/join_groupchat_window.glade b/data/glade/join_groupchat_window.glade
index 6e08f2826..2a3d63c34 100644
--- a/data/glade/join_groupchat_window.glade
+++ b/data/glade/join_groupchat_window.glade
@@ -1,12 +1,12 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--Generated with glade3 3.4.5 on Mon Oct  5 15:18:48 2009 -->
 <glade-interface>
-  <!-- interface-requires gtk+ 2.12 -->
-  <!-- interface-naming-policy toplevel-contextual -->
   <widget class="GtkWindow" id="join_groupchat_window">
     <property name="border_width">6</property>
     <property name="title" translatable="yes">Join Group Chat</property>
-    <signal name="destroy" handler="on_join_groupchat_window_destroy"/>
     <signal name="key_press_event" handler="on_join_groupchat_window_key_press_event"/>
+    <signal name="destroy" handler="on_join_groupchat_window_destroy"/>
     <child>
       <widget class="GtkVBox" id="vbox28">
         <property name="visible">True</property>
@@ -14,7 +14,7 @@
         <child>
           <widget class="GtkTable" id="table15">
             <property name="visible">True</property>
-            <property name="n_rows">6</property>
+            <property name="n_rows">7</property>
             <property name="n_columns">2</property>
             <property name="column_spacing">12</property>
             <property name="row_spacing">6</property>
@@ -132,17 +132,18 @@
             </child>
             <child>
               <widget class="GtkCheckButton" id="auto_join_checkbutton">
-                <property name="label" translatable="yes">Join this room automatically when I connect</property>
                 <property name="visible">True</property>
+                <property name="sensitive">False</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
+                <property name="label" translatable="yes">Join this room automatically when I connect</property>
                 <property name="use_underline">True</property>
+                <property name="response_id">0</property>
                 <property name="draw_indicator">True</property>
               </widget>
               <packing>
                 <property name="right_attach">2</property>
-                <property name="top_attach">5</property>
-                <property name="bottom_attach">6</property>
+                <property name="top_attach">6</property>
+                <property name="bottom_attach">7</property>
                 <property name="x_options">GTK_FILL</property>
                 <property name="y_options"></property>
               </packing>
@@ -170,30 +171,43 @@
                 <property name="y_options">GTK_FILL</property>
               </packing>
             </child>
+            <child>
+              <widget class="GtkCheckButton" id="bookmark_checkbutton">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="label" translatable="yes">Bookmark this room</property>
+                <property name="response_id">0</property>
+                <property name="draw_indicator">True</property>
+                <signal name="toggled" handler="on_bookmark_checkbutton_toggled"/>
+              </widget>
+              <packing>
+                <property name="right_attach">2</property>
+                <property name="top_attach">5</property>
+                <property name="bottom_attach">6</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
           </widget>
-          <packing>
-            <property name="position">0</property>
-          </packing>
         </child>
         <child>
           <widget class="GtkHButtonBox" id="hbuttonbox12">
             <property name="visible">True</property>
             <property name="spacing">12</property>
-            <property name="layout_style">end</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
             <child>
               <widget class="GtkButton" id="cancel_button">
-                <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="receives_default">False</property>
+                <property name="label">gtk-cancel</property>
                 <property name="use_stock">True</property>
+                <property name="response_id">0</property>
                 <signal name="clicked" handler="on_cancel_button_clicked"/>
               </widget>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">0</property>
               </packing>
             </child>
             <child>
@@ -202,7 +216,7 @@
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
                 <property name="has_default">True</property>
-                <property name="receives_default">False</property>
+                <property name="response_id">0</property>
                 <signal name="clicked" handler="on_join_button_clicked"/>
                 <child>
                   <widget class="GtkAlignment" id="alignment25">
@@ -221,7 +235,6 @@
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
-                            <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
diff --git a/src/dialogs.py b/src/dialogs.py
index 0b1ad3400..fd60111b8 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -1975,7 +1975,7 @@ class JoinGroupchatWindow:
 			self.xml.get_widget('join_button').set_sensitive(False)
 
 		if account and not gajim.connections[account].private_storage_supported:
-			self.xml.get_widget('auto_join_checkbutton').set_sensitive(False)
+			self.xml.get_widget('bookmark_checkbutton').set_sensitive(False)
 
 		self.window.show_all()
 
@@ -2015,6 +2015,13 @@ class JoinGroupchatWindow:
 		'''When Cancel button is clicked'''
 		self.window.destroy()
 
+	def on_bookmark_checkbutton_toggled(self, widget):
+		auto_join_checkbutton = self.xml.get_widget('auto_join_checkbutton')
+		if widget.get_active():
+			auto_join_checkbutton.set_sensitive(True)
+		else:
+			auto_join_checkbutton.set_sensitive(False)
+
 	def on_join_button_clicked(self, widget):
 		'''When Join button is clicked'''
 		if not self.account:
@@ -2058,10 +2065,14 @@ class JoinGroupchatWindow:
 		gajim.config.set('recently_groupchat',
 			' '.join(self.recently_groupchat))
 
-		if self.xml.get_widget('auto_join_checkbutton').get_active():
+		if self.xml.get_widget('bookmark_checkbutton').get_active():
+			if self.xml.get_widget('auto_join_checkbutton').get_active():
+				autojoin = '1'
+			else:
+				autojoin = '0'
 			# Add as bookmark, with autojoin and not minimized
 			name = gajim.get_nick_from_jid(room_jid)
-			gajim.interface.add_gc_bookmark(self.account, name, room_jid, '1', \
+			gajim.interface.add_gc_bookmark(self.account, name, room_jid, autojoin,
 				'0', password, nickname)
 
 		if self.automatic: