Branch data Line data Source code
1 : : /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
2 : : *
3 : : * Copyright © 2018 Endless Mobile, Inc.
4 : : *
5 : : * This library is free software; you can redistribute it and/or
6 : : * modify it under the terms of the GNU Lesser General Public
7 : : * License as published by the Free Software Foundation; either
8 : : * version 2.1 of the License, or (at your option) any later version.
9 : : *
10 : : * This library is distributed in the hope that it will be useful,
11 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 : : * Lesser General Public License for more details.
14 : : *
15 : : * You should have received a copy of the GNU Lesser General Public
16 : : * License along with this library; if not, write to the Free Software
17 : : * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 : : *
19 : : * Authors:
20 : : * - Philip Withnall <withnall@endlessm.com>
21 : : */
22 : :
23 : : #pragma once
24 : :
25 : : #include <glib.h>
26 : : #include <glib-object.h>
27 : :
28 : : G_BEGIN_DECLS
29 : :
30 : : /**
31 : : * MwtPeriodError:
32 : : * @MWT_PERIOD_ERROR_INVALID: Properties for the #MwtPeriod are invalid.
33 : : *
34 : : * Errors which can be returned by #MwtPeriod.
35 : : *
36 : : * Since: 0.1.0
37 : : */
38 : : typedef enum
39 : : {
40 : : MWT_PERIOD_ERROR_INVALID = 0,
41 : : } MwtPeriodError;
42 : : #define MWT_PERIOD_N_ERRORS (MWT_PERIOD_ERROR_INVALID + 1)
43 : :
44 : : GQuark mwt_period_error_quark (void);
45 : : #define MWT_PERIOD_ERROR mwt_period_error_quark ()
46 : :
47 : : /**
48 : : * MwtPeriodRepeatType:
49 : : * @MWT_PERIOD_REPEAT_NONE: Do not repeat.
50 : : * @MWT_PERIOD_REPEAT_HOUR: Repeat hourly.
51 : : * @MWT_PERIOD_REPEAT_DAY: Repeat daily.
52 : : * @MWT_PERIOD_REPEAT_WEEK: Repeat weekly.
53 : : * @MWT_PERIOD_REPEAT_MONTH: Repeat monthly.
54 : : * @MWT_PERIOD_REPEAT_YEAR: Repeat yearly.
55 : : *
56 : : * Units for calculating with the #MwtPeriod:repeat-period of an #MwtPeriod.
57 : : *
58 : : * Since: 0.1.0
59 : : */
60 : : typedef enum
61 : : {
62 : : MWT_PERIOD_REPEAT_NONE = 0,
63 : : MWT_PERIOD_REPEAT_HOUR,
64 : : MWT_PERIOD_REPEAT_DAY,
65 : : MWT_PERIOD_REPEAT_WEEK,
66 : : MWT_PERIOD_REPEAT_MONTH,
67 : : MWT_PERIOD_REPEAT_YEAR,
68 : : } MwtPeriodRepeatType;
69 : :
70 : : #define MWT_TYPE_PERIOD mwt_period_get_type ()
71 [ + + + - : 3592 : G_DECLARE_FINAL_TYPE (MwtPeriod, mwt_period, MWT, PERIOD, GObject)
+ - ]
72 : :
73 : : gboolean mwt_period_validate (GDateTime *start,
74 : : GDateTime *end,
75 : : MwtPeriodRepeatType repeat_type,
76 : : guint repeat_period,
77 : : GError **error);
78 : :
79 : : MwtPeriod *mwt_period_new (GDateTime *start,
80 : : GDateTime *end,
81 : : MwtPeriodRepeatType repeat_type,
82 : : guint repeat_period,
83 : : const gchar *first_property_name,
84 : : ...);
85 : :
86 : : GDateTime *mwt_period_get_start (MwtPeriod *self);
87 : : GDateTime *mwt_period_get_end (MwtPeriod *self);
88 : :
89 : : gboolean mwt_period_contains_time (MwtPeriod *self,
90 : : GDateTime *when,
91 : : GDateTime **out_start,
92 : : GDateTime **out_end);
93 : : gboolean mwt_period_get_next_recurrence (MwtPeriod *self,
94 : : GDateTime *after,
95 : : GDateTime **out_next_start,
96 : : GDateTime **out_next_end);
97 : :
98 : : MwtPeriodRepeatType mwt_period_get_repeat_type (MwtPeriod *self);
99 : : guint mwt_period_get_repeat_period (MwtPeriod *self);
100 : :
101 : : guint64 mwt_period_get_capacity_limit (MwtPeriod *self);
102 : :
103 : : G_END_DECLS
|