415
* @filter: The filter to apply
416
* @orig_iter: The #DeeModelIter added to @orig_model
417
* @orig_model: The model that is being filtered
418
* @filter_model: The #DeeFilterModel that holds the
419
* filtered subset of @orig_model
421
* Call the #DeeFilterMapNotify function of a #DeeFilter.
422
* When using a #DeeFilterModel you should not call this method yourself.
424
* Returns: The return value from the #DeeFilterMapNotify. That is; %TRUE
425
* if @orig_iter was added to @filter_model
428
dee_filter_notify (DeeFilter *filter,
429
DeeModelIter *orig_iter,
430
DeeModel *orig_model,
431
DeeFilterModel *filter_model)
433
g_return_val_if_fail (filter != NULL, FALSE);
435
return filter->map_notify (orig_model, orig_iter,
436
filter_model, filter->userdata);
441
* @filter: The filter to apply
442
* @orig_model: The model that is being filtered
443
* @filter_model: The #DeeFilterModel that holds the
444
* filtered subset of @orig_model
446
* Call the #DeeFilterMapFunc function of a #DeeFilter.
447
* When using a #DeeFilterModel you should not call this method yourself.
450
dee_filter_map (DeeFilter *filter,
451
DeeModel *orig_model,
452
DeeFilterModel *filter_model)
454
g_return_if_fail (filter != NULL);
456
filter->map_func (orig_model, filter_model, filter->userdata);
460
* dee_filter_destroy:
461
* @filter: The filter to destroy
463
* Call the #GDestroyNotify function on the userdata pointer of a #DeeFilter
464
* (if the destroy member is set, that is).
466
* When using a #DeeFilterModel you should not call this method yourself.
468
* This method will not free the memory allocated for @filter.
471
dee_filter_destroy (DeeFilter *filter)
473
g_return_if_fail (filter != NULL);
476
filter->destroy (filter->userdata);
481
* @map_func: (scope notified): The #DeeFilterMapFunc to use for the filter
482
* @map_notify: (scope notified): The #DeeFilterMapNotify to use for the filter
483
* @userdata: (closure) (allow-none): The user data to pass to
484
@map_func and @map_notify
485
* @destroy: (allow-none): The #GDestroyNotify to call on
486
* @userdata when disposing of the filter
487
* @out_filter: (out): A pointer to an uninitialized #DeeFilter struct.
488
* This struct will zeroed and configured with the filter
491
* Create a new #DeeFilter with the given parameters. This call will zero
492
* the @out_filter struct.
496
dee_filter_new (DeeFilterMapFunc map_func,
497
DeeFilterMapNotify map_notify,
498
GDestroyNotify destroy,
500
DeeFilter *out_filter)
502
g_return_if_fail (map_func != NULL);
503
g_return_if_fail (map_notify != NULL);
504
g_return_if_fail (out_filter != NULL);
506
memset (out_filter, 0, sizeof (DeeFilter));
508
out_filter->map_func = map_func;
509
out_filter->map_notify = map_notify;
510
out_filter->userdata = userdata;
511
out_filter->destroy = destroy;
404
515
* dee_filter_new_collator:
405
516
* @column: The index of a column containing the strings to sort after
517
* @out_filter: (out): A pointer to an uninitialized #DeeFilter struct.
518
* This struct will zeroed and configured with the filter
407
521
* Create a #DeeFilter that takes string values from a column in the model
408
522
* and builds a #DeeFilterModel with the rows sorted according to the
409
523
* collation rules of the current locale.
411
* Returns: (transfer full): A newly allocated #DeeFilter. Do not modify it.
412
* Free with g_free().
415
dee_filter_new_collator (guint column)
526
dee_filter_new_collator (guint column,
527
DeeFilter *out_filter)
418
529
CollatorFilter *collator;
420
filter = g_new0 (DeeFilter, 1);
421
filter->map_func = _dee_filter_collator_map_func;
422
filter->map_notify = _dee_filter_collator_map_notify;
424
531
collator = g_new0 (CollatorFilter, 1);
425
532
collator->column = column;
427
filter->destroy = (GDestroyNotify) g_free;
428
filter->user_data =collator;
534
dee_filter_new (_dee_filter_collator_map_func,
535
_dee_filter_collator_map_notify,
536
(GDestroyNotify) g_free,
434
542
* dee_filter_new_collator_desc:
435
543
* @column: The index of a column containing the strings to sort after
544
* @out_filter: (out): A pointer to an uninitialized #DeeFilter struct.
545
* This struct will zeroed and configured with the filter
437
548
* Create a #DeeFilter that takes string values from a column in the model
438
549
* and builds a #DeeFilterModel with the rows sorted descending according to the
439
550
* collation rules of the current locale.
441
* Returns: (transfer full): A newly allocated #DeeFilter. Do not modify it.
442
* Free with g_free().
445
dee_filter_new_collator_desc (guint column)
553
dee_filter_new_collator_desc (guint column,
554
DeeFilter *out_filter)
448
556
CollatorFilter *collator;
450
filter = g_new0 (DeeFilter, 1);
451
filter->map_func = _dee_filter_collator_desc_map_func;
452
filter->map_notify = _dee_filter_collator_desc_map_notify;
454
558
collator = g_new0 (CollatorFilter, 1);
455
559
collator->column = column;
457
filter->destroy = (GDestroyNotify) g_free;
458
filter->user_data =collator;
561
dee_filter_new (_dee_filter_collator_desc_map_func,
562
_dee_filter_collator_desc_map_notify,
563
(GDestroyNotify) g_free,
465
570
* dee_filter_new_for_key_column:
466
571
* @column: The index of a column containing the string key to match
572
* @out_filter: (out): A pointer to an uninitialized #DeeFilter struct.
573
* This struct will zeroed and configured with the filter
468
576
* Create a #DeeFilter that only includes rows from the original model
469
577
* which has an exact match on some string column. A #DeeFilterModel created
470
578
* with this filter will be ordered in accordance with its parent model.
472
* Returns: (transfer full): A newly allocated #DeeFilter. Do not modify it.
473
* Free with g_free().
476
dee_filter_new_for_key_column (guint column, const gchar *key)
581
dee_filter_new_for_key_column (guint column,
583
DeeFilter *out_filter)
479
585
KeyFilter *key_filter;
481
filter = g_new0 (DeeFilter, 1);
482
filter->map_func = _dee_filter_key_map_func;
483
filter->map_notify = _dee_filter_key_map_notify;
587
g_return_if_fail (key != NULL);
485
589
key_filter = g_new0 (KeyFilter, 1);
486
590
key_filter->column = column;
487
591
key_filter->key = g_strdup (key);
489
filter->destroy = (GDestroyNotify) key_filter_free;
490
filter->user_data = key_filter;
593
dee_filter_new (_dee_filter_key_map_func,
594
_dee_filter_key_map_notify,
595
(GDestroyNotify) key_filter_free,
507
615
* value comparison is done using g_variant_equal(). This means you can use
508
616
* this filter as a convenient fallback when there is no predefined filter
509
617
* for your column type if raw performance is not paramount.
511
* Returns: (transfer full): A newly allocated #DeeFilter. Do not modify it.
512
* Free with g_free().
515
dee_filter_new_for_any_column (guint column, GVariant *value)
620
dee_filter_new_for_any_column (guint column,
622
DeeFilter *out_filter)
518
624
ValueFilter *v_filter;
520
g_return_val_if_fail (value != NULL, NULL);
522
filter = g_new0 (DeeFilter, 1);
523
filter->map_func = _dee_filter_value_map_func;
524
filter->map_notify = _dee_filter_value_map_notify;
626
g_return_if_fail (value != NULL);
526
628
v_filter = g_new0 (ValueFilter, 1);
527
629
v_filter->column = column;
528
630
v_filter->value = g_variant_ref_sink (value);
530
filter->destroy = (GDestroyNotify) value_filter_free;
531
filter->user_data = v_filter;
632
dee_filter_new (_dee_filter_value_map_func,
633
_dee_filter_value_map_notify,
634
(GDestroyNotify) value_filter_free,
537
640
* dee_filter_new_regex:
538
641
* @column: The index of a column containing the string to match
539
642
* @regex: (transfer none):The regular expression @column must match
643
* @out_filter: (out): A pointer to an uninitialized #DeeFilter struct.
644
* This struct will zeroed and configured with the filter
541
647
* Create a #DeeFilter that only includes rows from the original model
542
648
* which match a regular expression on some string column. A #DeeFilterModel
543
649
* created with this filter will be ordered in accordance with its parent model.
545
* Returns: (transfer full): A newly allocated #DeeFilter. Do not modify it.
546
* Free with g_free().
549
dee_filter_new_regex (guint column, GRegex *regex)
652
dee_filter_new_regex (guint column,
654
DeeFilter *out_filter)
552
656
RegexFilter *r_filter;
554
g_return_val_if_fail (regex != NULL, NULL);
556
filter = g_new0 (DeeFilter, 1);
557
filter->map_func = _dee_filter_regex_map_func;
558
filter->map_notify = _dee_filter_regex_map_notify;
658
g_return_if_fail (regex != NULL);
560
660
r_filter = g_new0 (RegexFilter, 1);
561
661
r_filter->column = column;
562
662
r_filter->regex = g_regex_ref (regex);
564
filter->destroy = (GDestroyNotify) regex_filter_free;
565
filter->user_data = r_filter;
664
dee_filter_new (_dee_filter_regex_map_func,
665
_dee_filter_regex_map_notify,
666
(GDestroyNotify) regex_filter_free,