import QtQuick 2.3 import QtQuick.Controls 1.0 import QtQuick.Controls 1.1 import QtGraphicalEffects 1.0 import comicModel 1.0 Rectangle { id: main color: backgroundColor width: parent.width height: parent.height anchors.margins: 0 function selectAll(from,to) { for(var i = from+1;i ci) selectAll(ci,index); mouse.accepted = true; comicsSelectionHelper.selectIndex(index) grid.currentIndex = index; } } Menu { id: myContextMenu MenuItem { text: "Open containing folder..."; onTriggered: display.setRandomName() } MenuSeparator{} MenuItem { text: "Reset comic rating"; onTriggered: model1.removeRows(index, 1) } MenuSeparator{} MenuItem { text: "Edit"; onTriggered: model1.removeRows(index, 1) } MenuItem { text: "Download tags from Comic Vine"; onTriggered: model1.removeRows(index, 1) } MenuItem { text: "Asign current order to comics"; onTriggered: model1.removeRows(index, 1) } MenuSeparator{} MenuItem { text: "Set as read"; onTriggered: model1.removeRows(index, 1) } MenuItem { text: "Set as unread"; onTriggered: model1.removeRows(index, 1) } MenuSeparator{} MenuItem { text: "Delete selected comics"; onTriggered: model1.removeRows(index, 1) } //MenuItem { text: "Show details"; onTriggered: cell.state = 'Details'; } } DropShadow { anchors.fill: source horizontalOffset: 0 verticalOffset: 0 radius: 3 samples: 24 color: "#40000000" transparentBorder: true; source: realCell; enabled: dropShadow; visible: dropShadow; } /**/ //cover Image { id: coverElement width: 148 height: 224 anchors {horizontalCenter: parent.horizontalCenter; top: realCell.top; topMargin: 4} source: cover_path fillMode: Image.PreserveAspectCrop //smooth: true mipmap: true //antialiasing: true asynchronous : true cache: false //TODO clear cache only when it is neede } //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: 11; rightMargin: 11} asynchronous : true } //title Text { anchors { top: realCell.top; left: realCell.left; leftMargin: 4; rightMargin: 4; topMargin: 234; } width: 148 maximumLineCount: 2 wrapMode: Text.WordWrap text: title elide: Text.ElideRight color: titleColor clip: true font.letterSpacing: 0.5 } //number Text { anchors {bottom: realCell.bottom; left: realCell.left; margins: 4} text: number?"#"+number:"" color: textColor font.letterSpacing: 0.5 } //page icon Image { id: pageImage anchors {bottom: realCell.bottom; right: realCell.right; bottomMargin: 5; rightMargin: 4; leftMargin: 4} source: "page.png" } //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: 0.5 } //rating icon Image { id: ratingImage anchors {bottom: realCell.bottom; right: pageImage.left; bottomMargin: 5; rightMargin: Math.floor(pages.width)+12} source: "star.png" } //comic rating Text { id: comicRating anchors {bottom: realCell.bottom; right: ratingImage.left; margins: 4} text: rating>0?rating:"-" color: textColor } } } YACReaderScrollView{ id: scrollView anchors.fill: parent anchors.margins: 0 GridView { id:grid anchors.fill: parent cellHeight: 295 highlight: appHighlight focus: true model: comicsList delegate: appDelegate anchors.topMargin: 20 anchors.bottomMargin: 20 anchors.leftMargin: 10 anchors.rightMargin: 10 pixelAligned: true //flickDeceleration: -2000 snapMode: GridView.SnapToRow currentIndex: 0 cacheBuffer: 0 function numCellsPerRow() { return Math.floor(width / 190); } onWidthChanged: { var numCells = numCellsPerRow(); var rest = width % 190; if(numCells > 0) { cellWidth = Math.floor(width / numCells) ; //console.log("numCells=",numCells,"rest=",rest,"cellWidth=",cellWidth,"width=",width); } } } focus: true Keys.onPressed: { if (event.modifiers & Qt.ControlModifier || event.modifiers & Qt.ShiftModifier) return; var numCells = grid.numCellsPerRow(); var ci if (event.key === Qt.Key_Right) { ci = Math.min(grid.currentIndex+1,grid.count); } 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); } event.accepted = true; //var ci = grid.currentIndex; grid.currentIndex = -1 comicsSelectionHelper.clear(); comicsSelectionHelper.selectIndex(ci); grid.currentIndex = ci; } //} /*MouseArea { anchors.fill: parent onClicked: { clicked.accepted = false; console.log("xx"); } onWheel: { var newValue = Math.max(0,scrollView.flickableItem.contentY - wheel.angleDelta.y) scrollView.flickableItem.contentY = newValue } }*/ /*ScrollBar { flickable: grid; } PerformanceMeter { anchors {top: parent.top; left: parent.left; margins: 4} id: performanceMeter width: 128 height: 64 enabled: (dummyValue || !dummyValue) }*/ } }