]> sjero.net Git - linphone/commitdiff
srtp/zrtp combo box compatible for gtk 2.22
authorSimon Morlat <simon.morlat@linphone.org>
Tue, 8 Nov 2011 10:59:15 +0000 (11:59 +0100)
committerSimon Morlat <simon.morlat@linphone.org>
Tue, 8 Nov 2011 10:59:15 +0000 (11:59 +0100)
coreapi/linphonecore.c
coreapi/linphonecore.h
gtk/parameters.ui
gtk/propertybox.c

index 3398bf82219122b7048bd31d7e4def234fd938d4..a13e3921dce0b1269a85da4a95996bc97f36231c 100644 (file)
@@ -559,6 +559,8 @@ static void sip_config_read(LinphoneCore *lc)
                        break;
                }
        }
+       /*this is to filter out unsupported encryption schemes*/
+       linphone_core_set_media_encryption(lc,linphone_core_get_media_encryption(lc));
 
        /*for tuning or test*/
        lc->sip_conf.sdp_200_ack=lp_config_get_int(lc->config,"sip","sdp_200_ack",0);
@@ -4436,13 +4438,24 @@ bool_t linphone_core_media_encryption_supported(const LinphoneCore *lc, Linphone
        return FALSE;
 }
 
-void linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc) {
-       if (menc == LinphoneMediaEncryptionSRTP)
-               lp_config_set_string(lc->config,"sip","media_encryption","srtp");
-       else if (menc == LinphoneMediaEncryptionZRTP)
-               lp_config_set_string(lc->config,"sip","media_encryption","zrtp");
-       else
-               lp_config_set_string(lc->config,"sip","media_encryption","none");
+int linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc) {
+       const char *type="none";
+       int ret=0;
+       if (menc == LinphoneMediaEncryptionSRTP){
+               if (!ortp_srtp_supported()){
+                       ms_warning("SRTP not supported by library.");
+                       type="none";
+                       ret=-1;
+               }else type="srtp";
+       }else if (menc == LinphoneMediaEncryptionZRTP){
+               if (!ortp_zrtp_available()){
+                       ms_warning("ZRTP not supported by library.");
+                       type="none";
+                       ret=-1;
+               }else type="zrtp";
+       }
+       lp_config_set_string(lc->config,"sip","media_encryption",type);
+       return ret;
 }
 
 LinphoneMediaEncryption linphone_core_get_media_encryption(LinphoneCore *lc) {
index 047e6792b9455e7eceda7170e9454f1f55904320..f6da27f9db851006ef12095b257dc9583003cc2e 100644 (file)
@@ -1046,8 +1046,8 @@ bool_t linphone_core_media_encryption_supported(const LinphoneCore *lc, Linphone
 /**
  * Choose media encryption policy to be used for RTP packets
  */
-void linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc);
-enum LinphoneMediaEncryption linphone_core_get_media_encryption(LinphoneCore *lc);
+int linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc);
+LinphoneMediaEncryption linphone_core_get_media_encryption(LinphoneCore *lc);
 
 bool_t linphone_core_is_media_encryption_mandatory(LinphoneCore *lc);
 /**
index d853a4bb019c8de96f5b4da71747b6ab4ae41305..4006226325637746a40dd22cc9306d4865c317d5 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
-  <requires lib="gtk+" version="2.16"/>
+  <requires lib="gtk+" version="2.22"/>
   <object class="GtkAdjustment" id="adjustment1">
     <property name="lower">500</property>
     <property name="upper">3001</property>
@@ -53,6 +53,7 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkListStore" id="liststore1"/>
   <object class="GtkListStore" id="model1">
     <columns>
       <!-- column-name gchararray -->
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkComboBoxText" id="media_encryption_combo">
+                              <object class="GtkComboBox" id="media_encryption_combo">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="active">0</property>
-                                <items>
-                                  <item translatable="yes">None</item>
-                                </items>
                               </object>
                               <packing>
                                 <property name="left_attach">1</property>
index aece58048600ea0cc3e0cd5cc3ef525df797dae5..8bacff9f55fd359f62d5f6102909ec83760ceadf 100644 (file)
@@ -804,7 +804,7 @@ void linphone_gtk_ui_level_toggled(GtkWidget *w) {
 }
 
 static void linphone_gtk_media_encryption_changed(GtkWidget *combo){
-       const char *selected=gtk_combo_box_get_active_text(GTK_COMBO_BOX(combo));
+       char *selected=gtk_combo_box_get_active_text(GTK_COMBO_BOX(combo));
        LinphoneCore *lc=linphone_gtk_get_core();
        if (selected!=NULL){
                if (strcasecmp(selected,"SRTP")==0)
@@ -812,6 +812,7 @@ static void linphone_gtk_media_encryption_changed(GtkWidget *combo){
                else if (strcasecmp(selected,"ZRTP")==0)
                        linphone_core_set_media_encryption(lc,LinphoneMediaEncryptionZRTP);
                else linphone_core_set_media_encryption(lc,LinphoneMediaEncryptionNone);
+               g_free(selected);
        }else g_warning("gtk_combo_box_get_active_text() returned NULL");
 }
 
@@ -820,14 +821,28 @@ static void linphone_gtk_show_media_encryption(GtkWidget *pb){
        GtkWidget *combo=linphone_gtk_get_widget(pb,"media_encryption_combo");
        bool_t no_enc=TRUE;
        int srtp_id=-1,zrtp_id=-1;
-
+       GtkTreeModel *model;
+       GtkListStore *store;
+       GtkTreeIter iter;
+       GtkCellRenderer *renderer=gtk_cell_renderer_text_new();
+       
+       model=GTK_TREE_MODEL((store=gtk_list_store_new(1,G_TYPE_STRING)));
+       gtk_combo_box_set_model(GTK_COMBO_BOX(combo),model);
+       gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo),renderer,TRUE);
+       gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo),renderer,"text",0,NULL);
+       
+       gtk_list_store_append(store,&iter);
+       gtk_list_store_set(store,&iter,0,_("None"),-1);
+       
        if (linphone_core_media_encryption_supported(lc,LinphoneMediaEncryptionSRTP)){
-               gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo),_("SRTP"));
+               gtk_list_store_append(store,&iter);
+               gtk_list_store_set(store,&iter,0,_("SRTP"),-1);
                srtp_id=1;
                no_enc=FALSE;
        }
        if (linphone_core_media_encryption_supported(lc,LinphoneMediaEncryptionZRTP)){
-               gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo),_("ZRTP"));
+               gtk_list_store_append(store,&iter);
+               gtk_list_store_set(store,&iter,0,_("ZRTP"),-1);
                no_enc=FALSE;
                if (srtp_id!=-1) zrtp_id=2;
                else zrtp_id=1;
@@ -851,6 +866,7 @@ static void linphone_gtk_show_media_encryption(GtkWidget *pb){
                }
                g_signal_connect(G_OBJECT(combo),"changed",(GCallback)linphone_gtk_media_encryption_changed,NULL);
        }
+       g_object_unref(G_OBJECT(model));
 }
 
 void linphone_gtk_show_parameters(void){