From 3ff93a570e1096b97de30689470970de3c99b06d Mon Sep 17 00:00:00 2001 From: luisangelsm Date: Fri, 13 Feb 2026 12:37:33 +0100 Subject: [PATCH] Use only the qt6 versions of the qml implementations --- YACReaderLibrary/YACReaderLibrary.pro | 6 +- YACReaderLibrary/qml.qrc | 10 +- YACReaderLibrary/qml/FlowView.qml | 48 +- YACReaderLibrary/qml/FlowView6.qml | 227 ----- YACReaderLibrary/qml/FolderContentView.qml | 45 +- YACReaderLibrary/qml/FolderContentView6.qml | 490 ----------- YACReaderLibrary/qml/GridComicsView.qml | 110 +-- YACReaderLibrary/qml/GridComicsView6.qml | 924 -------------------- YACReaderLibrary/qml/InfoComicsView.qml | 6 +- YACReaderLibrary/qml/InfoComicsView6.qml | 131 --- YACReaderLibrary/qml/InfoFavorites.qml | 11 +- YACReaderLibrary/qml/InfoFavorites6.qml | 27 - YACReaderLibrary/qml/InfoRating.qml | 11 +- YACReaderLibrary/qml/InfoRating6.qml | 43 - YACReaderLibrary/qml/InfoTick.qml | 11 +- YACReaderLibrary/qml/InfoTick6.qml | 23 - YACReaderLibrary/qml6.qrc | 28 - 17 files changed, 143 insertions(+), 2008 deletions(-) delete mode 100644 YACReaderLibrary/qml/FlowView6.qml delete mode 100644 YACReaderLibrary/qml/FolderContentView6.qml delete mode 100644 YACReaderLibrary/qml/GridComicsView6.qml delete mode 100644 YACReaderLibrary/qml/InfoComicsView6.qml delete mode 100644 YACReaderLibrary/qml/InfoFavorites6.qml delete mode 100644 YACReaderLibrary/qml/InfoRating6.qml delete mode 100644 YACReaderLibrary/qml/InfoTick6.qml delete mode 100644 YACReaderLibrary/qml6.qrc diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index c1a88482..ce7e7878 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -314,11 +314,7 @@ HEADERS += grid_comics_view.h \ SOURCES += grid_comics_view.cpp \ comics_view_transition.cpp -greaterThan(QT_MAJOR_VERSION, 5) { - RESOURCES += qml6.qrc -} else { - RESOURCES += qml.qrc -} +RESOURCES += qml.qrc win32:RESOURCES += qml_win.qrc unix:!macx:RESOURCES += qml_win.qrc macx:RESOURCES += qml_osx.qrc diff --git a/YACReaderLibrary/qml.qrc b/YACReaderLibrary/qml.qrc index c5f21e93..29badf8e 100644 --- a/YACReaderLibrary/qml.qrc +++ b/YACReaderLibrary/qml.qrc @@ -2,12 +2,15 @@ qml/GridComicsView.qml qml/FolderContentView.qml + qml/FlowView.qml + qml/InfoTick.qml + qml/InfoFavorites.qml + qml/InfoRating.qml + qml/InfoComicsView.qml qml/tick.png qml/reading.png qml/star_menu.png qml/star_menu@2x.png - qml/InfoComicsView.qml - qml/FlowView.qml qml/info-indicator.png qml/info-shadow.png qml/info-indicator-light.png @@ -20,9 +23,6 @@ qml/info-rating.svg qml/info-tag.svg qml/info-tick.svg - qml/InfoTick.qml - qml/InfoFavorites.qml - qml/InfoRating.qml qml/prerendered_cover_shadow.png diff --git a/YACReaderLibrary/qml/FlowView.qml b/YACReaderLibrary/qml/FlowView.qml index 1953054a..75da010a 100644 --- a/YACReaderLibrary/qml/FlowView.qml +++ b/YACReaderLibrary/qml/FlowView.qml @@ -1,7 +1,8 @@ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick -import QtGraphicalEffects 1.0 +import QtQuick.Controls + +import QtQuick.Effects import com.yacreader.ComicModel 1.0 @@ -38,14 +39,16 @@ Rectangle { mipmap: true asynchronous : true cache: false //TODO clear cache only when it is needed - opacity: 0 + layer.enabled: true visible: false } - FastBlur { + MultiEffect { anchors.fill: backgroundImg source: backgroundImg - radius: backgroundBlurRadius + blurEnabled: true + blur: 1.0 + blurMax: 64 opacity: backgroundBlurOpacity visible: backgroundBlurVisible } @@ -112,26 +115,32 @@ Rectangle { color:"transparent" + scale: mouseArea.containsMouse ? 1.025 : 1 + + Behavior on scale { + NumberAnimation { duration: 90 } + } + BusyIndicator { scale: 0.5 anchors.centerIn: parent running: coverElement.status === Image.Loading } - BorderImage { - anchors { - top: coverElement.top - left: coverElement.left - right: coverElement.right - bottom: coverElement.bottom - margins: -6 + BorderImage { + anchors { + top: coverElement.top + left: coverElement.left + right: coverElement.right + bottom: coverElement.bottom + margins: -6 + } + border { left: 10; top: 10; right: 10; bottom: 10 } + horizontalTileMode: BorderImage.Stretch + verticalTileMode: BorderImage.Stretch + source: "prerendered_cover_shadow.png" + visible: showDropShadow } - border { left: 10; top: 10; right: 10; bottom: 10 } - horizontalTileMode: BorderImage.Stretch - verticalTileMode: BorderImage.Stretch - source: "prerendered_cover_shadow.png" - visible: showDropShadow - } Image { id: coverElement @@ -144,6 +153,7 @@ Rectangle { cache: false } + //mark Image { id: mark diff --git a/YACReaderLibrary/qml/FlowView6.qml b/YACReaderLibrary/qml/FlowView6.qml deleted file mode 100644 index 75da010a..00000000 --- a/YACReaderLibrary/qml/FlowView6.qml +++ /dev/null @@ -1,227 +0,0 @@ -import QtQuick - -import QtQuick.Controls - -import QtQuick.Effects - -import com.yacreader.ComicModel 1.0 - -Rectangle { - id: mainFlowContainer - - property url backgroundImageURL; - - property real backgroundBlurRadius : 100; //85; - property real backgroundBlurOpacity : 0.25; //0.35; - property bool backgroundBlurVisible : true; - - property real additionalBottomSpace : 0; - - property real verticalPadding: 12 - - property real itemsSpacing: 17 - - signal currentCoverChanged(int index) - - Rectangle { - id: background - color: "#2A2A2A" - anchors.fill: backgroundImg - } - - Image { - id: backgroundImg - width: parent.width - height: parent.height + additionalBottomSpace - source: backgroundImage - fillMode: Image.PreserveAspectCrop - smooth: true - mipmap: true - asynchronous : true - cache: false //TODO clear cache only when it is needed - layer.enabled: true - visible: false - } - - MultiEffect { - anchors.fill: backgroundImg - source: backgroundImg - blurEnabled: true - blur: 1.0 - blurMax: 64 - opacity: backgroundBlurOpacity - visible: backgroundBlurVisible - } - - anchors.margins: 0 - - MouseArea { - anchors.fill : list - onWheel: wheel => { - - if(list.moving) - return; - - var ci - if(wheel.angleDelta.y < 0) { - ci = Math.min(list.currentIndex+1, list.count - 1); - } - else if(wheel.angleDelta.y > 0) { - ci = Math.max(0,list.currentIndex-1); - } else { - return; - } - - list.currentIndex = ci; - } - } - - ListView { - id: list - objectName: "list" - anchors.fill: parent - - property int previousIndex; - - orientation: Qt.Horizontal - pixelAligned: true - - model: comicsList - - spacing: itemsSpacing - anchors.leftMargin: Math.floor(verticalPadding * 1.1) - - snapMode: ListView.SnapToItem - - highlightFollowsCurrentItem: true - highlightRangeMode: ListView.StrictlyEnforceRange - preferredHighlightEnd: 50 - - highlightMoveDuration: 250 - - onCurrentIndexChanged: currentIndex => { - if (list.currentIndex !== -1) { - mainFlowContainer.currentCoverChanged(list.currentIndex); - } - } - - delegate: Component { - - //cover - Rectangle { - width: Math.floor((list.height - (verticalPadding * 2)) * 0.65); - height: list.height - (verticalPadding * 2); - anchors.verticalCenter: parent.verticalCenter - - color:"transparent" - - scale: mouseArea.containsMouse ? 1.025 : 1 - - Behavior on scale { - NumberAnimation { duration: 90 } - } - - BusyIndicator { - scale: 0.5 - anchors.centerIn: parent - running: coverElement.status === Image.Loading - } - - BorderImage { - anchors { - top: coverElement.top - left: coverElement.left - right: coverElement.right - bottom: coverElement.bottom - margins: -6 - } - border { left: 10; top: 10; right: 10; bottom: 10 } - horizontalTileMode: BorderImage.Stretch - verticalTileMode: BorderImage.Stretch - source: "prerendered_cover_shadow.png" - visible: showDropShadow - } - - Image { - id: coverElement - anchors.fill: parent - source: cover_path - fillMode: Image.PreserveAspectCrop - smooth: true - mipmap: true - asynchronous : true - cache: false - } - - - //mark - Image { - id: mark - width: 23 - height: 23 - source: read_column&&show_marks?"tick.png":has_been_opened&&show_marks?"reading.png":"" - anchors {right: coverElement.right; top: coverElement.top; topMargin: 9; rightMargin: 9} - asynchronous : true - } - - //border - Rectangle { - width: coverElement.width - height: coverElement.height - anchors.centerIn: coverElement - color: "transparent" - border { - color: "#30FFFFFF" - width: 1 - } - } - - MouseArea { - id: mouseArea - anchors.fill: parent - acceptedButtons: Qt.LeftButton | Qt.RightButton - - hoverEnabled: true - - onDoubleClicked: { - list.currentIndex = index; - currentIndexHelper.selectedItem(index); - } - - onReleased: mouse => { - list.currentIndex = index; - - if(mouse.button === Qt.RightButton) // context menu is requested - { - var coordinates = mainFlowContainer.mapFromItem(coverElement,mouseX,mouseY) - contextMenuHelper.requestedContextMenu(Qt.point(coordinates.x,coordinates.y)); - } - - mouse.accepted = true; - } - } - } - } - - focus: true - Keys.onPressed: event => { - - if (event.modifiers & Qt.ControlModifier || event.modifiers & Qt.ShiftModifier) - return; - var ci - if (event.key === Qt.Key_Right || event.key === Qt.Key_Down) { - ci = Math.min(list.currentIndex+1, list.count - 1); - } - else if (event.key === Qt.Key_Left || event.key === Qt.Key_Up) { - ci = Math.max(0,list.currentIndex-1); - } else { - return; - } - - list.currentIndex = ci; - - event.accepted = true; - } - - } -} diff --git a/YACReaderLibrary/qml/FolderContentView.qml b/YACReaderLibrary/qml/FolderContentView.qml index d49d42d1..015eeb14 100644 --- a/YACReaderLibrary/qml/FolderContentView.qml +++ b/YACReaderLibrary/qml/FolderContentView.qml @@ -1,15 +1,17 @@ -import QtQuick 2.15 +import QtQuick -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.12 +import QtQuick.Controls +import QtQuick.Layouts -import QtGraphicalEffects 1.0 +import QtQuick.Effects import com.yacreader.ComicModel 1.0 import com.yacreader.ComicInfo 1.0 import com.yacreader.ComicDB 1.0 +import QtQuick.Controls.Basic + Rectangle { id: main @@ -117,18 +119,31 @@ Rectangle { mipmap: true asynchronous : true cache: true + visible: false + } + Item { + id: coverMask + anchors.fill: parent layer.enabled: true - layer.effect: OpacityMask { + layer.smooth: true + visible: false + + Rectangle { anchors.fill: parent - cached: true - maskSource: Rectangle { - width: coverElement.width - height: coverElement.height - radius: 10 - } + radius: 10 + color: "black" } } + + MultiEffect { + source: coverImage + anchors.fill: coverImage + maskEnabled: true + maskSource: coverMask + maskThresholdMin: 0.5 + maskSpreadAtMin: 1.0 + } } //is new @@ -403,6 +418,14 @@ Rectangle { } } + onOriginYChanged: { + console.log(" origin changed ", grid.originY) + } + + onContentYChanged: { + console.log(" content y changed ", grid.contentY) + } + ScrollBar.vertical: ScrollBar { visible: grid.contentHeight > grid.height diff --git a/YACReaderLibrary/qml/FolderContentView6.qml b/YACReaderLibrary/qml/FolderContentView6.qml deleted file mode 100644 index 015eeb14..00000000 --- a/YACReaderLibrary/qml/FolderContentView6.qml +++ /dev/null @@ -1,490 +0,0 @@ -import QtQuick - -import QtQuick.Controls -import QtQuick.Layouts - -import QtQuick.Effects - -import com.yacreader.ComicModel 1.0 - -import com.yacreader.ComicInfo 1.0 -import com.yacreader.ComicDB 1.0 - -import QtQuick.Controls.Basic - -Rectangle { - id: main - - property int continuReadingHeight: 430; - property int topContentMargin: 20; - - color: backgroundColor - anchors.margins: 0 - - Component { - id: appDelegate - Rectangle - { - id: cell - width: grid.cellWidth - height: grid.cellHeight - color: "#00000000" - - scale: mouseArea.containsMouse ? 1.025 : 1 - - Behavior on scale { - NumberAnimation { duration: 90 } - } - - Rectangle { - id: realCell - - property int position : 0 - - width: itemWidth - height: itemHeight - - color: "transparent" - anchors.horizontalCenter: parent.horizontalCenter - - MouseArea { - id: mouseArea - - anchors.fill: parent - acceptedButtons: Qt.LeftButton | Qt.RightButton - - hoverEnabled: true - - onDoubleClicked: { - openHelper.openFolder(index); - } - - onPressed: mouse => { - var ci = grid.currentIndex; //save current index - - mouse.accepted = true; - - if(mouse.button === Qt.RightButton) // context menu is requested - { - var coordinates = main.mapFromItem(realCell,mouseX,mouseY) - contextMenuHelper.requestedFolderContextMenu(Qt.point(coordinates.x,coordinates.y), index); - mouse.accepted = false; - - } - } - - } - } - - /**/ - - Rectangle { - transform: Rotation { origin.x: coverWidth / 2; origin.y: coverHeight / 2; angle: -4} - width: coverElement.width - height: coverElement.height - radius: 10 - anchors {horizontalCenter: parent.horizontalCenter; top: realCell.top; topMargin: 0} - color: "#20000000" - border { - color: "#20FFFFFF" - width: 1 - } - } - - Rectangle { - transform: Rotation { origin.x: coverWidth / 2; origin.y: coverHeight / 2; angle: 3} - width: coverElement.width - height: coverElement.height - radius: 10 - anchors {horizontalCenter: parent.horizontalCenter; top: realCell.top; topMargin: 0} - color: "#88000000" - border { - color: "#20FFFFFF" - width: 1 - } - } - - Item { - width: coverWidth - height: coverHeight - anchors {horizontalCenter: parent.horizontalCenter; top: realCell.top; topMargin: 0} - id: coverElement - - Image { - id: coverImage - anchors.fill: parent - source: cover_path - fillMode: Image.PreserveAspectCrop - smooth: true - mipmap: true - asynchronous : true - cache: true - visible: false - } - - Item { - id: coverMask - anchors.fill: parent - layer.enabled: true - layer.smooth: true - visible: false - - Rectangle { - anchors.fill: parent - radius: 10 - color: "black" - } - } - - MultiEffect { - source: coverImage - anchors.fill: coverImage - maskEnabled: true - maskSource: coverMask - maskThresholdMin: 0.5 - maskSpreadAtMin: 1.0 - } - } - - //is new - Rectangle { - width: 10 - height: 10 - radius: 5 - anchors { left: coverElement.left; top: coverElement.top; topMargin: 10; leftMargin: 10; } - color: "#FFFFCC00" - visible: (((new Date() / 1000) - added) < recent_range || ((new Date() / 1000) - updated) < recent_range) && show_recent - } - - //border - Rectangle { - width: coverElement.width - height: coverElement.height - radius: 10 - anchors {horizontalCenter: parent.horizontalCenter; top: realCell.top; topMargin: 0} - color: "transparent" - border { - color: "#20FFFFFF" - width: 1 - } - } - - //folder name - Text { - id : titleText - anchors { top: coverElement.bottom; left: realCell.left; leftMargin: 4; rightMargin: 4; topMargin: 10; } - width: itemWidth - 8 - maximumLineCount: 2 - wrapMode: Text.WordWrap - text: name - elide: Text.ElideRight - color: titleColor - font.letterSpacing: fontSpacing - font.pointSize: fontSize - font.family: fontFamily - } - } - } - - Rectangle { - id: scrollView - objectName: "topScrollView" - anchors.fill: parent - anchors.margins: 0 - children: grid - - color: "transparent" - - function scrollToOrigin() { - grid.contentY = grid.originY - grid.contentX = grid.originX - } - - property Component continueReadingView: Component { - id: continueReadingView - Rectangle { - id: continueReadingTopView - color: "#00000000" - - height: list.count > 0 && showContinueReading ? main.continuReadingHeight : main.topContentMargin - - Rectangle { - color: continueReadingBackgroundColor - - id: continueReadingBackground - - width: main.width - height: main.continuReadingHeight - main.topContentMargin - - visible: list.count > 0 && showContinueReading - - Text { - id: continueReadingText - text: qsTr("Continue Reading...") - color: continueReadingColor - anchors.left: parent.left - anchors.top: parent.top - anchors.topMargin: 15 - anchors.bottomMargin: 20 - anchors.leftMargin: 25 - anchors.rightMargin: 0 - font.pointSize: 18 - font.weight: Font.DemiBold - } - - ListView { - id: list - objectName: "list" - anchors { top: continueReadingText.bottom; left: parent.left; right: parent.right; bottom: parent.bottom; } - - property int previousIndex; - property int verticalPadding: 20 - - orientation: Qt.Horizontal - pixelAligned: true - - model: comicsList - - spacing: 20 - anchors.topMargin: 15 - anchors.bottomMargin: 20 - anchors.leftMargin: 25 - anchors.rightMargin: 20 - - WheelHandler { - onWheel: event => { - if (list.contentWidth <= list.width) { - return; - } - - var newValue = Math.min(list.contentWidth - list.width - anchors.leftMargin, (Math.max(list.originX , list.contentX - event.angleDelta.y))); - list.contentX = newValue - } - } - - delegate: Component { - - //cover - Rectangle { - width: Math.floor((list.height - (list.verticalPadding * 2)) * 0.65); - height: list.height - (list.verticalPadding * 2); - - color:"transparent" - - scale: mouseArea.containsMouse ? 1.025 : 1 - - Behavior on scale { - NumberAnimation { duration: 90 } - } - - Image { - id: coverElement - anchors.fill: parent - source: cover_path - fillMode: Image.PreserveAspectCrop - smooth: true - mipmap: true - asynchronous : true - cache: true - } - - //title - Text { - id : comicTitleText - anchors { top: coverElement.bottom; left: coverElement.left; right: coverElement.right; leftMargin: 4; rightMargin: 4; topMargin: 4; } - width: itemWidth - 8 - maximumLineCount: 2 - wrapMode: Text.WordWrap - text: readable_title - elide: Text.ElideRight - color: titleColor - font.letterSpacing: fontSpacing - font.pointSize: fontSize - font.family: fontFamily - } - - //border - Rectangle { - width: coverElement.width - height: coverElement.height - anchors.centerIn: coverElement - color: "transparent" - border { - color: "#30FFFFFF" - width: 1 - } - } - - MouseArea { - id: mouseArea - anchors.fill: parent - acceptedButtons: Qt.LeftButton | Qt.RightButton - - hoverEnabled: true - - onDoubleClicked: { - list.currentIndex = index; - openHelper.openComicFromContinueReadingList(index); - } - - onReleased: mouse => { - list.currentIndex = index; - - if(mouse.button === Qt.RightButton) // context menu is requested - { - var coordinates = main.mapFromItem(coverElement,mouseX,mouseY) - contextMenuHelper.requestedContinueReadingComicContextMenu(Qt.point(coordinates.x,coordinates.y), index); - } - - mouse.accepted = true; - } - } - } - } - - focus: true - } - } - } - } - - GridView { - id:grid - objectName: "grid" - anchors.fill: parent - cellHeight: cellCustomHeight - header: continueReadingView - focus: true - model: foldersList - delegate: appDelegate - anchors.topMargin: 0 - anchors.bottomMargin: 10 - anchors.leftMargin: 0 - anchors.rightMargin: 0 - pixelAligned: true - highlightFollowsCurrentItem: true - - currentIndex: 0 - cacheBuffer: 0 - - interactive: true - - move: Transition { - NumberAnimation { properties: "x,y"; duration: 250 } - } - - moveDisplaced: Transition { - NumberAnimation { properties: "x,y"; duration: 250 } - } - - remove: Transition { - ParallelAnimation { - NumberAnimation { property: "opacity"; to: 0; duration: 250 } - - } - } - - removeDisplaced: Transition { - NumberAnimation { properties: "x,y"; duration: 250 } - } - - displaced: Transition { - NumberAnimation { properties: "x,y"; duration: 250 } - } - - function numCellsPerRow() { - return Math.floor(width / cellCustomWidth); - } - - onWidthChanged: { - calculateCellWidths(cellCustomWidth); - } - - function calculateCellWidths(cWidth) { - var wholeCells = Math.floor(width / cWidth); - var rest = width - (cWidth * wholeCells) - - grid.cellWidth = cWidth + Math.floor(rest / wholeCells); - } - - WheelHandler { - onWheel: event => { - if (grid.contentHeight <= grid.height) { - return; - } - - var newValue = Math.min((grid.contentHeight - grid.height + grid.originY), (Math.max(grid.originY , grid.contentY - event.angleDelta.y))); - grid.contentY = newValue; - } - } - - onOriginYChanged: { - console.log(" origin changed ", grid.originY) - } - - onContentYChanged: { - console.log(" content y changed ", grid.contentY) - } - - ScrollBar.vertical: ScrollBar { - visible: grid.contentHeight > grid.height - - contentItem: Item { - implicitWidth: 12 - implicitHeight: 26 - Rectangle { - color: "#88424242" - anchors.fill: parent - anchors.topMargin: 6 - anchors.leftMargin: 3 - anchors.rightMargin: 2 - anchors.bottomMargin: 6 - border.color: "#AA313131" - border.width: 1 - radius: 3.5 - } - } - } - - DropArea { - anchors.fill: parent - - onEntered: drag => { - if(drag.hasUrls) - { - if(dropManager.canDropUrls(drag.urls, drag.action)) - { - drag.accepted = true; - }else - drag.accepted = false; - } - else if (dropManager.canDropFormats(drag.formats)) { - drag.accepted = true; - } else - drag.accepted = false; - } - - onDropped: drop => { - if(drop.hasUrls && dropManager.canDropUrls(drop.urls, drop.action)) - { - dropManager.droppedFiles(drop.urls, drop.action); - } - else{ - if (dropManager.canDropFormats(drop.formats)) - { - var destItem = grid.itemAt(drop.x,drop.y + grid.contentY); - var destLocalX = grid.mapToItem(destItem,drop.x,drop.y + grid.contentY).x - var realIndex = grid.indexAt(drop.x,drop.y + grid.contentY); - - if(realIndex === -1) - realIndex = grid.count - 1; - - var destIndex = destLocalX < (grid.cellWidth / 2) ? realIndex : realIndex + 1; - dropManager.droppedComicsForResortingAt("", destIndex); - } - } - } - } - } - } -} diff --git a/YACReaderLibrary/qml/GridComicsView.qml b/YACReaderLibrary/qml/GridComicsView.qml index bede0f79..47c94926 100644 --- a/YACReaderLibrary/qml/GridComicsView.qml +++ b/YACReaderLibrary/qml/GridComicsView.qml @@ -1,15 +1,17 @@ -import QtQuick 2.15 +import QtQuick -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.12 +import QtQuick.Controls +import QtQuick.Layouts -import QtGraphicalEffects 1.0 +import QtQuick.Effects import com.yacreader.ComicModel 1.0 import com.yacreader.ComicInfo 1.0 import com.yacreader.ComicDB 1.0 +import QtQuick.Controls.Basic + SplitView { orientation: Qt.Horizontal handle: Rectangle { @@ -31,14 +33,16 @@ SplitView { mipmap: true asynchronous : true cache: false //TODO clear cache only when it is needed - opacity: 0 + layer.enabled: true visible: false } - FastBlur { + MultiEffect { anchors.fill: backgroundImg source: backgroundImg - radius: backgroundBlurRadius + blurEnabled: true + blur: 1.0 + blurMax: 64 opacity: backgroundBlurOpacity visible: backgroundBlurVisible } @@ -377,30 +381,38 @@ SplitView { comicsSelectionHelper.clear(); comicsSelectionHelper.selectIndex(index); grid.currentIndex = index; - ratingConextMenu.popup(); - } - } + ratingLoader.active = true; + ratingLoader.item.popup(); + } + } - Menu { - background: Rectangle { - implicitWidth: 42 - implicitHeight: 100 - //border.color: "#222" - //color: "#444" - } + Loader { + id: ratingLoader + active: false + sourceComponent: ratingConextMenuComponent + } - id: ratingConextMenu + Component { + id: ratingConextMenuComponent + Menu { + background: Rectangle { + implicitWidth: 42 + implicitHeight: 100 + } - Action { text: "1"; enabled: true; onTriggered: comicRatingHelper.rate(index,1) } - Action { text: "2"; enabled: true; onTriggered: comicRatingHelper.rate(index,2) } - Action { text: "3"; enabled: true; onTriggered: comicRatingHelper.rate(index,3) } - Action { text: "4"; enabled: true; onTriggered: comicRatingHelper.rate(index,4) } - Action { text: "5"; enabled: true; onTriggered: comicRatingHelper.rate(index,5) } + id: ratingConextMenu - delegate: MenuItem { - implicitHeight: 30 - } - } + Action { text: "1"; enabled: true; onTriggered: comicRatingHelper.rate(index,1) } + Action { text: "2"; enabled: true; onTriggered: comicRatingHelper.rate(index,2) } + Action { text: "3"; enabled: true; onTriggered: comicRatingHelper.rate(index,3) } + Action { text: "4"; enabled: true; onTriggered: comicRatingHelper.rate(index,4) } + Action { text: "5"; enabled: true; onTriggered: comicRatingHelper.rate(index,5) } + + delegate: MenuItem { + implicitHeight: 30 + } + } + } } //comic rating @@ -462,17 +474,16 @@ SplitView { mipmap: true asynchronous : true cache: false //TODO clear cache only when it is needed - } - DropShadow { - anchors.fill: currentCoverElement - horizontalOffset: 0 - verticalOffset: 0 - radius: 8.0 - samples: 17 - color: "#FF000000" - source: currentCoverElement - visible: showDropShadow; + layer.enabled: showDropShadow + layer.effect: MultiEffect { + shadowEnabled: true + shadowColor: "#FF000000" + shadowBlur: 1.0 + blurMax: 8 + shadowHorizontalOffset: 0 + shadowVerticalOffset: 0 + } } ColumnLayout @@ -503,7 +514,8 @@ SplitView { font.pixelSize: 21 wrapMode: Text.WordWrap - text: currentComic ? currentComic.getTitleIncludingNumber() : "" } + text: currentComic?.getTitleIncludingNumber() ?? "" + } Flow { spacing: 0 @@ -615,6 +627,7 @@ SplitView { ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + contentWidth: -1 contentItem: currentComicInfoSinopsis id: synopsisScroller @@ -645,6 +658,7 @@ SplitView { } Button { + containmentMask: null text: "Read" id: readButton x: currentCoverElement.anchors.rightMargin + currentCoverElement.paintedWidth + currentCoverElement.anchors.rightMargin @@ -671,18 +685,16 @@ SplitView { color: "white" text: readButton.text } - } - - DropShadow { - anchors.fill: readButton - horizontalOffset: 0 - verticalOffset: 0 - radius: 8.0 - samples: 17 - color: "#AA000000" - source: readButton - visible: showDropShadow && !readButton.pressed + layer.enabled: showDropShadow && !readButton.pressed + layer.effect: MultiEffect { + shadowEnabled: true + shadowColor: "#AA000000" + shadowBlur: 1.0 + blurMax: 8 + shadowHorizontalOffset: 0 + shadowVerticalOffset: 0 + } } } } diff --git a/YACReaderLibrary/qml/GridComicsView6.qml b/YACReaderLibrary/qml/GridComicsView6.qml deleted file mode 100644 index 47c94926..00000000 --- a/YACReaderLibrary/qml/GridComicsView6.qml +++ /dev/null @@ -1,924 +0,0 @@ -import QtQuick - -import QtQuick.Controls -import QtQuick.Layouts - -import QtQuick.Effects - -import com.yacreader.ComicModel 1.0 - -import com.yacreader.ComicInfo 1.0 -import com.yacreader.ComicDB 1.0 - -import QtQuick.Controls.Basic - -SplitView { - orientation: Qt.Horizontal - handle: Rectangle { - border.width : 0 - implicitWidth: 10 - color: info_container.color - } - - Rectangle { - id: main - clip: true - - Image { - id: backgroundImg - anchors.fill: parent - source: backgroundImage - fillMode: Image.PreserveAspectCrop - smooth: true - mipmap: true - asynchronous : true - cache: false //TODO clear cache only when it is needed - layer.enabled: true - visible: false - } - - MultiEffect { - anchors.fill: backgroundImg - source: backgroundImg - blurEnabled: true - blur: 1.0 - blurMax: 64 - opacity: backgroundBlurOpacity - visible: backgroundBlurVisible - } - - color: backgroundColor - width: parent.width - (info_container.visible ? info_container.width : 0) - SplitView.fillWidth: true - SplitView.minimumWidth: coverWidth + 100 - height: parent.height - anchors.margins: 0 - - Component { - id: appDelegate - Rectangle - { - id: cell - width: grid.cellWidth - height: grid.cellHeight - color: "#00000000" - - scale: mouseArea.containsMouse ? 1.025 : 1 - - Behavior on scale { - NumberAnimation { duration: 90 } - } - - BorderImage { - anchors { - top: realCell.top - left: realCell.left - right: realCell.right - bottom: realCell.bottom - margins: -10 - } - border { left: 10; top: 10; right: 10; bottom: 10 } - horizontalTileMode: BorderImage.Stretch - verticalTileMode: BorderImage.Stretch - source: "prerendered_cover_shadow.png" - visible: showDropShadow - } - - Rectangle { - id: realCell - - property int position : 0 - property bool dragging: false; - Drag.active: mouseArea.drag.active - Drag.hotSpot.x: 32 - Drag.hotSpot.y: 32 - Drag.dragType: Drag.Automatic - //Drag.mimeData: { "x": 1 } - Drag.proposedAction: Qt.CopyAction - Drag.onActiveChanged: { - if(!dragging) - { - dragManager.startDrag(); - dragging = true; - }else - dragging = false; - } - - width: itemWidth - height: itemHeight - - color: ((dummyValue || !dummyValue) && comicsSelectionHelper.isSelectedIndex(index))?selectedColor:cellColor; - //border.color: ((dummyValue || !dummyValue) && comicsSelectionHelper.isSelectedIndex(index))?selectedBorderColor:borderColor; - //border.width: ?1:0; - anchors.horizontalCenter: parent.horizontalCenter - - Rectangle - { - id: mouseOverBorder - - property bool commonBorder : false - - property int lBorderwidth : 2 - property int rBorderwidth : 2 - property int tBorderwidth : 2 - property int bBorderwidth : 2 - - property int commonBorderWidth : 1 - - z : -1 - - color: "#00000000" - - anchors - { - left: parent.left - right: parent.right - top: parent.top - bottom: parent.bottom - - topMargin : commonBorder ? -commonBorderWidth : -tBorderwidth - bottomMargin : commonBorder ? -commonBorderWidth : -bBorderwidth - leftMargin : commonBorder ? -commonBorderWidth : -lBorderwidth - rightMargin : commonBorder ? -commonBorderWidth : -rBorderwidth - } - - border.color: selectedBorderColor - border.width: 3 - - opacity: (dummyValue || !dummyValue) && comicsSelectionHelper.isSelectedIndex(index) ? 1 : 0 - - Behavior on opacity { - NumberAnimation { duration: 300 } - } - - radius : 2 - } - - - MouseArea { - id: mouseArea - drag.target: realCell - - drag.minimumX: 0 - drag.maximumX: 0 - drag.minimumY: 0 - drag.maximumY: 0 - - anchors.fill: parent - acceptedButtons: Qt.LeftButton | Qt.RightButton - - hoverEnabled: true - - onDoubleClicked: { - comicsSelectionHelper.clear(); - - comicsSelectionHelper.selectIndex(index); - grid.currentIndex = index; - currentIndexHelper.selectedItem(index); - } - - function selectAll(from,to) - { - for(var i = from;i<=to;i++) - { - comicsSelectionHelper.selectIndex(i); - } - } - - onPressed: mouse => { - var ci = grid.currentIndex; //save current index - - /*if(mouse.button != Qt.RightButton && !(mouse.modifiers & Qt.ControlModifier || mouse.modifiers & Qt.ShiftModifier)) - { - if(!comicsSelectionHelper.isSelectedIndex(index)) - comicsSelectionHelper.clear(); - }*/ - - if(mouse.modifiers & Qt.ShiftModifier) - if(index < ci) - { - selectAll(index,ci); - grid.currentIndex = index; - } - else if (index > ci) - { - selectAll(ci,index); - grid.currentIndex = index; - } - - mouse.accepted = true; - - if(mouse.button === Qt.RightButton) // context menu is requested - { - if(!comicsSelectionHelper.isSelectedIndex(index)) //the context menu is requested outside the current selection, the selection will be - { - currentIndexHelper.setCurrentIndex(index) - grid.currentIndex = index; - } - - var coordinates = main.mapFromItem(realCell,mouseX,mouseY) - contextMenuHelper.requestedContextMenu(Qt.point(coordinates.x,coordinates.y)); - mouse.accepted = false; - - } else //left button - { - - if(mouse.modifiers & Qt.ControlModifier) - { - if(comicsSelectionHelper.isSelectedIndex(index)) - { - if(comicsSelectionHelper.numItemsSelected()>1) - { - comicsSelectionHelper.deselectIndex(index); - if(grid.currentIndex === index) - grid.currentIndex = comicsSelectionHelper.lastSelectedIndex(); - } - } - else - { - comicsSelectionHelper.selectIndex(index); - grid.currentIndex = index; - } - } - - if(mouse.button !== Qt.RightButton && !(mouse.modifiers & Qt.ControlModifier || mouse.modifiers & Qt.ShiftModifier)) //just left button click - { - if(comicsSelectionHelper.isSelectedIndex(index)) //the context menu is requested outside the current selection, the selection will be - { - - } - else - { - currentIndexHelper.setCurrentIndex(index) - } - - grid.currentIndex = index; - } - } - - } - - onReleased: mouse => { - if(mouse.button === Qt.LeftButton && !(mouse.modifiers & Qt.ControlModifier || mouse.modifiers & Qt.ShiftModifier)) - { - if(comicsSelectionHelper.isSelectedIndex(index)) - { - currentIndexHelper.setCurrentIndex(index) - grid.currentIndex = index; - } - } - } - } - } - - /**/ - - //cover - Image { - id: coverElement - width: coverWidth - height: coverHeight - anchors {horizontalCenter: parent.horizontalCenter; top: realCell.top; topMargin: 0} - source: cover_path - fillMode: Image.PreserveAspectCrop - smooth: true - mipmap: true - asynchronous : true - cache: false //TODO clear cache only when it is needed - - } - - //is new - Rectangle { - width: 10 - height: 10 - radius: 5 - anchors { left: coverElement.left; top: coverElement.top; topMargin: 5; leftMargin: 5; } - color: "#FFFFCC00" - visible: (((new Date() / 1000) - added_date) < recent_range) && show_recent - } - - //border - Rectangle { - width: coverElement.width - height: coverElement.height - anchors {horizontalCenter: parent.horizontalCenter; top: realCell.top; topMargin: 0} - color: "transparent" - border { - color: "#20FFFFFF" - width: 1 - } - } - - //mark - Image { - id: mark - width: 23 - height: 23 - source: read_column&&show_marks?"tick.png":has_been_opened&&show_marks?"reading.png":"" - anchors {right: coverElement.right; top: coverElement.top; topMargin: 9; rightMargin: 9} - asynchronous : true - } - - //title - Text { - id : titleText - anchors { top: coverElement.bottom; left: realCell.left; leftMargin: 4; rightMargin: 4; topMargin: 4; } - width: itemWidth - 8 - maximumLineCount: 2 - wrapMode: Text.WordWrap - text: title - elide: Text.ElideRight - color: titleColor - clip: true - font.letterSpacing: fontSpacing - font.pointSize: fontSize - font.family: fontFamily - } - - //number - Text { - anchors {bottom: realCell.bottom; left: realCell.left; margins: 4} - text: number?"#"+number:"" - color: textColor - font.letterSpacing: fontSpacing - font.pointSize: fontSize - font.family: fontFamily - } - - //page icon - Image { - id: pageImage - anchors {bottom: realCell.bottom; right: realCell.right; bottomMargin: 5; rightMargin: 4; leftMargin: 4} - source: "page.png" - width: 8 - height: 10 - } - - //numPages - Text { - id: pages - anchors {bottom: realCell.bottom; right: pageImage.left; margins: 4} - text: has_been_opened?current_page+"/"+num_pages:num_pages - color: textColor - font.letterSpacing: fontSpacing - font.pointSize: fontSize - font.family: fontFamily - } - - //rating icon - Image { - id: ratingImage - anchors {bottom: realCell.bottom; right: pageImage.left; bottomMargin: 5; rightMargin: Math.floor(pages.width)+12} - source: "star.png" - width: 13 - height: 11 - - MouseArea { - anchors.fill: parent - onPressed: { - console.log("rating"); - comicsSelectionHelper.clear(); - comicsSelectionHelper.selectIndex(index); - grid.currentIndex = index; - ratingLoader.active = true; - ratingLoader.item.popup(); - } - } - - Loader { - id: ratingLoader - active: false - sourceComponent: ratingConextMenuComponent - } - - Component { - id: ratingConextMenuComponent - Menu { - background: Rectangle { - implicitWidth: 42 - implicitHeight: 100 - } - - id: ratingConextMenu - - Action { text: "1"; enabled: true; onTriggered: comicRatingHelper.rate(index,1) } - Action { text: "2"; enabled: true; onTriggered: comicRatingHelper.rate(index,2) } - Action { text: "3"; enabled: true; onTriggered: comicRatingHelper.rate(index,3) } - Action { text: "4"; enabled: true; onTriggered: comicRatingHelper.rate(index,4) } - Action { text: "5"; enabled: true; onTriggered: comicRatingHelper.rate(index,5) } - - delegate: MenuItem { - implicitHeight: 30 - } - } - } - } - - //comic rating - Text { - id: comicRating - anchors {bottom: realCell.bottom; right: ratingImage.left; margins: 4} - text: rating>0?rating:"-" - color: textColor - } - } - } - - Rectangle { - id: scrollView - objectName: "topScrollView" - anchors.fill: parent - anchors.margins: 0 - children: grid - - color: "transparent" - - function scrollToOrigin() { - grid.contentY = grid.originY - grid.contentX = grid.originX - } - - property Component currentComicView: Component { - id: currentComicView - Rectangle { - id: currentComicViewTopView - color: "#00000000" - - height: showCurrentComic ? 270 : 20 - - Rectangle { - color: currentComicBackgroundColor - - id: currentComicVisualView - - width: main.width - height: 250 - - visible: showCurrentComic - - //cover - Image { - id: currentCoverElement - anchors.fill: parent - - anchors.leftMargin: 15 - anchors.topMargin: 15 - anchors.bottomMargin: 15 - anchors.rightMargin: 15 - horizontalAlignment: Image.AlignLeft - anchors {horizontalCenter: parent.horizontalCenter; top: parent.top; topMargin: 0} - source: comicsList.getCoverUrlPathForComicHash(currentComicInfo.hash.toString()) - fillMode: Image.PreserveAspectFit - smooth: true - mipmap: true - asynchronous : true - cache: false //TODO clear cache only when it is needed - - layer.enabled: showDropShadow - layer.effect: MultiEffect { - shadowEnabled: true - shadowColor: "#FF000000" - shadowBlur: 1.0 - blurMax: 8 - shadowHorizontalOffset: 0 - shadowVerticalOffset: 0 - } - } - - ColumnLayout - { - id: currentComicInfoView - - x: currentCoverElement.anchors.rightMargin + currentCoverElement.paintedWidth + currentCoverElement.anchors.rightMargin - //y: currentCoverElement.anchors.topMargin - - anchors.top: currentCoverElement.top - anchors.right: parent.right - anchors.left: readButton.left - - spacing: 9 - - Text { - Layout.topMargin: 7 - Layout.fillWidth: true - Layout.rightMargin: 20 - - Layout.alignment: Qt.AlignTop | Qt.AlignLeft - - id: currentComicInfoTitleView - - color: infoTitleColor - font.family: "Arial" - font.bold: true - font.pixelSize: 21 - wrapMode: Text.WordWrap - - text: currentComic?.getTitleIncludingNumber() ?? "" - } - - Flow { - spacing: 0 - Layout.alignment: Qt.AlignTop | Qt.AlignLeft - Layout.fillWidth: true - Layout.fillHeight: false - - id: currentComicDetailsFlowView - property font infoFont: Qt.font({ - family: "Arial", - pixelSize: 14 - }); - property string infoFlowTextColor: infoTextColor - - Text { - id: currentComicInfoVolume - color: currentComicDetailsFlowView.infoFlowTextColor - font: currentComicDetailsFlowView.infoFont - text: currentComicInfo.volume ? currentComicInfo.volume : "" - rightPadding: 20 - visible: currentComicInfo.volume ? true : false - } - - Text { - id: currentComicInfoNumbering - color: currentComicDetailsFlowView.infoFlowTextColor - font: currentComicDetailsFlowView.infoFont - text: currentComicInfo.number + "/" + currentComicInfo.count - rightPadding: 20 - visible : currentComicInfo.number ? true : false - } - - Text { - id: currentComicInfoArc - color: currentComicDetailsFlowView.infoFlowTextColor - font: currentComicDetailsFlowView.infoFont - text: currentComicInfo.getStoryArcInfoString() - rightPadding: 20 - visible : currentComicInfo.getStoryArcInfoString().length > 0 - } - - Text { - id: currentComicInfoAlternate - color: currentComicDetailsFlowView.infoFlowTextColor - font: currentComicDetailsFlowView.infoFont - text: currentComicInfo.getAlternateSeriesString() - rightPadding: 20 - visible : currentComicInfo.getStoryArcInfoString().length > 0 - } - - Text { - id: currentComicInfoSeriesGroup - color: currentComicDetailsFlowView.infoFlowTextColor - font: currentComicDetailsFlowView.infoFont - text: currentComicInfo.seriesGroup ? currentComicInfo.seriesGroup : "" - rightPadding: 20 - visible: currentComicInfo.seriesGroup ? true : false - } - - Text { - id: currentComicInfoGenre - color: currentComicDetailsFlowView.infoFlowTextColor - font: currentComicDetailsFlowView.infoFont - text: currentComicInfo.genere ? currentComicInfo.genere : "" - rightPadding: 20 - visible: currentComicInfo.genere ? true : false - } - - Text { - id: currentComicInfoDate - color: currentComicDetailsFlowView.infoFlowTextColor - font: currentComicDetailsFlowView.infoFont - text: currentComicInfo.date ? currentComicInfo.date : "" - rightPadding: 20 - visible: currentComicInfo.date ? true : false - } - - Text { - id: currentComicInfoPages - color: currentComicDetailsFlowView.infoFlowTextColor - font: currentComicDetailsFlowView.infoFont - text: (currentComicInfo.numPages ? currentComicInfo.numPages : "") + " pages" - rightPadding: 20 - visible: currentComicInfo.numPages ? true : false - } - - Text { - id: currentComicInfoShowInComicVine - font: currentComicDetailsFlowView.infoFont - color: "#ffcc00" - text: "Show in Comic Vine" - visible: currentComicInfo.comicVineID ? true : false - MouseArea { - anchors.fill: parent - onClicked: { - Qt.openUrlExternally("http://www.comicvine.com/comic/4000-%1/".arg(comicInfo.comicVineID)); - } - } - } - } - - ScrollView { - Layout.topMargin: 6 - Layout.rightMargin: 30 - Layout.bottomMargin: 5 - Layout.fillWidth: true - Layout.maximumHeight: (currentComicVisualView.height * 0.32) - Layout.maximumWidth: 960 - - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - - contentWidth: -1 - contentItem: currentComicInfoSinopsis - - id: synopsisScroller - - clip: true - - Text { - Layout.maximumWidth: 960 - - width: synopsisScroller.width - - id: currentComicInfoSinopsis - color: infoTitleColor - font.family: "Arial" - font.pixelSize: 14 - wrapMode: Text.WordWrap - - text: '' + currentComicInfo.synopsis ?? "" + '' - visible: currentComicInfo.synopsis ?? false - textFormat: Text.RichText - } - } - } - - Button { - containmentMask: null - text: "Read" - id: readButton - x: currentCoverElement.anchors.rightMargin + currentCoverElement.paintedWidth + currentCoverElement.anchors.rightMargin - anchors.bottom: currentCoverElement.bottom - anchors.bottomMargin: 15 - - onClicked: comicOpener.triggerOpenCurrentComic() - background: Rectangle { - implicitWidth: 100 - implicitHeight: 30 - border.width: readButton.activeFocus ? 2 : 1 - border.color: "#FFCC00" - radius: height / 2 - color: "#FFCC00" - } - - contentItem: Text { - renderType: Text.NativeRendering - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - font.family: "Arial" - font.pointSize: 12 - font.bold: true - color: "white" - text: readButton.text - } - - layer.enabled: showDropShadow && !readButton.pressed - layer.effect: MultiEffect { - shadowEnabled: true - shadowColor: "#AA000000" - shadowBlur: 1.0 - blurMax: 8 - shadowHorizontalOffset: 0 - shadowVerticalOffset: 0 - } - } - } - } - } - - GridView { - id:grid - objectName: "grid" - anchors.fill: parent - cellHeight: cellCustomHeight - header: currentComicView - focus: true - model: comicsList - delegate: appDelegate - anchors.topMargin: 0 - anchors.bottomMargin: 10 - anchors.leftMargin: 0 - anchors.rightMargin: 0 - pixelAligned: true - highlightFollowsCurrentItem: true - - currentIndex: 0 - cacheBuffer: 0 - - interactive: true - - move: Transition { - NumberAnimation { properties: "x,y"; duration: 250 } - } - - moveDisplaced: Transition { - NumberAnimation { properties: "x,y"; duration: 250 } - } - - remove: Transition { - ParallelAnimation { - NumberAnimation { property: "opacity"; to: 0; duration: 250 } - - } - } - - removeDisplaced: Transition { - NumberAnimation { properties: "x,y"; duration: 250 } - } - - - - displaced: Transition { - NumberAnimation { properties: "x,y"; duration: 250 } - } - - function numCellsPerRow() { - return Math.floor(width / cellCustomWidth); - } - - onWidthChanged: { - calculateCellWidths(cellCustomWidth); - } - - function calculateCellWidths(cWidth) { - var wholeCells = Math.floor(width / cWidth); - var rest = width - (cWidth * wholeCells) - - grid.cellWidth = cWidth + Math.floor(rest / wholeCells); - } - - WheelHandler { - onWheel: { - if (grid.contentHeight <= grid.height) { - return; - } - - var newValue = Math.min((grid.contentHeight - grid.height + grid.originY), (Math.max(grid.originY , grid.contentY - event.angleDelta.y))); - grid.contentY = newValue; - } - } - - ScrollBar.vertical: ScrollBar { - visible: grid.contentHeight > grid.height - - contentItem: Item { - implicitWidth: 12 - implicitHeight: 26 - Rectangle { - color: "#88424242" - anchors.fill: parent - anchors.topMargin: 6 - anchors.leftMargin: 3 - anchors.rightMargin: 2 - anchors.bottomMargin: 6 - border.color: "#AA313131" - border.width: 1 - radius: 3.5 - } - } - } - - Keys.onPressed: { - if (event.modifiers & Qt.ControlModifier || event.modifiers & Qt.ShiftModifier) { - event.accepted = true - return; - } - - var numCells = grid.numCellsPerRow(); - var ci = 0; - if (event.key === Qt.Key_Right) { - ci = Math.min(grid.currentIndex+1,grid.count - 1); - } - else if (event.key === Qt.Key_Left) { - ci = Math.max(0,grid.currentIndex-1); - } - else if (event.key === Qt.Key_Up) { - ci = Math.max(0,grid.currentIndex-numCells); - } - else if (event.key === Qt.Key_Down) { - ci = Math.min(grid.currentIndex+numCells,grid.count - 1); - } else { - return; - } - - event.accepted = true; - grid.currentIndex = -1 - comicsSelectionHelper.clear(); - currentIndexHelper.setCurrentIndex(ci); - grid.currentIndex = ci; - } - - DropArea { - anchors.fill: parent - - onEntered: drag => { - if(drag.hasUrls) - { - if(dropManager.canDropUrls(drag.urls, drag.action)) - { - drag.accepted = true; - }else - drag.accepted = false; - } - else if (dropManager.canDropFormats(drag.formats)) { - drag.accepted = true; - } else - drag.accepted = false; - } - - onDropped: drop => { - if(drop.hasUrls && dropManager.canDropUrls(drop.urls, drop.action)) - { - dropManager.droppedFiles(drop.urls, drop.action); - } - else{ - if (dropManager.canDropFormats(drop.formats)) - { - var destItem = grid.itemAt(drop.x,drop.y + grid.contentY); - var destLocalX = grid.mapToItem(destItem,drop.x,drop.y + grid.contentY).x - var realIndex = grid.indexAt(drop.x,drop.y + grid.contentY); - - if(realIndex === -1) - realIndex = grid.count - 1; - - var destIndex = destLocalX < (grid.cellWidth / 2) ? realIndex : realIndex + 1; - dropManager.droppedComicsForResortingAt("", destIndex); - } - } - } - } - } - } - } - - Rectangle { - id: info_container - objectName: "infoContainer" - SplitView.preferredWidth: 350 - SplitView.minimumWidth: 350 - SplitView.maximumWidth: 960 - height: parent.height - - color: infoBackgroundColor - - visible: showInfo - - Flickable{ - id: infoFlickable - anchors.fill: parent - anchors.margins: 0 - - contentWidth: infoView.width - contentHeight: infoView.height - - ComicInfoView { - id: infoView - width: info_container.width - } - - WheelHandler { - onWheel: { - if (infoFlickable.contentHeight <= infoFlickable.height) { - return; - } - - var newValue = Math.min((infoFlickable.contentHeight - infoFlickable.height), (Math.max(infoFlickable.originY , infoFlickable.contentY - event.angleDelta.y))); - infoFlickable.contentY = newValue; - } - } - - ScrollBar.vertical: ScrollBar { - visible: infoFlickable.contentHeight > infoFlickable.height - - contentItem: Item { - implicitWidth: 12 - implicitHeight: 26 - Rectangle { - color: "#424246" - anchors.fill: parent - anchors.topMargin: 6 - anchors.leftMargin: 5 - anchors.rightMargin: 4 - anchors.bottomMargin: 6 - radius: 2 - } - } - } - } - - } -} diff --git a/YACReaderLibrary/qml/InfoComicsView.qml b/YACReaderLibrary/qml/InfoComicsView.qml index 650a3bc1..e4adaf4b 100644 --- a/YACReaderLibrary/qml/InfoComicsView.qml +++ b/YACReaderLibrary/qml/InfoComicsView.qml @@ -1,9 +1,11 @@ -import QtQuick 2.15 +import QtQuick -import QtQuick.Controls 2.15 +import QtQuick.Controls import com.yacreader.ComicModel 1.0 +import QtQuick.Controls.Basic + Rectangle { id: main diff --git a/YACReaderLibrary/qml/InfoComicsView6.qml b/YACReaderLibrary/qml/InfoComicsView6.qml deleted file mode 100644 index e4adaf4b..00000000 --- a/YACReaderLibrary/qml/InfoComicsView6.qml +++ /dev/null @@ -1,131 +0,0 @@ -import QtQuick - -import QtQuick.Controls - -import com.yacreader.ComicModel 1.0 - -import QtQuick.Controls.Basic - -Rectangle { - id: main - - color: infoBackgroundColor - - //width: parent.width - //height: parent.height - anchors.margins: 0 - - FlowView { - id: flow - objectName: "flow" - height: 256 //TODO dynamic size? - - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - - additionalBottomSpace: indicator.height - } - - Image { - id: top_shadow - source: topShadow - width: parent.width - fillMode: Image.TileHorizontally - } - - Rectangle { - id: indicator_container - width: parent.width - y: 250 - - Image { - id: indicator - source: infoIndicator - } - - Image { - id: bottom_shadow - x: indicator.width - width: parent.width - indicator.width - source: infoShadow - fillMode: Image.TileHorizontally - } - } - - Rectangle { - id: info_container - width: parent.width - y: flow.height + flow.additionalBottomSpace - 6 - height: parent.height - y - - clip: true - - color: infoBackgroundColor - - Flickable{ - id: infoFlickable - anchors.fill: parent - anchors.margins: 0 - - contentWidth: infoView.width - contentHeight: infoView.height - - ComicInfoView { - id: infoView - width: info_container.width - 14 - } - - WheelHandler { - onWheel: { - if (infoFlickable.contentHeight <= infoFlickable.height) { - return; - } - - var newValue = Math.min((infoFlickable.contentHeight - infoFlickable.height), (Math.max(infoFlickable.originY , infoFlickable.contentY - event.angleDelta.y))); - infoFlickable.contentY = newValue; - } - } - - ScrollBar.vertical: ScrollBar { - visible: infoFlickable.contentHeight > infoFlickable.height - - contentItem: Item { - implicitWidth: 12 - implicitHeight: 26 - Rectangle { - color: "#424246" - anchors.fill: parent - anchors.topMargin: 6 - anchors.leftMargin: 5 - anchors.rightMargin: 4 - anchors.bottomMargin: 6 - radius: 2 - } - } - } - } - } - - DropArea { - anchors.fill: parent - - onEntered: { - if(drag.hasUrls) - { - if(dropManager.canDropUrls(drag.urls, drag.action)) - { - drag.accepted = true; - }else - drag.accepted = false; - } - } - - onDropped: { - if(drop.hasUrls && dropManager.canDropUrls(drop.urls, drop.action)) - { - dropManager.droppedFiles(drop.urls, drop.action); - } - } - } -} diff --git a/YACReaderLibrary/qml/InfoFavorites.qml b/YACReaderLibrary/qml/InfoFavorites.qml index 2b24c0ab..ce88142c 100644 --- a/YACReaderLibrary/qml/InfoFavorites.qml +++ b/YACReaderLibrary/qml/InfoFavorites.qml @@ -1,6 +1,6 @@ -import QtQuick 2.15 +import QtQuick -import QtGraphicalEffects 1.0 +import QtQuick.Controls.impl Item { width: 20 @@ -17,15 +17,10 @@ Item { } } - Image { + ColorImage { anchors.centerIn: parent id: favorites_button_compact source: "info-favorites.svg" - } - - ColorOverlay { - anchors.fill: favorites_button_compact - source: favorites_button_compact color: active ? favCheckedColor : favUncheckedColor } } diff --git a/YACReaderLibrary/qml/InfoFavorites6.qml b/YACReaderLibrary/qml/InfoFavorites6.qml deleted file mode 100644 index ce88142c..00000000 --- a/YACReaderLibrary/qml/InfoFavorites6.qml +++ /dev/null @@ -1,27 +0,0 @@ -import QtQuick - -import QtQuick.Controls.impl - -Item { - width: 20 - height: 20 - - property bool active - - signal activeChangedByUser(bool active) - - MouseArea { - anchors.fill: favorites_button_compact - onClicked: { - activeChangedByUser(!active); - } - } - - ColorImage { - anchors.centerIn: parent - id: favorites_button_compact - source: "info-favorites.svg" - color: active ? favCheckedColor : favUncheckedColor - } -} - diff --git a/YACReaderLibrary/qml/InfoRating.qml b/YACReaderLibrary/qml/InfoRating.qml index 0f20b993..2a7b482a 100644 --- a/YACReaderLibrary/qml/InfoRating.qml +++ b/YACReaderLibrary/qml/InfoRating.qml @@ -1,6 +1,6 @@ -import QtQuick 2.15 +import QtQuick -import QtGraphicalEffects 1.0 +import QtQuick.Controls.impl Row { spacing: 0 @@ -16,14 +16,9 @@ Row { width: 25 height: 20 - Image { + ColorImage { id: star source: "info-rating.svg" - } - - ColorOverlay { - anchors.fill: star - source: star color: index < (mouseIndex > 0 ? mouseIndex : rating) ? ratingSelectedColor : ratingUnselectedColor } diff --git a/YACReaderLibrary/qml/InfoRating6.qml b/YACReaderLibrary/qml/InfoRating6.qml deleted file mode 100644 index 2a7b482a..00000000 --- a/YACReaderLibrary/qml/InfoRating6.qml +++ /dev/null @@ -1,43 +0,0 @@ -import QtQuick - -import QtQuick.Controls.impl - -Row { - spacing: 0 - property int rating : 0 - property int mouseIndex : 0 - - signal ratingChangedByUser(int rating) - - Repeater { - id: rating_compact - model: 5 - Item { - width: 25 - height: 20 - - ColorImage { - id: star - source: "info-rating.svg" - color: index < (mouseIndex > 0 ? mouseIndex : rating) ? ratingSelectedColor : ratingUnselectedColor - } - - MouseArea { - anchors.fill: parent - hoverEnabled: true - - onPositionChanged: { - mouseIndex = index + 1; - } - - onClicked: { - ratingChangedByUser(mouseIndex); - } - - onExited: { - mouseIndex = 0; - } - } - } - } -} diff --git a/YACReaderLibrary/qml/InfoTick.qml b/YACReaderLibrary/qml/InfoTick.qml index 6659724c..5b50a31f 100644 --- a/YACReaderLibrary/qml/InfoTick.qml +++ b/YACReaderLibrary/qml/InfoTick.qml @@ -1,6 +1,6 @@ -import QtQuick 2.15 +import QtQuick -import QtGraphicalEffects 1.0 +import QtQuick.Controls.impl Item { @@ -15,14 +15,9 @@ Item { } } - Image { + ColorImage { id: read_compact source: "info-tick.svg" - } - - ColorOverlay { - anchors.fill: read_compact - source: read_compact color: read ? readTickCheckedColor : readTickUncheckedColor } } diff --git a/YACReaderLibrary/qml/InfoTick6.qml b/YACReaderLibrary/qml/InfoTick6.qml deleted file mode 100644 index 5b50a31f..00000000 --- a/YACReaderLibrary/qml/InfoTick6.qml +++ /dev/null @@ -1,23 +0,0 @@ -import QtQuick - -import QtQuick.Controls.impl - -Item { - - property bool read - - signal readChangedByUser(bool read) - - MouseArea { - anchors.fill: read_compact - onClicked: { - readChangedByUser(!read); - } - } - - ColorImage { - id: read_compact - source: "info-tick.svg" - color: read ? readTickCheckedColor : readTickUncheckedColor - } -} diff --git a/YACReaderLibrary/qml6.qrc b/YACReaderLibrary/qml6.qrc deleted file mode 100644 index d838abe2..00000000 --- a/YACReaderLibrary/qml6.qrc +++ /dev/null @@ -1,28 +0,0 @@ - - - qml/GridComicsView6.qml - qml/FolderContentView6.qml - qml/FlowView6.qml - qml/InfoTick6.qml - qml/InfoFavorites6.qml - qml/InfoRating6.qml - qml/InfoComicsView6.qml - qml/tick.png - qml/reading.png - qml/star_menu.png - qml/star_menu@2x.png - qml/info-indicator.png - qml/info-shadow.png - qml/info-indicator-light.png - qml/info-shadow-light.png - qml/info-indicator-light@2x.png - qml/info-shadow-light@2x.png - qml/info-top-shadow.png - qml/ComicInfoView.qml - qml/info-favorites.svg - qml/info-rating.svg - qml/info-tag.svg - qml/info-tick.svg - qml/prerendered_cover_shadow.png - -