import QtQuick 2.0
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.3
import Nemo.Notifications 1.0

Page {
    id: iconEditor

    property var attrs
    property var corners: [true, true, true, true]

    Notification {
        id: notification
        appIcon: "/usr/share/icons/hicolor/86x86/apps/harbour-muchkin"
        expireTimeout: 5000

        function sendMessage(msg) {
            notification.previewBody = msg
            notification.publish()
        }
    }

    SilicaFlickable {
        id: mainList
        anchors.fill: parent

        PullDownMenu {
            MenuItem {
                text: "Search a better icon"
                onClicked: {
                    py.importModule("main", function(){
                        py.call("main.scrape_icon", [iconEditor.attrs.URL], function(result){
                            if(result) {
                                icon.source = result;
                                iconEditor.attrs.Icon = result;
                                notification.sendMessage("A better icon found");
                            } else {
                                notification.sendMessage("Not better icon found");
                            }
                        })
                    })
                }
            }
        }

        PageHeader {
            id: header
            width: parent.width
            title: "name: " + attrs.Name
        }

        SilicaGridView {
            anchors.top: header.bottom
            width: parent.width
            height: width
            cellWidth: width / 2
            cellHeight: cellWidth

            model: ListModel {
                id: gridItems

                ListElement {
                    idCell: 0
                    activated: true
                }
                ListElement {
                    idCell: 1
                    activated: true
                }
                ListElement {
                    idCell: 2
                    activated: true
                }
                ListElement {
                    idCell: 3
                    activated: true
                }
            }

            delegate: GridItem {
                onClicked: {
                    activated = !activated
                    iconEditor.corners[idCell] = activated
                    py.importModule("main", function(){
                        py.call("main.sailify", [(iconEditor.attrs.old_icon || iconEditor.attrs.Icon).toString(), iconEditor.corners, size.value], function(result){
                            icon.source = result
                        })
                    })
                }
            }
        }

        Image {
            id: icon
            anchors.top: header.bottom
            width: parent.width
            height: width
        }

        Slider {
            id: size
            anchors.top: icon.bottom
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.topMargin: 10
            label: "Size:"
            width: parent.width
            minimumValue: 0
            maximumValue: 100
            stepSize: 10
            value: 100
            onReleased: {
                py.importModule("main", function(){
                    py.call("main.sailify", [(iconEditor.attrs.old_icon || iconEditor.attrs.Icon).toString(), iconEditor.corners, size.value], function(result){
                        icon.source = result
                    })
                })
            }
        }

        Button {
            anchors.top: size.bottom
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.topMargin: 20
            text: "Save"
            onClicked: {
                if(iconEditor.attrs.old_icon === undefined) {
                    iconEditor.attrs.old_icon = iconEditor.attrs.Icon.toString()
                }
                iconEditor.attrs.Icon = icon.source.toString()
                py.importModule("main", function(){
                    py.call("main.save_icon", [iconEditor.attrs], function(result){
                        if(result){
                            pageStack.pop()
                            pageStack.completeAnimation()
                            pageStack.currentPage.mainList.reload()
                        }
                    })
                })
            }
        }

        Python {
            id: py
            Component.onCompleted: {
                py.addImportPath(Qt.resolvedUrl("../src"));
                py.importModule("main", function(){
                    py.call("main.sailify", [(iconEditor.attrs.old_icon || iconEditor.attrs.Icon).toString(), [1, 1, 1, 1], size.value], function(result){
                        icon.source = result
                    })
                })
            }
        }

    }

}
