summaryrefslogtreecommitdiffstats
path: root/sync/src/sync_group.h
blob: a9e5869e036b2fb288ebd2cd3e3631fd8b3f79e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#ifndef SYNC_GROUP_H
#define SYNC_GROUP_H

#include <opensync/opensync.h>

#include <glib-object.h>

G_BEGIN_DECLS

#define SYNC_TYPE_GROUP sync_group_get_type()

#define SYNC_GROUP(obj) \
  (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
  SYNC_TYPE_GROUP, SyncGroup))

#define SYNC_GROUP_CLASS(klass) \
  (G_TYPE_CHECK_CLASS_CAST ((klass), \
  SYNC_TYPE_GROUP, SyncGroupClass))

#define SYNC_IS_GROUP(obj) \
  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
  SYNC_TYPE_GROUP))

#define SYNC_IS_GROUP_CLASS(klass) \
  (G_TYPE_CHECK_CLASS_TYPE ((klass), \
  SYNC_TYPE_GROUP))

#define SYNC_GROUP_GET_CLASS(obj) \
  (G_TYPE_INSTANCE_GET_CLASS ((obj), \
  SYNC_TYPE_GROUP, SyncGroupClass))

typedef struct {
  GObject parent;
} SyncGroup;

typedef struct {
  GObjectClass parent_class;

  void (* started)	(SyncGroup *group);
  void (* progress)	(SyncGroup *group, gdouble progress);
  void (* conflict)	(SyncGroup *group);
  void (* finished)	(SyncGroup *group);
  void (* failed)	(SyncGroup *group);
} SyncGroupClass;

GType sync_group_get_type (void);

typedef enum {
	USE_ITEM1,
	USE_ITEM2,
	ABORT,
	IGNORE,
} SyncGroupConflictRes;

#include "sync_item.h"

SyncGroup *	sync_group_new 			(void);
SyncGroup *	sync_group_new_with_items 	(SyncItem *item1,
						 SyncItem *item2);
						 
void 		sync_group_set_item1 		(SyncGroup *group,
						 SyncItem *item1);
void 		sync_group_set_item2 		(SyncGroup *group,
						 SyncItem *item2);
void		sync_group_set_namespace	(SyncGroup *group,
						 const gchar *namespace);
SyncItem *	sync_group_get_item1 		(SyncGroup *group);
SyncItem *	sync_group_get_item2 		(SyncGroup *group);
OSyncGroup *	sync_group_get_osync_group 	(SyncGroup *group);
const gchar *	sync_group_get_namespace	(SyncGroup *group);
gchar *		sync_group_get_name 		(SyncGroup *group);

gboolean	sync_group_start		(SyncGroup *group);
void		sync_group_resolve_conflict	(SyncGroup *group,
						 SyncGroupConflictRes res);
void		sync_group_abort		(SyncGroup *group);
void		sync_group_remove_item		(SyncGroup *group,
						 SyncItem *item);
gboolean	sync_group_delete		(SyncGroup *group);
gboolean	sync_group_save			(SyncGroup *group);

G_END_DECLS

#endif