MrpCalendar

MrpCalendar — represents a calendar in the project.

Functions

Properties

gchar * name Read / Write
gpointer project Read / Write

Signals

Types and Values

Object Hierarchy

    GBoxed
    ╰── MrpInterval
    GObject
    ╰── MrpObject
        ╰── MrpCalendar

Includes

#include <libplanner/mrp-calendar.h>

Description

A calendar contains the information on working/nonworking time for resources. A calendar has a default week, specifying the day types (MrpDay) used for each day of the week by default.

Day types can be overriden so that a working day has another set of working time intervals per calendar. Certain dates can be overridden to use another day type as well.

Functions

mrp_calendar_new ()

MrpCalendar *
mrp_calendar_new (const gchar *name,
                  MrpProject *project);

Creates a new MrpCalendar. The calendar will be empty so you need to set the default week and/or override days, see mrp_calendar_set_default_days() and mrp_calendar_set_days().

Parameters

name

name of the calendar

 

project

the MrpProject that the new calendar will belong to

 

Returns

A new MrpCalendar.


mrp_calendar_add ()

void
mrp_calendar_add (MrpCalendar *calendar,
                  MrpCalendar *parent);

Add calendar to the project

Parameters

calendar

a MrpCalendar to add

 

parent

a MrpCalendar to inherit from

 

mrp_calendar_copy ()

MrpCalendar *
mrp_calendar_copy (const gchar *name,
                   MrpCalendar *calendar);

Copies calendar , making the new calendar a base calendar, that does not have a parent.

Parameters

name

the name of the new calendar

 

calendar

a MrpCalendar to copy

 

Returns

a new MrpCalendar that is a copy of calendar .


mrp_calendar_derive ()

MrpCalendar *
mrp_calendar_derive (const gchar *name,
                     MrpCalendar *parent);

Derives a new calendar from parent . The new calendar will inherit all properties from parent , so if no days are overridden, the calendars will be identical.

Parameters

name

the name of the new calendar

 

parent

the MrpCalendar to derive

 

Returns

a new MrpCalendar that is derived from parent .


mrp_calendar_reparent ()

void
mrp_calendar_reparent (MrpCalendar *new_parent,
                       MrpCalendar *child);

Changes the parent of child so that it inherits new_parent , instead of its old parent.

Parameters

new_parent

the new parent

 

child

an MrpCalendar

 

mrp_calendar_remove ()

void
mrp_calendar_remove (MrpCalendar *calendar);

Removes calendar from the project. If the calendar is used by the project, a new calendar is set for the project. If the calendar has a parent, the parent is used, otherwise the first child of the root is used. For resources, the calendar is exchanged for the parent if one exists, otherwise the resource calendar is unset, so that the project default will be used.

Parameters

calendar

an MrpCalendar

 

mrp_calendar_get_name ()

const gchar *
mrp_calendar_get_name (MrpCalendar *calendar);

Retrieves the name of the calendar.

Parameters

calendar

an MrpCalendar

 

Returns

the calendar name.


mrp_calendar_set_name ()

void
mrp_calendar_set_name (MrpCalendar *calendar,
                       const gchar *name);

Sets the name of the calendar.

Parameters

calendar

an MrpCalendar

 

name

the new name

 

mrp_calendar_day_set_intervals ()

void
mrp_calendar_day_set_intervals (MrpCalendar *calendar,
                                MrpDay *day,
                                GList *intervals);

Overrides the working time for the day type day when used in calendar .

Parameters

calendar

an MrpCalendar

 

day

an MrpDay

 

intervals

list of MrpInterval to set for the specified day

 

mrp_calendar_day_get_intervals ()

GList *
mrp_calendar_day_get_intervals (MrpCalendar *calendar,
                                MrpDay *day,
                                gboolean check_ancestors);

Retrieves the working time for the given day/calendar combination. If check_ancestors is TRUE, the calendar hierarchy is searched until a calendar that has set the working time for this day type is found. If FALSE, the returned list will be empty if there is no explicit working time set for calendar .

Parameters

calendar

an MrpCalendar

 

day

an MrpDay

 

check_ancestors

specifies if the whole calendar hierarchy should be checked

 

Returns

List of MrpInterval, specifying the working time for day .


mrp_calendar_day_get_total_work ()

gint
mrp_calendar_day_get_total_work (MrpCalendar *calendar,
                                 MrpDay *day);

Calculates the total amount of work for day in calendar .

Parameters

calendar

an MrpCalendar

 

day

an MrpDay

 

Returns

the amount of work in seconds.


mrp_calendar_get_day ()

MrpDay *
mrp_calendar_get_day (MrpCalendar *calendar,
                      mrptime date,
                      gboolean check_ancestors);

Retrieves the day type for the given date and calendar. If check_ancestors is TRUE, the parent and grandparent, and so on, is searched if calendar does not have an overridden day type for the specified date.

Parameters

calendar

an MrpCalendar

 

date

an mrptime

 

check_ancestors

specifies if the whole calendar hierarchy should be checked

 

Returns

An MrpDay.


mrp_calendar_get_default_day ()

MrpDay *
mrp_calendar_get_default_day (MrpCalendar *calendar,
                              gint week_day);

Retrieves the default day for calendar .

Parameters

calendar

an MrpCalendar

 

week_day

integer in the range 0 - 6, where 0 is Sunday

 

Returns

default MrpDay.


mrp_calendar_set_default_days ()

void
mrp_calendar_set_default_days (MrpCalendar *calendar,
                               gint week_day,
                               ...);

Sets days in the default week for calendar . Those are the days that are used as fallback is a date is not overridden.

Parameters

calendar

an MrpCalendar

 

week_day

integer in the range 0 - 6, where 0 is Sunday

 

...

MrpDay followed by more week day/MrpDay pairs, terminated by -1

 

mrp_calendar_set_days ()

void
mrp_calendar_set_days (MrpCalendar *calendar,
                       mrptime date,
                       ...);

Overrides specific dates in calendar , setting the type of day to use for those dates.

Parameters

calendar

an MrpCalendar

 

date

an mrptime

 

...

MrpDay followed by more mrptime/MrpDay pairs, terminated by -1

 

mrp_calendar_get_parent ()

MrpCalendar *
mrp_calendar_get_parent (MrpCalendar *calendar);

Retrieves the parent calendar of calendar . The parent is the calendar that a calendar falls back to if a date or day type is not overridden.

Parameters

calendar

an MrpCalendar

 

Returns

The parent calendar.


mrp_calendar_get_children ()

GList *
mrp_calendar_get_children (MrpCalendar *calendar);

Retrieves a list of the children, i.e. the calendars that are immediately derived from calendar .

Parameters

calendar

an MrpCalendar

 

Returns

List of calendar 's children.


mrp_calendar_get_overridden_days ()

GList *
mrp_calendar_get_overridden_days (MrpCalendar *calendar);

Retrieves the days that are overridden in this calendar, and the intervals that they are overridden with. This is mainly used when saving calendar data.

Parameters

calendar

an MrpCalendar

 

Returns

A list of MrpDayWithIntervals structs, that must be freed (both the list and the data).


mrp_calendar_get_all_overridden_dates ()

GList *
mrp_calendar_get_all_overridden_dates (MrpCalendar *calendar);

Retrieves the overridden dates of calendar , i.e. the specific dates that differ from the parent calendar.

Parameters

calendar

an MrpCalendar

 

Returns

A list of MrpDateWithDay structs, that must be freed (both the list and the data).


mrp_interval_new ()

MrpInterval *
mrp_interval_new (mrptime start,
                  mrptime end);

Creates a new MrpInterval ranging from start to end .

Parameters

start

an mrptime specifying the start of the interval

 

end

an mrptime specifying the end of the interval

 

Returns

The newly created interval.


mrp_interval_copy ()

MrpInterval *
mrp_interval_copy (MrpInterval *interval);

Copies interval .

Parameters

interval

an MrpInterval

 

Returns

The copied interval.


mrp_interval_ref ()

MrpInterval *
mrp_interval_ref (MrpInterval *interval);

Increases the reference count on interval .

Parameters

interval

an MrpInterval

 

Returns

The interval.


mrp_interval_unref ()

void
mrp_interval_unref (MrpInterval *interval);

Decreases the reference count on interval . When the count goes to 0, the interval is freed.

Parameters

interval

an MrpInterval

 

mrp_interval_get_absolute ()

void
mrp_interval_get_absolute (MrpInterval *interval,
                           mrptime offset,
                           mrptime *start,
                           mrptime *end);

Retrieves the start and end time of interval, with an optional offset .

Parameters

interval

an MrpInterval

 

offset

the offset to add to start and end

 

start

location to store start time, or NULL

 

end

location to store end time, or NULL

 

mrp_interval_set_absolute ()

void
mrp_interval_set_absolute (MrpInterval *interval,
                           mrptime offset,
                           mrptime start,
                           mrptime end);

Set the start and end time of interval, with an optional offset .

Parameters

interval

an MrpInterval

 

offset

the offset to subtract to start and end

 

start

value of start time

 

end

value of end time

 

Types and Values

MrpDayWithIntervals

typedef struct {
	MrpDay *day;
	GList *intervals;
} MrpDayWithIntervals;

Used for saving calendar data.

Associate a day type and time intervals . A day type is composed of working periods.

Members

MrpDay *day;

a day type.

 

GList *intervals;

a list of time intervals.

 

MrpDateWithDay

typedef struct {
	mrptime date;
	MrpDay *day;
} MrpDateWithDay;

Associate a date and a day type. Certain dates can have a peculiar day type.

Members

mrptime date;

a date.

 

MrpDay *day;

a day type.

 

struct MrpCalendar

struct MrpCalendar;

Object representing a calendar in the project.


MrpCalendarPriv

typedef struct _MrpCalendarPriv MrpCalendarPriv;

MrpInterval

typedef struct _MrpInterval MrpInterval;

Represents a time interval.

Property Details

The “name” property

  “name”                     gchar *

The name of the calendar.

Owner: MrpCalendar

Flags: Read / Write

Default value: "empty"


The “project” property

  “project”                  gpointer

The project this calendar belongs to.

Owner: MrpCalendar

Flags: Read / Write

Signal Details

The “calendar-changed” signal

void
user_function (MrpCalendar *calendar,
               gpointer     user_data)

emitted when calendar changes.

Parameters

calendar

the object which received the signal.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last