aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-individual-store.h
blob: c709348fc6bdac801d548ff8f7260c4bb89cbf86 (plain) (blame)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
 * Copyright (C) 2005-2007 Imendio AB
 * Copyright (C) 2007-2010 Collabora Ltd.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public
 * License along with this program; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 *
 * Authors: Mikael Hallendal <micke@imendio.com>
 *          Martyn Russell <martyn@imendio.com>
 *          Xavier Claessens <xclaesse@gmail.com>
 *          Travis Reitter <travis.reitter@collabora.co.uk>
 */

#ifndef __EMPATHY_INDIVIDUAL_STORE_H__
#define __EMPATHY_INDIVIDUAL_STORE_H__

#include <gtk/gtk.h>
#include <folks/folks.h>

G_BEGIN_DECLS
#define EMPATHY_TYPE_INDIVIDUAL_STORE         (empathy_individual_store_get_type ())
#define EMPATHY_INDIVIDUAL_STORE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INDIVIDUAL_STORE, EmpathyIndividualStore))
#define EMPATHY_INDIVIDUAL_STORE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_INDIVIDUAL_STORE, EmpathyIndividualStoreClass))
#define EMPATHY_IS_INDIVIDUAL_STORE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INDIVIDUAL_STORE))
#define EMPATHY_IS_INDIVIDUAL_STORE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INDIVIDUAL_STORE))
#define EMPATHY_INDIVIDUAL_STORE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_STORE, EmpathyIndividualStoreClass))

typedef struct _EmpathyIndividualStore EmpathyIndividualStore;
typedef struct _EmpathyIndividualStoreClass EmpathyIndividualStoreClass;
typedef struct _EmpathyIndividualStorePriv EmpathyIndividualStorePriv;

typedef enum
{
  EMPATHY_INDIVIDUAL_STORE_SORT_STATE,
  EMPATHY_INDIVIDUAL_STORE_SORT_NAME
} EmpathyIndividualStoreSort;

typedef enum
{
  EMPATHY_INDIVIDUAL_STORE_COL_ICON_STATUS,
  EMPATHY_INDIVIDUAL_STORE_COL_PIXBUF_AVATAR,
  EMPATHY_INDIVIDUAL_STORE_COL_PIXBUF_AVATAR_VISIBLE,
  EMPATHY_INDIVIDUAL_STORE_COL_NAME,
  EMPATHY_INDIVIDUAL_STORE_COL_PRESENCE_TYPE,
  EMPATHY_INDIVIDUAL_STORE_COL_STATUS,
  EMPATHY_INDIVIDUAL_STORE_COL_COMPACT,
  EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL,
  EMPATHY_INDIVIDUAL_STORE_COL_IS_GROUP,
  EMPATHY_INDIVIDUAL_STORE_COL_IS_ACTIVE,
  EMPATHY_INDIVIDUAL_STORE_COL_IS_ONLINE,
  EMPATHY_INDIVIDUAL_STORE_COL_IS_SEPARATOR,
  EMPATHY_INDIVIDUAL_STORE_COL_CAN_AUDIO_CALL,
  EMPATHY_INDIVIDUAL_STORE_COL_CAN_VIDEO_CALL,
  EMPATHY_INDIVIDUAL_STORE_COL_IS_FAKE_GROUP,
  EMPATHY_INDIVIDUAL_STORE_COL_CLIENT_TYPES,
  EMPATHY_INDIVIDUAL_STORE_COL_EVENT_COUNT,
  EMPATHY_INDIVIDUAL_STORE_COL_COUNT,
} EmpathyIndividualStoreCol;

#define EMPATHY_INDIVIDUAL_STORE_UNGROUPED _("Ungrouped")
#define EMPATHY_INDIVIDUAL_STORE_FAVORITE  _("Favorite People")
#define EMPATHY_INDIVIDUAL_STORE_PEOPLE_NEARBY _("People Nearby")

struct _EmpathyIndividualStore
{
  GtkTreeStore parent;
  EmpathyIndividualStorePriv *priv;
};

struct _EmpathyIndividualStoreClass
{
  GtkTreeStoreClass parent_class;

  void (*reload_individuals) (EmpathyIndividualStore *self);
  gboolean (*initial_loading) (EmpathyIndividualStore *self);
};

GType
empathy_individual_store_get_type (void) G_GNUC_CONST;

gboolean empathy_individual_store_get_show_avatars (
    EmpathyIndividualStore *store);

void empathy_individual_store_set_show_avatars (EmpathyIndividualStore *store,
    gboolean show_avatars);

gboolean empathy_individual_store_get_show_groups (
    EmpathyIndividualStore *store);

void empathy_individual_store_set_show_groups (EmpathyIndividualStore *store,
    gboolean show_groups);

gboolean empathy_individual_store_get_is_compact (
    EmpathyIndividualStore *store);

void empathy_individual_store_set_is_compact (EmpathyIndividualStore *store,
    gboolean is_compact);

gboolean empathy_individual_store_get_show_protocols (
    EmpathyIndividualStore *store);

void empathy_individual_store_set_show_protocols (
    EmpathyIndividualStore *store,
    gboolean show_protocols);

EmpathyIndividualStoreSort empathy_individual_store_get_sort_criterium (
    EmpathyIndividualStore *store);

void empathy_individual_store_set_sort_criterium (
    EmpathyIndividualStore *store,
    EmpathyIndividualStoreSort sort_criterium);

gboolean empathy_individual_store_row_separator_func (GtkTreeModel *model,
    GtkTreeIter *iter,
    gpointer data);

gchar *empathy_individual_store_get_parent_group (GtkTreeModel *model,
    GtkTreePath *path,
    gboolean *path_is_group,
    gboolean *is_fake_group);

GdkPixbuf *empathy_individual_store_get_individual_status_icon (
    EmpathyIndividualStore *store,
    FolksIndividual *individual);

void individual_store_add_individual_and_connect (EmpathyIndividualStore *self,
    FolksIndividual *individual);

void individual_store_remove_individual_and_disconnect (
    EmpathyIndividualStore *self,
    FolksIndividual *individual);

/* protected */

GList *empathy_individual_store_find_contact (EmpathyIndividualStore *self,
    FolksIndividual *individual);

void empathy_individual_store_free_iters (GList *iters);

void empathy_individual_store_disconnect_individual (
    EmpathyIndividualStore *self,
    FolksIndividual *individual);

void empathy_individual_store_remove_individual (EmpathyIndividualStore *self,
    FolksIndividual *individual);

void empathy_individual_store_add_individual (EmpathyIndividualStore *self,
    FolksIndividual *individual);

void empathy_individual_store_refresh_individual (EmpathyIndividualStore *self,
    FolksIndividual *individual);

G_END_DECLS
#endif /* __EMPATHY_INDIVIDUAL_STORE_H__ */