KOSMIndoorMap

RoomSearchDialog.qml
1/*
2 SPDX-FileCopyrightText: 2024 Volker Krause <vkrause@kde.org>
3 SPDX-License-Identifier: LGPL-2.0-or-later
4*/
5
6import QtQuick
7import QtQuick.Controls as QQC2
8import org.kde.kirigami as Kirigami
9import org.kde.kosmindoormap
10
11/** Search dialogs for buildings/rooms. */
12Kirigami.SearchDialog {
13 id: root
14
15 /** Room model instance providing the content for this dialog. */
16 property var roomModel
17
18 /** Emitted when an entry of this dialog as been selected. */
19 signal roomSelected(room: var)
20
21 width: Math.min(applicationWindow().width, Kirigami.Units.gridUnit * 24)
22 height: Math.min(applicationWindow().height, Kirigami.Units.gridUnit * 32)
23
24 searchFieldPlaceholderText: i18nd("kosmindoormap", "Search room…")
25 model: RoomSortFilterProxyModel {
26 id: roomSortModel
27 sourceModel: root.visible ? root.roomModel : null
28 filterCaseSensitivity: Qt.CaseInsensitive
29 }
30
31 delegate: QQC2.ItemDelegate {
32 id: item
33 required property QtObject model
34 width: ListView.view.width
35 contentItem: Kirigami.TitleSubtitle {
36 title: {
37 if (model.name === "")
38 return model.number;
39 if (model.number === "")
40 return model.name;
41 return i18nd("kosmindoormap", "%1 (%2)", model.name, model.number);
42 }
43 subtitle: {
44 if (root.roomModel.buildingCount === 1)
45 return model.typeName;
46 if (model.typeName === "")
47 return model.levelLongName;
48 return i18nd("kosmindoormap", "%1 (%2)", model.typeName, model.levelLongName);
49 }
50 }
51 onClicked: {
52 root.roomSelected({ element: item.model.element, level: item.model.level });
53 root.accept();
54 }
55
56 Keys.onPressed: (event) => {
57 if (event.key === Qt.Key_Enter || event.key == Qt.Key_Return) {
58 event.accepted = true;
59 root.roomSelected({ element: item.model.element, level: item.model.level });
60 root.accept();
61 }
62 }
63 }
64
65 section.property: root.roomModel.buildingCount !== 1 ? "buildingName" : "levelLongName"
66 section.delegate: Kirigami.ListSectionHeader {
67 label: section
68 width: ListView.view.width
69 }
70
71 onTextChanged: roomSortModel.filterString = root.text
72}
QString i18nd(const char *domain, const char *text, const TYPE &arg...)
AKONADI_CALENDAR_EXPORT KCalendarCore::Event::Ptr event(const Akonadi::Item &item)
QStringView level(QStringView ifopt)
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri Jul 26 2024 11:57:46 by doxygen 1.11.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.