aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui
diff options
context:
space:
mode:
authorGary Ekker <gekker@novell.com>2004-04-11 05:31:37 +0800
committerGary Ekker <gekker@src.gnome.org>2004-04-11 05:31:37 +0800
commitf657306b6d8416fa2709b671cacace3c894bb621 (patch)
tree4e749ab7e6dc6e8f7ab61bc9bba497bae4bb8340 /calendar/gui
parent203132df9b3d99d88cef1b8a6cb397d32d6ff55b (diff)
downloadgsoc2013-evolution-f657306b6d8416fa2709b671cacace3c894bb621.tar.gz
gsoc2013-evolution-f657306b6d8416fa2709b671cacace3c894bb621.tar.zst
gsoc2013-evolution-f657306b6d8416fa2709b671cacace3c894bb621.zip
Fixed to use e-passwords.
2004-04-09 Gary Ekker <gekker@novell.com> * gui/dialogs/url-editor-dialog.c: Fixed to use e-passwords. * gui/dialogs/cal-prefs-dialog.c: Fixed crash and bugs created by changes made for instant apply. * gui/itip-utils.c: Fixed to use e-passwords. * gui/e-pub-utils.c: Fixed to use e-passwords. (just_published): Fixed error in logic. (e_pub_publish): Fixed crash if ESource is NULL. svn path=/trunk/; revision=25410
Diffstat (limited to 'calendar/gui')
-rw-r--r--calendar/gui/dialogs/cal-prefs-dialog.c43
-rw-r--r--calendar/gui/dialogs/url-editor-dialog.c55
-rw-r--r--calendar/gui/e-pub-utils.c56
-rw-r--r--calendar/gui/itip-utils.c12
4 files changed, 105 insertions, 61 deletions
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c
index 3f32522118..0a6d703cd4 100644
--- a/calendar/gui/dialogs/cal-prefs-dialog.c
+++ b/calendar/gui/dialogs/cal-prefs-dialog.c
@@ -641,6 +641,7 @@ cal_prefs_dialog_url_add_clicked (GtkWidget *button, DialogData *dialog_data)
-1);
url_list_changed (dialog_data);
+ show_fb_config (dialog_data);
if (!GTK_WIDGET_SENSITIVE ((GtkWidget *) dialog_data->url_remove)) {
selection = gtk_tree_view_get_selection ((GtkTreeView *) dialog_data->url_list);
@@ -686,6 +687,7 @@ cal_prefs_dialog_url_edit_clicked (GtkWidget *button, DialogData *dialog_data)
-1);
url_list_changed (dialog_data);
+ show_fb_config (dialog_data);
if (!GTK_WIDGET_SENSITIVE ((GtkWidget *) dialog_data->url_remove)) {
selection = gtk_tree_view_get_selection ((GtkTreeView *) dialog_data->url_list);
@@ -757,8 +759,8 @@ cal_prefs_dialog_url_remove_clicked (GtkWidget *button, DialogData *dialog_data)
gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_enable), FALSE);
}
g_free (url);
-
url_list_changed (dialog_data);
+ show_fb_config (dialog_data);
}
}
@@ -776,6 +778,9 @@ cal_prefs_dialog_url_enable_clicked (GtkWidget *button, DialogData *dialog_data)
URL_LIST_FREE_BUSY_URL_COLUMN, &url,
-1);
url->enabled = !url->enabled;
+
+ gtk_tree_selection_select_iter (selection, &iter);
+
gtk_list_store_set ((GtkListStore *) model, &iter,
URL_LIST_ENABLED_COLUMN, url->enabled,
-1);
@@ -784,6 +789,7 @@ cal_prefs_dialog_url_enable_clicked (GtkWidget *button, DialogData *dialog_data)
url->enabled ? _("Disable") : _("Enable"));
url_list_changed (dialog_data);
+ show_fb_config (dialog_data);
}
}
@@ -817,6 +823,7 @@ cal_prefs_dialog_url_list_enable_toggled (GtkCellRendererToggle *renderer,
url->enabled ? _("Disable") : _("Enable"));
url_list_changed (dialog_data);
+ show_fb_config (dialog_data);
}
gtk_tree_path_free (path);
@@ -863,7 +870,7 @@ cal_prefs_dialog_url_list_change (GtkTreeSelection *selection,
static void
show_fb_config (DialogData *dialog_data)
{
- GSList *url_config_list;
+ GSList *url_config_list = NULL;
GtkListStore *model;
GtkTreeIter iter;
@@ -872,6 +879,27 @@ show_fb_config (DialogData *dialog_data)
/* restore urls from gconf */
url_config_list = calendar_config_get_free_busy();
+
+ if (!url_config_list) {
+ /* list is empty-disable edit, remove, and enable buttons */
+ gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_edit),
+ FALSE);
+
+ gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_remove),
+ FALSE);
+
+ gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_enable),
+ FALSE);
+ } else {
+ gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_edit),
+ TRUE);
+
+ gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_remove),
+ TRUE);
+
+ gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_enable),
+ TRUE);
+ }
while (url_config_list) {
gchar *xml = (gchar *)url_config_list->data;
@@ -896,17 +924,6 @@ show_fb_config (DialogData *dialog_data)
g_slist_foreach (url_config_list, (GFunc) g_free, NULL);
g_slist_free (url_config_list);
- if (!gtk_tree_model_get_iter_first ((GtkTreeModel *) model, &iter)) {
- /* list is empty-disable edit, remove, and enable buttons */
- gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_edit),
- FALSE);
-
- gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_remove),
- FALSE);
-
- gtk_widget_set_sensitive (GTK_WIDGET (dialog_data->url_enable),
- FALSE);
- }
}
/* Shows the current task list settings in the dialog */
diff --git a/calendar/gui/dialogs/url-editor-dialog.c b/calendar/gui/dialogs/url-editor-dialog.c
index ec1e493402..5b87c58289 100644
--- a/calendar/gui/dialogs/url-editor-dialog.c
+++ b/calendar/gui/dialogs/url-editor-dialog.c
@@ -34,6 +34,7 @@
#include "cal-prefs-dialog.h"
#include "url-editor-dialog.h"
+#include "e-util/e-passwords.h"
#include <gtk/gtk.h>
#include <gtk/gtksignal.h>
#include <gtk/gtkoptionmenu.h>
@@ -82,7 +83,8 @@ url_editor_dialog_new (DialogData *dialog_data, EPublishUri *uri)
url_dlg_data->url_data = uri;
init_widgets (url_dlg_data);
- if (uri->location && uri->username && uri->password) {
+
+ if (uri->location && uri->username) {
if (strlen(uri->location) != 0) {
gtk_entry_set_text (url_dlg_data->url_entry,
uri->location);
@@ -91,6 +93,11 @@ url_editor_dialog_new (DialogData *dialog_data, EPublishUri *uri)
gtk_entry_set_text (url_dlg_data->username_entry,
uri->username);
}
+ }
+
+ uri->password = e_passwords_get_password ("Calendar", url_dlg_data->url_data->location);
+
+ if (uri->password) {
if (strlen(uri->password) != 0) {
gtk_entry_set_text (url_dlg_data->password_entry,
uri->password);
@@ -99,25 +106,26 @@ url_editor_dialog_new (DialogData *dialog_data, EPublishUri *uri)
} else {
e_dialog_toggle_set (url_dlg_data->remember_pw, FALSE);
}
-
- switch (uri->publish_freq) {
- case URI_PUBLISH_DAILY:
- e_dialog_radio_set (url_dlg_data->daily,
- URI_PUBLISH_DAILY,
- pub_frequency_type_map);
- break;
- case URI_PUBLISH_WEEKLY:
- e_dialog_radio_set (url_dlg_data->daily,
- URI_PUBLISH_WEEKLY,
- pub_frequency_type_map);
- break;
- case URI_PUBLISH_USER:
- default:
- e_dialog_radio_set (url_dlg_data->daily,
- URI_PUBLISH_USER,
- pub_frequency_type_map);
- }
}
+
+ switch (uri->publish_freq) {
+ case URI_PUBLISH_DAILY:
+ e_dialog_radio_set (url_dlg_data->daily,
+ URI_PUBLISH_DAILY,
+ pub_frequency_type_map);
+ break;
+ case URI_PUBLISH_WEEKLY:
+ e_dialog_radio_set (url_dlg_data->daily,
+ URI_PUBLISH_WEEKLY,
+ pub_frequency_type_map);
+ break;
+ case URI_PUBLISH_USER:
+ default:
+ e_dialog_radio_set (url_dlg_data->daily,
+ URI_PUBLISH_USER,
+ pub_frequency_type_map);
+ }
+
dialog_data->url_editor=TRUE;
dialog_data->url_editor_dlg = (GtkWidget *) url_dlg_data;
gtk_widget_set_sensitive ((GtkWidget *) url_dlg_data->ok, FALSE);
@@ -128,8 +136,13 @@ url_editor_dialog_new (DialogData *dialog_data, EPublishUri *uri)
if ((GtkEntry *) url_dlg_data->url_entry) {
url_editor_dialog_fb_url_activated (url_dlg_data->url_entry, url_dlg_data);
url_dlg_data->url_data->username = g_strdup (gtk_entry_get_text ((GtkEntry *) url_dlg_data->username_entry));
- if (e_dialog_toggle_get (url_dlg_data->remember_pw))
- url_dlg_data->url_data->password = g_strdup (gtk_entry_get_text ((GtkEntry *) url_dlg_data->password_entry));
+ url_dlg_data->url_data->password = g_strdup (gtk_entry_get_text ((GtkEntry *) url_dlg_data->password_entry));
+ if (e_dialog_toggle_get (url_dlg_data->remember_pw)) {
+ e_passwords_add_password (url_dlg_data->url_data->location, url_dlg_data->url_data->password);
+ e_passwords_remember_password ("Calendar", url_dlg_data->url_data->location);
+ } else {
+ e_passwords_forget_password ("Calendar", url_dlg_data->url_data->location);
+ }
}
}
diff --git a/calendar/gui/e-pub-utils.c b/calendar/gui/e-pub-utils.c
index f7191c0708..a206d43706 100644
--- a/calendar/gui/e-pub-utils.c
+++ b/calendar/gui/e-pub-utils.c
@@ -27,6 +27,8 @@
#include <libedataserver/e-source.h>
#include <libedataserver/e-source-list.h>
#include <libecal/e-cal-time-util.h>
+#include <libgnome/gnome-i18n.h>
+#include "e-util/e-passwords.h"
#include "calendar-config.h"
#include "common/authentication.h"
#include "itip-utils.h"
@@ -38,7 +40,7 @@ e_pub_uri_from_xml (EPublishUri *uri, const gchar *xml)
xmlDocPtr doc;
xmlNodePtr root, p;
xmlChar *location, *enabled, *frequency;
- xmlChar *username, *password, *publish_time;
+ xmlChar *username, *publish_time;
GSList *l = NULL;
uri->location = NULL;
@@ -56,7 +58,6 @@ e_pub_uri_from_xml (EPublishUri *uri, const gchar *xml)
enabled = xmlGetProp (root, "enabled");
frequency = xmlGetProp (root, "frequency");
username = xmlGetProp (root, "username");
- password = xmlGetProp (root, "password");
publish_time = xmlGetProp (root, "publish_time");
if (location != NULL)
@@ -67,11 +68,11 @@ e_pub_uri_from_xml (EPublishUri *uri, const gchar *xml)
uri->publish_freq = atoi (frequency);
if (username != NULL)
uri->username = g_strdup (username);
- if (password != NULL)
- uri->password = g_strdup (password);
if (publish_time != NULL)
uri->last_pub_time = g_strdup (publish_time);
+ uri->password = g_strdup ("");
+
for (p = root->children; p != NULL; p = p->next) {
xmlChar *uid = xmlGetProp (p, "uid");
@@ -108,7 +109,6 @@ e_pub_uri_to_xml (EPublishUri *uri)
xmlSetProp (root, "enabled", enabled);
xmlSetProp (root, "frequency", frequency);
xmlSetProp (root, "username", uri->username);
- xmlSetProp (root, "password", uri->password);
xmlSetProp (root, "publish_time", uri->last_pub_time);
for (cals = uri->calendars; cals != NULL; cals = cals->next) {
@@ -176,19 +176,21 @@ is_publish_time (EPublishUri *uri) {
static gboolean
just_published (gchar *last_pub_time) {
icaltimezone *utc;
- struct icaltimetype pubtime_itt, adjust_itt;
+ struct icaltimetype current_itt, adjust_itt;
if (strlen (last_pub_time) != 0) {
utc = icaltimezone_get_utc_timezone ();
- pubtime_itt = icaltime_from_string (last_pub_time);
- adjust_itt = icaltime_current_time_with_zone (utc);
+ adjust_itt = icaltime_from_string (last_pub_time);
+ current_itt = icaltime_current_time_with_zone (utc);
icaltime_adjust (&adjust_itt, 0, 0, 0, 3);
- if (icaltime_compare_date_only (pubtime_itt, adjust_itt) < 0)
+ if (icaltime_compare (adjust_itt, current_itt) < 0)
return TRUE;
+ else
+ return FALSE;
}
- return FALSE;
+ return TRUE;
}
void
@@ -215,13 +217,17 @@ e_pub_publish (gboolean publish) {
ECalComponent *clone = NULL;
gboolean cloned = FALSE;
ECal *client = NULL;
- gchar *xml = (gchar *)uri_config_list->data;
+ char *prompt;
+ gboolean remember = FALSE;
+ gchar *password;
+
+ gchar *xml = (gchar *)l->data;
uri = g_new0 (EPublishUri, 1);
e_pub_uri_from_xml (uri, xml);
/* kludge to safeguard against loop from gconf update */
- if (just_published (uri->last_pub_time))
+ if (!just_published (uri->last_pub_time))
return;
/* TODO: make sure we're online */
@@ -256,8 +262,8 @@ e_pub_publish (gboolean publish) {
source_uid = g_strdup (p->data);
source = e_source_list_peek_source_by_uid (source_list, source_uid);
-
- client = auth_new_cal_from_uri (e_source_get_uri (source), E_CAL_SOURCE_TYPE_EVENT);
+ if (source)
+ client = auth_new_cal_from_uri (e_source_get_uri (source), E_CAL_SOURCE_TYPE_EVENT);
if (!client) {
g_warning (G_STRLOC ": Could not publish Free/Busy: Calendar backend no longer exists");
@@ -285,12 +291,32 @@ e_pub_publish (gboolean publish) {
g_free (source_uid);
}
+
+ /* add password to the uri */
+ password = e_passwords_get_password ("Calendar",
+ (gchar *)uri->location);
+ if (!password) {
+ prompt = g_strdup_printf (_("Enter the password for %s"), (gchar *)uri->location);
+ password = e_passwords_ask_password (_("Enter password"),
+ "Calendar", (gchar *)uri->location,
+ prompt, TRUE,
+ E_PASSWORDS_REMEMBER_FOREVER,
+ &remember, NULL);
+
+ g_free (prompt);
+
+ if (!password) {
+ g_slist_free (p);
+ continue;
+ }
+ }
+
if (cloned && clone)
published = itip_publish_comp ((ECal *) client,
uri->location,
uri->username,
- uri->password, &clone);
+ password, &clone);
g_slist_free (p);
}
diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c
index 383d7df0cf..156dd08026 100644
--- a/calendar/gui/itip-utils.c
+++ b/calendar/gui/itip-utils.c
@@ -1152,18 +1152,6 @@ itip_publish_comp (ECal *client, gchar *uri, gchar *username,
/* Publish the component */
session = soup_session_async_new ();
- /* add username and password to the uri */
- if (strlen (password) == 0) {
- prompt = g_strdup_printf (_("Enter the password for %s"), uri);
- password = e_passwords_ask_password (_("Enter password"),
- "Calendar", NULL,
- prompt, TRUE,
- E_PASSWORDS_DO_NOT_REMEMBER,
- &remember, NULL);
-
- g_free (prompt);
- }
-
real_uri = soup_uri_new (uri);
if (!real_uri) {
g_warning (G_STRLOC ": Invalid URL: %s", uri);