aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/widgets/e-minicard-view.c
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@ximian.com>2002-02-13 07:49:39 +0800
committerChris Lahey <clahey@src.gnome.org>2002-02-13 07:49:39 +0800
commit2788f38ed6cd4e82a8eda5183242457e145019d1 (patch)
tree7c3dd73c6250660ce083c98a6c1e42bdbab0e61f /addressbook/gui/widgets/e-minicard-view.c
parentf4d3822695cea3f07e8fb2a40231451884796da3 (diff)
downloadgsoc2013-evolution-2788f38ed6cd4e82a8eda5183242457e145019d1.tar
gsoc2013-evolution-2788f38ed6cd4e82a8eda5183242457e145019d1.tar.gz
gsoc2013-evolution-2788f38ed6cd4e82a8eda5183242457e145019d1.tar.bz2
gsoc2013-evolution-2788f38ed6cd4e82a8eda5183242457e145019d1.tar.lz
gsoc2013-evolution-2788f38ed6cd4e82a8eda5183242457e145019d1.tar.xz
gsoc2013-evolution-2788f38ed6cd4e82a8eda5183242457e145019d1.tar.zst
gsoc2013-evolution-2788f38ed6cd4e82a8eda5183242457e145019d1.zip
Added an argument to get the model.
2002-02-12 Christopher James Lahey <clahey@ximian.com> * gui/widgets/e-addressbook-reflow-adapter.c (addressbook_get_arg): Added an argument to get the model. * gui/widgets/e-addressbook-view.c (writable_status): Don't bother connecting to the writable_status callback on the book, simply rely on the writable_status callback on the addressbook model. * gui/widgets/e-minicard-view.c, gui/widgets/e-minicard-view.h (set_empty_message): Handle the case of a read only view here. svn path=/trunk/; revision=15698
Diffstat (limited to 'addressbook/gui/widgets/e-minicard-view.c')
-rw-r--r--addressbook/gui/widgets/e-minicard-view.c81
1 files changed, 74 insertions, 7 deletions
diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c
index 342e037337..92ac189bca 100644
--- a/addressbook/gui/widgets/e-minicard-view.c
+++ b/addressbook/gui/widgets/e-minicard-view.c
@@ -143,20 +143,43 @@ e_minicard_view_drag_begin (EAddressbookReflowAdapter *adapter, GdkEvent *event,
}
static void
-adapter_changed (EMinicardView *view)
+set_empty_message (EMinicardView *view)
{
char *empty_message;
+ gboolean editable = FALSE;
+
+ if (view->adapter) {
+ gtk_object_get (GTK_OBJECT (view->adapter),
+ "editable", &editable,
+ NULL);
+ }
+
+ if (editable)
+ empty_message = e_utf8_from_locale_string(_("\n\nThere are no items to show in this view.\n\n"
+ "Double-click here to create a new Contact."));
+ else
+ empty_message = e_utf8_from_locale_string(_("\n\nThere are no items to show in this view."));
- empty_message = e_utf8_from_locale_string(_("\n\nThere are no items to show in this view\n\n"
- "Double-click here to create a new Contact."));
gtk_object_set (GTK_OBJECT(view),
"empty_message", empty_message,
NULL);
+ g_free (empty_message);
+}
+
+static void
+writable_status_change (EAddressbookModel *model, gboolean writable, EMinicardView *view)
+{
+ set_empty_message (view);
+}
+
+static void
+adapter_changed (EMinicardView *view)
+{
+ set_empty_message (view);
+
gtk_signal_connect (GTK_OBJECT (view->adapter), "drag_begin",
GTK_SIGNAL_FUNC (e_minicard_view_drag_begin), view);
-
- g_free (empty_message);
}
static void
@@ -170,19 +193,44 @@ e_minicard_view_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
switch (arg_id){
case ARG_ADAPTER:
- if (view->adapter)
+ if (view->adapter) {
+ if (view->writable_status_id) {
+ EAddressbookModel *model;
+ gtk_object_get (GTK_OBJECT (view->adapter),
+ "model", &model,
+ NULL);
+ if (model) {
+ gtk_signal_disconnect (GTK_OBJECT (model), view->writable_status_id);
+ }
+ }
+
gtk_object_unref (GTK_OBJECT(view->adapter));
+ }
+ view->writable_status_id = 0;
view->adapter = GTK_VALUE_POINTER (*arg);
gtk_object_ref (GTK_OBJECT (view->adapter));
adapter_changed (view);
gtk_object_set (GTK_OBJECT (view),
"model", view->adapter,
NULL);
+ if (view->adapter) {
+ EAddressbookModel *model;
+ gtk_object_get (GTK_OBJECT (view->adapter),
+ "model", &model,
+ NULL);
+ if (model) {
+ view->writable_status_id =
+ gtk_signal_connect (GTK_OBJECT (model), "writable_status",
+ GTK_SIGNAL_FUNC (writable_status_change), view);
+ }
+
+ }
break;
case ARG_BOOK:
gtk_object_set (GTK_OBJECT (view->adapter),
"book", GTK_VALUE_OBJECT (*arg),
NULL);
+ set_empty_message (view);
break;
case ARG_QUERY:
gtk_object_set (GTK_OBJECT (view->adapter),
@@ -193,6 +241,7 @@ e_minicard_view_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
gtk_object_set (GTK_OBJECT (view->adapter),
"editable", GTK_VALUE_BOOL (*arg),
NULL);
+ set_empty_message (view);
break;
}
}
@@ -238,7 +287,22 @@ e_minicard_view_destroy (GtkObject *object)
gtk_signal_disconnect (GTK_OBJECT (GNOME_CANVAS_ITEM (view)->canvas),
view->canvas_drag_data_get_id);
}
- gtk_object_unref (GTK_OBJECT (view->adapter));
+
+ if (view->adapter) {
+ if (view->writable_status_id) {
+ EAddressbookModel *model;
+ gtk_object_get (GTK_OBJECT (view->adapter),
+ "model", &model,
+ NULL);
+ if (model) {
+ gtk_signal_disconnect (GTK_OBJECT (model), view->writable_status_id);
+ }
+ }
+
+ gtk_object_unref (GTK_OBJECT(view->adapter));
+ }
+ view->writable_status_id = 0;
+ view->adapter = NULL;
GTK_OBJECT_CLASS(parent_class)->destroy (object);
}
@@ -431,6 +495,9 @@ e_minicard_view_init (EMinicardView *view)
{
view->adapter = NULL;
view->canvas_drag_data_get_id = 0;
+ view->writable_status_id = 0;
+
+ set_empty_message (view);
}
GtkType