Spec-Zone.ru › GTK 4.0

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 Чтение / Запись

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

GtkSortListModel

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

    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

модель для сортировки или NULL.

[allow-none][transfer full]

sorter

GtkSorter для сортировки model, или NULL.

[allow-none][transfer full]

Возвращает

новую GtkSortListModel

gtk_sort_list_model_set_sorter ()

void
gtk_sort_list_model_set_sorter (GtkSortListModel *self,
                                GtkSorter *sorter);

Устанавливает новый сортировщик для self .

Параметры

self

GtkSortListModel

sorter

GtkSorter для сортировки model.

[allow-none]

gtk_sort_list_model_get_sorter ()

GtkSorter *
gtk_sort_list_model_get_sorter (GtkSortListModel *self);

Возвращает сортировщик, используемый для сортировки self .

Параметры

self

GtkSortListModel

Возвращает

сортировщик self.

[nullable][transfer none]

gtk_sort_list-model-set-model ()

void
gtk_sort_list_model_set_model (GtkSortListModel *self,
                               GListModel *model);

Устанавливает модель для сортировки. Тип элемента model должен соответствовать типу элемента self.

Параметры

self

GtkSortListModel

model

Модель для сортировки.

[allow-none]

gtk_sort_list-model-get-model ()

GListModel *
gtk_sort_list_model_get_model (GtkSortListModel *self);

Получает модель, которая сейчас сортируется, или NULL если её нет.

Параметры

self

GtkSortListModel

Возвращает

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

[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

GtkSortListModel

incremental

TRUE для инкрементной сортировки

gtk_sort_list_model_get-incremental ()

gboolean
gtk_sort_list_model_get_incremental (GtkSortListModel *self);

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

Параметры

self

GtkSortListModel

Возвращает

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

Возвращает

оценку прогресса оставшихся элементов для сортировки

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

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

Spec-Zone.ru

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