aboutsummaryrefslogblamecommitdiffstats
path: root/ethereal/assets/qml/views/info.qml
blob: ca6ca077e0d310838a11775d42e0d58ce44d1c3f (plain) (tree)
1
2
3
4
5
6
7
8
9
10









                                         
                                               
                             







                              
                        









                                        
                                               






                                         
                                                       


                                                    
                                                             








                                              
                                   





                                                                               








































                                                                                           

         
























                                                                             
                                                   















                                                     
                                                      
































                                                                                                 
import QtQuick 2.0
import QtQuick.Controls 1.0;
import QtQuick.Layouts 1.0;
import QtQuick.Dialogs 1.0;
import QtQuick.Window 2.1;
import QtQuick.Controls.Styles 1.1
import Ethereum 1.0

Rectangle {
    property var title: "Information"
    property var iconSource: "../heart.png"
    property var menuItem

    objectName: "infoView"
    visible: false
    anchors.fill: parent

    color: "#00000000"

    Column {
        id: info
        spacing: 3
        anchors.fill: parent
        anchors.topMargin: 5
        anchors.leftMargin: 5

        Label {
            id: addressLabel
            text: "Address"
        }
        TextField {
            text: eth.key().address
            width: 500
        }

        Label {
            text: "Client ID"
        }
        TextField {
            text: gui.getCustomIdentifier()
            width: 500
            placeholderText: "Anonymous"
            onTextChanged: {
                gui.setCustomIdentifier(text)
            }
        }
    }

    property var addressModel: ListModel {
        id: addressModel
    }
    TableView {
        id: addressView
        width: parent.width
        height: 200
        anchors.bottom: logLayout.top
        TableViewColumn{ role: "name"; title: "name" }
        TableViewColumn{ role: "address"; title: "address"; width: 300}

        model: addressModel
        itemDelegate: Item {
            Text {
                anchors {
                    left: parent.left
                    right: parent.right
                    leftMargin: 10
                    verticalCenter: parent.verticalCenter
                }
                color: styleData.textColor
                elide: styleData.elideMode
                text: styleData.value
                font.pixelSize: 11
                MouseArea {
                    acceptedButtons: Qt.LeftButton | Qt.RightButton
                    propagateComposedEvents: true
                    anchors.fill: parent
                    onClicked: {
                        addressView.selection.clear()
                        addressView.selection.select(styleData.row)

                        if(mouse.button == Qt.RightButton) {
                            contextMenu.row = styleData.row;
                            contextMenu.popup()
                        }
                    }
                }
            }

        }

        Menu {
            id: contextMenu
            property var row;

            MenuItem {
                text: "Copy"
                onTriggered: {
                    copyToClipboard(addressModel.get(this.row).address)
                }
            }
        }
    }

    property var logModel: ListModel {
        id: logModel
    }
    RowLayout {
        id: logLayout
        width: parent.width
        height: 200
        anchors.bottom: parent.bottom
        TableView {
            id: logView
            headerVisible: false
            anchors {
                right: logLevelSlider.left
                left: parent.left
                bottom: parent.bottom
                top: parent.top
            }

            TableViewColumn{ role: "description" ; title: "log" }

            model: logModel
        }

        Slider {
            id: logLevelSlider
            value: gui.getLogLevelInt()
            anchors {
                right: parent.right
                top: parent.top
                bottom: parent.bottom

                rightMargin: 5
                leftMargin: 5
                topMargin: 5
                bottomMargin: 5
            }

            orientation: Qt.Vertical
            maximumValue: 5
            stepSize: 1

            onValueChanged: {
                gui.setLogLevel(value)
            }
        }
    }

    function addDebugMessage(message){
        debuggerLog.append({value: message})
    }

    function addAddress(address) {
        addressModel.append({name: address.name, address: address.address})
    }

    function clearAddress() {
        addressModel.clear()
    }

    function addLog(str) {
        // Remove first item once we've reached max log items
        if(logModel.count > 250) {
            logModel.remove(0)
        }

        if(str.len != 0) {
            if(logView.flickableItem.atYEnd) {
                logModel.append({description: str})
                logView.positionViewAtRow(logView.rowCount - 1, ListView.Contain)
            } else {
                logModel.append({description: str})
            }
        }

    }
}