On Sat, Jul 28, 2007 at 01:52:36PM -0400, Kurt Maute wrote: > I get a hunk failure on this patch. > Could you correct and resend? Here you go. Maurice. -- Maurice van der Pot Gentoo Linux Developer griffon26 gentoo org http://www.gentoo.org Creator of BiteMe! griffon26 kfk4ever com http://www.kfk4ever.com
Index: libplanner/mrp-time.h
===================================================================
--- libplanner/mrp-time.h (revision 849)
+++ libplanner/mrp-time.h (working copy)
@@ -146,7 +146,8 @@
const gchar *mrp_time2_get_day_name (MrpTime *t);
const gchar *mrp_time2_get_month_name (MrpTime *t);
const gchar *mrp_time2_get_month_initial (MrpTime *t);
-gint mrp_time2_get_week_number (MrpTime *t);
+gint mrp_time2_get_week_number (MrpTime *t,
+ gint *year);
void mrp_time2_align_prev (MrpTime *t,
MrpTimeUnit unit);
void mrp_time2_align_next (MrpTime *t,
Index: libplanner/mrp-time.c
===================================================================
--- libplanner/mrp-time.c (revision 849)
+++ libplanner/mrp-time.c (working copy)
@@ -415,7 +415,7 @@
mrp_time2_set_epoch (&t2, t);
- return mrp_time2_get_week_number (&t2);
+ return mrp_time2_get_week_number (&t2, NULL);
}
/**
@@ -839,7 +839,7 @@
/* The week number, (1 - 53), starting with the first
* Monday as the first day of week 1.
*/
- snprintf (str, sizeof (str), "%d", mrp_time2_get_week_number (t));
+ snprintf (str, sizeof (str), "%d", mrp_time2_get_week_number (t, NULL));
if (buffer) {
strcpy (buffer + len, str);
}
@@ -1348,11 +1348,39 @@
}
gint
-mrp_time2_get_week_number (MrpTime *t)
+mrp_time2_get_week_number (MrpTime *t, gint *y)
{
+ gint week;
+ gint year;
+
g_return_val_if_fail (t != NULL, 0);
- return stolen_g_date_get_iso8601_week_of_year (&t->date);
+ week = stolen_g_date_get_iso8601_week_of_year (&t->date);
+
+ /* Calculate the year this week belongs to as it can be different than
+ * the year of the date (e.g. December 31 2002 is in week 1 of 2003).
+ */
+ if(y != NULL) {
+ year = g_date_get_year (&t->date);
+
+ switch(g_date_get_month (&t->date)) {
+ case G_DATE_JANUARY:
+ if(week > 50) {
+ year--;
+ }
+ break;
+ case G_DATE_DECEMBER:
+ if(week == 1) {
+ year++;
+ }
+ break;
+ default:
+ break;
+ }
+
+ *y = year;
+ }
+ return week;
}
void
Index: src/planner-scale-utils.c
===================================================================
--- src/planner-scale-utils.c (revision 849)
+++ src/planner-scale-utils.c (working copy)
@@ -69,7 +69,7 @@
MrpTime *t2;
gchar *str = NULL;
gint num;
- gint year, month, day;
+ gint year, month, week, day;
gint hour, min, sec;
t2 = mrp_time2_new ();
@@ -127,16 +127,17 @@
case PLANNER_SCALE_FORMAT_SHORT:
/* i18n: Short "Week", preferably 2 letters. */
str = g_strdup_printf (_("Wk %d"),
- mrp_time2_get_week_number (t2));
+ mrp_time2_get_week_number (t2, NULL));
break;
case PLANNER_SCALE_FORMAT_MEDIUM:
str = g_strdup_printf (_("Week %d"),
- mrp_time2_get_week_number (t2));
+ mrp_time2_get_week_number (t2, NULL));
break;
case PLANNER_SCALE_FORMAT_LONG:
/* i18n: Week, year. */
+ week = mrp_time2_get_week_number (t2, &year),
str = g_strdup_printf (_("Week %d, %d"),
- mrp_time2_get_week_number (t2),
+ week,
year);
break;
}
Index: data/stylesheets/html1_gantt.xsl
===================================================================
--- data/stylesheets/html1_gantt.xsl (revision 849)
+++ data/stylesheets/html1_gantt.xsl (working copy)
@@ -19,7 +19,10 @@
<xsl:choose>
<xsl:when test="date:day-in-week($date) = 2 and $days >= 7">
<th class="gantt-week-header" align="center" colspan="7">
- <xsl:value-of select="I18N:gettext('Week')"/> <xsl:value-of select="date:week-in-year($date) + 1"/>, <xsl:value-of select="date:year($date)"/>
+ <!-- A week that crosses a year boundary is associated with the year that its thursday is in.
+ This means that the year of any thursday date is always equal to the year of the week number.
+ Because the date at this point is always a monday, we can add 3 days to get to the year for this week. -->
+ <xsl:value-of select="I18N:gettext('Week')"/> <xsl:value-of select="date:week-in-year($date)"/>, <xsl:value-of select="date:year(date:add($date, date:duration(86400 * 3)))"/>
</th>
<xsl:if test="not($days = 7)">
<xsl:call-template name="create-week-row">
Attachment:
pgprxh2rs8DC6.pgp
Description: PGP signature