You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

147 lines
4.5 KiB

import QtQuick 2.6
import QtQuick.Layouts 1.0
import QtQuick.Controls 2.0
import QtQuick.Controls.Material 2.0
import QtQml.Models 2.2
import org.electrum 1.0
import "controls"
Pane {
id: rootItem
visible: Daemon.currentWallet
padding: 0
clip: true
background: Rectangle {
color: constants.darkerBackground
}
ListView {
id: listview
width: parent.width
height: parent.height
boundsBehavior: Flickable.StopAtBounds
model: visualModel
header: Item {
width: parent.width
height: headerLayout.height
ColumnLayout {
id: headerLayout
anchors.centerIn: parent
BalanceSummary {
Layout.topMargin: constants.paddingXLarge
Layout.bottomMargin: constants.paddingXLarge
}
}
}
headerPositioning: ListView.InlineHeader
readonly property variant sectionLabels: {
'local': qsTr('Local'),
'mempool': qsTr('Mempool'),
'today': qsTr('Today'),
'yesterday': qsTr('Yesterday'),
'lastweek': qsTr('Last week'),
'lastmonth': qsTr('Last month'),
'older': qsTr('Older')
}
section.property: 'section'
section.criteria: ViewSection.FullString
section.delegate: RowLayout {
width: ListView.view.width
required property string section
Label {
text: listview.sectionLabels[section]
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: constants.paddingLarge
font.pixelSize: constants.fontSizeLarge
color: Material.accentColor
}
}
DelegateModel {
id: visualModel
model: Daemon.currentWallet.historyModel
groups: [
DelegateModelGroup { name: 'today'; includeByDefault: false },
DelegateModelGroup { name: 'yesterday'; includeByDefault: false },
DelegateModelGroup { name: 'lastweek'; includeByDefault: false },
DelegateModelGroup { name: 'lastmonth'; includeByDefault: false },
DelegateModelGroup { name: 'older'; includeByDefault: false }
]
delegate: HistoryItemDelegate {
}
}
ScrollIndicator.vertical: ScrollIndicator { }
Label {
visible: Daemon.currentWallet.historyModel.count == 0
anchors.centerIn: parent
width: listview.width * 4/5
font.pixelSize: constants.fontSizeXXLarge
color: constants.mutedForeground
text: qsTr('No transactions yet in this wallet')
wrapMode: Text.Wrap
horizontalAlignment: Text.AlignHCenter
}
}
MouseArea {
id: vdragscroll
anchors {
top: listview.top
right: listview.right
bottom: listview.bottom
}
width: constants.fingerWidth
drag.target: dragb
onPressedChanged: if (pressed) {
dragb.y = mouseY + listview.y - dragb.height/2
}
}
Rectangle {
id: dragb
anchors.right: vdragscroll.left
width: postext.width + constants.paddingXXLarge
height: postext.height + constants.paddingXXLarge
radius: constants.paddingXSmall
color: constants.colorAlpha(Material.accentColor, 0.33)
border.color: Material.accentColor
opacity : vdragscroll.drag.active ? 1 : 0
Behavior on opacity { NumberAnimation { duration: 300 } }
onYChanged: {
if (vdragscroll.drag.active) {
listview.contentY =
Math.max(listview.originY,
Math.min(listview.contentHeight - listview.height + listview.originY,
((y-listview.y)/(listview.height - dragb.height)) * (listview.contentHeight - listview.height + listview.originY) ))
}
}
Label {
id: postext
anchors.centerIn: parent
text: dragb.opacity
? listview.itemAt(0,listview.contentY + (dragb.y + dragb.height/2)).delegateModel.date
: ''
font.pixelSize: constants.fontSizeLarge
}
}
Connections {
target: Network
function onHeightChanged(height) {
Daemon.currentWallet.historyModel.updateBlockchainHeight(height)
}
}
}