Skip to content
Snippets Groups Projects
main.qml 3.14 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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
    
        width: 400
        height: 200
        minimumWidth: 400
        minimumHeight: 200
        maximumWidth: 800
        maximumHeight: 400
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        MessageDialog {
            id: confirmDialog
            title: root.title
    
    akiraohgaki's avatar
    akiraohgaki committed
            icon: StandardIcon.Question
    
    akiraohgaki's avatar
    akiraohgaki committed
            text: ''
    
    akiraohgaki's avatar
    akiraohgaki committed
            detailedText: ''
    
    akiraohgaki's avatar
    akiraohgaki committed
            standardButtons: StandardButton.Ok | StandardButton.Cancel
            onAccepted: xdgUrlHandler.process()
            onRejected: Qt.quit()
        }
    
        MessageDialog {
            id: infoDialog
            title: root.title
    
    akiraohgaki's avatar
    akiraohgaki committed
            icon: StandardIcon.Information
    
    akiraohgaki's avatar
    akiraohgaki committed
            text: ''
    
    akiraohgaki's avatar
    akiraohgaki committed
            detailedText: ''
    
    akiraohgaki's avatar
    akiraohgaki committed
            onAccepted: Qt.quit()
        }
    
        MessageDialog {
            id: errorDialog
            title: root.title
    
    akiraohgaki's avatar
    akiraohgaki committed
            icon: StandardIcon.Warning
    
    akiraohgaki's avatar
    akiraohgaki committed
            text: ''
    
    akiraohgaki's avatar
    akiraohgaki committed
            detailedText: ''
    
    akiraohgaki's avatar
    akiraohgaki committed
            onAccepted: Qt.quit()
    
    akiraohgaki's avatar
    akiraohgaki committed
        }
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        Component.onCompleted: {
            xdgUrlHandler.finished.connect(function(result) {
                result = JSON.parse(result);
    
    akiraohgaki's avatar
    akiraohgaki committed
                var metadata = JSON.parse(xdgUrlHandler.getMetadata());
    
    akiraohgaki's avatar
    akiraohgaki committed
                var messages = {
    
    akiraohgaki's avatar
    akiraohgaki committed
                    'success_download': 'Download successfull',
                    'success_install': 'Installation successfull',
                    'error_validation': 'Validation error',
                    'error_network': 'Network error',
                    'error_filetype': 'File type error',
                    'error_save': 'Saving file failed',
                    'error_install': 'Installation failed'
    
    akiraohgaki's avatar
    akiraohgaki committed
                };
                if (result.success) {
    
    akiraohgaki's avatar
    akiraohgaki committed
                    infoDialog.text
                            = (metadata.command === 'install' ? 'Install' : 'Download')
                            + ': ' + metadata.filename
                            + '\n\n'
                            + messages[result.success];
                    infoDialog.detailedText
                            = 'The file has stored into: ' + result.destination;
    
    akiraohgaki's avatar
    akiraohgaki committed
                    infoDialog.open();
                }
                else if (result.error) {
    
    akiraohgaki's avatar
    akiraohgaki committed
                    errorDialog.text
                            = (metadata.command === 'install' ? 'Install' : 'Download')
                            + ': ' + metadata.filename
                            + '\n\n'
                            + messages[result.error];
                    errorDialog.detailedText = result.detail;
    
    akiraohgaki's avatar
    akiraohgaki committed
                    errorDialog.open();
                }
            });
    
            if (xdgUrlHandler.isValid()) {
    
    akiraohgaki's avatar
    akiraohgaki committed
                var metadata = JSON.parse(xdgUrlHandler.getMetadata());
                confirmDialog.text
                        = (metadata.command === 'install' ? 'Install' : 'Download')
                        + ': ' + metadata.filename
                        + '\n\n'
                        + 'Do you want to continue?';
                confirmDialog.detailedText
                        = 'URL: ' + metadata.url
                        + '\n\n'
                        + 'File: ' + metadata.filename
                        + '\n\n'
                        + 'Type: ' + metadata.type;
    
    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
    }