-
Notifications
You must be signed in to change notification settings - Fork 199
Added option to stop and resume download #732
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -42,6 +42,8 @@ Page { | |||||||||||||||||||||||||
| qsTr("Preparing %1").arg(file) | ||||||||||||||||||||||||||
| else if (currentStatus === Units.DownloadStatus.Ready) | ||||||||||||||||||||||||||
| qsTr("Ready to write %1").arg(file) | ||||||||||||||||||||||||||
| else if (currentStatus === Units.DownloadStatus.Stopped) | ||||||||||||||||||||||||||
| qsTr("%1 has been stopped").arg(file) | ||||||||||||||||||||||||||
| else if (currentStatus == Units.DownloadStatus.Failed_Download) | ||||||||||||||||||||||||||
| qsTr("Failed to download %1").arg(file) | ||||||||||||||||||||||||||
| else | ||||||||||||||||||||||||||
|
|
@@ -78,12 +80,12 @@ Page { | |||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| QQC2.Label { | ||||||||||||||||||||||||||
| visible: currentStatus == Units.DownloadStatus.Downloading | ||||||||||||||||||||||||||
| visible: currentStatus == Units.DownloadStatus.Downloading || currentStatus == Units.DownloadStatus.Stopped | ||||||||||||||||||||||||||
| text: downloadPage.leftStr | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| QQC2.Label { | ||||||||||||||||||||||||||
| visible: currentStatus == Units.DownloadStatus.Downloading | ||||||||||||||||||||||||||
| visible: currentStatus == Units.DownloadStatus.Downloading || currentStatus == Units.DownloadStatus.Stopped | ||||||||||||||||||||||||||
| text: downloadPage.rightStr | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
|
|
@@ -135,6 +137,14 @@ Page { | |||||||||||||||||||||||||
| wrapMode: QQC2.Label.Wrap | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| QQC2.Label { | ||||||||||||||||||||||||||
| id: messageContinueDownload | ||||||||||||||||||||||||||
| visible: currentStatus === Units.DownloadStatus.Stopped | ||||||||||||||||||||||||||
| text: qsTr("Download has been stopped.") | ||||||||||||||||||||||||||
| wrapMode: Label.Wrap | ||||||||||||||||||||||||||
| width: mainColumn.width | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| QQC2.Label { | ||||||||||||||||||||||||||
| id: messageSelectedImage | ||||||||||||||||||||||||||
| visible: releases.selected.isLocal | ||||||||||||||||||||||||||
|
|
@@ -228,19 +238,37 @@ Page { | |||||||||||||||||||||||||
| releases.variant | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||
| State { | ||||||||||||||||||||||||||
| name: "stopped" | ||||||||||||||||||||||||||
| when: currentStatus === Units.DownloadStatus.Stopped | ||||||||||||||||||||||||||
| PropertyChanges { | ||||||||||||||||||||||||||
| target: progressBar; | ||||||||||||||||||||||||||
| value: releases.variant.progress.ratio | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| PropertyChanges { | ||||||||||||||||||||||||||
| target: messageContinueDownload; | ||||||||||||||||||||||||||
| visible: true | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| // There will be only [Finish] button on the right side so [Cancel] button | ||||||||||||||||||||||||||
| // is not necessary | ||||||||||||||||||||||||||
| previousButtonVisible: currentStatus != Units.DownloadStatus.Finished | ||||||||||||||||||||||||||
| previousButtonText: qsTr("Cancel") | ||||||||||||||||||||||||||
| previousButtonText: { | ||||||||||||||||||||||||||
| if (releases.variant.status === Units.DownloadStatus.Downloading) | ||||||||||||||||||||||||||
| return qsTr("Pause") | ||||||||||||||||||||||||||
| else | ||||||||||||||||||||||||||
| return qsTr("Cancel") | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
|
Comment on lines
+243
to
+245
|
||||||||||||||||||||||||||
| previousButtonText: { | |
| return qsTr("Cancel") | |
| } | |
| previousButtonText: qsTr("Cancel") |
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't you mean [Resume] and [Pause]? Also, in case of the verification, I don't think there is a sensible action besides [Cancel] to do here.
Copilot
AI
Jan 21, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment states "This will be [Resume] or [Pause] button to finish download or resume download" but the logic includes FINISHED status which doesn't align with pause/resume functionality. The FINISHED status check should be kept separate with its own comment for clarity.
| // This will be [Resume] or [Pause] button to finish download or resume download | |
| if (currentStatus == Units.DownloadStatus.Finished || | |
| currentStatus == Units.DownloadStatus.Paused || | |
| currentStatus == Units.DownloadStatus.Downloading) | |
| return true | |
| // This will be [Finish] button once the download and write process is completed | |
| if (currentStatus == Units.DownloadStatus.Finished) | |
| return true | |
| // This will be [Resume] or [Pause] button to resume or temporarily stop an in-progress download | |
| else if (currentStatus == Units.DownloadStatus.Paused || | |
| currentStatus == Units.DownloadStatus.Downloading) | |
| return true |
Copilot
AI
Jan 21, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When resuming from a paused state, the code attempts to write to a drive even if the download hasn't completed yet. The resume logic should first complete the download before attempting to write. The current implementation will call both download() and write() simultaneously, which could cause unexpected behavior. Consider only calling download() when resuming from PAUSED status, and let the normal flow handle writing once the download is complete and the status becomes READY.
| if (selectedOption != Units.MainSelect.Write) | |
| releases.variant.download() | |
| if (drives.length) { | |
| drives.selected.setImage(releases.variant) | |
| drives.selected.write(releases.variant) | |
| } | |
| if (selectedOption != Units.MainSelect.Write) | |
| releases.variant.download() | |
| // When resuming from Paused, only resume download. | |
| // Writing will be handled by the normal flow once status is Ready. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wouldn't also add this info text.