Screenshot.qml 7.11 KB
Newer Older
Carson Black's avatar
Carson Black committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
import QtQuick 2.12
import QtQuick.Layouts 1.12
import org.kde.kirigami 2.5 as Kirigami
import QtQuick.Controls 2.5
import QtQuick.Dialogs 1.3

Item {
    id: screenRoot
    visible: false
    width: 800
    height: 400 + (400 * 1/3)
    Item {
        anchors.fill: parent
        Row {
            anchors.fill: parent
            ColumnLayout {
                spacing: 0
                height: parent.height
                width: parent.width / 2
                Image {
                    Layout.fillHeight: true
                    Layout.fillWidth: true
                    source: "qrc:/bg.jpg"
                    Grid {
                        anchors.fill: parent
                        columns: 3
                        rows: 3
                        Repeater {
                            model: 4
                            GridRect {
                                LightIcon {
                                    anchors.centerIn: parent
                                    source: root.icons[index]
                                }
                            }
                        }
                        GridRect {
                            LightIcon {
                                anchors.centerIn: parent
                                source: root.imageSource
                            }
                        }
                        Repeater {
                            model: 4
                            GridRect {
                                LightIcon {
                                    anchors.centerIn: parent
                                    source: root.icons[index+4]
                                }
                            }
                        }
                    }
                }
                Rectangle {
                    height: 400 * 1/3
                    Layout.fillWidth: true
                    color: root.leftColor
                    Grid {
                        anchors.fill: parent
                        columns: 4
                        rows: 2
                        Repeater {
                            model: sizesModel
                            SmallGridRect {
                                LightIcon {
                                    anchors.bottomMargin: -Kirigami.Units.largeSpacing
                                    anchors.bottom: parent.bottom
                                    anchors.horizontalCenter: parent.horizontalCenter
                                    source: root.imageSource
                                    size: model["size"]
                                }
                            }
                        }
                        Repeater {
                            model: sizesModel
                            SmallGridRect {
                                Label {
                                    anchors.centerIn: parent
                                    color: root.rightColor
                                    text: model["size"]
                                }
                            }
                        }
                    }
                    Behavior on color {
                        ColorAnimation {
                            duration: Kirigami.Units.longDuration
                        }
                    }
                }
            }
            ColumnLayout {
                spacing: 0
                height: parent.height
                width: parent.width / 2
                Image {
                    Layout.fillHeight: true
                    Layout.fillWidth: true
                    source: "qrc:/bg-dark.jpg"
                    Grid {
                        anchors.fill: parent
                        columns: 3
                        rows: 3
                        Repeater {
                            model: 4
                            GridRect {
                                DarkIcon {
                                    anchors.centerIn: parent
                                    source: root.icons[index]
                                }
                            }
                        }
                        GridRect {
                            DarkIcon {
                                anchors.centerIn: parent
                                source: root.imageSource
                            }
                        }
                        Repeater {
                            model: 4
                            GridRect {
                                DarkIcon {
                                    anchors.centerIn: parent
                                    source: root.icons[index+4]
                                }
                            }
                        }
                    }
                }
                Rectangle {
                    color: root.rightColor
                    height: 400 * 1/3
                    Layout.fillWidth: true
                    Grid {
                        anchors.fill: parent
                        columns: 4
                        rows: 2
                        Repeater {
                            model: sizesModel
                            SmallGridRect {
                                DarkIcon {
                                    anchors.bottomMargin: -Kirigami.Units.largeSpacing
                                    anchors.bottom: parent.bottom
                                    anchors.horizontalCenter: parent.horizontalCenter
                                    source: root.imageSource
                                    size: model["size"]
                                }
                            }
                        }
                        Repeater {
                            model: sizesModel
                            SmallGridRect {
                                Label {
                                    anchors.centerIn: parent
                                    color: root.leftColor
                                    text: model["size"]
                                }
                            }
                        }
                    }
                    Behavior on color {
                        ColorAnimation {
                            duration: Kirigami.Units.longDuration
                        }
                    }
                }
            }
        }
    }
    Row {
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.margins: Kirigami.Units.smallSpacing
        LightIcon {
            size: 32
            source: "qrc:/ikona.svg"
        }
        Label {
            anchors.verticalCenter: parent.verticalCenter
            color: root.rightColor
            text: "Montage made with Ikona"
        }
    }
    function open() {
        screenshotSavePicker.open()
    }
    FileDialog {
        id: screenshotSavePicker
        selectExisting: false
        selectMultiple: false
        selectFolder: false
        onAccepted: {
            screenRoot.grabToImage(function(result) {
                res = result.saveToFile(screenshotSavePicker.fileUrl.toString().slice(7));
                console.log(res);
            });
        }
        nameFilters: [ "PNG screenshot files (*.png)" ]
    }
}