Class FilterListModel<T extends GObject>

All Implemented Interfaces:
Iterable<T>, Collection<T>, List<T>, SequencedCollection<T>, ListModel<T>, SectionModel<T>, Proxy, ListModelJavaList<T>

@Generated("org.javagi.JavaGI") public class FilterListModel<T extends GObject> extends GObject implements ListModel<T>, SectionModel<T>

A list model that filters the elements of another model.

It hides some elements from the underlying model according to criteria given by a GtkFilter.

The model can be set up to do incremental filtering, so that filtering long lists doesn't block the UI. See setIncremental(boolean) for details.

GtkFilterListModel passes through sections from the underlying model.

  • Constructor Details

    • FilterListModel

      public FilterListModel(MemorySegment address)
      Create a FilterListModel instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • FilterListModel

      public FilterListModel(@Nullable ListModel model, @Nullable Filter filter)
      Creates a new GtkFilterListModel that will filter model using the given filter.
      Parameters:
      model - the model to sort
      filter - filter
    • FilterListModel

      public FilterListModel()
      Create a new FilterListModel.
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the FilterListModel class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • asParent

      protected FilterListModel asParent()
      Return this instance as if it were its parent type. Comparable to the Java super keyword, but ensures the parent typeclass is also used in native code.
      Overrides:
      asParent in class GObject
      Returns:
      the instance as if it were its parent type
    • getFilter

      public @Nullable Filter getFilter()
      Gets the GtkFilter currently set on self.
      Returns:
      The filter currently in use
    • getIncremental

      public boolean getIncremental()

      Returns whether incremental filtering is enabled.

      See setIncremental(boolean).

      Returns:
      true if incremental filtering is enabled
    • getModel

      public @Nullable ListModel getModel()
      Gets the model currently filtered or null if none.
      Returns:
      The model that gets filtered
    • getPending

      public int getPending()

      Returns the number of items that have not been filtered yet.

      You can use this value to check if this FilterListModel is busy filtering by comparing the return value to 0 or you can compute the percentage of the filter remaining by dividing the return value by the total number of items in the underlying model:

      pending = gtk_filter_list_model_get_pending (self);
      model = gtk_filter_list_model_get_model (self);
      percentage = pending / (double) g_list_model_get_n_items (model);
      

      If no filter operation is ongoing - in particular when Gtk.FilterListModel:incremental is false - this function returns 0.

      Returns:
      The number of items not yet filtered
    • getWatchItems

      public boolean getWatchItems()

      Returns whether watching items is enabled.

      See setWatchItems(boolean).

      Returns:
      true if watching items is enabled
      Since:
      4.20
    • setFilter

      public void setFilter(@Nullable Filter filter)
      Sets the filter used to filter items.
      Parameters:
      filter - filter to use
    • setIncremental

      public void setIncremental(boolean incremental)

      Sets the filter model to do an incremental sort.

      When incremental filtering is enabled, the GtkFilterListModel will not run filters immediately, but will instead queue an idle handler that incrementally filters the items and adds them to the list. This of course means that items are not instantly added to the list, but only appear incrementally.

      When your filter blocks the UI while filtering, you might consider turning this on. Depending on your model and filters, this may become interesting around 10,000 to 100,000 items.

      By default, incremental filtering is disabled.

      See getPending() for progress information about an ongoing incremental filtering operation.

      Parameters:
      incremental - true to enable incremental filtering
    • setModel

      public void setModel(@Nullable ListModel model)

      Sets the model to be filtered.

      Note that GTK makes no effort to ensure that model conforms to the item type of self. It assumes that the caller knows what they are doing and have set up an appropriate filter to ensure that item types match.

      Parameters:
      model - The model to be filtered
    • setWatchItems

      public void setWatchItems(boolean watchItems)

      Sets the filter model to monitor properties of its items.

      This allows implementations of Filter that support expression watching to react to property changes. This property has no effect if the current filter doesn't support watching items.

      By default, watching items is disabled.

      Parameters:
      watchItems - true to watch items for property changes
      Since:
      4.20
    • builder

      public static FilterListModel.Builder<? extends FilterListModel.Builder> builder()
      A FilterListModel.Builder object constructs a FilterListModel with the specified properties. Use the various set...() methods to set properties, and finish construction with FilterListModel.Builder.build().
      Returns:
      the builder object