GtkWidget *browse_buttons, *event_buttons, *move_buttons, *move_event;
GtkWidget *timer_display, *time_display;
GtkWidget *today_btn, *undelete_btn;
+GtkWidget *once_btn, *weekly_btn, *fort_btn, *freq_buttons;
GtkWidget *timers_list;
GtkTextBuffer *reason_buffer;
time_t dlist[42], chosen_date;
int prev_mday, hour, minute;
+int freq;
struct event *evlist, *active_event;
struct event *deleted_event;
gtk_container_add(GTK_CONTAINER(window), clockw);
}
+void update_freq(void);
void events_move(void)
{
if (!active_event)
return;
moving = 1;
+ freq = active_event->recur;
set_cal(active_event->when);
gtk_widget_hide(event_buttons);
gtk_widget_show(move_buttons);
+ update_freq();
+ gtk_widget_show(freq_buttons);
gtk_widget_hide(alarm_selector->drawing);
gtk_widget_show(move_event);
void events_new(void)
{
- gtk_text_buffer_set_text(reason_buffer, "New Event", -1);
- move_confirm();
+ moving = 2;
+ freq = 0;
+ gtk_widget_hide(event_buttons);
+ gtk_widget_hide(browse_buttons);
+ gtk_widget_show(move_buttons);
+ update_freq();
+ gtk_widget_show(freq_buttons);
+
+ gtk_widget_hide(alarm_selector->drawing);
+ gtk_widget_show(move_event);
+ gtk_text_buffer_set_text(reason_buffer, "", -1);
}
void move_abort(void)
{
gtk_widget_hide(move_buttons);
+ gtk_widget_hide(freq_buttons);
if (active_event) {
gtk_widget_hide(browse_buttons);
gtk_widget_show(event_buttons);
gtk_container_add(GTK_CONTAINER(window), cal);
}
+void reason_confirm(void);
void clock_confirm(void)
{
gtk_container_remove(GTK_CONTAINER(window), clockw);
gtk_container_add(GTK_CONTAINER(window), reasonw);
+ reason_confirm();
+}
+
+void update_freq(void)
+{
+ if (freq == 0)
+ gtk_label_set_markup(GTK_LABEL(GTK_BIN(once_btn)->child), "<span background=\"pink\">Once</span>");
+ else
+ gtk_label_set_markup(GTK_LABEL(GTK_BIN(once_btn)->child), "Once");
+
+ if (freq == 7*24*3600)
+ gtk_label_set_markup(GTK_LABEL(GTK_BIN(weekly_btn)->child), "<span background=\"pink\">Weekly</span>");
+ else
+ gtk_label_set_markup(GTK_LABEL(GTK_BIN(weekly_btn)->child), "Weekly");
+
+ if (freq == 14*24*3600)
+ gtk_label_set_markup(GTK_LABEL(GTK_BIN(fort_btn)->child), "<span background=\"pink\">Fortnightly</span>");
+ else
+ gtk_label_set_markup(GTK_LABEL(GTK_BIN(fort_btn)->child), "Fortnightly");
+}
+void set_once(void)
+{
+ freq = 0;
+ update_freq();
+}
+void set_weekly(void)
+{
+ freq = 7 * 24 * 3600;
+ update_freq();
+}
+void set_fort(void)
+{
+ freq = 14 * 24 * 3600;
+ update_freq();
}
/********************************************************************/
tm = localtime(&chosen_date);
today = *tm;
for (i=0; ev ; i++, ev = ev->next) {
- char buf[50], o, c;
+ char buf[50], o, c, r;
struct tm *tm = localtime(&ev->when);
if (tm->tm_mday == today.tm_mday &&
tm->tm_mon == today.tm_mon &&
o = '(';
c = ')';
}
+ if (ev->recur == 0)
+ r = ' ';
+ else if (ev->recur == 3600*24*7)
+ r = '+'; /* weekly */
+ else if (ev->recur == 3600*24*14)
+ r = '*'; /* fortnightly */
+ else
+ r = '#'; /* other period */
asprintf(&alarm_entries[i].text, "%c%c %s %s%c",
- o,
- ev->recur ? '*' : ' ',
+ o, r,
buf, ev->mesg, c);
alarm_entries[i].bg = "white";
alarm_entries[i].fg = "blue";
move_buttons = blist;
+ blist = NULL;
+ once_btn = add_button(&blist, "Once", desc, set_once);
+ weekly_btn = add_button(&blist, "Weekly", desc, set_weekly);
+ fort_btn = add_button(&blist, "Fortnightly", desc, set_fort);
+ gtk_widget_hide(blist);
+ gtk_box_pack_end(GTK_BOX(v), blist, FALSE, FALSE, 0);
+ freq_buttons = blist;
+
return v;
}
void set_cal(time_t then)
{
- struct tm now, first, *tm;
+ struct tm now, first, today, *tm;
int d, x;
+ time_t today_s;
char buf[400];
+ time(&today_s);
+ localtime_r(&today_s, &today);
localtime_r(&then, &now);
then -= now.tm_sec;
}
for (d=0; d<42; d++) {
- char *bg = "", *fg = "black";
+ char *bg = "", *fg = "black", *today_fg = "blue";
- if (tm->tm_mon != now.tm_mon)
- fg = "grey";
- else if (tm->tm_mday == now.tm_mday)
+ if (tm->tm_mon != now.tm_mon) {
+ fg = "grey"; today_fg = "pink";
+ } else if (tm->tm_mday == now.tm_mday)
bg = "background=\"green\"";
+
+ if (tm->tm_year == today.tm_year &&
+ tm->tm_mon == today.tm_mon &&
+ tm->tm_mday == today.tm_mday)
+ fg = today_fg;
+
sprintf(buf, "<span %s foreground=\"%s\"> %02d </span>",
bg, fg, tm->tm_mday);
if (abs(dlist[d] - then) > 48*3600 ||
if (!active_event) {
ev = malloc(sizeof(*ev));
- ev->recur = 0;
ev->next = evlist;
evlist = ev;
} else {
ev = active_event;
free(ev->mesg);
}
+ ev->recur = freq;
ev->when = ev->first = chosen_date + hour*3600 + minute*60;
gtk_text_buffer_get_bounds(reason_buffer, &start, &finish);
ev->mesg = gtk_text_buffer_get_text(reason_buffer,