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

📄 calender-opts.c

📁 一个功能全面的电子邮件客户端
💻 C
📖 第 1 页 / 共 2 页
字号:
/* TradeClient <http://tradeclient.sourceforge.net> * $Id: calender-opts.c,v 1.12 2001/03/20 22:19:33 ttabner Exp $ * * Copyright (C) 1999-2000 Bynari Inc. * Copyright (C) 2001 Project TradeClient * * LGPL * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Library General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library * General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include "puma.h"#include <time.h>#include "tcal.h"GList *event_store=NULL;Llist *event_list=NULL;GList *event_store_get () {	return event_store;}void event_store_destroy_all () {	GList *gseek;	for (gseek=event_store;gseek;gseek=gseek->next) {		GtkTCalEvent *event=gseek->data;		free (event);	}	g_list_free (event_store);	event_store=NULL;}void event_store_rehash () {	Llist *lseek;	GList *gseek;	GtkTCalEvent *event;#if 1	for (gseek=event_store_get();gseek;gseek=gseek->next) {		event=gseek->data;		free (event);	}	g_list_free (event_store_get());	event_store=NULL;#else	event_store_destroy_all ();#endif	for (lseek=event_list;lseek;lseek=lseek->next) {		CalendarEvent *event=lseek->data;		GtkTCalEvent *tce=(GtkTCalEvent *)calloc (1, sizeof (GtkTCalEvent));#if 1		tce->summary=event->information;		tce->subject=event->subject;		tce->year=event->start->year;		tce->month=event->start->month;		tce->date=event->start->date;		tce->user_data=event;		event_store=g_list_append (event_store, tce);#else	event_store_add (event);#endif	}}void event_store_add (CalendarEvent *event) {	GtkTCalEvent *tce=(GtkTCalEvent *)calloc (1, sizeof (GtkTCalEvent));	tce->summary=strdup (event->information);	tce->subject=strdup (event->subject);	tce->year=event->start->year;	tce->month=event->start->month;	tce->date=event->start->date;	tce->user_data=event;	event_store=g_list_append (event_store, tce);	}void event_store_delete (CalendarEvent *evnt) {	GList *seek;	for (seek=event_store;seek;seek=seek->next) {		GtkTCalEvent *event=seek->data;		if (event->user_data==evnt) {			event_store=g_list_remove (event_store, event);			free (event);			return;		}	}}void event_get_today (guint *year, guint *month, guint *day) {	time_t t=time (NULL);	struct tm *tm_time=localtime (&t);	*year=tm_time->tm_year+1900;	*month=tm_time->tm_mon;	*day=tm_time->tm_mday;}Llist *event_first () {	calendar_dump ();	return event_list;}CalendarEvent *event_new () {  CalendarEvent *retevent=(CalendarEvent *)calloc (1, sizeof (CalendarEvent));  if (event_list) {    event_list = llist_append (event_list, retevent);  } else {    event_list = llist_append (NULL, retevent);  }  return retevent;}void event_add (CalendarEvent *event) {  g_return_if_fail (event != NULL);  g_return_if_fail (event->start != NULL);  g_return_if_fail (event->stop != NULL);  if (event_list) {    event_list = llist_append (event_list, event);  } else {    event_list = llist_append (NULL, event);  }}void event_destroy (CalendarEvent *event) {	if (llist_seek (event_list, event)) {		event_list=llist_detach (event_list, event);	}}void calendar_rehash_daily () {}void calendar_rehash_weekly () {}void event_time_destroy (EventTime *time) {	if (!time)		return;	free (time);}time_t event_time_to_time_t (EventTime *time) {	struct tm *thetime=(struct tm *)calloc (1, sizeof (struct tm));	time_t newtime;	if (!time)		return (time_t)0;	thetime->tm_min=time->minute;	thetime->tm_hour=time->hour;	thetime->tm_mon=time->month;	thetime->tm_mday=time->date;	thetime->tm_year=time->year-1900;	thetime->tm_isdst=-1;	newtime=mktime (thetime);	free (thetime);	return newtime;}EventTime *time_t_to_event_time (time_t time) {	struct tm *thetime=localtime (&time);	EventTime *ev_time=(EventTime *)calloc (1, sizeof (EventTime));	ev_time->year=thetime->tm_year+1900;	ev_time->month=thetime->tm_mon;	ev_time->date=thetime->tm_mday;	ev_time->hour=thetime->tm_hour;	ev_time->minute=thetime->tm_min;	ev_time->time=time;	return ev_time;}EventTime *gtk_to_event_time (GtkEntry *yeare, GtkEntry *monthe, GtkEntry *datee, GtkEntry *timee) {	char *year=(gtk_entry_get_text (yeare));	char *month=(gtk_entry_get_text (monthe));	char *date= (gtk_entry_get_text (datee));	char *time= (gtk_entry_get_text (timee));	char *tmp;	EventTime *etime=(EventTime *)calloc (1, sizeof (EventTime));	etime->year=atoi (year);	etime->date=atoi (date);	etime->month=month_string_to_int (month);	tmp=(char *)calloc (25, sizeof (char));	if (sscanf (time, "%d:%d %s", &etime->hour, &etime->minute, tmp)<2) {		free (tmp);		free (etime);		return NULL;	}	if (etime->hour<=12) {		if (tmp)			if (strcasecmp (tmp, "pm")==0 && etime->hour!=12) {					etime->hour+=12;			}			if (strcasecmp (tmp, "am")==0 && etime->hour==12) {				etime->hour=0;			}	}	if (etime->hour>23) {		insert_message (_("Invalid Time: hour greater than 23\n"));		free (etime);		free (tmp);		return NULL;	}	if (etime->minute>59) {		insert_message (_("Invalid Time: minute greater than 59\n"));		free (etime);		free (tmp);		return NULL;	}	free (tmp);	return etime;}CalendarEvent *event_find_conflict (time_t start, time_t end) {	Llist *seek=event_list;	CalendarEvent *event;	while (seek) {		event=(CalendarEvent *)seek->data;		if (event) {			if (event->start && event->stop) {				if (start > event->start->time && start < event->stop->time)					return event;				if (end > event->start->time && end < event->stop->time)					return event;				if (event->start->time > start && event->start->time < end)					return event;				if (event->stop->time > start && event->stop->time < end)					return event;				if (event->stop->time == start && event->start->time == end)					return event;			}		}		seek=seek->next;	}	return NULL;}void event_display (CalendarEvent *event) {	GtkWidget *cal=calendar_get_widget ();	guint year, month, day;	GtkCalendar *daily=GTK_CALENDAR (lookup_widget (cal, "daily_calendar"));	gtk_calendar_freeze (daily);		gtk_calendar_get_date (daily, &year, &month, &day);		gtk_calendar_select_month (daily, event->start->month, event->start->year);	gtk_calendar_mark_day (daily, event->start->date);		gtk_calendar_select_month (daily, month, year);	gtk_calendar_select_day (daily, day);		gtk_calendar_thaw (daily);}char *event_int_to_month (gint month) {	switch (month) {		case 0:			return strdup ("January");		case 1:			return strdup ("February");		case 2:			return strdup ("March");		case 3:			return strdup ("April");		case 4:			return strdup ("May");		case 5:			return strdup ("June");		case 6:			return strdup ("July");		case 7:			return strdup ("August");		case 8:			return strdup ("September");		case 9:			return strdup ("October");		case 10:			return strdup ("November");		case 11:			return strdup ("December");	}	return NULL;}char *event_int_to_year (int year) {	static char tmp[7];	snprintf (tmp, 5, "%d", year);	return tmp;}char *event_int_to_day (int day) {	static char tmp[7];	snprintf (tmp, 5, "%d", day);	return tmp;}char *event_time_to_char (int hour, int min) {	struct tm time;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -