Set option to its own row
[claws.git] / src / plugins / vcalendar / vcal_prefs.c
index 936c820c919a0352d98d05eec57254021f9a6645..4d420409c6c43a0f372ae788b10cc988dbc07954 100644 (file)
@@ -38,6 +38,7 @@
 #include "vcalendar.h"
 #include "vcal_prefs.h"
 #include "vcal_folder.h"
+#include "vcal_dbus.h"
 
 #define PREFS_BLOCK_NAME "VCalendar"
 
@@ -68,6 +69,9 @@ struct VcalendarPage
        GtkWidget *export_freebusy_pass_entry;
 
        GtkWidget *freebusy_get_url_entry;
+       
+       GtkWidget *ssl_verify_peer_checkbtn;
+       GtkWidget *calendar_server_checkbtn;
 };
 
 VcalendarPrefs vcalprefs;
@@ -110,6 +114,12 @@ static PrefParam param[] = {
        {"export_freebusy_pass", "", &vcalprefs.export_freebusy_pass, P_PASSWORD,
         NULL, NULL, NULL},
 
+       {"ssl_verify_peer", "TRUE", &vcalprefs.ssl_verify_peer, P_BOOL,
+        NULL, NULL, NULL},
+
+       {"calendar_server", "FALSE", &vcalprefs.calendar_server, P_BOOL,
+        NULL, NULL, NULL},
+
        {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
 };
 
@@ -203,6 +213,16 @@ void register_orage_checkbtn_toggled(GtkToggleButton       *toggle_btn,
        vcalprefs.orage_registered = gtk_toggle_button_get_active(toggle_btn);
 }
 
+void calendar_server_checkbtn_toggled(GtkToggleButton *toggle, GtkWidget *widget)
+{
+       gboolean active = gtk_toggle_button_get_active(toggle);
+       if (active)
+               connect_dbus();
+       else
+               disconnect_dbus();
+       vcalprefs.calendar_server = active;
+}
+
 static void vcal_prefs_create_widget_func(PrefsPage * _page,
                                           GtkWindow * window,
                                           gpointer data)
@@ -225,6 +245,7 @@ static void vcal_prefs_create_widget_func(PrefsPage * _page,
        GtkWidget *export_command_label;
        GtkWidget *export_command_entry;
        GtkWidget *register_orage_checkbtn;
+       GtkWidget *calendar_server_checkbtn;
 
        GtkWidget *export_user_label;
        GtkWidget *export_user_entry;
@@ -245,6 +266,9 @@ static void vcal_prefs_create_widget_func(PrefsPage * _page,
        GtkWidget *freebusy_get_url_label;
        GtkWidget *freebusy_get_url_entry;
 
+       GtkWidget *frame_ssl_options;
+       GtkWidget *ssl_verify_peer_checkbtn;
+
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
        gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
@@ -391,6 +415,19 @@ static void vcal_prefs_create_widget_func(PrefsPage * _page,
        gtk_widget_show (register_orage_checkbtn);
        gtk_box_pack_start(GTK_BOX (hbox3), register_orage_checkbtn, TRUE, TRUE, 0);
 
+       hbox3 = gtk_hbox_new (FALSE, 8);
+       gtk_widget_show (hbox3);
+       gtk_box_pack_start(GTK_BOX (vbox3), hbox3, TRUE, TRUE, 0);
+       calendar_server_checkbtn = gtk_check_button_new_with_label(_("Export as GNOME shell calendar server"));
+       CLAWS_SET_TIP(calendar_server_checkbtn,
+                     _("Register D-Bus calendar server interface to export Claws Mail's calendar"));
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(calendar_server_checkbtn),
+                                    vcalprefs.calendar_server);
+       g_signal_connect(G_OBJECT(calendar_server_checkbtn), "toggled",
+                        G_CALLBACK(calendar_server_checkbtn_toggled), NULL);
+       gtk_widget_show(calendar_server_checkbtn);
+       gtk_box_pack_start(GTK_BOX(hbox3), calendar_server_checkbtn, TRUE, TRUE, 0);
+
 /* freebusy export */
 /* export enable + path stuff */
        PACK_FRAME(vbox2, frame_freebusy_export, _("Free/Busy information"));
@@ -494,6 +531,25 @@ static void vcal_prefs_create_widget_func(PrefsPage * _page,
        gtk_entry_set_text(GTK_ENTRY(freebusy_get_url_entry), 
                        vcalprefs.freebusy_get_url);
 
+/* SSL frame */
+       PACK_FRAME(vbox2, frame_ssl_options, _("SSL options"));
+       vbox3 = gtk_vbox_new (FALSE, 8);
+       gtk_widget_show (vbox3);
+       gtk_container_add (GTK_CONTAINER (frame_ssl_options), vbox3);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox3), VBOX_BORDER);
+
+/* SSL peer verification */
+       hbox2 = gtk_hbox_new (FALSE, 8);
+       gtk_widget_show (hbox2);
+       gtk_box_pack_start(GTK_BOX (vbox3), hbox2, TRUE, TRUE, 0);
+
+       ssl_verify_peer_checkbtn = gtk_check_button_new_with_label(
+               _("Verify SSL certificate validity"));
+       gtk_widget_show(ssl_verify_peer_checkbtn);
+       gtk_box_pack_start(GTK_BOX (hbox2), ssl_verify_peer_checkbtn, FALSE, FALSE, 0);
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ssl_verify_peer_checkbtn), 
+                       vcalprefs.ssl_verify_peer);
+
        if (!vcalprefs.export_user)
                vcalprefs.export_user = g_strdup("");
        if (!vcalprefs.export_pass)
@@ -539,6 +595,8 @@ static void vcal_prefs_create_widget_func(PrefsPage * _page,
        page->export_freebusy_pass_label = export_freebusy_pass_label;
        page->export_freebusy_pass_entry = export_freebusy_pass_entry;
 
+       page->ssl_verify_peer_checkbtn = ssl_verify_peer_checkbtn;
+
        set_auth_sensitivity(page);
 
        page->freebusy_get_url_entry = freebusy_get_url_entry;
@@ -561,7 +619,7 @@ void vcal_prefs_save(void)
                return;
 
        if (prefs_write_param(param, pfile->fp) < 0) {
-               g_warning("failed to write Vcalendar configuration to file\n");
+               g_warning("failed to write vCalendar configuration to file");
                prefs_file_close_revert(pfile);
                return;
        }
@@ -634,6 +692,10 @@ static void vcal_prefs_save_func(PrefsPage * _page)
        vcalprefs.freebusy_get_url =
            gtk_editable_get_chars(GTK_EDITABLE(page->freebusy_get_url_entry), 0, -1);
 
+/* SSL */
+       vcalprefs.ssl_verify_peer = 
+           gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON
+                                        (page->ssl_verify_peer_checkbtn));
 
        vcal_prefs_save();
        vcal_folder_export(NULL);