aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-individual-view.h
blob: 87dd20c7623fd2caddb5b90fd8e3b7172ee96576 (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
/* -*- 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_VIEW_H__
#define __EMPATHY_INDIVIDUAL_VIEW_H__

#include <gtk/gtk.h>

#include <folks/folks.h>

#include <libempathy/empathy-enum-types.h>

#include "empathy-live-search.h"
#include "empathy-individual-menu.h"
#include "empathy-individual-store.h"

G_BEGIN_DECLS
#define EMPATHY_TYPE_INDIVIDUAL_VIEW         (empathy_individual_view_get_type ())
#define EMPATHY_INDIVIDUAL_VIEW(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_INDIVIDUAL_VIEW, EmpathyIndividualView))
#define EMPATHY_INDIVIDUAL_VIEW_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_INDIVIDUAL_VIEW, EmpathyIndividualViewClass))
#define EMPATHY_IS_INDIVIDUAL_VIEW(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_INDIVIDUAL_VIEW))
#define EMPATHY_IS_INDIVIDUAL_VIEW_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_INDIVIDUAL_VIEW))
#define EMPATHY_INDIVIDUAL_VIEW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_INDIVIDUAL_VIEW, EmpathyIndividualViewClass))
typedef struct _EmpathyIndividualView EmpathyIndividualView;
typedef struct _EmpathyIndividualViewClass EmpathyIndividualViewClass;

typedef enum
{
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_NONE = 0,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_GROUPS_SAVE = 1 << 0,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_GROUPS_RENAME = 1 << 1,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_GROUPS_REMOVE = 1 << 2,
  /* NOTE: For this to behave as expected, FEATURE_INDIVIDUAL_DRAG and
   * FEATURE_INDIVIDUAL_DROP should also be specified. */
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_GROUPS_CHANGE = 1 << 3,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_REMOVE = 1 << 4,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_DROP = 1 << 5,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_DRAG = 1 << 6,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_TOOLTIP = 1 << 7,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_INDIVIDUAL_CALL = 1 << 8,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_PERSONA_DROP = 1 << 9,
  EMPATHY_INDIVIDUAL_VIEW_FEATURE_FILE_DROP = 1 << 10,
} EmpathyIndividualViewFeatureFlags;

struct _EmpathyIndividualView
{
  GtkTreeView parent;
  gpointer priv;
};

struct _EmpathyIndividualViewClass
{
  GtkTreeViewClass parent_class;

  void (* drag_individual_received) (EmpathyIndividualView *self,
      GdkDragAction action,
      FolksIndividual *individual,
      const gchar *new_group,
      const gchar *old_group);

  void (* drag_persona_received) (EmpathyIndividualView *self,
      GdkDragAction action,
      FolksPersona *persona,
      FolksIndividual *individual);
};

GType empathy_individual_view_get_type (void) G_GNUC_CONST;

EmpathyIndividualView *empathy_individual_view_new (
    EmpathyIndividualStore *store,
    EmpathyIndividualViewFeatureFlags view_features,
    EmpathyIndividualFeatureFlags individual_features);

FolksIndividual *empathy_individual_view_dup_selected (
    EmpathyIndividualView *view);

GtkWidget *empathy_individual_view_get_individual_menu (
    EmpathyIndividualView *view);

GtkWidget *empathy_individual_view_get_group_menu (EmpathyIndividualView *view);

void empathy_individual_view_set_live_search (EmpathyIndividualView *view,
    EmpathyLiveSearch *search);

gboolean empathy_individual_view_get_show_offline (
    EmpathyIndividualView *view);

void empathy_individual_view_set_show_offline (
    EmpathyIndividualView *view,
    gboolean show_offline);

gboolean empathy_individual_view_get_show_untrusted (
    EmpathyIndividualView *self);

void empathy_individual_view_set_show_untrusted (EmpathyIndividualView *self,
    gboolean show_untrusted);

void empathy_individual_view_set_show_uninteresting (
    EmpathyIndividualView *view,
    gboolean show_uninteresting);

gboolean empathy_individual_view_is_searching (
    EmpathyIndividualView *view);

EmpathyIndividualStore *empathy_individual_view_get_store (
    EmpathyIndividualView *self);
void empathy_individual_view_set_store (EmpathyIndividualView *self,
    EmpathyIndividualStore *store);

void empathy_individual_view_start_search (EmpathyIndividualView *self);

void empathy_individual_view_set_custom_filter (EmpathyIndividualView *self,
    GtkTreeModelFilterVisibleFunc filter,
    gpointer data);

void empathy_individual_view_refilter (EmpathyIndividualView *self);

void empathy_individual_view_select_first (EmpathyIndividualView *self);

G_END_DECLS
#endif /* __EMPATHY_INDIVIDUAL_VIEW_H__ */