aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc/e-reflow-model.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/misc/e-reflow-model.c')
-rw-r--r--widgets/misc/e-reflow-model.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/widgets/misc/e-reflow-model.c b/widgets/misc/e-reflow-model.c
index 489a18b7e1..33a5498df5 100644
--- a/widgets/misc/e-reflow-model.c
+++ b/widgets/misc/e-reflow-model.c
@@ -36,8 +36,10 @@ static GObjectClass *e_reflow_model_parent_class;
enum {
MODEL_CHANGED,
+ COMPARISON_CHANGED,
MODEL_ITEMS_INSERTED,
MODEL_ITEM_CHANGED,
+ MODEL_ITEM_REMOVED,
LAST_SIGNAL
};
@@ -161,6 +163,15 @@ e_reflow_model_class_init (GObjectClass *object_class)
e_marshal_NONE__NONE,
G_TYPE_NONE, 0);
+ e_reflow_model_signals [COMPARISON_CHANGED] =
+ g_signal_new ("comparison_changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EReflowModelClass, comparison_changed),
+ NULL, NULL,
+ e_marshal_NONE__NONE,
+ G_TYPE_NONE, 0);
+
e_reflow_model_signals [MODEL_ITEMS_INSERTED] =
g_signal_new ("model_items_inserted",
G_OBJECT_CLASS_TYPE (object_class),
@@ -179,6 +190,15 @@ e_reflow_model_class_init (GObjectClass *object_class)
e_marshal_NONE__INT,
G_TYPE_NONE, 1, G_TYPE_INT);
+ e_reflow_model_signals [MODEL_ITEM_REMOVED] =
+ g_signal_new ("model_item_removed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EReflowModelClass, model_item_removed),
+ NULL, NULL,
+ e_marshal_NONE__INT,
+ G_TYPE_NONE, 1, G_TYPE_INT);
+
klass->set_width = NULL;
klass->count = NULL;
klass->height = NULL;
@@ -186,7 +206,9 @@ e_reflow_model_class_init (GObjectClass *object_class)
klass->reincarnate = NULL;
klass->model_changed = NULL;
+ klass->comparison_changed = NULL;
klass->model_items_inserted = NULL;
+ klass->model_item_removed = NULL;
klass->model_item_changed = NULL;
}
@@ -236,6 +258,29 @@ e_reflow_model_changed (EReflowModel *e_reflow_model)
}
/**
+ * e_reflow_model_comparison_changed:
+ * @e_reflow_model: the reflow model to notify of the change
+ *
+ * Use this function to notify any views of this reflow model that the
+ * sorting has changed. The actual contents of the items hasn't, so
+ * there's no need to re-query the model for the heights of the
+ * individual items.
+ */
+void
+e_reflow_model_comparison_changed (EReflowModel *e_reflow_model)
+{
+ g_return_if_fail (e_reflow_model != NULL);
+ g_return_if_fail (E_IS_REFLOW_MODEL (e_reflow_model));
+
+ d(print_tabs());
+ d(g_print("Emitting comparison_changed on model 0x%p.\n", e_reflow_model));
+ d(depth++);
+ g_signal_emit (e_reflow_model,
+ e_reflow_model_signals [COMPARISON_CHANGED], 0);
+ d(depth--);
+}
+
+/**
* e_reflow_model_items_inserted:
* @e_reflow_model: The model changed.
* @position: The position the items were insert in.
@@ -259,6 +304,31 @@ e_reflow_model_items_inserted (EReflowModel *e_reflow_model, int position, int c
}
/**
+ * e_reflow_model_item_removed:
+ * @e_reflow_model: The model changed.
+ * @n: The position from which the items were removed.
+ *
+ * Use this function to notify any views of the reflow model that an
+ * item has been removed.
+ **/
+void
+e_reflow_model_item_removed (EReflowModel *e_reflow_model,
+ int n)
+{
+ g_return_if_fail (e_reflow_model != NULL);
+ g_return_if_fail (E_IS_REFLOW_MODEL (e_reflow_model));
+
+ d(print_tabs());
+ d(g_print("Emitting item_removed on model 0x%p, n=%d.\n", e_reflow_model, n));
+ d(depth++);
+ g_signal_emit (e_reflow_model,
+ e_reflow_model_signals [MODEL_ITEM_REMOVED], 0,
+ n);
+ d(depth--);
+}
+
+
+/**
* e_reflow_model_item_changed:
* @e_reflow_model: the reflow model to notify of the change
* @item: the item that was changed in the model.