Skip to content
Snippets Groups Projects
main.qml 4.55 KiB
Newer Older
  • Learn to ignore specific revisions
  • akiraohgaki's avatar
    akiraohgaki committed
    // Still support Qt 5.2, so doesn't use QtQuick.Dialogs 1.2
    import QtQuick 2.0
    
    akiraohgaki's avatar
    akiraohgaki committed
    import QtQuick.Window 2.0
    
    akiraohgaki's avatar
    akiraohgaki committed
    import QtQuick.Layouts 1.0
    import QtQuick.Controls 1.0
    
    import "ui" as Ui
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    import "scripts/Utility.js" as Utility
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
    Window {
    
    akiraohgaki's avatar
    akiraohgaki committed
        id: app
    
    akiraohgaki's avatar
    akiraohgaki committed
    
        title: configHandler.getAppConfigApplication().name
    
        width: 400
        height: 200
        minimumWidth: 400
        minimumHeight: 200
        maximumWidth: 800
        maximumHeight: 400
    
    akiraohgaki's avatar
    akiraohgaki committed
        visible: true
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
        function init() {
    
    akiraohgaki's avatar
    akiraohgaki committed
            var metadata = ocsUrlHandler.metadata();
    
            var primaryMessages = {
    
    akiraohgaki's avatar
    akiraohgaki committed
                "success_download": qsTr("Download successfull"),
                "success_install": qsTr("Installation successfull"),
                "error_validation": qsTr("Validation error"),
                "error_network": qsTr("Network error"),
                "error_save": qsTr("Saving file failed"),
                "error_install": qsTr("Installation failed")
    
    akiraohgaki's avatar
    akiraohgaki committed
            ocsUrlHandler.started.connect(function() {
    
    akiraohgaki's avatar
    akiraohgaki committed
                confirmDialog.close();
    
                progressDialog.open();
            });
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
            ocsUrlHandler.finishedWithSuccess.connect(function(result) {
    
                progressDialog.close();
    
    akiraohgaki's avatar
    akiraohgaki committed
                infoDialog.primaryText = primaryMessages[result.status];
    
                infoDialog.informativeText = metadata.filename;
    
    akiraohgaki's avatar
    akiraohgaki committed
                //infoDialog.detailedText = result.message;
    
                infoDialog.open();
            });
    
    akiraohgaki's avatar
    akiraohgaki committed
    
    
    akiraohgaki's avatar
    akiraohgaki committed
            ocsUrlHandler.finishedWithError.connect(function(result) {
    
                progressDialog.close();
    
    akiraohgaki's avatar
    akiraohgaki committed
                errorDialog.primaryText = primaryMessages[result.status];
    
                errorDialog.informativeText = metadata.filename;
    
    akiraohgaki's avatar
    akiraohgaki committed
                //errorDialog.detailedText = result.message;
    
                errorDialog.open();
    
    akiraohgaki's avatar
    akiraohgaki committed
            });
    
    
    akiraohgaki's avatar
    akiraohgaki committed
            ocsUrlHandler.downloadProgress.connect(function(id, bytesReceived, bytesTotal) {
    
    akiraohgaki's avatar
    akiraohgaki committed
                progressDialog.primaryText = qsTr("Downloading");
                progressDialog.informativeText = metadata.filename;
                progressDialog.progress = bytesReceived / bytesTotal;
                progressDialog.progressText
                        = Utility.convertByteToHumanReadable(bytesReceived)
                        + " / " + Utility.convertByteToHumanReadable(bytesTotal);
    
    akiraohgaki's avatar
    akiraohgaki committed
            if (ocsUrlHandler.isValid()) {
    
    akiraohgaki's avatar
    akiraohgaki committed
                if (metadata.command === "download") {
    
    akiraohgaki's avatar
    akiraohgaki committed
                    confirmDialog.primaryText = qsTr("Do you want to download?");
    
    akiraohgaki's avatar
    akiraohgaki committed
                }
                else if (metadata.command === "install") {
    
    akiraohgaki's avatar
    akiraohgaki committed
                    confirmDialog.primaryText = qsTr("Do you want to install?");
    
    akiraohgaki's avatar
    akiraohgaki committed
                confirmDialog.informativeText = metadata.filename;
    
    akiraohgaki's avatar
    akiraohgaki committed
                /*
                confirmDialog.detailedText
                        = qsTr("URL") + ": " + metadata.url + "\n\n"
    
    akiraohgaki's avatar
    akiraohgaki committed
                        + qsTr("File") + ": " + metadata.filename + "\n\n"
    
    akiraohgaki's avatar
    akiraohgaki committed
                        + qsTr("Type") + ": " + configHandler.getAppConfigInstallTypes()[metadata.type].name;
                */
    
    akiraohgaki's avatar
    akiraohgaki committed
                confirmDialog.open();
            }
            else {
    
    akiraohgaki's avatar
    akiraohgaki committed
                errorDialog.primaryText = primaryMessages["error_validation"];
                errorDialog.informativeText = qsTr("Invalid OCS-URL");
    
    akiraohgaki's avatar
    akiraohgaki committed
                errorDialog.open();
            }
        }
    
    akiraohgaki's avatar
    akiraohgaki committed
    
        Ui.Dialog {
            id: confirmDialog
            //icon: StandardIcon.Question
            acceptButton.text: qsTr("OK")
            acceptButton.onClicked: ocsUrlHandler.process()
            rejectButton.text: qsTr("Cancel")
            rejectButton.onClicked: Qt.quit()
        }
    
        Ui.Dialog {
            id: infoDialog
            //icon: StandardIcon.Information
            acceptButton.text: qsTr("Open")
            acceptButton.onClicked: {
                ocsUrlHandler.openDestination();
                Qt.quit();
            }
            rejectButton.text: qsTr("Close")
            rejectButton.onClicked: Qt.quit()
        }
    
        Ui.Dialog {
            id: errorDialog
            //icon: StandardIcon.Warning
            rejectButton.text: qsTr("Close")
            rejectButton.onClicked: Qt.quit()
        }
    
        Ui.Dialog {
            id: progressDialog
    
    akiraohgaki's avatar
    akiraohgaki committed
            //icon: StandardIcon.NoIcon
    
    akiraohgaki's avatar
    akiraohgaki committed
            rejectButton.text: qsTr("Cancel")
            rejectButton.onClicked: Qt.quit()
            property alias progress: progressBar.value
            property alias progressText: progressText.text
            content: ColumnLayout {
    
    akiraohgaki's avatar
    akiraohgaki committed
                anchors.fill: parent
    
    akiraohgaki's avatar
    akiraohgaki committed
                spacing: 8
                ProgressBar {
                    id: progressBar
                    minimumValue: 0
                    maximumValue: 1
                    value: 0
                    Layout.fillWidth: true
                }
                Label {
                    id: progressText
                    text: ""
                    anchors.right: parent.right
                }
            }
        }
    
        Component.onCompleted: {
            app.init();
        }
    
    akiraohgaki's avatar
    akiraohgaki committed
    }