⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calender-callbacks.c

📁 一个功能全面的电子邮件客户端
💻 C
📖 第 1 页 / 共 4 页
字号:
	  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 + -