Author: juha
Date: 2007-10-08 19:24:38 +0000 (Mon, 08 Oct 2007)
New Revision: 26128
Modified:
xfcalendar/trunk/configure.in.in
xfcalendar/trunk/src/appointment.c
xfcalendar/trunk/src/day-view.c
xfcalendar/trunk/src/day-view.h
xfcalendar/trunk/src/event-list.c
xfcalendar/trunk/src/functions.c
xfcalendar/trunk/src/functions.h
xfcalendar/trunk/src/mainbox.c
xfcalendar/trunk/src/mainbox.h
xfcalendar/trunk/src/parameters.c
xfcalendar/trunk/src/parameters.h
Log:
4.5.10.1: day view
and some common codes moved to common functions
Modified: xfcalendar/trunk/configure.in.in
===================================================================
--- xfcalendar/trunk/configure.in.in 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/configure.in.in 2007-10-08 19:24:38 UTC (rev 26128)
@@ -9,7 +9,7 @@
dnl
dnl Version information
-m4_define([orage_version], [4.5.9.7-svn])
+m4_define([orage_version], [4.5.10.1-svn])
m4_define([gtk_minimum_version], [2.6.0])
m4_define([xfce_minimum_version], [4.4.0])
Modified: xfcalendar/trunk/src/appointment.c
===================================================================
--- xfcalendar/trunk/src/appointment.c 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/appointment.c 2007-10-08 19:24:38 UTC (rev 26128)
@@ -564,8 +564,11 @@
if (gtk_text_iter_forward_search(&start, "<D>"
, GTK_TEXT_SEARCH_TEXT_ONLY
, &match_start, &match_end, &end)) { /* found it */
+ /*
tm = orage_localtime();
cdate = orage_tm_date_to_i18_date(tm);
+ */
+ cdate = orage_localdate_i18();
gtk_text_buffer_delete(tb, &match_start, &match_end);
gtk_text_buffer_insert(tb, &match_start, cdate, -1);
}
@@ -1194,8 +1197,7 @@
revert_xfical_to_last_saved((appt_win *)user_data);
}
-static void on_Date_button_clicked_cb(GtkWidget *button
- , gpointer *user_data)
+static void on_Date_button_clicked_cb(GtkWidget *button, gpointer *user_data)
{
appt_win *apptw = (appt_win *)user_data;
@@ -1596,8 +1598,11 @@
GTK_TOGGLE_BUTTON(apptw->Recur_limit_rb), TRUE);
gtk_spin_button_set_value(
GTK_SPIN_BUTTON(apptw->Recur_count_spin), (gdouble)1);
+ /*
t = orage_localtime();
untildate_to_display = orage_tm_date_to_i18_date(t);
+ */
+ untildate_to_display = orage_localdate_i18();
gtk_button_set_label(GTK_BUTTON(apptw->Recur_until_button)
, (const gchar *)untildate_to_display);
break;
@@ -1607,8 +1612,11 @@
gtk_spin_button_set_value(
GTK_SPIN_BUTTON(apptw->Recur_count_spin)
, (gdouble)appt->recur_count);
+ /*
t = orage_localtime();
untildate_to_display = orage_tm_date_to_i18_date(t);
+ */
+ untildate_to_display = orage_localdate_i18();
gtk_button_set_label(GTK_BUTTON(apptw->Recur_until_button)
, (const gchar *)untildate_to_display);
break;
Modified: xfcalendar/trunk/src/day-view.c
===================================================================
--- xfcalendar/trunk/src/day-view.c 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/day-view.c 2007-10-08 19:24:38 UTC (rev 26128)
@@ -172,9 +172,8 @@
{
day_win *dw = (day_win *)user_data;
- if (orage_date_button_clicked(button, dw->Window)) {
+ if (orage_date_button_clicked(button, dw->Window))
refresh_day_view_table(dw);
- }
}
static void header_button_clicked_cb(GtkWidget *button, gpointer *user_data)
@@ -186,6 +185,17 @@
create_el_win(start_date);
}
+static void on_button_press_event_cb(GtkWidget *widget
+ , GdkEventButton *event, gpointer *user_data)
+{
+ day_win *dw = (day_win *)user_data;
+ gchar *uid;
+
+ g_print("pressed button %d\n", event->button);
+ uid = g_object_get_data(G_OBJECT(widget), "UID");
+ create_appt_win("UPDATE", uid, NULL);
+}
+
static void event_button_clicked_cb(GtkWidget *button, gpointer *user_data)
{
day_win *dw = (day_win *)user_data;
@@ -195,15 +205,13 @@
create_appt_win("UPDATE", uid, NULL);
}
-static void add_row(day_win *dw, xfical_appt *appt, char *a_day
- , GtkWidget *element[24][40], GtkWidget *line[24][40], GdkColor *bg
- , gint days)
+static void add_row(day_win *dw, xfical_appt *appt, char *a_day, gint days)
{
- gint row, start_row, end_row, length;
- gint col, len, start_col, end_col, first_col, last_col;
+ gint row, start_row, end_row;
+ gint col, start_col, end_col, first_col, last_col;
gint height, start_height, end_height;
gchar *text, *tip, *uid, *start_date, *end_date;
- GtkWidget *ev, *lab, *name, *hb;
+ GtkWidget *ev, *lab, *hb;
struct tm tm_start, tm_end, tm_first;
GDate *g_start, *g_end, *g_first;
@@ -225,23 +233,44 @@
else
row = tm_start.tm_hour;
- len = strlen(gtk_button_get_label(GTK_BUTTON(dw->StartDate_button)));
- text = g_strndup(appt->title ? appt->title : _("Unknown"), len);
- if (element[row][col] == NULL) {
- hb = gtk_hbox_new(FALSE, 0);
- }
- else {
- hb = element[row][col];
- }
+ text = g_strdup(appt->title ? appt->title : _("Unknown"));
ev = gtk_event_box_new();
lab = gtk_label_new(text);
gtk_container_add(GTK_CONTAINER(ev), lab);
- name = gtk_button_new();
- gtk_button_set_relief(GTK_BUTTON(name), GTK_RELIEF_NONE);
+
+ if (appt->starttimecur[8] != 'T') {
+ gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg2);
+ if (dw->header[col] == NULL)
+ hb = gtk_hbox_new(TRUE, 0);
+ else
+ hb = dw->header[col];
+ tip = g_strdup_printf("%s\n%s - %s\n%s"
+ , appt->title
+ , appt->starttimecur
+ , appt->endtimecur
+ , appt->note);
+ gtk_tooltips_set_tip(dw->Tooltips, ev, tip, NULL);
+ gtk_box_pack_start(GTK_BOX(hb), ev, TRUE, TRUE, 0);
+ g_object_set_data_full(G_OBJECT(ev), "UID", g_strdup(appt->uid)
+ , g_free);
+ g_signal_connect((gpointer)ev, "button-press-event"
+ , G_CALLBACK(on_button_press_event_cb), dw);
+ dw->header[col] = hb;
+ g_free(tip);
+ g_free(text);
+ g_date_free(g_start);
+ g_date_free(g_end);
+ g_date_free(g_first);
+ return;
+ }
+
+ if (dw->element[row][col] == NULL)
+ hb = gtk_hbox_new(TRUE, 0);
+ else
+ hb = dw->element[row][col];
if ((row % 2) == 1)
- gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, bg);
- length = g_date_days_between(g_start, g_end);
- if (length == 0)
+ gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg1);
+ if (g_date_days_between(g_start, g_end) == 0)
tip = g_strdup_printf("%s\n%02d:%02d-%02d:%02d\n%s"
, appt->title
, tm_start.tm_hour, tm_start.tm_min
@@ -263,19 +292,18 @@
g_free(start_date);
g_free(end_date);
}
- gtk_tooltips_set_tip(dw->Tooltips, name, tip, NULL);
- gtk_container_add(GTK_CONTAINER(name), ev);
- /*
- gtk_widget_set_size_request(name, dw->StartDate_button_req.width, -1);
- */
- gtk_box_pack_start(GTK_BOX(hb), name, TRUE, TRUE, 0);
- g_object_set_data_full(G_OBJECT(name), "UID", g_strdup(appt->uid), g_free);
- g_signal_connect((gpointer)name, "clicked"
- , G_CALLBACK(event_button_clicked_cb), dw);
- element[row][col] = hb;
+ gtk_tooltips_set_tip(dw->Tooltips, ev, tip, NULL);
+ gtk_box_pack_start(GTK_BOX(hb), ev, TRUE, TRUE, 0);
+ g_object_set_data_full(G_OBJECT(ev), "UID", g_strdup(appt->uid), g_free);
+ g_signal_connect((gpointer)ev, "button-press-event"
+ , G_CALLBACK(on_button_press_event_cb), dw);
+ dw->element[row][col] = hb;
g_free(tip);
g_free(text);
height = dw->StartDate_button_req.height;
+ /*
+ * same_date = !strncmp(start_ical_time, end_ical_time, 8);
+ * */
start_col = g_date_days_between(g_first, g_start)+1;
if (start_col < 1)
first_col = 1;
@@ -286,9 +314,6 @@
last_col = days;
else
last_col = end_col;
- g_date_free(g_start);
- g_date_free(g_end);
- g_date_free(g_first);
for (col = first_col; col <= last_col; col++) {
if (col == start_col)
start_row = tm_start.tm_hour;
@@ -307,34 +332,37 @@
end_height = tm_end.tm_min*height/60;
else
end_height = height;
- line[row][col] = build_line(1, start_height
- , 2, end_height-start_height, line[row][col]);
+ dw->line[row][col] = build_line(1, start_height
+ , 2, end_height-start_height, dw->line[row][col]);
}
}
+ g_date_free(g_start);
+ g_date_free(g_end);
+ g_date_free(g_first);
}
-static void app_rows(day_win *dw, char *a_day, GtkWidget *element[24][40]
- , GtkWidget *line[24][40], xfical_type ical_type, gchar *file_type
- , GdkColor *bg)
+static void app_rows(day_win *dw, char *a_day , xfical_type ical_type
+ , gchar *file_type)
{
xfical_appt *appt;
int days = 1;
program_log("\tapp_rows start");
- days = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin)) - 1;
- for (appt = xfical_appt_get_next_on_day(a_day, TRUE, days
+ days = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(dw->day_spin));
+ /* xfical_appt_get_next_on_day uses extra days so to show 7 days we need
+ * to pass days=6, which means 6 days in addition to the one */
+ for (appt = xfical_appt_get_next_on_day(a_day, TRUE, days-1
, ical_type , file_type);
appt;
- appt = xfical_appt_get_next_on_day(a_day, FALSE, days
+ appt = xfical_appt_get_next_on_day(a_day, FALSE, days-1
, ical_type , file_type)) {
- add_row(dw, appt, a_day, element, line, bg, days);
+ add_row(dw, appt, a_day, days);
xfical_appt_free(appt);
}
program_log("\tapp_rows end");
}
-static void app_data(day_win *dw, GtkWidget *element[24][40]
- , GtkWidget *line[24][40], GdkColor *bg)
+static void app_data(day_win *dw)
{
xfical_type ical_type;
gchar file_type[8];
@@ -351,10 +379,10 @@
return;
program_log("\tapp_data after open");
strcpy(file_type, "O00.");
- app_rows(dw, a_day, element, line, ical_type, file_type, bg);
+ app_rows(dw, a_day, ical_type, file_type);
/* then process all foreign files */
for (i = 0; i < g_par.foreign_count; i++) {
- app_rows(dw, a_day, element, line, ical_type, file_type, bg);
+ app_rows(dw, a_day, ical_type, file_type);
}
xfical_file_close(TRUE);
}
@@ -362,57 +390,65 @@
static void fill_days(day_win *dw, gint days)
{
- gint i, j, height, width;
+ gint row, col, height, width;
GtkWidget *name, *ev, *hb;
- GdkColor bg;
- GtkStyle *def_style;
- GtkWidget *element[24][40];
- GtkWidget *line[24][40];
+ GtkWidget *marker;
program_log("fill_days started");
- def_style = gtk_widget_get_default_style();
- bg = def_style->bg[GTK_STATE_NORMAL];
- bg.red += (bg.red < 64000 ? 1000 : -1000);
- bg.green += (bg.green < 64000 ? 1000 : -1000);
- bg.blue += (bg.blue < 64000 ? 1000 : -1000);
height = dw->StartDate_button_req.height;
width = dw->StartDate_button_req.width;
- for (i = 0; i < 24; i++)
- {
- for (j = 1; j < days+1; j++) {
- element[i][j] = NULL;
+ for (col = 1; col < days+1; col++) {
+ dw->header[col] = NULL;
+ for (row = 0; row < 24; row++) {
+ dw->element[row][col] = NULL;
/* gdk_draw_rectangle(, , , left_x, top_y, width, height); */
- line[i][j] = build_line(0, 0, 3, height, NULL);
+ dw->line[row][col] = build_line(0, 0, 3, height, NULL);
}
}
program_log("fill_days init done");
/* FIXME: the next line is heavy. it takes almost 100 % of time */
- app_data(dw, element, line, &bg);
+ app_data(dw);
program_log("fill_days data done");
- for (i = 0; i < 24; i++)
- {
- for (j = 1; j < days+1; j++) {
+ for (col = 1; col < days+1; col++) {
+ hb = gtk_hbox_new(FALSE, 0);
+ marker = build_line(0, 0, 2, height, NULL);
+ gtk_box_pack_start(GTK_BOX(hb), marker, FALSE, FALSE, 0);
+ if (dw->header[col]) {
+ gtk_box_pack_start(GTK_BOX(hb), dw->header[col], TRUE, TRUE, 0);
+ gtk_widget_set_size_request(hb, width, -1);
+ }
+ else {
+ ev = gtk_event_box_new();
+ gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg2);
+ gtk_box_pack_start(GTK_BOX(hb), ev, TRUE, TRUE, 0);
+ }
+ gtk_table_attach(GTK_TABLE(dw->dtable_h), hb, col, col+1, 1, 2
+ , (GTK_FILL), (0), 0, 0);
+ for (row = 0; row < 24; row++) {
hb = gtk_hbox_new(FALSE, 0);
- if (i == 0) {
+ if (row == 0)
gtk_widget_set_size_request(hb, width, -1);
- }
- if (element[i][j]) {
- gtk_box_pack_start(GTK_BOX(hb), line[i][j], FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hb), element[i][j], TRUE, TRUE, 0);
+ if (dw->element[row][col]) {
+ gtk_box_pack_start(GTK_BOX(hb), dw->line[row][col]
+ , FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hb), dw->element[row][col]
+ , TRUE, TRUE, 0);
gtk_widget_set_size_request(hb, width, -1);
}
else {
ev = gtk_event_box_new();
+ /*
name = gtk_label_new(" ");
gtk_container_add(GTK_CONTAINER(ev), name);
- if ((i % 2) == 1) {
- gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &bg);
- }
- gtk_box_pack_start(GTK_BOX(hb), line[i][j], FALSE, FALSE, 0);
+ */
+ if ((row % 2) == 1)
+ gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg1);
+ gtk_box_pack_start(GTK_BOX(hb), dw->line[row][col]
+ , FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hb), ev, TRUE, TRUE, 0);
}
- gtk_table_attach(GTK_TABLE(dw->dtable), hb, j, j+1, i, i+1
+ gtk_table_attach(GTK_TABLE(dw->dtable), hb, col, col+1, row, row+1
, (GTK_FILL), (0), 0, 0);
}
}
@@ -443,7 +479,7 @@
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
/* show days spin = how many days to show */
- dw->day_spin = gtk_spin_button_new_with_range(1, 40, 1);
+ dw->day_spin = gtk_spin_button_new_with_range(1, MAX_DAYS, 1);
gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(dw->day_spin), TRUE);
gtk_widget_set_size_request(dw->day_spin, 40, -1);
gtk_box_pack_start(GTK_BOX(hbox), dw->day_spin, FALSE, FALSE, 0);
@@ -470,12 +506,31 @@
, G_CALLBACK(on_Date_button_clicked_cb), dw);
}
+static void build_day_view_bgs(day_win *dw)
+{
+ GtkStyle *def_style;
+ GdkColormap *pic1_cmap;
+
+ def_style = gtk_widget_get_default_style();
+ pic1_cmap = gdk_colormap_get_system();
+ dw->bg1 = def_style->bg[GTK_STATE_NORMAL];
+ dw->bg1.red += (dw->bg1.red < 64000 ? 1000 : -1000);
+ dw->bg1.green += (dw->bg1.green < 64000 ? 1000 : -1000);
+ dw->bg1.blue += (dw->bg1.blue < 64000 ? 1000 : -1000);
+ gdk_colormap_alloc_color(pic1_cmap, &dw->bg1, FALSE, TRUE);
+ dw->bg2 = def_style->bg[GTK_STATE_NORMAL];
+ dw->bg2.red += (dw->bg2.red > 1000 ? -1000 : 1000);
+ dw->bg2.green += (dw->bg2.green > 1000 ? -1000 : 1000);
+ dw->bg2.blue += (dw->bg2.blue > 1000 ? -1000 : 1000);
+ gdk_colormap_alloc_color(pic1_cmap, &dw->bg1, FALSE, TRUE);
+}
+
static void build_day_view_table(day_win *dw)
{
gint days; /* number of days to show */
int year, month, day;
gint i, j, sunday;
- GtkWidget *name, *label;
+ GtkWidget *name, *label, *ev;
char text[5+1], *date;
struct tm tm_date;
guint monthdays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
@@ -509,7 +564,7 @@
/*
gtk_container_add(GTK_CONTAINER(dw->scroll_win_h), dw->day_view_vbox);
*/
- dw->dtable_h = gtk_table_new(1, days+2, FALSE);
+ dw->dtable_h = gtk_table_new(2, days+2, FALSE);
gtk_box_pack_start(GTK_BOX(dw->day_view_vbox), dw->dtable_h
, FALSE, FALSE, 0);
year = tm_date.tm_year + 1900;
@@ -567,15 +622,24 @@
/* hours column = hour rows */
for (i = 0; i < 24; i++) {
+ ev = gtk_event_box_new();
g_sprintf(text, "%02d", i);
name = gtk_label_new(text);
- gtk_widget_set_size_request(name, dw->hour_req.width
+ gtk_container_add(GTK_CONTAINER(ev), name);
+ if ((i % 2) == 1)
+ gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg1);
+ gtk_widget_set_size_request(ev, dw->hour_req.width
, dw->StartDate_button_req.height);
- gtk_table_attach(GTK_TABLE(dw->dtable), name, 0, 1, i, i+1
+ gtk_table_attach(GTK_TABLE(dw->dtable), ev, 0, 1, i, i+1
, (GTK_FILL), (0), 0, 0);
+ ev = gtk_event_box_new();
name = gtk_label_new(text);
- gtk_widget_set_size_request(name, dw->hour_req.width, -1);
- gtk_table_attach(GTK_TABLE(dw->dtable), name, days+1, days+2, i, i+1
+ gtk_container_add(GTK_CONTAINER(ev), name);
+ if ((i % 2) == 1)
+ gtk_widget_modify_bg(ev, GTK_STATE_NORMAL, &dw->bg1);
+ gtk_widget_set_size_request(ev, dw->hour_req.width
+ , dw->StartDate_button_req.height);
+ gtk_table_attach(GTK_TABLE(dw->dtable), ev, days+1, days+2, i, i+1
, (GTK_FILL), (0), 0, 0);
}
fill_days(dw, days);
@@ -585,7 +649,7 @@
{
GtkAdjustment *v_adj;
- /* let's try to start rougly from line 8 = 8 o'clock */
+ /* let's try to start roughly from line 8 = 8 o'clock */
v_adj = gtk_scrolled_window_get_vadjustment(
GTK_SCROLLED_WINDOW(dw->scroll_win));
gtk_adjustment_set_value(v_adj, v_adj->upper/3);
@@ -612,7 +676,6 @@
dw->Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(dw->Window), 690, 390);
gtk_window_set_title(GTK_WINDOW(dw->Window), _("Orage - day view"));
-
gtk_window_add_accel_group(GTK_WINDOW(dw->Window), dw->accel_group);
dw->Vbox = gtk_vbox_new(FALSE, 0);
@@ -623,6 +686,7 @@
build_menu(dw);
build_toolbar(dw);
program_log("create_day_win toolbar done");
+ build_day_view_bgs(dw);
build_day_view_header(dw, start_date);
program_log("create_day_win header done");
build_day_view_table(dw);
Modified: xfcalendar/trunk/src/day-view.h
===================================================================
--- xfcalendar/trunk/src/day-view.h 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/day-view.h 2007-10-08 19:24:38 UTC (rev 26128)
@@ -24,6 +24,8 @@
#ifndef __DAY_VIEW_H__
#define __DAY_VIEW_H__
+#define MAX_DAYS 40
+
typedef struct _day_win
{
GtkAccelGroup *accel_group;
@@ -49,6 +51,12 @@
GtkWidget *scroll_win;
GtkWidget *dtable; /* day table */
GtkRequisition hour_req;
+
+ GtkWidget *header[MAX_DAYS];
+ GtkWidget *element[24][MAX_DAYS];
+ GtkWidget *line[24][MAX_DAYS];
+
+ GdkColor bg1, bg2;
} day_win;
day_win *create_day_win(char *start_date);
Modified: xfcalendar/trunk/src/event-list.c
===================================================================
--- xfcalendar/trunk/src/event-list.c 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/event-list.c 2007-10-08 19:24:38 UTC (rev 26128)
@@ -643,14 +643,8 @@
static void set_el_data_from_cal(el_win *el)
{
char *title;
- struct tm tm_date = {0,0,0,0,0,0,0,0,0};
- gtk_calendar_get_date(GTK_CALENDAR(g_par.xfcal->mCalendar)
- , (unsigned int *)&tm_date.tm_year
- , (unsigned int *)&tm_date.tm_mon
- , (unsigned int *)&tm_date.tm_mday);
- tm_date.tm_year -= 1900;
- title = orage_tm_date_to_i18_date(&tm_date);
+ title = orage_cal_to_i18_date(GTK_CALENDAR(g_par.xfcal->mCalendar));
set_el_data(el, title);
}
@@ -917,57 +911,12 @@
delete_appointment((el_win *)user_data);
}
-static void on_journal_start_button_clicked(GtkButton *button
+static void on_journal_start_button_clicked(GtkWidget *button
, gpointer *user_data)
{
el_win *el = (el_win *)user_data;
- GtkWidget *selDate_Window_dialog;
- GtkWidget *selDate_Calendar_calendar;
- gint result;
- guint year, month, day;
- char *date_to_display = NULL;
- struct tm *t, cur_t;
-
- selDate_Window_dialog = gtk_dialog_new_with_buttons(
- _("Pick the date"), GTK_WINDOW(el->Window),
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- _("Today"),
- 1,
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT,
- NULL);
-
- selDate_Calendar_calendar = gtk_calendar_new();
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(selDate_Window_dialog)->vbox)
- , selDate_Calendar_calendar);
-
- cur_t = orage_i18_date_to_tm_date(gtk_button_get_label(
- GTK_BUTTON(button)));
- orage_select_date(GTK_CALENDAR(selDate_Calendar_calendar)
- , cur_t.tm_year+1900, cur_t.tm_mon, cur_t.tm_mday);
- gtk_widget_show_all(selDate_Window_dialog);
-
- result = gtk_dialog_run(GTK_DIALOG(selDate_Window_dialog));
- switch(result){
- case GTK_RESPONSE_ACCEPT:
- gtk_calendar_get_date(GTK_CALENDAR(selDate_Calendar_calendar)
- , (guint *)&cur_t.tm_year, (guint *)&cur_t.tm_mon
- , (guint *)&cur_t.tm_mday);
- cur_t.tm_year -= 1900;
- date_to_display = orage_tm_date_to_i18_date(&cur_t);
- break;
- case 1:
- t = orage_localtime();
- date_to_display = orage_tm_date_to_i18_date(t);
- break;
- case GTK_RESPONSE_DELETE_EVENT:
- default:
- date_to_display = (gchar *)gtk_button_get_label(button);
- break;
- }
- gtk_button_set_label(button, (const gchar *)date_to_display);
- refresh_el_win(el);
- gtk_widget_destroy(selDate_Window_dialog);
+ if (orage_date_button_clicked(button, el->Window))
+ refresh_el_win(el);
}
static void drag_data_get(GtkWidget *widget, GdkDragContext *context
Modified: xfcalendar/trunk/src/functions.c
===================================================================
--- xfcalendar/trunk/src/functions.c 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/functions.c 2007-10-08 19:24:38 UTC (rev 26128)
@@ -44,14 +44,15 @@
* General purpose helper functions *
**************************************/
-
gboolean orage_date_button_clicked(GtkWidget *button, GtkWidget *win)
{
GtkWidget *selDate_Window_dialog;
GtkWidget *selDate_Calendar_calendar;
gint result;
char *date_to_display=NULL;
+ /*
struct tm *t;
+ */
struct tm cur_t;
gboolean changed;
@@ -77,15 +78,21 @@
result = gtk_dialog_run(GTK_DIALOG(selDate_Window_dialog));
switch(result){
case GTK_RESPONSE_ACCEPT:
+ /*
gtk_calendar_get_date(GTK_CALENDAR(selDate_Calendar_calendar)
, (guint *)&cur_t.tm_year, (guint *)&cur_t.tm_mon
, (guint *)&cur_t.tm_mday);
cur_t.tm_year -= 1900;
date_to_display = orage_tm_date_to_i18_date(&cur_t);
+ */
+ date_to_display = orage_cal_to_i18_date(selDate_Calendar_calendar);
break;
case 1:
+ /*
t = orage_localtime();
date_to_display = orage_tm_date_to_i18_date(t);
+ */
+ date_to_display = orage_localdate_i18();
break;
case GTK_RESPONSE_DELETE_EVENT:
default:
@@ -167,6 +174,18 @@
return(i18_date);
}
+char *orage_cal_to_i18_date(GtkCalendar *cal)
+{
+ struct tm tm_date = {0,0,0,0,0,0,0,0,0};
+
+ gtk_calendar_get_date(cal
+ , (unsigned int *)&tm_date.tm_year
+ , (unsigned int *)&tm_date.tm_mon
+ , (unsigned int *)&tm_date.tm_mday);
+ tm_date.tm_year -= 1900;
+ return(orage_tm_date_to_i18_date(&tm_date));
+}
+
struct tm orage_icaltime_to_tm_time(const char *icaltime, gboolean real_tm)
{
int i;
@@ -331,6 +350,14 @@
return(localtime(&tt));
}
+char *orage_localdate_i18()
+{
+ struct tm *t;
+
+ t = orage_localtime();
+ return(orage_tm_date_to_i18_date(t));
+}
+
void orage_select_date(GtkCalendar *cal
, guint year, guint month, guint day)
{
Modified: xfcalendar/trunk/src/functions.h
===================================================================
--- xfcalendar/trunk/src/functions.h 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/functions.h 2007-10-08 19:24:38 UTC (rev 26128)
@@ -76,4 +76,8 @@
char *orage_i18_date_to_icaltime(const char *i18_date);
+char *orage_cal_to_i18_date(GtkCalendar *cal);
+
+char *orage_localdate_i18();
+
#endif /* !__ORAGE_FUNCTIONS_H__ */
Modified: xfcalendar/trunk/src/mainbox.c
===================================================================
--- xfcalendar/trunk/src/mainbox.c 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/mainbox.c 2007-10-08 19:24:38 UTC (rev 26128)
@@ -80,7 +80,7 @@
static void
mFile_interface_activate_cb(GtkMenuItem *menuitem, gpointer user_data)
{
- CalWin *cal = (CalWin *) user_data;
+ CalWin *cal = (CalWin *)user_data;
orage_external_interface(cal);
}
@@ -108,16 +108,21 @@
static void
mView_ViewSelectedDate_activate_cb(GtkMenuItem *menuitem, gpointer user_data)
{
- CalWin *cal = (CalWin *) user_data;
- el_win *el;
+ create_el_win(NULL);
+}
- el = create_el_win(NULL);
+static void
+mView_ViewSelectedWeek_activate_cb(GtkMenuItem *menuitem, gpointer user_data)
+{
+ CalWin *cal = (CalWin *)user_data;
+
+ create_day_win(orage_cal_to_i18_date(GTK_CALENDAR(cal->mCalendar)));
}
static void
mView_selectToday_activate_cb(GtkMenuItem *menuitem, gpointer user_data)
{
- CalWin *cal = (CalWin *) user_data;
+ CalWin *cal = (CalWin *)user_data;
orage_select_today(GTK_CALENDAR(cal->mCalendar));
}
@@ -174,9 +179,10 @@
static void
mCalendar_day_selected_double_click_cb(GtkCalendar *cdar, gpointer user_data)
{
- el_win *el;
-
- el = create_el_win(NULL);
+ if (g_par.show_days)
+ create_day_win(orage_cal_to_i18_date(cdar));
+ else
+ create_el_win(NULL);
}
static gboolean
@@ -247,6 +253,9 @@
cal->mView_ViewSelectedDate =
orage_menu_item_new_with_mnemonic(_("View selected _date")
, cal->mView_menu);
+ cal->mView_ViewSelectedWeek =
+ orage_menu_item_new_with_mnemonic(_("View selected _week")
+ , cal->mView_menu);
menu_separator = orage_separator_menu_item_new(cal->mView_menu);
@@ -276,6 +285,8 @@
, G_CALLBACK(mEdit_preferences_activate_cb), NULL);
g_signal_connect((gpointer) cal->mView_ViewSelectedDate, "activate"
, G_CALLBACK(mView_ViewSelectedDate_activate_cb),(gpointer) cal);
+ g_signal_connect((gpointer) cal->mView_ViewSelectedWeek, "activate"
+ , G_CALLBACK(mView_ViewSelectedWeek_activate_cb),(gpointer) cal);
g_signal_connect((gpointer) cal->mView_selectToday, "activate"
, G_CALLBACK(mView_selectToday_activate_cb),(gpointer) cal);
g_signal_connect((gpointer) cal->mHelp_help, "activate"
Modified: xfcalendar/trunk/src/mainbox.h
===================================================================
--- xfcalendar/trunk/src/mainbox.h 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/mainbox.h 2007-10-08 19:24:38 UTC (rev 26128)
@@ -38,6 +38,7 @@
GtkWidget *mEdit_preferences;
GtkWidget *mView_menu;
GtkWidget *mView_ViewSelectedDate;
+ GtkWidget *mView_ViewSelectedWeek;
GtkWidget *mView_selectToday;
GtkWidget *mHelp_menu;
GtkWidget *mHelp_help;
Modified: xfcalendar/trunk/src/parameters.c
===================================================================
--- xfcalendar/trunk/src/parameters.c 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/parameters.c 2007-10-08 19:24:38 UTC (rev 26128)
@@ -96,6 +96,11 @@
GtkWidget *icon_size_frame;
GtkWidget *icon_size_x_spin;
GtkWidget *icon_size_y_spin;
+ /* show event/days window from main calendar */
+ GtkWidget *click_to_show_frame;
+ GSList *click_to_show_radiobutton_group;
+ GtkWidget *click_to_show_days_radiobutton;
+ GtkWidget *click_to_show_events_radiobutton;
/* the rest */
GtkWidget *close_button;
@@ -259,6 +264,14 @@
itf->visibility_minimized_radiobutton));
}
+static void show_changed(GtkWidget *dialog, gpointer user_data)
+{
+ Itf *itf = (Itf *)user_data;
+
+ g_par.show_days = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
+ itf->click_to_show_days_radiobutton));
+}
+
static void sound_application_open_button_clicked(GtkButton *button
, gpointer user_data)
{
@@ -511,6 +524,7 @@
, G_CALLBACK(systray_changed), dialog);
/* how to show when started (show/hide/minimize) */
+ dialog->visibility_radiobutton_group = NULL;
hbox = gtk_hbox_new(TRUE, 0);
dialog->visibility_frame = xfce_create_framebox_with_content(
_("Calendar start") , hbox);
@@ -612,10 +626,10 @@
/***** tray icon size (0 = use static icon) *****/
vbox = gtk_vbox_new(FALSE, 0);
- dialog->ical_weekstartday_frame = xfce_create_framebox_with_content(
+ dialog->icon_size_frame = xfce_create_framebox_with_content(
_("Dynamic icon size"), vbox);
gtk_box_pack_start(GTK_BOX(dialog->extra_vbox)
- , dialog->ical_weekstartday_frame, FALSE, FALSE, 5);
+ , dialog->icon_size_frame, FALSE, FALSE, 5);
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
@@ -644,6 +658,41 @@
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
g_signal_connect(G_OBJECT(dialog->icon_size_y_spin), "value-changed"
, G_CALLBACK(icon_size_y_spin_changed), dialog);
+
+ /***** Start event or day window from main calendar *****/
+ dialog->click_to_show_radiobutton_group = NULL;
+ hbox = gtk_vbox_new(FALSE, 0);
+ dialog->click_to_show_frame = xfce_create_framebox_with_content(
+ _("Main Calendar double click shows"), hbox);
+ gtk_box_pack_start(GTK_BOX(dialog->extra_vbox)
+ , dialog->click_to_show_frame, FALSE, FALSE, 5);
+
+ dialog->click_to_show_days_radiobutton =
+ gtk_radio_button_new_with_mnemonic(NULL, _("Days view"));
+ gtk_box_pack_start(GTK_BOX(hbox)
+ , dialog->click_to_show_days_radiobutton, FALSE, FALSE, 0);
+ gtk_radio_button_set_group(
+ GTK_RADIO_BUTTON(dialog->click_to_show_days_radiobutton)
+ , dialog->click_to_show_radiobutton_group);
+ dialog->click_to_show_radiobutton_group = gtk_radio_button_get_group(
+ GTK_RADIO_BUTTON(dialog->click_to_show_days_radiobutton));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
+ dialog->click_to_show_days_radiobutton), g_par.show_days);
+
+ dialog->click_to_show_events_radiobutton =
+ gtk_radio_button_new_with_mnemonic(NULL, _("Event list"));
+ gtk_box_pack_start(GTK_BOX(hbox)
+ , dialog->click_to_show_events_radiobutton, FALSE, FALSE, 0);
+ gtk_radio_button_set_group(
+ GTK_RADIO_BUTTON(dialog->click_to_show_events_radiobutton)
+ , dialog->click_to_show_radiobutton_group);
+ dialog->click_to_show_radiobutton_group = gtk_radio_button_get_group(
+ GTK_RADIO_BUTTON(dialog->click_to_show_events_radiobutton));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
+ dialog->click_to_show_events_radiobutton), !g_par.show_days);
+
+ g_signal_connect(G_OBJECT(dialog->click_to_show_days_radiobutton),
"toggled"
+ , G_CALLBACK(show_changed), dialog);
}
Itf *create_parameter_dialog()
@@ -652,8 +701,6 @@
dialog = g_new(Itf, 1);
- dialog->visibility_radiobutton_group = NULL;
-
dialog->orage_dialog = xfce_titled_dialog_new();
gtk_window_set_default_size(GTK_WINDOW(dialog->orage_dialog), 300, 350);
gtk_window_set_title(GTK_WINDOW(dialog->orage_dialog)
@@ -688,9 +735,11 @@
g_signal_connect(G_OBJECT (dialog->orage_dialog), "response"
, G_CALLBACK(dialog_response), NULL);
+ gtk_widget_show_all(dialog->orage_dialog);
+ /*
gdk_x11_window_set_user_time(GTK_WIDGET(dialog->orage_dialog)->window,
gdk_x11_get_server_time(GTK_WIDGET(dialog->orage_dialog)->window));
- gtk_widget_show_all(dialog->orage_dialog);
+ */
return(dialog);
}
@@ -733,6 +782,7 @@
xfce_rc_write_int_entry(rc, "Dynamic icon X", g_par.icon_size_x);
xfce_rc_write_int_entry(rc, "Dynamic icon Y", g_par.icon_size_y);
xfce_rc_write_int_entry(rc, "Ical week start day",
g_par.ical_weekstartday);
+ xfce_rc_write_bool_entry(rc, "Show days", g_par.show_days);
xfce_rc_write_int_entry(rc, "Foreign file count", g_par.foreign_count);
for (i = 0; i < g_par.foreign_count; i++) {
g_sprintf(f_par, "Foreign file %02d name", i);
@@ -804,6 +854,7 @@
g_par.icon_size_y = xfce_rc_read_int_entry(rc, "Dynamic icon Y", 32);
g_par.ical_weekstartday =
xfce_rc_read_int_entry(rc, "Ical week start day", 0); /* monday */
+ g_par.show_days = xfce_rc_read_bool_entry(rc, "Show days", FALSE);
g_par.foreign_count =
xfce_rc_read_int_entry(rc, "Foreign file count", 0);
for (i = 0; i < g_par.foreign_count; i++) {
Modified: xfcalendar/trunk/src/parameters.h
===================================================================
--- xfcalendar/trunk/src/parameters.h 2007-10-06 17:00:21 UTC (rev 26127)
+++ xfcalendar/trunk/src/parameters.h 2007-10-08 19:24:38 UTC (rev 26128)
@@ -85,6 +85,9 @@
/* event-list window */
gint el_size_x, el_size_y;
+
+ /* show days window from main calendar */
+ gboolean show_days; /* true=show days false=show events */
} global_parameters; /* global parameters */
#ifdef ORAGE_MAIN
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits