mirror of
https://github.com/QuasarApp/QtAndroidTools.git
synced 2025-04-28 22:14:31 +00:00
178 lines
6.2 KiB
QML
178 lines
6.2 KiB
QML
|
|
import QtQuick 2.12
|
|
import QtQuick.Controls 2.12
|
|
import QtQuick.Dialogs 1.3
|
|
import QtAndroidTools 1.0
|
|
|
|
Page {
|
|
id: page
|
|
padding: 20
|
|
|
|
function downloadInProgress(downloading)
|
|
{
|
|
buttonStartDownload.enabled = !downloading;
|
|
buttonPauseDownload.enabled = downloading;
|
|
buttonContinueDownload.enabled = downloading;
|
|
buttonAbortDownload.enabled = downloading;
|
|
}
|
|
|
|
function downloadFiles()
|
|
{
|
|
QtAndroidApkExpansionFiles.base64PublicKey = "app_public_key_here";
|
|
QtAndroidApkExpansionFiles.salt = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
|
|
QtAndroidApkExpansionFiles.main.version = 1;
|
|
QtAndroidApkExpansionFiles.main.size = 123456789;
|
|
QtAndroidApkExpansionFiles.patch.version = 1;
|
|
QtAndroidApkExpansionFiles.patch.size = 123456789;
|
|
|
|
if(QtAndroidApkExpansionFiles.base64PublicKey === "")
|
|
{
|
|
errorMessageBox.text = "Invalid base64PublicKey";
|
|
errorMessageBox.open();
|
|
return;
|
|
}
|
|
|
|
switch(QtAndroidApkExpansionFiles.startDownloadFiles())
|
|
{
|
|
case QtAndroidApkExpansionFiles.APKEF_NO_DOWNLOAD_REQUIRED:
|
|
fileDeliveredMessageBox.open();
|
|
break;
|
|
case QtAndroidApkExpansionFiles.APKEF_DOWNLOAD_STARTED:
|
|
case QtAndroidApkExpansionFiles.APKEF_LVL_CHECK_REQUIRED:
|
|
page.downloadInProgress(true);
|
|
break;
|
|
case QtAndroidApkExpansionFiles.APKEF_STORAGE_READ_PERMISSION_REQUIRED:
|
|
case QtAndroidApkExpansionFiles.APKEF_STORAGE_WRITE_PERMISSION_REQUIRED:
|
|
errorMessageBox.text = "Without storage access permission the app can not download expansion files";
|
|
errorMessageBox.open();
|
|
page.downloadInProgress(false);
|
|
break;
|
|
default:
|
|
errorMessageBox.text = "Sorry, unknown error happened";
|
|
errorMessageBox.open();
|
|
page.downloadInProgress(false);
|
|
break;
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: QtAndroidApkExpansionFiles
|
|
onDownloadStateChanged: {
|
|
switch(newState)
|
|
{
|
|
case QtAndroidApkExpansionFiles.STATE_COMPLETED:
|
|
fileDeliveredMessageBox.open();
|
|
page.downloadInProgress(false);
|
|
break;
|
|
case QtAndroidApkExpansionFiles.STATE_FAILED_UNLICENSED:
|
|
case QtAndroidApkExpansionFiles.STATE_FAILED_FETCHING_URL:
|
|
case QtAndroidApkExpansionFiles.STATE_FAILED_SDCARD_FULL:
|
|
case QtAndroidApkExpansionFiles.STATE_FAILED_CANCELED:
|
|
case QtAndroidApkExpansionFiles.STATE_FAILED:
|
|
errorMessageBox.text = QtAndroidApkExpansionFiles.getString(newState-1);
|
|
errorMessageBox.open();
|
|
page.downloadInProgress(false);
|
|
break;
|
|
}
|
|
downloadStateLabel.text = QtAndroidApkExpansionFiles.getString(newState-1);
|
|
}
|
|
onDownloadProgress: {
|
|
var time = new Date(timeRemaining);
|
|
downloadProgressBar.to = overallTotal;
|
|
downloadProgressBar.value = overallProgress;
|
|
downloadSizeLabel.text = (overallProgress / (1024*1024)).toFixed(2) + "MB/" + (overallTotal / (1024*1024)).toFixed(2) + "MB";
|
|
downloadTimeLabel.text = "Time left: ";
|
|
if(timeRemaining > 1000 * 60 * 60)
|
|
downloadTimeLabel.text += ("0" + time.getHours()).substr(-2) + ":" + ("0" + time.getMinutes()).substr(-2);
|
|
else
|
|
downloadTimeLabel.text += ("0" + time.getMinutes()).substr(-2) + ":" + ("0" + time.getSeconds()).substr(-2);
|
|
}
|
|
}
|
|
|
|
Column {
|
|
anchors.fill: parent
|
|
spacing: 20
|
|
|
|
Label {
|
|
width: parent.width
|
|
text: "Download apk expansion files"
|
|
horizontalAlignment: Text.AlignHCenter
|
|
wrapMode: Label.Wrap
|
|
font.pixelSize: 14
|
|
font.bold: true
|
|
}
|
|
|
|
ProgressBar {
|
|
id: downloadProgressBar
|
|
width: parent.width * 0.85
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
from: 0
|
|
}
|
|
|
|
Label {
|
|
id: downloadStateLabel
|
|
width: parent.width
|
|
horizontalAlignment: Text.AlignHCenter
|
|
wrapMode: Label.Wrap
|
|
font.pixelSize: 15
|
|
}
|
|
|
|
Button {
|
|
id: buttonStartDownload
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
text: "Start download"
|
|
onClicked: page.downloadFiles()
|
|
}
|
|
Button {
|
|
id: buttonPauseDownload
|
|
enabled: false
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
text: "Pause download"
|
|
onClicked: QtAndroidApkExpansionFiles.pauseDownload()
|
|
}
|
|
Button {
|
|
id: buttonContinueDownload
|
|
enabled: false
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
text: "Continue download"
|
|
onClicked: QtAndroidApkExpansionFiles.continueDownload()
|
|
}
|
|
Button {
|
|
id: buttonAbortDownload
|
|
enabled: false
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
text: "Abort download"
|
|
onClicked: QtAndroidApkExpansionFiles.abortDownload()
|
|
}
|
|
|
|
Label {
|
|
id: downloadSizeLabel
|
|
width: parent.width
|
|
anchors.left: parent.left
|
|
horizontalAlignment: Text.AlignHCenter
|
|
font.pixelSize: 14
|
|
fontSizeMode: Text.Fit
|
|
}
|
|
Label {
|
|
id: downloadTimeLabel
|
|
width: parent.width
|
|
anchors.right: parent.right
|
|
horizontalAlignment: Text.AlignHCenter
|
|
font.pixelSize: 14
|
|
fontSizeMode: Text.Fit
|
|
}
|
|
}
|
|
|
|
MessageDialog {
|
|
id: errorMessageBox
|
|
standardButtons: StandardButton.Ok
|
|
title: "Error"
|
|
}
|
|
MessageDialog {
|
|
id: fileDeliveredMessageBox
|
|
standardButtons: StandardButton.Ok
|
|
title: "Advise"
|
|
text: "Apk expension files available:\n" + QtAndroidApkExpansionFiles.mainFileName() + "\n" + QtAndroidApkExpansionFiles.patchFileName()
|
|
}
|
|
}
|