Spec-Zone.ru › GTK 4.0

GtkFilterListModel

GtkFilterListModel — Список моделей, фильтрующий свои элементы

Функции

GtkFilterListModel * gtk_filter_list_model_new ()
void gtk_filter_list_model_set_model ()
GListModel * gtk_filter_list_model_get_model ()
void gtk_filter_list_model_set_filter ()
GtkFilter * gtk_filter_list_model_get_filter ()
void gtk_filter_list_model_set_incremental ()
gboolean gtk_filter_list_model_get_incremental ()
guint gtk_filter_list_model_get_pending ()

Свойства

GtkFilter * filter Чтение / Запись
gboolean incremental Чтение / Запись
GListModel * model Чтение / Запись
guint pending Чтение

Типы и значения

GtkFilterListModel

Иерархия объектов

    GObject
    ╰── GtkFilterListModel

Реализованные интерфейсы

GtkFilterListModel реализует GListModel.

Файлы заголовков

#include <gtk/gtk.h>

Описание

GtkFilterListModel — это список моделей, который фильтрует заданную другую модель списка. Он скрывает некоторые элементы из другой модели в соответствии с критериями, заданными фильтром GtkFilter.

Модель может быть настроена на выполнение инкрементного поиска, так что фильтрация длинных списков не блокирует пользовательский интерфейс. Подробнее см. gtk_filter_list_model_set_incremental().

Функции

gtk_filter_list_model_new ()

GtkFilterListModel *
gtk_filter_list_model_new (GListModel *model,
                           GtkFilter *filter);

Создаёт новый GtkFilterListModel, который будет фильтровать model с помощью указанного filter .

Параметры

model

модель для фильтрации, или NULL.

[allow-none][transfer full]

filter

фильтр или NULL для отключения фильтрации элементов.

[allow-none][transfer full]

Возвращает

новый GtkFilterListModel

gtk_filter_list_model_set_model ()

void
gtk_filter_list_model_set_model (GtkFilterListModel *self,
                                 GListModel *model);

Устанавливает модель для фильтрации.

GTK не гарантирует, что model соответствует типу элементов self . Предполагается, что вызывающий код знает, что делает, и установил соответствующий фильтр для обеспечения соответствия типов элементов.

Параметры

self

a GtkFilterListModel

model

Модель для фильтрации.

[allow-none]

gtk_filter_list_model_get_model ()

GListModel *
gtk_filter_list_model_get_model (GtkFilterListModel *self);

Получает текущую отфильтрованную модель или NULL , если её нет.

Параметры

self

a GtkFilterListModel

Возвращает

Модель, которая фильтруется.

[nullable][transfer none]

gtk_filter_list_model_set_filter ()

void
gtk_filter_list_model_set_filter (GtkFilterListModel *self,
                                  GtkFilter *filter);

Устанавливает фильтр для фильтрации элементов.

Параметры

self

a GtkFilterListModel

filter

используемый фильтр или NULL для отключения фильтрации элементов.

[allow-none][transfer none]

gtk_filter_list-model-get-filter ()

GtkFilter *
gtk_filter_list_model_get_filter (GtkFilterListModel *self);

Получает GtkFilter, установленный в данный момент на self .

Параметры

self

a GtkFilterListModel

Возвращает

Текущий используемый фильтр или NULL , если список не отфильтрован.

[nullable][transfer none]

gtk_filter_list-model-set-incremental ()

void
gtk_filter_list_model_set_incremental (GtkFilterListModel *self,
                                       gboolean incremental);

При включённой инкрементальной фильтрации, GtkFilterListModel не будет запускать фильтры немедленно, а вместо этого добавит обработчик обработки бездействия, который будет инкрементально фильтровать элементы и добавлять их в список. Это означает, что элементы не добавляются мгновенно, а появляются по частям.

Если ваш фильтр блокирует пользовательский интерфейс во время фильтрации, можно попробовать включить эту опцию. В зависимости от вашей модели и фильтров, это может стать интересным вариантом при количестве элементов от 10 000 до 100 000.

По умолчанию инкрементальная фильтрация отключена.

См. gtk_filter_list_model_get_pending() для получения информации о прогрессе операции инкрементальной фильтрации.

Параметры

self

a GtkFilterListModel

incremental

TRUE для включения инкрементальной фильтрации

gtk_filter-list-model-get-incremental ()

gboolean
gtk_filter_list_model_get_incremental (GtkFilterListModel *self);

Возвращает, была ли включена инкрементальная фильтрация с помощью gtk_filter_list_model_set_incremental().

Параметры

self

a GtkFilterListModel

Возвращает

TRUE , если инкрементальная фильтрация включена

gtk_filter-list-model-get-pending ()

guint
gtk_filter_list_model_get_pending (GtkFilterListModel *self);

Возвращает количество элементов, которые ещё не отфильтрованы.

Вы можете использовать это значение, чтобы проверить, занят ли self фильтрацией, сравнив возвращаемое значение с 0, или вычислить процент оставшегося фильтра, разделив возвращаемое значение на общее количество элементов в основной модели:

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);

Если операция фильтрации не выполняется — в частности, когда “incremental” FALSE — эта функция возвращает 0.

Параметры

self

a GtkFilterListModel

Возвращает

Количество элементов, которые ещё не отфильтрованы

Типы и Значения

GtkFilterListModel

typedef struct _GtkFilterListModel GtkFilterListModel;

Подробное описание свойств

Свойство “filter”

  “filter”                   GtkFilter *

Фильтр для данной модели

Владелец: GtkFilterListModel

Флаги: Чтение / Запись

Свойство “incremental”

  “incremental”              gboolean

Фильтр должен ли фильтровать элементы инкрементально

Владелец: GtkFilterListModel

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “model”

  “model”                    GListModel *

Модель, которая фильтруется

Владелец: GtkFilterListModel

Флаги: Чтение / Запись

Свойство “pending”

  “pending”                  guint

Количество элементов, которые ещё не отфильтрованы

Владелец: GtkFilterListModel

Флаги: Чтение

Значение по умолчанию: 0

См. также

GListModel, GtkFilter

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkFilterListModel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API