1// Copyright © SixtyFPS GmbH <info@slint.dev>
2// SPDX-License-Identifier: MIT
3
4#include "app.h"
5
6void init_virtual_keyboard(slint::ComponentHandle<App> app)
7{
8 app->global<VirtualKeyboardHandler>().on_key_pressed([=](auto key) {
9 app->window().dispatch_key_press_event(key);
10 app->window().dispatch_key_release_event(key);
11 });
12}
13
14void run()
15{
16 auto app = App::create();
17
18 init_virtual_keyboard(app);
19
20 auto mails = std::make_shared<slint::VectorModel<CardListViewItem>>(std::vector {
21 CardListViewItem { "Simon Hausmann", "1 hour ago", "Meeting tomorrow",
22 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
23 "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
24 "enim ad minim veniam, quis nostrud exercitation ullamco laboris "
25 "nisi ut aliquip ex ea commodo consequat." },
26 CardListViewItem { "Tobias Hunger", "1 day ago", "Meeting tomorrow",
27 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
28 "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
29 "enim ad minim veniam, quis nostrud exercitation ullamco laboris "
30 "nisi ut aliquip ex ea commodo consequat." },
31 CardListViewItem { "Olivier Goffart", "2 hour ago", "Meeting tomorrow",
32 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
33 "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
34 "enim ad minim veniam, quis nostrud exercitation ullamco laboris "
35 "nisi ut aliquip ex ea commodo consequat." },
36 CardListViewItem { "Aurindam Jana", "5 hour ago", "Meeting tomorrow",
37 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
38 "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
39 "enim ad minim veniam, quis nostrud exercitation ullamco laboris "
40 "nisi ut aliquip ex ea commodo consequat." },
41 CardListViewItem { "Simon Hausmann", "7 hour ago", "Meeting tomorrow",
42 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
43 "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
44 "enim ad minim veniam, quis nostrud exercitation ullamco laboris "
45 "nisi ut aliquip ex ea commodo consequat." },
46 CardListViewItem { "Tobias Hunger", "1 day ago", "Meeting tomorrow",
47 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
48 "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
49 "enim ad minim veniam, quis nostrud exercitation ullamco laboris "
50 "nisi ut aliquip ex ea commodo consequat." },
51 CardListViewItem { "Olivier Goffart", "8 hour ago", "Meeting tomorrow",
52 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
53 "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
54 "enim ad minim veniam, quis nostrud exercitation ullamco laboris "
55 "nisi ut aliquip ex ea commodo consequat." },
56 CardListViewItem { "Aurindam Jana", "9 hour ago", "Meeting tomorrow",
57 "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
58 "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
59 "enim ad minim veniam, quis nostrud exercitation ullamco laboris "
60 "nisi ut aliquip ex ea commodo consequat." },
61 });
62
63 app->global<MailBoxViewAdapter>().set_mails(mails);
64
65 app->global<MailBoxViewAdapter>().on_search_text_changed(
66 [mails, app = slint::ComponentWeakHandle(app)](const slint::SharedString &text) {
67 auto app_lock = app.lock();
68
69 std::string text_str(text.data());
70
71 (*app_lock)->global<MailBoxViewAdapter>().set_mails(
72 std::make_shared<slint::FilterModel<CardListViewItem>>(
73 mails, [text_str](auto e) {
74 std::string title_str(e.title.data());
75 return title_str.find(text_str) != std::string::npos;
76 }));
77 });
78
79 app->global<MainViewAdapter>().on_select_language([](int index) {
80 static const char *langs[] = { "en", "de" };
81 slint::select_bundled_translation(langs[index]);
82 });
83
84 app->run();
85}
86
87int main()
88{
89 run();
90}
91

source code of slint/demos/usecases/cpp/main.cpp