Warning, /maui/pix/src/widgets/views/CollectionView.qml is written in an unsupported language. File is not indexed.

0001 // Copyright 2018-2020 Camilo Higuita <milo.h@aol.com>
0002 // Copyright 2018-2020 Nitrux Latinoamericana S.C.
0003 //
0004 // SPDX-License-Identifier: GPL-3.0-or-later
0005 
0006 
0007 /***
0008 Pix  Copyright (C) 2018  Camilo Higuita
0009 This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
0010 This is free software, and you are welcome to redistribute it
0011 under certain conditions; type `show c' for details.
0012 
0013  This program is free software: you can redistribute it and/or modify
0014 it under the terms of the GNU General Public License as published by
0015 the Free Software Foundation, either version 3 of the License, or
0016 (at your option) any later version.
0017 
0018 This program is distributed in the hope that it will be useful,
0019 but WITHOUT ANY WARRANTY; without even the implied warranty of
0020 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0021 GNU General Public License for more details.
0022 
0023 You should have received a copy of the GNU General Public License
0024 along with this program.  If not, see <http://www.gnu.org/licenses/>.
0025 ***/
0026 
0027 import QtQuick 2.14
0028 import QtQuick.Controls 2.14
0029 import QtQuick.Layouts 1.15
0030 
0031 import QtQuick.Window 2.13
0032 import Qt.labs.settings 1.0
0033 
0034 import org.mauikit.controls 1.3 as Maui
0035 import org.mauikit.filebrowsing 1.3 as FB
0036 import org.mauikit.imagetools 1.3 as IT
0037 import org.maui.pix 1.0 as Pix
0038 
0039 import "Folders"
0040 import "Gallery"
0041 import "Tags"
0042 import ".."
0043 
0044 Maui.SideBarView
0045 {
0046     id: control
0047 
0048     readonly property var mainGalleryList : Pix.Collection.allImagesModel
0049     property alias selectionBox : _selectionBar
0050     property alias currentFolder :_foldersView.currentFolder
0051 
0052     Binding
0053     {
0054         target: Pix.Collection.allImagesModel
0055         property: "autoReload"
0056         value: browserSettings.autoReload
0057         delayed: true
0058     }
0059 
0060     Binding
0061     {
0062         target: Pix.Collection.allImagesModel
0063         property: "activeGeolocationTags"
0064         value: browserSettings.gpsTags
0065         delayed: true
0066     }
0067 
0068     sideBar.resizeable: false
0069     sideBar.preferredWidth: 200
0070     sideBar.content: Sidebar
0071     {
0072         anchors.fill: parent
0073     }
0074 
0075     Maui.Page
0076     {
0077         id: swipeView
0078         anchors.fill: parent
0079 
0080         altHeader: Maui.Handy.isMobile
0081         floatingFooter: true
0082         flickable: _foldersView.currentItem.flickable
0083         showCSDControls: true
0084         headBar.forceCenterMiddleContent: false
0085         headBar.middleContent: Loader
0086         {
0087             Layout.fillWidth: true
0088             Layout.maximumWidth: 500
0089             Layout.alignment: Qt.AlignCenter
0090             sourceComponent: _foldersView.currentItem && _foldersView.currentItem.hasOwnProperty("searchFieldComponent") ? _foldersView.currentItem.searchFieldComponent : null
0091         }
0092 
0093         headBar.leftContent: [
0094             ToolButton
0095             {
0096                 visible: control.sideBar.collapsed
0097 
0098                 icon.name: sideBar.visible ? "sidebar-collapse" : "sidebar-expand"
0099                 onClicked: sideBar.toggle()
0100                 checked: sideBar.visible
0101                 ToolTip.delay: 1000
0102                 ToolTip.timeout: 5000
0103                 ToolTip.visible: hovered
0104                 ToolTip.text: i18n("Toggle sidebar")
0105             },
0106 
0107             ToolButton
0108             {
0109                 icon.name: _foldersView.depth === 1 && _pixViewer.viewer.count > 0 ? "quickview" : "go-previous"
0110                 visible: _foldersView.depth > 1 || _pixViewer.viewer.count > 0
0111                 onClicked:
0112                 {
0113                     if(_foldersView.depth > 1)
0114                     {
0115                         _foldersView.pop()
0116                         return;
0117                     }
0118 
0119                     if( _pixViewer.viewer.count > 0)
0120                     {
0121                         toggleViewer()
0122                         return;
0123                     }
0124 
0125                 }
0126             }
0127         ]
0128 
0129         headBar.rightContent: Loader
0130         {
0131             asynchronous: true
0132             sourceComponent: Maui.ToolButtonMenu
0133             {
0134                 icon.name: "overflow-menu"
0135 
0136                 MenuItem
0137                 {
0138                     text: i18n("Open")
0139                     icon.name: "folder-open"
0140                     onTriggered: openFileDialog()
0141                 }
0142 
0143                 MenuSeparator {}
0144 
0145                 MenuItem
0146                 {
0147                     text: i18n("Settings")
0148                     icon.name: "settings-configure"
0149                     onTriggered: openSettingsDialog()
0150                 }
0151 
0152                 MenuItem
0153                 {
0154                     text: i18n("About")
0155                     icon.name: "documentinfo"
0156                     onTriggered: root.about()
0157                 }
0158             }
0159         }
0160 
0161         FoldersView
0162         {
0163             id: _foldersView
0164             anchors.fill: parent
0165         }
0166 
0167         property string pendingFolder : initModule === "folder" ? initData[0] : ""
0168 
0169         footer: SelectionBar
0170         {
0171             id: _selectionBar
0172             anchors.horizontalCenter: parent.horizontalCenter
0173             width: Math.min(parent.width-(Maui.Style.space.medium*2), implicitWidth)
0174 
0175             maxListHeight: swipeView.height - Maui.Style.space.medium
0176             display: ToolButton.IconOnly
0177         }
0178     }
0179 
0180     function openFolder(url, filters)
0181     {
0182         _foldersView.openFolder(url, filters)
0183     }
0184 
0185     function filterSelection(url)
0186     {
0187         if(selectionBox.contains(url))
0188         {
0189             return selectionBox.uris
0190         }else
0191         {
0192             return [url]
0193         }
0194     }
0195 
0196     function selectItem(item)
0197     {
0198         if(selectionBox.contains(item.url))
0199         {
0200             selectionBox.removeAtUri(item.url)
0201             return
0202         }
0203 
0204         selectionBox.append(item.url, item)
0205     }
0206 }