Skip to content
Snippets Groups Projects
main.qml 2.14 KiB
Newer Older
akiraohgaki's avatar
akiraohgaki committed
import QtQuick 2.0
akiraohgaki's avatar
akiraohgaki committed
import QtQuick.Window 2.0
akiraohgaki's avatar
akiraohgaki committed
import QtQuick.Dialogs 1.1
akiraohgaki's avatar
akiraohgaki committed

akiraohgaki's avatar
akiraohgaki committed
Window {
akiraohgaki's avatar
akiraohgaki committed
    id: root
    title: Qt.application.name
akiraohgaki's avatar
akiraohgaki committed

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

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

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

akiraohgaki's avatar
akiraohgaki committed
    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];
akiraohgaki's avatar
akiraohgaki committed
                infoDialog.detailedText = xdgUrlHandler.getXdgUrl();
akiraohgaki's avatar
akiraohgaki committed
                infoDialog.open();
            }
            else if (result.error) {
                errorDialog.text = messages[result.error];
akiraohgaki's avatar
akiraohgaki committed
                errorDialog.detailedText = xdgUrlHandler.getXdgUrl();
akiraohgaki's avatar
akiraohgaki committed
                errorDialog.open();
            }
        });

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