import QtQuick 2.0
import QtQuick.Window 2.0
import QtQuick.Dialogs 1.1

Window {
    id: root
    title: Qt.application.name
    width: 400
    height: 200
    minimumWidth: 400
    minimumHeight: 200
    maximumWidth: 800
    maximumHeight: 400

    MessageDialog {
        id: confirmDialog
        title: root.title
        text: ''
        detailedText: ''
        icon: StandardIcon.Question
        standardButtons: StandardButton.Ok | StandardButton.Cancel
        onAccepted: xdgUrlHandler.process()
        onRejected: Qt.quit()
    }

    MessageDialog {
        id: infoDialog
        title: root.title
        text: ''
        detailedText: ''
        icon: StandardIcon.Information
        onAccepted: Qt.quit()
    }

    MessageDialog {
        id: errorDialog
        title: root.title
        text: ''
        detailedText: ''
        icon: StandardIcon.Warning
        onAccepted: Qt.quit()
    }

    Component.onCompleted: {
        xdgUrlHandler.finished.connect(function(result) {
            result = JSON.parse(result);
            var messages = {
                'download_success': 'Download finished',
                'install_success': 'Installation finished',
                'validation_error': 'Invalid XDG-URL',
                'network_error': 'Download failed',
                'filetype_error': 'Incorrect file type',
                'save_error': 'Saving file failed',
                'install_error': 'Installation failed'
            };
            if (result.success) {
                infoDialog.text = messages[result.success];
                infoDialog.detailedText = xdgUrlHandler.getXdgUrl();
                infoDialog.open();
            }
            else if (result.error) {
                errorDialog.text = messages[result.error];
                errorDialog.detailedText = xdgUrlHandler.getXdgUrl();
                errorDialog.open();
            }
        });

        if (xdgUrlHandler.isValid()) {
            confirmDialog.text = 'Do you want to continue?';
            confirmDialog.detailedText = xdgUrlHandler.getXdgUrl();
            confirmDialog.open();
        }
        else {
            errorDialog.text = 'Invalid XDG-URL';
            errorDialog.detailedText = xdgUrlHandler.getXdgUrl();
            errorDialog.open();
        }
    }
}