Warning, /graphics/kphotoalbum/AndroidRemoteControl/qml/ThumbnailsPage.qml is written in an unsupported language. File is not indexed.

0001 /* SPDX-FileCopyrightText: 2014 Jesper K. Pedersen <blackie@kde.org>
0002 
0003    SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 import QtQuick 2.0
0007 import KPhotoAlbum 1.0
0008 import QtQuick.Controls 1.1
0009 
0010 PinchArea {
0011     id: root
0012     property alias model : grid.model
0013     property int type
0014     property bool showLabels : false
0015     property alias name : observer.objectName
0016     readonly property int itemsPerPage : Math.floor(root.width/grid.cellWidth) * Math.floor(root.height/grid.cellHeight)
0017     signal clicked(int imageId, string label)
0018 
0019     pinch.minimumScale: 0.1
0020     pinch.maximumScale: 10
0021     onPinchUpdated: grid.scale = pinch.scale
0022     onPinchFinished: {
0023         if ( type == Enums.CategoryItems )
0024             _settings.categoryItemSize = pinch.scale * _settings.categoryItemSize
0025         else
0026             _settings.thumbnailSize = pinch.scale * _settings.thumbnailSize
0027         grid.scale = 1
0028     }
0029 
0030     Keys.onMenuPressed: menu.popup()
0031     Keys.onTabPressed: menu.popup() /* on desktop */
0032     Keys.onEscapePressed: menu.visible = false
0033 
0034     GridView {
0035         id: grid
0036         anchors.fill: parent
0037         transformOrigin: Qt.TopLeftCorner
0038 
0039         cellWidth: imageWidth() + padding()
0040         cellHeight: imageWidth() + padding() + (root.showLabels ? 30 : 0)
0041 
0042         delegate: Item {
0043             Column {
0044                 x: (padding() + grid.cellWidth - width)/2
0045                 y: grid.cellHeight - height
0046 
0047                 RemoteImage {
0048                     id: remoteImage
0049                     imageId: model.imageId
0050                     type: root.type
0051 
0052                     width: imageWidth()
0053                     height: width
0054                     MouseArea {
0055                         anchors.fill: parent
0056                         onClicked: root.clicked(parent.imageId,parent.label)
0057                         onPressAndHold: menu.popup()
0058                     }
0059                 }
0060                 Text {
0061                     visible: root.showLabels
0062                     color: _settings.textColor
0063                     anchors { left: parent.left; right: parent.right; margins: padding()/2 }
0064                     text: remoteImage.label
0065                     elide: Text.ElideRight
0066                     verticalAlignment: Text.AlignTop
0067                 }
0068             }
0069         }
0070     }
0071     ScrollBar {
0072         flickable: grid
0073     }
0074 
0075     Menu {
0076         id: menu
0077         title: "Context Menu"
0078         MenuItem {
0079             text: "Refine search"
0080             onTriggered: _remoteInterface.showOverviewPage()
0081         }
0082         MenuItem {
0083             text: "Go Home"
0084             onTriggered: _remoteInterface.goHome()
0085         }
0086     }
0087 
0088     PositionObserver {
0089         id: observer
0090         view: grid
0091     }
0092 
0093     function imageWidth() {
0094         return type == Enums.CategoryItems ? _settings.categoryItemSize : _settings.thumbnailSize;
0095     }
0096     function padding() {
0097         return 20 // imageWidth()/8 - rhk would like us to try not to scale the space.
0098     }
0099 }