blob: 7f8ce68c6dd7c002a6014a9ae00698087e91e9c7 (
plain) (
tree)
|
|
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Layouts 1.1
Rectangle {
id: dropFilesForm
color: "#eeeeee"
property alias dropFilesArea: dropFilesArea
property alias fileGridView: fileGridView
property alias fileGridContainer: fileGridContainer
property alias browseButton: browseButton
property alias bottomBrowseButton: bottomBrowseButton
property alias nextButton: nextButton
property alias dropFilesContainer: dropFilesColumn
property alias bottomButtonsContainer: bottomButtonsContainer
signal keyPressed(var event)
DropArea {
id: dropFilesArea
anchors.fill: parent
onEntered: {
background.color = "#cccccc";
}
onDropped: {
background.color = "#eeeeee";
}
onExited: {
background.color = "#eeeeee";
}
}
Column {
id: dropFilesColumn
spacing: 12
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
Text {
id: dragFilesText
text: qsTr("Drop firmware files here")
anchors.horizontalCenter: parent.horizontalCenter
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignLeft
font.pixelSize: 18
}
Image {
width: 100
height: 100
anchors.horizontalCenter: parent.horizontalCenter
source: "drop_zone.svg"
}
Button {
id: browseButton
text: qsTr("Browse")
isDefault: true
anchors.horizontalCenter: parent.horizontalCenter
}
}
Item {
id: fileGridContainer
visible: false
anchors.fill: parent
anchors.bottomMargin: 36
ScrollView {
anchors.fill: parent
GridView {
id: fileGridView
flow: GridView.FlowLeftToRight
cellWidth: 148
cellHeight: 120
boundsBehavior: Flickable.StopAtBounds
focus: true
anchors {
fill: parent
margins: 4
}
highlight: Rectangle {
color: "#ccddff"
radius: 8
}
delegate: Item {
width: 148
height: 120
Column {
spacing: 8
anchors.centerIn: parent
Image {
width: 80
anchors.horizontalCenter: parent.horizontalCenter
fillMode: Image.PreserveAspectFit
source: model.icon
}
Text {
width: 140
anchors.horizontalCenter: parent.horizontalCenter
wrapMode: Text.NoWrap
horizontalAlignment: Text.AlignHCenter
text: model.text
elide: Text.ElideMiddle
}
}
MouseArea {
anchors.fill: parent
onClicked: {
fileGridView.currentIndex = index
fileGridView.forceActiveFocus()
}
}
}
Keys.onPressed: {
var columns = Math.floor(fileGridView.width / fileGridView.cellWidth);
var index = fileGridView.currentIndex;
switch (event.key) {
case Qt.Key_Left:
index--;
break;
case Qt.Key_Right:
index++;
break;
case Qt.Key_Up:
index -= columns;
break;
case Qt.Key_Down:
index += columns;
break;
}
var upperBound = fileGridView.model.count - 1;
var partialRowCount = fileGridView.model.count % columns;
if (partialRowCount > 0) {
upperBound += columns - partialRowCount;
}
if (index >= 0 && index <= upperBound) {
index = Math.min(fileGridView.model.count - 1, index);
fileGridView.currentIndex = index;
}
dropFilesForm.keyPressed(event);
}
}
}
}
Rectangle {
id: bottomButtonsContainer
height: 36
color: "#dddddd"
visible: false
anchors {
bottom: parent.bottom
left: parent.left
right: parent.right
}
Button {
id: bottomBrowseButton
text: qsTr("Browse")
anchors {
bottom: parent.bottom
bottomMargin: 4
left: parent.left
leftMargin: 8
verticalCenter: parent.verticalCenter
}
}
Button {
id: nextButton
text: qsTr("Next")
isDefault: true
anchors {
bottom: parent.bottom
bottomMargin: 4
right: parent.right
rightMargin: 8
verticalCenter: parent.verticalCenter
}
}
}
}
|