| 1 | // Copyright © SixtyFPS GmbH <info@slint.dev> |
| 2 | // SPDX-License-Identifier: MIT |
| 3 | |
| 4 | #include "app.h" |
| 5 | |
| 6 | void 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 | |
| 14 | void 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 | |
| 87 | int main() |
| 88 | { |
| 89 | run(); |
| 90 | } |
| 91 | |