Warning, /graphics/peruse/src/app/qml/WelcomePage.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Dan Leinir Turthra Jensen <admin@leinir.dk> 0003 * SPDX-FileCopyrightText: 2020 Carl Schwan <carl@carlschwan.eu> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 import QtQuick 2.12 0009 import QtQuick.Controls 2.12 as QtControls 0010 import QtQuick.Layouts 1.12 0011 0012 import org.kde.kirigami 2.12 as Kirigami 0013 0014 import org.kde.peruse 0.1 as Peruse 0015 import "listcomponents" as ListComponents 0016 0017 /** 0018 * @brief The page that Peruse opens up on. 0019 * 0020 * The WelcomePage shares some resemblance to the 0021 * BookShelf pages in that it allows the user to select a comic, 0022 * but where BookShelf pages are really for discovery and searching 0023 * through categories and subcategories, the WelcomePage is primarily 0024 * for selecting the recently opened and new books, which the user is most likely 0025 * to look at when they want to read. 0026 * 0027 * It uses BookTileTall to show the selectable books, SearchField to search books 0028 * and Section to indicate a subsection. 0029 */ 0030 Bookshelf { 0031 id: root; 0032 0033 property string categoryName: "welcomePage"; 0034 property bool isCurrentContext: isCurrentPage && !applicationWindow().bookOpen 0035 property real heightBook: Kirigami.Units.gridUnit * 8 0036 property bool isLoading: true; 0037 0038 function updateRecent() { 0039 root.updateRecentlyRead(); 0040 } 0041 0042 title: i18nc("title of the welcome page", "Welcome"); 0043 0044 Peruse.CategoryEntriesModel { 0045 id: recentBooksModel; 0046 } 0047 searchModel: contentList.newlyAddedCategoryModel 0048 model: root.isLoading ? null : (recentBooksModel.count > 0 ? recentBooksModel : contentList.newlyAddedCategoryModel) 0049 function updateRecentlyRead() { 0050 root.isLoading = true; 0051 recentBooksModel.clear(); 0052 for(var i = 0; i < peruseConfig.recentlyOpened.length; ++i) { 0053 recentBooksModel.appendFakeBook(contentList.bookFromFile(peruseConfig.recentlyOpened[i]), Peruse.CategoryEntriesModel.UnknownRole); 0054 } 0055 root.isLoading = false; 0056 } 0057 Connections { 0058 target: peruseConfig; 0059 function onRecentlyOpenedChanged() { updateRecentlyReadTimer.start(); } 0060 property Timer updateRecentlyReadTimer: Timer { 0061 interval: 500 0062 running: false 0063 repeat: false 0064 onTriggered: { root.updateRecentlyRead(); } 0065 } 0066 } 0067 Connections { 0068 target: applicationWindow(); 0069 function onIsLoadingChanged() { 0070 if(applicationWindow().isLoading === false) { 0071 root.updateRecentlyRead(); 0072 } 0073 } 0074 } 0075 0076 pageHeader: Kirigami.Heading { 0077 leftPadding: Kirigami.Units.gridUnit 0078 rightPadding: Kirigami.Units.gridUnit 0079 topPadding: Kirigami.Units.gridUnit 0080 0081 level: 2 0082 0083 text: if (recentBooksModel.count > 0) { 0084 return i18nc("title of list of recently opened books", "Continue Reading"); 0085 } else { 0086 return i18nc("title of list of recently discovered books", "Recently Added"); 0087 } 0088 } 0089 }