/usr/lib/x86_64-linux-gnu/qt5/qml/Ubuntu/Components/1.3/Sections.qml is in qml-module-ubuntu-components 1.3.1918+16.04.20160404-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | /*
* Copyright 2015 Canonical Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.4
import Ubuntu.Components 1.3
/*!
\qmltype Sections
\inqmlmodule Ubuntu.Components 1.3
\ingroup ubuntu
\since Ubuntu.Components 1.3
\brief Display a list of sections that the user can select. By tapping
on a section name the \l selectedIndex will be updated, and the
associated \l Action is triggered.
*/
StyledItem {
id: sections
styleName: "SectionsStyle"
/*!
List of actions that represent the sections.
The text of each action is displayed as the section name and clicking
a section will update the \l selectedIndex.
When \l selectedIndex is changed (by user interaction or by setting
the value), actions[selectedIndex] will be triggered.
Example:
\qml
Sections {
actions: [
Action {
text: "first"
onTriggered: print("one")
},
Action {
text: "second"
onTriggered: print("two")
},
Action {
text: "third"
onTriggered: print("three")
}
]
}
\endqml
It is strongly recommended to limit the number of sections to two or three.
The actions are used as the model for the Sections by default.
If no trigger functions need to be specified, \l model may be used directly
without setting the actions property. If both \l actions and \l model are set,
model overrides the actions.
*/
property list<Action> actions
/*!
The input model for the sections. By default model takes the \l actions
as input, but if no trigger functions need to be specified, it can be
simplified to a list of strings naming the sections:
\qml
Sections {
model: [ "one", "two", "three" ]
onSelectedIndexChanged: {
print("Selected section " + model[selectedIndex]);
}
}
\endqml
*/
property var model: actions
onModelChanged: {
if (internal.done) {
if (!model || model.length === 0) {
selectedIndex = -1;
} else if (selectedIndex === 0) {
// selectedIndex does not change, but action 0 should be triggered.
internal.triggerAction(0);
} else {
// change selectedIndex, which will trigger action 0.
selectedIndex = 0;
}
}
}
Component.onCompleted: {
internal.done = true;
internal.triggerAction(selectedIndex);
}
QtObject {
id: internal
property bool done: false
/*!
Triggers the action associated with the given
index, if that action exists.
*/
function triggerAction(index) {
if ((index >= 0) && (index < model.length)) {
if (model[index].hasOwnProperty("trigger")) {
model[index].trigger();
}
}
}
}
/*!
The index of the currently selected section in \l model.
The default value is 0 if there is at least 1 section, or -1 for no sections.
When the model is changed, selectedIndex is reset to 0 and the first action
is triggered.
Upon completion of the Sections component, if there is an Action associated
with the selected index, that Action will be triggered.
*/
property int selectedIndex: model ? 0 : -1
onSelectedIndexChanged: {
internal.triggerAction(selectedIndex);
}
}
|