Warning, /graphics/peruse/src/app/qml/viewers/folderofimages.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright (C) 2015 Dan Leinir Turthra Jensen <admin@leinir.dk> 0003 * 0004 * This library is free software; you can redistribute it and/or 0005 * modify it under the terms of the GNU Lesser General Public 0006 * License as published by the Free Software Foundation; either 0007 * version 2.1 of the License, or (at your option) version 3, or any 0008 * later version accepted by the membership of KDE e.V. (or its 0009 * successor approved by the membership of KDE e.V.), which shall 0010 * act as a proxy defined in Section 6 of version 3 of the license. 0011 * 0012 * This library is distributed in the hope that it will be useful, 0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0015 * Lesser General Public License for more details. 0016 * 0017 * You should have received a copy of the GNU Lesser General Public 0018 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 0019 * 0020 */ 0021 0022 import QtQuick 2.12 0023 0024 import org.kde.peruse 0.1 as Peruse 0025 /** 0026 * @brief a ViewerBase for books that are folders with images. 0027 * 0028 * It is called from Book when the opened book is one of the following files: 0029 * - inode/directory 0030 * - image/jpeg 0031 * - image/png 0032 */ 0033 ViewerBase { 0034 id: root; 0035 property string title: imageBrowser.model.title; 0036 pagesModel: imageBrowser.model; 0037 pageCount: imageBrowser.model.pageCount; 0038 onRtlModeChanged: { 0039 if(rtlMode === true) { 0040 imageBrowser.layoutDirection = Qt.RightToLeft; 0041 } 0042 else { 0043 imageBrowser.layoutDirection = Qt.LeftToRight; 0044 } 0045 } 0046 onRestoreCurrentPage: { 0047 // This is un-pretty, quite obviously. But thanks to the ListView's inability to 0048 // stay in place when the geometry changes, well, this makes things simple. 0049 imageBrowser.positionViewAtIndex(imageBrowser.currentIndex, ListView.Center); 0050 } 0051 0052 onCurrentPageChanged: { 0053 if(currentPage !== imageBrowser.currentIndex) { 0054 pageChangeAnimation.running = false; 0055 var currentPos = imageBrowser.contentX; 0056 var newPos; 0057 imageBrowser.positionViewAtIndex(currentPage, ListView.Center); 0058 imageBrowser.currentIndex = currentPage; 0059 newPos = imageBrowser.contentX; 0060 pageChangeAnimation.from = currentPos; 0061 pageChangeAnimation.to = newPos; 0062 pageChangeAnimation.running = true; 0063 } 0064 } 0065 NumberAnimation { id: pageChangeAnimation; target: imageBrowser; property: "contentX"; duration: applicationWindow().animationDuration; easing.type: Easing.InOutQuad; } 0066 0067 Timer { 0068 id: initialPageChange; 0069 interval: applicationWindow().animationDuration; 0070 running: false; 0071 repeat: false; 0072 onTriggered: root.currentPage = imageBrowser.model.currentPage; 0073 } 0074 ImageBrowser { 0075 id: imageBrowser; 0076 anchors.fill: parent; 0077 model: Peruse.FolderBookModel { 0078 filename: root.file; 0079 onLoadingCompleted: { 0080 root.loadingCompleted(success); 0081 initialPageChange.start(); 0082 } 0083 } 0084 onCurrentIndexChanged: { 0085 if(root.currentPage !== currentIndex) { 0086 root.currentPage = currentIndex; 0087 } 0088 } 0089 onGoNextPage: root.goNextPage(); 0090 onGoPreviousPage: root.goPreviousPage(); 0091 imageWidth: root.width; 0092 imageHeight: root.height; 0093 } 0094 }