From 77de34fe88c71eb161bf969d24ba6b9bbab23c7d Mon Sep 17 00:00:00 2001
From: smorlat <smorlat@3f6dc0c8-ddfe-455d-9043-3cd528dc4637>
Date: Thu, 29 Oct 2009 16:13:11 +0000
Subject: [PATCH] add "use_subscribe_notify" property in GtkUi config items to
 control whether subscribes should be send and accepted.

git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@741 3f6dc0c8-ddfe-455d-9043-3cd528dc4637
---
 linphone/gtk-glade/buddylookup.c |  4 ++++
 linphone/gtk-glade/friendlist.c  | 13 ++++++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/linphone/gtk-glade/buddylookup.c b/linphone/gtk-glade/buddylookup.c
index 509a7b7b49..f0b2f61951 100644
--- a/linphone/gtk-glade/buddylookup.c
+++ b/linphone/gtk-glade/buddylookup.c
@@ -279,9 +279,13 @@ void linphone_gtk_add_buddy_from_database(GtkWidget *button){
 		char *name;
 		char *addr;
 		LinphoneFriend *lf;
+		int presence=linphone_gtk_get_ui_config_int("use_subscribe_notify",1);
 		gtk_tree_model_get (model, &iter,LOOKUP_RESULT_SIP_URI , &uri,LOOKUP_RESULT_NAME, &name, -1);
 		addr=g_strdup_printf("%s <%s>",name,uri);
+
 		lf=linphone_friend_new_with_addr(addr);
+		linphone_friend_set_inc_subscribe_policy(lf,presence ? LinphoneSPAccept : LinphoneSPDeny);
+		linphone_friend_send_subscribe(lf,presence);
 		linphone_core_add_friend(linphone_gtk_get_core(),lf);
 		linphone_gtk_show_friends();
 		g_free(addr);
diff --git a/linphone/gtk-glade/friendlist.c b/linphone/gtk-glade/friendlist.c
index ea2ada2586..5e7d48137e 100644
--- a/linphone/gtk-glade/friendlist.c
+++ b/linphone/gtk-glade/friendlist.c
@@ -352,6 +352,11 @@ void linphone_gtk_show_friends(void){
 
 void linphone_gtk_add_contact(void){
 	GtkWidget *w=linphone_gtk_create_window("contact");
+	int presence_enabled=linphone_gtk_get_ui_config_int("use_subscribe_notify",1);
+	
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"show_presence")),presence_enabled);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"allow_presence")),
+					presence_enabled);
 	gtk_widget_show(w);
 }
 
@@ -430,10 +435,16 @@ void linphone_gtk_contact_ok(GtkWidget *button){
 	GtkWidget *w=gtk_widget_get_toplevel(button);
 	LinphoneFriend *lf=(LinphoneFriend*)g_object_get_data(G_OBJECT(w),"friend_ref");
 	char *fixed_uri=NULL;
-	gboolean show_presence,allow_presence;
+	gboolean show_presence=FALSE,allow_presence=FALSE;
 	const gchar *name,*uri;
 	if (lf==NULL){
 		lf=linphone_friend_new();
+		if (linphone_gtk_get_ui_config_int("use_subscribe_notify",1)==1){
+			show_presence=FALSE;
+			allow_presence=FALSE;
+		}
+		linphone_friend_set_inc_subscribe_policy(lf,allow_presence ? LinphoneSPAccept : LinphoneSPDeny);
+		linphone_friend_send_subscribe(lf,show_presence);
 	}
 	name=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(w,"name")));
 	uri=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(w,"sip_address")));
-- 
GitLab