Warning, /maui/mauikit-documents/src/controls.5/poppler/PDFViewer.qml is written in an unsupported language. File is not indexed.

0001 import QtQuick 2.14
0002 import QtQuick.Controls 2.14
0003 import QtQuick.Layouts 1.12
0004  import QtQuick.Window 2.15
0005 
0006 import org.mauikit.controls 1.3 as Maui
0007 import org.mauikit.documents 1.0 as Poppler
0008 
0009 Maui.Page
0010 {
0011     id: control
0012 
0013     property bool fitWidth: false
0014     property int currentPage : _listView.currentIndex
0015     property alias currentItem :_listView.currentItem
0016     property alias orientation : _listView.orientation
0017     property alias path : poppler.path
0018 
0019     headBar.visible: false
0020     footBar.visible: !Maui.Handy.isMobile && poppler.pages > 1
0021     title:  poppler.title
0022     padding: 0
0023 
0024     Maui.InputDialog
0025     {
0026         id: _passwordDialog
0027 
0028         title: i18n("Document Locked")
0029         message: i18n("Please enter your password to unlock and open the file.")
0030         textEntry.echoMode: TextInput.Password
0031         onFinished: poppler.unlock(text, text)
0032     }
0033 
0034     footBar.middleContent: Maui.ToolActions
0035     {
0036         Layout.alignment: Qt.AlignCenter
0037         expanded: true
0038         autoExclusive: false
0039         checkable: false
0040 
0041         Action
0042         {
0043             enabled: _listView.currentIndex > 0
0044             icon.name:  _listView.orientation === ListView.Horizontal ? "go-previous" : "go-up"
0045             onTriggered:
0046             {
0047                 if( _listView.currentIndex > 0)
0048                     _listView.currentIndex = _listView.currentIndex - 1
0049             }
0050         }
0051 
0052         Action
0053         {
0054             text:  _listView.currentIndex + 1 +" / "+ poppler.pages
0055         }
0056 
0057         Action
0058         {
0059             enabled: _listView.currentIndex +1 < poppler.pages
0060             icon.name:  _listView.orientation === ListView.Horizontal ? "go-next" : "go-down"
0061             onTriggered:
0062             {
0063                 if( _listView.currentIndex +1 < poppler.pages)
0064                     _listView.currentIndex = _listView.currentIndex + 1
0065             }
0066         }
0067     }
0068 
0069     Maui.ListBrowser
0070     {
0071         id: _listView
0072         anchors.fill: parent
0073         model: Poppler.Document
0074         {
0075             id: poppler
0076 
0077             property bool isLoading: true
0078 
0079             onPagesLoaded:
0080             {
0081                 isLoading = false;
0082             }
0083 
0084             onDocumentLocked: _passwordDialog.open()
0085         }
0086 
0087         orientation: ListView.Vertical
0088         snapMode: ListView.SnapOneItem
0089         //        cacheBuffer: control.fitWidth ? poppler.providersNumber *  : height * poppler.providersNumber
0090 
0091         flickable.onMovementEnded:
0092         {
0093             var index = indexAt(_listView.contentX, _listView.contentY)
0094             currentIndex = index
0095         }
0096 
0097         delegate: Maui.ImageViewer
0098         {
0099             id: pageImg
0100             asynchronous: true
0101             width: ListView.view.width
0102             height: ListView.view.height
0103 
0104             cache: false
0105             //                source: "image://poppler" + (index % poppler.providersNumber) + "/page/" + _listView.currentPage;
0106             //                source: "image://poppler" + (index % poppler.providersNumber) + "/page/" + index;
0107             source: "image://" + poppler.id + (index % poppler.providersNumber) + "/page/" + index
0108             //                                source: "image://poppler/page/" + _listView.currentPage;
0109             sourceSize.width: model.width
0110             sourceSize.height: model.height
0111             //                    sourceSize.height: 2000
0112             //                    imageWidth: 1000
0113             //                    imageHeight: 1000
0114             fillMode: Image.PreserveAspectFit
0115 
0116             //                onSourceChanged: console.log(source)
0117         }
0118     }
0119 
0120     Maui.Holder
0121     {
0122         visible: !poppler.isValid
0123         anchors.fill: parent
0124         emoji: poppler.isLocked ? "qrc:/img_assets/assets/lock.svg" : "qrc:/img_assets/assets/alarm.svg"
0125         title: poppler.isLocked ? i18n("Locked") : i18n("Error")
0126         body: poppler.isLocked ? i18n("This document is password protected.") : i18n("There has been an error loading this document.")
0127 
0128         actions: Action
0129         {
0130             enabled: poppler.isLocked
0131             text: i18n("UnLock")
0132             onTriggered: _passwordDialog.open()
0133         }
0134     }
0135 
0136     function open(filePath)
0137     {
0138         poppler.path = filePath
0139     }
0140 }