~ps-jenkins/dee/trusty-proposed

« back to all changes in this revision

Viewing changes to src/dee-proxy-model.c

  • Committer: Tarmac
  • Author(s): Michal Hruby
  • Date: 2013-09-17 08:21:38 UTC
  • mfrom: (424.1.6 dee)
  • Revision ID: tarmac-20130917082138-iwnjovqr40nvanjf
Add support for changesets to DeeModel API. Fixes: https://bugs.launchpad.net/bugs/1224008.

Approved by Pawel Stolowski, PS Jenkins bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
81
81
  gulong     row_added_handler;
82
82
  gulong     row_removed_handler;
83
83
  gulong     row_changed_handler;
 
84
  gulong     changeset_started_handler;
 
85
  gulong     changeset_finished_handler;
84
86
};
85
87
 
86
88
#define DEE_PROXY_MODEL_BACK_END(model) (DEE_PROXY_MODEL(model)->priv->back_end)
233
235
                                                      DeeModelTag    *tag,
234
236
                                                      gpointer        value);
235
237
 
 
238
static void           dee_proxy_model_begin_changeset (DeeModel *self);
 
239
 
 
240
static void           dee_proxy_model_end_changeset   (DeeModel *self);
 
241
 
236
242
/*
237
243
 * Callbacks for relaying signals from the back end model
238
244
 */
245
251
static void           on_back_end_row_changed        (DeeProxyModel *self,
246
252
                                                      DeeModelIter  *iter);
247
253
 
 
254
static void           on_back_end_changeset_started  (DeeProxyModel *self,
 
255
                                                      DeeModel *model);
 
256
 
 
257
static void           on_back_end_changeset_finished (DeeProxyModel *self,
 
258
                                                      DeeModel *model);
 
259
 
248
260
/*
249
261
 * Overrides for DeeSerializableModel
250
262
 */
270
282
        g_signal_handler_disconnect (priv->back_end, priv->row_removed_handler);
271
283
      if (priv->row_changed_handler != 0)
272
284
        g_signal_handler_disconnect (priv->back_end, priv->row_changed_handler);
 
285
      if (priv->changeset_started_handler != 0)
 
286
        g_signal_handler_disconnect (priv->back_end, priv->changeset_started_handler);
 
287
      if (priv->changeset_finished_handler != 0)
 
288
        g_signal_handler_disconnect (priv->back_end, priv->changeset_finished_handler);
273
289
 
274
290
      g_object_unref (priv->back_end);
275
291
    }
302
318
      priv->row_changed_handler =
303
319
        g_signal_connect_swapped (priv->back_end, "row-changed",
304
320
                                  G_CALLBACK (on_back_end_row_changed), object);
 
321
 
 
322
      priv->changeset_started_handler =
 
323
        g_signal_connect_swapped (priv->back_end, "changeset-started",
 
324
                                  G_CALLBACK (on_back_end_changeset_started),
 
325
                                  object);
 
326
 
 
327
      priv->changeset_finished_handler =
 
328
        g_signal_connect_swapped (priv->back_end, "changeset-finished",
 
329
                                  G_CALLBACK (on_back_end_changeset_finished),
 
330
                                  object);
305
331
    }
306
332
  
307
333
  /* GObjectClass has NULL 'constructed' member, but we add this check for
407
433
   * from the back end model.
408
434
   * You will most likely want to set this property to false
409
435
   * if the implementation manipulates with the rows in the model and keep
410
 
   * track of seqnums.
 
436
   * track of seqnums yourself.
411
437
   **/
412
438
  pspec = g_param_spec_boolean ("inherit-seqnums", "Inherit seqnums",
413
439
                                "Whether or not to inherit seqnums",
462
488
  iface->register_tag          = dee_proxy_model_register_tag;
463
489
  iface->get_tag               = dee_proxy_model_get_tag;
464
490
  iface->set_tag               = dee_proxy_model_set_tag;
 
491
  iface->begin_changeset       = dee_proxy_model_begin_changeset;
 
492
  iface->end_changeset         = dee_proxy_model_end_changeset;
465
493
 
466
494
  iface->register_vardict_schema = dee_proxy_model_register_vardict_schema;
467
495
  iface->get_vardict_schema      = dee_proxy_model_get_vardict_schema;
479
507
  priv->row_added_handler = 0;
480
508
  priv->row_removed_handler = 0;
481
509
  priv->row_changed_handler = 0;
 
510
  priv->changeset_started_handler = 0;
 
511
  priv->changeset_finished_handler = 0;
482
512
}
483
513
 
484
514
/*
891
921
  return dee_model_set_tag (DEE_PROXY_MODEL_BACK_END (self), iter, tag, value);
892
922
}
893
923
 
 
924
static void
 
925
dee_proxy_model_begin_changeset (DeeModel *self)
 
926
{
 
927
  g_return_if_fail (DEE_IS_PROXY_MODEL (self));
 
928
 
 
929
  dee_model_begin_changeset (DEE_PROXY_MODEL_BACK_END (self));
 
930
}
 
931
 
 
932
static void
 
933
dee_proxy_model_end_changeset (DeeModel *self)
 
934
{
 
935
  g_return_if_fail (DEE_IS_PROXY_MODEL (self));
 
936
 
 
937
  dee_model_end_changeset (DEE_PROXY_MODEL_BACK_END (self));
 
938
}
 
939
 
894
940
/*
895
941
 * Relay signals from back end
896
942
 */
916
962
  g_signal_emit_by_name (self, "row-changed", iter);
917
963
}
918
964
 
 
965
static void
 
966
on_back_end_changeset_started (DeeProxyModel *self,
 
967
                               DeeModel *model)
 
968
{
 
969
  g_signal_emit_by_name (self, "changeset-started");
 
970
}
 
971
 
 
972
static void
 
973
on_back_end_changeset_finished (DeeProxyModel *self,
 
974
                                DeeModel *model)
 
975
{
 
976
  g_signal_emit_by_name (self, "changeset-finished");
 
977
}
 
978
 
919
979
/*
920
980
 * Overrides for DeeSerializableModel
921
981
 */