~mhr3/dee/add-changesets

« back to all changes in this revision

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

  • Committer: Michal Hruby
  • Date: 2013-09-10 15:54:29 UTC
  • Revision ID: michal.mhr@gmail.com-20130910155429-hoqhe0f1my70jlgi
Add support for changesets to DeeModel API

Show diffs side-by-side

added added

removed removed

Lines of Context:
97
97
  gulong      on_orig_row_added_id;
98
98
  gulong      on_orig_row_removed_id;
99
99
  gulong      on_orig_row_changed_id;
 
100
  gulong      on_orig_changeset_started_id;
 
101
  gulong      on_orig_changeset_finished_id;
100
102
};
101
103
 
102
104
enum
162
164
static void        on_orig_model_row_changed     (DeeFilterModel *self,
163
165
                                                  DeeModelIter   *iter);
164
166
 
 
167
static void        on_orig_model_changeset_started  (DeeFilterModel *self,
 
168
                                                     DeeModel       *iter);
 
169
 
 
170
static void        on_orig_model_changeset_finished (DeeFilterModel *self,
 
171
                                                     DeeModel       *iter);
 
172
 
165
173
/* GObject stuff */
166
174
static void
167
175
dee_filter_model_finalize (GObject *object)
192
200
    g_signal_handler_disconnect (priv->orig_model, priv->on_orig_row_removed_id);
193
201
  if (priv->on_orig_row_changed_id != 0)
194
202
    g_signal_handler_disconnect (priv->orig_model, priv->on_orig_row_changed_id);
 
203
  if (priv->on_orig_changeset_started_id != 0)
 
204
    g_signal_handler_disconnect (priv->orig_model, priv->on_orig_changeset_started_id);
 
205
  if (priv->on_orig_changeset_finished_id != 0)
 
206
    g_signal_handler_disconnect (priv->orig_model, priv->on_orig_changeset_finished_id);
195
207
 
196
208
  priv->on_orig_row_added_id = 0;
197
209
  priv->on_orig_row_removed_id = 0;
198
210
  priv->on_orig_row_changed_id = 0;
 
211
  priv->on_orig_changeset_started_id = 0;
 
212
  priv->on_orig_changeset_finished_id = 0;
199
213
 
200
214
  if (priv->orig_model)
201
215
    {
242
256
    g_signal_connect_swapped (priv->orig_model, "row-changed",
243
257
                              G_CALLBACK (on_orig_model_row_changed), object);
244
258
 
 
259
  priv->on_orig_changeset_started_id =
 
260
    g_signal_connect_swapped (priv->orig_model, "changeset-started",
 
261
                              G_CALLBACK (on_orig_model_changeset_started),
 
262
                              object);
 
263
 
 
264
  priv->on_orig_changeset_finished_id =
 
265
    g_signal_connect_swapped (priv->orig_model, "changeset-finished",
 
266
                              G_CALLBACK (on_orig_model_changeset_finished),
 
267
                              object);
 
268
 
245
269
  if (G_OBJECT_CLASS (dee_filter_model_parent_class)->constructed)
246
270
    G_OBJECT_CLASS (dee_filter_model_parent_class)->constructed (object);
247
271
}
327
351
  priv->on_orig_row_added_id = 0;
328
352
  priv->on_orig_row_removed_id = 0;
329
353
  priv->on_orig_row_changed_id = 0;
 
354
  priv->on_orig_changeset_started_id = 0;
 
355
  priv->on_orig_changeset_finished_id = 0;
330
356
}
331
357
 
332
358
static void
681
707
    }
682
708
}
683
709
 
 
710
static void
 
711
on_orig_model_changeset_started (DeeFilterModel *self,
 
712
                                 DeeModel *model)
 
713
{
 
714
  DeeFilterModelPrivate *priv;
 
715
  
 
716
  priv = self->priv;
 
717
  
 
718
  if (priv->ignore_orig_signals)
 
719
    return;
 
720
 
 
721
  /* this can end up being an empty changeset, but that's ok */
 
722
  g_signal_emit_by_name (self, "changeset-started");
 
723
}
 
724
 
 
725
static void
 
726
on_orig_model_changeset_finished (DeeFilterModel *self,
 
727
                                  DeeModel *model)
 
728
{
 
729
  DeeFilterModelPrivate *priv;
 
730
  
 
731
  priv = self->priv;
 
732
  
 
733
  if (priv->ignore_orig_signals)
 
734
    return;
 
735
  
 
736
  g_signal_emit_by_name (self, "changeset-finished");
 
737
}
 
738
 
684
739
/*
685
740
 * DeeModel Interface Implementation
686
741
 */