/* fuzzyclock.h generated by valac 0.56.19, the Vala compiler, do not modify */

#ifndef __BUDGIE_FUZZYCLOCK_SRC_FUZZYCLOCK_H__
#define __BUDGIE_FUZZYCLOCK_SRC_FUZZYCLOCK_H__

#include <libpeas.h>
#include <plugin.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <gtk/gtk.h>
#include <gio/gio.h>

G_BEGIN_DECLS

#define CALENDAR_MIME "text/calendar"
#define FUZZY_CLOCK_RULE_back_hour "-1"
#define FUZZY_CLOCK_RULE_fwd_hour "+1"
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define TYPE_FUZZY_CLOCK_PLUGIN (fuzzy_clock_plugin_get_type ())
#define FUZZY_CLOCK_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FUZZY_CLOCK_PLUGIN, FuzzyClockPlugin))
#define FUZZY_CLOCK_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FUZZY_CLOCK_PLUGIN, FuzzyClockPluginClass))
#define IS_FUZZY_CLOCK_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FUZZY_CLOCK_PLUGIN))
#define IS_FUZZY_CLOCK_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FUZZY_CLOCK_PLUGIN))
#define FUZZY_CLOCK_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FUZZY_CLOCK_PLUGIN, FuzzyClockPluginClass))

typedef struct _FuzzyClockPlugin FuzzyClockPlugin;
typedef struct _FuzzyClockPluginClass FuzzyClockPluginClass;
typedef struct _FuzzyClockPluginPrivate FuzzyClockPluginPrivate;

#define TYPE_FUZZY_CLOCK_RULE (fuzzy_clock_rule_get_type ())
#define FUZZY_CLOCK_RULE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FUZZY_CLOCK_RULE, FuzzyClockRule))
#define FUZZY_CLOCK_RULE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FUZZY_CLOCK_RULE, FuzzyClockRuleClass))
#define IS_FUZZY_CLOCK_RULE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FUZZY_CLOCK_RULE))
#define IS_FUZZY_CLOCK_RULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FUZZY_CLOCK_RULE))
#define FUZZY_CLOCK_RULE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FUZZY_CLOCK_RULE, FuzzyClockRuleClass))

typedef struct _FuzzyClockRule FuzzyClockRule;
typedef struct _FuzzyClockRuleClass FuzzyClockRuleClass;
typedef struct _FuzzyClockRulePrivate FuzzyClockRulePrivate;

#define TYPE_FUZZY_CLOCK_APPLET (fuzzy_clock_applet_get_type ())
#define FUZZY_CLOCK_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FUZZY_CLOCK_APPLET, FuzzyClockApplet))
#define FUZZY_CLOCK_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FUZZY_CLOCK_APPLET, FuzzyClockAppletClass))
#define IS_FUZZY_CLOCK_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FUZZY_CLOCK_APPLET))
#define IS_FUZZY_CLOCK_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FUZZY_CLOCK_APPLET))
#define FUZZY_CLOCK_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FUZZY_CLOCK_APPLET, FuzzyClockAppletClass))

typedef struct _FuzzyClockApplet FuzzyClockApplet;
typedef struct _FuzzyClockAppletClass FuzzyClockAppletClass;
typedef struct _FuzzyClockAppletPrivate FuzzyClockAppletPrivate;

struct _FuzzyClockPlugin {
	PeasExtensionBase parent_instance;
	FuzzyClockPluginPrivate * priv;
};

struct _FuzzyClockPluginClass {
	PeasExtensionBaseClass parent_class;
};

struct _FuzzyClockRule {
	GTypeInstance parent_instance;
	volatile int ref_count;
	FuzzyClockRulePrivate * priv;
	gchar* format;
	gint hour_offset;
};

struct _FuzzyClockRuleClass {
	GTypeClass parent_class;
	void (*finalize) (FuzzyClockRule *self);
};

struct _FuzzyClockApplet {
	BudgieApplet parent_instance;
	FuzzyClockAppletPrivate * priv;
	gchar** hours;
	gint hours_length1;
	FuzzyClockRule** rules;
	gint rules_length1;
	GtkEventBox* widget;
	GtkBox* layout;
	GtkLabel* clock;
	GtkLabel* date_label;
	gboolean ampm;
	GSettings* settings;
};

struct _FuzzyClockAppletClass {
	BudgieAppletClass parent_class;
};

GType fuzzy_clock_plugin_register_type (GTypeModule * module);
VALA_EXTERN GType fuzzy_clock_plugin_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FuzzyClockPlugin, g_object_unref)
VALA_EXTERN FuzzyClockPlugin* fuzzy_clock_plugin_new (void);
VALA_EXTERN FuzzyClockPlugin* fuzzy_clock_plugin_construct (GType object_type);
VALA_EXTERN gpointer fuzzy_clock_rule_ref (gpointer instance);
VALA_EXTERN void fuzzy_clock_rule_unref (gpointer instance);
VALA_EXTERN GParamSpec* param_spec_fuzzy_clock_rule (const gchar* name,
                                         const gchar* nick,
                                         const gchar* blurb,
                                         GType object_type,
                                         GParamFlags flags);
VALA_EXTERN void value_set_fuzzy_clock_rule (GValue* value,
                                 gpointer v_object);
VALA_EXTERN void value_take_fuzzy_clock_rule (GValue* value,
                                  gpointer v_object);
VALA_EXTERN gpointer value_get_fuzzy_clock_rule (const GValue* value);
GType fuzzy_clock_rule_register_type (GTypeModule * module);
VALA_EXTERN GType fuzzy_clock_rule_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FuzzyClockRule, fuzzy_clock_rule_unref)
VALA_EXTERN FuzzyClockRule* fuzzy_clock_rule_new (const gchar* rule_text,
                                      gint hour_offset);
VALA_EXTERN FuzzyClockRule* fuzzy_clock_rule_construct (GType object_type,
                                            const gchar* rule_text,
                                            gint hour_offset);
GType fuzzy_clock_applet_register_type (GTypeModule * module);
VALA_EXTERN GType fuzzy_clock_applet_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FuzzyClockApplet, g_object_unref)
VALA_EXTERN FuzzyClockApplet* fuzzy_clock_applet_new (const gchar* uuid);
VALA_EXTERN FuzzyClockApplet* fuzzy_clock_applet_construct (GType object_type,
                                                const gchar* uuid);
VALA_EXTERN void fuzzy_clock_applet_initialiseLocaleLanguageSupport (FuzzyClockApplet* self);
VALA_EXTERN void fuzzy_clock_applet_on_settings_change (FuzzyClockApplet* self,
                                            const gchar* key);
VALA_EXTERN void fuzzy_clock_applet_update_date (FuzzyClockApplet* self);
VALA_EXTERN gboolean fuzzy_clock_applet_update_clock (FuzzyClockApplet* self);
VALA_EXTERN const gchar* fuzzy_clock_applet_get_uuid (FuzzyClockApplet* self);
VALA_EXTERN void fuzzy_clock_applet_set_uuid (FuzzyClockApplet* self,
                                  const gchar* value);
VALA_EXTERN void peas_register_types (GTypeModule* module);

G_END_DECLS

#endif
