[app] Use the same cover size in landscape and portrait

This commit is contained in:
Slava Monich 2015-08-18 21:06:46 +03:00
parent 7042dbff79
commit 033f54492e
2 changed files with 20 additions and 9 deletions

View file

@ -134,7 +134,7 @@ SilicaFlickable {
left: parent.left left: parent.left
right: parent.right right: parent.right
bottom: parent.bottom bottom: parent.bottom
leftMargin: Math.floor((shelfView.width - _cellsPerRow * shelfView.cellWidth)/_cellsPerRow/2) leftMargin: Math.floor((shelfView.width - _cellsPerRow * shelfView.cellWidth)/2)
} }
model: shelfModel model: shelfModel
interactive: !dragInProgress interactive: !dragInProgress

View file

@ -41,8 +41,8 @@ SilicaFlickable {
signal openBook(var book) signal openBook(var book)
property real _cellWidth: calculateCellWidth() property real _cellWidth
property real _cellHeight: _cellWidth*8/5 property real _cellHeight: Math.ceil(_cellWidth*8/5)
property var draggedItem property var draggedItem
property var currentShelf property var currentShelf
property var currentShelfView property var currentShelfView
@ -57,20 +57,30 @@ SilicaFlickable {
// Books in the library shouldn't be too small or too big. // Books in the library shouldn't be too small or too big.
// At least 3 (or 5 in landscape) should fit in the horizontal direction. // At least 3 (or 5 in landscape) should fit in the horizontal direction.
// The width shouldn't be smaller than 10*Theme.paddingMedium or 0.88 inch // The width shouldn't be smaller than 10*Theme.paddingMedium or 0.88 inch
function calculateCellWidth() { function calculateCellWidth2(viewWidth, minCount) {
var result = 0 var result = 0
if (width > 0) { if (viewWidth > 0) {
// At least 3 books in portrait, 5 in landscape // At least 3 books in portrait, 5 in landscape
var n = (height > width) ? 4 : 6 var n = minCount + 1
var cellSize = width/n var cellSize = viewWidth/minCount
while (cellSize > _minGridCellWidth && (cellSize/PointsPerInch) > 0.88 && n < 11) { while (cellSize > _minGridCellWidth && (cellSize/PointsPerInch) > 0.88 && n < 11) {
cellSize = width/(++n) cellSize = viewWidth/(++n)
} }
result = Math.floor(width/(n-1)) result = Math.floor(viewWidth/(n-1))
} }
return result return result
} }
function calculateCellWidth() {
// At least 3 books in portrait, 5 in landscape
var result2 = calculateCellWidth2(Math.min(width, height), 3)
var result1 = calculateCellWidth2(Math.max(width, height), 5)
var result = Math.min(result1, result2)
return result
}
Component.onCompleted: _cellWidth = calculateCellWidth()
PullDownMenu { PullDownMenu {
MenuItem { MenuItem {
//% "Scan downloads" //% "Scan downloads"
@ -121,6 +131,7 @@ SilicaFlickable {
ListWatcher { ListWatcher {
id: storageListWatcher id: storageListWatcher
listView: storageList listView: storageList
onSizeChanged: _cellWidth = calculateCellWidth()
} }
SilicaListView { SilicaListView {