📄 calender-opts.c
字号:
static char tmp[40]; memset (&time, 0, sizeof (struct tm)); time.tm_hour=hour; time.tm_min=min; strftime (tmp, 20, "%I:%M %p", &time); return tmp;}char *event_date_to_char (EventTime *time) { static char tmp[60]; g_return_val_if_fail (time != NULL, NULL); snprintf (tmp, 59, "Week Starting %d/%d/%d", time->month+1, time->date+1, time->year); return tmp;}void calendar_rehash () { GtkWidget *widget=calendar_get_widget (); GtkCalendar *cal=GTK_CALENDAR (lookup_widget (widget, "daily_calendar")); Schedule *schedule=SCHEDULE (lookup_widget (widget, "schedule")); CalendarEvent *event; guint year, month, date; Llist *seek; EventTime *time=(EventTime *)calloc (1, sizeof (EventTime)); time_t upper; schedule_destroy_children (SCHEDULE (lookup_widget (widget, "schedule"))); g_return_if_fail (widget != NULL); gtk_calendar_get_date (cal, &year, &month, &date); time->year=year; time->month=month; time->date=date; upper=event_time_to_time_t (time); free (time); schedule_set_upper (schedule, upper); for (seek=event_first ();seek;seek=seek->next) { event=seek->data; if (event->start && event->stop) { if (event->start->year == year && event->start->month == month) { gtk_calendar_mark_day (GTK_CALENDAR (lookup_widget (widget, "daily_calendar")), event->start->date); if (event->start->date == date) { schedule_add_child (SCHEDULE (lookup_widget (widget, "schedule")), event->subject, event->start->time, event->stop->time, event); } } } }}int month_string_to_int (char *string) { if (!string) return -1; if (strcasecmp (string, "january")==0 || strcasecmp (string, "jan")==0) return 0; if (strcasecmp (string, "february")==0 || strcasecmp (string, "feb")==0) return 1; if (strcasecmp (string, "march")==0 || strcasecmp (string, "mar")==0) return 2; if (strcasecmp (string, "april")==0 || strcasecmp (string, "apr")==0) return 3; if (strcasecmp (string, "may")==0) return 4; if (strcasecmp (string, "june")==0 || strcasecmp (string, "jun")==0) return 5; if (strcasecmp (string, "july")==0 || strcasecmp (string, "jul")==0) return 6; if (strcasecmp (string, "august")==0 || strcasecmp (string, "aug")==0) return 7; if (strcasecmp (string, "september")==0 || strcasecmp (string, "sep")==0) return 8; if (strcasecmp (string, "october")==0 || strcasecmp (string, "oct")==0) return 9; if (strcasecmp (string, "november")==0 || strcasecmp (string, "nov")==0) return 10; if (strcasecmp (string, "december")==0 || strcasecmp (string, "dec")==0) return 11; return -1;}int year_string_to_int (char *string) { if (!string) return -1; return atoi (string);}void calendar_dump () { Llist *seek, *tmp; CalendarEvent *event; for (seek=event_list;seek;seek=seek->next) { event=seek->data; if (!event_validate (event)) { tmp=seek->next; if (tmp) { event_list=llist_remove_by_node (tmp->prev); return; } } }}int event_validate (CalendarEvent *event) { if (!event) return FALSE; if (!event->start) return FALSE; if (!event->stop) return FALSE; /* Make sure it doesn't start after it's already ended. */ if( (event -> start -> time) > (event -> stop -> time) ) return FALSE ; return TRUE;}void event_dump (CalendarEvent *event) {#if DEBUG > 7 Llist *att; EventAttendee *attend; if (!event_validate (event)) { printf ("Cannot validate this event. It is null\n"); } printf ("----------------\n"); printf ("event: %p\n", event); printf ("event->start: %p event->stop: %p\n", event->start, event->stop); if (event->start) printf ("starttime: %lu\n", event->start->time); if (event->stop) printf ("stoptime: %lu\n", event->stop->time); printf ("event->information: %s <%p>\n", event->information, event->information); printf ("event->location: %s <%p>\n", event->location, event->location); printf ("event->uid: %s <%p>\n", event->uid, event->uid); for (att=event->attendees;att;att=att->next) { attend=att->data; if (attend->name) printf ("Attendee: %s\n", attend->name); }#endif}void event_clear (CalendarEvent *event) { Llist *att; EventAttendee *attend; event_dump (event); if (event) { if (event->start) free (event->start); if (event->stop) free (event->stop); if (event->created) free (event->created); if (event->subject) free (event->subject); if (event->location) free (event->location); if (event->information) free (event->information); if (event->uid) free (event->uid); if (event->from) free (event->from); if (event->program) free (event->program); llist_blow_away_and_destroy (event->categories); for (att=event->attendees;att;att=att->next) { attend=att->data; if (attend->name) free (attend->name); } llist_blow_away_and_destroy (event->attendees); free( event ) ; }}void event_destroy_all () {// CalendarEvent *event;// EventAttendee *attend; Llist *seek; for (seek=event_first ();seek;seek=seek->next) {// event=seek->data; event_clear (seek->data);/* event_dump (event); if (event) { if (event->start) free (event->start); if (event->stop) free (event->stop); if (event->created) free (event->created); if (event->subject) free (event->subject); if (event->information) free (event->information); if (event->location) free (event->location); if (event->uid) free (event->uid); llist_blow_away_and_destroy (event->categories); for (att=event->attendees;att;att=att->next) { attend=att->data; if (attend->name) free (attend->name); } llist_blow_away_and_destroy (event->attendees); }*/ seek->data=NULL; } llist_blow_away_and_destroy (event_list); event_list=NULL;}Llist *categories=NULL;Llist *event_get_categories () { if (!categories) { int i; char **cat=event_get_master_categories (); for (i=0;i<NUM_CATEGORIES-1;i++) { categories=llist_append (categories, strdup (cat[i])); } } return categories;}void event_add_category (char *category) { if (!category) return; categories=llist_append (categories, strdup (category));}void event_remove_category (char *category) { Llist *seek; for (seek=categories;seek;seek=seek->next) { }}char *event_categories_to_char (Llist *cats) { Llist *seek; char *tmpc; int len=0; for (seek=cats;seek;seek=seek->next) { len+=strlen ((char *)seek->data)+2; } len+=5; tmpc=(char *)calloc (len, sizeof (char)); for (seek=cats;seek;seek=seek->next) { if (seek->prev) sprintf (tmpc, "%s; %s", tmpc, (char *)seek->data); else sprintf (tmpc, "%s", (char *)seek->data); } return tmpc;}void event_time_dump (EventTime *time) {#if DEBUG > 6 g_return_if_fail (time != NULL); printf ("EventTime Dump\n**************\n"); printf (" year : %d\n", time->year); printf (" month : %d\n", time->month+1); // printf (" date : %d\n", time->date+1); // printf (" hour : %d\n", time->hour); printf (" minute : %d\n", time->minute); printf (" time_t time: %lu\n", (unsigned long)time->time); printf ("EventTime Dump End\n");#endif}GList *todo_list=NULL;GList *todo_first () { return todo_list; }Todo *todo_new () { Todo *todo=(Todo *)calloc (1, sizeof (Todo)); todo_list=g_list_append (todo_list, todo); return todo;};void todo_delete (Todo *todo) { if (todo->text) free (todo->text); if (todo->due) free (todo->due); todo_list=g_list_remove (todo_list, todo); free (todo);}Todo *todo_find_from_tree (GtkWidget *treeitem) { GList *seek; for (seek=todo_list;seek;seek=seek->next) { Todo *todo=seek->data; if (todo->treeitem==treeitem) { return todo; } } return NULL;}void todo_destroy_all () { GList *seek; for (seek=todo_list;seek;seek=seek->next) { Todo *todo=seek->data; if (todo->text) free (todo->text); if (todo->due) free (todo->due); free (todo); } g_list_free (todo_list); todo_list=NULL;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -