00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00025 #include <glib.h>
00026
00027 #include "time-period.h"
00028
00029
00030
00031 char *time_period_get_display_name_type_value (int type, int value, gboolean prepend_val)
00032 {
00033 g_return_val_if_fail (type >= 0, NULL);
00034 g_return_val_if_fail (type < LAST_TIME_PERIOD_T, NULL);
00035
00036 char *name = NULL;
00037 char *token = NULL;
00038
00039 switch (type) {
00040 case LIVE:
00041 return g_strdup ("Live mode");
00042
00043 case SECOND:
00044 if (value != 1)
00045 token = g_strdup ("seconds");
00046 else
00047 token = g_strdup ("second");
00048 break;
00049
00050 case MINUTE:
00051 if (value != 1)
00052 token = g_strdup ("minutes");
00053 else
00054 token = g_strdup ("minute");
00055 break;
00056
00057 case HOUR:
00058 if (value != 1)
00059 token = g_strdup ("hours");
00060 else
00061 token = g_strdup ("hour");
00062 break;
00063
00064 case DAY:
00065 if (value != 1)
00066 token = g_strdup ("days");
00067 else
00068 token = g_strdup ("day");
00069 break;
00070
00071 case WEEK:
00072 if (value != 1)
00073 token = g_strdup ("weeks");
00074 else
00075 token = g_strdup ("week");
00076 break;
00077
00078 case MONTH:
00079 if (value != 1)
00080 token = g_strdup ("months");
00081 else
00082 token = g_strdup ("month");
00083 break;
00084
00085 case YEAR:
00086 if (value != 1)
00087 token = g_strdup ("years");
00088 else
00089 token = g_strdup ("year");
00090 break;
00091 default:
00092 token = g_strdup ("unknown time unit");
00093 }
00094
00095 if (prepend_val) {
00096
00097 name = g_strdup_printf ("%d %s", value, token);
00098 g_free (token);
00099 return name;
00100 } else {
00101 return token;
00102 }
00103 }
00104
00105
00106
00107 char *time_period_get_display_name (time_period_t *period, gboolean prepend_val)
00108 {
00109 return time_period_get_display_name_type_value (period->type, period->value, prepend_val);
00110 }
00111
00112
00113
00114 time_period_t *time_period_new (int type, long val)
00115 {
00116 time_period_t *t = g_malloc (sizeof (time_period_t));
00117 t->type = type;
00118 t->value = val;
00119 return t;
00120 }
00121
00122
00123
00124 void time_period_free (time_period_t *t)
00125 {
00126 g_free (t);
00127 }
00128
00129
00130
00131 void time_period_copy (time_period_t *src, time_period_t *dest)
00132 {
00133 dest->type = src->type;
00134 dest->value = src->value;
00135 }
00136
00137
00138
00139 int time_period_cmp (const time_period_t *t1, const time_period_t *t2)
00140 {
00141 if (t1 == NULL)
00142 return (t2 == NULL) ? 0 : -1;
00143
00144 if (t2 == NULL)
00145 return 1;
00146
00147 if (t1->type != t2->type)
00148 return t1->type - t2->type;
00149 else if (t1->type == LIVE)
00150 return 0;
00151 else if (t1->value != t2->value)
00152 return t1->value - t2->value;
00153 else
00154 return 0;
00155 }