proton-bridge/internal/frontend/qml/ImportExportUI/ImportReport.qml

217 lines
7.4 KiB
QML

// Copyright (c) 2021 Proton Technologies AG
//
// This file is part of ProtonMail Bridge.
//
// ProtonMail Bridge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ProtonMail Bridge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
// Import report modal
import QtQuick 2.11
import QtQuick.Controls 2.4
import ProtonUI 1.0
import ImportExportUI 1.0
Rectangle {
id: root
color: "#aa101021"
visible: false
MouseArea { // disable bellow
anchors.fill: root
hoverEnabled: true
}
Rectangle {
id:background
color: Style.main.background
anchors {
fill : root
topMargin : Style.main.rightMargin
leftMargin : 2*Style.main.rightMargin
rightMargin : 2*Style.main.rightMargin
bottomMargin : 2.5*Style.main.rightMargin
}
ClickIconText {
anchors {
top : parent.top
right : parent.right
margins : .5* Style.main.rightMargin
}
iconText : Style.fa.times
text : ""
textColor : Style.main.textBlue
onClicked : root.hide()
Accessible.description : qsTr("Close dialog %1", "Click to exit modal.").arg(title.text)
}
Text {
id: title
text : qsTr("List of errors")
font {
pointSize: Style.dialog.titleSize * Style.pt
}
anchors {
top : parent.top
topMargin : 0.5*Style.main.rightMargin
horizontalCenter : parent.horizontalCenter
}
}
ListView {
id: errorView
anchors {
left : parent.left
right : parent.right
top : title.bottom
bottom : detailBtn.top
margins : Style.main.rightMargin
}
clip : true
flickableDirection : Flickable.HorizontalAndVerticalFlick
contentWidth : errorView.rWall
boundsBehavior : Flickable.StopAtBounds
ScrollBar.vertical: ScrollBar {
anchors {
right : parent.right
top : parent.top
rightMargin : Style.main.rightMargin/4
topMargin : Style.main.rightMargin
}
width: Style.main.rightMargin/3
Accessible.ignored: true
}
ScrollBar.horizontal: ScrollBar {
anchors {
bottom : parent.bottom
right : parent.right
bottomMargin : Style.main.rightMargin/4
rightMargin : Style.main.rightMargin
}
height: Style.main.rightMargin/3
Accessible.ignored: true
}
property real rW1 : 150 *Style.px
property real rW2 : 150 *Style.px
property real rW3 : 100 *Style.px
property real rW4 : 150 *Style.px
property real rW5 : 550 *Style.px
property real rWall : errorView.rW1+errorView.rW2+errorView.rW3+errorView.rW4+errorView.rW5
property real pH : .5*Style.main.rightMargin
model : errorList
delegate : Rectangle {
width : Math.max(errorView.width, row.width)
height : row.height
Row {
id: row
spacing : errorView.pH
leftPadding : errorView.pH
rightPadding : errorView.pH
topPadding : errorView.pH
bottomPadding : errorView.pH
ImportReportCell { width : errorView.rW1; text : mailSubject }
ImportReportCell { width : errorView.rW2; text : mailDate }
ImportReportCell { width : errorView.rW3; text : inputFolder }
ImportReportCell { width : errorView.rW4; text : mailFrom }
ImportReportCell { width : errorView.rW5; text : errorMessage }
}
Rectangle {
color : Style.main.line
height : .8*Style.px
width : parent.width
anchors.left : parent.left
anchors.bottom : parent.bottom
}
}
headerPositioning: ListView.OverlayHeader
header: Rectangle {
height : viewHeader.height
width : Math.max(errorView.width, viewHeader.width)
color : Style.accounts.backgroundExpanded
z : 2
Row {
id: viewHeader
spacing : errorView.pH
leftPadding : errorView.pH
rightPadding : errorView.pH
topPadding : .5*errorView.pH
bottomPadding : .5*errorView.pH
ImportReportCell { width : errorView.rW1 ; text : qsTr ( "SUBJECT" ); isHeader: true }
ImportReportCell { width : errorView.rW2 ; text : qsTr ( "DATE/TIME" ); isHeader: true }
ImportReportCell { width : errorView.rW3 ; text : qsTr ( "FOLDER" ); isHeader: true }
ImportReportCell { width : errorView.rW4 ; text : qsTr ( "FROM" ); isHeader: true }
ImportReportCell { width : errorView.rW5 ; text : qsTr ( "ERROR" ); isHeader: true }
}
Rectangle {
color : Style.main.line
height : .8*Style.px
width : parent.width
anchors.left : parent.left
anchors.bottom : parent.bottom
}
}
}
Rectangle {
anchors{
fill : errorView
margins : -radius
}
radius : 2* Style.px
color : Style.transparent
border {
width : Style.px
color : Style.main.line
}
}
ButtonRounded {
id: detailBtn
fa_icon : Style.fa.file_text
text : qsTr("Detailed file")
color_main : Style.dialog.textBlue
onClicked : go.importLogFileName == "" ? go.openLogs() : go.openReport()
anchors {
bottom : parent.bottom
bottomMargin : 0.5*Style.main.rightMargin
horizontalCenter : parent.horizontalCenter
}
}
}
function show() {
root.visible = true
}
function hide() {
root.visible = false
}
}