1// Copyright © SixtyFPS GmbH <info@slint.dev>
2// SPDX-License-Identifier: MIT
3
4#include "gallery.h"
5
6#ifdef HAVE_GETTEXT
7# include <locale>
8# include <libintl.h>
9#endif
10
11int main()
12{
13#ifdef HAVE_GETTEXT
14 bindtextdomain("gallery", SRC_DIR "/lang/");
15 std::locale::global(std::locale(""));
16#endif
17
18 auto demo = App::create();
19
20 auto row_data = std::make_shared<
21 slint::VectorModel<std::shared_ptr<slint::Model<slint::StandardListViewItem>>>>();
22
23 for (int r = 1; r < 101; r++) {
24
25 auto items = std::make_shared<slint::VectorModel<slint::StandardListViewItem>>();
26
27 for (int c = 1; c < 5; c++) {
28 slint::SharedString text("item");
29 text = text + slint::SharedString::from_number(c) + slint::SharedString(".")
30 + slint::SharedString::from_number(r);
31 items->push_back(slint::StandardListViewItem { text });
32 }
33
34 row_data->push_back(items);
35 }
36
37 demo->global<TableViewPageAdapter>().set_row_data(row_data);
38
39 demo->global<TableViewPageAdapter>().on_filter_sort_model([](auto source_model,
40 slint::SharedString filter,
41 int sort_index,
42 bool sort_ascending) -> auto {
43 auto model = source_model;
44
45 if (!filter.empty()) {
46 auto l_filter = filter.to_lowercase();
47 model = std::make_shared<
48 slint::FilterModel<std::shared_ptr<slint::Model<slint::StandardListViewItem>>>>(
49 source_model,
50 [l_filter](const std::shared_ptr<slint::Model<slint::StandardListViewItem>> e)
51 -> bool {
52 // filter first row
53 std::string text(e->row_data(0).value().text.to_lowercase());
54
55 return text.find(l_filter) != std::string::npos;
56 });
57 }
58
59 if (sort_index >= 0) {
60 model = std::make_shared<
61 slint::SortModel<std::shared_ptr<slint::Model<slint::StandardListViewItem>>>>(
62 model, [sort_index, sort_ascending](auto lhs, auto rhs) {
63 auto c_lhs = lhs->row_data(sort_index);
64 auto c_rhs = rhs->row_data(sort_index);
65
66 return sort_ascending ? c_lhs->text < c_rhs->text
67 : c_rhs->text < c_lhs->text;
68 });
69 }
70
71 return model;
72 });
73
74 demo->run();
75}
76

source code of slint/examples/gallery/main.cpp