/*
- * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2013 Colin Leroy <colin@colino.net> and
+ * Claws Mail -- a GTK based, lightweight, and fast e-mail client
+ * Copyright (C) 1999-2022 Colin Leroy <colin@colino.net> and
* the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
#ifdef USE_PTHREAD
#include <pthread.h>
#endif
-#include <ical.h>
+#include <libical/ical.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <curl/curl.h>
#include "gtkutils.h"
#include "log.h"
#include "utils.h"
+#include "file-utils.h"
struct _VCalMeeting
{
if (do_space) { \
spacer = gtk_label_new(""); \
gtk_widget_set_size_request(spacer, 18, 16); \
- s_hbox = gtk_hbox_new(FALSE, 6); \
+ s_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); \
gtk_box_pack_start(GTK_BOX(s_hbox), spacer, FALSE, FALSE, 0); \
gtk_box_pack_start(GTK_BOX(s_hbox), widget, TRUE, TRUE, 0); \
} \
label = gtk_label_new(tmpstr); \
g_free(tmpstr); \
gtk_label_set_use_markup (GTK_LABEL (label), TRUE); \
- gtk_misc_set_alignment (GTK_MISC(label), 1, 0.5); \
- gtk_table_attach (GTK_TABLE (meet->table), \
- label, 0, 1, i, i+1, \
- GTK_FILL, GTK_FILL, 6, 6); \
- gtk_table_attach (GTK_TABLE (meet->table), \
- do_space?s_hbox:widget, 1, 2, i, i+1, \
- GTK_FILL|GTK_EXPAND, GTK_FILL, 6, 6); \
+ gtk_label_set_xalign (GTK_LABEL(label), 1.0); \
+ gtk_grid_attach(GTK_GRID(meet->table), label, 0, i, 1, 1); \
+ gtk_grid_attach(GTK_GRID(meet->table), do_space?s_hbox:widget, \
+ 1, i, 1, 1); \
+ gtk_widget_set_hexpand(do_space?s_hbox:widget, TRUE); \
+ gtk_widget_set_halign(do_space?s_hbox:widget, GTK_ALIGN_FILL); \
if (GTK_IS_LABEL(widget)) { \
gtk_label_set_use_markup(GTK_LABEL (widget), TRUE); \
- gtk_misc_set_alignment (GTK_MISC(widget),0, 0); \
+ gtk_label_set_xalign(GTK_LABEL(widget), 0.0); \
+ gtk_label_set_yalign(GTK_LABEL(widget), 0.0); \
gtk_label_set_line_wrap(GTK_LABEL(widget), TRUE); \
} \
} else { \
g_free(tmpstr); \
- gtk_table_attach (GTK_TABLE (meet->table), \
- do_space?s_hbox:widget, 0, 2, i, i+1, \
- GTK_FILL|GTK_EXPAND, GTK_FILL, 6, 6); \
+ gtk_grid_attach(GTK_GRID(meet->table), do_space?s_hbox:widget, \
+ 0, i, 1, 1); \
+ gtk_widget_set_hexpand(do_space?s_hbox:widget, TRUE); \
+ gtk_widget_set_halign(do_space?s_hbox:widget, GTK_ALIGN_FILL); \
} \
i++; \
}
if (do_space) { \
spacer = gtk_label_new(""); \
gtk_widget_set_size_request(spacer, 18, 16); \
- s_hbox = gtk_hbox_new(FALSE, 6); \
+ s_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); \
gtk_box_pack_start(GTK_BOX(s_hbox), spacer, FALSE, FALSE, 0); \
gtk_box_pack_start(GTK_BOX(s_hbox), widget, TRUE, TRUE, 0); \
} \
label = gtk_label_new(tmpstr); \
g_free(tmpstr); \
gtk_label_set_use_markup (GTK_LABEL (label), TRUE); \
- gtk_misc_set_alignment (GTK_MISC(label), 1, 0.5); \
+ gtk_label_set_xalign (GTK_LABEL(label), 1.0); \
if(intable1) { \
- gtk_table_attach (GTK_TABLE (meet->table1), \
- label, 0, 1, i, i+1, \
- GTK_FILL, GTK_FILL, 1, 1); \
+ gtk_grid_attach(GTK_GRID(meet->table1), label, \
+ 0, i, 1, 1); \
} \
else { \
- gtk_table_attach (GTK_TABLE (meet->table2), \
- label, 0, 1, i, i+1, \
- GTK_FILL, GTK_FILL, 1, 1); \
+ gtk_grid_attach(GTK_GRID(meet->table2), label, \
+ 0, i, 1, 1); \
} \
if(intable1) { \
- gtk_table_attach (GTK_TABLE (meet->table1), \
- do_space?s_hbox:widget, 1, 2, i, i+1, \
- GTK_FILL|GTK_EXPAND, GTK_FILL, 1, 1); \
+ gtk_grid_attach(GTK_GRID(meet->table1), \
+ do_space?s_hbox:widget, 1, i, 1, 1); \
} \
else { \
- gtk_table_attach (GTK_TABLE (meet->table2), \
- do_space?s_hbox:widget, 1, 2, i, i+1, \
- GTK_FILL|GTK_EXPAND, GTK_FILL, 1, 1); \
+ gtk_grid_attach(GTK_GRID(meet->table2), \
+ do_space?s_hbox:widget, 1, i, 1, 1); \
} \
if (GTK_IS_LABEL(widget)) { \
gtk_label_set_use_markup(GTK_LABEL (widget), TRUE); \
- gtk_misc_set_alignment (GTK_MISC(widget),0, 0); \
+ gtk_label_set_xalign(GTK_LABEL(widget), 0.0); \
+ gtk_label_set_yalign(GTK_LABEL(widget), 0.0); \
gtk_label_set_line_wrap(GTK_LABEL(widget), TRUE); \
} \
} else { \
g_free(tmpstr); \
if(intable1) { \
- gtk_table_attach (GTK_TABLE (meet->table1), \
- do_space?s_hbox:widget, 0, 2, i, i+1, \
- GTK_FILL|GTK_EXPAND, GTK_FILL, 1, 1); \
+ gtk_grid_attach(GTK_GRID(meet->table1), \
+ do_space?s_hbox:widget, 0, i, 1, 1); \
+ gtk_widget_set_hexpand(do_space?s_hbox:widget, TRUE); \
+ gtk_widget_set_halign(do_space?s_hbox:widget, \
+ GTK_ALIGN_FILL); \
} \
else { \
- gtk_table_attach (GTK_TABLE (meet->table2), \
- do_space?s_hbox:widget, 0, 2, i, i+1, \
- GTK_FILL|GTK_EXPAND, GTK_FILL, 1, 1); \
+ gtk_grid_attach(GTK_GRID(meet->table2), \
+ do_space?s_hbox:widget, 0, i, 1, 1); \
+ gtk_widget_set_hexpand(do_space?s_hbox:widget, TRUE); \
+ gtk_widget_set_halign(do_space?s_hbox:widget, \
+ GTK_ALIGN_FILL); \
} \
} \
i++; \
}
+static void set_watch_cursor(GdkWindow *window)
+{
+ cm_return_if_fail(window != NULL);
+
+ if (!watch_cursor)
+ watch_cursor = gdk_cursor_new_for_display(
+ gdk_window_get_display(window), GDK_WATCH);
+}
+
+
static gboolean add_btn_cb(GtkButton *widget, gpointer data)
{
VCalAttendee *attendee = (VCalAttendee *)data;
VCalAttendee *attendee_add(VCalMeeting *meet, gchar *address, gchar *name, gchar *partstat, gchar *cutype, gboolean first)
{
- GtkWidget *att_hbox = gtk_hbox_new(FALSE, 6);
+ GtkWidget *att_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
VCalAttendee *attendee = g_new0(VCalAttendee, 1);
attendee->address = gtk_entry_new();
- attendee->cutype = gtk_combo_box_new_text();
+ attendee->cutype = gtk_combo_box_text_new();
attendee->avail_evtbox = gtk_event_box_new();
- attendee->avail_img = gtk_image_new_from_stock
- (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ attendee->avail_img = gtk_image_new_from_icon_name
+ ("dialog-warning", GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show(attendee->address);
gtk_widget_show(attendee->cutype);
if (partstat)
attendee->status = g_strdup(partstat);
- gtk_combo_box_append_text(GTK_COMBO_BOX(attendee->cutype), _("Individual"));
- gtk_combo_box_append_text(GTK_COMBO_BOX(attendee->cutype), _("Group"));
- gtk_combo_box_append_text(GTK_COMBO_BOX(attendee->cutype), _("Resource"));
- gtk_combo_box_append_text(GTK_COMBO_BOX(attendee->cutype), _("Room"));
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(attendee->cutype), _("Individual"));
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(attendee->cutype), _("Group"));
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(attendee->cutype), _("Resource"));
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(attendee->cutype), _("Room"));
gtk_combo_box_set_active(GTK_COMBO_BOX(attendee->cutype), 0);
return g_strdup("");
}
-static void get_time_from_combo(GtkWidget *combo, int *h, int *m)
-{
- gchar *tmp;
- gchar **parts;
-
- if (!h || !m)
- return;
-
- tmp = gtk_editable_get_chars(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(combo))), 0, -1);
- parts = g_strsplit(tmp, ":", 2);
- if (parts[0] && parts[1] && *parts[0] && *parts[1]) {
- *h = atoi(parts[0]);
- *m = atoi(parts[1]);
- }
- g_strfreev(parts);
- g_free(tmp);
-}
-
static int get_current_gmt_offset(void)
{
time_t now = time(NULL);
lt->tm_sec = 0;
if (start) {
- get_time_from_combo(meet->start_time, <->tm_hour, <->tm_min);
+ gtkut_time_select_get_time(GTK_COMBO_BOX(meet->start_time), <->tm_hour, <->tm_min);
} else {
- get_time_from_combo(meet->end_time, <->tm_hour, <->tm_min);
+ gtkut_time_select_get_time(GTK_COMBO_BOX(meet->end_time), <->tm_hour, <->tm_min);
}
debug_print("%d %d %d, %d:%d\n", lt->tm_mday, lt->tm_mon, lt->tm_year, lt->tm_hour, lt->tm_min);
debug_print("DST change offset to apply to time %d\n", dst_offset);
t += dst_offset;
debug_print("%s\n", ctime(&t));
- return g_strdup(icaltime_as_ical_string(icaltime_from_timet(t, FALSE)));
+ return g_strdup(icaltime_as_ical_string(icaltime_from_timet_with_zone(t, FALSE, NULL)));
}
static gchar *get_location(VCalMeeting *meet)
{
VCalMeeting *meet = (VCalMeeting *)data;
- if (event && event->keyval == GDK_Escape) {
+ if (event && event->keyval == GDK_KEY_Escape) {
vcal_destroy(meet);
}
return FALSE;
}
-static int get_list_item_num(int h, int m)
-{
- if (m % 15 != 0)
- return -1;
-
- return (h*4 + m/15);
-}
-
static void meeting_end_changed(GtkWidget *widget, gpointer data);
static void meeting_start_changed(GtkWidget *widget, gpointer data)
struct tm end_lt;
time_t start_t, end_t;
guint d, m, y;
- int num = -1;
- if (strlen(gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(meet->start_time))))) < 5)
+ if (!gtkut_time_select_get_time(GTK_COMBO_BOX(meet->start_time), &start_lt.tm_hour, &start_lt.tm_min))
return;
tzset();
gtk_calendar_get_date(GTK_CALENDAR(meet->start_c), &y, &m, &d);
start_lt.tm_mday = d; start_lt.tm_mon = m; start_lt.tm_year = y - 1900;
- get_time_from_combo(meet->start_time, &start_lt.tm_hour, &start_lt.tm_min);
start_t = mktime(&start_lt);
debug_print("start %s\n", ctime(&start_t));
gtk_calendar_get_date(GTK_CALENDAR(meet->end_c), &y, &m, &d);
end_lt.tm_mday = d; end_lt.tm_mon = m; end_lt.tm_year = y - 1900;
- get_time_from_combo(meet->end_time, &end_lt.tm_hour, &end_lt.tm_min);
+ gtkut_time_select_get_time(GTK_COMBO_BOX(meet->end_time), &end_lt.tm_hour, &end_lt.tm_min);
+
end_t = mktime(&end_lt);
debug_print("end %s\n", ctime(&end_t));
end_lt.tm_mon,
end_lt.tm_year + 1900);
- num = get_list_item_num(end_lt.tm_hour, end_lt.tm_min);
- if (num > -1) {
- gchar *time_text = g_strdup_printf("%02d:%02d", end_lt.tm_hour, end_lt.tm_min);
- combobox_select_by_text(GTK_COMBO_BOX(meet->end_time), time_text);
- g_free(time_text);
- } else {
- gchar *tmp = g_strdup_printf("%02d:%02d",
- end_lt.tm_hour,
- end_lt.tm_min);
- gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(meet->end_time))),
- tmp);
- g_free(tmp);
- }
+ gtkut_time_select_select_by_time(GTK_COMBO_BOX(meet->end_time), end_lt.tm_hour, end_lt.tm_min);
+
g_signal_handlers_unblock_by_func(gtk_bin_get_child(GTK_BIN(meet->end_time)), meeting_end_changed, meet);
g_signal_handlers_unblock_by_func(meet->end_c, meeting_end_changed, meet);
}
struct tm end_lt;
time_t start_t, end_t;
guint d, m, y;
- int num = -1;
- if (strlen(gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(meet->end_time))))) < 5)
+ if (!gtkut_time_select_get_time(GTK_COMBO_BOX(meet->end_time), &end_lt.tm_hour, &end_lt.tm_min))
return;
start_t = time(NULL);
end_t = time(NULL);
gtk_calendar_get_date(GTK_CALENDAR(meet->start_c), &y, &m, &d);
start_lt.tm_mday = d; start_lt.tm_mon = m; start_lt.tm_year = y - 1900;
- get_time_from_combo(meet->start_time, &start_lt.tm_hour, &start_lt.tm_min);
+ gtkut_time_select_get_time(GTK_COMBO_BOX(meet->start_time), &start_lt.tm_hour, &start_lt.tm_min);
start_t = mktime(&start_lt);
debug_print("start %s\n", ctime(&start_t));
gtk_calendar_get_date(GTK_CALENDAR(meet->end_c), &y, &m, &d);
end_lt.tm_mday = d; end_lt.tm_mon = m; end_lt.tm_year = y - 1900;
- get_time_from_combo(meet->end_time, &end_lt.tm_hour, &end_lt.tm_min);
end_t = mktime(&end_lt);
start_lt.tm_mon,
start_lt.tm_year + 1900);
- num = get_list_item_num(start_lt.tm_hour, start_lt.tm_min);
- if (num > -1) {
- gchar *time_text = g_strdup_printf("%02d:%02d", start_lt.tm_hour, start_lt.tm_min);
- combobox_select_by_text(GTK_COMBO_BOX(meet->start_time), time_text);
- g_free(time_text);
- } else {
- gchar *tmp = g_strdup_printf("%02d:%02d",
- start_lt.tm_hour,
- start_lt.tm_min);
- gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(meet->start_time))),
- tmp);
- g_free(tmp);
- }
+ gtkut_time_select_select_by_time(GTK_COMBO_BOX(meet->start_time), start_lt.tm_hour, start_lt.tm_min);
g_signal_handlers_unblock_by_func(gtk_bin_get_child(GTK_BIN(meet->start_time)), meeting_start_changed, meet);
g_signal_handlers_unblock_by_func(meet->start_c, meeting_start_changed, meet);
static void att_update_icon(VCalMeeting *meet, VCalAttendee *attendee, gint avail, gchar *text)
{
- const gchar *icon = GTK_STOCK_DIALOG_INFO;
+ const gchar *icon = "dialog-information";
switch (avail) {
- case 0: icon = GTK_STOCK_DIALOG_WARNING; break;
- case 1: icon = GTK_STOCK_DIALOG_INFO; break;
- default: icon = GTK_STOCK_DIALOG_QUESTION; break;
+ case 0: icon = "dialog-warning"; break;
+ case 1: icon = "dialog-information"; break;
+ default: icon = "dialog-question"; break;
}
if (!gtk_entry_get_text(GTK_ENTRY(attendee->address))
|| strlen(gtk_entry_get_text(GTK_ENTRY(attendee->address)))==0) {
}
CLAWS_SET_TIP(attendee->avail_evtbox, NULL);
} else if (attendee->avail_img) {
- gtk_image_set_from_stock
+ gtk_image_set_from_icon_name
(GTK_IMAGE(attendee->avail_img),
icon,
GTK_ICON_SIZE_SMALL_TOOLBAR);
gchar *msg, *intro = NULL, *outro = NULL, *before = NULL, *after = NULL;
if (multiple)
- intro = g_strdup(_("The following person(s) are busy at the time of your planned meeting:\n- "));
+ intro = g_strdup(_("The following people are busy at the time of your planned meeting:\n- "));
else if (!strcmp(unavailable_persons, _("You")))
intro = g_strdup(_("You are busy at the time of your planned meeting"));
else
found = FALSE;
while (!found && offset >= -3600*6) {
gboolean ok = TRUE;
- struct icaltimetype new_start = icaltime_from_timet(icaltime_as_timet(start)+offset, FALSE);
- struct icaltimetype new_end = icaltime_from_timet(icaltime_as_timet(end)+offset, FALSE);
+ struct icaltimetype new_start = icaltime_from_timet_with_zone(icaltime_as_timet(start)+offset, FALSE, NULL);
+ struct icaltimetype new_end = icaltime_from_timet_with_zone(icaltime_as_timet(end)+offset, FALSE, NULL);
for (cur = attendees; cur; cur = cur->next) {
VCalAttendee *attendee = (VCalAttendee *)cur->data;
debug_print("trying %s - %s (offset %d)\n",
offset = 1800;
while (!found && offset <= 3600*6) {
gboolean ok = TRUE;
- struct icaltimetype new_start = icaltime_from_timet(icaltime_as_timet(start)+offset, FALSE);
- struct icaltimetype new_end = icaltime_from_timet(icaltime_as_timet(end)+offset, FALSE);
+ struct icaltimetype new_start = icaltime_from_timet_with_zone(icaltime_as_timet(start)+offset, FALSE, NULL);
+ struct icaltimetype new_end = icaltime_from_timet_with_zone(icaltime_as_timet(end)+offset, FALSE, NULL);
for (cur = attendees; cur; cur = cur->next) {
VCalAttendee *attendee = (VCalAttendee *)cur->data;
debug_print("trying %s - %s (offset %d)\n",
msg = get_avail_msg(unavailable_persons, (total > 1), FALSE, offset_before, offset_after);
val = alertpanel_full(_("Not everyone is available"), msg,
- GTK_STOCK_CANCEL, _("Send anyway"), NULL, FALSE,
- NULL, ALERT_QUESTION, G_ALERTDEFAULT);
+ NULL, _("_Cancel"), NULL, _("Send anyway"),
+ NULL, NULL, ALERTFOCUS_FIRST,
+ FALSE, NULL, ALERT_QUESTION);
g_free(msg);
}
msg = get_avail_msg(unavailable_persons, TRUE, TRUE, offset_before, offset_after);
g_free(unavailable_persons);
- gtk_image_set_from_stock
+ gtk_image_set_from_icon_name
(GTK_IMAGE(meet->total_avail_img),
- GTK_STOCK_DIALOG_WARNING,
+ "dialog-warning",
GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show(meet->total_avail_img);
gtk_label_set_text(GTK_LABEL(meet->total_avail_msg), _("Not everyone is available. "
"internal.ifb", NULL);
gboolean local_only = FALSE;
GSList *attlist;
+ GdkWindow *gdkwin;
if (vcalprefs.freebusy_get_url == NULL
|| *vcalprefs.freebusy_get_url == '\0') {
if (num_format > 2) {
g_warning("wrong format in %s!", real_url);
g_free(real_url);
+ g_free(internal_ifb);
return FALSE;
}
gtk_widget_set_sensitive(meet->save_btn, FALSE);
gtk_widget_set_sensitive(meet->avail_btn, FALSE);
- if (meet->window->window)
- gdk_window_set_cursor(meet->window->window, watch_cursor);
+ gdkwin = gtk_widget_get_window(meet->window);
+ if (gdkwin != NULL) {
+ set_watch_cursor(gdkwin);
+ gdk_window_set_cursor(gdkwin, watch_cursor);
+ }
for (cur = attlist; cur && cur->data; cur = cur->next) {
VCalAttendee *attendee = (VCalAttendee *)cur->data;
&& strncmp(tmp, "https://", 8)
&& strncmp(tmp, "webcal://", 9)
&& strncmp(tmp, "webcals://", 10)
- && strncmp(tmp, "ftp://", 6))
+ && strncmp(tmp, "ftp://", 6)
+ && strncmp(tmp, "ftps://", 7)
+ && strncmp(tmp, "sftp://", 7))
contents = file_read_to_str(tmp);
else {
gchar *label = g_strdup_printf(_("Fetching planning for %s..."), email);
if (for_send)
alertpanel_notice(_("Everyone is available."));
else if (!uncertain) {
- gtk_image_set_from_stock
+ gtk_image_set_from_icon_name
(GTK_IMAGE(meet->total_avail_img),
- GTK_STOCK_DIALOG_INFO,
+ "dialog-information",
GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show(meet->total_avail_img);
gtk_label_set_text(GTK_LABEL(meet->total_avail_msg), _("Everyone is available."));
CLAWS_SET_TIP(meet->total_avail_evtbox, NULL);
} else {
- gtk_image_set_from_stock
+ gtk_image_set_from_icon_name
(GTK_IMAGE(meet->total_avail_img),
- GTK_STOCK_DIALOG_QUESTION,
+ "dialog-question",
GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_widget_show(meet->total_avail_img);
gtk_label_set_text(GTK_LABEL(meet->total_avail_msg), _("Everyone is available."));
}
gtk_widget_set_sensitive(meet->save_btn, TRUE);
gtk_widget_set_sensitive(meet->avail_btn, avail_btn_can_be_sensitive());
- if (meet->window->window)
- gdk_window_set_cursor(meet->window->window, NULL);
+
+ if (gdkwin != NULL)
+ gdk_window_set_cursor(gdkwin, NULL);
if (!local_only)
meet->attendees = g_slist_remove(meet->attendees, dummy_org);
gchar *summary = NULL;
gchar *description = NULL;
VCalEvent *event = NULL;
- gchar buf[256];
GSList *cur;
PrefsAccount *account = NULL;
gboolean res = FALSE;
gboolean found_att = FALSE;
- Folder *folder = folder_find_from_name ("vCalendar", vcal_folder_get_class());
+ Folder *folder = folder_find_from_name (PLUGIN_NAME, vcal_folder_get_class());
gboolean redisp = FALSE;
+ GdkWindow *gdkwin;
if (meet->uid == NULL && meet->visible &&
!check_attendees_availability(meet, FALSE, TRUE)) {
MainWindow *mainwin = mainwindow_get_mainwindow();
if (mainwin->summaryview->folder_item == folder->inbox) {
redisp = TRUE;
- summary_show(mainwin->summaryview, NULL);
+ summary_show(mainwin->summaryview, NULL, FALSE);
}
}
gtk_widget_set_sensitive(meet->save_btn, FALSE);
gtk_widget_set_sensitive(meet->avail_btn, FALSE);
- if (meet->window->window)
- gdk_window_set_cursor(meet->window->window, watch_cursor);
+
+ gdkwin = gtk_widget_get_window(meet->window);
+ if (gdkwin != NULL) {
+ set_watch_cursor(gdkwin);
+ gdk_window_set_cursor(gdkwin, watch_cursor);
+ }
organizer = get_organizer(meet);
account = account_find_from_address(organizer, FALSE);
organizer_name = get_organizer_name(meet);
- if (account->set_domain && account->domain) {
- g_snprintf(buf, sizeof(buf), "%s", account->domain);
- } else if (!strncmp(get_domain_name(), "localhost", strlen("localhost"))) {
- g_snprintf(buf, sizeof(buf), "%s",
- strchr(account->address, '@') ?
- strchr(account->address, '@')+1 :
- account->address);
- } else {
- g_snprintf(buf, sizeof(buf), "%s", "");
- }
- generate_msgid(buf, 255, account->address);
-
if (meet->uid) {
uid = g_strdup(meet->uid);
} else {
- uid = g_strdup(buf);
+ uid = prefs_account_generate_msgid(account);
}
dtstart = get_date(meet, TRUE);
gtk_widget_set_sensitive(meet->save_btn, TRUE);
gtk_widget_set_sensitive(meet->avail_btn, avail_btn_can_be_sensitive());
- if (meet->window->window)
- gdk_window_set_cursor(meet->window->window, NULL);
+ if (gdkwin != NULL)
+ gdk_window_set_cursor(gdkwin, NULL);
if (res) {
vcal_destroy(meet);
if (folder && redisp) {
MainWindow *mainwin = mainwindow_get_mainwindow();
- summary_show(mainwin->summaryview, folder->inbox);
+ summary_show(mainwin->summaryview, folder->inbox, FALSE);
}
return res;
}
-static GList *get_predefined_times(void)
-{
- int h,m;
- GList *times = NULL;
- for (h = 0; h < 24; h++) {
- for (m = 0; m < 60; m += 15) {
- gchar *tmp = g_strdup_printf("%02d:%02d", h, m);
- times = g_list_append(times, tmp);
- }
- }
- return times;
-}
-
static VCalMeeting *vcal_meeting_create_real(VCalEvent *event, gboolean visible)
{
VCalMeeting *meet = g_new0(VCalMeeting, 1);
gchar *s = NULL;
int i = 0, num = 0;
GtkWidget *scrolledwin;
- GList *times = NULL;
GList *accounts;
- gchar *time_text = NULL;
#ifdef GENERIC_UMPC
GtkWidget *notebook;
GtkWidget *maemo_vbox0;
#endif
- if (!watch_cursor)
- watch_cursor = gdk_cursor_new(GDK_WATCH);
-
meet->visible = visible;
meet->window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "vcal_meeting_gtk");
#ifndef GENERIC_UMPC
- meet->table = gtk_table_new(7, 2, FALSE);
+ meet->table = gtk_grid_new();
#else
- meet->table1 = gtk_table_new(4, 2, FALSE);
- meet->table2 = gtk_table_new(2, 2, FALSE);
+ meet->table1 = gtk_grid_new();
+ meet->table2 = gtk_grid_new();
#endif
- meet->who = gtk_combo_box_new_text();
+ meet->who = gtk_combo_box_text_new();
meet->start_c = gtk_calendar_new();
meet->end_c = gtk_calendar_new();
meet->avail_evtbox = gtk_event_box_new();
- meet->avail_img = gtk_image_new_from_stock
- (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_SMALL_TOOLBAR);
-
- times = get_predefined_times();
+ meet->avail_img = gtk_image_new_from_icon_name
+ ("dialog-warning", GTK_ICON_SIZE_SMALL_TOOLBAR);
-#if !GTK_CHECK_VERSION(2, 24, 0)
- meet->start_time = gtk_combo_box_entry_new_text();
-#else
- meet->start_time = gtk_combo_box_text_new_with_entry();
-#endif
- gtk_combo_box_set_active(GTK_COMBO_BOX(meet->start_time), -1);
-#if !GTK_CHECK_VERSION(2, 24, 0)
- combobox_set_popdown_strings(GTK_COMBO_BOX(meet->start_time), times);
-#else
- combobox_set_popdown_strings(GTK_COMBO_BOX_TEXT(meet->start_time), times);
-#endif
+ meet->start_time = gtkut_time_select_combo_new();
-#if !GTK_CHECK_VERSION(2, 24, 0)
- meet->end_time = gtk_combo_box_entry_new_text();
-#else
- meet->end_time = gtk_combo_box_text_new_with_entry();
-#endif
- gtk_combo_box_set_active(GTK_COMBO_BOX(meet->end_time), -1);
-#if !GTK_CHECK_VERSION(2, 24, 0)
- combobox_set_popdown_strings(GTK_COMBO_BOX(meet->end_time), times);
-#else
- combobox_set_popdown_strings(GTK_COMBO_BOX_TEXT(meet->end_time), times);
-#endif
-
- list_free_strings(times);
- g_list_free(times);
+ meet->end_time = gtkut_time_select_combo_new();
meet->location = gtk_entry_new();
meet->summary = gtk_entry_new();
meet->avail_btn = gtk_button_new_with_label(_("Check availability"));
meet->total_avail_evtbox = gtk_event_box_new();
- meet->total_avail_img = gtk_image_new_from_stock
- (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_SMALL_TOOLBAR);
+ meet->total_avail_img = gtk_image_new_from_icon_name
+ ("dialog-warning", GTK_ICON_SIZE_SMALL_TOOLBAR);
meet->total_avail_msg = gtk_label_new("");
gtk_widget_set_size_request(meet->total_avail_evtbox, 18, 16);
gtk_calendar_select_month(GTK_CALENDAR(meet->start_c),
lt->tm_mon, lt->tm_year + 1900);
- time_text = g_strdup_printf("%02d:%02d", lt->tm_hour, 0);
- combobox_select_by_text(GTK_COMBO_BOX(meet->start_time), time_text);
- g_free(time_text);
+ gtkut_time_select_select_by_time(GTK_COMBO_BOX(meet->start_time), lt->tm_hour, 0);
t += 3600;
lt = localtime_r(&t, &buft2);
gtk_calendar_select_month(GTK_CALENDAR(meet->end_c),
lt->tm_mon, lt->tm_year + 1900);
- time_text = g_strdup_printf("%02d:%02d", lt->tm_hour, 0);
- combobox_select_by_text(GTK_COMBO_BOX(meet->end_time), time_text);
- g_free(time_text);
-
+ gtkut_time_select_select_by_time(GTK_COMBO_BOX(meet->end_time), lt->tm_hour, 0);
} else {
gtk_calendar_select_day(GTK_CALENDAR(meet->start_c),
get_dtdate(event->dtstart, DAY));
get_dtdate(event->dtend, MONTH)-1,
get_dtdate(event->dtend, YEAR));
- num = get_list_item_num(get_dtdate(event->dtstart, HOUR),
- get_dtdate(event->dtstart, MINUTE));
- if (num > -1) {
- time_text = g_strdup_printf("%02d:%02d", get_dtdate(event->dtstart, HOUR),
- get_dtdate(event->dtstart, MINUTE));
- combobox_select_by_text(GTK_COMBO_BOX(meet->start_time), time_text);
- g_free(time_text);
- } else {
- gchar *tmp = g_strdup_printf("%02d:%02d",
+ gtkut_time_select_select_by_time(GTK_COMBO_BOX(meet->start_time),
get_dtdate(event->dtstart, HOUR),
get_dtdate(event->dtstart, MINUTE));
- gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(meet->start_time))),
- tmp);
- g_free(tmp);
- }
- num = get_list_item_num(get_dtdate(event->dtend, HOUR),
- get_dtdate(event->dtend, MINUTE));
- if (num > -1) {
- time_text = g_strdup_printf("%02d:%02d", get_dtdate(event->dtend, HOUR),
- get_dtdate(event->dtend, MINUTE));
- combobox_select_by_text(GTK_COMBO_BOX(meet->end_time), time_text);
- g_free(time_text);
- } else {
- gchar *tmp = g_strdup_printf("%02d:%02d",
+ gtkut_time_select_select_by_time(GTK_COMBO_BOX(meet->end_time),
get_dtdate(event->dtend, HOUR),
get_dtdate(event->dtend, MINUTE));
- gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(meet->end_time))),
- tmp);
- g_free(tmp);
- }
}
g_signal_connect(G_OBJECT(meet->start_c), "day-selected",
gtk_widget_set_size_request(meet->end_time, 120, -1);
#endif
- date_hbox = gtk_hbox_new(FALSE, 6);
- date_vbox = gtk_vbox_new(FALSE, 6);
- hbox = gtk_hbox_new(FALSE, 6);
- label = gtk_label_new(_("<b>Starts at:</b> "));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ date_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
+ date_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
+ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
+ label = gtk_label_new(g_strconcat("<b>",_("Starts at:"),"</b> ",NULL));
+ gtk_label_set_xalign(GTK_LABEL(label), 0.0);
gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), meet->start_time, FALSE, FALSE, 0);
- label = gtk_label_new(_("<b> on:</b>"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ label = gtk_label_new(g_strconcat("<b> ",_("on:"),"</b>",NULL));
+ gtk_label_set_xalign(GTK_LABEL(label), 0.0);
gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(date_vbox), hbox, FALSE, FALSE, 0);
#else
label = gtk_label_new("");
#endif
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_label_set_xalign(GTK_LABEL(label), 0.0);
gtk_box_pack_start(GTK_BOX(date_hbox), label, TRUE, TRUE, 0);
- date_vbox = gtk_vbox_new(FALSE, 6);
- hbox = gtk_hbox_new(FALSE, 6);
- label = gtk_label_new(_("<b>Ends at:</b> "));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ date_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
+ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
+ label = gtk_label_new(g_strconcat("<b>",_("Ends at:"),"</b> ", NULL));
+ gtk_label_set_xalign(GTK_LABEL(label), 0.0);
gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), meet->end_time, FALSE, FALSE, 0);
- label = gtk_label_new(_("<b> on:</b>"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ label = gtk_label_new(g_strconcat("<b> ",_("on:"),"</b>",NULL));
+ gtk_label_set_xalign(GTK_LABEL(label), 0.0);
gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(date_vbox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(date_vbox), meet->end_c, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(date_hbox), date_vbox, FALSE, FALSE, 0);
- meet->attendees_vbox = gtk_vbox_new(FALSE, 6);
+ meet->attendees_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
gtk_widget_show_all(meet->attendees_vbox);
if (!event) {
attendee_add(meet, NULL, NULL, NULL, NULL, TRUE);
s = g_strdup_printf("%s: %s",
ac->account_name, ac->address);
- gtk_combo_box_append_text(GTK_COMBO_BOX(meet->who), s);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(meet->who), s);
g_free(s);
i++;
}
gtk_combo_box_set_active(GTK_COMBO_BOX(meet->who), num);
- save_hbox = gtk_hbox_new(FALSE, 6);
+ save_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start(GTK_BOX(save_hbox), meet->save_btn, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(save_hbox), meet->avail_btn, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(save_hbox), meet->total_avail_evtbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(save_hbox), meet->total_avail_msg, FALSE, FALSE, 0);
- hbox = gtk_hbox_new(FALSE, 6);
+ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
gtk_box_pack_start(GTK_BOX(hbox), meet->avail_evtbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), meet->who, TRUE, TRUE, 0);
gtk_label_new_with_mnemonic(_("Time:")));
gtk_widget_show (notebook);
- maemo_vbox0 = gtk_vbox_new(FALSE, 3);
+ maemo_vbox0 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 3);
gtk_box_pack_start(GTK_BOX(maemo_vbox0), notebook, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(maemo_vbox0), save_hbox, FALSE, FALSE, 0);
gtk_widget_hide(meet->total_avail_img);
gtk_widget_set_sensitive(meet->avail_btn, avail_btn_can_be_sensitive());
}
+
return meet;
}
VCalMeeting *vcal_meeting_create_with_start(VCalEvent *event, struct tm *sdate)
{
VCalMeeting *meet = vcal_meeting_create(event);
- int num = -1;
+
gtk_calendar_select_day(GTK_CALENDAR(meet->start_c),
sdate->tm_mday);
gtk_calendar_select_day(GTK_CALENDAR(meet->end_c),
sdate->tm_mon, sdate->tm_year+1900);
if (sdate->tm_hour != 0) {
- num = get_list_item_num(sdate->tm_hour, 0);
- if (num > -1) {
- gchar *time_text = g_strdup_printf("%02d:%02d", sdate->tm_hour, 0);
- combobox_select_by_text(GTK_COMBO_BOX(meet->start_time), time_text);
- g_free(time_text);
- }
+ gtkut_time_select_select_by_time(GTK_COMBO_BOX(meet->start_time), sdate->tm_hour, 0);
+
if (sdate->tm_hour < 23) {
- num = get_list_item_num(sdate->tm_hour+1, 0);
- if (num > -1) {
- gchar *time_text = g_strdup_printf("%02d:%02d", sdate->tm_hour+1, 0);
- combobox_select_by_text(GTK_COMBO_BOX(meet->end_time), time_text);
- g_free(time_text);
- }
+ gtkut_time_select_select_by_time(GTK_COMBO_BOX(meet->end_time), sdate->tm_hour+1, 0);
} else {
struct tm tm_tomorrow;
- gchar *time_text;
+
tm_tomorrow.tm_mday = sdate->tm_mday;
tm_tomorrow.tm_mon = sdate->tm_mon;
tm_tomorrow.tm_wday = sdate->tm_wday;
gtk_calendar_select_month(GTK_CALENDAR(meet->end_c),
tm_tomorrow.tm_mon, tm_tomorrow.tm_year);
- time_text = g_strdup_printf("%02d:%02d", 0, 0);
- combobox_select_by_text(GTK_COMBO_BOX(meet->end_time), time_text);
- g_free(time_text);
+ gtkut_time_select_select_by_time(GTK_COMBO_BOX(meet->end_time), 0, 0);
}
}
return meet;
postpone_min > 1 ? 2:1),
postpone_min);
aval = alertpanel_full(title, message,
- label, GTK_STOCK_OK, NULL, FALSE,
- NULL, ALERT_NOTICE, G_ALERTDEFAULT);
+ NULL, label, NULL, _("_OK"), NULL, NULL,
+ ALERTFOCUS_FIRST, FALSE, NULL, ALERT_NOTICE);
g_free(label);
g_free(title);
"multisync", NULL);
GSList *files = NULL;
GSList *cur = NULL;
- gchar *file = NULL;
- gchar *tmp = NULL;
+ gchar *backup_file;
gint i = 0;
icalcomponent *calendar = NULL;
FILE *fp;
list = vcal_folder_get_waiting_events();
for (cur = list; cur; cur = cur->next) {
+ gchar *tmp = NULL;
VCalEvent *event = (VCalEvent *)cur->data;
- file = g_strdup_printf("multisync%lld-%d",
- (long long)time(NULL), i);
+ gchar *file = g_strdup_printf("multisync%"CM_TIME_FORMAT"-%d",
+ time(NULL), i);
i++;
icalproperty_new_prodid(
"-//Claws Mail//NONSGML Claws Mail Calendar//EN"),
icalproperty_new_calscale("GREGORIAN"),
- 0
+ (void*)0
);
vcal_manager_event_dump(event, FALSE, FALSE, calendar, FALSE);
tmp = g_strconcat(path, G_DIR_SEPARATOR_S, file, NULL);
- str_write_to_file(icalcomponent_as_ical_string(calendar), tmp);
+ str_write_to_file(icalcomponent_as_ical_string(calendar), tmp, TRUE);
g_free(tmp);
files = g_slist_append(files, file);
vcal_manager_free_event(event);
g_slist_free(list);
- file = g_strconcat(path, G_DIR_SEPARATOR_S, "backup_entries", NULL);
- fp = g_fopen(file, "wb");
- g_free(file);
+ backup_file = g_strconcat(path, G_DIR_SEPARATOR_S, "backup_entries", NULL);
+ fp = claws_fopen(backup_file, "wb");
if (fp) {
for (cur = files; cur; cur = cur->next) {
- file = (char *)cur->data;
+ gchar * file = (char *)cur->data;
if (fprintf(fp, "1 1 %s\n", file) < 0)
- perror(file);
+ FILE_OP_ERROR(file, "fprintf");
g_free(file);
}
- if (fclose(fp) == EOF)
- perror(file);
+ if (claws_safe_fclose(fp) == EOF)
+ FILE_OP_ERROR(backup_file, "claws_fclose");
} else {
- perror(file);
+ FILE_OP_ERROR(backup_file, "claws_fopen");
}
+ g_free(backup_file);
g_free(path);
g_slist_free(files);
}
GSList *subs = NULL;
GSList *cur;
icalcomponent *calendar = NULL;
- gchar *file = NULL;
+ gchar *file;
gchar *tmpfile = get_tmp_file();
gchar *internal_file = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S,
"vcalendar", G_DIR_SEPARATOR_S,
if (!automatic) {
alertpanel_full(_("Empty calendar"),
_("There is nothing to export."),
- GTK_STOCK_OK, NULL, NULL, FALSE,
- NULL, ALERT_NOTICE, G_ALERTDEFAULT);
+ NULL, _("_OK"), NULL, NULL, NULL, NULL,
+ ALERTFOCUS_FIRST, FALSE, NULL, ALERT_NOTICE);
+ g_free(tmpfile);
+ g_free(internal_file);
return FALSE;
} else {
- str_write_to_file("", tmpfile);
+ str_write_to_file("", tmpfile, TRUE);
goto putfile;
}
}
icalproperty_new_prodid(
"-//Claws Mail//NONSGML Claws Mail Calendar//EN"),
icalproperty_new_calscale("GREGORIAN"),
- 0
+ (void*)0
);
for (cur = list; cur; cur = cur->next) {
vcal_manager_free_event(event);
}
- if (str_write_to_file(icalcomponent_as_ical_string(calendar), internal_file) < 0) {
+ if (str_write_to_file(icalcomponent_as_ical_string(calendar), internal_file, TRUE) < 0) {
g_warning("can't export internal cal");
}
-
- g_free(internal_file);
for (cur = subs; cur; cur = cur->next) {
/* Not to be freed */
}
if (vcalprefs.export_enable || path == NULL) {
- if (str_write_to_file(icalcomponent_as_ical_string(calendar), tmpfile) < 0) {
+ if (str_write_to_file(icalcomponent_as_ical_string(calendar), tmpfile, TRUE) < 0) {
alertpanel_error(_("Could not export the calendar."));
g_free(tmpfile);
icalcomponent_free(calendar);
icalcomponent_free(calendar);
putfile:
+ g_free(internal_file);
g_slist_free(list);
g_slist_free(subs);
- if (!path && !automatic)
- file = filesel_select_file_save(_("Export calendar to ICS"), NULL);
- else
- file = g_strdup(path);
-
if (automatic && (!path || strlen(path) == 0 || !vcalprefs.export_enable)) {
g_free(tmpfile);
- g_free(file);
return TRUE;
}
+ if (!path && !automatic)
+ file = filesel_select_file_save(_("Export calendar to ICS"), NULL);
+ else
+ file = g_strdup(path);
+
if (file
&& strncmp(file, "http://", 7)
&& strncmp(file, "https://", 8)
&& strncmp(file, "webcal://", 9)
&& strncmp(file, "webcals://", 10)
&& strncmp(file, "ftp://", 6)) {
- gchar *afile = NULL;
+ gchar *afile;
if (file[0] != G_DIR_SEPARATOR)
- afile=g_strdup_printf("%s%s%s", get_home_dir(),
+ afile = g_strdup_printf("%s%s%s", get_home_dir(),
G_DIR_SEPARATOR_S, file);
else
- afile=g_strdup(file);
+ afile = g_strdup(file);
if (move_file(tmpfile, afile, TRUE) != 0) {
log_error(LOG_PROTOCOL, _("Couldn't export calendar to '%s'\n"),
afile);
res = FALSE;
}
g_free(afile);
- g_free(file);
} else if (file) {
- FILE *fp = g_fopen(tmpfile, "rb");
+ FILE *fp = claws_fopen(tmpfile, "rb");
if (!strncmp(file, "webcal", 6)) {
gchar *tmp = g_strdup_printf("http%s", file+6);
g_free(file);
file = tmp;
}
if (fp) {
- res = vcal_curl_put(file, fp, filesize, user, pass);
- fclose(fp);
+ res = vcal_curl_put(file, fp, filesize, user, (pass != NULL ? pass : ""));
+ claws_fclose(fp);
}
- g_free(file);
}
g_free(tmpfile);
+ if (file)
+ g_free(file);
return res;
}
GSList *list = vcal_folder_get_waiting_events();
GSList *cur;
icalcomponent *calendar = NULL, *timezone = NULL, *tzc = NULL, *vfreebusy = NULL;
- gchar *file = NULL;
+ gchar *file;
gchar *tmpfile = get_tmp_file();
gchar *internal_file = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S,
"vcalendar", G_DIR_SEPARATOR_S,
icalproperty_new_prodid(
"-//Claws Mail//NONSGML Claws Mail Calendar//EN"),
icalproperty_new_calscale("GREGORIAN"),
- 0
+ (void*)0
);
timezone = icalcomponent_new(ICAL_VTIMEZONE_COMPONENT);
icalcomponent_add_property(tzc,
icalproperty_new_tzname("Greenwich meridian time"));
- icalcomponent_add_component(timezone, tzc);
+ icalcomponent_add_component(timezone, tzc);
icalcomponent_add_component(calendar, timezone);
- itt_start = icaltime_from_timet(whole_start, FALSE);
- itt_end = icaltime_from_timet(whole_end, FALSE);
+ itt_start = icaltime_from_timet_with_zone(whole_start, FALSE, NULL);
+ itt_end = icaltime_from_timet_with_zone(whole_end, FALSE, NULL);
itt_start.second = itt_start.minute = itt_start.hour = 0;
itt_end.second = 59; itt_end.minute = 59; itt_end.hour = 23;
ICAL_VFREEBUSY_COMPONENT,
icalproperty_vanew_dtstart(itt_start, 0),
icalproperty_vanew_dtend(itt_end, 0),
- 0
+ (void*)0
);
debug_print("DTSTART:%s\nDTEND:%s\n",
icalcomponent_add_component(calendar, vfreebusy);
- if (str_write_to_file(icalcomponent_as_ical_string(calendar), internal_file) < 0) {
+ if (str_write_to_file(icalcomponent_as_ical_string(calendar), internal_file, TRUE) < 0) {
g_warning("can't export freebusy");
}
g_free(internal_file);
if (vcalprefs.export_freebusy_enable) {
- if (str_write_to_file(icalcomponent_as_ical_string(calendar), tmpfile) < 0) {
+ if (str_write_to_file(icalcomponent_as_ical_string(calendar), tmpfile, TRUE) < 0) {
alertpanel_error(_("Could not export the freebusy info."));
g_free(tmpfile);
icalcomponent_free(calendar);
g_free(tmpfile);
return TRUE;
}
- file = g_strdup(path);
+ file = g_strdup(path);
if (file
&& strncmp(file, "http://", 7)
&& strncmp(file, "webcal://", 9)
&& strncmp(file, "webcals://", 10)
&& strncmp(file, "ftp://", 6)) {
- gchar *afile = NULL;
+ gchar *afile;
if (file[0] != G_DIR_SEPARATOR)
- afile=g_strdup_printf("%s%s%s", get_home_dir(),
+ afile = g_strdup_printf("%s%s%s", get_home_dir(),
G_DIR_SEPARATOR_S, file);
else
- afile=g_strdup(file);
+ afile = g_strdup(file);
if (move_file(tmpfile, file, TRUE) != 0) {
log_error(LOG_PROTOCOL, _("Couldn't export free/busy to '%s'\n"),
afile);
res = FALSE;
}
g_free(afile);
- g_free(file);
} else if (file) {
- FILE *fp = g_fopen(tmpfile, "rb");
+ FILE *fp = claws_fopen(tmpfile, "rb");
if (!strncmp(file, "webcal", 6)) {
gchar *tmp = g_strdup_printf("http%s", file+6);
g_free(file);
file = tmp;
}
if (fp) {
- res = vcal_curl_put(file, fp, filesize, user, pass);
- fclose(fp);
+ res = vcal_curl_put(file, fp, filesize, user, (pass != NULL ? pass : ""));
+ claws_fclose(fp);
}
- g_free(file);
}
g_free(tmpfile);
+ if (file)
+ g_free(file);
return res;
}