StatusQ: StatusFlowSelector added
This commit is contained in:
parent
347da1e007
commit
7df80bfa1c
|
@ -149,6 +149,10 @@ ListModel {
|
||||||
title: "StatusDotsLoadingIndicator"
|
title: "StatusDotsLoadingIndicator"
|
||||||
section: "Components"
|
section: "Components"
|
||||||
}
|
}
|
||||||
|
ListElement {
|
||||||
|
title: "StatusFlowSelector"
|
||||||
|
section: "Components"
|
||||||
|
}
|
||||||
ListElement {
|
ListElement {
|
||||||
title: "StatusItemSelector"
|
title: "StatusItemSelector"
|
||||||
section: "Components"
|
section: "Components"
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
|
||||||
|
import StatusQ.Components 0.1
|
||||||
|
import utils 1.0
|
||||||
|
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
Item {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
StatusFlowSelector {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
icon: Style.png("tokens/SNT")
|
||||||
|
title: "Item Selector Title"
|
||||||
|
|
||||||
|
placeholderText: "Example: Empty items"
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: repeater
|
||||||
|
|
||||||
|
model: ListModel {
|
||||||
|
id: listModel
|
||||||
|
}
|
||||||
|
|
||||||
|
property int counter: 0
|
||||||
|
|
||||||
|
delegate: StatusListItemTag {
|
||||||
|
title: `tag ${model.name}`
|
||||||
|
|
||||||
|
onClicked: listModel.remove(index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
placeholderItem.visible: listModel.count === 0
|
||||||
|
|
||||||
|
addButton.onClicked: {
|
||||||
|
listModel.append({ name: `item ${repeater.counter++}` })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
Layout.bottomMargin: 10
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
|
||||||
|
text: "Clear list"
|
||||||
|
onClicked: listModel.clear()
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,6 +20,7 @@
|
||||||
\li \l{StatusContactRequestsIndicatorListItem}
|
\li \l{StatusContactRequestsIndicatorListItem}
|
||||||
\li \l{StatusDescriptionListItem}
|
\li \l{StatusDescriptionListItem}
|
||||||
\li \l{StatusExpandableItem}
|
\li \l{StatusExpandableItem}
|
||||||
|
\li \l{StatusFlowSelector}
|
||||||
\li \l{StatusGroupBox}
|
\li \l{StatusGroupBox}
|
||||||
\li \l{StatusImageSettings}
|
\li \l{StatusImageSettings}
|
||||||
\li \l{StatusItemSelector}
|
\li \l{StatusItemSelector}
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
import QtQuick 2.15
|
||||||
|
|
||||||
|
import StatusQ.Core.Theme 0.1
|
||||||
|
import StatusQ.Controls 0.1
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmltype StatusFlowSelector
|
||||||
|
\inherits StatusGroupBox
|
||||||
|
\inqmlmodule StatusQ.Components
|
||||||
|
\since StatusQ.Components 0.1
|
||||||
|
\brief It allows to add items and display them as a list within a Flow
|
||||||
|
component.
|
||||||
|
|
||||||
|
The \c StatusFlowSelector can be populated with a repeater.
|
||||||
|
|
||||||
|
Example of how the component looks like:
|
||||||
|
\image status_item_selector.png
|
||||||
|
|
||||||
|
Example of how to use it:
|
||||||
|
\qml
|
||||||
|
StatusFlowSelector {
|
||||||
|
icon: Style.svg("contact_verified")
|
||||||
|
title: qsTr("Who holds")
|
||||||
|
placeholderItem.visible: listModel.count === 0
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: repeater
|
||||||
|
|
||||||
|
model: ListModel {
|
||||||
|
id: listModel
|
||||||
|
}
|
||||||
|
|
||||||
|
property int counter: 0
|
||||||
|
|
||||||
|
delegate: StatusListItemTag {
|
||||||
|
title: `tag ${model.name}`
|
||||||
|
|
||||||
|
onClicked: listModel.remove(index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addButton.onClicked: {
|
||||||
|
listModel.append({ name: `item ${repeater.counter++}` })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endqml
|
||||||
|
For a list of components available see StatusQ.
|
||||||
|
*/
|
||||||
|
StatusGroupBox {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
default property alias content: flow.data
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty string StatusFlowSelector::placeholderText
|
||||||
|
This property holds the placeholder item text which can be shown when the
|
||||||
|
list of items is empty.
|
||||||
|
*/
|
||||||
|
property string placeholderText
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty url StatusFlowSelector::placeholderImageSource
|
||||||
|
This property holds the default item icon shown when the list of items is empty.
|
||||||
|
*/
|
||||||
|
property url placeholderImageSource
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty StatusListItemTag StatusFlowSelector::placeholder
|
||||||
|
This property holds an alias to the placeholder item.
|
||||||
|
*/
|
||||||
|
readonly property alias placeholderItem: placeholderListItemTag
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty StatusRoundButton StatusFlowSelector::addButton
|
||||||
|
This property holds an alias to the `add` button.
|
||||||
|
*/
|
||||||
|
readonly property alias addButton: addItemButton
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\qmlproperty int StatusFlowSelector::flowSpacing
|
||||||
|
This property specifies spacing between items in the selector.
|
||||||
|
*/
|
||||||
|
property alias flowSpacing: flow.spacing
|
||||||
|
|
||||||
|
implicitWidth: 560
|
||||||
|
|
||||||
|
Flow {
|
||||||
|
id: flow
|
||||||
|
|
||||||
|
width: root.availableWidth
|
||||||
|
spacing: 6
|
||||||
|
|
||||||
|
StatusListItemTag {
|
||||||
|
id: placeholderListItemTag
|
||||||
|
|
||||||
|
bgColor: Theme.palette.baseColor2
|
||||||
|
title: root.placeholderText
|
||||||
|
asset.name: root.placeholderImageSource
|
||||||
|
asset.isImage: true
|
||||||
|
closeButtonVisible: false
|
||||||
|
titleText.color: Theme.palette.baseColor1
|
||||||
|
titleText.font.pixelSize: 15
|
||||||
|
}
|
||||||
|
|
||||||
|
onPositioningComplete: {
|
||||||
|
// the "add" button is intended to be the last item in the flow
|
||||||
|
if (addItemButton.Positioner.isLastItem || !addItemButton.visible)
|
||||||
|
return
|
||||||
|
|
||||||
|
addItemButton.parent = null
|
||||||
|
addItemButton.parent = flow
|
||||||
|
}
|
||||||
|
|
||||||
|
StatusRoundButton {
|
||||||
|
id: addItemButton
|
||||||
|
|
||||||
|
implicitHeight: 32
|
||||||
|
implicitWidth: implicitHeight
|
||||||
|
height: width
|
||||||
|
type: StatusRoundButton.Type.Secondary
|
||||||
|
icon.name: "add"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -43,6 +43,7 @@ StatusImageCropPanel 0.1 StatusImageCropPanel.qml
|
||||||
StatusColorSpace 0.0 StatusColorSpace.qml
|
StatusColorSpace 0.0 StatusColorSpace.qml
|
||||||
StatusCommunityCard 0.1 StatusCommunityCard.qml
|
StatusCommunityCard 0.1 StatusCommunityCard.qml
|
||||||
StatusCommunityTags 0.1 StatusCommunityTags.qml
|
StatusCommunityTags 0.1 StatusCommunityTags.qml
|
||||||
|
StatusFlowSelector 0.1 StatusFlowSelector.qml
|
||||||
StatusItemSelector 0.1 StatusItemSelector.qml
|
StatusItemSelector 0.1 StatusItemSelector.qml
|
||||||
StatusCard 0.1 StatusCard.qml
|
StatusCard 0.1 StatusCard.qml
|
||||||
StatusDatePicker 0.1 StatusDatePicker.qml
|
StatusDatePicker 0.1 StatusDatePicker.qml
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
<file>StatusQ/Components/StatusEmoji.qml</file>
|
<file>StatusQ/Components/StatusEmoji.qml</file>
|
||||||
<file>StatusQ/Components/StatusExpandableItem.qml</file>
|
<file>StatusQ/Components/StatusExpandableItem.qml</file>
|
||||||
<file>StatusQ/Components/StatusImageCropPanel.qml</file>
|
<file>StatusQ/Components/StatusImageCropPanel.qml</file>
|
||||||
|
<file>StatusQ/Components/StatusFlowSelector.qml</file>
|
||||||
<file>StatusQ/Components/StatusItemSelector.qml</file>
|
<file>StatusQ/Components/StatusItemSelector.qml</file>
|
||||||
<file>StatusQ/Components/StatusLetterIdenticon.qml</file>
|
<file>StatusQ/Components/StatusLetterIdenticon.qml</file>
|
||||||
<file>StatusQ/Components/StatusListItem.qml</file>
|
<file>StatusQ/Components/StatusListItem.qml</file>
|
||||||
|
|
Loading…
Reference in New Issue