summaryrefslogtreecommitdiffstats
path: root/qt-mobile/qml/mobilecomponents/IconGrid.qml
diff options
context:
space:
mode:
Diffstat (limited to 'qt-mobile/qml/mobilecomponents/IconGrid.qml')
-rw-r--r--qt-mobile/qml/mobilecomponents/IconGrid.qml238
1 files changed, 0 insertions, 238 deletions
diff --git a/qt-mobile/qml/mobilecomponents/IconGrid.qml b/qt-mobile/qml/mobilecomponents/IconGrid.qml
deleted file mode 100644
index 1a6acbc1d..000000000
--- a/qt-mobile/qml/mobilecomponents/IconGrid.qml
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- Copyright 2010 Marco Martin <notmart@gmail.com>
-
- This library 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 of the License, or (at your option) any later version.
-
- This library 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 library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-import QtQuick 2.1
-import org.kde.plasma.core 2.0 as PlasmaCore
-import org.kde.plasma.mobilecomponents 0.2
-import org.kde.plasma.mobilecomponents.private 0.2
-
-Item {
- id: main
-
- property Component delegate
- property QtObject model
-
- property int pageSize: Math.floor(iconView.width / main.delegateWidth) * Math.floor(iconView.height / main.delegateHeight)
- property int delegateWidth: Units.iconSizes.huge + Units.gridUnit * 2
- property int delegateHeight: Units.iconSizes.huge + Units.gridUnit * 2
- property alias currentPage: iconView.currentIndex
- property int pagesCount: Math.ceil(model.count / pageSize)
- property int count: model.count
- property alias contentX: iconView.contentX
- clip: true
-
- function positionViewAtIndex(index)
- {
- iconView.positionViewAtIndex(index / pageSize, ListView.Beginning)
- }
-
- Timer {
- id: resizeTimer
- running: true
- interval: 100
- onTriggered: {
- main.pageSize = Math.floor(iconView.width / main.delegateWidth) * Math.floor(iconView.height / main.delegateHeight)
- if (iconView.currentItem) {
- iconView.currentItem.width = iconView.width
- iconView.currentItem.height = iconView.height
- }
- }
- }
-
- ListView {
- id: iconView
- objectName: "iconView"
- pressDelay: 200
- cacheBuffer: Units.gridUnit * 8
- highlightMoveDuration: Units.shortDuration
- anchors.fill: parent
- onWidthChanged: resizeTimer.restart()
- onHeightChanged: resizeTimer.restart()
-
- model: main.model ? Math.ceil(main.model.count/main.pageSize) : 0
- highlightRangeMode: ListView.StrictlyEnforceRange
- orientation: ListView.Horizontal
- snapMode: ListView.SnapOneItem
- boundsBehavior: Flickable.DragOverBounds
-
- signal clicked(string url)
-
- delegate: Component {
- Item {
- id: delegatePage
- //Explicitly *not* bind the properties for performance reasons
- Component.onCompleted: {
- width = iconView.width
- height = iconView.height
- //iconView.cacheBuffer = iconView.width
- }
-
- Flow {
- id: iconFlow
- width: iconRepeater.suggestedWidth
-
- anchors {
- horizontalCenter: parent.horizontalCenter
- top: parent.top
- bottom: parent.bottom
- }
- property int orientation: ListView.Horizontal
-
- PagedProxyModel {
- id: pagedProxyModel
- sourceModel: main.model
- currentPage: model.index
- pageSize: main.pageSize
- }
- Repeater {
- id: iconRepeater
- model: pagedProxyModel
- property int columns: Math.min(count, Math.floor(delegatePage.width / main.delegateWidth))
- property int suggestedWidth: main.delegateWidth * columns
- //property int suggestedHeight: main.delegateHeight*Math.floor(count/columns)
-
- delegate: main.delegate
- }
- }
- }
- }
- }
-
-
- Loader {
- id: scrollArea
- visible: main.model && Math.ceil(main.model.count/main.pageSize) > 1
- anchors {
- left: parent.left
- right: parent.right
- bottom: parent.bottom
- }
- height: Math.max(16, iconView.height - Math.floor(iconView.height / delegateHeight) * delegateHeight)
-
- property int pageCount: main.model ? Math.ceil(main.model.count/main.pageSize) : 0
-
- sourceComponent: pageCount > 1 ? ((pageCount * 20 > width) ? scrollDotComponent : dotsRow) : undefined
- function setViewIndex(index)
- {
- //animate only if near
- if (Math.abs(iconView.currentIndex - index) > 1) {
- iconView.positionViewAtIndex(index, ListView.Beginning)
- } else {
- iconView.currentIndex = index
- }
- }
- Component {
- id: scrollDotComponent
- MouseArea {
- anchors.fill: parent
- property int pendingIndex: 0
- Rectangle {
- id: barRectangle
- color: Theme.textColor
- height: 4
- radius: 2
- anchors {
- left: parent.left
- right: parent.right
- verticalCenter: parent.verticalCenter
- leftMargin: (parent.width / pageCount / 2)
- rightMargin: (parent.width / pageCount / 2)
- }
- }
- Rectangle {
- color: Theme.textColor
- height: 8
- width: height
- radius: 4
- anchors.verticalCenter: parent.verticalCenter
- x: parent.width / (pageCount / (iconView.currentIndex+1)) - (parent.width / pageCount / 2) - 4
- Behavior on x {
- NumberAnimation {
- duration: Units.shortDuration
- easing.type: Easing.InOutQuad
- }
- }
- }
- function setViewIndexFromMouse(x)
- {
- pendingIndex = Math.min(pageCount,
- Math.round(pageCount / (barRectangle.width / Math.max(x - barRectangle.x, 1))))
- viewPositionTimer.restart()
- }
- onPressed: setViewIndexFromMouse(mouse.x)
- onPositionChanged: setViewIndexFromMouse(mouse.x)
-
- Timer {
- id: viewPositionTimer
- interval: 200
- onTriggered: setViewIndex(pendingIndex)
- }
- }
- }
- Component {
- id: dotsRow
-
- Item {
- Row {
- anchors.centerIn: parent
- spacing: units.gridUnit
-
- Repeater {
- model: scrollArea.pageCount
-
-
- Rectangle {
- width: 6
- height: 6
- scale: iconView.currentIndex == index ? 1.5 : 1
- radius: 5
- smooth: true
- opacity: iconView.currentIndex == index ? 0.8: 0.4
- color: Theme.textColor
-
- Behavior on scale {
- NumberAnimation {
- duration: units.shortDuration
- easing.type: Easing.InOutQuad
- }
- }
- Behavior on opacity {
- NumberAnimation {
- duration: units.shortDuration
- easing.type: Easing.InOutQuad
- }
- }
-
- MouseArea {
- anchors {
- fill: parent
- margins: Units.gridUnit / 2
- }
-
- onClicked: {
- setViewIndex(index)
- }
- }
- }
- }
- }
- }
- }
- }
-}