/*
 * Copyright (c) 2018 Frank Fischer <frank-fischer@shadow-soft.de>
 *
 * This program 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.
 *
 * This program 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 this program.  If not, see  <http://www.gnu.org/licenses/>
 */

import QtQuick 2.0
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.0
import Fotokopierer 1.0
import "../common"

ApplicationWindow {
    visible: true
    title: "Fotokopierer"

    width: 400
    height: 600

    property string colormode : "colored"

    ScannedImage {
        id: img
    }

    Item {
        id: cutbox;
        anchors.fill: parent

        CutImage {
            id: cutimage

            anchors.left: parent.left
            anchors.right: parent.right
            anchors.top: parent.top
            anchors.bottom: cutbuttons.top
        }

        Row {
            id: cutbuttons
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.bottom: parent.bottom

            Button {
                text: "Left"
                style: ButtonStyle {
                    background: Rectangle {
                        implicitWidth: 100
                        implicitHeight: 25
                        border.width: control.activeFocus ? 2 : 1
                        border.color: "#888"
                        radius: 4
                        gradient: Gradient {
                            GradientStop { position: 0 ; color: control.pressed ? "#ccc" : "#eee" }
                            GradientStop { position: 1 ; color: control.pressed ? "#aaa" : "#ccc" }
                        }
                    }

                    label: Text {
                        color: "black"
                        horizontalAlignment: Text.AlignHCenter
                        text: control.text
                    }
                }

                onClicked: cutimage.rotateLeft()
            }

            Button {
                text: "Right"
                onClicked: cutimage.rotateRight()
            }

            Button {
                text: "All"
                onClicked: cutimage.selectAll()
            }

            Button {
                text: "Accept"
                onClicked: {
                    cutbox.visible = false
                    colbox.visible = true
                }
            }
        }
    }

    Item {
        id: colbox
        anchors.fill: parent
        visible: false

        Image {
            id: colimage

            anchors.top: parent.top
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.bottom: contrastRow.top

            fillMode: Image.PreserveAspectFit

            source: "image://Scanned/" + img.cut +
                "/" + colormode +
                "/" + contrast.value +
                "/" + brightness.value +
                "/" + details.value
            cache: false
        }

        Row {
            id: contrastRow
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.bottom: brightnessRow.top

            Label {
                text: "Contrast: "
            }
            Slider {
                id: contrast
                minimumValue: 0
                maximumValue: 100
                stepSize: 1
                value: 50
            }
        }

        Row {
            id: brightnessRow
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.bottom: detailsRow.top

            Label {
                text: "Brightness"
            }
            Slider {
                id: brightness
                minimumValue: 0
                maximumValue: 100
                stepSize: 1
                value: 50
            }
        }

        Row {
            id: detailsRow
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.bottom: colbuttons.top

            Label {
                text: "Details"
            }
            Slider {
                id: details
                minimumValue: 0
                maximumValue: 100
                stepSize: 1
                value: 50
            }
        }

        Row {
            id: colbuttons
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.bottom: parent.bottom

            Button {
                text: "B&W"
                onClicked: colormode = "bw"
            }

            Button {
                text: "Gray"
                onClicked: colormode = "gray"
            }

            Button {
                text: "Colored"
                onClicked: colormode = "colored"
            }

            Button {
                text: "Accept"
                onClicked: {
                    cutbox.visible = true
                    colbox.visible = false
                }
            }
        }
    }
}
