~3v1n0/unity/light-shortcuts

« back to all changes in this revision

Viewing changes to tests/bamf-mock-window.c

  • Committer: Marco Trevisan (Treviño)
  • Date: 2013-04-26 12:41:09 UTC
  • Revision ID: mail@3v1n0.net-20130426124109-t3b2shjah2omiqa2
Unity: Remove all the views, but the Shortcuts

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
2
 
/*
3
 
 * Copyright 2012 Canonical Ltd.
4
 
 *
5
 
 * This program is free software: you can redistribute it and/or modify it
6
 
 * under the terms of the GNU Lesser General Public License version 3, as
7
 
 * published by the  Free Software Foundation.
8
 
 *
9
 
 * This program is distributed in the hope that it will be useful, but
10
 
 * WITHOUT ANY WARRANTY; without even the implied warranties of
11
 
 * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
12
 
 * PURPOSE.  See the applicable version of the GNU Lesser General Public
13
 
 * License for more details.
14
 
 *
15
 
 * You should have received a copy of both the GNU Lesser General Public
16
 
 * License version 3 along with this program.  If not, see
17
 
 * <http://www.gnu.org/licenses/>
18
 
 *
19
 
 * Authored by: Andrea Azzaronea <andrea.azzarone@canonical>
20
 
 *
21
 
 */
22
 
 
23
 
#include <glib.h>
24
 
 
25
 
#include "bamf-mock-window.h"
26
 
 
27
 
G_DEFINE_TYPE (BamfMockWindow, bamf_mock_window, BAMF_TYPE_WINDOW);
28
 
 
29
 
#define BAMF_MOCK_WINDOW_GET_PRIVATE(o) \
30
 
  (G_TYPE_INSTANCE_GET_PRIVATE ((o), BAMF_TYPE_MOCK_WINDOW, BamfMockWindowPrivate))
31
 
 
32
 
struct _BamfMockWindowPrivate
33
 
{
34
 
  BamfWindow* transient;
35
 
  BamfWindowType window_type;
36
 
  guint32 xid;
37
 
  guint32 pid;
38
 
  gint monitor;
39
 
  GHashTable* props;
40
 
  BamfWindowMaximizationType maximized;
41
 
  time_t last_active;
42
 
};
43
 
 
44
 
void
45
 
bamf_mock_window_set_transient (BamfMockWindow *self, BamfWindow* transient)
46
 
{
47
 
  g_return_if_fail (BAMF_IS_MOCK_WINDOW (self));
48
 
 
49
 
  self->priv->transient = transient;
50
 
  g_object_add_weak_pointer (G_OBJECT (self->priv->transient), (gpointer *) &self->priv->transient);
51
 
}
52
 
 
53
 
void
54
 
bamf_mock_window_set_window_type (BamfMockWindow *self, BamfWindowType window_type)
55
 
{
56
 
  g_return_if_fail (BAMF_IS_MOCK_WINDOW (self));
57
 
  self->priv->window_type = window_type;
58
 
}
59
 
 
60
 
void
61
 
bamf_mock_window_set_xid (BamfMockWindow *self, guint32 xid)
62
 
{
63
 
  g_return_if_fail (BAMF_IS_MOCK_WINDOW (self));
64
 
  self->priv->xid = xid;
65
 
}
66
 
 
67
 
void
68
 
bamf_mock_window_set_pid (BamfMockWindow *self, guint32 pid)
69
 
{
70
 
  g_return_if_fail (BAMF_IS_MOCK_WINDOW (self));
71
 
  self->priv->pid = pid;
72
 
}
73
 
 
74
 
void
75
 
bamf_mock_window_set_monitor (BamfMockWindow *self, gint monitor)
76
 
{
77
 
  g_return_if_fail (BAMF_IS_MOCK_WINDOW (self));
78
 
 
79
 
  if (self->priv->monitor != monitor)
80
 
  {
81
 
    gint old_value = self->priv->monitor;
82
 
    self->priv->monitor = monitor;
83
 
    g_signal_emit_by_name (G_OBJECT (self), "monitor-changed", old_value, monitor, NULL);
84
 
  }
85
 
}
86
 
 
87
 
void 
88
 
bamf_mock_window_set_utf8_prop (BamfMockWindow *self, const char* prop, const char* value)
89
 
{
90
 
  g_return_if_fail (BAMF_IS_MOCK_WINDOW (self));
91
 
 
92
 
  g_hash_table_insert(self->priv->props, g_strdup(prop), g_strdup(value));
93
 
}
94
 
 
95
 
void
96
 
bamf_mock_window_set_maximized (BamfMockWindow *self, BamfWindowMaximizationType maximized)
97
 
{
98
 
  g_return_if_fail (BAMF_IS_MOCK_WINDOW (self));
99
 
 
100
 
  if (self->priv->maximized != maximized)
101
 
  {
102
 
    BamfWindowMaximizationType old_value = self->priv->maximized;
103
 
    self->priv->maximized = maximized;
104
 
    g_signal_emit_by_name (G_OBJECT (self), "maximized-changed", old_value, maximized, NULL);
105
 
  }
106
 
}
107
 
 
108
 
void bamf_mock_window_set_last_active (BamfMockWindow *self, time_t last_active)
109
 
{
110
 
  g_return_if_fail (BAMF_IS_MOCK_WINDOW (self));
111
 
  self->priv->last_active = last_active;
112
 
}
113
 
 
114
 
static void
115
 
bamf_mock_window_finalize (GObject *object)
116
 
{
117
 
  BamfMockWindow *self = BAMF_MOCK_WINDOW (object);
118
 
 
119
 
  if (self->priv->transient)
120
 
  {
121
 
    g_object_remove_weak_pointer(G_OBJECT (self->priv->transient), (gpointer *) &self->priv->transient);
122
 
    self->priv->transient = NULL;
123
 
  }
124
 
 
125
 
 
126
 
  if (self->priv->props)
127
 
  {
128
 
    g_hash_table_unref (self->priv->props);
129
 
    self->priv->props = NULL;
130
 
  }
131
 
}
132
 
 
133
 
static BamfWindow *
134
 
bamf_mock_window_get_transient (BamfWindow *window)
135
 
{
136
 
  g_return_val_if_fail (BAMF_IS_MOCK_WINDOW (window), NULL);
137
 
  BamfMockWindow *self = BAMF_MOCK_WINDOW (window);
138
 
  return self->priv->transient;
139
 
}
140
 
 
141
 
static BamfWindowType
142
 
bamf_mock_window_get_window_type (BamfWindow *window)
143
 
{
144
 
  g_return_val_if_fail (BAMF_IS_MOCK_WINDOW (window), BAMF_WINDOW_NORMAL);
145
 
  BamfMockWindow *self = BAMF_MOCK_WINDOW (window);
146
 
  return self->priv->window_type;
147
 
}
148
 
 
149
 
static guint32
150
 
bamf_mock_window_get_xid (BamfWindow *window)
151
 
{
152
 
  g_return_val_if_fail (BAMF_IS_MOCK_WINDOW (window), 0);
153
 
  BamfMockWindow *self = BAMF_MOCK_WINDOW (window);
154
 
  return self->priv->xid;
155
 
}
156
 
 
157
 
static guint32
158
 
bamf_mock_window_get_pid (BamfWindow *window)
159
 
{
160
 
  g_return_val_if_fail (BAMF_IS_MOCK_WINDOW (window), 0);
161
 
  BamfMockWindow *self = BAMF_MOCK_WINDOW (window);
162
 
  return self->priv->pid;
163
 
}
164
 
 
165
 
static gint
166
 
bamf_mock_window_get_monitor (BamfWindow *window)
167
 
{
168
 
  g_return_val_if_fail (BAMF_IS_MOCK_WINDOW (window), BAMF_WINDOW_NORMAL);
169
 
  BamfMockWindow *self = BAMF_MOCK_WINDOW (window);
170
 
  return self->priv->monitor;
171
 
}
172
 
 
173
 
static gchar *
174
 
bamf_mock_window_get_utf8_prop (BamfWindow *window, const char* prop)
175
 
{
176
 
  g_return_val_if_fail (BAMF_IS_MOCK_WINDOW (window), BAMF_WINDOW_NORMAL);
177
 
  BamfMockWindow *self = BAMF_MOCK_WINDOW (window);
178
 
 
179
 
  if (g_hash_table_lookup(self->priv->props, prop))
180
 
    return g_strdup(g_hash_table_lookup(self->priv->props, prop));
181
 
 
182
 
  return NULL;
183
 
}
184
 
 
185
 
static BamfWindowMaximizationType
186
 
bamf_mock_window_maximized (BamfWindow *window)
187
 
{
188
 
  g_return_val_if_fail (BAMF_IS_MOCK_WINDOW (window), BAMF_WINDOW_FLOATING);
189
 
  BamfMockWindow *self = BAMF_MOCK_WINDOW (window);
190
 
  return self->priv->maximized;
191
 
}
192
 
 
193
 
static time_t
194
 
bamf_mock_window_last_active (BamfWindow *window)
195
 
{
196
 
  g_return_val_if_fail (BAMF_IS_MOCK_WINDOW (window), 0);
197
 
  BamfMockWindow *self = BAMF_MOCK_WINDOW (window);
198
 
  return self->priv->last_active;
199
 
200
 
 
201
 
static void
202
 
bamf_mock_window_class_init (BamfMockWindowClass *klass)
203
 
{
204
 
  GObjectClass *obj_class = G_OBJECT_CLASS (klass);
205
 
  BamfWindowClass *window_class = BAMF_WINDOW_CLASS (klass);
206
 
 
207
 
  obj_class->finalize = bamf_mock_window_finalize;
208
 
  window_class->get_transient = bamf_mock_window_get_transient;
209
 
  window_class->get_window_type = bamf_mock_window_get_window_type;
210
 
  window_class->get_xid = bamf_mock_window_get_xid;
211
 
  window_class->get_pid = bamf_mock_window_get_pid;
212
 
  window_class->get_monitor = bamf_mock_window_get_monitor;
213
 
  window_class->get_utf8_prop = bamf_mock_window_get_utf8_prop;
214
 
  window_class->maximized = bamf_mock_window_maximized;
215
 
  window_class->last_active = bamf_mock_window_last_active;
216
 
 
217
 
  g_type_class_add_private (obj_class, sizeof (BamfMockWindowPrivate));
218
 
}
219
 
 
220
 
static void
221
 
bamf_mock_window_init (BamfMockWindow *self)
222
 
{
223
 
  self->priv = BAMF_MOCK_WINDOW_GET_PRIVATE (self);
224
 
 
225
 
  self->priv->transient = NULL;
226
 
  self->priv->window_type = BAMF_WINDOW_NORMAL;
227
 
  self->priv->xid = 0;
228
 
  self->priv->pid = 0;
229
 
  self->priv->monitor = 0;
230
 
  self->priv->props = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
231
 
  self->priv->maximized = BAMF_WINDOW_FLOATING;
232
 
  self->priv->last_active = 0;
233
 
}
234
 
 
235
 
BamfMockWindow *
236
 
bamf_mock_window_new ()
237
 
{
238
 
  return g_object_new (BAMF_TYPE_MOCK_WINDOW, NULL);
239
 
}