📄 calender-callbacks.c
字号:
fprintf (fd, "\n\nYearly Calendar for %s\n", getenv("USER")); /* write to file */ fprintf (fd, "--------------------\n\n"); event_get_today(&curyear, &curmonth, &curday); while (cseek != NULL) /* go threw entire list until EOF */ { event=(CalendarEvent *)cseek->data; tmp=rm_crlf (event->subject); schedule_add_child (SCHEDULE (lookup_widget (calendar_window, "schedule")), tmp, event->start->time, event->stop->time, event); free (tmp); if (event->start->year == printyear) /* if event year equal to selected year */ { fprintf (fd, "Date: %d/%d/%d\n", event->start->month+1, event->start->date, event->start->year); if (event->start->hour <= 11) /* if start hour less than or equal to 11 */ am_or_pm = 'a'; /* place a in am or pm */ else { event->start->hour -= 12; /* if start hour greater than or equal to 12 */ am_or_pm = 'p'; /* place p in am or pm */ } if (event->stop->hour <= 11) /* if stop hour less than or equal to 11 */ am_or_pm2 = 'a'; /* place a in am or pm */ else { event->stop->hour -= 12; /* if stop hour greater than or equal to 12 */ am_or_pm2 = 'p'; /* place p in am or pm */ } if (event->start->hour == 0) /* if start hour equal to zero */ event->start->hour = 12; /* hour equals 12 */ if (event->stop->hour == 0) /* if stop hour equal to zero */ event->stop->hour = 12; /* hour equals 12 */ fprintf (fd, "Time: Start: %d:%.2d%c End: %d:%.2d%c\n", event->start->hour, event->start->minute, am_or_pm, event->stop->hour, event->stop->minute, am_or_pm2); /* write to file */ fprintf (fd, "Location: %s\n", event->location); /* write to file */ fprintf (fd, "Subject: %s\n", event->subject); /* write to file */ fprintf (fd, "Information: %s\n\n\n", event->information); /* write to file */ } cseek=cseek->next; /* get next on list */ } } break; /* break */ } fclose (fd); /* close file */ sprintf (tmpname, "%s %s", tm_globs->printer, tmpfilename); /* send file to print */ system (tmpname); unlink(tmpfilename); /* free file */ insert_message ("Done !\n"); /* insert message to user */}void calendar_show () { if (!GTK_IS_WIDGET (calendar_window)) { guint year, month, date; event_get_today (&year, &month, &date); main_calendar_create (); gtk_widget_show (calendar_window); calendar_rehash (); } event_get_today (&curyear, &curmonth, &curday); gtk_widget_show (calendar_window);}void calendar_new_event (GtkWidget *widget, gpointer data) { GtkWidget *window=NULL; int type=(int)data; int year=0, month=0, date=0; switch (current_view) { case CALENDAR_VIEW_TODO: break; case CALENDAR_VIEW_DAILY: year=GTK_CALENDAR (lw (calendar_window, "daily_calendar"))->year; month=GTK_CALENDAR (lw (calendar_window, "daily_calendar"))->month; date=GTK_CALENDAR (lw (calendar_window, "daily_calendar"))->selected_day; break; case CALENDAR_VIEW_WORK: year=GTK_CALENDAR (lw (calendar_window, "calendar2"))->year; month=GTK_CALENDAR (lw (calendar_window, "calendar2"))->month; date=GTK_CALENDAR (lw (calendar_window, "calendar2"))->selected_day; break; case CALENDAR_VIEW_WEEK: year=GTK_CALENDAR (lw (calendar_window, "weekly_calendar"))->year; month=GTK_CALENDAR (lw (calendar_window, "weekly_calendar"))->month; date=GTK_CALENDAR (lw (calendar_window, "weekly_calendar"))->selected_day; break; case CALENDAR_VIEW_MONTH: year=GTK_CALENDAR (lw (calendar_window, "calendar2"))->year; month=GTK_CALENDAR (lw (calendar_window, "calendar2"))->month; date=GTK_CALENDAR (lw (calendar_window, "calendar2"))->selected_day; break; case CALENDAR_VIEW_YEAR: year=GTK_CALENDAR (lw (calendar_window, "calendar2"))->year; month=GTK_CALENDAR (lw (calendar_window, "calendar2"))->month; date=GTK_CALENDAR (lw (calendar_window, "calendar2"))->selected_day; break; } switch (type) { case 1: window=calendar_event_new_window (_("Meeting Request"), year, month, date); break; case 2: window=calendar_event_new_window (_("Appointment"), year, month, date); break; default: } gtk_widget_show (window);}void calendar_daycal_day_selected (GtkCalendar *cal) { if (cal->month != curmonth || cal->year != curyear || cal->selected_day != curday) { Schedule *schedule=SCHEDULE (lookup_widget (calendar_window, "schedule")); Llist *seek=event_first (); EventTime time; time_t upper; char *tmp; CalendarEvent *event; calendar_dump (); curmonth=time.month=cal->month; curyear=time.year=cal->year; curday=time.date=cal->selected_day; time.minute=0; time.hour=0; upper=event_time_to_time_t (&time); schedule_destroy_children (schedule); schedule_set_upper (schedule, upper); while (seek) { event=seek->data; if (event->start->month == cal->month && event->start->year == cal->year && event->start->date == cal->selected_day) { tmp=rm_crlf (event->subject); schedule_add_child (SCHEDULE (lookup_widget (calendar_window, "schedule")), tmp, event->start->time, event->stop->time, event); free (tmp); } seek=seek->next; } }}void calendar_daycal_month_changed (GtkCalendar *cal) { Llist *seek=event_first (); CalendarEvent *event; guint year, month, day; guint tyear, tmonth, tday; gtk_calendar_freeze (cal); gtk_calendar_clear_marks (cal); gtk_calendar_get_date (cal, &year, &month, &day); event_get_today (&tyear, &tmonth, &tday); if (year==tyear && month==tmonth) { gtk_calendar_mark_day (cal, tday); }/* while (seek) {*/ for (seek=event_first ();seek;seek=seek->next) { event=(CalendarEvent *)seek->data; if (event->start) { if (event->start->month==month && event->start->year==year) { gtk_calendar_mark_day (cal, event->start->date); } }/* seek=seek->next;*/ } gtk_calendar_thaw (cal);}void calendar_event_destroy (GtkWidget *widget, gpointer data) { gtk_widget_destroy (lookup_widget (widget, "event_editor")); calendar_event_loop();}void calendar_event_accept (GtkWidget *widget, gpointer data) { GtkTree *tree=GTK_TREE (lookup_widget (widget, "attendee_tree")); CalendarEvent *event=(CalendarEvent *)data; CalendarEvent *tmpevent; GtkWidget *scratch; Llist *list=NULL; GList *seek; int edit_flag=0; time_t start, end; EventAttendee *attend; GtkBoxChild *child; EventTime *starttime=gtk_to_event_time (GTK_ENTRY (lookup_widget (widget, "startyear")), GTK_ENTRY (lookup_widget (widget, "startmonth")), GTK_ENTRY (lookup_widget (widget, "startdate")), GTK_ENTRY (lookup_widget (widget, "starttime"))); EventTime *endtime=gtk_to_event_time (GTK_ENTRY (lookup_widget (widget, "endyear")), GTK_ENTRY (lookup_widget (widget, "endmonth")), GTK_ENTRY (lookup_widget (widget, "enddate")), GTK_ENTRY (lookup_widget (widget, "endtime"))); char *subject=gtk_entry_get_text (GTK_ENTRY (lookup_widget (widget, "subject"))); char *info=gtk_editable_get_chars (GTK_EDITABLE (lookup_widget (widget, "information")), 0, gtk_text_get_length (GTK_TEXT (lookup_widget (widget, "information")))); char *location=gtk_entry_get_text (GTK_ENTRY (lookup_widget (widget, "location"))); char *categories=gtk_entry_get_text (GTK_ENTRY (lookup_widget (widget, "entry9"))); char *tmp2, *tmp; int i; tmp2=rm_crlf (info); g_free (info); info=tmp2; if (!starttime) { insert_warning (_("The event starting time is invalid\n")); event_time_destroy (endtime); return; } if (!endtime) { insert_warning (_("The event ending time is invalid\n")); event_time_destroy (starttime); return; } start=event_time_to_time_t (starttime); end=event_time_to_time_t (endtime); starttime->time=start; endtime->time=end; if (start==-1 || end==-1) { insert_warning (_("TradeClient is not Y2038 Compliant due to OS restrictions\n")); event_time_destroy (starttime); event_time_destroy (endtime); return; } if (end<=start) { insert_warning (_("You can't have an event which ends before it begins!\n")); event_time_destroy (starttime); event_time_destroy (endtime); return; } if ((tmpevent=event_find_conflict (start, end))!=NULL) { if (tmpevent!=data) { insert_warning (_("This event conflicts with event '%s' located at '%s' from %s to %s\n"), tmpevent->subject, tmpevent->location, ctime (&tmpevent->start->time), ctime (&tmpevent->stop->time)); } } if (strlen (subject)==0) { insert_warning (_("The subject line is blank\n")); event_time_destroy (starttime); event_time_destroy (endtime); return; } if (strlen (location)==0) { insert_warning (_("The location line is blank\n")); event_time_destroy (starttime); event_time_destroy (endtime); return; } if (strlen (info)==0) { insert_warning( _("Please let everyone know what the meeting is about\n") ) ; event_time_destroy (starttime); event_time_destroy (endtime); return; } if (!tree->children) { /* this message is redundant and should not be here */#if 0 insert_message( _("This must be a personal event\n") );#endif } else { for (seek=tree->children;seek;seek=seek->next) { scratch=(GtkWidget *)seek->data; attend=(EventAttendee *)calloc (1, sizeof (EventAttendee)); scratch=GTK_BIN (scratch)->child; child=GTK_BOX (scratch)->children->next->data; attend->name=strdup (gtk_entry_get_text (GTK_ENTRY (child->widget))); if (strlen (attend->name)>0) { child=GTK_BOX (scratch)->children->next->next->data;#if DEBUG > 3 printf( "Looking for '%s' in address book.\n", attend->name ) ;#endif attend->entry=abook_entry_seek_by_name (NULL, attend->name);#if 0 /* * So what if the entry isn't there, we've got an email, we're going * to go ahead and add then! */ if (!attend->entry) {#if DEBUG > 3 printf( _("Unable to find '%s' in any of the address books. Name is being dropped.\n" ), attend->name ) ;#endif insert_warning( _("Unable to find '%s' in any of the address books.\n"), attend->name ) ;#if 0 return;#else if( attend -> name ) free( attend -> name ) ; free( attend ) ;#endif } else {#endif tmp=gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (child->widget)->entry)); if (strcasecmp (tmp, _("Required"))==0) attend->priority=PRIORITY_MANDATORY; if (strcasecmp (tmp, _("Optional"))==0) attend->priority=PRIORITY_OPTIONAL; if (strcasecmp (tmp, _("Resource"))==0) attend->priority=PRIORITY_RESOURCE; if (strcasecmp (tmp, _("Organizer"))==0) attend->priority = PRIORITY_ORGANIZER; if (list) llist_append (list, attend); else list=llist_append (NULL, attend);#if 0 /*(comment out because the if else is commented out) */ }#endif } else { free (attend); } } } if (!event) { event=event_new (); event->created=(EventTime *)calloc (1, sizeof (EventTime)); event->created->time=time (NULL); // event->uid=unique_name (time (NULL), 25); event->uid=(char *)calloc (1, sizeof (char)); event->sequence=-1; if (starttime->year == curyear && starttime->month == curmonth && starttime->date == curday) { tmp2=rm_crlf (subject); schedule_add_child (SCHEDULE (lookup_widget (calendar_window, "schedule")), tmp2, start, end, event); free (tmp2); } edit_flag=FALSE; } else { edit_flag=TRUE; event_store_delete (event); } if (event->start) free (event->start); event->start=starttime; if (event->stop) free (event->stop); event->stop=endtime; event->subject=strdup (subject); event->location=strdup (location); event->information=info; event->attendees=list; if (!event->created) event->created=time_t_to_event_time (time (NULL)); event->reminder=-1; if (GTK_TOGGLE_BUTTON (lookup_widget (widget, "remind_me"))->active) { event->reminder=atoi (gtk_entry_get_text (GTK_ENTRY (lookup_widget (widget, "remind_duration")))); } else { event->reminder=0; } if (GTK_TOGGLE_BUTTON(lookup_widget (widget,"spawn_button"))->active){ event->program=strdup(gtk_entry_get_text (GTK_ENTRY (lookup_widget (widget, "spawn_entry")))); } else { event->program=strdup(""); } if (GTK_TOGGLE_BUTTON (lookup_widget (widget, "send_invitations"))->active) { event->flags |=EVENT_INVITE_RECIP; } if (GTK_TOGGLE_BUTTON (lookup_widget (widget, "recur_event"))->active) { event->flags |=EVENT_RECUR; } if (GTK_TOGGLE_BUTTON (lookup_widget (widget, "all_day_event"))->active) { event->flags |=EVENT_ALL_DAY; } event->sequence++; list=NULL; if (strlen (categories) > 0) { if ((count_delimiters (categories, ';')+1)>1) { tmp=cut_string (categories, ';', 1, 1); list=llist_append (list, tmp); for (i=1;i < (count_delimiters (categories, ';') + 1);i++) { tmp2=cut_string (categories, ';', 2, i); if (i < count_delimiters (categories, ';')) { tmp=cut_string (tmp2, ';', 1, 1); } else { tmp=strdup (tmp2); } if (*tmp==' ') { memmove (tmp, tmp+1, strlen (tmp)-1); *(tmp+strlen (tmp)-1)='\0'; } list=llist_append (list, tmp); free (tmp2); } } else list=llist_append (list, strdup (categories)); } tmp=gt (widget, "mark_me_as"); if (!strcasecmp (tmp, "Free")) event->status=STATUS_FREE; if (!strcasecmp (tmp, "Tentative")) event->status=STATUS_TENTATIVE; if (!strcasecmp (tmp, "Busy")) event->status=STATUS_BUSY; if (!strcasecmp (tmp, "Out of Office")) event->status=STATUS_OUT_OF_OFFICE; event->categories=list; if (edit_flag==TRUE) calendar_rehash (); event_display (event);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -