diff --git a/examples/galleryapp/CMakeLists.txt b/examples/galleryapp/CMakeLists.txt index 1326d27c..0a466f06 100644 --- a/examples/galleryapp/CMakeLists.txt +++ b/examples/galleryapp/CMakeLists.txt @@ -1,46 +1,46 @@ set(kirigami2gallery_SRCS main.cpp ) qt5_add_resources(RESOURCES resources.qrc) if (CMAKE_SYSTEM_NAME STREQUAL "Android") find_package(KF5Kirigami2 ${KF5_DEP_VERSION}) set(kirigami2gallery_EXTRA_LIBS Qt5::AndroidExtras #FIXME: we shouldn't have to link to it but otherwise the lib won't be packaged on Android Qt5::QuickControls2 KF5::Kirigami2) endif() find_program(kpackagetool_cmd kpackagetool5) if (kpackagetool_cmd) set(component org.kde.kirigami2.gallery) set(APPDATAFILE "${CMAKE_CURRENT_BINARY_DIR}/${component}.appdata.xml") message(STATUS "${kpackagetool_cmd} --appstream-metainfo ${CMAKE_CURRENT_SOURCE_DIR}/../gallerydata --appstream-metainfo-output ${APPDATAFILE}") execute_process( COMMAND ${kpackagetool_cmd} --appstream-metainfo ${CMAKE_CURRENT_SOURCE_DIR}/../gallerydata --appstream-metainfo-output ${APPDATAFILE} ERROR_VARIABLE appstreamerror RESULT_VARIABLE result) if (NOT result EQUAL 0) message(WARNING "couldn't generate metainfo for ${component}: ${appstreamerror}") else() if(appstreamerror) message(WARNING "warnings during generation of metainfo for ${component}: ${appstreamerror}") endif() # OPTIONAL because desktop files can be NoDisplay so they render no XML. install(FILES ${APPDATAFILE} DESTINATION ${KDE_INSTALL_METAINFODIR} OPTIONAL) endif() else() message(WARNING "KPackage components should be specified in reverse domain notation. Appstream information won't be generated for ${component}.") endif() add_executable(kirigami2gallery ${kirigami2gallery_SRCS} ${RESOURCES}) target_link_libraries(kirigami2gallery Qt5::Core Qt5::Qml Qt5::Quick Qt5::Svg ${kirigami2gallery_EXTRA_LIBS}) install(TARGETS kirigami2gallery ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) include(${CMAKE_SOURCE_DIR}/KF5Kirigami2Macros.cmake) -kirigami_package_breeze_icons(ICONS applications-graphics view-list-icons folder-sync view-list-details configure document-edit dialog-cancel document-decrypt mail-reply-sender bookmarks folder media-record-symbolic) +kirigami_package_breeze_icons(ICONS applications-graphics view-list-icons folder-sync view-list-details configure document-edit dialog-cancel document-decrypt mail-reply-sender bookmarks folder media-record-symbolic add-placemark address-book-new-symbolic) diff --git a/examples/galleryapp/resources.qrc b/examples/galleryapp/resources.qrc index 123f2b37..c2222cbc 100644 --- a/examples/galleryapp/resources.qrc +++ b/examples/galleryapp/resources.qrc @@ -1,28 +1,31 @@ ../gallerydata/contents/ui/MainPage.qml ../gallerydata/contents/ui/banner.jpg ../gallerydata/contents/ui/gallery/NonScrollableGallery.qml ../gallerydata/contents/ui/gallery/RadioButtonGallery.qml ../gallerydata/contents/ui/gallery/ButtonGallery.qml ../gallerydata/contents/ui/gallery/ProgressBarGallery.qml ../gallerydata/contents/ui/gallery/CheckBoxGallery.qml ../gallerydata/contents/ui/gallery/SliderGallery.qml ../gallerydata/contents/ui/gallery/MultipleColumnsGallery.qml ../gallerydata/contents/ui/gallery/MiscGallery.qml ../gallerydata/contents/ui/gallery/ListViewGallery.qml ../gallerydata/contents/ui/gallery/ListViewHeaderItemsGallery.qml ../gallerydata/contents/ui/gallery/SwitchGallery.qml ../gallerydata/contents/ui/gallery/TabBarGallery.qml ../gallerydata/contents/ui/gallery/TextFieldGallery.qml ../gallerydata/contents/ui/gallery/ColorsGallery.qml + ../gallerydata/contents/ui/gallery/CardsLayoutGallery.qml + ../gallerydata/contents/ui/gallery/CardsListViewGallery.qml + ../gallerydata/contents/ui/gallery/CardsGridViewGallery.qml ../gallerydata/contents/ui/gallery/MetricsGallery.qml ../gallerydata/contents/ui/gallery/LayersGallery.qml ../gallerydata/contents/ui/gallery/FormLayoutGallery.qml ../gallerydata/contents/ui/ExampleApp.qml ../gallerydata/contents/ui/gallery/ColorSetGallery.qml ../gallerydata/contents/ui/DesktopExampleApp.qml ../gallerydata/metadata.desktop qtquickcontrols2.conf diff --git a/examples/gallerydata/contents/ui/MainPage.qml b/examples/gallerydata/contents/ui/MainPage.qml index 9a3de75c..ea8d2967 100644 --- a/examples/gallerydata/contents/ui/MainPage.qml +++ b/examples/gallerydata/contents/ui/MainPage.qml @@ -1,159 +1,171 @@ /* * Copyright 2015 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import QtQuick 2.1 import QtQuick.Controls 2.0 as QQC2 import QtQuick.Layouts 1.2 import org.kde.kirigami 2.2 as Kirigami Kirigami.ScrollablePage { id: pageRoot implicitWidth: Kirigami.Units.gridUnit * 20 background: Rectangle { color: Kirigami.Theme.backgroundColor } title: "Gallery" //flickable: mainListView actions { contextualActions: [ Kirigami.Action { text:"Action 1" iconName: "document-decrypt" onTriggered: showPassiveNotification("Action 1 clicked") }, Kirigami.Action { id: shareAction visible: checkableAction.checked text:"Action 2" iconName: "document-share" onTriggered: showPassiveNotification("Action 2 clicked") }, Kirigami.Action { id: checkableAction text:"Checkable" checkable: true iconName: "dashboard-show" onCheckedChanged: showPassiveNotification("Checked: " + checked) } ] } ListView { id: mainListView currentIndex: -1 //currentIndex has focus, openPageIndex is the one actually open now property int openPageIndex: -1 activeFocusOnTab: true focus: true model: ListModel { ListElement { text: "Button" component: "Button" } ListElement { text: "CheckBox" component: "CheckBox" } ListElement { text: "Radio Button" component: "RadioButton" } ListElement { text: "Progress Bar" component: "ProgressBar" } ListElement { text: "Slider" component: "Slider" } ListElement { text: "Switch" component: "Switch" } ListElement { text: "Tab Bar" component: "TabBar" } ListElement { text: "Text Field" component: "TextField" } ListElement { text: "Form Layout" component: "FormLayout" } + ListElement { + text: "Cards Layout" + component: "CardsLayout" + } + ListElement { + text: "List view of cards" + component: "CardsListView" + } + ListElement { + text: "Grid view of cards" + component: "CardsGridView" + } ListElement { text: "Multiple Columns" component: "MultipleColumns" } ListElement { text: "Misc widgets" component: "Misc" } ListElement { text: "List View" component: "ListView" } ListElement { text: "List Headers" component: "ListViewHeaderItems" } ListElement { text: "Non Scrollable Page" component: "NonScrollable" } ListElement { text: "Colors" component: "Colors" } ListElement { text: "Color Sets" component: "ColorSet" } ListElement { text: "Metrics" component: "Metrics" } } delegate: Kirigami.BasicListItem { id: listItem reserveSpaceForIcon: false label: model.text Accessible.role: Accessible.MenuItem property Item ownPage onClicked: { if (!model.component) { return; } root.pageStack.pop(pageRoot); root.pageStack.push(Qt.resolvedUrl("gallery/" + model.component + "Gallery.qml")); mainListView.openPageIndex = index; } checked: mainListView.openPageIndex == index highlighted: focus && ListView.isCurrentItem } } } diff --git a/examples/gallerydata/contents/ui/gallery/CardsGridViewGallery.qml b/examples/gallerydata/contents/ui/gallery/CardsGridViewGallery.qml new file mode 100644 index 00000000..d8bec75c --- /dev/null +++ b/examples/gallerydata/contents/ui/gallery/CardsGridViewGallery.qml @@ -0,0 +1,107 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2 or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 as Controls +import QtQuick.Layouts 1.2 +import org.kde.kirigami 2.4 as Kirigami + +Kirigami.ScrollablePage { + id: page + + title: "Grid view of Cards" + + actions.main: Kirigami.Action { + iconName: "documentinfo" + text: "Info" + checkable: true + onCheckedChanged: sheet.sheetOpen = checked; + shortcut: "Alt+I" + } + + Kirigami.OverlaySheet { + id: sheet + onSheetOpenChanged: page.actions.main.checked = sheetOpen + header: RowLayout { + Kirigami.Heading { + Layout.fillWidth: true + text: "CardsGridView" + } + Controls.ToolButton { + text: "HIG..." + enabled: false + onClicked: Qt.openUrlExternally("") + } + Controls.ToolButton { + text: "Source code..." + onClicked: Qt.openUrlExternally("https://cgit.kde.org/kirigami.git/tree/examples/gallerydata/contents/ui/gallery/CardsGridViewGallery.qml + ") + } + } + + Controls.Label { + property int implicitWidth: Kirigami.Units.gridUnit * 25 + wrapMode: Text.WordWrap + text: "The Kirigami types AbstractCard and Card are used to implement the popular Card pattern used on many mobile and web platforms that is used to display a collection of information or actions.\n Besides the Card components, Kirigami offers also 3 kinds of views and positioners to help to present cards with beautiful and responsive layouts.\n\nIn this page, CardsGridView shows an example on how to put cards in a grid view, generated by a Qt model.\nThe behavior is same as CardsLayout, and it allows cards to be put in one or two columns depending from the available width.\nCardsGridView has the limitation that every Card must have the same exact height, so cellHeight must be manually set to a value in which the content fits for every item.\nIf possible use cards only when you don't need to instantiate that many and use CardsLayout intead." + } + } + + Component.onCompleted: { + for (var i = 0; i < 50; ++i) { + mainModel.append({"title": "Item " + i, + "image": "../banner.jpg", + "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id risus id augue euismod accumsan. Nunc vestibulum placerat bibendum.", + "actions": [{text: "Action 1", icon: "add-placemark"}, + {text: "Action 2", icon: "address-book-new-symbolic"}] + }) + } + } + Kirigami.CardsGridView { + id: view + model: ListModel { + id: mainModel + } + +//property Component delegate + delegate:Kirigami.Card { + id: card + banner { + title: model.title + imageSource: model.image + } + contentItem: Controls.Label { + wrapMode: Text.WordWrap + text: model.text + } + //HACK: this instantiator hack is just for demonstration purposes, normally the actions objects should be embedded as a role of a QAbstractItemModel, either as QActions or just QObjects with the proper properties and signals (the new qqc2 Action should ideally become a public c++ type) + property var actionsModel: model.actions + Instantiator { + model: actionsModel + delegate: Kirigami.Action { + text: model.text + icon.name: model.icon + onTriggered: showPassiveNotificaton(model.text + " triggered") + } + onObjectAdded: { + card.actions.push(object) + } + } + } + } +} diff --git a/examples/gallerydata/contents/ui/gallery/CardsLayoutGallery.qml b/examples/gallerydata/contents/ui/gallery/CardsLayoutGallery.qml new file mode 100644 index 00000000..4fedbce5 --- /dev/null +++ b/examples/gallerydata/contents/ui/gallery/CardsLayoutGallery.qml @@ -0,0 +1,244 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2 or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 as Controls +import QtQuick.Layouts 1.2 +import org.kde.kirigami 2.4 as Kirigami + +Kirigami.ScrollablePage { + id: page + + title: "Cards Layout" + + actions.main: Kirigami.Action { + iconName: "documentinfo" + text: "Info" + checkable: true + onCheckedChanged: sheet.sheetOpen = checked; + shortcut: "Alt+I" + } + + Kirigami.OverlaySheet { + id: sheet + onSheetOpenChanged: page.actions.main.checked = sheetOpen + header: RowLayout { + Kirigami.Heading { + Layout.fillWidth: true + text: "CardsLayout" + } + Controls.ToolButton { + text: "HIG..." + enabled: false + onClicked: Qt.openUrlExternally("") + } + Controls.ToolButton { + text: "Source code..." + onClicked: Qt.openUrlExternally("https://cgit.kde.org/kirigami.git/tree/examples/gallerydata/contents/ui/gallery/CardsLayoutGallery.qml + ") + } + } + + Controls.Label { + property int implicitWidth: Kirigami.Units.gridUnit * 25 + wrapMode: Text.WordWrap + text: "The Kirigami types AbstractCard and Card are used to implement the popular Card pattern used on many mobile and web platforms that is used to display a collection of information or actions.\n Besides the Card components, Kirigami offers also 3 kinds of views and positioners to help to present cards with beautiful and responsive layouts.\n\nIn this page, CardsLayout is presented, which should be used when the cards are not instantiated by a model or by a model which has always very few items (In the case of a big model CardsListView or CardsGridview should be used instead). They are presented as a grid of two columns which will remain centered if the application is really wide, or become a single column if there is not enough space for two columns, such as a mobile phone screen.\nA CardsLayout should always be contained within a ColumnLayout." + } + } + + ColumnLayout { + Kirigami.CardsLayout { + id: layout + Kirigami.AbstractCard { + Layout.fillHeight: true + header: Kirigami.Heading { + text: "AbstractCard" + level: 2 + } + contentItem: Controls.Label { + wrapMode: Text.WordWrap + text: "An AbstractCard is the simplest form of card. It's just a rectangle with a shadow, which can contain any Item in it. It can also have items assigned to the Header or Footer properties. In this case a Kirigami.Heading is its header and a Label with WordWrap is the contentItem." + } + } + + Kirigami.AbstractCard { + showClickFeedback: true + contentItem: Controls.Label { + wrapMode: Text.WordWrap + text: "This is an AbstractCard with a Label with WordWrap in it and nothing else, it's the simplest form Cards can be found in.\nAn AbstractCard can be clicked itself, with the usual onClicked signal handler and the showClickFeedback property can be used if the click should show any kind of visual feedback. It is recommended to set it to true if you plan to make the card reactive on any kind of click." + } + onClicked: showPassiveNotification("Card clicked") + } + + Kirigami.Card { + actions: [ + Kirigami.Action { + text: "Action1" + icon.name: "add-placemark" + }, + Kirigami.Action { + text: "Action2" + icon.name: "address-book-new-symbolic" + } + ] + banner { + imageSource: "../banner.jpg" + title: "Card" + } + contentItem: Controls.Label { + wrapMode: Text.WordWrap + text: "This is an instance of the Card type: it can optionally have an image, a title and an icon assigned to its banner group property, one or all of the properties together. A Card can also have Actions that will appear in the footer." + } + } + + + Kirigami.Card { + actions: [ + Kirigami.Action { + text: "Action1" + icon.name: "add-placemark" + }, + Kirigami.Action { + text: "Action2" + icon.name: "address-book-new-symbolic" + }, + Kirigami.Action { + text: "Action3" + icon.name: "add-placemark" + }, + Kirigami.Action { + text: "Action4" + icon.name: "address-book-new-symbolic" + }, + Kirigami.Action { + text: "Action5" + icon.name: "add-placemark" + }, + Kirigami.Action { + text: "Action6" + icon.name: "address-book-new-symbolic" + } + ] + banner { + imageSource: "../banner.jpg" + title: "Title Alignment" + titleAlignment: Qt.AlignLeft | Qt.AlignBottom + } + contentItem: Controls.Label { + wrapMode: Text.WordWrap + text: "The title can be aligned to all corners or centered with a combination of Qt.Alignment flags.\n When there are too many actions, they go in an overflow menu." + } + } + + Kirigami.Card { + actions: [ + Kirigami.Action { + text: "Action1" + icon.name: "add-placemark" + }, + Kirigami.Action { + text: "Action2" + icon.name: "address-book-new-symbolic" + }, + Kirigami.Action { + text: "Action3" + icon.name: "add-placemark" + } + ] + banner { + iconSource: "applications-graphics" + title: "Title only" + } + contentItem: Controls.Label { + wrapMode: Text.WordWrap + text: "The Banner can contain only the title and/or an icon, even if there is no banner image." + } + } + + Kirigami.Card { + banner.imageSource: "../banner.jpg" + + header: Rectangle { + color: Qt.rgba(0,0,0,0.3) + implicitWidth: headerLayout.implicitWidth + implicitHeight: headerLayout.implicitHeight - avatarIcon.height/2 + ColumnLayout { + id: headerLayout + anchors { + left: parent.left + right: parent.right + } + Controls.Label { + Layout.fillWidth: true + padding: Kirigami.Units.largeSpacing + + color: "white" + wrapMode: Text.WordWrap + text: "It's possible to have custom contents overlapping the image, for cases where a more personalised design is needed." + } + Rectangle { + id: avatarIcon + color: "steelblue" + radius: width + Layout.alignment: Qt.AlignHCenter + Layout.preferredWidth: Kirigami.Units.iconSizes.huge + Layout.preferredHeight: Kirigami.Units.iconSizes.huge + } + } + } + contentItem: Controls.Label { + wrapMode: Text.WordWrap + topPadding: avatarIcon.height/2 + text: "It's possible to customize the look and feel for Cards too, if the no padding behavior for headers is needed. This is usually discouraged in order to have greater consistency, but in some cases the design requires a more fancy layout, as shown in this example of a Card. If a custom header is used, the title and icon in the banner property shouldn't be used. If a custom footer is used (which is discouraged), actions shouldn't be used." + } + footer: RowLayout { + Controls.Label { + Layout.fillWidth: true + text: "Custom footer" + } + Controls.Button { + text: "Ok" + } + } + } + + Kirigami.Card { + headerOrientation: Qt.Horizontal + actions: [ + Kirigami.Action { + text: "Action1" + icon.name: "add-placemark" + }, + Kirigami.Action { + text: "Action2" + icon.name: "address-book-new-symbolic" + } + ] + banner { + imageSource: "../banner.jpg" + title: "Title" + } + contentItem: Controls.Label { + wrapMode: Text.WordWrap + text: "A card can optionally have horizontal orientation.\n In this case will be wider than tall, so is fit to be used also in a ColumnLayout.\nIf you need to put it in a CardsLayout, it will have by default a columnSpan of 2 (which can be overridden)." + } + } + } + } +} diff --git a/examples/gallerydata/contents/ui/gallery/CardsListViewGallery.qml b/examples/gallerydata/contents/ui/gallery/CardsListViewGallery.qml new file mode 100644 index 00000000..f03c4df8 --- /dev/null +++ b/examples/gallerydata/contents/ui/gallery/CardsListViewGallery.qml @@ -0,0 +1,116 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2 or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 as Controls +import QtQuick.Layouts 1.2 +import org.kde.kirigami 2.4 as Kirigami + +Kirigami.ScrollablePage { + id: page + + title: "List view of simple cards" + + actions.main: Kirigami.Action { + iconName: "documentinfo" + text: "Info" + checkable: true + onCheckedChanged: sheet.sheetOpen = checked; + shortcut: "Alt+I" + } + + Kirigami.OverlaySheet { + id: sheet + onSheetOpenChanged: page.actions.main.checked = sheetOpen + header: RowLayout { + Kirigami.Heading { + Layout.fillWidth: true + text: "CardsGridView" + } + Controls.ToolButton { + text: "HIG..." + enabled: false + onClicked: Qt.openUrlExternally("") + } + Controls.ToolButton { + text: "Source code..." + onClicked: Qt.openUrlExternally("https://cgit.kde.org/kirigami.git/tree/examples/gallerydata/contents/ui/gallery/CardsListViewGallery.qml + ") + } + } + + Controls.Label { + property int implicitWidth: Kirigami.Units.gridUnit * 25 + wrapMode: Text.WordWrap + text: "The Kirigami types AbstractCard and Card are used to implement the popular Card pattern used on many mobile and web platforms that is used to display a collection of information or actions.\n Besides the Card components, Kirigami offers also 3 kinds of views and positioners to help to present cards with beautiful and responsive layouts.\n\nIn this page, CardsListView is used to do a list view of AbstractCard subclasses with a custom layout inside.\n CardsListView should be used only with cards which can look good at any horizontal size, so it is recommended to use directly AbstractCard with an appropriate layout inside, because they are stretching for the whole list width.\nTherefore is discouraged to use it with the Card type, unless it has Horizontal as headerOrientation.\n The choice between using this view with AbstractCard or a normal ListView with AbstractListItem/BasicListItem is purely a choice based on aestetics alone." + } + } + + Kirigami.CardsListView { + model: 100 + + delegate: Kirigami.AbstractCard { + + //NOTE: never put a Layout as contentItem as it will cause binding loops + //SEE: https://bugreports.qt.io/browse/QTBUG-66826 + contentItem: Item { + implicitWidth: delegateLayout.implicitWidth + implicitHeight: delegateLayout.implicitHeight + GridLayout { + id: delegateLayout + anchors { + left: parent.left + top: parent.top + right: parent.right + //IMPORTANT: never put the bottom margin + } + rowSpacing: Kirigami.Units.largeSpacing + columnSpacing: Kirigami.Units.largeSpacing + columns: width > Kirigami.Units.gridUnit * 20 ? 4 : 2 + Kirigami.Icon { + source: "applications-graphics" + Layout.fillHeight: true + Layout.maximumHeight: Kirigami.Units.iconSizes.huge + Layout.preferredWidth: height + } + ColumnLayout { + Kirigami.Heading { + level: 2 + text: "Product "+ modelData + } + Kirigami.Separator { + Layout.fillWidth: true + } + Controls.Label { + Layout.fillWidth: true + wrapMode: Text.WordWrap + text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id risus id augue euismod accumsan." + } + } + Controls.Button { + Layout.alignment: Qt.AlignRight|Qt.AlignVCenter + Layout.columnSpan: 2 + text: "Install" + onClicked: showPassiveNotification("Install for Product " + modelData + " clicked"); + } + } + } + } + } +} diff --git a/kirigami.qrc b/kirigami.qrc index dbdf5687..eca75ce4 100644 --- a/kirigami.qrc +++ b/kirigami.qrc @@ -1,62 +1,70 @@ src/controls/AbstractApplicationWindow.qml src/controls/ContextDrawer.qml src/controls/Action.qml src/controls/Page.qml src/controls/PageRow.qml src/controls/AbstractListItem.qml src/controls/Theme.qml + src/controls/AbstractCard.qml + src/controls/templates/AbstractCard.qml + src/controls/Card.qml + src/controls/CardsLayout.qml + src/controls/CardsListView.qml + src/controls/CardsGridView.qml src/controls/ToolBarApplicationHeader.qml src/controls/private/PrivateActionToolButton.qml src/controls/private/RefreshableScrollView.qml src/controls/private/SwipeItemEventFilter.qml src/controls/private/PageActionPropertyGroup.qml src/controls/private/ActionIconGroup.qml src/controls/private/CornerShadow.qml src/controls/private/ActionButton.qml src/controls/private/DefaultListItemBackground.qml + src/controls/private/BannerImage.qml + src/controls/private/BannerGroup.qml src/controls/private/EdgeShadow.qml src/controls/Separator.qml src/controls/OverlayDrawer.qml src/controls/OverlaySheet.qml src/controls/GlobalDrawer.qml src/controls/templates/AbstractListItem.qml src/controls/templates/private/MenuIcon.qml src/controls/templates/private/PassiveNotification.qml src/controls/templates/private/ContextIcon.qml src/controls/templates/private/ScrollView.qml src/controls/templates/private/BackButton.qml src/controls/templates/private/ForwardButton.qml src/controls/templates/OverlayDrawer.qml src/controls/templates/OverlaySheet.qml src/controls/templates/SwipeListItem.qml src/controls/templates/ApplicationHeader.qml src/controls/templates/AbstractApplicationHeader.qml src/controls/Units.qml src/controls/SwipeListItem.qml src/controls/ApplicationWindow.qml src/controls/AbstractApplicationItem.qml src/controls/ApplicationItem.qml src/controls/ApplicationHeader.qml src/controls/Heading.qml src/controls/ScrollablePage.qml src/controls/Icon.qml src/controls/Label.qml src/controls/BasicListItem.qml src/controls/AbstractApplicationHeader.qml src/controls/FormLayout.qml src/styles/Material/AbstractListItem.qml src/styles/Material/Theme.qml src/styles/Material/SwipeListItem.qml src/styles/Material/Label.qml src/styles/org.kde.desktop/AbstractListItem.qml src/styles/org.kde.desktop/Theme.qml src/styles/org.kde.desktop/OverlayDrawer.qml src/styles/org.kde.desktop/Units.qml src/styles/org.kde.desktop/SwipeListItem.qml src/styles/org.kde.desktop/ApplicationWindow.qml src/styles/org.kde.desktop/AbstractApplicationHeader.qml src/controls/templates/FormLayout.qml diff --git a/src/controls/AbstractCard.qml b/src/controls/AbstractCard.qml new file mode 100644 index 00000000..9a2a6913 --- /dev/null +++ b/src/controls/AbstractCard.qml @@ -0,0 +1,69 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtGraphicalEffects 1.0 +import org.kde.kirigami 2.3 as Kirigami +import "templates" as T + +/** + * A AbstractCard is the base for cards. A Card is a visual object that serves + * as an entry point for more detailed information. An abstractCard is empty, + * providing just the look and the base properties and signals for an ItemDelegate. + * It can be filled with any custom layout of items, its content is organized + * in 3 properties: header, contentItem and footer. + * Use this only when you need particular custom contents, for a standard layout + * for cards, use the Card component. + * + * @see Card + * @inherits T.AbstractCard + * @since 2.4 + */ +T.AbstractCard { + id: root + + background: Rectangle { + color: Kirigami.Theme.backgroundColor + Rectangle { + anchors.fill: parent + color: Kirigami.Theme.highlightColor + opacity: { + if (root.showClickFeedback) { + return root.down ? 0.3 : (root.hovered ? 0.1 : 0); + } else { + return 0; + } + } + Behavior on opacity { + OpacityAnimator { + duration: Kirigami.Units.longDuration + easing.type: Easing.InOutQuad + } + } + } + layer.enabled: true + layer.effect: DropShadow { + horizontalOffset: 0 + verticalOffset: 1 + radius: 12 + samples: 32 + color: Qt.rgba(0, 0, 0, 0.5) + } + } +} diff --git a/src/controls/Card.qml b/src/controls/Card.qml new file mode 100644 index 00000000..01502109 --- /dev/null +++ b/src/controls/Card.qml @@ -0,0 +1,183 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.2 +import QtQuick.Controls 2.0 as Controls +import org.kde.kirigami 2.4 as Kirigami +import "private" + +/** + * This is the standard layout of a Card. + * It is recomended to use this class when the concept of Cards is needed + * in the application. + * This Card has default items as header and footer. The header is an + * image that can contain an optional title and icon, accessible via the + * banner grouped property. + * The footer will show a series of toolbuttons (and eventual overflow menu) + * represewnting the actions list accessible with the list property actions. + * It is possible even tough is discouraged to override the footer: + * in this case the actions property shouldn't be used. + * + * @inherits AbstractCard + * @since 2.4 + */ +Kirigami.AbstractCard { + id: root + + /** + * actions: list + * if the card should provide clickable actions, put them in this property, + * they will be put in the footer as a list of ToolButtons plus an optional + * overflow menu, when not all of them will fit in the available Card width. + */ + property list actions + + /** + * banner: grouped + * Gropuped property to control the banner image present in the header, it + * has the following sub properties: + * * url imageSource: the source for the image, it understands any url + * valid for an Image component + * * string title: the title for the banner, shown as contrasting + * text over the image + * * Qt.Alignment titleAlignment: the alignment of the title inside the image, + * a combination of flags is supported + * (default: Qt.AlignTop | Qt.AlignLeft) + * * string iconSource: the optional icon to put in the banner: + * it can be either a freedesktop-compatible icon name (recommended) + * or any url supported by Image + * * Image.FillMode fillMode: see the fillMode property of the Image component (default: Image.PreserveAspectCrop) + */ + readonly property alias banner: bannerGroup + + header: BannerImage { + id: bannerImage + BannerGroup { + id: bannerGroup + } + anchors.leftMargin: -root.leftPadding + anchors.topMargin: -root.topPadding + anchors.rightMargin: root.headerOrientation == Qt.Vertical ? -root.rightPadding : 0 + anchors.bottomMargin: root.headerOrientation == Qt.Horizontal ? -root.bottomPadding : 0 + title: bannerGroup.title + source: bannerGroup.imageSource + titleAlignment: bannerGroup.titleAlignment + titleIcon: bannerGroup.iconSource + fillMode: bannerGroup.fillMode + height: Layout.preferredHeight + + } + + onHeaderChanged: { + if (!header) { + return; + } + + header.anchors.leftMargin = Qt.binding(function() {return -root.leftPadding}); + header.anchors.topMargin = Qt.binding(function() {return -root.topPadding}); + header.anchors.rightMargin = Qt.binding(function() {return root.headerOrientation == Qt.Vertical ? -root.rightPadding : 0}); + header.anchors.bottomMargin = Qt.binding(function() {return root.headerOrientation == Qt.Horizontal ? -root.bottomPadding : 0}); + } + + footer: RowLayout { + id: actionsLayout + spacing: Kirigami.Units.smallSpacing + property var overflowSet: [] + visible: root.footer == actionsLayout + + Repeater { + model: root.actions + delegate: PrivateActionToolButton { + id: actionDelegate + property bool fits: { + var minX = 0; + for (var i = 0; i < index; ++i) { + if (actionsLayout.children[i].visible) { + minX += actionsLayout.children[i].implicitWidth + actionsLayout.spacing; + } + } + return minX + implicitWidth < root.width - root.leftPadding - root.rightPadding - moreButton.width; + } + visible: modelData.visible && fits + Layout.fillWidth: true + Layout.minimumWidth: implicitWidth + kirigamiAction: modelData + onFitsChanged: updateOverflowSet() + function updateOverflowSet() { + var index = actionsLayout.overflowSet.findIndex(function(act){ + return act == modelData}); + + if ((fits || !modelData.visible) && index > -1) { + actionsLayout.overflowSet.splice(index, 1); + } else if (!fits && modelData.visible && index == -1) { + actionsLayout.overflowSet.push(modelData); + } + actionsLayout.overflowSetChanged(); + } + Connections { + target: modelData + onVisibleChanged: actionDelegate.updateOverflowSet(); + } + Component.onCompleted: { + actionDelegate.updateOverflowSet(); + } + } + } + Controls.ToolButton { + id: moreButton + + Icon { + anchors.fill: parent + source: "overflow-menu" + anchors.margins: 4 + } + Layout.alignment: Qt.AlignRight + //checkable: true + checked: menu.visible + visible: actionsLayout.overflowSet.length > 0; + onClicked: menu.visible ? menu.close() : menu.open() + + Controls.Menu { + id: menu + y: -height + x: -width + moreButton.width + + Repeater { + model: root.actions + delegate: BasicListItem { + text: modelData ? modelData.text : "" + icon: modelData.icon + checkable: modelData.checkable + checked: modelData.checked + onClicked: { + modelData.trigger(); + menu.visible = false; + } + separatorVisible: false + backgroundColor: "transparent" + visible: actionsLayout.overflowSet.findIndex(function(act) { + return act == modelData}) > -1 && modelData.visible + enabled: modelData.enabled + } + } + } + } + } +} diff --git a/src/controls/CardsGridView.qml b/src/controls/CardsGridView.qml new file mode 100644 index 00000000..90f41f7e --- /dev/null +++ b/src/controls/CardsGridView.qml @@ -0,0 +1,55 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2 or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 as Controls +import QtQuick.Layouts 1.2 +import org.kde.kirigami 2.3 as Kirigami + +/** + * CardsGridView is used to display a grid of Cards generated from any model. + * The behavior is same as CardsLayout, and it allowes cards to be put in one or two + * columns depending from the available width. + * GridView has the limitation that every Card must have the same exact height, + * so cellHeight must be manually set to a value in which the content fits + * for every item. + * If possible use cards only when you don't need to instantiate a lot + * and use CardsLayout intead. + * @inherits GridView + * @see CardsLayout + * @since 2.4 + */ +GridView { + id: root + + /** + * maximumColumnWidth: int + * The maximum width the columns may have. the cards will never + * get wider than this size, when the GridView is wider than + * maximumColumnWidth, it will switch from one to two columns. + * If the default needs to be overridden for some reason, + * it is advised to express this unit as a multiple + * of Kirigami.Units.gridUnit + */ + property int maximumColumnWidth: Kirigami.Units.gridUnit * 20 + cellWidth: width > maximumColumnWidth ? width/2 : width + cellHeight: Math.max(Kirigami.Units.gridUnit * 15, Math.min(cellWidth, maximumColumnWidth) / 1.2) + + topMargin: Kirigami.Units.largeSpacing * 2 +} diff --git a/src/controls/CardsLayout.qml b/src/controls/CardsLayout.qml new file mode 100644 index 00000000..bb2c8980 --- /dev/null +++ b/src/controls/CardsLayout.qml @@ -0,0 +1,65 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2 or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 as Controls +import QtQuick.Layouts 1.2 +import org.kde.kirigami 2.4 as Kirigami + +/** + * A GridLayout optimized for showing one or two columns of cards, + * depending on the available space. + * It Should be used when the cards are not instantiated by a model or by a + * model which has always very few items (In the case of a big model + * CardsListView or CardsGridview should be used instead). + * They are presented as a grid of two columns which will remain + * centered if the application is really wide, or become a single + * column if there is not enough space for two columns, + * such as a mobile phone screen. + * A CardsLayout should always be contained within a ColumnLayout. + * @inherits GridLayout + * @since 2.4 + */ +GridLayout { + /** + * maximumColumnWidth: int + * The maximum width the columns may have. the cards will never + * get wider than this size, when the GridLayout is wider than + * maximumColumnWidth, it will switch from one to two columns. + * If the default needs to be overridden for some reason, + * it is advised to express this unit as a multiple + * of Kirigami.Units.gridUnit + */ + property int maximumColumnWidth: Kirigami.Units.gridUnit * 20 + + columns: width > maximumColumnWidth ? 2 : 1 + rowSpacing: Kirigami.Units.largeSpacing * 2 + columnSpacing: Kirigami.Units.largeSpacing * 2 + + Layout.preferredWidth: maximumColumnWidth * 2 + (columns > 1 ? Kirigami.Units.largeSpacing * 2 : 0) + Layout.maximumWidth: Layout.preferredWidth + Layout.alignment: Qt.AlignHCenter + + Component.onCompleted: childrenChanged() + onChildrenChanged: { + for (var i = 0; i < children.length; ++i) { + children[i].Layout.fillHeight = true; + } + } +} diff --git a/src/controls/CardsListView.qml b/src/controls/CardsListView.qml new file mode 100644 index 00000000..82c9e9eb --- /dev/null +++ b/src/controls/CardsListView.qml @@ -0,0 +1,53 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2 or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtQuick.Controls 2.0 as Controls +import QtQuick.Layouts 1.2 +import org.kde.kirigami 2.3 as Kirigami + +/** + * CardsListView is a ListView which can have AbstractCard as its delegete: it will + * automatically assign the proper spacings and margins around the cards adhering + * to the design guidelines. + * CardsListView should be used only with cards which can look good at any + * horizontal size, so It is recommended to use directly AbstractCard with an + * appropriate layout inside, because they are stretching for the whole list width. + * Therefore is discouraged to use it with the Card type, unless it has + * Horizontal as headerOrientation. + * The choice between using this view with AbstractCard or a normal ListView + * with AbstractListItem/BasicListItem is purely a choice based on aestetics alone. + * It is discouraged to tweak the properties of this ListView. + * @inherits ListView + * @since 2.4 + */ +ListView { + id: root + spacing: Kirigami.Units.largeSpacing * 2 + topMargin: headerPositioning != ListView.InlineHeader ? spacing : 0 + + headerPositioning: ListView.OverlayHeader + + onContentHeightChanged: { + var item = contentItem.children[0]; + if (item && !item.hasOwnProperty("header") && !item.hasOwnProperty("_contentItem")) { + print("Warning: only AbstractCard items are supported in CardsListView") + } + } +} diff --git a/src/controls/GlobalDrawer.qml b/src/controls/GlobalDrawer.qml index f9dbfe3a..40a1ba37 100644 --- a/src/controls/GlobalDrawer.qml +++ b/src/controls/GlobalDrawer.qml @@ -1,466 +1,405 @@ /* * Copyright 2015 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import QtQuick 2.6 import QtQuick.Templates 2.0 as T2 import QtQuick.Layouts 1.2 import QtGraphicalEffects 1.0 import org.kde.kirigami 2.3 import "private" import "templates/private" /** * A drawer specialization intended for the global actions of the application * valid regardless of the application state (think about the menubar * of a desktop application). * * Example usage: * @code * import org.kde.kirigami 2.2 as Kirigami * * Kirigami.ApplicationWindow { * [...] * globalDrawer: Kirigami.GlobalDrawer { * actions: [ * Kirigami.Action { * text: "View" * iconName: "view-list-icons" * Kirigami.Action { * text: "action 1" * } * Kirigami.Action { * text: "action 2" * } * Kirigami.Action { * text: "action 3" * } * }, * Kirigami.Action { * text: "Sync" * iconName: "folder-sync" * } * ] * } * [...] * } * @endcode * */ OverlayDrawer { id: root edge: Qt.application.layoutDirection == Qt.RightToLeft ? Qt.RightEdge : Qt.LeftEdge /** * title: string * A title to be displayed on top of the drawer */ - property alias title: heading.text + property alias title: bannerImage.title /** * icon: var * An icon to be displayed alongside the title. * It can be a QIcon, a fdo-compatible icon name, or any url understood by Image */ - property alias titleIcon: headingIcon.source + property alias titleIcon: bannerImage.titleIcon /** * bannerImageSource: string * An image to be used as background for the title and icon for * a decorative purpose. * It accepts any url format supported by Image */ property alias bannerImageSource: bannerImage.source /** * actions: list * The list of actions can be nested having a tree structure. * A tree depth bigger than 2 is discouraged. * * Example usage: * @code * import org.kde.kirigami 2.2 as Kirigami * * Kirigami.ApplicationWindow { * [...] * globalDrawer: Kirigami.GlobalDrawer { * actions: [ * Kirigami.Action { * text: "View" * iconName: "view-list-icons" * Kirigami.Action { * text: "action 1" * } * Kirigami.Action { * text: "action 2" * } * Kirigami.Action { * text: "action 3" * } * }, * Kirigami.Action { * text: "Sync" * iconName: "folder-sync" * } * ] * } * [...] * } * @endcode */ property list actions /** * content: list default property * Any random Item can be instantiated inside the drawer and * will be displayed underneath the actions list. * * Example usage: * @code * import org.kde.kirigami 2.2 as Kirigami * * Kirigami.ApplicationWindow { * [...] * globalDrawer: Kirigami.GlobalDrawer { * actions: [...] * Button { * text: "Button" * onClicked: //do stuff * } * } * [...] * } * @endcode */ default property alias content: mainContent.data /** * topContent: list default property * Items that will be instantiated inside the drawer and * will be displayed on top of the actions list. * * Example usage: * @code * import org.kde.kirigami 2.2 as Kirigami * * Kirigami.ApplicationWindow { * [...] * globalDrawer: Kirigami.GlobalDrawer { * actions: [...] * topContent: [Button { * text: "Button" * onClicked: //do stuff * }] * } * [...] * } * @endcode */ property alias topContent: topContent.data /** * resetMenuOnTriggered: bool * * On the actions menu, whenever a leaf action is triggered, the menu * will reset to its parent. */ property bool resetMenuOnTriggered: true /** * currentSubMenu: Action * * Points to the action acting as a submenu */ readonly property Action currentSubMenu: stackView.currentItem ? stackView.currentItem.current: null /** * Notifies that the banner has been clicked */ signal bannerClicked() /** * Reverts the menu back to its initial state */ function resetMenu() { stackView.pop(stackView.get(0, T2.StackView.DontLoad)); if (root.modal) { root.drawerOpen = false; } } rightPadding: !Settings.isMobile && mainFlickable.contentHeight > mainFlickable.height ? Units.gridUnit : Units.smallSpacing contentItem: ScrollView { id: scrollView //ensure the attached property exists Theme.inherit: true anchors.fill: parent implicitWidth: Math.min (Units.gridUnit * 20, root.parent.width * 0.8) horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff Flickable { id: mainFlickable contentWidth: width contentHeight: mainColumn.Layout.minimumHeight ColumnLayout { id: mainColumn width: mainFlickable.width spacing: 0 height: Math.max(root.height, Layout.minimumHeight) - Image { + BannerImage { id: bannerImage Layout.fillWidth: true - Layout.preferredWidth: title.implicitWidth - Layout.preferredHeight: bannerImageSource != "" ? 10 * Units.gridUnit : Layout.minimumHeight - Layout.minimumHeight: title.height > 0 ? title.height + Units.smallSpacing * 2 : 0 - + fillMode: Image.PreserveAspectCrop MouseArea { anchors.fill: parent onClicked: root.bannerClicked() } - - fillMode: Image.PreserveAspectCrop - asynchronous: true - - anchors { - left: parent.left - right: parent.right - top: parent.top - } - EdgeShadow { edge: Qt.BottomEdge visible: bannerImageSource != "" anchors { left: parent.left right: parent.right bottom: parent.top } } - LinearGradient { - anchors { - left: parent.left - right: parent.right - top: parent.top - } - visible: bannerImageSource != "" && root.title != "" - height: title.height * 1.3 - start: Qt.point(0, 0) - end: Qt.point(0, height) - gradient: Gradient { - GradientStop { - position: 0.0 - color: Qt.rgba(0, 0, 0, 0.8) - } - GradientStop { - position: 1.0 - color: "transparent" - } - } - } - - RowLayout { - id: title - anchors { - left: parent.left - top: parent.top - margins: Units.smallSpacing * 2 - } - Icon { - id: headingIcon - Layout.minimumWidth: Units.iconSizes.large - Layout.minimumHeight: width - visible: valid - isMask: false - //TODO: find a better way to control selective coloring on Android - enabled: !Settings.isMobile - } - Heading { - id: heading - Layout.fillWidth: true - Layout.rightMargin: heading.height - visible: text.length > 0 - level: 1 - color: bannerImageSource != "" ? "white" : Theme.textColor - elide: Text.ElideRight - } - } } ColumnLayout { id: topContent spacing: 0 Layout.alignment: Qt.AlignHCenter Layout.leftMargin: root.leftPadding Layout.rightMargin: root.rightPadding Layout.bottomMargin: Units.smallSpacing Layout.topMargin: root.topPadding Layout.fillWidth: true Layout.fillHeight: true //NOTE: why this? just Layout.fillWidth: true doesn't seem sufficient //as items are added only after this column creation Layout.minimumWidth: parent.width - root.leftPadding - root.rightPadding visible: children.length > 0 && childrenRect.height > 0 } T2.StackView { id: stackView Layout.fillWidth: true Layout.minimumHeight: currentItem ? currentItem.implicitHeight : 0 Layout.maximumHeight: Layout.minimumHeight initialItem: menuComponent //NOTE: it's important those are NumberAnimation and not XAnimators // as while the animation is running the drawer may close, and //the animator would stop when not drawing see BUG 381576 popEnter: Transition { NumberAnimation { property: "x"; from: (stackView.mirrored ? -1 : 1) * -stackView.width; to: 0; duration: 400; easing.type: Easing.OutCubic } } popExit: Transition { NumberAnimation { property: "x"; from: 0; to: (stackView.mirrored ? -1 : 1) * stackView.width; duration: 400; easing.type: Easing.OutCubic } } pushEnter: Transition { NumberAnimation { property: "x"; from: (stackView.mirrored ? -1 : 1) * stackView.width; to: 0; duration: 400; easing.type: Easing.OutCubic } } pushExit: Transition { NumberAnimation { property: "x"; from: 0; to: (stackView.mirrored ? -1 : 1) * -stackView.width; duration: 400; easing.type: Easing.OutCubic } } replaceEnter: Transition { NumberAnimation { property: "x"; from: (stackView.mirrored ? -1 : 1) * stackView.width; to: 0; duration: 400; easing.type: Easing.OutCubic } } replaceExit: Transition { NumberAnimation { property: "x"; from: 0; to: (stackView.mirrored ? -1 : 1) * -stackView.width; duration: 400; easing.type: Easing.OutCubic } } } Item { Layout.fillWidth: true Layout.fillHeight: root.actions.length>0 Layout.minimumHeight: Units.smallSpacing } ColumnLayout { id: mainContent Layout.alignment: Qt.AlignHCenter Layout.leftMargin: root.leftPadding Layout.rightMargin: root.rightPadding Layout.fillWidth: true Layout.fillHeight: true //NOTE: why this? just Layout.fillWidth: true doesn't seem sufficient //as items are added only after this column creation Layout.minimumWidth: parent.width - root.leftPadding - root.rightPadding visible: children.length > 0 } Item { Layout.minimumWidth: Units.smallSpacing Layout.minimumHeight: root.bottomPadding } Component { id: menuComponent ColumnLayout { spacing: 0 property alias model: actionsRepeater.model property Action current property int level: 0 Layout.maximumHeight: Layout.minimumHeight BasicListItem { id: backItem visible: level > 0 supportsMouseEvents: true icon: (LayoutMirroring.enabled ? "go-previous-symbolic-rtl" : "go-previous-symbolic") label: MnemonicData.richTextLabel MnemonicData.enabled: backItem.enabled && backItem.visible MnemonicData.controlType: MnemonicData.MenuItem MnemonicData.label: qsTr("Back") separatorVisible: false onClicked: stackView.pop() } Shortcut { sequence: backItem.MnemonicData.sequence onActivated: backItem.clicked() } Repeater { id: actionsRepeater model: actions delegate: BasicListItem { id: listItem supportsMouseEvents: true checked: modelData.checked icon: modelData.iconName label: MnemonicData.richTextLabel MnemonicData.enabled: listItem.enabled && listItem.visible MnemonicData.controlType: MnemonicData.MenuItem MnemonicData.label: modelData.text separatorVisible: false visible: model ? model.visible || model.visible===undefined : modelData.visible enabled: model ? model.enabled : modelData.enabled opacity: enabled ? 1.0 : 0.3 Icon { Shortcut { sequence: listItem.MnemonicData.sequence onActivated: listItem.clicked() } isMask: true anchors { verticalCenter: contentItem.verticalCenter right: contentItem.right rightMargin: !Settings.isMobile && mainFlickable.contentHeight > mainFlickable.height ? Units.gridUnit : 0 } height: Units.iconSizes.smallMedium selected: listItem.checked || listItem.pressed width: height source: (LayoutMirroring.enabled ? "go-next-symbolic-rtl" : "go-next-symbolic") visible: modelData.children!==undefined && modelData.children.length > 0 } onClicked: { modelData.trigger(); if (modelData.children!==undefined && modelData.children.length > 0) { stackView.push(menuComponent, {model: modelData.children, level: level + 1, current: modelData }); } else if (root.resetMenuOnTriggered) { root.resetMenu(); } checked = Qt.binding(function() { return modelData.checked }); } } } } } } } } } diff --git a/src/controls/Heading.qml b/src/controls/Heading.qml index 8bfbb4a5..63637558 100644 --- a/src/controls/Heading.qml +++ b/src/controls/Heading.qml @@ -1,83 +1,82 @@ /* * Copyright 2012 by Sebastian Kügler * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. */ import QtQuick 2.0 import QtQuick.Controls 2.0 as QQC2 import org.kde.kirigami 2.2 /** * A heading label used for subsections of texts. * * The characteristics of the text will be automatically set according to the * plasma Theme. Use this components for section titles or headings in your UI, * for example page or section titles. * * Example usage: * * @code * import org.kde.kirigami 2.2 as Kirigami * [...] * Column { * Kirigami.Heading { * text: "Apples in the sunlight" * level: 2 * } * [...] * } * @endcode * * The most important property is "text", which applies to the text property of * Label. See PlasmaComponents Label and primitive QML Text element API for * additional properties, methods and signals. * @inherits QtQuick.Controls.Label */ QQC2.Label { id: heading /** * level: int * The level determines how big the section header is display, values * between 1 (big) and 5 (small) are accepted */ property int level: 1 /** * step: int * adjust the point size in between a level and another. */ property int step: 2 - lineHeight: 1.2 font.pointSize: headerPointSize(level) font.weight: level <= 4 ? Font.Light : Font.Normal wrapMode: Text.WordWrap function headerPointSize(l) { var n = Theme.defaultFont.pointSize; var s; if (l > 4) { s = n } else if (l < 2) { s = n + (5*step) } else { s = n + ((5-level)*2) } return s; } } diff --git a/src/controls/Page.qml b/src/controls/Page.qml index ce394948..08df4328 100644 --- a/src/controls/Page.qml +++ b/src/controls/Page.qml @@ -1,269 +1,267 @@ /* * Copyright 2015 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import QtQuick 2.1 import QtQuick.Layouts 1.2 import org.kde.kirigami 2.2 as Kirigami import "private" import QtQuick.Templates 2.0 as T2 /** * Page is a container for all the app pages: everything pushed to the * ApplicationWindow stackView should be a Page instabnce (or a subclass, * such as ScrollablePage) * @see ScrollablePage * @inherit QtQuick.Templates.Page */ T2.Page { id: root /** * leftPadding: int * default contents padding at left */ leftPadding: Kirigami.Units.gridUnit /** * topPadding: int * default contents padding at top */ topPadding: Kirigami.Units.gridUnit /** * rightPadding: int * default contents padding at right */ rightPadding: Kirigami.Units.gridUnit /** * bottomPadding: int * default contents padding at bottom */ bottomPadding: actionButtons.item ? actionButtons.height : Kirigami.Units.gridUnit /** * flickable: Flickable * if the central element of the page is a Flickable * (ListView and Gridview as well) you can set it there. * normally, you wouldn't need to do that, but just use the * ScrollablePage element instead * @see ScrollablePage * Use this if your flickable has some non standard properties, such as not covering the whole Page */ property Flickable flickable /** * actions.contextualActions: list * Defines the contextual actions for the page: * an easy way to assign actions in the right sliding panel * * Example usage: * @code * import org.kde.kirigami 2.2 as Kirigami * * Kirigami.ApplicationWindow { * [...] * contextDrawer: Kirigami.ContextDrawer { * id: contextDrawer * } * [...] * } * @endcode * * @code * import org.kde.kirigami 2.2 as Kirigami * * Kirigami.Page { * [...] * actions.contextualActions: [ * Kirigami.Action { * iconName: "edit" * text: "Action text" * onTriggered: { * // do stuff * } * }, * Kirigami.Action { * iconName: "edit" * text: "Action text" * onTriggered: { * // do stuff * } * } * ] * [...] * } * @endcode */ //TODO: remove property alias contextualActions: actionsGroup.contextualActions /** * actions.main: Action * An optional single action for the action button. * it can be a Kirigami.Action or a QAction * * Example usage: * * @code * import org.kde.kirigami 2.2 as Kirigami * Kirigami.Page { * actions.main: Kirigami.Action { * iconName: "edit" * onTriggered: { * // do stuff * } * } * } * @endcode */ //TODO: remove property alias mainAction: actionsGroup.main /** * actions.left: Action * An optional extra action at the left of the main action button. * it can be a Kirigami.Action or a QAction * * Example usage: * * @code * import org.kde.kirigami 2.2 as Kirigami * Kirigami.Page { * actions.left: Kirigami.Action { * iconName: "edit" * onTriggered: { * // do stuff * } * } * } * @endcode */ //TODO: remove property alias leftAction: actionsGroup.left /** * actions.right: Action * An optional extra action at the right of the main action button. * it can be a Kirigami.Action or a QAction * * Example usage: * * @code * import org.kde.kirigami 2.2 as Kirigami * Kirigami.Page { * actions.right: Kirigami.Action { * iconName: "edit" * onTriggered: { * // do stuff * } * } * } * @endcode */ //TODO: remove property alias rightAction: actionsGroup.right /** * Actions properties are grouped. * * @code * import org.kde.kirigami 2.2 as Kirigami * Kirigami.Page { * actions { * main: Kirigami.Action {...} * left: Kirigami.Action {...} * right: Kirigami.Action {...} * contextualActions: [ * Kirigami.Action {...}, * Kirigami.Action {...} * ] * } * } * @endcode */ readonly property alias actions: actionsGroup /** * isCurrentPage: bool * * Specifies if it's the currently selected page in the window's pages row. * * @since 2.1 */ readonly property bool isCurrentPage: applicationWindow().pageStack.layers.depth > 1 ? applicationWindow().pageStack.layers.currentItem == root : applicationWindow().pageStack.currentItem == root PageActionPropertyGroup { id: actionsGroup } /** * emitted When the application requests a Back action * For instance a global "back" shortcut or the Android * Back button has been pressed. * The page can manage the back event by itself, * and if it set event.accepted = true, it will stop the main * application to manage the back event. */ signal backRequested(var event); - anchors.topMargin: (applicationWindow() && !applicationWindow().wideScreen && Kirigami.Settings.isMobile && applicationWindow().controlsVisible && applicationWindow().header ? applicationWindow().header.preferredHeight : 0) - //NOTE: This exists just because control instances require it contentItem: Item { onChildrenChanged: { //NOTE: make sure OverlaySheets are directly under the root //so they are over all the contents and don't have margins //search for an OverlaySheet, unfortunately have to blind test properties //as there is no way to get the classname from qml objects //TODO: OverlaySheets should be Popup instead? for (var i = children.length -1; i >= 0; --i) { var child = children[i]; if (child.toString().indexOf("OverlaySheet") === 0 || (child.sheetOpen !== undefined && child.open !== undefined && child.close !== undefined)) { child.parent = root; child.z = 9997 } } } } //on material the shadow would bleed over clip: header !== undefined Loader { id: actionButtons z: 9999 parent: root anchors { left: parent.left right: parent.right bottom: parent.bottom } //It should be T2.Page, Qt 5.7 doesn't like it property Item page: root height: item ? item.height : 0 source: (applicationWindow().header && applicationWindow().header.toString().indexOf("ToolBarApplicationHeader") === 0) || (applicationWindow().footer && applicationWindow().footer.visible && applicationWindow().footer.toString().indexOf("ToolBarApplicationHeader") === 0) ? "" : Qt.resolvedUrl("./private/ActionButton.qml") } Layout.fillWidth: true } diff --git a/src/controls/ScrollablePage.qml b/src/controls/ScrollablePage.qml index d980eeaf..2262ad27 100644 --- a/src/controls/ScrollablePage.qml +++ b/src/controls/ScrollablePage.qml @@ -1,164 +1,164 @@ /* * Copyright 2015 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import QtQuick 2.1 import QtQuick.Layouts 1.2 import org.kde.kirigami 2.2 import "private" /** * ScrollablePage is a container for all the app pages: everything pushed to the * ApplicationWindow stackView should be a Page or ScrollablePage instabnce. * This Page subclass is for content that has to be scrolled around, such as * bigger content than the screen that would normally go in a Flickable * or a ListView. * Scrolling and scrolling indicators will be automatically managed * * * @code * ScrollablePage { * id: root * //The rectangle will automatically bescrollable * Rectangle { * width: root.width * height: 99999 * } * } * @endcode * * @code * ScrollablePage { * id: root * * //support for the popular "pull down to refresh" behavior in mobile apps * supportsRefreshing: true * * //The ListView will automatically receive proper scroll indicators * ListView { * model: myModel * delegate: BasicListItem { ... } * } * } * @endcode * */ Page { id: root /** * refreshing: bool * If true the list is asking for refresh and will show a loading spinner. * it will automatically be set to true when the user pulls down enough the list. * This signals the application logic to start its refresh procedure. * The application itself will have to set back this property to false when done. */ property alias refreshing: scrollView.refreshing /** * supportsRefreshing: bool * If true the list supports the "pull down to refresh" behavior. * default is false. */ property alias supportsRefreshing: scrollView.supportsRefreshing /** * flickable: Flickable * The main Flickable item of this page */ property alias flickable: scrollView.flickableItem /** * verticalScrollBarPolicy: Qt.ScrollBarPolicy * The vertical scrollbar policy */ property alias verticalScrollBarPolicy: scrollView.verticalScrollBarPolicy /** * horizontalScrollBarPolicy: Qt.ScrollBarPolicy * The horizontal scrollbar policy */ property alias horizontalScrollBarPolicy: scrollView.horizontalScrollBarPolicy /** * The main content Item of this page. * In the case of a ListView or GridView, both contentItem and flickable * will be a pointer to the ListView (or GridView) * NOTE: can't be contentItem as Page's contentItem is final */ default property QtObject mainItem /** * keyboardNavigationEnabled: bool * If true, and if flickable is an item view, like a ListView or * a GridView, it will be possible to navigate the list current item * to next and previous items with keyboard up/down arrow buttons. * Also, any key event will be forwarded to the current list item. * default is true. */ property bool keyboardNavigationEnabled: true Theme.colorSet: flickable && flickable.hasOwnProperty("model") ? Theme.View : Theme.Window RefreshableScrollView { id: scrollView z: 0 //child of root as it shouldn't have margins parent: root page: root - topPadding: (applicationWindow() && applicationWindow().header ? applicationWindow().header.preferredHeight : 0) + (contentItem == flickableItem ? 0 : root.topPadding) + topPadding: contentItem == flickableItem ? 0 : root.topPadding leftPadding: root.leftPadding rightPadding: root.rightPadding bottomPadding: contentItem == flickableItem ? 0 : root.bottomPadding anchors { fill: parent topMargin: root.header ? root.header.height : 0 bottomMargin: root.footer ? root.footer.height : 0 } } anchors.topMargin: 0 Keys.forwardTo: root.keyboardNavigationEnabled && root.flickable ? (("currentItem" in root.flickable) && root.flickable.currentItem ? [ root.flickable.currentItem, root.flickable ] : [ root.flickable ]) : [] Item { id: overlay parent: root z: 9998 anchors.fill: parent property QtObject oldMainItem } //HACK to get the mainItem as the last one, all the other eventual items as an overlay //no idea if is the way the user expects onMainItemChanged: { if (mainItem.hasOwnProperty("anchors")) { scrollView.contentItem = mainItem //don't try to reparent drawers } else if (mainItem.hasOwnProperty("dragMargin")) { return; } if (overlay.oldMainItem && overlay.oldMainItem.hasOwnProperty("parent") && overlay.oldMainItem.parent != applicationWindow().overlay) { overlay.oldMainItem.parent = overlay } overlay.oldMainItem = mainItem } } diff --git a/src/controls/Units.qml b/src/controls/Units.qml index 8ca6eae0..0dea5cda 100644 --- a/src/controls/Units.qml +++ b/src/controls/Units.qml @@ -1,121 +1,121 @@ /* * Copyright 2015 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import QtQuick 2.4 import QtQuick.Window 2.2 import org.kde.kirigami 2.2 pragma Singleton /** * A set of values to define semantically sizes and durations * @inherit QtQuick.QtObject */ QtObject { id: units /** * The fundamental unit of space that should be used for sizes, expressed in pixels. * Given the screen has an accurate DPI settings, it corresponds to a width of * the capital letter M */ property int gridUnit: fontMetrics.height /** * units.iconSizes provides access to platform-dependent icon sizing * * The icon sizes provided are normalized for different DPI, so icons * will scale depending on the DPI. * * Icon sizes from KIconLoader, adjusted to devicePixelRatio: * * small * * smallMedium * * medium * * large * * huge * * enormous * * Not devicePixelRation-adjusted:: * * desktop */ property QtObject iconSizes: QtObject { property int small: 16 * devicePixelRatio * (Settings.isMobile ? 1.5 : 1) property int smallMedium: 22 * devicePixelRatio * (Settings.isMobile ? 1.5 : 1) property int medium: 32 * devicePixelRatio * (Settings.isMobile ? 1.5 : 1) property int large: 48 * devicePixelRatio * (Settings.isMobile ? 1.5 : 1) property int huge: 64 * devicePixelRatio * (Settings.isMobile ? 1.5 : 1) property int enormous: 128 * devicePixelRatio * (Settings.isMobile ? 1.5 : 1) } /** * units.smallSpacing is the amount of spacing that should be used around smaller UI elements, * for example as spacing in Columns. Internally, this size depends on the size of * the default font as rendered on the screen, so it takes user-configured font size and DPI * into account. */ property int smallSpacing: Math.floor(gridUnit/4) /** * units.largeSpacing is the amount of spacing that should be used inside bigger UI elements, * for example between an icon and the corresponding text. Internally, this size depends on * the size of the default font as rendered on the screen, so it takes user-configured font * size and DPI into account. */ - property int largeSpacing: gridUnit + property int largeSpacing: Math.floor(gridUnit/2) /** * The ratio between physical and device-independent pixels. This value does not depend on the \ * size of the configured font. If you want to take font sizes into account when scaling elements, * use theme.mSize(theme.defaultFont), units.smallSpacing and units.largeSpacing. * The devicePixelRatio follows the definition of "device independent pixel" by Microsoft. */ property real devicePixelRatio: Math.max(1, (fontMetrics.font.pixelSize / fontMetrics.font.pointSize)) /** * units.longDuration should be used for longer, screen-covering animations, for opening and * closing of dialogs and other "not too small" animations */ property int longDuration: 250 /** * units.shortDuration should be used for short animations, such as accentuating a UI event, * hover events, etc.. */ property int shortDuration: 150 /** * time in ms by which the display of tooltips will be delayed. * * @sa ToolTip.delay property */ property int toolTipDelay: 700 /** * How much the mouse scroll wheel scrolls, expressed in lines of text. * Note: this is strictly for classical mouse wheels, touchpads 2 figer scrolling won't be affected */ readonly property int wheelScrollLines: 3 /** * metrics used by the default font */ property variant fontMetrics: TextMetrics { text: "M" } } diff --git a/src/controls/plugins.qmltypes b/src/controls/plugins.qmltypes index 94de7d5f..8a2dfee0 100644 --- a/src/controls/plugins.qmltypes +++ b/src/controls/plugins.qmltypes @@ -1,1598 +1,4443 @@ import QtQuick.tooling 1.2 // This file describes the plugin-supplied types contained in the library. // It is used for QML tooling purposes only. // // This file was auto-generated by: -// 'qmlplugindump -noinstantiate -notrelocatable org.kde.kirigami 2.0 /opt/kde5/qml' +// 'qmlplugindump -output plugins2.qmltypes -qapp -noinstantiate org.kde.kirigami 2.4' Module { dependencies: [ "QtGraphicalEffects 1.0", "QtQml 2.1", "QtQml.Models 2.2", "QtQuick 2.9", - "QtQuick.Controls 2.2", - "QtQuick.Controls.Material 2.1", - "QtQuick.Controls.Material.impl 2.1", + "QtQuick.Controls 2.3", + "QtQuick.Controls.Fusion 2.3", + "QtQuick.Controls.Fusion.impl 2.3", + "QtQuick.Controls.Imagine 2.3", + "QtQuick.Controls.Imagine.impl 2.3", + "QtQuick.Controls.Material 2.3", + "QtQuick.Controls.Material.impl 2.3", "QtQuick.Controls.Styles 1.4", "QtQuick.Controls.Styles.Plasma 2.0", - "QtQuick.Controls.Universal 2.2", - "QtQuick.Controls.Universal.impl 2.2", - "QtQuick.Controls.impl 2.2", + "QtQuick.Controls.Universal 2.3", + "QtQuick.Controls.Universal.impl 2.3", + "QtQuick.Controls.impl 2.3", "QtQuick.Extras 1.4", - "QtQuick.Extras.Private.CppUtils 1.1", "QtQuick.Layouts 1.2", - "QtQuick.Templates 2.2", + "QtQuick.Templates 2.3", "QtQuick.Window 2.3", "org.kde.kconfig 1.0", "org.kde.kquickcontrolsaddons 2.0", "org.kde.plasma.components 2.0", "org.kde.plasma.core 2.0", "org.kde.plasma.extras 2.0" ] Component { name: "ApplicationHeaderStyle" prototype: "QObject" - exports: ["org.kde.kirigami/ApplicationHeaderStyle 2.0"] + exports: ["ApplicationHeaderStyle 2.0"] isCreatable: false exportMetaObjectRevisions: [0] Enum { name: "Status" values: { "Auto": 0, "Breadcrumb": 1, "Titles": 2, "TabBar": 3 } } } Component { name: "DesktopIcon" defaultProperty: "data" prototype: "QQuickItem" - exports: ["org.kde.kirigami/Icon 2.0"] + exports: ["Icon 2.0"] exportMetaObjectRevisions: [0] Property { name: "source"; type: "QVariant" } Property { name: "smooth"; type: "bool" } Property { name: "implicitWidth"; type: "int"; isReadonly: true } Property { name: "implicitHeight"; type: "int"; isReadonly: true } Property { name: "enabled"; type: "bool" } Property { name: "active"; type: "bool" } Property { name: "valid"; type: "bool"; isReadonly: true } Property { name: "selected"; type: "bool" } + Property { name: "isMask"; type: "bool" } + Property { name: "color"; type: "QColor" } } Component { - name: "Settings" + name: "FormLayoutAttached" prototype: "QObject" - exports: ["org.kde.kirigami/Settings 2.0"] + exports: ["FormData 2.3"] isCreatable: false - isSingleton: true exportMetaObjectRevisions: [0] - Property { name: "isMobile"; type: "bool"; isReadonly: true } - Property { name: "style"; type: "string"; isReadonly: true } + Property { name: "label"; type: "string" } + Property { name: "isSection"; type: "bool" } + Property { name: "buddyFor"; type: "QQuickItem"; isReadonly: true; isPointer: true } } Component { - prototype: "QQuickItem" - name: "org.kde.kirigami/AbstractApplicationHeader 2.0" - exports: ["org.kde.kirigami/AbstractApplicationHeader 2.0"] + name: "Kirigami::PlatformTheme" + prototype: "QObject" + exports: ["Theme 2.2"] + isCreatable: false exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "contentItem" - Property { name: "minimumHeight"; type: "int" } - Property { name: "preferredHeight"; type: "int" } - Property { name: "maximumHeight"; type: "int" } - Property { name: "paintedHeight"; type: "int"; isReadonly: true } - Property { name: "__appWindow"; type: "QObject"; isPointer: true } - Property { name: "background"; type: "QQuickItem"; isPointer: true } - Property { name: "contentItem"; type: "QObject"; isList: true; isReadonly: true } - } - Component { - prototype: "QQuickItem" - name: "org.kde.kirigami/AbstractApplicationItem 2.1" - exports: ["org.kde.kirigami/AbstractApplicationItem 2.1"] - exportMetaObjectRevisions: [1] - isComposite: true - defaultProperty: "__data" - Property { name: "pageStack"; type: "QQuickItem"; isPointer: true } - Property { name: "activeFocusItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "header"; type: "QQuickItem"; isPointer: true } - Property { name: "footer"; type: "QQuickItem"; isPointer: true } - Property { name: "controlsVisible"; type: "bool" } - Property { name: "globalDrawer"; type: "OverlayDrawer_QMLTYPE_8"; isPointer: true } - Property { name: "wideScreen"; type: "bool" } - Property { name: "contextDrawer"; type: "OverlayDrawer_QMLTYPE_8"; isPointer: true } - Property { name: "reachableMode"; type: "bool" } - Property { name: "reachableModeEnabled"; type: "bool" } - Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "overlay"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "__data"; type: "QObject"; isList: true; isReadonly: true } + Enum { + name: "ColorSet" + values: { + "View": 0, + "Window": 1, + "Button": 2, + "Selection": 3, + "Tooltip": 4, + "Complementary": 5 + } + } + Enum { + name: "ColorGroup" + values: { + "Disabled": 1, + "Active": 0, + "Inactive": 2, + "Normal": 0 + } + } + Property { name: "colorSet"; type: "ColorSet" } + Property { name: "colorGroup"; type: "ColorGroup" } + Property { name: "inherit"; type: "bool" } + Property { name: "textColor"; type: "QColor"; isReadonly: true } + Property { name: "disabledTextColor"; type: "QColor"; isReadonly: true } + Property { name: "highlightedTextColor"; type: "QColor"; isReadonly: true } + Property { name: "activeTextColor"; type: "QColor"; isReadonly: true } + Property { name: "linkColor"; type: "QColor"; isReadonly: true } + Property { name: "visitedLinkColor"; type: "QColor"; isReadonly: true } + Property { name: "negativeTextColor"; type: "QColor"; isReadonly: true } + Property { name: "neutralTextColor"; type: "QColor"; isReadonly: true } + Property { name: "positiveTextColor"; type: "QColor"; isReadonly: true } + Property { name: "backgroundColor"; type: "QColor"; isReadonly: true } + Property { name: "highlightColor"; type: "QColor"; isReadonly: true } + Property { name: "focusColor"; type: "QColor"; isReadonly: true } + Property { name: "hoverColor"; type: "QColor"; isReadonly: true } + Property { name: "defaultFont"; type: "QFont"; isReadonly: true } + Property { name: "palette"; type: "QPalette"; isReadonly: true } + Signal { name: "colorsChanged" } + Signal { + name: "defaultFontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "colorSetChanged" + Parameter { name: "colorSet"; type: "Kirigami::PlatformTheme::ColorSet" } + } + Signal { + name: "colorGroupChanged" + Parameter { name: "colorGroup"; type: "Kirigami::PlatformTheme::ColorGroup" } + } + Signal { + name: "paletteChanged" + Parameter { name: "pal"; type: "QPalette" } + } + Signal { + name: "inheritChanged" + Parameter { name: "inherit"; type: "bool" } + } Method { - name: "showPassiveNotification" - type: "QVariant" - Parameter { name: "message"; type: "QVariant" } - Parameter { name: "timeout"; type: "QVariant" } - Parameter { name: "actionText"; type: "QVariant" } - Parameter { name: "callBack"; type: "QVariant" } + name: "iconFromTheme" + type: "QIcon" + Parameter { name: "name"; type: "string" } + Parameter { name: "customColor"; type: "QColor" } } - Method { name: "hidePassiveNotification"; type: "QVariant" } - Method { name: "applicationWindow"; type: "QVariant" } - } - Component { - prototype: "QQuickApplicationWindow" - name: "org.kde.kirigami/AbstractApplicationWindow 2.0" - exports: ["org.kde.kirigami/AbstractApplicationWindow 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "contentData" - Property { name: "pageStack"; type: "QQuickItem"; isPointer: true } - Property { name: "controlsVisible"; type: "bool" } - Property { name: "globalDrawer"; type: "OverlayDrawer_QMLTYPE_8"; isPointer: true } - Property { name: "wideScreen"; type: "bool" } - Property { name: "contextDrawer"; type: "OverlayDrawer_QMLTYPE_8"; isPointer: true } - Property { name: "reachableMode"; type: "bool" } - Property { name: "reachableModeEnabled"; type: "bool" } Method { - name: "showPassiveNotification" - type: "QVariant" - Parameter { name: "message"; type: "QVariant" } - Parameter { name: "timeout"; type: "QVariant" } - Parameter { name: "actionText"; type: "QVariant" } - Parameter { name: "callBack"; type: "QVariant" } + name: "iconFromTheme" + type: "QIcon" + Parameter { name: "name"; type: "string" } } - Method { name: "hidePassiveNotification"; type: "QVariant" } - Method { name: "applicationWindow"; type: "QVariant" } } Component { - prototype: "QQuickAbstractButton" - name: "QtQuick.Controls/AbstractButton 2.0" - exports: ["QtQuick.Controls/AbstractButton 2.0"] + name: "MnemonicAttached" + prototype: "QObject" + exports: ["MnemonicData 2.3"] + isCreatable: false exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" + Enum { + name: "ControlType" + values: { + "ActionElement": 0, + "DialogButton": 1, + "MenuItem": 2, + "FormLabel": 3, + "SecondaryControl": 4 + } + } + Property { name: "label"; type: "string" } + Property { name: "richTextLabel"; type: "string"; isReadonly: true } + Property { name: "mnemonicLabel"; type: "string"; isReadonly: true } + Property { name: "enabled"; type: "bool" } + Property { name: "controlType"; type: "MnemonicAttached::ControlType" } + Property { name: "sequence"; type: "QKeySequence"; isReadonly: true } } Component { - prototype: "QQuickControl" - name: "org.kde.kirigami/AbstractItemViewHeader 2.1" - exports: ["org.kde.kirigami/AbstractItemViewHeader 2.1"] - exportMetaObjectRevisions: [1] - isComposite: true + name: "QQuickAbstractStyle1" defaultProperty: "data" - Property { name: "minimumHeight"; type: "int" } - Property { name: "maximumHeight"; type: "int" } - Property { name: "view"; type: "QQuickListView"; isPointer: true } - } - Component { - prototype: "QQuickItemDelegate" - name: "org.kde.kirigami/AbstractListItem 2.0" - exports: ["org.kde.kirigami/AbstractListItem 2.0"] + prototype: "QObject" + exports: ["QtQuick.Controls.Private/AbstractStyle 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "_default" - Property { name: "supportsMouseEvents"; type: "bool" } - Property { name: "sectionDelegate"; type: "bool" } - Property { name: "separatorVisible"; type: "bool" } - Property { name: "textColor"; type: "QColor" } - Property { name: "backgroundColor"; type: "QColor" } - Property { name: "activeTextColor"; type: "QColor" } - Property { name: "activeBackgroundColor"; type: "QColor" } - Property { name: "containsMouse"; type: "bool"; isReadonly: true } - Property { name: "_default"; type: "QQuickItem"; isPointer: true } + Property { name: "padding"; type: "QQuickPadding1"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } } Component { + name: "QQuickAction1" prototype: "QObject" - name: "org.kde.kirigami/Action 2.0" - exports: ["org.kde.kirigami/Action 2.0"] + exports: ["QtQuick.Controls/Action 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "children" - Property { name: "visible"; type: "bool" } - Property { name: "checkable"; type: "bool" } - Property { name: "checked"; type: "bool" } - Property { name: "enabled"; type: "bool" } - Property { name: "iconName"; type: "string" } - Property { name: "iconSource"; type: "string" } Property { name: "text"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__icon"; type: "QVariant"; isReadonly: true } Property { name: "tooltip"; type: "string" } - Property { name: "__children"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "__shortcut"; type: "QQuickShortcut"; isPointer: true } + Property { name: "enabled"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } Property { name: "shortcut"; type: "QVariant" } - Property { name: "children"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "triggered" + Parameter { name: "source"; type: "QObject"; isPointer: true } + } + Signal { name: "triggered" } Signal { name: "toggled" Parameter { name: "checked"; type: "bool" } } Signal { - name: "triggered" - Parameter { name: "source"; type: "QObject"; isPointer: true } + name: "shortcutChanged" + Parameter { name: "shortcut"; type: "QVariant" } + } + Signal { name: "iconChanged" } + Signal { + name: "tooltipChanged" + Parameter { name: "arg"; type: "string" } } Method { name: "trigger" - type: "QVariant" - Parameter { name: "source"; type: "QVariant" } + Parameter { name: "source"; type: "QObject"; isPointer: true } } + Method { name: "trigger" } } Component { - prototype: "QQuickItem" - name: "org.kde.kirigami/ApplicationHeader 2.0" - exports: ["org.kde.kirigami/ApplicationHeader 2.0"] + name: "QQuickCalendarModel1" + prototype: "QAbstractListModel" + exports: ["QtQuick.Controls.Private/CalendarModel 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "contentItem" - Property { name: "headerStyle"; type: "int" } - Property { name: "pageDelegate"; type: "QQmlComponent"; isPointer: true } - Property { name: "minimumHeight"; type: "int" } - Property { name: "preferredHeight"; type: "int" } - Property { name: "maximumHeight"; type: "int" } - Property { name: "paintedHeight"; type: "int"; isReadonly: true } - Property { name: "__appWindow"; type: "QObject"; isPointer: true } - Property { name: "background"; type: "QQuickItem"; isPointer: true } - Property { name: "contentItem"; type: "QObject"; isList: true; isReadonly: true } - } - Component { - prototype: "QQuickItem" - name: "org.kde.kirigami/ApplicationItem 2.1" - exports: ["org.kde.kirigami/ApplicationItem 2.1"] - exportMetaObjectRevisions: [1] - isComposite: true - defaultProperty: "__data" - Property { name: "pageStack"; type: "PageRow_QMLTYPE_35"; isReadonly: true; isPointer: true } - Property { name: "activeFocusItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "header"; type: "QQuickItem"; isPointer: true } - Property { name: "footer"; type: "QQuickItem"; isPointer: true } - Property { name: "controlsVisible"; type: "bool" } - Property { name: "globalDrawer"; type: "OverlayDrawer_QMLTYPE_8"; isPointer: true } - Property { name: "wideScreen"; type: "bool" } - Property { name: "contextDrawer"; type: "OverlayDrawer_QMLTYPE_8"; isPointer: true } - Property { name: "reachableMode"; type: "bool" } - Property { name: "reachableModeEnabled"; type: "bool" } - Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "overlay"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "__data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "visibleDate"; type: "QDate" } + Property { name: "locale"; type: "QLocale" } + Property { name: "count"; type: "int"; isReadonly: true } + Signal { + name: "visibleDateChanged" + Parameter { name: "visibleDate"; type: "QDate" } + } + Signal { + name: "localeChanged" + Parameter { name: "locale"; type: "QLocale" } + } + Signal { + name: "countChanged" + Parameter { name: "count"; type: "int" } + } Method { - name: "showPassiveNotification" - type: "QVariant" - Parameter { name: "message"; type: "QVariant" } - Parameter { name: "timeout"; type: "QVariant" } - Parameter { name: "actionText"; type: "QVariant" } - Parameter { name: "callBack"; type: "QVariant" } + name: "dateAt" + type: "QDateTime" + Parameter { name: "index"; type: "int" } + } + Method { + name: "indexAt" + type: "int" + Parameter { name: "visibleDate"; type: "QDate" } + } + Method { + name: "weekNumberAt" + type: "int" + Parameter { name: "row"; type: "int" } } - Method { name: "hidePassiveNotification"; type: "QVariant" } - Method { name: "applicationWindow"; type: "QVariant" } - } - Component { - prototype: "QQuickApplicationWindow" - name: "QtQuick.Controls/ApplicationWindow 2.0" - exports: ["QtQuick.Controls/ApplicationWindow 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "contentData" } Component { - prototype: "QQuickApplicationWindow" - name: "org.kde.kirigami/ApplicationWindow 2.0" - exports: ["org.kde.kirigami/ApplicationWindow 2.0"] + name: "QQuickControlSettings1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/Settings 1.0"] + isCreatable: false + isSingleton: true exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "contentData" - Property { name: "pageStack"; type: "PageRow_QMLTYPE_35"; isReadonly: true; isPointer: true } - Property { name: "controlsVisible"; type: "bool" } - Property { name: "globalDrawer"; type: "OverlayDrawer_QMLTYPE_8"; isPointer: true } - Property { name: "wideScreen"; type: "bool" } - Property { name: "contextDrawer"; type: "OverlayDrawer_QMLTYPE_8"; isPointer: true } - Property { name: "reachableMode"; type: "bool" } - Property { name: "reachableModeEnabled"; type: "bool" } + Property { name: "style"; type: "QUrl"; isReadonly: true } + Property { name: "styleName"; type: "string" } + Property { name: "stylePath"; type: "string" } + Property { name: "dpiScaleFactor"; type: "double"; isReadonly: true } + Property { name: "dragThreshold"; type: "double"; isReadonly: true } + Property { name: "hasTouchScreen"; type: "bool"; isReadonly: true } + Property { name: "isMobile"; type: "bool"; isReadonly: true } + Property { name: "hoverEnabled"; type: "bool"; isReadonly: true } Method { - name: "showPassiveNotification" - type: "QVariant" - Parameter { name: "message"; type: "QVariant" } - Parameter { name: "timeout"; type: "QVariant" } - Parameter { name: "actionText"; type: "QVariant" } - Parameter { name: "callBack"; type: "QVariant" } + name: "styleComponent" + type: "QQmlComponent*" + Parameter { name: "styleDirUrl"; type: "QUrl" } + Parameter { name: "controlStyleName"; type: "string" } + Parameter { name: "control"; type: "QObject"; isPointer: true } } - Method { name: "hidePassiveNotification"; type: "QVariant" } - Method { name: "applicationWindow"; type: "QVariant" } } Component { - prototype: "QQuickItemDelegate" - name: "org.kde.kirigami/BasicListItem 2.0" - exports: ["org.kde.kirigami/BasicListItem 2.0"] + name: "QQuickControlsPrivate1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/Controls 1.0"] + isCreatable: false exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "_basicDefault" - Property { name: "label"; type: "string" } - Property { name: "icon"; type: "QVariant" } - Property { name: "reserveSpaceForIcon"; type: "bool" } - Property { name: "_basicDefault"; type: "QQuickItem"; isList: true; isReadonly: true } - Property { name: "supportsMouseEvents"; type: "bool" } - Property { name: "sectionDelegate"; type: "bool" } - Property { name: "separatorVisible"; type: "bool" } - Property { name: "textColor"; type: "QColor" } - Property { name: "backgroundColor"; type: "QColor" } - Property { name: "activeTextColor"; type: "QColor" } - Property { name: "activeBackgroundColor"; type: "QColor" } - Property { name: "containsMouse"; type: "bool"; isReadonly: true } - Property { name: "_default"; type: "QQuickItem"; isPointer: true } + attachedType: "QQuickControlsPrivate1Attached" } Component { - prototype: "QQuickItem" - name: "QtQuick.Controls.Material.impl/BoxShadow 2.0" - exports: ["QtQuick.Controls.Material.impl/BoxShadow 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "offsetX"; type: "int" } - Property { name: "offsetY"; type: "int" } - Property { name: "blurRadius"; type: "int" } - Property { name: "spreadRadius"; type: "int" } - Property { name: "source"; type: "QQuickItem"; isPointer: true } - Property { name: "fullWidth"; type: "bool" } - Property { name: "fullHeight"; type: "bool" } - Property { name: "glowRadius"; type: "double" } - Property { name: "spread"; type: "double" } - Property { name: "color"; type: "QColor" } - Property { name: "cornerRadius"; type: "double" } - Property { name: "cached"; type: "bool" } + name: "QQuickControlsPrivate1Attached" + prototype: "QObject" + Property { name: "window"; type: "QQuickWindow"; isReadonly: true; isPointer: true } } Component { - prototype: "QQuickBusyIndicator" - name: "QtQuick.Controls/BusyIndicator 2.0" - exports: ["QtQuick.Controls/BusyIndicator 2.0"] + name: "QQuickExclusiveGroup1" + defaultProperty: "__actions" + prototype: "QObject" + exports: ["QtQuick.Controls/ExclusiveGroup 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - } - Component { - prototype: "QQuickButton" - name: "QtQuick.Controls/Button 2.0" - exports: ["QtQuick.Controls/Button 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" + Property { name: "current"; type: "QObject"; isPointer: true } + Property { name: "__actions"; type: "QQuickAction1"; isList: true; isReadonly: true } + Method { + name: "bindCheckable" + Parameter { name: "o"; type: "QObject"; isPointer: true } + } + Method { + name: "unbindCheckable" + Parameter { name: "o"; type: "QObject"; isPointer: true } + } } Component { - prototype: "QQuickButtonGroup" - name: "QtQuick.Controls/ButtonGroup 2.0" - exports: ["QtQuick.Controls/ButtonGroup 2.0"] + name: "QQuickMenu1" + defaultProperty: "items" + prototype: "QQuickMenuText1" + exports: ["QtQuick.Controls.Private/MenuPrivate 1.0"] exportMetaObjectRevisions: [0] - isComposite: true + Enum { + name: "MenuType" + values: { + "DefaultMenu": 0, + "EditMenu": 1 + } + } + Property { name: "title"; type: "string" } + Property { name: "items"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__selectedIndex"; type: "int" } + Property { name: "__popupVisible"; type: "bool"; isReadonly: true } + Property { name: "__contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__minimumWidth"; type: "int" } + Property { name: "__font"; type: "QFont" } + Property { name: "__xOffset"; type: "double" } + Property { name: "__yOffset"; type: "double" } + Property { name: "__action"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__popupGeometry"; type: "QRect"; isReadonly: true } + Property { name: "__isProxy"; type: "bool" } + Signal { name: "aboutToShow" } + Signal { name: "aboutToHide" } + Signal { name: "popupVisibleChanged" } + Signal { name: "__menuPopupDestroyed" } + Signal { name: "menuContentItemChanged" } + Signal { name: "minimumWidthChanged" } + Signal { name: "__proxyChanged" } + Method { name: "__dismissMenu" } + Method { name: "__closeAndDestroy" } + Method { name: "__dismissAndDestroy" } + Method { name: "popup" } + Method { + name: "addItem" + type: "QQuickMenuItem1*" + Parameter { type: "string" } + } + Method { + name: "insertItem" + type: "QQuickMenuItem1*" + Parameter { type: "int" } + Parameter { type: "string" } + } + Method { name: "addSeparator" } + Method { + name: "insertSeparator" + Parameter { type: "int" } + } + Method { + name: "insertItem" + Parameter { type: "int" } + Parameter { type: "QQuickMenuBase1"; isPointer: true } + } + Method { + name: "removeItem" + Parameter { type: "QQuickMenuBase1"; isPointer: true } + } + Method { name: "clear" } + Method { + name: "__popup" + Parameter { name: "targetRect"; type: "QRectF" } + Parameter { name: "atItemIndex"; type: "int" } + Parameter { name: "menuType"; type: "MenuType" } + } + Method { + name: "__popup" + Parameter { name: "targetRect"; type: "QRectF" } + Parameter { name: "atItemIndex"; type: "int" } + } + Method { + name: "__popup" + Parameter { name: "targetRect"; type: "QRectF" } + } } Component { - prototype: "QQuickCheckBox" - name: "QtQuick.Controls/CheckBox 2.0" - exports: ["QtQuick.Controls/CheckBox 2.0"] + name: "QQuickMenuBar1" + defaultProperty: "menus" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/MenuBarPrivate 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" + Property { name: "menus"; type: "QQuickMenu1"; isList: true; isReadonly: true } + Property { name: "__contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__parentWindow"; type: "QQuickWindow"; isPointer: true } + Property { name: "__isNative"; type: "bool" } + Signal { name: "nativeChanged" } + Signal { name: "contentItemChanged" } } Component { - prototype: "QQuickCheckDelegate" - name: "QtQuick.Controls/CheckDelegate 2.0" - exports: ["QtQuick.Controls/CheckDelegate 2.0"] + name: "QQuickMenuBase1" + prototype: "QObject" + exports: ["QtQuick.Controls/MenuBase 1.0"] + isCreatable: false exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" + Property { name: "visible"; type: "bool" } + Property { name: "type"; type: "QQuickMenuItemType1::MenuItemType"; isReadonly: true } + Property { name: "__parentMenu"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__isNative"; type: "bool"; isReadonly: true } + Property { name: "__visualItem"; type: "QQuickItem"; isPointer: true } } Component { - prototype: "QQuickRectangle" - name: "QtQuick.Controls.impl/CheckIndicator 2.0" - exports: ["QtQuick.Controls.impl/CheckIndicator 2.0"] + name: "QQuickMenuItem1" + prototype: "QQuickMenuText1" + exports: ["QtQuick.Controls/MenuItem 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "text"; type: "string" } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "shortcut"; type: "QVariant" } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Signal { name: "triggered" } + Signal { + name: "toggled" + Parameter { name: "checked"; type: "bool" } + } + Method { name: "trigger" } } Component { - prototype: "QQuickRectangle" - name: "QtQuick.Controls.Universal.impl/CheckIndicator 2.0" - exports: ["QtQuick.Controls.Universal.impl/CheckIndicator 2.0"] + name: "QQuickMenuItemType1" + exports: ["QtQuick.Controls/MenuItemType 1.0"] + isCreatable: false exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "control"; type: "QQuickItem"; isPointer: true } - Property { name: "partiallyChecked"; type: "bool"; isReadonly: true } + Enum { + name: "MenuItemType" + values: { + "Separator": 0, + "Item": 1, + "Menu": 2, + "ScrollIndicator": 3 + } + } } Component { - prototype: "QQuickRectangle" - name: "QtQuick.Controls.Material.impl/CheckIndicator 2.0" - exports: ["QtQuick.Controls.Material.impl/CheckIndicator 2.0"] + name: "QQuickMenuSeparator1" + prototype: "QQuickMenuBase1" + exports: ["QtQuick.Controls/MenuSeparator 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "control"; type: "QQuickItem"; isPointer: true } } Component { - prototype: "QQuickFocusScope" - name: "QtQuick.Extras.Private/CircularButton 1.0" - exports: ["QtQuick.Extras.Private/CircularButton 1.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "isDefault"; type: "bool" } - Property { name: "menu"; type: "Menu_QMLTYPE_83"; isPointer: true } - Property { name: "checkable"; type: "bool" } - Property { name: "checked"; type: "bool" } - Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } - Property { name: "action"; type: "QQuickAction1"; isPointer: true } - Property { name: "activeFocusOnPress"; type: "bool" } - Property { name: "text"; type: "string" } - Property { name: "tooltip"; type: "string" } + name: "QQuickMenuText1" + prototype: "QQuickMenuBase1" + Property { name: "enabled"; type: "bool" } Property { name: "iconSource"; type: "QUrl" } Property { name: "iconName"; type: "string" } - Property { name: "__position"; type: "string" } - Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } - Property { name: "__action"; type: "QQuickAction1"; isPointer: true } - Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } - Property { name: "__behavior"; type: "QVariant" } - Property { name: "__effectivePressed"; type: "bool" } - Property { name: "pressed"; type: "bool"; isReadonly: true } - Property { name: "hovered"; type: "bool"; isReadonly: true } - Signal { name: "clicked" } - Method { name: "accessiblePressAction"; type: "QVariant" } - Property { name: "style"; type: "QQmlComponent"; isPointer: true } - Property { name: "__style"; type: "QObject"; isPointer: true } - Property { name: "__panel"; type: "QQuickItem"; isPointer: true } - Property { name: "styleHints"; type: "QVariant" } - Property { name: "__styleData"; type: "QObject"; isPointer: true } + Property { name: "__icon"; type: "QVariant"; isReadonly: true } + Signal { name: "__textChanged" } } Component { + name: "QQuickPadding1" prototype: "QObject" - name: "QtQuick.Extras.Private/CircularButtonStyleHelper 1.0" - exports: ["QtQuick.Extras.Private/CircularButtonStyleHelper 1.0"] + exports: ["QtQuick.Controls.Private/Padding 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - Property { name: "control"; type: "QQuickItem"; isPointer: true } - Property { name: "buttonColorUpTop"; type: "QColor" } - Property { name: "buttonColorUpBottom"; type: "QColor" } - Property { name: "buttonColorDownTop"; type: "QColor" } - Property { name: "buttonColorDownBottom"; type: "QColor" } - Property { name: "outerArcColorTop"; type: "QColor" } - Property { name: "outerArcColorBottom"; type: "QColor" } - Property { name: "innerArcColorTop"; type: "QColor" } - Property { name: "innerArcColorBottom"; type: "QColor" } - Property { name: "innerArcColorBottomStop"; type: "double" } - Property { name: "shineColor"; type: "QColor" } - Property { name: "smallestAxis"; type: "double" } - Property { name: "outerArcLineWidth"; type: "double" } - Property { name: "innerArcLineWidth"; type: "double" } - Property { name: "shineArcLineWidth"; type: "double" } - Property { name: "implicitWidth"; type: "double" } - Property { name: "implicitHeight"; type: "double" } - Property { name: "textColorUp"; type: "QColor" } - Property { name: "textColorDown"; type: "QColor" } - Property { name: "textRaisedColorUp"; type: "QColor" } - Property { name: "textRaisedColorDown"; type: "QColor" } - Property { name: "radius"; type: "double" } - Property { name: "halfRadius"; type: "double" } - Property { name: "outerArcRadius"; type: "double" } - Property { name: "innerArcRadius"; type: "double" } - Property { name: "shineArcRadius"; type: "double" } - Property { name: "zeroAngle"; type: "double" } - Property { name: "buttonColorTop"; type: "QColor" } - Property { name: "buttonColorBottom"; type: "QColor" } + Property { name: "left"; type: "int" } + Property { name: "top"; type: "int" } + Property { name: "right"; type: "int" } + Property { name: "bottom"; type: "int" } Method { - name: "toPixels" - type: "QVariant" - Parameter { name: "percentageOfSmallestAxis"; type: "QVariant" } + name: "setLeft" + Parameter { name: "arg"; type: "int" } } Method { - name: "paintBackground" - type: "QVariant" - Parameter { name: "ctx"; type: "QVariant" } + name: "setTop" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setRight" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setBottom" + Parameter { name: "arg"; type: "int" } } } Component { - prototype: "QQuickFocusScope" - name: "QtQuick.Extras/CircularGauge 1.0" - exports: ["QtQuick.Extras/CircularGauge 1.0"] + name: "QQuickPopupWindow1" + defaultProperty: "popupContentItem" + prototype: "QQuickWindow" + exports: ["QtQuick.Controls.Private/PopupWindow 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "tickmarksVisible"; type: "bool" } - Property { name: "minimumValue"; type: "double" } - Property { name: "maximumValue"; type: "double" } - Property { name: "value"; type: "double" } - Property { name: "stepSize"; type: "double" } - Property { name: "style"; type: "QQmlComponent"; isPointer: true } - Property { name: "__style"; type: "QObject"; isPointer: true } - Property { name: "__panel"; type: "QQuickItem"; isPointer: true } - Property { name: "styleHints"; type: "QVariant" } - Property { name: "__styleData"; type: "QObject"; isPointer: true } + Property { name: "popupContentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "parentItem"; type: "QQuickItem"; isPointer: true } + Signal { name: "popupDismissed" } + Signal { name: "geometryChanged" } + Method { name: "show" } + Method { name: "dismissPopup" } } Component { - prototype: "QQuickFocusScope" - name: "QtQuick.Extras.Private/CircularTickmarkLabel 1.0" - exports: ["QtQuick.Extras.Private/CircularTickmarkLabel 1.0"] + name: "QQuickRangeModel1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/RangeModel 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "minimumValueAngle"; type: "double" } - Property { name: "maximumValueAngle"; type: "double" } - Property { name: "angleRange"; type: "double"; isReadonly: true } - Property { name: "tickmarkStepSize"; type: "double" } - Property { name: "tickmarkInset"; type: "double" } - Property { name: "tickmarkCount"; type: "int"; isReadonly: true } - Property { name: "minorTickmarkCount"; type: "int" } - Property { name: "minorTickmarkInset"; type: "double" } - Property { name: "labelInset"; type: "double" } - Property { name: "labelStepSize"; type: "double" } - Property { name: "labelCount"; type: "int"; isReadonly: true } - Property { name: "__tickmarkCount"; type: "double"; isReadonly: true } - Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "value"; type: "double" } Property { name: "minimumValue"; type: "double" } Property { name: "maximumValue"; type: "double" } Property { name: "stepSize"; type: "double" } + Property { name: "position"; type: "double" } + Property { name: "positionAtMinimum"; type: "double" } + Property { name: "positionAtMaximum"; type: "double" } + Property { name: "inverted"; type: "bool" } + Signal { + name: "valueChanged" + Parameter { name: "value"; type: "double" } + } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "double" } + } + Signal { + name: "stepSizeChanged" + Parameter { name: "stepSize"; type: "double" } + } + Signal { + name: "invertedChanged" + Parameter { name: "inverted"; type: "bool" } + } + Signal { + name: "minimumChanged" + Parameter { name: "min"; type: "double" } + } + Signal { + name: "maximumChanged" + Parameter { name: "max"; type: "double" } + } + Signal { + name: "positionAtMinimumChanged" + Parameter { name: "min"; type: "double" } + } + Signal { + name: "positionAtMaximumChanged" + Parameter { name: "max"; type: "double" } + } + Method { name: "toMinimum" } + Method { name: "toMaximum" } Method { - name: "valueToAngle" - type: "QVariant" - Parameter { name: "value"; type: "QVariant" } + name: "setValue" + Parameter { name: "value"; type: "double" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "double" } + } + Method { name: "increaseSingleStep" } + Method { name: "decreaseSingleStep" } + Method { + name: "valueForPosition" + type: "double" + Parameter { name: "position"; type: "double" } + } + Method { + name: "positionForValue" + type: "double" + Parameter { name: "value"; type: "double" } } - Property { name: "style"; type: "QQmlComponent"; isPointer: true } - Property { name: "__style"; type: "QObject"; isPointer: true } - Property { name: "__panel"; type: "QQuickItem"; isPointer: true } - Property { name: "styleHints"; type: "QVariant" } - Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { - prototype: "QQuickComboBox" - name: "QtQuick.Controls/ComboBox 2.0" - exports: ["QtQuick.Controls/ComboBox 2.0"] + name: "QQuickRangedDate1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/RangedDate 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" + Property { name: "date"; type: "QDateTime" } + Property { name: "minimumDate"; type: "QDateTime" } + Property { name: "maximumDate"; type: "QDateTime" } } Component { - prototype: "QQuickContainer" - name: "QtQuick.Controls/Container 2.0" - exports: ["QtQuick.Controls/Container 2.0"] + name: "QQuickScenePosListener1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/ScenePosListener 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "contentData" + Property { name: "item"; type: "QQuickItem"; isPointer: true } + Property { name: "scenePos"; type: "QPointF"; isReadonly: true } + Property { name: "enabled"; type: "bool" } } Component { - prototype: "QQuickDrawer" - name: "org.kde.kirigami/ContextDrawer 2.0" - exports: ["org.kde.kirigami/ContextDrawer 2.0"] + name: "QQuickSelectionMode1" + exports: ["QtQuick.Controls/SelectionMode 1.1"] + isCreatable: false exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "contentData" - Property { name: "title"; type: "string" } - Property { name: "actions"; type: "QVariant" } - Property { name: "drawerOpen"; type: "bool" } - Property { name: "enabled"; type: "bool" } - Property { name: "peeking"; type: "bool" } - Property { name: "animating"; type: "bool"; isReadonly: true } - Property { name: "handleVisible"; type: "bool" } - Property { name: "handle"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "__internal"; type: "QObject"; isPointer: true } + Enum { + name: "SelectionMode" + values: { + "NoSelection": 0, + "SingleSelection": 1, + "ExtendedSelection": 2, + "MultiSelection": 3, + "ContiguousSelection": 4 + } + } } Component { - prototype: "QQuickControl" - name: "QtQuick.Controls/Control 2.0" - exports: ["QtQuick.Controls/Control 2.0"] + name: "QQuickSpinBoxValidator1" + prototype: "QValidator" + exports: ["QtQuick.Controls.Private/SpinBoxValidator 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" + Property { name: "text"; type: "string"; isReadonly: true } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "decimals"; type: "int" } + Property { name: "stepSize"; type: "double" } + Property { name: "prefix"; type: "string" } + Property { name: "suffix"; type: "string" } + Method { name: "increment" } + Method { name: "decrement" } } Component { - prototype: "QQuickRectangle" - name: "QtQuick.Controls.Material.impl/CursorDelegate 2.0" - exports: ["QtQuick.Controls.Material.impl/CursorDelegate 2.0"] + name: "QQuickStack1" + prototype: "QObject" + exports: ["QtQuick.Controls/Stack 1.0"] + isCreatable: false exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" + Enum { + name: "Status" + values: { + "Inactive": 0, + "Deactivating": 1, + "Activating": 2, + "Active": 3 + } + } + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "__index"; type: "int" } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "__status"; type: "Status" } + Property { name: "view"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__view"; type: "QQuickItem"; isPointer: true } } Component { - prototype: "QQuickFocusScope" - name: "QtQuick.Extras/DelayButton 1.0" - exports: ["QtQuick.Extras/DelayButton 1.0"] - exportMetaObjectRevisions: [0] - isComposite: true + name: "QQuickStyleItem1" defaultProperty: "data" - Property { name: "delay"; type: "int" } - Property { name: "__progress"; type: "double" } - Property { name: "progress"; type: "double"; isReadonly: true } - Signal { name: "activated" } - Property { name: "isDefault"; type: "bool" } - Property { name: "menu"; type: "Menu_QMLTYPE_83"; isPointer: true } - Property { name: "checkable"; type: "bool" } - Property { name: "checked"; type: "bool" } - Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } - Property { name: "action"; type: "QQuickAction1"; isPointer: true } - Property { name: "activeFocusOnPress"; type: "bool" } + prototype: "QQuickItem" + exports: ["QtQuick.Controls.Private/StyleItem 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "border"; type: "QQuickPadding1"; isReadonly: true; isPointer: true } + Property { name: "sunken"; type: "bool" } + Property { name: "raised"; type: "bool" } + Property { name: "active"; type: "bool" } + Property { name: "selected"; type: "bool" } + Property { name: "hasFocus"; type: "bool" } + Property { name: "on"; type: "bool" } + Property { name: "hover"; type: "bool" } + Property { name: "horizontal"; type: "bool" } + Property { name: "isTransient"; type: "bool" } + Property { name: "elementType"; type: "string" } Property { name: "text"; type: "string" } - Property { name: "tooltip"; type: "string" } - Property { name: "iconSource"; type: "QUrl" } - Property { name: "iconName"; type: "string" } - Property { name: "__position"; type: "string" } - Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } - Property { name: "__action"; type: "QQuickAction1"; isPointer: true } - Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } - Property { name: "__behavior"; type: "QVariant" } - Property { name: "__effectivePressed"; type: "bool" } - Property { name: "pressed"; type: "bool"; isReadonly: true } - Property { name: "hovered"; type: "bool"; isReadonly: true } - Signal { name: "clicked" } - Method { name: "accessiblePressAction"; type: "QVariant" } - Property { name: "style"; type: "QQmlComponent"; isPointer: true } - Property { name: "__style"; type: "QObject"; isPointer: true } - Property { name: "__panel"; type: "QQuickItem"; isPointer: true } - Property { name: "styleHints"; type: "QVariant" } - Property { name: "__styleData"; type: "QObject"; isPointer: true } + Property { name: "activeControl"; type: "string" } + Property { name: "style"; type: "string"; isReadonly: true } + Property { name: "hints"; type: "QVariantMap" } + Property { name: "properties"; type: "QVariantMap" } + Property { name: "font"; type: "QFont"; isReadonly: true } + Property { name: "minimum"; type: "int" } + Property { name: "maximum"; type: "int" } + Property { name: "value"; type: "int" } + Property { name: "step"; type: "int" } + Property { name: "paintMargins"; type: "int" } + Property { name: "contentWidth"; type: "int" } + Property { name: "contentHeight"; type: "int" } + Property { name: "textureWidth"; type: "int" } + Property { name: "textureHeight"; type: "int" } + Signal { name: "transientChanged" } + Signal { name: "infoChanged" } + Signal { name: "hintChanged" } + Signal { + name: "contentWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "contentHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "textureWidthChanged" + Parameter { name: "w"; type: "int" } + } + Signal { + name: "textureHeightChanged" + Parameter { name: "h"; type: "int" } + } + Method { + name: "pixelMetric" + type: "int" + Parameter { type: "string" } + } + Method { + name: "styleHint" + type: "QVariant" + Parameter { type: "string" } + } + Method { name: "updateSizeHint" } + Method { name: "updateRect" } + Method { name: "updateBaselineOffset" } + Method { name: "updateItem" } + Method { + name: "hitTest" + type: "string" + Parameter { name: "x"; type: "int" } + Parameter { name: "y"; type: "int" } + } + Method { + name: "subControlRect" + type: "QRectF" + Parameter { name: "subcontrolString"; type: "string" } + } + Method { + name: "elidedText" + type: "string" + Parameter { name: "text"; type: "string" } + Parameter { name: "elideMode"; type: "int" } + Parameter { name: "width"; type: "int" } + } + Method { + name: "hasThemeIcon" + type: "bool" + Parameter { type: "string" } + } + Method { + name: "textWidth" + type: "double" + Parameter { type: "string" } + } + Method { + name: "textHeight" + type: "double" + Parameter { type: "string" } + } } Component { - prototype: "QQuickDelayButton" - name: "QtQuick.Controls/DelayButton 2.2" - exports: ["QtQuick.Controls/DelayButton 2.2"] - exportMetaObjectRevisions: [2] - isComposite: true - defaultProperty: "data" + name: "QQuickTooltip1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/Tooltip 1.0"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] + Method { + name: "showText" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + Parameter { name: "pos"; type: "QPointF" } + Parameter { name: "text"; type: "string" } + } + Method { name: "hideText" } } Component { - prototype: "QQuickFocusScope" - name: "QtQuick.Extras/Dial 1.0" - exports: ["QtQuick.Extras/Dial 1.0"] + name: "QQuickTreeModelAdaptor1" + prototype: "QAbstractListModel" + exports: ["QtQuick.Controls.Private/TreeModelAdaptor 1.0"] exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - Property { name: "__wrap"; type: "bool" } - Property { name: "activeFocusOnPress"; type: "bool" } - Property { name: "tickmarksVisible"; type: "bool" } - Property { name: "value"; type: "double" } - Property { name: "minimumValue"; type: "double" } - Property { name: "maximumValue"; type: "double" } - Property { name: "hovered"; type: "bool"; isReadonly: true } - Property { name: "stepSize"; type: "double" } - Property { name: "pressed"; type: "bool"; isReadonly: true } - Property { name: "style"; type: "QQmlComponent"; isPointer: true } - Property { name: "__style"; type: "QObject"; isPointer: true } - Property { name: "__panel"; type: "QQuickItem"; isPointer: true } - Property { name: "styleHints"; type: "QVariant" } - Property { name: "__styleData"; type: "QObject"; isPointer: true } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "rootIndex"; type: "QModelIndex" } + Signal { + name: "modelChanged" + Parameter { name: "model"; type: "QAbstractItemModel"; isPointer: true } + } + Signal { + name: "expanded" + Parameter { name: "index"; type: "QModelIndex" } + } + Signal { + name: "collapsed" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "expand" + Parameter { type: "QModelIndex" } + } + Method { + name: "collapse" + Parameter { type: "QModelIndex" } + } + Method { + name: "setModel" + Parameter { name: "model"; type: "QAbstractItemModel"; isPointer: true } + } + Method { + name: "mapRowToModelIndex" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + } + Method { + name: "selectionForRowRange" + type: "QItemSelection" + Parameter { name: "fromIndex"; type: "QModelIndex" } + Parameter { name: "toIndex"; type: "QModelIndex" } + } + Method { + name: "isExpanded" + type: "bool" + Parameter { type: "QModelIndex" } + } } Component { - prototype: "QQuickFocusScope" - name: "QtQuick.Extras/Dial 1.1" - exports: ["QtQuick.Extras/Dial 1.1"] - exportMetaObjectRevisions: [1] - isComposite: true + name: "QQuickWheelArea1" defaultProperty: "data" - Property { name: "__wrap"; type: "bool" } - Property { name: "activeFocusOnPress"; type: "bool" } - Property { name: "tickmarksVisible"; type: "bool" } - Property { name: "value"; type: "double" } - Property { name: "minimumValue"; type: "double" } - Property { name: "maximumValue"; type: "double" } - Property { name: "hovered"; type: "bool"; isReadonly: true } - Property { name: "stepSize"; type: "double" } - Property { name: "pressed"; type: "bool"; isReadonly: true } - Property { name: "style"; type: "QQmlComponent"; isPointer: true } - Property { name: "__style"; type: "QObject"; isPointer: true } - Property { name: "__panel"; type: "QQuickItem"; isPointer: true } - Property { name: "styleHints"; type: "QVariant" } - Property { name: "__styleData"; type: "QObject"; isPointer: true } + prototype: "QQuickItem" + exports: ["QtQuick.Controls.Private/WheelArea 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "verticalDelta"; type: "double" } + Property { name: "horizontalDelta"; type: "double" } + Property { name: "horizontalMinimumValue"; type: "double" } + Property { name: "horizontalMaximumValue"; type: "double" } + Property { name: "verticalMinimumValue"; type: "double" } + Property { name: "verticalMaximumValue"; type: "double" } + Property { name: "horizontalValue"; type: "double" } + Property { name: "verticalValue"; type: "double" } + Property { name: "scrollSpeed"; type: "double" } + Property { name: "active"; type: "bool" } + Property { name: "inverted"; type: "bool"; isReadonly: true } + Signal { name: "verticalWheelMoved" } + Signal { name: "horizontalWheelMoved" } } Component { - prototype: "QQuickDial" - name: "QtQuick.Controls/Dial 2.0" - exports: ["QtQuick.Controls/Dial 2.0"] + name: "Settings" + prototype: "QObject" + exports: ["Settings 2.0"] + isCreatable: false + isSingleton: true exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" + Property { name: "isMobile"; type: "bool"; isReadonly: true } + Property { name: "style"; type: "string"; isReadonly: true } + Property { name: "mouseWheelScrollLines"; type: "int"; isReadonly: true } } Component { - prototype: "QQuickDialog" - name: "QtQuick.Controls/Dialog 2.1" - exports: ["QtQuick.Controls/Dialog 2.1"] - exportMetaObjectRevisions: [1] + prototype: "QQuickItem" + name: "AbstractApplicationHeader 2.0" + exports: ["AbstractApplicationHeader 2.0"] + exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "contentData" + defaultProperty: "contentItem" + Property { name: "minimumHeight"; type: "int" } + Property { name: "preferredHeight"; type: "int" } + Property { name: "maximumHeight"; type: "int" } + Property { name: "paintedHeight"; type: "int"; isReadonly: true } + Property { name: "__appWindow"; type: "QObject"; isPointer: true } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QObject"; isList: true; isReadonly: true } } Component { - prototype: "QQuickDialogButtonBox" - name: "QtQuick.Controls/DialogButtonBox 2.1" - exports: ["QtQuick.Controls/DialogButtonBox 2.1"] + prototype: "QQuickItem" + name: "AbstractApplicationItem 2.1" + exports: ["AbstractApplicationItem 2.1"] exportMetaObjectRevisions: [1] isComposite: true - defaultProperty: "contentData" + defaultProperty: "__data" + Property { name: "pageStack"; type: "QQuickItem"; isPointer: true } + Property { name: "activeFocusItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "controlsVisible"; type: "bool" } + Property { name: "globalDrawer"; type: "OverlayDrawer_QMLTYPE_13"; isPointer: true } + Property { name: "wideScreen"; type: "bool" } + Property { name: "contextDrawer"; type: "OverlayDrawer_QMLTYPE_13"; isPointer: true } + Property { name: "reachableMode"; type: "bool" } + Property { name: "reachableModeEnabled"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "overlay"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__data"; type: "QObject"; isList: true; isReadonly: true } + Method { + name: "showPassiveNotification" + type: "QVariant" + Parameter { name: "message"; type: "QVariant" } + Parameter { name: "timeout"; type: "QVariant" } + Parameter { name: "actionText"; type: "QVariant" } + Parameter { name: "callBack"; type: "QVariant" } + } + Method { name: "hidePassiveNotification"; type: "QVariant" } + Method { name: "applicationWindow"; type: "QVariant" } } Component { - prototype: "QQuickDrawer" - name: "QtQuick.Controls/Drawer 2.0" - exports: ["QtQuick.Controls/Drawer 2.0"] + prototype: "QQuickApplicationWindow" + name: "AbstractApplicationWindow 2.0" + exports: ["AbstractApplicationWindow 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "contentData" + Property { name: "pageStack"; type: "QQuickItem"; isPointer: true } + Property { name: "controlsVisible"; type: "bool" } + Property { name: "globalDrawer"; type: "OverlayDrawer_QMLTYPE_13"; isPointer: true } + Property { name: "wideScreen"; type: "bool" } + Property { name: "contextDrawer"; type: "OverlayDrawer_QMLTYPE_13"; isPointer: true } + Property { name: "reachableMode"; type: "bool" } + Property { name: "reachableModeEnabled"; type: "bool" } + Method { + name: "showPassiveNotification" + type: "QVariant" + Parameter { name: "message"; type: "QVariant" } + Parameter { name: "timeout"; type: "QVariant" } + Parameter { name: "actionText"; type: "QVariant" } + Parameter { name: "callBack"; type: "QVariant" } + } + Method { name: "hidePassiveNotification"; type: "QVariant" } + Method { name: "applicationWindow"; type: "QVariant" } } Component { - prototype: "QQuickItem" - name: "QtQuick.Controls.Material.impl/ElevationEffect 2.0" - exports: ["QtQuick.Controls.Material.impl/ElevationEffect 2.0"] + prototype: "QQuickAbstractButton" + name: "QtQuick.Controls/AbstractButton 2.0" + exports: ["QtQuick.Controls/AbstractButton 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "source"; type: "QVariant" } - Property { name: "elevation"; type: "int" } - Property { name: "fullWidth"; type: "bool" } - Property { name: "fullHeight"; type: "bool" } - Property { name: "sourceItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "_shadows"; type: "QVariant"; isReadonly: true } - Property { name: "_shadow"; type: "QVariant"; isReadonly: true } } Component { - prototype: "QQuickFrame" - name: "QtQuick.Controls/Frame 2.0" - exports: ["QtQuick.Controls/Frame 2.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickItemDelegate" + name: "AbstractCard 2.4" + exports: ["AbstractCard 2.4"] + exportMetaObjectRevisions: [4] isComposite: true - defaultProperty: "contentData" + defaultProperty: "data" + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "headerOrientation"; type: "int" } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "showClickFeedback"; type: "bool" } } Component { - prototype: "QQuickFocusScope" - name: "QtQuick.Extras/Gauge 1.0" - exports: ["QtQuick.Extras/Gauge 1.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickControl" + name: "AbstractItemViewHeader 2.1" + exports: ["AbstractItemViewHeader 2.1"] + exportMetaObjectRevisions: [1] isComposite: true defaultProperty: "data" - Property { name: "orientation"; type: "int" } - Property { name: "tickmarkAlignment"; type: "int" } - Property { name: "__tickmarkAlignment"; type: "int" } - Property { name: "__tickmarksInside"; type: "bool" } - Property { name: "tickmarkStepSize"; type: "double" } - Property { name: "minorTickmarkCount"; type: "int" } - Property { name: "formatValue"; type: "QVariant" } - Property { name: "minimumValue"; type: "double" } - Property { name: "value"; type: "double" } - Property { name: "maximumValue"; type: "double" } - Property { name: "font"; type: "QFont" } - Property { name: "__hiddenText"; type: "QQuickText"; isReadonly: true; isPointer: true } - Property { name: "style"; type: "QQmlComponent"; isPointer: true } - Property { name: "__style"; type: "QObject"; isPointer: true } - Property { name: "__panel"; type: "QQuickItem"; isPointer: true } - Property { name: "styleHints"; type: "QVariant" } - Property { name: "__styleData"; type: "QObject"; isPointer: true } - } - Component { - prototype: "QQuickDrawer" - name: "org.kde.kirigami/GlobalDrawer 2.0" - exports: ["org.kde.kirigami/GlobalDrawer 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "content" - Property { name: "actions"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "resetMenuOnTriggered"; type: "bool" } - Property { name: "currentSubMenu"; type: "Action_QMLTYPE_26"; isReadonly: true; isPointer: true } - Property { name: "title"; type: "string" } - Property { name: "titleIcon"; type: "QVariant" } - Property { name: "bannerImageSource"; type: "QUrl" } - Property { name: "content"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "topContent"; type: "QObject"; isList: true; isReadonly: true } - Signal { name: "bannerClicked" } - Method { name: "resetMenu"; type: "QVariant" } - Property { name: "drawerOpen"; type: "bool" } - Property { name: "enabled"; type: "bool" } - Property { name: "peeking"; type: "bool" } - Property { name: "animating"; type: "bool"; isReadonly: true } - Property { name: "handleVisible"; type: "bool" } - Property { name: "handle"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "__internal"; type: "QObject"; isPointer: true } + Property { name: "minimumHeight"; type: "int" } + Property { name: "maximumHeight"; type: "int" } + Property { name: "view"; type: "QQuickListView"; isPointer: true } } Component { - prototype: "QQuickGroupBox" - name: "QtQuick.Controls/GroupBox 2.0" - exports: ["QtQuick.Controls/GroupBox 2.0"] + prototype: "QQuickItemDelegate" + name: "AbstractListItem 2.0" + exports: ["AbstractListItem 2.0"] exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "contentData" + defaultProperty: "_default" + Property { name: "supportsMouseEvents"; type: "bool" } + Property { name: "sectionDelegate"; type: "bool" } + Property { name: "separatorVisible"; type: "bool" } + Property { name: "textColor"; type: "QColor" } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "activeTextColor"; type: "QColor" } + Property { name: "activeBackgroundColor"; type: "QColor" } + Property { name: "containsMouse"; type: "bool"; isReadonly: true } + Property { name: "_default"; type: "QQuickItem"; isPointer: true } } Component { - prototype: "QQuickLabel" - name: "org.kde.kirigami/Heading 2.0" - exports: ["org.kde.kirigami/Heading 2.0"] + prototype: "QObject" + name: "Action 2.0" + exports: ["Action 2.0"] exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "data" - Property { name: "level"; type: "int" } - Property { name: "step"; type: "int" } + defaultProperty: "children" + Property { name: "visible"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "enabled"; type: "bool" } + Property { name: "icon"; type: "ActionIconGroup_QMLTYPE_36"; isPointer: true } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "__children"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__shortcut"; type: "QQuickShortcut"; isPointer: true } + Property { name: "iconName"; type: "string" } + Property { name: "iconSource"; type: "string" } + Property { name: "shortcut"; type: "QVariant" } + Property { name: "children"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "toggled" + Parameter { name: "checked"; type: "bool" } + } + Signal { + name: "triggered" + Parameter { name: "source"; type: "QObject"; isPointer: true } + } Method { - name: "headerPointSize" + name: "trigger" type: "QVariant" - Parameter { name: "l"; type: "QVariant" } + Parameter { name: "source"; type: "QVariant" } } } Component { - prototype: "QQuickItemDelegate" - name: "QtQuick.Controls/ItemDelegate 2.0" - exports: ["QtQuick.Controls/ItemDelegate 2.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickAction" + name: "QtQuick.Controls/Action 2.3" + exports: ["QtQuick.Controls/Action 2.3"] + exportMetaObjectRevisions: [3] isComposite: true - defaultProperty: "data" } Component { - prototype: "QQuickControl" - name: "org.kde.kirigami/ItemViewHeader 2.1" - exports: ["org.kde.kirigami/ItemViewHeader 2.1"] - exportMetaObjectRevisions: [1] + prototype: "QQuickActionGroup" + name: "QtQuick.Controls/ActionGroup 2.3" + exports: ["QtQuick.Controls/ActionGroup 2.3"] + exportMetaObjectRevisions: [3] isComposite: true - defaultProperty: "data" - Property { name: "title"; type: "string" } - Property { name: "color"; type: "QColor" } - Property { name: "backgroundImage"; type: "QQuickImage"; isReadonly: true; isPointer: true } + defaultProperty: "actions" + } + Component { + prototype: "QQuickItem" + name: "ApplicationHeader 2.0" + exports: ["ApplicationHeader 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentItem" + Property { name: "headerStyle"; type: "int" } + Property { name: "backButtonEnabled"; type: "bool" } + Property { name: "pageDelegate"; type: "QQmlComponent"; isPointer: true } Property { name: "minimumHeight"; type: "int" } + Property { name: "preferredHeight"; type: "int" } Property { name: "maximumHeight"; type: "int" } - Property { name: "view"; type: "QQuickListView"; isPointer: true } + Property { name: "paintedHeight"; type: "int"; isReadonly: true } + Property { name: "__appWindow"; type: "QObject"; isPointer: true } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QObject"; isList: true; isReadonly: true } } Component { - prototype: "QQuickLabel" - name: "org.kde.kirigami/Label 2.0" - exports: ["org.kde.kirigami/Label 2.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickItem" + name: "ApplicationItem 2.1" + exports: ["ApplicationItem 2.1"] + exportMetaObjectRevisions: [1] isComposite: true - defaultProperty: "data" + defaultProperty: "__data" + Property { name: "pageStack"; type: "PageRow_QMLTYPE_49"; isReadonly: true; isPointer: true } + Property { name: "activeFocusItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "controlsVisible"; type: "bool" } + Property { name: "globalDrawer"; type: "OverlayDrawer_QMLTYPE_13"; isPointer: true } + Property { name: "wideScreen"; type: "bool" } + Property { name: "contextDrawer"; type: "OverlayDrawer_QMLTYPE_13"; isPointer: true } + Property { name: "reachableMode"; type: "bool" } + Property { name: "reachableModeEnabled"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "overlay"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__data"; type: "QObject"; isList: true; isReadonly: true } + Method { + name: "showPassiveNotification" + type: "QVariant" + Parameter { name: "message"; type: "QVariant" } + Parameter { name: "timeout"; type: "QVariant" } + Parameter { name: "actionText"; type: "QVariant" } + Parameter { name: "callBack"; type: "QVariant" } + } + Method { name: "hidePassiveNotification"; type: "QVariant" } + Method { name: "applicationWindow"; type: "QVariant" } } Component { - prototype: "QQuickLabel" - name: "QtQuick.Controls/Label 2.0" - exports: ["QtQuick.Controls/Label 2.0"] + prototype: "QQuickApplicationWindow" + name: "ApplicationWindow 2.0" + exports: ["ApplicationWindow 2.0"] exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "data" + defaultProperty: "contentData" + Property { name: "pageStack"; type: "PageRow_QMLTYPE_49"; isReadonly: true; isPointer: true } + Property { name: "controlsVisible"; type: "bool" } + Property { name: "globalDrawer"; type: "OverlayDrawer_QMLTYPE_13"; isPointer: true } + Property { name: "wideScreen"; type: "bool" } + Property { name: "contextDrawer"; type: "OverlayDrawer_QMLTYPE_13"; isPointer: true } + Property { name: "reachableMode"; type: "bool" } + Property { name: "reachableModeEnabled"; type: "bool" } + Method { + name: "showPassiveNotification" + type: "QVariant" + Parameter { name: "message"; type: "QVariant" } + Parameter { name: "timeout"; type: "QVariant" } + Parameter { name: "actionText"; type: "QVariant" } + Parameter { name: "callBack"; type: "QVariant" } + } + Method { name: "hidePassiveNotification"; type: "QVariant" } + Method { name: "applicationWindow"; type: "QVariant" } } Component { - prototype: "QQuickMenu" - name: "QtQuick.Controls/Menu 2.0" - exports: ["QtQuick.Controls/Menu 2.0"] + prototype: "QQuickApplicationWindow" + name: "QtQuick.Controls/ApplicationWindow 2.0" + exports: ["QtQuick.Controls/ApplicationWindow 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "contentData" } Component { - prototype: "QQuickMenuItem" - name: "QtQuick.Controls/MenuItem 2.0" - exports: ["QtQuick.Controls/MenuItem 2.0"] + prototype: "QQuickWindowQmlImpl" + name: "QtQuick.Controls/ApplicationWindow 1.0" + exports: ["QtQuick.Controls/ApplicationWindow 1.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" + Property { name: "menuBar"; type: "MenuBar_QMLTYPE_63"; isPointer: true } + Property { name: "toolBar"; type: "QQuickItem"; isPointer: true } + Property { name: "statusBar"; type: "QQuickItem"; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__topBottomMargins"; type: "double" } + Property { name: "__qwindowsize_max"; type: "double"; isReadonly: true } + Property { name: "__width"; type: "double" } + Property { name: "__height"; type: "double" } + Property { + name: "contentItem" + type: "ContentItem_QMLTYPE_61" + isReadonly: true + isPointer: true + } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__panel"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } } Component { - prototype: "QQuickMenuSeparator" - name: "QtQuick.Controls/MenuSeparator 2.1" - exports: ["QtQuick.Controls/MenuSeparator 2.1"] - exportMetaObjectRevisions: [1] + prototype: "QQuickItemDelegate" + name: "BasicListItem 2.0" + exports: ["BasicListItem 2.0"] + exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "data" + defaultProperty: "_basicDefault" + Property { name: "icon"; type: "QVariant" } + Property { name: "label"; type: "string" } + Property { name: "reserveSpaceForIcon"; type: "bool" } + Property { name: "_basicDefault"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "supportsMouseEvents"; type: "bool" } + Property { name: "sectionDelegate"; type: "bool" } + Property { name: "separatorVisible"; type: "bool" } + Property { name: "textColor"; type: "QColor" } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "activeTextColor"; type: "QColor" } + Property { name: "activeBackgroundColor"; type: "QColor" } + Property { name: "containsMouse"; type: "bool"; isReadonly: true } + Property { name: "_default"; type: "QQuickItem"; isPointer: true } } Component { - prototype: "QQuickDrawer" - name: "org.kde.kirigami/OverlayDrawer 2.0" - exports: ["org.kde.kirigami/OverlayDrawer 2.0"] + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/BoxShadow 2.0" + exports: ["QtQuick.Controls.Material.impl/BoxShadow 2.0"] exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "contentData" - Property { name: "drawerOpen"; type: "bool" } - Property { name: "enabled"; type: "bool" } - Property { name: "peeking"; type: "bool" } - Property { name: "animating"; type: "bool"; isReadonly: true } - Property { name: "handleVisible"; type: "bool" } - Property { name: "handle"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "__internal"; type: "QObject"; isPointer: true } + defaultProperty: "data" + Property { name: "offsetX"; type: "int" } + Property { name: "offsetY"; type: "int" } + Property { name: "blurRadius"; type: "int" } + Property { name: "spreadRadius"; type: "int" } + Property { name: "source"; type: "QQuickItem"; isPointer: true } + Property { name: "fullWidth"; type: "bool" } + Property { name: "fullHeight"; type: "bool" } + Property { name: "glowRadius"; type: "double" } + Property { name: "spread"; type: "double" } + Property { name: "color"; type: "QColor" } + Property { name: "cornerRadius"; type: "double" } + Property { name: "cached"; type: "bool" } } Component { - prototype: "QObject" - name: "org.kde.kirigami/OverlaySheet 2.0" - exports: ["org.kde.kirigami/OverlaySheet 2.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/BusyIndicator 1.1" + exports: ["QtQuick.Controls/BusyIndicator 1.1"] + exportMetaObjectRevisions: [1] isComposite: true - defaultProperty: "contentItem" - Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } - Property { name: "sheetOpen"; type: "bool" } - Property { name: "leftPadding"; type: "int" } - Property { name: "topPadding"; type: "int" } - Property { name: "rightPadding"; type: "int" } - Property { name: "bottomPadding"; type: "int" } - Property { name: "background"; type: "QQuickItem"; isPointer: true } - Property { name: "parent"; type: "QQuickItem"; isPointer: true } - Property { name: "rootItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Method { name: "open"; type: "QVariant" } - Method { name: "close"; type: "QVariant" } + defaultProperty: "data" + Property { name: "running"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { - prototype: "QQuickPage" - name: "QtQuick.Controls/Page 2.0" - exports: ["QtQuick.Controls/Page 2.0"] + prototype: "QQuickBusyIndicator" + name: "QtQuick.Controls/BusyIndicator 2.0" + exports: ["QtQuick.Controls/BusyIndicator 2.0"] exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "contentData" + defaultProperty: "data" } Component { - prototype: "QQuickPage" - name: "org.kde.kirigami/Page 2.0" - exports: ["org.kde.kirigami/Page 2.0"] + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Button 1.0" + exports: ["QtQuick.Controls/Button 1.0"] exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "contentData" - Property { name: "flickable"; type: "QQuickFlickable"; isPointer: true } - Property { name: "isCurrentPage"; type: "bool"; isReadonly: true } - Property { name: "contextualActions"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "mainAction"; type: "QObject"; isPointer: true } - Property { name: "leftAction"; type: "QObject"; isPointer: true } - Property { name: "rightAction"; type: "QObject"; isPointer: true } - Property { - name: "actions" - type: "PageActionPropertyGroup_QMLTYPE_29" - isReadonly: true - isPointer: true - } - Signal { - name: "backRequested" - Parameter { name: "event"; type: "QVariant" } - } + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_114"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction1"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { - prototype: "QQuickPageIndicator" - name: "QtQuick.Controls/PageIndicator 2.0" - exports: ["QtQuick.Controls/PageIndicator 2.0"] + prototype: "QQuickButton" + name: "QtQuick.Controls/Button 2.0" + exports: ["QtQuick.Controls/Button 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" } Component { - prototype: "QQuickControl" - name: "org.kde.kirigami/PageRow 2.0" - exports: ["org.kde.kirigami/PageRow 2.0"] + prototype: "QQuickButtonGroup" + name: "QtQuick.Controls/ButtonGroup 2.0" + exports: ["QtQuick.Controls/ButtonGroup 2.0"] exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "data" - Property { name: "depth"; type: "int"; isReadonly: true } - Property { name: "lastItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } - Property { name: "initialPage"; type: "QVariant" } - Property { name: "defaultColumnWidth"; type: "int" } - Property { name: "wideMode"; type: "bool"; isReadonly: true } - Property { name: "currentIndex"; type: "int" } - Property { name: "interactive"; type: "bool" } - Method { - name: "push" - type: "QVariant" - Parameter { name: "page"; type: "QVariant" } - Parameter { name: "properties"; type: "QVariant" } - } - Method { - name: "pop" - type: "QVariant" - Parameter { name: "page"; type: "QVariant" } - } - Method { - name: "replace" - type: "QVariant" - Parameter { name: "page"; type: "QVariant" } - Parameter { name: "properties"; type: "QVariant" } - } - Method { name: "clear"; type: "QVariant" } - Method { - name: "get" - type: "QVariant" - Parameter { name: "idx"; type: "QVariant" } - } - Method { name: "flickBack"; type: "QVariant" } } Component { - prototype: "QQuickPane" - name: "QtQuick.Controls/Pane 2.0" - exports: ["QtQuick.Controls/Pane 2.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/ButtonPanel 2.3" + exports: ["QtQuick.Controls.Fusion.impl/ButtonPanel 2.3"] + exportMetaObjectRevisions: [3] isComposite: true - defaultProperty: "contentData" + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "highlighted"; type: "bool" } } Component { prototype: "QQuickFocusScope" - name: "QtQuick.Extras/PieMenu 1.0" - exports: ["QtQuick.Extras/PieMenu 1.0"] - exportMetaObjectRevisions: [0] + name: "QtQuick.Controls/Calendar 1.6" + exports: ["QtQuick.Controls/Calendar 1.6"] + exportMetaObjectRevisions: [6] isComposite: true - defaultProperty: "menuItems" - Property { name: "selectionAngle"; type: "double"; isReadonly: true } - Property { name: "triggerMode"; type: "int" } - Property { name: "title"; type: "string" } - Property { name: "boundingItem"; type: "QQuickItem"; isPointer: true } - Property { name: "__protectedScope"; type: "QObject"; isPointer: true } - Property { name: "activationMode"; type: "int" } - Property { name: "menuItems"; type: "QQuickMenuItem1"; isList: true; isReadonly: true } - Property { name: "currentIndex"; type: "int"; isReadonly: true } - Property { name: "currentItem"; type: "QQuickMenuItem1"; isReadonly: true; isPointer: true } - Property { name: "__mouseThief"; type: "QQuickMouseThief"; isReadonly: true; isPointer: true } - Method { - name: "popup" - type: "QVariant" - Parameter { name: "x"; type: "QVariant" } - Parameter { name: "y"; type: "QVariant" } + defaultProperty: "data" + Property { name: "visibleMonth"; type: "int" } + Property { name: "visibleYear"; type: "int" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "weekNumbersVisible"; type: "bool" } + Property { name: "navigationBarVisible"; type: "bool" } + Property { name: "dayOfWeekFormat"; type: "int" } + Property { name: "locale"; type: "QVariant" } + Property { name: "__model"; type: "QQuickCalendarModel1"; isPointer: true } + Property { name: "selectedDate"; type: "QDateTime" } + Property { name: "minimumDate"; type: "QDateTime" } + Property { name: "maximumDate"; type: "QDateTime" } + Property { name: "__locale"; type: "QVariant" } + Signal { + name: "hovered" + Parameter { name: "date"; type: "QDateTime" } } - Method { - name: "addItem" - type: "QVariant" - Parameter { name: "text"; type: "QVariant" } + Signal { + name: "pressed" + Parameter { name: "date"; type: "QDateTime" } } - Method { - name: "insertItem" - type: "QVariant" - Parameter { name: "before"; type: "QVariant" } - Parameter { name: "text"; type: "QVariant" } + Signal { + name: "released" + Parameter { name: "date"; type: "QDateTime" } } - Method { - name: "removeItem" - type: "QVariant" - Parameter { name: "item"; type: "QVariant" } + Signal { + name: "clicked" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "doubleClicked" + Parameter { name: "date"; type: "QDateTime" } } + Signal { + name: "pressAndHold" + Parameter { name: "date"; type: "QDateTime" } + } + Method { name: "showPreviousMonth"; type: "QVariant" } + Method { name: "showNextMonth"; type: "QVariant" } + Method { name: "showPreviousYear"; type: "QVariant" } + Method { name: "showNextYear"; type: "QVariant" } + Method { name: "__selectPreviousMonth"; type: "QVariant" } + Method { name: "__selectNextMonth"; type: "QVariant" } + Method { name: "__selectPreviousWeek"; type: "QVariant" } + Method { name: "__selectNextWeek"; type: "QVariant" } + Method { name: "__selectFirstDayOfMonth"; type: "QVariant" } + Method { name: "__selectLastDayOfMonth"; type: "QVariant" } + Method { name: "__selectPreviousDay"; type: "QVariant" } + Method { name: "__selectNextDay"; type: "QVariant" } Property { name: "style"; type: "QQmlComponent"; isPointer: true } Property { name: "__style"; type: "QObject"; isPointer: true } Property { name: "__panel"; type: "QQuickItem"; isPointer: true } Property { name: "styleHints"; type: "QVariant" } Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { - prototype: "QQuickLoader" - name: "QtQuick.Extras.Private/PieMenuIcon 1.0" - exports: ["QtQuick.Extras.Private/PieMenuIcon 1.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Calendar 1.2" + exports: ["QtQuick.Controls/Calendar 1.2"] + exportMetaObjectRevisions: [2] isComposite: true defaultProperty: "data" - Property { name: "control"; type: "PieMenu_QMLTYPE_165"; isPointer: true } - Property { name: "styleData"; type: "QObject"; isPointer: true } - Property { name: "iconSource"; type: "string"; isReadonly: true } - } - Component { - prototype: "QQuickPopup" - name: "QtQuick.Controls/Popup 2.0" - exports: ["QtQuick.Controls/Popup 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "contentData" + Property { name: "visibleMonth"; type: "int" } + Property { name: "visibleYear"; type: "int" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "weekNumbersVisible"; type: "bool" } + Property { name: "navigationBarVisible"; type: "bool" } + Property { name: "dayOfWeekFormat"; type: "int" } + Property { name: "locale"; type: "QVariant" } + Property { name: "__model"; type: "QQuickCalendarModel1"; isPointer: true } + Property { name: "selectedDate"; type: "QDateTime" } + Property { name: "minimumDate"; type: "QDateTime" } + Property { name: "maximumDate"; type: "QDateTime" } + Property { name: "__locale"; type: "QVariant" } + Signal { + name: "hovered" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "pressed" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "released" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "clicked" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "doubleClicked" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "pressAndHold" + Parameter { name: "date"; type: "QDateTime" } + } + Method { name: "showPreviousMonth"; type: "QVariant" } + Method { name: "showNextMonth"; type: "QVariant" } + Method { name: "showPreviousYear"; type: "QVariant" } + Method { name: "showNextYear"; type: "QVariant" } + Method { name: "__selectPreviousMonth"; type: "QVariant" } + Method { name: "__selectNextMonth"; type: "QVariant" } + Method { name: "__selectPreviousWeek"; type: "QVariant" } + Method { name: "__selectNextWeek"; type: "QVariant" } + Method { name: "__selectFirstDayOfMonth"; type: "QVariant" } + Method { name: "__selectLastDayOfMonth"; type: "QVariant" } + Method { name: "__selectPreviousDay"; type: "QVariant" } + Method { name: "__selectNextDay"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { - prototype: "QQuickProgressBar" - name: "QtQuick.Controls/ProgressBar 2.0" - exports: ["QtQuick.Controls/ProgressBar 2.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickItemDelegate" + name: "Card 2.4" + exports: ["Card 2.4"] + exportMetaObjectRevisions: [4] isComposite: true defaultProperty: "data" + Property { name: "actions"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "banner"; type: "BannerGroup_QMLTYPE_139"; isReadonly: true; isPointer: true } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "headerOrientation"; type: "int" } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "showClickFeedback"; type: "bool" } } Component { - prototype: "QQuickRadioButton" - name: "QtQuick.Controls/RadioButton 2.0" - exports: ["QtQuick.Controls/RadioButton 2.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickGridView" + name: "CardsGridView 2.4" + exports: ["CardsGridView 2.4"] + exportMetaObjectRevisions: [4] isComposite: true defaultProperty: "data" + Property { name: "maximumColumnWidth"; type: "int" } } Component { - prototype: "QQuickRadioDelegate" - name: "QtQuick.Controls/RadioDelegate 2.0" - exports: ["QtQuick.Controls/RadioDelegate 2.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickGridLayout" + name: "CardsLayout 2.4" + exports: ["CardsLayout 2.4"] + exportMetaObjectRevisions: [4] isComposite: true defaultProperty: "data" + Property { name: "maximumColumnWidth"; type: "int" } } Component { - prototype: "QQuickRectangle" - name: "QtQuick.Controls.Universal.impl/RadioIndicator 2.0" - exports: ["QtQuick.Controls.Universal.impl/RadioIndicator 2.0"] - exportMetaObjectRevisions: [0] + prototype: "QQuickListView" + name: "CardsListView 2.4" + exports: ["CardsListView 2.4"] + exportMetaObjectRevisions: [4] isComposite: true defaultProperty: "data" - Property { name: "control"; type: "QVariant" } } Component { - prototype: "QQuickRectangle" - name: "QtQuick.Controls.Material.impl/RadioIndicator 2.0" - exports: ["QtQuick.Controls.Material.impl/RadioIndicator 2.0"] + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/CheckBox 1.0" + exports: ["QtQuick.Controls/CheckBox 1.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "checkedState"; type: "int" } + Property { name: "partiallyCheckedEnabled"; type: "bool" } + Property { name: "__ignoreChecked"; type: "bool" } + Property { name: "__ignoreCheckedState"; type: "bool" } + Method { name: "__cycleCheckBoxStates"; type: "QVariant" } + Property { name: "checked"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "__cycleStatesHandler"; type: "QVariant" } + Property { name: "pressed"; type: "bool" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { - prototype: "QQuickRectangle" - name: "QtQuick.Controls.impl/RadioIndicator 2.0" - exports: ["QtQuick.Controls.impl/RadioIndicator 2.0"] + prototype: "QQuickCheckBox" + name: "QtQuick.Controls/CheckBox 2.0" + exports: ["QtQuick.Controls/CheckBox 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "control"; type: "QQuickItem"; isPointer: true } } Component { - prototype: "QQuickRangeSlider" - name: "QtQuick.Controls/RangeSlider 2.0" - exports: ["QtQuick.Controls/RangeSlider 2.0"] + prototype: "QQuickCheckDelegate" + name: "QtQuick.Controls/CheckDelegate 2.0" + exports: ["QtQuick.Controls/CheckDelegate 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" } Component { - prototype: "QQuickItem" - name: "QtQuick.Controls.Material.impl/RectangularGlow 2.0" - exports: ["QtQuick.Controls.Material.impl/RectangularGlow 2.0"] + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Universal.impl/CheckIndicator 2.0" + exports: ["QtQuick.Controls.Universal.impl/CheckIndicator 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "glowRadius"; type: "double" } - Property { name: "spread"; type: "double" } - Property { name: "color"; type: "QColor" } - Property { name: "cornerRadius"; type: "double" } - Property { name: "cached"; type: "bool" } + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "partiallyChecked"; type: "bool"; isReadonly: true } } Component { - prototype: "QQuickRoundButton" - name: "QtQuick.Controls/RoundButton 2.1" - exports: ["QtQuick.Controls/RoundButton 2.1"] - exportMetaObjectRevisions: [1] + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/CheckIndicator 2.3" + exports: ["QtQuick.Controls.Fusion.impl/CheckIndicator 2.3"] + exportMetaObjectRevisions: [3] isComposite: true defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "pressedColor"; type: "QColor"; isReadonly: true } + Property { name: "checkMarkColor"; type: "QColor"; isReadonly: true } } Component { - prototype: "QQuickScrollBar" - name: "QtQuick.Controls/ScrollBar 2.0" - exports: ["QtQuick.Controls/ScrollBar 2.0"] + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Material.impl/CheckIndicator 2.0" + exports: ["QtQuick.Controls.Material.impl/CheckIndicator 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } } Component { - prototype: "QQuickScrollIndicator" - name: "QtQuick.Controls/ScrollIndicator 2.0" - exports: ["QtQuick.Controls/ScrollIndicator 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - } - Component { - prototype: "QQuickScrollView" - name: "QtQuick.Controls/ScrollView 2.2" - exports: ["QtQuick.Controls/ScrollView 2.2"] - exportMetaObjectRevisions: [2] - isComposite: true - defaultProperty: "contentData" - } - Component { - prototype: "QQuickPage" - name: "org.kde.kirigami/ScrollablePage 2.0" - exports: ["org.kde.kirigami/ScrollablePage 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "mainItem" - Property { name: "mainItem"; type: "QObject"; isPointer: true } - Property { name: "keyboardNavigationEnabled"; type: "bool" } - Property { name: "refreshing"; type: "bool" } - Property { name: "supportsRefreshing"; type: "bool" } - Property { name: "flickable"; type: "QQuickFlickable"; isPointer: true } - Property { name: "isCurrentPage"; type: "bool"; isReadonly: true } - Property { name: "contextualActions"; type: "QObject"; isList: true; isReadonly: true } - Property { name: "mainAction"; type: "QObject"; isPointer: true } - Property { name: "leftAction"; type: "QObject"; isPointer: true } - Property { name: "rightAction"; type: "QObject"; isPointer: true } - Property { - name: "actions" - type: "PageActionPropertyGroup_QMLTYPE_29" - isReadonly: true - isPointer: true - } - Signal { - name: "backRequested" - Parameter { name: "event"; type: "QVariant" } - } - } - Component { - prototype: "QQuickRectangle" - name: "org.kde.kirigami/Separator 2.0" - exports: ["org.kde.kirigami/Separator 2.0"] + prototype: "QQuickFocusScope" + name: "QtQuick.Extras.Private/CircularButton 1.0" + exports: ["QtQuick.Extras.Private/CircularButton 1.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_114"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction1"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { - prototype: "QQuickSlider" - name: "QtQuick.Controls/Slider 2.0" - exports: ["QtQuick.Controls/Slider 2.0"] + prototype: "QObject" + name: "QtQuick.Extras.Private/CircularButtonStyleHelper 1.0" + exports: ["QtQuick.Extras.Private/CircularButtonStyleHelper 1.0"] exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "buttonColorUpTop"; type: "QColor" } + Property { name: "buttonColorUpBottom"; type: "QColor" } + Property { name: "buttonColorDownTop"; type: "QColor" } + Property { name: "buttonColorDownBottom"; type: "QColor" } + Property { name: "outerArcColorTop"; type: "QColor" } + Property { name: "outerArcColorBottom"; type: "QColor" } + Property { name: "innerArcColorTop"; type: "QColor" } + Property { name: "innerArcColorBottom"; type: "QColor" } + Property { name: "innerArcColorBottomStop"; type: "double" } + Property { name: "shineColor"; type: "QColor" } + Property { name: "smallestAxis"; type: "double" } + Property { name: "outerArcLineWidth"; type: "double" } + Property { name: "innerArcLineWidth"; type: "double" } + Property { name: "shineArcLineWidth"; type: "double" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "textColorUp"; type: "QColor" } + Property { name: "textColorDown"; type: "QColor" } + Property { name: "textRaisedColorUp"; type: "QColor" } + Property { name: "textRaisedColorDown"; type: "QColor" } + Property { name: "radius"; type: "double" } + Property { name: "halfRadius"; type: "double" } + Property { name: "outerArcRadius"; type: "double" } + Property { name: "innerArcRadius"; type: "double" } + Property { name: "shineArcRadius"; type: "double" } + Property { name: "zeroAngle"; type: "double" } + Property { name: "buttonColorTop"; type: "QColor" } + Property { name: "buttonColorBottom"; type: "QColor" } + Method { + name: "toPixels" + type: "QVariant" + Parameter { name: "percentageOfSmallestAxis"; type: "QVariant" } + } + Method { + name: "paintBackground" + type: "QVariant" + Parameter { name: "ctx"; type: "QVariant" } + } } Component { - prototype: "QQuickItem" - name: "QtQuick.Controls.Material.impl/SliderHandle 2.0" - exports: ["QtQuick.Controls.Material.impl/SliderHandle 2.0"] + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/CircularGauge 1.0" + exports: ["QtQuick.Extras/CircularGauge 1.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } Property { name: "value"; type: "double" } - Property { name: "handleHasFocus"; type: "bool" } - Property { name: "handlePressed"; type: "bool" } - Property { name: "handleHovered"; type: "bool" } - Property { name: "initialSize"; type: "int"; isReadonly: true } - Property { name: "horizontal"; type: "bool"; isReadonly: true } - Property { name: "control"; type: "QVariant"; isReadonly: true } - } - Component { - prototype: "QQuickSpinBox" - name: "QtQuick.Controls/SpinBox 2.0" - exports: ["QtQuick.Controls/SpinBox 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - } - Component { - prototype: "QQuickStackView" - name: "QtQuick.Controls/StackView 2.0" - exports: ["QtQuick.Controls/StackView 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" + Property { name: "stepSize"; type: "double" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { prototype: "QQuickFocusScope" - name: "QtQuick.Extras/StatusIndicator 1.1" - exports: ["QtQuick.Extras/StatusIndicator 1.1"] - exportMetaObjectRevisions: [1] + name: "QtQuick.Extras.Private/CircularTickmarkLabel 1.0" + exports: ["QtQuick.Extras.Private/CircularTickmarkLabel 1.0"] + exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "active"; type: "bool" } - Property { name: "color"; type: "QColor" } - Property { name: "on"; type: "bool" } + Property { name: "minimumValueAngle"; type: "double" } + Property { name: "maximumValueAngle"; type: "double" } + Property { name: "angleRange"; type: "double"; isReadonly: true } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "tickmarkInset"; type: "double" } + Property { name: "tickmarkCount"; type: "int"; isReadonly: true } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "minorTickmarkInset"; type: "double" } + Property { name: "labelInset"; type: "double" } + Property { name: "labelStepSize"; type: "double" } + Property { name: "labelCount"; type: "int"; isReadonly: true } + Property { name: "__tickmarkCount"; type: "double"; isReadonly: true } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "stepSize"; type: "double" } + Method { + name: "valueToAngle" + type: "QVariant" + Parameter { name: "value"; type: "QVariant" } + } Property { name: "style"; type: "QQmlComponent"; isPointer: true } Property { name: "__style"; type: "QObject"; isPointer: true } Property { name: "__panel"; type: "QQuickItem"; isPointer: true } Property { name: "styleHints"; type: "QVariant" } Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { prototype: "QQuickFocusScope" - name: "QtQuick.Extras/StatusIndicator 1.0" - exports: ["QtQuick.Extras/StatusIndicator 1.0"] + name: "QtQuick.Controls/ComboBox 1.0" + exports: ["QtQuick.Controls/ComboBox 1.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "active"; type: "bool" } - Property { name: "color"; type: "QColor" } - Property { name: "on"; type: "bool" } + Property { name: "textRole"; type: "string" } + Property { name: "editable"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "__popup"; type: "QVariant" } + Property { name: "model"; type: "QVariant" } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentText"; type: "string"; isReadonly: true } + Property { name: "editText"; type: "string" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Signal { name: "accepted" } + Signal { + name: "activated" + Parameter { name: "index"; type: "int" } + } + Method { + name: "textAt" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "find" + type: "QVariant" + Parameter { name: "text"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "__selectPrevItem"; type: "QVariant" } + Method { name: "__selectNextItem"; type: "QVariant" } Property { name: "style"; type: "QQmlComponent"; isPointer: true } Property { name: "__style"; type: "QObject"; isPointer: true } Property { name: "__panel"; type: "QQuickItem"; isPointer: true } Property { name: "styleHints"; type: "QVariant" } Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { - prototype: "QQuickSwipeDelegate" - name: "QtQuick.Controls/SwipeDelegate 2.0" - exports: ["QtQuick.Controls/SwipeDelegate 2.0"] + prototype: "QQuickComboBox" + name: "QtQuick.Controls/ComboBox 2.0" + exports: ["QtQuick.Controls/ComboBox 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" } Component { - prototype: "QQuickItemDelegate" - name: "org.kde.kirigami/SwipeListItem 2.0" - exports: ["org.kde.kirigami/SwipeListItem 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "_default" - Property { name: "sectionDelegate"; type: "bool" } - Property { name: "separatorVisible"; type: "bool" } - Property { name: "actions"; type: "Action_QMLTYPE_26"; isList: true; isReadonly: true } - Property { name: "textColor"; type: "QColor" } - Property { name: "backgroundColor"; type: "QColor" } - Property { name: "activeTextColor"; type: "QColor" } - Property { name: "activeBackgroundColor"; type: "QColor" } - Property { name: "supportsMouseEvents"; type: "bool" } - Property { name: "containsMouse"; type: "bool"; isReadonly: true } - Property { name: "_default"; type: "QQuickItem"; isPointer: true } - } - Component { - prototype: "QQuickSwipeView" - name: "QtQuick.Controls/SwipeView 2.0" - exports: ["QtQuick.Controls/SwipeView 2.0"] + prototype: "QQuickContainer" + name: "QtQuick.Controls/Container 2.0" + exports: ["QtQuick.Controls/Container 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "contentData" } Component { - prototype: "QQuickSwitch" - name: "QtQuick.Controls/Switch 2.0" - exports: ["QtQuick.Controls/Switch 2.0"] - exportMetaObjectRevisions: [0] - isComposite: true - defaultProperty: "data" - } - Component { - prototype: "QQuickSwitchDelegate" - name: "QtQuick.Controls/SwitchDelegate 2.0" - exports: ["QtQuick.Controls/SwitchDelegate 2.0"] + prototype: "QQuickDrawer" + name: "ContextDrawer 2.0" + exports: ["ContextDrawer 2.0"] exportMetaObjectRevisions: [0] isComposite: true - defaultProperty: "data" + defaultProperty: "contentData" + Property { name: "title"; type: "string" } + Property { name: "actions"; type: "QVariant" } + Property { name: "drawerOpen"; type: "bool" } + Property { name: "enabled"; type: "bool" } + Property { name: "peeking"; type: "bool" } + Property { name: "animating"; type: "bool"; isReadonly: true } + Property { name: "handleVisible"; type: "bool" } + Property { name: "handle"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__internal"; type: "QObject"; isPointer: true } } Component { - prototype: "QQuickItem" - name: "QtQuick.Controls.Material.impl/SwitchIndicator 2.0" - exports: ["QtQuick.Controls.Material.impl/SwitchIndicator 2.0"] + prototype: "QQuickControl" + name: "QtQuick.Controls/Control 2.0" + exports: ["QtQuick.Controls/Control 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "control"; type: "QQuickItem"; isPointer: true } - Property { name: "handle"; type: "QQuickRectangle"; isReadonly: true; isPointer: true } } Component { - prototype: "QQuickItem" - name: "QtQuick.Controls.Universal.impl/SwitchIndicator 2.0" - exports: ["QtQuick.Controls.Universal.impl/SwitchIndicator 2.0"] + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Material.impl/CursorDelegate 2.0" + exports: ["QtQuick.Controls.Material.impl/CursorDelegate 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "control"; type: "QQuickItem"; isPointer: true } } Component { - prototype: "QQuickItem" - name: "QtQuick.Controls.impl/SwitchIndicator 2.0" - exports: ["QtQuick.Controls.impl/SwitchIndicator 2.0"] + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/DelayButton 1.0" + exports: ["QtQuick.Extras/DelayButton 1.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" - Property { name: "control"; type: "QQuickItem"; isPointer: true } - } - Component { - prototype: "QQuickTabBar" - name: "QtQuick.Controls/TabBar 2.0" - exports: ["QtQuick.Controls/TabBar 2.0"] + Property { name: "delay"; type: "int" } + Property { name: "__progress"; type: "double" } + Property { name: "progress"; type: "double"; isReadonly: true } + Signal { name: "activated" } + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_114"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction1"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickDelayButton" + name: "QtQuick.Controls/DelayButton 2.2" + exports: ["QtQuick.Controls/DelayButton 2.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Dial 1.1" + exports: ["QtQuick.Extras/Dial 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "__wrap"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Dial 1.0" + exports: ["QtQuick.Extras/Dial 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "__wrap"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickDial" + name: "QtQuick.Controls/Dial 2.0" + exports: ["QtQuick.Controls/Dial 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickDialog" + name: "QtQuick.Controls/Dialog 2.1" + exports: ["QtQuick.Controls/Dialog 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickDialogButtonBox" + name: "QtQuick.Controls/DialogButtonBox 2.1" + exports: ["QtQuick.Controls/DialogButtonBox 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickDrawer" + name: "QtQuick.Controls/Drawer 2.0" + exports: ["QtQuick.Controls/Drawer 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "contentData" } Component { - prototype: "QQuickTabButton" - name: "QtQuick.Controls/TabButton 2.0" - exports: ["QtQuick.Controls/TabButton 2.0"] + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/ElevationEffect 2.0" + exports: ["QtQuick.Controls.Material.impl/ElevationEffect 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "source"; type: "QVariant" } + Property { name: "elevation"; type: "int" } + Property { name: "fullWidth"; type: "bool" } + Property { name: "fullHeight"; type: "bool" } + Property { name: "sourceItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "_shadows"; type: "QVariant"; isReadonly: true } + Property { name: "_shadow"; type: "QVariant"; isReadonly: true } + } + Component { + prototype: "QQuickControl" + name: "FormLayout 2.3" + exports: ["FormLayout 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "wideMode"; type: "bool" } + } + Component { + prototype: "QQuickFrame" + name: "QtQuick.Controls/Frame 2.0" + exports: ["QtQuick.Controls/Frame 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Gauge 1.0" + exports: ["QtQuick.Extras/Gauge 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "orientation"; type: "int" } + Property { name: "tickmarkAlignment"; type: "int" } + Property { name: "__tickmarkAlignment"; type: "int" } + Property { name: "__tickmarksInside"; type: "bool" } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "formatValue"; type: "QVariant" } + Property { name: "minimumValue"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "font"; type: "QFont" } + Property { name: "__hiddenText"; type: "QQuickText"; isReadonly: true; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickDrawer" + name: "GlobalDrawer 2.0" + exports: ["GlobalDrawer 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "content" + Property { name: "actions"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "resetMenuOnTriggered"; type: "bool" } + Property { name: "currentSubMenu"; type: "Action_QMLTYPE_37"; isReadonly: true; isPointer: true } + Property { name: "title"; type: "string" } + Property { name: "titleIcon"; type: "QVariant" } + Property { name: "bannerImageSource"; type: "QUrl" } + Property { name: "content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "topContent"; type: "QObject"; isList: true; isReadonly: true } + Signal { name: "bannerClicked" } + Method { name: "resetMenu"; type: "QVariant" } + Property { name: "drawerOpen"; type: "bool" } + Property { name: "enabled"; type: "bool" } + Property { name: "peeking"; type: "bool" } + Property { name: "animating"; type: "bool"; isReadonly: true } + Property { name: "handleVisible"; type: "bool" } + Property { name: "handle"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__internal"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/GroupBox 1.0" + exports: ["QtQuick.Controls/GroupBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__content" + Property { name: "title"; type: "string" } + Property { name: "flat"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "checked"; type: "bool" } + Property { name: "__content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__checkbox"; type: "CheckBox_QMLTYPE_158"; isReadonly: true; isPointer: true } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickGroupBox" + name: "QtQuick.Controls/GroupBox 2.0" + exports: ["QtQuick.Controls/GroupBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickLabel" + name: "Heading 2.0" + exports: ["Heading 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "level"; type: "int" } + Property { name: "step"; type: "int" } + Method { + name: "headerPointSize" + type: "QVariant" + Parameter { name: "l"; type: "QVariant" } + } + } + Component { + prototype: "QQuickItemDelegate" + name: "QtQuick.Controls/ItemDelegate 2.0" + exports: ["QtQuick.Controls/ItemDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickControl" + name: "ItemViewHeader 2.1" + exports: ["ItemViewHeader 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "title"; type: "string" } + Property { name: "color"; type: "QColor" } + Property { name: "backgroundImage"; type: "QQuickImage"; isReadonly: true; isPointer: true } + Property { name: "minimumHeight"; type: "int" } + Property { name: "maximumHeight"; type: "int" } + Property { name: "view"; type: "QQuickListView"; isPointer: true } + } + Component { + prototype: "QQuickText" + name: "QtQuick.Controls/Label 1.0" + exports: ["QtQuick.Controls/Label 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickLabel" + name: "Label 2.0" + exports: ["Label 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickLabel" + name: "QtQuick.Controls/Label 2.0" + exports: ["QtQuick.Controls/Label 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" } Component { - prototype: "QQuickTextArea" - name: "QtQuick.Controls/TextArea 2.0" - exports: ["QtQuick.Controls/TextArea 2.0"] + prototype: "QQuickMenu" + name: "QtQuick.Controls/Menu 2.0" + exports: ["QtQuick.Controls/Menu 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QObject" + name: "QtQuick.Controls/Menu 1.0" + exports: ["QtQuick.Controls/Menu 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "items" + Property { name: "__selfComponent"; type: "QQmlComponent"; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__usingDefaultStyle"; type: "bool" } + Property { name: "__parentContentItem"; type: "QVariant" } + Property { name: "__currentIndex"; type: "int" } + Method { + name: "addMenu" + type: "QVariant" + Parameter { name: "title"; type: "QVariant" } + } + Method { + name: "insertMenu" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "title"; type: "QVariant" } + } + Property { name: "title"; type: "string" } + Property { name: "items"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__selectedIndex"; type: "int" } + Property { name: "__popupVisible"; type: "bool"; isReadonly: true } + Property { name: "__contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__minimumWidth"; type: "int" } + Property { name: "__font"; type: "QFont" } + Property { name: "__xOffset"; type: "double" } + Property { name: "__yOffset"; type: "double" } + Property { name: "__action"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__popupGeometry"; type: "QRect"; isReadonly: true } + Property { name: "__isProxy"; type: "bool" } + Signal { name: "aboutToShow" } + Signal { name: "aboutToHide" } + Signal { name: "popupVisibleChanged" } + Signal { name: "__menuPopupDestroyed" } + Signal { name: "menuContentItemChanged" } + Signal { name: "minimumWidthChanged" } + Signal { name: "__proxyChanged" } + Method { name: "__dismissMenu" } + Method { name: "__closeAndDestroy" } + Method { name: "__dismissAndDestroy" } + Method { name: "popup" } + Method { + name: "addItem" + type: "QQuickMenuItem1*" + Parameter { type: "string" } + } + Method { + name: "insertItem" + type: "QQuickMenuItem1*" + Parameter { type: "int" } + Parameter { type: "string" } + } + Method { name: "addSeparator" } + Method { + name: "insertSeparator" + Parameter { type: "int" } + } + Method { + name: "removeItem" + Parameter { type: "QQuickMenuBase1"; isPointer: true } + } + Method { name: "clear" } + Method { + name: "__popup" + Parameter { name: "targetRect"; type: "QRectF" } + Parameter { name: "atItemIndex"; type: "int" } + Parameter { name: "menuType"; type: "MenuType" } + } + Method { + name: "__popup" + Parameter { name: "targetRect"; type: "QRectF" } + Parameter { name: "atItemIndex"; type: "int" } + } + Method { + name: "__popup" + Parameter { name: "targetRect"; type: "QRectF" } + } + Property { name: "enabled"; type: "bool" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__icon"; type: "QVariant"; isReadonly: true } + Signal { name: "__textChanged" } + Property { name: "visible"; type: "bool" } + Property { name: "type"; type: "QQuickMenuItemType1::MenuItemType"; isReadonly: true } + Property { name: "__parentMenu"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__isNative"; type: "bool"; isReadonly: true } + Property { name: "__visualItem"; type: "QQuickItem"; isPointer: true } + } + Component { + prototype: "QQuickMenuBar" + name: "QtQuick.Controls/MenuBar 2.3" + exports: ["QtQuick.Controls/MenuBar 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QObject" + name: "QtQuick.Controls/MenuBar 1.0" + exports: ["QtQuick.Controls/MenuBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "menus" + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__menuBarComponent"; type: "QQmlComponent"; isPointer: true } + Property { name: "menus"; type: "QQuickMenu1"; isList: true; isReadonly: true } + Property { name: "__contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__parentWindow"; type: "QQuickWindow"; isPointer: true } + Property { name: "__isNative"; type: "bool" } + Signal { name: "nativeChanged" } + Signal { name: "contentItemChanged" } + } + Component { + prototype: "QQuickMenuBarItem" + name: "QtQuick.Controls/MenuBarItem 2.3" + exports: ["QtQuick.Controls/MenuBarItem 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickMenuItem" + name: "QtQuick.Controls/MenuItem 2.0" + exports: ["QtQuick.Controls/MenuItem 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickMenuSeparator" + name: "QtQuick.Controls/MenuSeparator 2.1" + exports: ["QtQuick.Controls/MenuSeparator 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickDrawer" + name: "OverlayDrawer 2.0" + exports: ["OverlayDrawer 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + Property { name: "drawerOpen"; type: "bool" } + Property { name: "enabled"; type: "bool" } + Property { name: "peeking"; type: "bool" } + Property { name: "animating"; type: "bool"; isReadonly: true } + Property { name: "handleVisible"; type: "bool" } + Property { name: "handle"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__internal"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QObject" + name: "OverlaySheet 2.0" + exports: ["OverlaySheet 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentItem" + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "sheetOpen"; type: "bool" } + Property { name: "leftPadding"; type: "int" } + Property { name: "topPadding"; type: "int" } + Property { name: "rightPadding"; type: "int" } + Property { name: "bottomPadding"; type: "int" } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "rootItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Method { name: "open"; type: "QVariant" } + Method { name: "close"; type: "QVariant" } + } + Component { + prototype: "QQuickPage" + name: "Page 2.0" + exports: ["Page 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + Property { name: "flickable"; type: "QQuickFlickable"; isPointer: true } + Property { name: "isCurrentPage"; type: "bool"; isReadonly: true } + Property { name: "contextualActions"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "mainAction"; type: "QObject"; isPointer: true } + Property { name: "leftAction"; type: "QObject"; isPointer: true } + Property { name: "rightAction"; type: "QObject"; isPointer: true } + Property { + name: "actions" + type: "PageActionPropertyGroup_QMLTYPE_39" + isReadonly: true + isPointer: true + } + Signal { + name: "backRequested" + Parameter { name: "event"; type: "QVariant" } + } + } + Component { + prototype: "QQuickPage" + name: "QtQuick.Controls/Page 2.0" + exports: ["QtQuick.Controls/Page 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickPageIndicator" + name: "QtQuick.Controls/PageIndicator 2.0" + exports: ["QtQuick.Controls/PageIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickControl" + name: "PageRow 2.0" + exports: ["PageRow 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "depth"; type: "int"; isReadonly: true } + Property { name: "lastItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "initialPage"; type: "QVariant" } + Property { name: "defaultColumnWidth"; type: "int" } + Property { name: "wideMode"; type: "bool"; isReadonly: true } + Property { name: "separatorVisible"; type: "bool" } + Property { name: "currentIndex"; type: "int" } + Property { name: "interactive"; type: "bool" } + Property { name: "layers"; type: "QQuickStackView"; isReadonly: true; isPointer: true } + Method { + name: "push" + type: "QVariant" + Parameter { name: "page"; type: "QVariant" } + Parameter { name: "properties"; type: "QVariant" } + } + Method { + name: "pop" + type: "QVariant" + Parameter { name: "page"; type: "QVariant" } + } + Method { + name: "replace" + type: "QVariant" + Parameter { name: "page"; type: "QVariant" } + Parameter { name: "properties"; type: "QVariant" } + } + Method { name: "clear"; type: "QVariant" } + Method { + name: "get" + type: "QVariant" + Parameter { name: "idx"; type: "QVariant" } + } + Method { name: "flickBack"; type: "QVariant" } + } + Component { + prototype: "QQuickPane" + name: "QtQuick.Controls/Pane 2.0" + exports: ["QtQuick.Controls/Pane 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/PieMenu 1.0" + exports: ["QtQuick.Extras/PieMenu 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "menuItems" + Property { name: "selectionAngle"; type: "double"; isReadonly: true } + Property { name: "triggerMode"; type: "int" } + Property { name: "title"; type: "string" } + Property { name: "boundingItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__protectedScope"; type: "QObject"; isPointer: true } + Property { name: "activationMode"; type: "int" } + Property { name: "menuItems"; type: "QQuickMenuItem1"; isList: true; isReadonly: true } + Property { name: "currentIndex"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickMenuItem1"; isReadonly: true; isPointer: true } + Property { name: "__mouseThief"; type: "QQuickMouseThief"; isReadonly: true; isPointer: true } + Method { + name: "popup" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "addItem" + type: "QVariant" + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "insertItem" + type: "QVariant" + Parameter { name: "before"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "removeItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickLoader" + name: "QtQuick.Extras.Private/PieMenuIcon 1.0" + exports: ["QtQuick.Extras.Private/PieMenuIcon 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "PieMenu_QMLTYPE_292"; isPointer: true } + Property { name: "styleData"; type: "QObject"; isPointer: true } + Property { name: "iconSource"; type: "string"; isReadonly: true } + } + Component { + prototype: "QQuickPopup" + name: "QtQuick.Controls/Popup 2.0" + exports: ["QtQuick.Controls/Popup 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ProgressBar 1.0" + exports: ["QtQuick.Controls/ProgressBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "indeterminate"; type: "bool" } + Property { name: "orientation"; type: "int" } + Property { name: "__initialized"; type: "bool" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Method { + name: "setValue" + type: "QVariant" + Parameter { name: "v"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickProgressBar" + name: "QtQuick.Controls/ProgressBar 2.0" + exports: ["QtQuick.Controls/ProgressBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickRadioButton" + name: "QtQuick.Controls/RadioButton 2.0" + exports: ["QtQuick.Controls/RadioButton 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/RadioButton 1.0" + exports: ["QtQuick.Controls/RadioButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "checked"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "__cycleStatesHandler"; type: "QVariant" } + Property { name: "pressed"; type: "bool" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickRadioDelegate" + name: "QtQuick.Controls/RadioDelegate 2.0" + exports: ["QtQuick.Controls/RadioDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/RadioIndicator 2.3" + exports: ["QtQuick.Controls.Fusion.impl/RadioIndicator 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "pressedColor"; type: "QColor"; isReadonly: true } + Property { name: "checkMarkColor"; type: "QColor"; isReadonly: true } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Material.impl/RadioIndicator 2.0" + exports: ["QtQuick.Controls.Material.impl/RadioIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Universal.impl/RadioIndicator 2.0" + exports: ["QtQuick.Controls.Universal.impl/RadioIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QVariant" } + } + Component { + prototype: "QQuickRangeSlider" + name: "QtQuick.Controls/RangeSlider 2.0" + exports: ["QtQuick.Controls/RangeSlider 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/RectangularGlow 2.0" + exports: ["QtQuick.Controls.Material.impl/RectangularGlow 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "glowRadius"; type: "double" } + Property { name: "spread"; type: "double" } + Property { name: "color"; type: "QColor" } + Property { name: "cornerRadius"; type: "double" } + Property { name: "cached"; type: "bool" } + } + Component { + prototype: "QQuickRoundButton" + name: "QtQuick.Controls/RoundButton 2.1" + exports: ["QtQuick.Controls/RoundButton 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickScrollBar" + name: "QtQuick.Controls/ScrollBar 2.0" + exports: ["QtQuick.Controls/ScrollBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickScrollIndicator" + name: "QtQuick.Controls/ScrollIndicator 2.0" + exports: ["QtQuick.Controls/ScrollIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickScrollView" + name: "QtQuick.Controls/ScrollView 2.2" + exports: ["QtQuick.Controls/ScrollView 2.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ScrollView 1.0" + exports: ["QtQuick.Controls/ScrollView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentItem" + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_62"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_95" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickPage" + name: "ScrollablePage 2.0" + exports: ["ScrollablePage 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "mainItem" + Property { name: "mainItem"; type: "QObject"; isPointer: true } + Property { name: "keyboardNavigationEnabled"; type: "bool" } + Property { name: "refreshing"; type: "bool" } + Property { name: "supportsRefreshing"; type: "bool" } + Property { name: "flickable"; type: "QQuickFlickable"; isPointer: true } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "isCurrentPage"; type: "bool"; isReadonly: true } + Property { name: "contextualActions"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "mainAction"; type: "QObject"; isPointer: true } + Property { name: "leftAction"; type: "QObject"; isPointer: true } + Property { name: "rightAction"; type: "QObject"; isPointer: true } + Property { + name: "actions" + type: "PageActionPropertyGroup_QMLTYPE_39" + isReadonly: true + isPointer: true + } + Signal { + name: "backRequested" + Parameter { name: "event"; type: "QVariant" } + } + } + Component { + prototype: "QQuickRectangle" + name: "Separator 2.0" + exports: ["Separator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Slider 1.6" + exports: ["QtQuick.Controls/Slider 1.6"] + exportMetaObjectRevisions: [6] + isComposite: true + defaultProperty: "data" + Property { name: "orientation"; type: "int" } + Property { name: "updateValueWhileDragging"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksEnabled"; type: "bool" } + Property { name: "__horizontal"; type: "bool" } + Property { name: "__handlePos"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "wheelEnabled"; type: "bool" } + Method { name: "accessibleIncreaseAction"; type: "QVariant" } + Method { name: "accessibleDecreaseAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Slider 1.0" + exports: ["QtQuick.Controls/Slider 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "orientation"; type: "int" } + Property { name: "updateValueWhileDragging"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksEnabled"; type: "bool" } + Property { name: "__horizontal"; type: "bool" } + Property { name: "__handlePos"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "wheelEnabled"; type: "bool" } + Method { name: "accessibleIncreaseAction"; type: "QVariant" } + Method { name: "accessibleDecreaseAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickSlider" + name: "QtQuick.Controls/Slider 2.0" + exports: ["QtQuick.Controls/Slider 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/SliderGroove 2.3" + exports: ["QtQuick.Controls.Fusion.impl/SliderGroove 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "offset"; type: "double" } + Property { name: "progress"; type: "double" } + Property { name: "visualProgress"; type: "double" } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/SliderHandle 2.3" + exports: ["QtQuick.Controls.Fusion.impl/SliderHandle 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "palette"; type: "QVariant" } + Property { name: "pressed"; type: "bool" } + Property { name: "hovered"; type: "bool" } + Property { name: "vertical"; type: "bool" } + Property { name: "visualFocus"; type: "bool" } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/SliderHandle 2.0" + exports: ["QtQuick.Controls.Material.impl/SliderHandle 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "value"; type: "double" } + Property { name: "handleHasFocus"; type: "bool" } + Property { name: "handlePressed"; type: "bool" } + Property { name: "handleHovered"; type: "bool" } + Property { name: "initialSize"; type: "int"; isReadonly: true } + Property { name: "control"; type: "QVariant"; isReadonly: true } + } + Component { + prototype: "QQuickSpinBox" + name: "QtQuick.Controls/SpinBox 2.0" + exports: ["QtQuick.Controls/SpinBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/SpinBox 1.0" + exports: ["QtQuick.Controls/SpinBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "suffix"; type: "string" } + Property { name: "prefix"; type: "string" } + Property { name: "decimals"; type: "int" } + Property { name: "font"; type: "QFont" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "__text"; type: "string" } + Property { name: "__baselineOffset"; type: "double" } + Signal { name: "editingFinished" } + Method { name: "__increment"; type: "QVariant" } + Method { name: "__decrement"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls/SplitView 1.0" + exports: ["QtQuick.Controls/SplitView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__contents" + Property { name: "orientation"; type: "int" } + Property { name: "handleDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "resizing"; type: "bool" } + Property { name: "__contents"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__items"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "__handles"; type: "QQuickItem"; isList: true; isReadonly: true } + Method { + name: "addItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Method { + name: "removeItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + } + Component { + prototype: "QQuickStackView" + name: "QtQuick.Controls/StackView 2.0" + exports: ["QtQuick.Controls/StackView 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/StackView 1.0" + exports: ["QtQuick.Controls/StackView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "initialItem"; type: "QVariant" } + Property { name: "busy"; type: "bool"; isReadonly: true } + Property { name: "delegate"; type: "StackViewDelegate_QMLTYPE_369"; isPointer: true } + Property { name: "__currentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__depth"; type: "int" } + Property { name: "__currentTransition"; type: "QVariant" } + Property { name: "__guard"; type: "bool" } + Property { name: "invalidItemReplacement"; type: "QQmlComponent"; isPointer: true } + Property { name: "depth"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Method { + name: "push" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Method { + name: "pop" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Method { name: "clear"; type: "QVariant" } + Method { + name: "find" + type: "QVariant" + Parameter { name: "func"; type: "QVariant" } + Parameter { name: "onlySearchLoadedItems"; type: "QVariant" } + } + Method { + name: "get" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "dontLoad"; type: "QVariant" } + } + Method { name: "completeTransition"; type: "QVariant" } + Method { + name: "replace" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + Parameter { name: "properties"; type: "QVariant" } + Parameter { name: "immediate"; type: "QVariant" } + } + Method { + name: "__recursionGuard" + type: "QVariant" + Parameter { name: "use"; type: "QVariant" } + } + Method { + name: "__loadElement" + type: "QVariant" + Parameter { name: "element"; type: "QVariant" } + } + Method { + name: "__resolveComponent" + type: "QVariant" + Parameter { name: "unknownObjectType"; type: "QVariant" } + Parameter { name: "element"; type: "QVariant" } + } + Method { + name: "__cleanup" + type: "QVariant" + Parameter { name: "element"; type: "QVariant" } + } + Method { + name: "__setStatus" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + Parameter { name: "status"; type: "QVariant" } + } + Method { + name: "__performTransition" + type: "QVariant" + Parameter { name: "transition"; type: "QVariant" } + } + Method { name: "animationFinished"; type: "QVariant" } + } + Component { + prototype: "QObject" + name: "QtQuick.Controls/StackViewDelegate 1.0" + exports: ["QtQuick.Controls/StackViewDelegate 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "pushTransition"; type: "QQmlComponent"; isPointer: true } + Property { name: "popTransition"; type: "QQmlComponent"; isPointer: true } + Property { name: "replaceTransition"; type: "QQmlComponent"; isPointer: true } + Method { + name: "getTransition" + type: "QVariant" + Parameter { name: "properties"; type: "QVariant" } + } + Method { + name: "transitionFinished" + type: "QVariant" + Parameter { name: "properties"; type: "QVariant" } + } + } + Component { + prototype: "QQuickParallelAnimation" + name: "QtQuick.Controls/StackViewTransition 1.0" + exports: ["QtQuick.Controls/StackViewTransition 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "animations" + Property { name: "name"; type: "string" } + Property { name: "enterItem"; type: "QQuickItem"; isPointer: true } + Property { name: "exitItem"; type: "QQuickItem"; isPointer: true } + Property { name: "immediate"; type: "bool" } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/StatusBar 1.0" + exports: ["QtQuick.Controls/StatusBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__content" + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/StatusIndicator 1.1" + exports: ["QtQuick.Extras/StatusIndicator 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "active"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "on"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/StatusIndicator 1.0" + exports: ["QtQuick.Extras/StatusIndicator 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "active"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "on"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickSwipeDelegate" + name: "QtQuick.Controls/SwipeDelegate 2.0" + exports: ["QtQuick.Controls/SwipeDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickItemDelegate" + name: "SwipeListItem 2.0" + exports: ["SwipeListItem 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "_default" + Property { name: "sectionDelegate"; type: "bool" } + Property { name: "separatorVisible"; type: "bool" } + Property { name: "actions"; type: "Action_QMLTYPE_37"; isList: true; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "activeTextColor"; type: "QColor" } + Property { name: "activeBackgroundColor"; type: "QColor" } + Property { name: "supportsMouseEvents"; type: "bool" } + Property { name: "containsMouse"; type: "bool"; isReadonly: true } + Property { name: "_default"; type: "QQuickItem"; isPointer: true } + } + Component { + prototype: "QQuickSwipeView" + name: "QtQuick.Controls/SwipeView 2.0" + exports: ["QtQuick.Controls/SwipeView 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickCheckBox" + name: "QtQuick.Controls/Switch 2.0" + exports: ["QtQuick.Controls/Switch 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Switch 1.1" + exports: ["QtQuick.Controls/Switch 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "checked"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickSwitchDelegate" + name: "QtQuick.Controls/SwitchDelegate 2.0" + exports: ["QtQuick.Controls/SwitchDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/SwitchIndicator 2.0" + exports: ["QtQuick.Controls.Material.impl/SwitchIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "handle"; type: "QQuickRectangle"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/SwitchIndicator 2.3" + exports: ["QtQuick.Controls.Fusion.impl/SwitchIndicator 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "pressedColor"; type: "QColor"; isReadonly: true } + Property { name: "checkMarkColor"; type: "QColor"; isReadonly: true } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Universal.impl/SwitchIndicator 2.0" + exports: ["QtQuick.Controls.Universal.impl/SwitchIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + } + Component { + prototype: "QObject" + name: "SystemPaletteSingleton 1.0" + exports: ["SystemPaletteSingleton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + isCreatable: false + isSingleton: true + Property { name: "active"; type: "QQuickSystemPalette"; isPointer: true } + Property { name: "disabled"; type: "QQuickSystemPalette"; isPointer: true } + Method { + name: "alternateBase" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "base" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "button" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "buttonText" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "dark" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "highlight" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "highlightedText" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "light" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "mid" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "midlight" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "shadow" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "text" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "window" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + Method { + name: "windowText" + type: "QVariant" + Parameter { name: "enabled"; type: "QVariant" } + } + } + Component { + prototype: "QQuickLoader" + name: "QtQuick.Controls/Tab 1.0" + exports: ["QtQuick.Controls/Tab 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "component" + Property { name: "title"; type: "string" } + Property { name: "__inserted"; type: "bool" } + Property { name: "component"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickTabBar" + name: "QtQuick.Controls/TabBar 2.0" + exports: ["QtQuick.Controls/TabBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickTabButton" + name: "QtQuick.Controls/TabButton 2.0" + exports: ["QtQuick.Controls/TabButton 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TabView 1.0" + exports: ["QtQuick.Controls/TabView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "currentIndex"; type: "int" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "frameVisible"; type: "bool" } + Property { name: "tabsVisible"; type: "bool" } + Property { name: "tabPosition"; type: "int" } + Property { name: "__tabs"; type: "QQmlListModel"; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__styleItem"; type: "QVariant" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Method { + name: "addTab" + type: "QVariant" + Parameter { name: "title"; type: "QVariant" } + Parameter { name: "component"; type: "QVariant" } + } + Method { + name: "insertTab" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "title"; type: "QVariant" } + Parameter { name: "component"; type: "QVariant" } + } + Method { + name: "removeTab" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveTab" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getTab" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__willRemoveIndex" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__didInsertIndex" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "__setOpacities"; type: "QVariant" } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TableView 1.0" + exports: ["QtQuick.Controls/TableView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__columns" + Property { name: "model"; type: "QVariant" } + Property { name: "rowCount"; type: "int"; isReadonly: true } + Property { name: "currentRow"; type: "int" } + Property { + name: "selection" + type: "TableViewSelection_QMLTYPE_415" + isReadonly: true + isPointer: true + } + Signal { + name: "activated" + Parameter { name: "row"; type: "int" } + } + Signal { + name: "clicked" + Parameter { name: "row"; type: "int" } + } + Signal { + name: "doubleClicked" + Parameter { name: "row"; type: "int" } + } + Signal { + name: "pressAndHold" + Parameter { name: "row"; type: "int" } + } + Method { + name: "positionViewAtRow" + type: "QVariant" + Parameter { name: "row"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { + name: "rowAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Property { name: "alternatingRowColors"; type: "bool" } + Property { name: "headerVisible"; type: "bool" } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "sortIndicatorColumn"; type: "int" } + Property { name: "sortIndicatorVisible"; type: "bool" } + Property { name: "sortIndicatorOrder"; type: "int" } + Property { name: "selectionMode"; type: "int" } + Property { name: "__viewTypeName"; type: "string" } + Property { name: "__isTreeView"; type: "bool"; isReadonly: true } + Property { name: "__itemDelegateLoader"; type: "QQmlComponent"; isPointer: true } + Property { name: "__model"; type: "QVariant" } + Property { name: "__activateItemOnSingleClick"; type: "bool" } + Property { name: "__mouseArea"; type: "QQuickItem"; isPointer: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "contentHeader"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentFooter"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "__columns"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__currentRowItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__currentRow"; type: "int" } + Property { name: "__listView"; type: "QQuickListView"; isReadonly: true; isPointer: true } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "removeColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveColumn" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "resizeColumnsToContents"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_62"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_95" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QObject" + name: "QtQuick.Controls/TableViewColumn 1.0" + exports: ["QtQuick.Controls/TableViewColumn 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "__view"; type: "QQuickItem"; isPointer: true } + Property { name: "__index"; type: "int" } + Property { name: "title"; type: "string" } + Property { name: "role"; type: "string" } + Property { name: "width"; type: "int" } + Property { name: "visible"; type: "bool" } + Property { name: "resizable"; type: "bool" } + Property { name: "movable"; type: "bool" } + Property { name: "elideMode"; type: "int" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Method { name: "resizeToContents"; type: "QVariant" } + } + Component { + prototype: "QQuickTextArea" + name: "QtQuick.Controls/TextArea 2.0" + exports: ["QtQuick.Controls/TextArea 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextArea 1.5" + exports: ["QtQuick.Controls/TextArea 1.5"] + exportMetaObjectRevisions: [5] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "tabChangesFocus"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "textFormat"; type: "int" } + Property { name: "wrapMode"; type: "int" } + Property { name: "selectByKeyboard"; type: "bool" } + Property { name: "hoveredLink"; type: "string"; isReadonly: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "textMargin"; type: "double" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "textDocument"; type: "QQuickTextDocument"; isReadonly: true; isPointer: true } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished" } + Method { + name: "append" + type: "QVariant" + Parameter { name: "string"; type: "QVariant" } + } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getFormattedText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "moveCursorSelection" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { + name: "positionAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_62"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_95" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextArea 1.3" + exports: ["QtQuick.Controls/TextArea 1.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "tabChangesFocus"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "textFormat"; type: "int" } + Property { name: "wrapMode"; type: "int" } + Property { name: "selectByKeyboard"; type: "bool" } + Property { name: "hoveredLink"; type: "string"; isReadonly: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "textMargin"; type: "double" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "textDocument"; type: "QQuickTextDocument"; isReadonly: true; isPointer: true } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished" } + Method { + name: "append" + type: "QVariant" + Parameter { name: "string"; type: "QVariant" } + } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getFormattedText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "moveCursorSelection" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { + name: "positionAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_62"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_95" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextArea 1.0" + exports: ["QtQuick.Controls/TextArea 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "tabChangesFocus"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "textFormat"; type: "int" } + Property { name: "wrapMode"; type: "int" } + Property { name: "selectByKeyboard"; type: "bool" } + Property { name: "hoveredLink"; type: "string"; isReadonly: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "textMargin"; type: "double" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "textDocument"; type: "QQuickTextDocument"; isReadonly: true; isPointer: true } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished" } + Method { + name: "append" + type: "QVariant" + Parameter { name: "string"; type: "QVariant" } + } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getFormattedText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "moveCursorSelection" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { + name: "positionAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_62"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_95" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextField 1.0" + exports: ["QtQuick.Controls/TextField 1.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "displayText"; type: "string"; isReadonly: true } + Property { name: "echoMode"; type: "int" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMask"; type: "string" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "maximumLength"; type: "int" } + Property { name: "placeholderText"; type: "string" } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "__contentHeight"; type: "double"; isReadonly: true } + Property { name: "__contentWidth"; type: "double"; isReadonly: true } + Property { name: "__baselineOffset"; type: "double" } + Signal { name: "accepted" } + Signal { name: "editingFinished" } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { prototype: "QQuickTextField" name: "QtQuick.Controls/TextField 2.0" exports: ["QtQuick.Controls/TextField 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" } Component { prototype: "QQuickText" name: "QtQuick.Extras.Private/TextSingleton 1.0" exports: ["QtQuick.Extras.Private/TextSingleton 1.0"] exportMetaObjectRevisions: [0] isComposite: true isCreatable: false isSingleton: true defaultProperty: "data" } + Component { + prototype: "QQuickText" + name: "TextSingleton 1.0" + exports: ["TextSingleton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + isCreatable: false + isSingleton: true + defaultProperty: "data" + } Component { prototype: "QObject" - name: "org.kde.kirigami/Theme 2.0" - exports: ["org.kde.kirigami/Theme 2.0"] + name: "Theme 2.0" + exports: ["Theme 2.0"] exportMetaObjectRevisions: [0] isComposite: true isCreatable: false + isSingleton: true Property { name: "textColor"; type: "QColor" } Property { name: "disabledTextColor"; type: "QColor" } Property { name: "highlightColor"; type: "QColor" } Property { name: "highlightedTextColor"; type: "QColor" } Property { name: "backgroundColor"; type: "QColor" } + Property { name: "activeTextColor"; type: "QColor" } Property { name: "linkColor"; type: "QColor" } Property { name: "visitedLinkColor"; type: "QColor" } + Property { name: "hoverColor"; type: "QColor" } + Property { name: "focusColor"; type: "QColor" } + Property { name: "negativeTextColor"; type: "QColor" } + Property { name: "neutralTextColor"; type: "QColor" } + Property { name: "positiveTextColor"; type: "QColor" } Property { name: "buttonTextColor"; type: "QColor" } Property { name: "buttonBackgroundColor"; type: "QColor" } Property { name: "buttonHoverColor"; type: "QColor" } Property { name: "buttonFocusColor"; type: "QColor" } Property { name: "viewTextColor"; type: "QColor" } Property { name: "viewBackgroundColor"; type: "QColor" } Property { name: "viewHoverColor"; type: "QColor" } Property { name: "viewFocusColor"; type: "QColor" } + Property { name: "selectionTextColor"; type: "QColor" } + Property { name: "selectionBackgroundColor"; type: "QColor" } + Property { name: "selectionHoverColor"; type: "QColor" } + Property { name: "selectionFocusColor"; type: "QColor" } + Property { name: "tooltipTextColor"; type: "QColor" } + Property { name: "tooltipBackgroundColor"; type: "QColor" } + Property { name: "tooltipHoverColor"; type: "QColor" } + Property { name: "tooltipFocusColor"; type: "QColor" } + Property { name: "complementaryTextColor"; type: "QColor" } + Property { name: "complementaryBackgroundColor"; type: "QColor" } + Property { name: "complementaryHoverColor"; type: "QColor" } + Property { name: "complementaryFocusColor"; type: "QColor" } Property { name: "defaultFont"; type: "QFont" } Property { name: "children"; type: "QObject"; isList: true; isReadonly: true } + Method { + name: "__propagateColorSet" + type: "QVariant" + Parameter { name: "object"; type: "QVariant" } + Parameter { name: "context"; type: "QVariant" } + } } Component { prototype: "QQuickFocusScope" name: "QtQuick.Extras/ToggleButton 1.0" exports: ["QtQuick.Extras/ToggleButton 1.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" Property { name: "isDefault"; type: "bool" } - Property { name: "menu"; type: "Menu_QMLTYPE_83"; isPointer: true } + Property { name: "menu"; type: "Menu_QMLTYPE_114"; isPointer: true } Property { name: "checkable"; type: "bool" } Property { name: "checked"; type: "bool" } Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } Property { name: "action"; type: "QQuickAction1"; isPointer: true } Property { name: "activeFocusOnPress"; type: "bool" } Property { name: "text"; type: "string" } Property { name: "tooltip"; type: "string" } Property { name: "iconSource"; type: "QUrl" } Property { name: "iconName"; type: "string" } Property { name: "__position"; type: "string" } Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } Property { name: "__action"; type: "QQuickAction1"; isPointer: true } Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } Property { name: "__behavior"; type: "QVariant" } Property { name: "__effectivePressed"; type: "bool" } Property { name: "pressed"; type: "bool"; isReadonly: true } Property { name: "hovered"; type: "bool"; isReadonly: true } Signal { name: "clicked" } Method { name: "accessiblePressAction"; type: "QVariant" } Property { name: "style"; type: "QQmlComponent"; isPointer: true } Property { name: "__style"; type: "QObject"; isPointer: true } Property { name: "__panel"; type: "QQuickItem"; isPointer: true } Property { name: "styleHints"; type: "QVariant" } Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { prototype: "QQuickToolBar" name: "QtQuick.Controls/ToolBar 2.0" exports: ["QtQuick.Controls/ToolBar 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "contentData" } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ToolBar 1.0" + exports: ["QtQuick.Controls/ToolBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__content" + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "__menu"; type: "QVariant" } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } Component { prototype: "QQuickItem" - name: "org.kde.kirigami/ToolBarApplicationHeader 2.0" - exports: ["org.kde.kirigami/ToolBarApplicationHeader 2.0"] + name: "ToolBarApplicationHeader 2.0" + exports: ["ToolBarApplicationHeader 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "contentItem" Property { name: "_internal"; type: "string" } Property { name: "headerStyle"; type: "int" } + Property { name: "backButtonEnabled"; type: "bool" } Property { name: "pageDelegate"; type: "QQmlComponent"; isPointer: true } Property { name: "minimumHeight"; type: "int" } Property { name: "preferredHeight"; type: "int" } Property { name: "maximumHeight"; type: "int" } Property { name: "paintedHeight"; type: "int"; isReadonly: true } Property { name: "__appWindow"; type: "QObject"; isPointer: true } Property { name: "background"; type: "QQuickItem"; isPointer: true } Property { name: "contentItem"; type: "QObject"; isList: true; isReadonly: true } } Component { prototype: "QQuickToolButton" name: "QtQuick.Controls/ToolButton 2.0" exports: ["QtQuick.Controls/ToolButton 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ToolButton 1.0" + exports: ["QtQuick.Controls/ToolButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_114"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction1"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } Component { prototype: "QQuickToolSeparator" name: "QtQuick.Controls/ToolSeparator 2.1" exports: ["QtQuick.Controls/ToolSeparator 2.1"] exportMetaObjectRevisions: [1] isComposite: true defaultProperty: "data" } Component { prototype: "QQuickToolTip" name: "QtQuick.Controls/ToolTip 2.0" exports: ["QtQuick.Controls/ToolTip 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "contentData" } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TreeView 1.4" + exports: ["QtQuick.Controls/TreeView 1.4"] + exportMetaObjectRevisions: [4] + isComposite: true + defaultProperty: "__columns" + Property { name: "model"; type: "QVariant" } + Property { name: "currentIndex"; type: "QVariant"; isReadonly: true } + Property { name: "selection"; type: "QItemSelectionModel"; isPointer: true } + Property { name: "rootIndex"; type: "QModelIndex" } + Signal { + name: "activated" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "clicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "doubleClicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "pressAndHold" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "expanded" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "collapsed" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "isExpanded" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "collapse" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "expand" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "indexAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Property { name: "alternatingRowColors"; type: "bool" } + Property { name: "headerVisible"; type: "bool" } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "sortIndicatorColumn"; type: "int" } + Property { name: "sortIndicatorVisible"; type: "bool" } + Property { name: "sortIndicatorOrder"; type: "int" } + Property { name: "selectionMode"; type: "int" } + Property { name: "__viewTypeName"; type: "string" } + Property { name: "__isTreeView"; type: "bool"; isReadonly: true } + Property { name: "__itemDelegateLoader"; type: "QQmlComponent"; isPointer: true } + Property { name: "__model"; type: "QVariant" } + Property { name: "__activateItemOnSingleClick"; type: "bool" } + Property { name: "__mouseArea"; type: "QQuickItem"; isPointer: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "contentHeader"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentFooter"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "__columns"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__currentRowItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__currentRow"; type: "int" } + Property { name: "__listView"; type: "QQuickListView"; isReadonly: true; isPointer: true } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "removeColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveColumn" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "resizeColumnsToContents"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_62"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_95" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TreeView 1.5" + exports: ["QtQuick.Controls/TreeView 1.5"] + exportMetaObjectRevisions: [5] + isComposite: true + defaultProperty: "__columns" + Property { name: "model"; type: "QVariant" } + Property { name: "currentIndex"; type: "QVariant"; isReadonly: true } + Property { name: "selection"; type: "QItemSelectionModel"; isPointer: true } + Property { name: "rootIndex"; type: "QModelIndex" } + Signal { + name: "activated" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "clicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "doubleClicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "pressAndHold" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "expanded" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "collapsed" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "isExpanded" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "collapse" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "expand" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "indexAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Property { name: "alternatingRowColors"; type: "bool" } + Property { name: "headerVisible"; type: "bool" } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "sortIndicatorColumn"; type: "int" } + Property { name: "sortIndicatorVisible"; type: "bool" } + Property { name: "sortIndicatorOrder"; type: "int" } + Property { name: "selectionMode"; type: "int" } + Property { name: "__viewTypeName"; type: "string" } + Property { name: "__isTreeView"; type: "bool"; isReadonly: true } + Property { name: "__itemDelegateLoader"; type: "QQmlComponent"; isPointer: true } + Property { name: "__model"; type: "QVariant" } + Property { name: "__activateItemOnSingleClick"; type: "bool" } + Property { name: "__mouseArea"; type: "QQuickItem"; isPointer: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "contentHeader"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentFooter"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "__columns"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__currentRowItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__currentRow"; type: "int" } + Property { name: "__listView"; type: "QQuickListView"; isReadonly: true; isPointer: true } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "removeColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveColumn" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "resizeColumnsToContents"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_62"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_95" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_91" + isReadonly: true + isPointer: true + } + } Component { prototype: "QQuickTumbler" name: "QtQuick.Controls/Tumbler 2.0" exports: ["QtQuick.Controls/Tumbler 2.0"] exportMetaObjectRevisions: [0] isComposite: true defaultProperty: "data" } Component { prototype: "QQuickFocusScope" name: "QtQuick.Extras/Tumbler 1.2" exports: ["QtQuick.Extras/Tumbler 1.2"] exportMetaObjectRevisions: [2] isComposite: true defaultProperty: "data" Property { name: "__highlightMoveDuration"; type: "int" } Property { name: "columnCount"; type: "int"; isReadonly: true } Property { name: "__columnRow"; type: "QQuickRow"; isReadonly: true; isPointer: true } Property { name: "__movementDelayTimer"; type: "QQmlTimer"; isReadonly: true; isPointer: true } Method { name: "__isValidColumnIndex" type: "QVariant" Parameter { name: "index"; type: "QVariant" } } Method { name: "__isValidColumnAndItemIndex" type: "QVariant" Parameter { name: "columnIndex"; type: "QVariant" } Parameter { name: "itemIndex"; type: "QVariant" } } Method { name: "currentIndexAt" type: "QVariant" Parameter { name: "columnIndex"; type: "QVariant" } } Method { name: "setCurrentIndexAt" type: "QVariant" Parameter { name: "columnIndex"; type: "QVariant" } Parameter { name: "itemIndex"; type: "QVariant" } Parameter { name: "interval"; type: "QVariant" } } Method { name: "getColumn" type: "QVariant" Parameter { name: "columnIndex"; type: "QVariant" } } Method { name: "addColumn" type: "QVariant" Parameter { name: "column"; type: "QVariant" } } Method { name: "insertColumn" type: "QVariant" Parameter { name: "index"; type: "QVariant" } Parameter { name: "column"; type: "QVariant" } } Method { name: "__viewAt" type: "QVariant" Parameter { name: "index"; type: "QVariant" } } Property { name: "style"; type: "QQmlComponent"; isPointer: true } Property { name: "__style"; type: "QObject"; isPointer: true } Property { name: "__panel"; type: "QQuickItem"; isPointer: true } Property { name: "styleHints"; type: "QVariant" } Property { name: "__styleData"; type: "QObject"; isPointer: true } } Component { prototype: "QObject" name: "QtQuick.Extras/TumblerColumn 1.2" exports: ["QtQuick.Extras/TumblerColumn 1.2"] exportMetaObjectRevisions: [2] isComposite: true Property { name: "__tumbler"; type: "QQuickItem"; isPointer: true } Property { name: "__index"; type: "int" } Property { name: "__currentIndex"; type: "int" } Property { name: "model"; type: "QVariant" } Property { name: "role"; type: "string" } Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } Property { name: "highlight"; type: "QQmlComponent"; isPointer: true } Property { name: "columnForeground"; type: "QQmlComponent"; isPointer: true } Property { name: "visible"; type: "bool" } Property { name: "activeFocus"; type: "bool"; isReadonly: true } Property { name: "width"; type: "double" } Property { name: "currentIndex"; type: "int"; isReadonly: true } } Component { prototype: "QObject" - name: "org.kde.kirigami/Units 2.0" - exports: ["org.kde.kirigami/Units 2.0"] + name: "Units 2.0" + exports: ["Units 2.0"] exportMetaObjectRevisions: [0] isComposite: true isCreatable: false isSingleton: true Property { name: "gridUnit"; type: "int" } Property { name: "iconSizes"; type: "QObject"; isPointer: true } Property { name: "smallSpacing"; type: "int" } Property { name: "largeSpacing"; type: "int" } Property { name: "devicePixelRatio"; type: "double" } Property { name: "longDuration"; type: "int" } Property { name: "shortDuration"; type: "int" } Property { name: "__styleItem"; type: "QObject"; isReadonly: true; isPointer: true } Property { name: "wheelScrollLines"; type: "int"; isReadonly: true } + Property { name: "toolTipDelay"; type: "int" } Property { name: "fontMetrics"; type: "QVariant" } } } diff --git a/src/controls/private/BannerGroup.qml b/src/controls/private/BannerGroup.qml new file mode 100644 index 00000000..6296af39 --- /dev/null +++ b/src/controls/private/BannerGroup.qml @@ -0,0 +1,28 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 + +QtObject { + property url imageSource + property string title + property int titleAlignment: Qt.AlignTop | Qt.AlignLeft + property string iconSource + property int fillMode: Image.PreserveAspectCrop +} diff --git a/src/controls/private/BannerImage.qml b/src/controls/private/BannerImage.qml new file mode 100644 index 00000000..05edaee1 --- /dev/null +++ b/src/controls/private/BannerImage.qml @@ -0,0 +1,110 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.2 +import QtGraphicalEffects 1.0 +import org.kde.kirigami 2.3 as Kirigami + +Image { + id: root + + /** + * title: string + * A title to be displayed on top of the image + */ + property alias title: heading.text + + /** + * icon: var + * An icon to be displayed alongside the title. + * It can be a QIcon, a fdo-compatible icon name, or any url understood by Image + */ + property alias titleIcon: headingIcon.source + + /** + * titleAlignment: Qt.Alignment + */ + property int titleAlignment: Qt.AlignTop | Qt.AlignLeft + + Layout.fillWidth: true + + Layout.preferredWidth: title.implicitWidth + Layout.preferredHeight: source != "" ? width/(sourceSize.width / sourceSize.height) : Layout.minimumHeight + Layout.minimumHeight: title.height > 0 ? title.height + Kirigami.Units.smallSpacing * 2 : 0 + + fillMode: Image.PreserveAspectFit + asynchronous: true + + LinearGradient { + anchors { + left: parent.left + right: parent.right + top: (root.titleAlignment & Qt.AlignTop) ? parent.top : undefined + bottom: (root.titleAlignment & Qt.AlignBottom) ? parent.bottom : undefined + } + visible: root.source != "" && root.title != "" && ((root.titleAlignment & Qt.AlignTop) || (root.titleAlignment & Qt.AlignBottom)) + height: title.height * 2 + start: Qt.point(0, 0) + end: Qt.point(0, height) + gradient: Gradient { + GradientStop { + position: (root.titleAlignment & Qt.AlignTop) ? 0.0 : 1.0 + color: Qt.rgba(0, 0, 0, 0.8) + } + GradientStop { + position: (root.titleAlignment & Qt.AlignTop) ? 1.0 : 0.0 + color: "transparent" + } + } + } + + RowLayout { + id: title + anchors { + left: root.titleAlignment & Qt.AlignLeft ? parent.left : undefined + top: root.titleAlignment & Qt.AlignTop ? parent.top : undefined + right: root.titleAlignment & Qt.AlignRight ? parent.right : undefined + bottom: root.titleAlignment & Qt.AlignBottom ? parent.bottom : undefined + horizontalCenter: root.titleAlignment & Qt.AlignHCenter ? parent.horizontalCenter : undefined + verticalCenter: root.titleAlignment & Qt.AlignVCenter ? parent.verticalCenter : undefined + + margins: headingIcon.valid ? Kirigami.Units.smallSpacing * 2 : Kirigami.Units.largeSpacing + } + width: Math.min(implicitWidth, parent.width) + Kirigami.Icon { + id: headingIcon + Layout.minimumWidth: Kirigami.Units.iconSizes.large + Layout.minimumHeight: width + visible: valid + isMask: false + //TODO: find a better way to control selective coloring on Android + enabled: !Kirigami.Settings.isMobile + } + Kirigami.Heading { + id: heading + Layout.fillWidth: true + visible: text.length > 0 + level: 1 + color: source != "" ? "white" : Kirigami.Theme.textColor + wrapMode: Text.NoWrap + elide: Text.ElideRight + } + } +} diff --git a/src/controls/private/RefreshableScrollView.qml b/src/controls/private/RefreshableScrollView.qml index 0bf6a954..243d0852 100644 --- a/src/controls/private/RefreshableScrollView.qml +++ b/src/controls/private/RefreshableScrollView.qml @@ -1,294 +1,287 @@ /* * Copyright 2015 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import QtQuick 2.5 import QtQuick.Window 2.2 import QtQuick.Controls 2.0 as QQC2 import QtGraphicalEffects 1.0 import QtQuick.Layouts 1.2 import org.kde.kirigami 2.2 import "../templates/private" as P /** * RefreshableScrollView is a scroll view for any Flickable that supports the * "scroll down to refresh" behavior, and also allows the contents of the * flickable to have more top margins in order to make possible to scroll down the list * to reach it with the thumb while using the phone with a single hand. * * Example usage: * * @code * import org.kde.kirigami 2.2 as Kirigami * [...] * * Kirigami.RefreshableScrollView { * id: view * supportsRefreshing: true * onRefreshingChanged: { * if (refreshing) { * myModel.refresh(); * } * } * ListView { * //NOTE: MyModel doesn't come from the components, * //it's purely an example on how it can be used together * //some application logic that can update the list model * //and signals when it's done. * model: MyModel { * onRefreshDone: view.refreshing = false; * } * delegate: BasicListItem {} * } * } * [...] * * @endcode * */ P.ScrollView { id: root /** * type: bool * If true the list is asking for refresh and will show a loading spinner. * it will automatically be set to true when the user pulls down enough the list. * This signals the application logic to start its refresh procedure. * The application itself will have to set back this property to false when done. */ property bool refreshing: false /** * type: bool * If true the list supports the "pull down to refresh" behavior. */ property bool supportsRefreshing: false /** * leftPadding: int * default contents padding at left */ property int leftPadding: Units.gridUnit /** * topPadding: int * default contents padding at top */ property int topPadding: Units.gridUnit /** * rightPadding: int * default contents padding at right */ property int rightPadding: Units.gridUnit /** * bottomPadding: int * default contents padding at bottom */ property int bottomPadding: Units.gridUnit /** * Set when this scrollview manages a whole page */ property Page page property Item _swipeFilter children: [ Item { id: busyIndicatorFrame z: 99 y: root.flickableItem.verticalLayoutDirection === ListView.BottomToTop ? -root.flickableItem.contentY+height : -root.flickableItem.contentY-height width: root.flickableItem.width height: busyIndicator.height + Units.gridUnit * 2 QQC2.BusyIndicator { id: busyIndicator anchors.centerIn: parent running: root.refreshing visible: root.refreshing //Android busywidget QQC seems to be broken at custom sizes } property int headerItemHeight: (root.flickableItem.headerItem ? (root.flickableItem.headerItem.maximumHeight ? root.flickableItem.headerItem.maximumHeight : root.flickableItem.headerItem.height) : 0) Rectangle { id: spinnerProgress anchors { fill: busyIndicator margins: Math.ceil(Units.smallSpacing/2) } radius: width visible: supportsRefreshing && !refreshing && progress > 0 color: "transparent" opacity: 0.8 border.color: Theme.backgroundColor border.width: Math.ceil(Units.smallSpacing/4) //also take into account the listview header height if present property real progress: supportsRefreshing && !refreshing ? ((parent.y - busyIndicatorFrame.headerItemHeight)/busyIndicatorFrame.height) : 0 } ConicalGradient { source: spinnerProgress visible: spinnerProgress.visible anchors.fill: spinnerProgress gradient: Gradient { GradientStop { position: 0.00; color: Theme.highlightColor } GradientStop { position: spinnerProgress.progress; color: Theme.highlightColor } GradientStop { position: spinnerProgress.progress + 0.01; color: "transparent" } GradientStop { position: 1.00; color: "transparent" } } } onYChanged: { //it's overshooting enough and not reachable: start countdown for reachability if (y - busyIndicatorFrame.headerItemHeight > root.topPadding + Units.gridUnit && !applicationWindow().reachableMode) { overshootResetTimer.running = true; //not reachable and not overshooting enough, stop reachability countdown } else if (typeof(applicationWindow) == "undefined" || !applicationWindow().reachableMode) { //it's important it doesn't restart overshootResetTimer.running = false; } if (!supportsRefreshing) { return; } //also take into account the listview header height if present if (!root.refreshing && y - busyIndicatorFrame.headerItemHeight > busyIndicatorFrame.height/2 + topPadding) { refreshTriggerTimer.running = true; } else { refreshTriggerTimer.running = false; } } Timer { id: refreshTriggerTimer interval: 500 onTriggered: { //also take into account the listview header height if present if (!root.refreshing && parent.y - busyIndicatorFrame.headerItemHeight > busyIndicatorFrame.height/2 + topPadding) { root.refreshing = true; } } } Connections { target: applicationWindow() onReachableModeChanged: { overshootResetTimer.running = applicationWindow().reachableMode; } } Timer { id: overshootResetTimer interval: applicationWindow().reachableMode ? 8000 : 2000 onTriggered: { //put it there because widescreen may have changed since timer start if (!Settings.isMobile || applicationWindow().wideScreen || root.flickableItem.verticalLayoutDirection === ListView.BottomToTop) { return; } applicationWindow().reachableMode = !applicationWindow().reachableMode; } } - Binding { - target: root.flickableItem - property: "topMargin" - value: !Settings.isMobile || applicationWindow().wideScreen - ? (root.refreshing ? busyIndicatorFrame.height : 0) - : Math.max(Math.max(root.topPadding - busyIndicatorFrame.headerItemHeight, 0) + (root.refreshing ? busyIndicatorFrame.height : 0), (applicationWindow().header ? applicationWindow().header.height : 0)) - } Binding { target: root.flickableItem property: "flickableDirection" value: Flickable.VerticalFlick } Binding { target: root.flickableItem property: "bottomMargin" value: root.page.bottomPadding } Binding { target: root.contentItem property: "width" value: root.flickableItem.width } } ] onHeightChanged: { if (!Window.window) { return; } var focusItem = Window.window.activeFocusItem; if (!focusItem) { return; } //NOTE: there is no function to know if an item is descended from another, //so we have to walk the parent hyerarchy by hand var isDescendent = false; var candidate = focusItem.parent; while (candidate) { if (candidate == root) { isDescendent = true; break; } candidate = candidate.parent; } if (!isDescendent) { return; } var cursorY = 0; if (focusItem.cursorPosition !== undefined) { cursorY = focusItem.positionToRectangle(focusItem.cursorPosition).y; } var pos = focusItem.mapToItem(root.contentItem, 0, cursorY); //focused item alreqady visible? add some margin for the space of the action buttons if (pos.y >= root.flickableItem.contentY && pos.y <= root.flickableItem.contentY + root.flickableItem.height - Units.gridUnit * 8) { return; } root.flickableItem.contentY = pos.y; } onLeftPaddingChanged: { //for gridviews do apply margins if (root.contentItem == root.flickableItem) { if (typeof root.flickableItem.cellWidth != "undefined") { flickableItem.anchors.leftMargin = leftPadding; flickableItem.anchors.rightMargin = rightPadding; } else { flickableItem.anchors.leftMargin = 0; flickableItem.anchors.rightMargin = 0; } flickableItem.anchors.rightMargin = 0; flickableItem.anchors.bottomMargin = 0; } else { flickableItem.anchors.leftMargin = leftPadding; flickableItem.anchors.topMargin = topPadding; flickableItem.anchors.rightMargin = rightPadding; flickableItem.anchors.bottomMargin = bottomPadding; } } } diff --git a/src/controls/templates/AbstractApplicationHeader.qml b/src/controls/templates/AbstractApplicationHeader.qml index 63fb071f..a876f0d2 100644 --- a/src/controls/templates/AbstractApplicationHeader.qml +++ b/src/controls/templates/AbstractApplicationHeader.qml @@ -1,192 +1,172 @@ /* * Copyright 2015 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import QtQuick 2.5 import QtQuick.Layouts 1.2 import "private" import org.kde.kirigami 2.2 /** * An item that can be used as a title for the application. * Scrolling the main page will make it taller or shorter (trough the point of going away) * It's a behavior similar to the typical mobile web browser adressbar * the minimum, preferred and maximum heights of the item can be controlled with * * minimumHeight: default is 0, i.e. hidden * * preferredHeight: default is Units.gridUnit * 1.6 * * preferredHeight: default is Units.gridUnit * 3 * * To achieve a titlebar that stays completely fixed just set the 3 sizes as the same * @inherit QtQuick.Item */ Item { id: root z: 90 property int minimumHeight: 0 property int preferredHeight: Units.gridUnit * 2 property int maximumHeight: Units.gridUnit * 3 default property alias contentItem: mainItem.data readonly property int paintedHeight: headerItem.y + headerItem.height - 1 LayoutMirroring.enabled: Qt.application.layoutDirection == Qt.RightToLeft LayoutMirroring.childrenInherit: true //FIXME: remove property QtObject __appWindow: applicationWindow(); anchors { left: parent.left right: parent.right } - height: { - if (!__appWindow.controlsVisible) { - return 1; - } else if (__appWindow.wideScreen || !Settings.isMobile) { - return preferredHeight; - } else { - return 1; - } - } + height: preferredHeight /** * background: Item * This property holds the background item. * Note: the background will be automatically sized as the whole control */ property Item background onBackgroundChanged: { background.z = -1; background.parent = headerItem; background.anchors.fill = headerItem; } - opacity: height > 0 && -translateTransform.y <= height ? 1 : 0 + opacity: height > 0 ? 1 : 0 Behavior on opacity { OpacityAnimator { duration: Units.longDuration easing.type: Easing.InOutQuad } } - transform: Translate { - id: translateTransform - y: { - if (__appWindow === undefined) { - return 0; - } - if (!__appWindow.controlsVisible) { - return -headerItem.height - Units.smallSpacing; - } else { - return 0; - } - } - Behavior on y { - NumberAnimation { - duration: Units.longDuration - easing.type: translateTransform.y < 0 ? Easing.OutQuad : Easing.InQuad - } + Behavior on height { + enabled: __appWindow.pageStack.currentItem && __appWindow.pageStack.currentItem.flickable && !__appWindow.pageStack.currentItem.flickable.moving + NumberAnimation { + duration: Units.longDuration + easing.type: Easing.InOutQuad } } + Connections { + target: __appWindow + onControlsVisibleChanged: root.height = __appWindow.controlsVisible ? root.preferredHeight : 0; + } + Item { id: headerItem + property real computedRootHeight: root.preferredHeight anchors { left: parent.left right: parent.right + bottom: parent.bottom } height: __appWindow.reachableMode && __appWindow.reachableModeEnabled ? root.maximumHeight : root.preferredHeight - function updatePageHeader() { - if (!__appWindow || !__appWindow.pageStack || !__appWindow.pageStack.currentItem || !__appWindow.pageStack.currentItem.header || !__appWindow.pageStack.currentItem.flickable) { - return; - } - - if (__appWindow.wideScreen || !Settings.isMobile) { - __appWindow.pageStack.currentItem.header.y = 0; - } else { - __appWindow.pageStack.currentItem.header.y = headerItem.height + headerItem.y -1; - } - } - onYChanged: updatePageHeader() - onHeightChanged: updatePageHeader() - Connections { id: headerSlideConnection target: __appWindow.pageStack.currentItem ? __appWindow.pageStack.currentItem.flickable : null property int oldContentY onContentYChanged: { - if (!__appWindow.pageStack.currentItem) { - return; - } - if (__appWindow.pageStack.currentItem.flickable.atYBeginning || + if (!Settings.isMobile || + !__appWindow.controlsVisible || + !__appWindow.pageStack.currentItem || + __appWindow.pageStack.currentItem.flickable.atYBeginning || __appWindow.pageStack.currentItem.flickable.atYEnd) { return; - } + //if moves but not dragging, just update oldContentY + } else if (!__appWindow.pageStack.currentItem.flickable.dragging) { + oldContentY = __appWindow.pageStack.currentItem.flickable.contentY; + return; + } + if (__appWindow.wideScreen || !Settings.isMobile) { - headerItem.y = 0; + root.height = root.preferredHeight; } else { - headerItem.y = Math.max(root.minimumHeight - root.preferredHeight, Math.min(0, headerItem.y + oldContentY - __appWindow.pageStack.currentItem.flickable.contentY)); - - oldContentY = __appWindow.pageStack.currentItem.flickable.contentY; + var oldHeight = root.height; + + root.height = Math.max(root.minimumHeight, + Math.min(root.preferredHeight, + root.height + oldContentY - __appWindow.pageStack.currentItem.flickable.contentY)); + + //if the height is changed, use that to simulate scroll + if (oldHeight != height) { + __appWindow.pageStack.currentItem.flickable.contentY = oldContentY; + } else { + oldContentY = __appWindow.pageStack.currentItem.flickable.contentY; + } } } onMovementEnded: { - if (headerItem.y > root.preferredHeight) { - //if don't change the position if more then preferredSize is shown - } else if (headerItem.y < -(root.preferredHeight - root.minimumHeight)/2 ) { - headerItem.y = root.minimumHeight - root.preferredHeight; + if (__appWindow.wideScreen || !Settings.isMobile) { + return; + } + if (root.height > (root.preferredHeight - root.minimumHeight)/2 ) { + root.height = root.preferredHeight; } else { - headerItem.y = 0; + root.height = root.minimumHeight; } } } Connections { target: __appWindow.pageStack onCurrentItemChanged: { if (!__appWindow.pageStack.currentItem) { return; } if (__appWindow.pageStack.currentItem.flickable) { headerSlideConnection.oldContentY = __appWindow.pageStack.currentItem.flickable.contentY; } else { headerSlideConnection.oldContentY = 0; } - headerItem.y = 0; - headerItem.updatePageHeader() + root.height = root.preferredHeight; } } Item { id: mainItem anchors { fill: parent } } - Behavior on y { - enabled: __appWindow.pageStack.currentItem && __appWindow.pageStack.currentItem.flickable && !__appWindow.pageStack.currentItem.flickable.moving - NumberAnimation { - duration: Units.longDuration - easing.type: Easing.InOutQuad - } - } } } diff --git a/src/controls/templates/AbstractCard.qml b/src/controls/templates/AbstractCard.qml new file mode 100644 index 00000000..2cc68e88 --- /dev/null +++ b/src/controls/templates/AbstractCard.qml @@ -0,0 +1,187 @@ +/* + * Copyright 2018 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * 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 Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.2 +import QtQuick.Templates 2.0 as T +import org.kde.kirigami 2.3 as Kirigami + +/** + * A AbstractCard is the base for cards. A Card is a visual object that serves + * as an entry point for more detailed information. An abstractCard is empty, + * providing just the look and the base properties and signals for an ItemDelegate. + * It can be filled with any custom layout of items, its content is organized + * in 3 properties: header, contentItem and footer. + * Use this only when you need particular custom contents, for a standard layout + * for cards, use the Card component. + * + * @see Card + * @inherits QtQuick.Templates.ItemDelegate + * @since 2.4 + */ +T.ItemDelegate { + id: root + + /** + * header: Item + * This item serves as header, it will be put either on top if headerOrientation + * is Qt.Vertical(default) or on the left if it's Qt.Horizontal + */ + property Item header + + /** + * headerOrientation: Qt.Orientation + * If Qt.Vertical the header will be positioned on top(default), + * if Qt.Horizontal will be positioned on the left (or right if an RTL layout is used) + */ + property int headerOrientation: Qt.Vertical + + /** + * footer: Item + * This item serves as footer, and it will be positioned at the bottom of the card. + */ + property Item footer + + /** + * showClickFeedback: bool + * if true, when clicking or tapping on the card area, the card will be colored + * to show a visual click feedback. + * Use this if you want to do an action in the onClicked signal handler of the card. + */ + property bool showClickFeedback: false + + Layout.fillWidth: true + + implicitWidth: internal.completed + ? (internal.listView ? internal.listView.width - internal.listView.spacing * 2 : + (internal.gridView ? Math.min(internal.gridView.cellWidth, internal.gridView.maximumColumnWidth) - Kirigami.Units.largeSpacing*2 : Math.max(background.implicitWidth, mainLayout.implicitWidth) + leftPadding + rightPadding)) + : 0 + + implicitHeight: internal.completed && internal.gridView + ? internal.gridView.cellHeight - Kirigami.Units.largeSpacing*2 + : mainLayout.implicitHeight + topPadding + bottomPadding + + x: internal.listView ? internal.listView.spacing : (internal.gridView ? internal.gridView.cellWidth - width: 0) + + //in grid views align the cells in the middle + anchors.left: internal.gridView !== null ? parent.left : undefined + anchors.leftMargin: internal.gridView === null || internal.gridView.width <= internal.gridView.maximumColumnWidth ? 0 : (index % 2 === 0 ? Math.max(0, internal.gridView.cellWidth - internal.gridView.maximumColumnWidth) : internal.gridView.cellWidth) + + hoverEnabled: !Kirigami.Settings.isMobile && showClickFeedback + //if it's in a CardLayout, try to expand horizontal cards to both columns + Layout.columnSpan: headerOrientation == Qt.Horizontal && parent.hasOwnProperty("columns") ? parent.columns : 1 + + Kirigami.Theme.inherit: false + Kirigami.Theme.colorSet: Kirigami.Theme.View + + topPadding: Kirigami.Units.largeSpacing + leftPadding: Kirigami.Units.largeSpacing + bottomPadding: Kirigami.Units.largeSpacing + rightPadding: Kirigami.Units.largeSpacing + + GridLayout { + id: mainLayout + rowSpacing: root.topPadding + columnSpacing: root.leftPadding + anchors { + top: parent.top + left: parent.left + right: parent.right + leftMargin: root.leftPadding + topMargin: root.topPadding + rightMargin: root.rightPadding + //never anchor bottom, to not have binding loops + } + columns: headerOrientation == Qt.Vertical ? 1 : 2 + function preferredHeight(item) { + if (!item) { + return 0; + } + if (item.Layout.preferredHeight > 0) { + return item.Layout.preferredHeight; + } + return item.implicitHeight + } + Item { + id: headerParent + Layout.fillWidth: true + Layout.fillHeight: root.headerOrientation == Qt.Horizontal + Layout.rowSpan: root.headerOrientation == Qt.Vertical ? 1 : 2 + Layout.preferredWidth: header ? header.implicitWidth : 0 + Layout.preferredHeight: root.headerOrientation == Qt.Vertical ? mainLayout.preferredHeight(header) : -1 + } + Item { + id: contentItemParent + Layout.fillWidth: true + Layout.preferredWidth: contentItem ? contentItem.implicitWidth : 0 + Layout.preferredHeight: mainLayout.preferredHeight(contentItem) + } + Item { + id: footerParent + Layout.fillWidth: true + Layout.preferredWidth: footer ? footer.implicitWidth : 0 + Layout.preferredHeight: mainLayout.preferredHeight(footer) + } + } + QtObject { + id: internal + property bool completed: false + property ListView listView + property GridView gridView + } +//BEGIN signal handlers + onContentItemChanged: { + if (!contentItem) { + return; + } + + contentItem.parent = contentItemParent; + contentItem.anchors.fill = contentItemParent; + } + onHeaderChanged: { + if (!header) { + return; + } + + header.parent = headerParent; + header.anchors.fill = headerParent; + } + onFooterChanged: { + if (!footer) { + return; + } + + //make the footer always looking it's at the bottom of the card + footer.parent = footerParent; + footer.anchors.left = footerParent.left; + footer.anchors.top = footerParent.top; + footer.anchors.right = footerParent.right; + footer.anchors.topMargin = Qt.binding(function() {return (root.height - root.bottomPadding - root.topPadding) - (footerParent.y + footerParent.height)}); + } + Component.onCompleted: { + internal.listView = ListView.view; + //only consider gridviews which are CardsGridView + if (GridView.view && GridView.view.hasOwnProperty("maximumColumnWidth")) { + internal.gridView = GridView.view; + } + internal.completed = true; + contentItemChanged(); + } +//END signal handlers +} diff --git a/src/controls/templates/private/ScrollView.qml b/src/controls/templates/private/ScrollView.qml index 3b69a625..75522fcd 100644 --- a/src/controls/templates/private/ScrollView.qml +++ b/src/controls/templates/private/ScrollView.qml @@ -1,192 +1,200 @@ /* * Copyright 2016 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import QtQuick 2.5 import QtQuick.Controls 2.0 import org.kde.kirigami 2.2 MouseArea { id: root default property Item contentItem property Flickable flickableItem //TODO: horizontalScrollBarPolicy is completely noop just for compatibility right now property int horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff property int verticalScrollBarPolicy: Qt.ScrollBarAsNeeded readonly property Item verticalScrollBar: flickableItem.ScrollBar.vertical ? flickableItem.ScrollBar.vertical : null onVerticalScrollBarPolicyChanged: { if (flickableItem.ScrollBar.vertical) { flickableItem.ScrollBar.vertical.visible = verticalScrollBarPolicy != Qt.ScrollBarAlwaysOff; } scrollBarCreationTimer.restart(); } onHorizontalScrollBarPolicyChanged: { if (flickableItem.ScrollBar.horizontal) { flickableItem.ScrollBar.horizontal.visible = horizontalScrollBarPolicy != Qt.ScrollBarAlwaysOff; } scrollBarCreationTimer.restart(); } drag.filterChildren: !Settings.isMobile onPressed: { + if (Settings.isMobile) { + return; + } mouse.accepted = false; flickableItem.interactive = true; } onReleased: { + if (Settings.isMobile) { + return; + } mouse.accepted = false; flickableItem.interactive = false; } onWheel: { - flickableItem.interactive = false; if (Settings.isMobile || flickableItem.contentHeight 0) { y = flickableItem.height; } else if (y < 0) { y = -flickableItem.height; } } var minYExtent = flickableItem.topMargin - flickableItem.originY; var maxYExtent = flickableItem.height - (flickableItem.contentHeight + flickableItem.bottomMargin + flickableItem.originY); flickableItem.contentY = Math.min(-maxYExtent, Math.max(-minYExtent, flickableItem.contentY - y)); //this is just for making the scrollbar appear flickableItem.flick(0, 0); flickableItem.cancelFlick(); } Connections { target: flickableItem + enabled: !Settings.isMobile onFlickEnded: flickableItem.interactive = false; onMovementEnded: flickableItem.interactive = false; } onContentItemChanged: { if (contentItem.hasOwnProperty("contentY")) { flickableItem = contentItem; if (typeof(flickableItem.keyNavigationEnabled) != "undefined") { flickableItem.keyNavigationEnabled = true; flickableItem.keyNavigationWraps = true; } contentItem.parent = flickableParent; } else { flickableItem = flickableComponent.createObject(flickableParent); contentItem.parent = flickableItem.contentItem; } //TODO: find a way to make flicking work on laptops with touch screen flickableItem.interactive = Settings.isMobile; flickableItem.anchors.fill = flickableParent; scrollBarCreationTimer.restart(); } Timer { id: scrollBarCreationTimer interval: 0 onTriggered: { //create or destroy the vertical scrollbar if ((!flickableItem.ScrollBar.vertical) && verticalScrollBarPolicy != Qt.ScrollBarAlwaysOff) { flickableItem.ScrollBar.vertical = verticalScrollComponent.createObject(root); } else if (flickableItem.ScrollBar.vertical && verticalScrollBarPolicy == Qt.ScrollBarAlwaysOff) { flickableItem.ScrollBar.vertical.destroy(); } //create or destroy the horizontal scrollbar if ((!flickableItem.ScrollBar.horizontal) && horizontalScrollBarPolicy != Qt.ScrollBarAlwaysOff) { flickableItem.ScrollBar.horizontal = horizontalScrollComponent.createObject(root); } else if (flickableItem.ScrollBar.horizontal && horizontalScrollBarPolicy == Qt.ScrollBarAlwaysOff) { flickableItem.ScrollBar.horizontal.destroy(); } } } MultiPointTouchArea { id: flickableParent anchors { fill: parent } clip: true mouseEnabled: false maximumTouchPoints: 1 property bool touchPressed: false onPressed: { touchPressed = true; flickableItem.interactive = true; } onReleased: touchPressed = false; onCanceled: touchPressed = false; } Component { id: flickableComponent Flickable { anchors { fill: parent } contentWidth: root.contentItem ? root.contentItem.width : 0 contentHeight: root.contentItem ? root.contentItem.height : 0 } } Component { id: verticalScrollComponent ScrollBar { z: flickableParent.z + 1 visible: root.contentItem.visible && size < 1 interactive: !Settings.isMobile //NOTE: use this instead of anchors as crashes on some Qt 5.8 checkouts height: parent.height - anchors.topMargin anchors { topMargin: parent.flickableItem.headerItem ? parent.flickableItem.headerItem.height : 0 right: parent.right top: parent.top } } } Component { id: horizontalScrollComponent ScrollBar { z: flickableParent.z + 1 visible: root.contentItem.visible && size < 1 interactive: !Settings.isMobile //NOTE: use this instead of anchors as crashes on some Qt 5.8 checkouts height: parent.height - anchors.topMargin anchors { left: parent.left right: parent.right bottom: parent.bottom } } } } diff --git a/src/kirigamiplugin.cpp b/src/kirigamiplugin.cpp index 4afa4534..d07cbb48 100644 --- a/src/kirigamiplugin.cpp +++ b/src/kirigamiplugin.cpp @@ -1,168 +1,175 @@ /* * Copyright 2009 by Alan Alpert * Copyright 2010 by Ménard Alexis * Copyright 2010 by Marco Martin * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * 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 Library General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "kirigamiplugin.h" #include "enums.h" #include "desktopicon.h" #include "settings.h" #include "formlayoutattached.h" #include "mnemonicattached.h" #include #include #include #include #include "libkirigami/platformtheme.h" static QString s_selectedStyle; //Q_INIT_RESOURCE(kirigami); #ifdef KIRIGAMI_BUILD_TYPE_STATIC #include #endif QUrl KirigamiPlugin::componentUrl(const QString &fileName) const { foreach (const QString &style, m_stylesFallbackChain) { const QString candidate = QStringLiteral("styles/") + style + QLatin1Char('/') + fileName; if (QFile::exists(resolveFilePath(candidate))) { #ifdef KIRIGAMI_BUILD_TYPE_STATIC return QUrl(QStringLiteral("qrc:/org/kde/kirigami/styles/") + style + QLatin1Char('/') + fileName); #else return QUrl(resolveFileUrl(candidate)); #endif } } #ifdef KIRIGAMI_BUILD_TYPE_STATIC return QUrl(QStringLiteral("qrc:/org/kde/kirigami/") + fileName); #else return QUrl(resolveFileUrl(fileName)); #endif } void KirigamiPlugin::registerTypes(const char *uri) { Q_ASSERT(uri == QLatin1String("org.kde.kirigami")); const QString style = QQuickStyle::name(); #if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) //org.kde.desktop.plasma is a couple of files that fall back to desktop by purpose if ((style.isEmpty() || style == QStringLiteral("org.kde.desktop.plasma")) && QFile::exists(resolveFilePath(QStringLiteral("/styles/org.kde.desktop")))) { m_stylesFallbackChain.prepend(QStringLiteral("org.kde.desktop")); } #elif defined(Q_OS_ANDROID) if (!m_stylesFallbackChain.contains(QStringLiteral("Material"))) { m_stylesFallbackChain.prepend(QStringLiteral("Material")); } #else // do we have an iOS specific style? if (!m_stylesFallbackChain.contains(QStringLiteral("Material"))) { m_stylesFallbackChain.prepend(QStringLiteral("Material")); } #endif if (!style.isEmpty() && QFile::exists(resolveFilePath(QStringLiteral("/styles/") + style)) && !m_stylesFallbackChain.contains(style)) { m_stylesFallbackChain.prepend(style); //if we have plasma deps installed, use them for extra integration if (style == QStringLiteral("org.kde.desktop") && QFile::exists(resolveFilePath(QStringLiteral("/styles/org.kde.desktop.plasma")))) { m_stylesFallbackChain.prepend("org.kde.desktop.plasma"); } } else { #if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) m_stylesFallbackChain.prepend(QStringLiteral("org.kde.desktop")); #endif } //At this point the fallback chain will be selected->org.kde.desktop->Fallback s_selectedStyle = m_stylesFallbackChain.first(); qmlRegisterSingletonType(uri, 2, 0, "Settings", [](QQmlEngine*, QJSEngine*) -> QObject* { Settings *settings = new Settings; settings->setStyle(s_selectedStyle); return settings; } ); qmlRegisterUncreatableType(uri, 2, 0, "ApplicationHeaderStyle", "Cannot create objects of type ApplicationHeaderStyle"); //old legacy retrocompatible Theme qmlRegisterSingletonType(componentUrl(QStringLiteral("Theme.qml")), uri, 2, 0, "Theme"); qmlRegisterSingletonType(componentUrl(QStringLiteral("Units.qml")), uri, 2, 0, "Units"); qmlRegisterType(componentUrl(QStringLiteral("Action.qml")), uri, 2, 0, "Action"); qmlRegisterType(componentUrl(QStringLiteral("AbstractApplicationHeader.qml")), uri, 2, 0, "AbstractApplicationHeader"); qmlRegisterType(componentUrl(QStringLiteral("AbstractApplicationWindow.qml")), uri, 2, 0, "AbstractApplicationWindow"); qmlRegisterType(componentUrl(QStringLiteral("AbstractListItem.qml")), uri, 2, 0, "AbstractListItem"); qmlRegisterType(componentUrl(QStringLiteral("ApplicationHeader.qml")), uri, 2, 0, "ApplicationHeader"); qmlRegisterType(componentUrl(QStringLiteral("ToolBarApplicationHeader.qml")), uri, 2, 0, "ToolBarApplicationHeader"); qmlRegisterType(componentUrl(QStringLiteral("ApplicationWindow.qml")), uri, 2, 0, "ApplicationWindow"); qmlRegisterType(componentUrl(QStringLiteral("BasicListItem.qml")), uri, 2, 0, "BasicListItem"); qmlRegisterType(componentUrl(QStringLiteral("OverlayDrawer.qml")), uri, 2, 0, "OverlayDrawer"); qmlRegisterType(componentUrl(QStringLiteral("ContextDrawer.qml")), uri, 2, 0, "ContextDrawer"); qmlRegisterType(componentUrl(QStringLiteral("GlobalDrawer.qml")), uri, 2, 0, "GlobalDrawer"); qmlRegisterType(componentUrl(QStringLiteral("Heading.qml")), uri, 2, 0, "Heading"); qmlRegisterType(componentUrl(QStringLiteral("Separator.qml")), uri, 2, 0, "Separator"); qmlRegisterType(componentUrl(QStringLiteral("PageRow.qml")), uri, 2, 0, "PageRow"); //The icon is "special: we have to use a wrapper class to QIcon on org.kde.desktops #if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) //we know that we want a different implementation with Material and Plasma styles if (s_selectedStyle == QStringLiteral("Material") || s_selectedStyle == QStringLiteral("Plasma")) { qmlRegisterType(componentUrl(QStringLiteral("Icon.qml")), uri, 2, 0, "Icon"); } else { qmlRegisterType(uri, 2, 0, "Icon"); } #else qmlRegisterType(componentUrl(QStringLiteral("Icon.qml")), uri, 2, 0, "Icon"); #endif qmlRegisterType(componentUrl(QStringLiteral("Label.qml")), uri, 2, 0, "Label"); //TODO: uncomment for 2.3 release //qmlRegisterTypeNotAvailable(uri, 2, 3, "Label", "Label type not supported anymore, use QtQuick.Controls.Label 2.0 instead"); qmlRegisterType(componentUrl(QStringLiteral("OverlaySheet.qml")), uri, 2, 0, "OverlaySheet"); qmlRegisterType(componentUrl(QStringLiteral("Page.qml")), uri, 2, 0, "Page"); qmlRegisterType(componentUrl(QStringLiteral("ScrollablePage.qml")), uri, 2, 0, "ScrollablePage"); qmlRegisterType(componentUrl(QStringLiteral("SplitDrawer.qml")), uri, 2, 0, "SplitDrawer"); qmlRegisterType(componentUrl(QStringLiteral("SwipeListItem.qml")), uri, 2, 0, "SwipeListItem"); //2.1 qmlRegisterType(componentUrl(QStringLiteral("AbstractItemViewHeader.qml")), uri, 2, 1, "AbstractItemViewHeader"); qmlRegisterType(componentUrl(QStringLiteral("ItemViewHeader.qml")), uri, 2, 1, "ItemViewHeader"); qmlRegisterType(componentUrl(QStringLiteral("AbstractApplicationItem.qml")), uri, 2, 1, "AbstractApplicationItem"); qmlRegisterType(componentUrl(QStringLiteral("ApplicationItem.qml")), uri, 2, 1, "ApplicationItem"); //2.2 //Theme changed from a singleton to an attached property qmlRegisterUncreatableType(uri, 2, 2, "Theme", "Cannot create objects of type Theme, use it as an attached poperty"); //2.3 qmlRegisterType(componentUrl(QStringLiteral("FormLayout.qml")), uri, 2, 3, "FormLayout"); qmlRegisterUncreatableType(uri, 2, 3, "FormData", "Cannot create objects of type FormData, use it as an attached poperty"); qmlRegisterUncreatableType(uri, 2, 3, "MnemonicData", "Cannot create objects of type MnemonicData, use it as an attached poperty"); + //2.4 + qmlRegisterType(componentUrl(QStringLiteral("AbstractCard.qml")), uri, 2, 4, "AbstractCard"); + qmlRegisterType(componentUrl(QStringLiteral("Card.qml")), uri, 2, 4, "Card"); + qmlRegisterType(componentUrl(QStringLiteral("CardsListView.qml")), uri, 2, 4, "CardsListView"); + qmlRegisterType(componentUrl(QStringLiteral("CardsGridView.qml")), uri, 2, 4, "CardsGridView"); + qmlRegisterType(componentUrl(QStringLiteral("CardsLayout.qml")), uri, 2, 4, "CardsLayout"); + qmlProtectModule(uri, 2); } #include "moc_kirigamiplugin.cpp" diff --git a/src/qmldir b/src/qmldir index f262452b..e2adb09f 100644 --- a/src/qmldir +++ b/src/qmldir @@ -1,39 +1,44 @@ module org.kde.kirigami classname KirigamiPlugin depends QtQuick.Controls 1.4 depends QtQuick.Controls.Private 1.0 depends QtQuick.Controls 2.0 depends QtGraphicalEffects 1.0 designersupported typeinfo plugins.qmltypes singleton Theme 2.2 Theme.qml OverlaySheet 2.0 OverlaySheet.qml ApplicationItem 2.1 ApplicationItem.qml AbstractApplicationWindow 2.0 AbstractApplicationWindow.qml FormLayout 2.3 FormLayout.qml GlobalDrawer 2.0 GlobalDrawer.qml BasicListItem 2.0 BasicListItem.qml AbstractItemViewHeader 2.1 AbstractItemViewHeader.qml Heading 2.0 Heading.qml Action 2.0 Action.qml Separator 2.0 Separator.qml ItemViewHeader 2.1 ItemViewHeader.qml SwipeListItem 2.0 SwipeListItem.qml AbstractListItem 2.0 AbstractListItem.qml Icon 2.0 Icon.qml Units 2.0 Units.qml Page 2.0 Page.qml Label 2.0 Label.qml AbstractApplicationItem 2.1 AbstractApplicationItem.qml ToolBarApplicationHeader 2.0 ToolBarApplicationHeader.qml ScrollablePage 2.0 ScrollablePage.qml ApplicationHeader 2.0 ApplicationHeader.qml AbstractApplicationHeader 2.0 AbstractApplicationHeader.qml ContextDrawer 2.0 ContextDrawer.qml ApplicationWindow 2.0 ApplicationWindow.qml PageRow 2.0 PageRow.qml +AbstractCard 2.4 AbstractCard.qml +Card 2.4 Card.qml +CardsLayout 2.4 CardsLayout.qml +CardsListView 2.4 CardsListView.qml +CardsGridView 2.4 CardsGridView.qml