GtkSortListModel
GtkSortListModel — Список моделей, сортирующий элементы
Функции
| GtkSortListModel * | gtk_sort_list_model_new () |
| void | gtk_sort_list_model_set_sorter () |
| GtkSorter * | gtk_sort_list_model_get_sorter () |
| void | gtk_sort_list_model_set_model () |
| GListModel * | gtk_sort_list_model_get_model () |
| void | gtk_sort_list_model_set_incremental () |
| gboolean | gtk_sort_list_model_get_incremental () |
| guint | gtk_sort_list_model_get_pending () |
Свойства
| gboolean | incremental | Чтение / Запись |
| GListModel * | model | Чтение / Запись |
| guint | pending | Чтение |
| GtkSorter * | sorter | Чтение / Запись |
Типы и значения
Иерархия объектов
GObject
╰── GtkSortListModel
Реализованные интерфейсы
GtkSortListModel реализует GListModel.
Включенные файлы
#include <gtk/gtk.h>
Описание
GtkSortListModel — это модель списка, которая принимает модель списка и сортирует её элементы в соответствии с GtkSorter.
Модель может быть настроена на выполнение инкрементной сортировки, так что сортировка длинных списков не блокирует пользовательский интерфейс. Подробнее см. gtk_sort_list_model_set_incremental().
GtkSortListModel — это общая модель, и поэтому она не может использовать внешние знания при сортировке. Если у вас возникнут проблемы с производительностью GtkSortListModel, настоятельно рекомендуется написать свою собственную модель сортировки списка.
Функции
gtk_sort_list_model_new ()
GtkSortListModel * gtk_sort_list_model_new (GListModel *model,GtkSorter *sorter);
Создаёт новый сортированный список моделей, который использует sorter для сортировки model.
Параметры
model | модель для сортировки или | [allow-none][transfer full] |
sorter | GtkSorter для сортировки | [allow-none][transfer full] |
Возвращает
новую GtkSortListModel
gtk_sort_list_model_set_sorter ()
void gtk_sort_list_model_set_sorter (GtkSortListModel *self,GtkSorter *sorter);
Устанавливает новый сортировщик для self .
Параметры
self | ||
sorter | GtkSorter для сортировки | [allow-none] |
gtk_sort_list_model_get_sorter ()
GtkSorter *
gtk_sort_list_model_get_sorter (GtkSortListModel *self); Возвращает сортировщик, используемый для сортировки self .
Параметры
self |
Возвращает
сортировщик self.
[nullable][transfer none]
gtk_sort_list-model-set-model ()
void gtk_sort_list_model_set_model (GtkSortListModel *self,GListModel *model);
Устанавливает модель для сортировки. Тип элемента model должен соответствовать типу элемента self.
Параметры
self | ||
model | Модель для сортировки. | [allow-none] |
gtk_sort_list-model-get-model ()
GListModel *
gtk_sort_list_model_get_model (GtkSortListModel *self); Получает модель, которая сейчас сортируется, или NULL если её нет.
Параметры
self |
Возвращает
Модель, которая сортируется.
[nullable][transfer none]
gtk_sort_list_model_set-incremental ()
void gtk_sort_list_model_set_incremental (GtkSortListModel *self,gboolean incremental);
Устанавливает сортировку модели для инкрементной сортировки.
При включённой инкрементной сортировке, sortlistmodel не выполняет полную сортировку сразу, а вместо этого помещает в очередь обработчик простоя, который постепенно сортирует элементы к их правильному положению. Это, конечно, означает, что элементы не появятся мгновенно в правильном месте. Это также означает, что общее время сортировки намного медленнее.
Если ваш фильтр блокирует пользовательский интерфейс во время сортировки, вы можете рассмотреть возможность включения этого параметра. В зависимости от вашей модели и сортировщиков, это может стать интересным в районе от 10 000 до 100 000 элементов.
По умолчанию инкрементная сортировка отключена.
См. gtk_sort_list_model_get_pending() для получения информации о ходе операции инкрементной сортировки.
Параметры
self | ||
incremental |
|
gtk_sort_list_model_get-incremental ()
gboolean
gtk_sort_list_model_get_incremental (GtkSortListModel *self); Возвращает, была ли включена инкрементная сортировка с помощью gtk_sort_list_model_set_incremental().
Параметры
self |
Возвращает
TRUE если инкрементная сортировка включена
gtk_sort_list_model_get_pending ()
guint
gtk_sort_list_model_get_pending (GtkSortListModel *self); Оценивает ход текущей операции сортировки
Оценка — это количество элементов, которые ещё необходимо отсортировать для завершения операции сортировки, если это линейный алгоритм. Таким образом, это число не связано с тем, сколько элементов уже отсортировано правильно.
Если вам нужно оценить прогресс, вы можете использовать код такого типа:
pending = gtk_sort_list_model_get_pending (self); model = gtk_sort_list_model_get_model (self); progress = 1.0 - pending / (double) MAX (1, g_list_model_get_n_items (model));
Если никакая операция сортировки не происходит — в частности, когда “incremental” FALSE — эта функция возвращает 0.
Параметры
self |
Возвращает
оценку прогресса оставшихся элементов для сортировки
Типы и значения
GtkSortListModel
typedef struct _GtkSortListModel GtkSortListModel;
Подробности свойств
Свойство “incremental”
“incremental” gboolean
Если модель должна сортировать элементы инкрементально
Владелец: GtkSortListModel
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “model”
“model” GListModel *
Сортируемая модель
Владелец: GtkSortListModel
Флаги: Чтение / Запись
Свойство “pending”
“pending” guint
Оценка оставшихся не отсортированных элементов
Владелец: GtkSortListModel
Флаги: Чтение
Значение по умолчанию: 0
Свойство “sorter”
“sorter” GtkSorter *
Сортировщик для этой модели
Владелец: GtkSortListModel
Флаги: Чтение / Запись
См. также
GListModel, GtkSorter
© 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/GtkSortListModel.html