mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[net] add ISO selection after successful download
* Also use UM_TIMER_START message to start timed operations
This commit is contained in:
parent
e073fb47b0
commit
2a77763dc3
4 changed files with 45 additions and 33 deletions
31
src/net.c
31
src/net.c
|
@ -825,8 +825,8 @@ static DWORD WINAPI DownloadISOThread(LPVOID param)
|
|||
static_sprintf(icon_path, "%s%s.ico", temp_dir, APPLICATION_NAME);
|
||||
ExtractAppIcon(icon_path, TRUE);
|
||||
|
||||
PrintInfo(0, MSG_149);
|
||||
|
||||
//#define FORCE_URL "https://github.com/pbatard/rufus/raw/master/res/loc/test/windows_to_go.iso"
|
||||
#if !defined(FORCE_URL)
|
||||
#if defined(RUFUS_TEST)
|
||||
// In test mode, just use our local script
|
||||
static_strcpy(script_path, "D:\\Projects\\Fido\\Fido.ps1");
|
||||
|
@ -844,7 +844,12 @@ static DWORD WINAPI DownloadISOThread(LPVOID param)
|
|||
}
|
||||
free(sig);
|
||||
uprintf("Signature is valid ✓");
|
||||
SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0);
|
||||
SetTaskbarProgressState(TASKBAR_NORMAL);
|
||||
SetTaskbarProgressValue(0, MAX_PROGRESS);
|
||||
SendMessage(hProgress, PBM_SETPOS, 0, 0);
|
||||
}
|
||||
PrintInfo(0, MSG_149);
|
||||
|
||||
assert((fido_script != NULL) && (fido_len != 0));
|
||||
|
||||
|
@ -881,7 +886,11 @@ static DWORD WINAPI DownloadISOThread(LPVOID param)
|
|||
FormatStatus = RunCommand(cmdline, app_dir, TRUE);
|
||||
if ((FormatStatus == 0) && PeekNamedPipe(hPipe, NULL, dwPipeSize, NULL, &dwAvail, NULL) && (dwAvail != 0)) {
|
||||
url = malloc(dwAvail + 1);
|
||||
if ((url != NULL) && ReadFile(hPipe, url, dwAvail, &dwSize, NULL) && (dwSize != 0)) {
|
||||
if ((url != NULL) && ReadFile(hPipe, url, dwAvail, &dwSize, NULL) && (dwSize > 4)) {
|
||||
#else
|
||||
{ { url = strdup(FORCE_URL);
|
||||
dwSize = (DWORD)strlen(FORCE_URL);
|
||||
#endif
|
||||
IMG_SAVE img_save = { 0 };
|
||||
url[dwSize] = 0;
|
||||
for (i = dwSize - 1; i != 0; i--) {
|
||||
|
@ -893,12 +902,10 @@ static DWORD WINAPI DownloadISOThread(LPVOID param)
|
|||
p = strstr(iso_name, ".iso");
|
||||
if (p != NULL) {
|
||||
p[4] = 0;
|
||||
} else {
|
||||
for (i = 0; i < strlen(iso_name); i++) {
|
||||
if (iso_name[i] == '?') {
|
||||
iso_name[i] = 0;
|
||||
break;
|
||||
}
|
||||
} else for (i = 0; i < strlen(iso_name); i++) {
|
||||
if (iso_name[i] == '?') {
|
||||
iso_name[i] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -909,13 +916,13 @@ static DWORD WINAPI DownloadISOThread(LPVOID param)
|
|||
goto out;
|
||||
}
|
||||
// Download the ISO and report errors if any
|
||||
// TODO: We may want to start a timer here too...
|
||||
SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0);
|
||||
SetTaskbarProgressState(TASKBAR_NORMAL);
|
||||
SetTaskbarProgressValue(0, MAX_PROGRESS);
|
||||
SendMessage(hProgress, PBM_SETPOS, 0, 0);
|
||||
FormatStatus = 0;
|
||||
format_op_in_progress = TRUE;
|
||||
SendMessage(hMainDialog, UM_TIMER_START, 0, 0);
|
||||
if (DownloadToFileOrBuffer(url, img_save.ImagePath, NULL, hMainDialog) == 0) {
|
||||
if (SCODE_CODE(FormatStatus) == ERROR_CANCELLED) {
|
||||
uprintf("Download cancelled by user");
|
||||
|
@ -934,7 +941,9 @@ static DWORD WINAPI DownloadISOThread(LPVOID param)
|
|||
Notification(MSG_ERROR, NULL, NULL, lmprintf(MSG_194, iso_name), lmprintf(MSG_043, WinInetErrorString()));
|
||||
}
|
||||
}
|
||||
// TODO: If download was successful we should select and scan the ISO
|
||||
// Download was successful => Select and scan the ISO
|
||||
image_path = safe_strdup(img_save.ImagePath);
|
||||
PostMessage(hMainDialog, UM_SELECT_ISO, 0, 0);
|
||||
format_op_in_progress = FALSE;
|
||||
safe_free(img_save.ImagePath);
|
||||
}
|
||||
|
|
35
src/rufus.c
35
src/rufus.c
|
@ -1710,10 +1710,7 @@ static void SaveVHD(void)
|
|||
if (format_thid != NULL) {
|
||||
uprintf("\r\nSave to VHD operation started");
|
||||
PrintInfo(0, -1);
|
||||
timer = 0;
|
||||
static_sprintf(szTimer, "00:00:00");
|
||||
SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer);
|
||||
SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer);
|
||||
SendMessage(hMainDialog, UM_TIMER_START, 0, 0);
|
||||
} else {
|
||||
uprintf("Unable to start VHD save thread");
|
||||
FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD);
|
||||
|
@ -1776,10 +1773,7 @@ static void SaveISO(void)
|
|||
if (format_thid != NULL) {
|
||||
uprintf("\r\nSave to ISO operation started");
|
||||
PrintInfo(0, -1);
|
||||
timer = 0;
|
||||
static_sprintf(szTimer, "00:00:00");
|
||||
SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer);
|
||||
SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer);
|
||||
SendMessage(hMainDialog, UM_TIMER_START, 0, 0);
|
||||
} else {
|
||||
uprintf("Unable to start ISO save thread");
|
||||
FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD);
|
||||
|
@ -2254,10 +2248,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
format_thid = CreateThread(NULL, 0, SumThread, (LPVOID)thread_affinity, 0, NULL);
|
||||
if (format_thid != NULL) {
|
||||
PrintInfo(0, -1);
|
||||
timer = 0;
|
||||
static_sprintf(szTimer, "00:00:00");
|
||||
SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer);
|
||||
SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer);
|
||||
SendMessage(hMainDialog, UM_TIMER_START, 0, 0);
|
||||
} else {
|
||||
uprintf("Unable to start checksum thread");
|
||||
FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD);
|
||||
|
@ -2284,6 +2275,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
CreateTooltip(GetDlgItem(hMainDialog, IDS_CSM_HELP_TXT), lmprintf((tt == TT_UEFI) ? MSG_152 : MSG_151), 30000);
|
||||
break;
|
||||
case UM_ENABLE_CONTROLS:
|
||||
KillTimer(hMainDialog, TID_APP_TIMER);
|
||||
if (!IS_ERROR(FormatStatus))
|
||||
PrintInfo(0, MSG_210);
|
||||
else if (SCODE_CODE(FormatStatus))
|
||||
|
@ -2292,6 +2284,19 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
PrintInfo(0, MSG_212);
|
||||
EnableControls(TRUE);
|
||||
break;
|
||||
case UM_TIMER_START:
|
||||
PrintInfo(0, -1);
|
||||
timer = 0;
|
||||
static_sprintf(szTimer, "00:00:00");
|
||||
SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer);
|
||||
SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer);
|
||||
break;
|
||||
case UM_SELECT_ISO:
|
||||
select_index = 0;
|
||||
iso_provided = TRUE;
|
||||
SetWindowTextU(GetDlgItem(hDlg, IDC_SELECT), uppercase_select[0]);
|
||||
SendMessage(hDlg, WM_COMMAND, IDC_SELECT, 0);
|
||||
break;
|
||||
case UM_MEDIA_CHANGE:
|
||||
wParam = DBT_CUSTOMEVENT;
|
||||
// Fall through
|
||||
|
@ -2611,11 +2616,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, (WPARAM)FALSE, 0);
|
||||
} else {
|
||||
uprintf("\r\nFormat operation started");
|
||||
PrintInfo(0, -1);
|
||||
timer = 0;
|
||||
static_sprintf(szTimer, "00:00:00");
|
||||
SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer);
|
||||
SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer);
|
||||
SendMessage(hMainDialog, UM_TIMER_START, 0, 0);
|
||||
// Set focus to the Cancel button
|
||||
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hMainDialog, IDCANCEL), TRUE);
|
||||
}
|
||||
|
|
|
@ -189,6 +189,8 @@ enum user_message_type {
|
|||
UM_UPDATE_CSM_TOOLTIP,
|
||||
UM_RESIZE_BUTTONS,
|
||||
UM_ENABLE_CONTROLS,
|
||||
UM_SELECT_ISO,
|
||||
UM_TIMER_START,
|
||||
UM_FORMAT_START,
|
||||
// Start of the WM IDs for the language menu items
|
||||
UM_LANGUAGE_MENU = WM_APP + 0x100
|
||||
|
|
10
src/rufus.rc
10
src/rufus.rc
|
@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
|||
IDD_DIALOG DIALOGEX 12, 12, 232, 326
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_ACCEPTFILES
|
||||
CAPTION "Rufus 3.5.1449"
|
||||
CAPTION "Rufus 3.5.1450"
|
||||
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
|
||||
BEGIN
|
||||
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
|
||||
|
@ -394,8 +394,8 @@ END
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,5,1449,0
|
||||
PRODUCTVERSION 3,5,1449,0
|
||||
FILEVERSION 3,5,1450,0
|
||||
PRODUCTVERSION 3,5,1450,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -413,13 +413,13 @@ BEGIN
|
|||
VALUE "Comments", "https://akeo.ie"
|
||||
VALUE "CompanyName", "Akeo Consulting"
|
||||
VALUE "FileDescription", "Rufus"
|
||||
VALUE "FileVersion", "3.5.1449"
|
||||
VALUE "FileVersion", "3.5.1450"
|
||||
VALUE "InternalName", "Rufus"
|
||||
VALUE "LegalCopyright", "© 2011-2019 Pete Batard (GPL v3)"
|
||||
VALUE "LegalTrademarks", "https://www.gnu.org/copyleft/gpl.html"
|
||||
VALUE "OriginalFilename", "rufus-3.5.exe"
|
||||
VALUE "ProductName", "Rufus"
|
||||
VALUE "ProductVersion", "3.5.1449"
|
||||
VALUE "ProductVersion", "3.5.1450"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
Loading…
Reference in a new issue