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 | Чтение |
Типы и значения
Иерархия объектов
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 | модель для фильтрации, или | [allow-none][transfer full] |
filter | фильтр или | [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 | ||
model | Модель для фильтрации. | [allow-none] |
gtk_filter_list_model_get_model ()
GListModel *
gtk_filter_list_model_get_model (GtkFilterListModel *self); Получает текущую отфильтрованную модель или NULL , если её нет.
Параметры
self |
Возвращает
Модель, которая фильтруется.
[nullable][transfer none]
gtk_filter_list_model_set_filter ()
void gtk_filter_list_model_set_filter (GtkFilterListModel *self,GtkFilter *filter);
Устанавливает фильтр для фильтрации элементов.
Параметры
self | ||
filter | используемый фильтр или | [allow-none][transfer none] |
gtk_filter_list-model-get-filter ()
GtkFilter *
gtk_filter_list_model_get_filter (GtkFilterListModel *self); Получает GtkFilter, установленный в данный момент на self .
Параметры
self |
Возвращает
Текущий используемый фильтр или 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 | ||
incremental |
|
gtk_filter-list-model-get-incremental ()
gboolean
gtk_filter_list_model_get_incremental (GtkFilterListModel *self); Возвращает, была ли включена инкрементальная фильтрация с помощью gtk_filter_list_model_set_incremental().
Параметры
self |
Возвращает
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 |
Возвращает
Количество элементов, которые ещё не отфильтрованы
Типы и Значения
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