From d1f4ced4ab172e972e87fe13033536f9157e1d7d Mon Sep 17 00:00:00 2001 From: Gabriel Ilardi Date: Mon, 24 May 2010 20:53:32 +0000 Subject: [PATCH] [USETUP] - Check for required minimum disk space eventually warn the user. - Added Italian and Spanish warnings, the other languages need translation. - Patch by R.T.Sivakumar modified by me. See issue #3302 for more details. svn path=/trunk/; revision=47341 --- reactos/base/setup/usetup/errorcode.h | 1 + reactos/base/setup/usetup/interface/usetup.c | 46 +++++++++++++++++++- reactos/base/setup/usetup/lang/bg-BG.h | 6 +++ reactos/base/setup/usetup/lang/en-US.h | 6 +++ reactos/base/setup/usetup/lang/es-ES.h | 8 +++- reactos/base/setup/usetup/lang/et-EE.h | 6 +++ reactos/base/setup/usetup/lang/fr-FR.h | 6 +++ reactos/base/setup/usetup/lang/it-IT.h | 6 +++ reactos/base/setup/usetup/lang/ja-JP.h | 6 +++ reactos/base/setup/usetup/lang/lt-LT.h | 6 +++ reactos/base/setup/usetup/lang/nl-NL.h | 6 +++ reactos/base/setup/usetup/lang/pl-PL.h | 6 +++ reactos/base/setup/usetup/lang/ru-RU.h | 6 +++ reactos/base/setup/usetup/lang/sk-SK.h | 6 +++ reactos/base/setup/usetup/lang/sv-SE.h | 6 +++ reactos/base/setup/usetup/lang/uk-UA.h | 6 +++ 16 files changed, 130 insertions(+), 3 deletions(-) diff --git a/reactos/base/setup/usetup/errorcode.h b/reactos/base/setup/usetup/errorcode.h index 4ecc11d35d2..79461a7e39c 100644 --- a/reactos/base/setup/usetup/errorcode.h +++ b/reactos/base/setup/usetup/errorcode.h @@ -65,6 +65,7 @@ typedef enum ERROR_UPDATE_LOCALESETTINGS, ERROR_ADDING_KBLAYOUTS, ERROR_UPDATE_GEOID, + ERROR_INSUFFICIENT_DISKSPACE, ERROR_LAST_ERROR_CODE }ERROR_NUMBER; diff --git a/reactos/base/setup/usetup/interface/usetup.c b/reactos/base/setup/usetup/interface/usetup.c index f2bbd6492dc..5284d28bf69 100644 --- a/reactos/base/setup/usetup/interface/usetup.c +++ b/reactos/base/setup/usetup/interface/usetup.c @@ -31,6 +31,9 @@ #define NDEBUG #include +/* required free disk space in MB */ +#define MINIMUMDISKSIZE 350 + /* GLOBALS ******************************************************************/ HANDLE ProcessHeap; @@ -1381,6 +1384,31 @@ LayoutSettingsPage(PINPUT_RECORD Ir) return DISPLAY_SETTINGS_PAGE; } +static BOOL IsDiskSizeValid(PPARTENTRY PartEntry) +{ + ULONGLONG m; + /* check for unpartitioned space */ + m = PartEntry->UnpartitionedLength; + m = (m + (1 << 19)) >> 20; /* in MBytes (rounded) */ + if( m > MINIMUMDISKSIZE) + { + return TRUE; + } + + // check for partitioned space + m = PartEntry->PartInfo[0].PartitionLength.QuadPart; + m = (m + (1 << 19)) >> 20; /* in MBytes (rounded) */ + if( m < MINIMUMDISKSIZE) + { + /* partition is too small so ask for another partion */ + DPRINT1("Partition too small"); + return FALSE; + } + else + { + return TRUE; + } +} static PAGE_NUMBER SelectPartitionPage(PINPUT_RECORD Ir) @@ -1434,9 +1462,13 @@ SelectPartitionPage(PINPUT_RECORD Ir) { if (AutoPartition) { - PPARTENTRY PartEntry = PartEntry = PartitionList->CurrentPartition; + PPARTENTRY PartEntry = PartitionList->CurrentPartition; ULONG MaxSize = (PartEntry->UnpartitionedLength + (1 << 19)) >> 20; /* in MBytes (rounded) */ - + if(!IsDiskSizeValid(PartitionList->CurrentPartition)) + { + MUIDisplayError(ERROR_INSUFFICIENT_DISKSPACE, Ir, POPUP_WAIT_ANY_KEY); + return SELECT_PARTITION_PAGE; /* let the user select another partition */ + } CreateNewPartition(PartitionList, MaxSize, TRUE); @@ -1446,6 +1478,11 @@ SelectPartitionPage(PINPUT_RECORD Ir) } else { + if(!IsDiskSizeValid(PartitionList->CurrentPartition)) + { + MUIDisplayError(ERROR_INSUFFICIENT_DISKSPACE, Ir, POPUP_WAIT_ANY_KEY); + return SELECT_PARTITION_PAGE; /* let the user select another partition */ + } return(SELECT_FILE_SYSTEM_PAGE); } } @@ -1489,6 +1526,11 @@ SelectPartitionPage(PINPUT_RECORD Ir) } else if (Ir->Event.KeyEvent.wVirtualKeyCode == VK_RETURN) /* ENTER */ { + if(!IsDiskSizeValid(PartitionList->CurrentPartition)) + { + MUIDisplayError(ERROR_INSUFFICIENT_DISKSPACE, Ir, POPUP_WAIT_ANY_KEY); + return SELECT_PARTITION_PAGE; /* let the user select another partition */ + } if (PartitionList->CurrentPartition == NULL || PartitionList->CurrentPartition->Unpartitioned == TRUE) { diff --git a/reactos/base/setup/usetup/lang/bg-BG.h b/reactos/base/setup/usetup/lang/bg-BG.h index 23bd1f4ebf3..7063a4d7b78 100644 --- a/reactos/base/setup/usetup/lang/bg-BG.h +++ b/reactos/base/setup/usetup/lang/bg-BG.h @@ -1483,6 +1483,12 @@ MUI_ERROR bgBGErrorEntries[] = "¥ãᯥ譮 ¤®¡ ¢ï­¥ ­  ª« ¢¨ âã୨⥠¯®¤à¥¤¡¨ ¢ ॣ¨áâêà .\n" "ENTER = à¥§ ¯ã᪠­¥ ­  ª®¬¯îâêà " }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " *  â¨á­¥â¥ ª« ¢¨è, §  ¤  ¯à®¤ê«¦¨â¥.", + NULL + }, { //ERROR_UPDATE_GEOID, " áâனª â  ­¥ ¬®¦  ¤  ãáâ ­®¢¨ ®§­ ç¨â¥«ï ­  £¥®£à ä᪮⮠¯®«®¦¥­¨¥.\n" diff --git a/reactos/base/setup/usetup/lang/en-US.h b/reactos/base/setup/usetup/lang/en-US.h index ac694c98c54..ece3f47c66d 100644 --- a/reactos/base/setup/usetup/lang/en-US.h +++ b/reactos/base/setup/usetup/lang/en-US.h @@ -1476,6 +1476,12 @@ MUI_ERROR enUSErrorEntries[] = "Setup could not set the geo id.\n" "ENTER = Reboot computer" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { NULL, NULL diff --git a/reactos/base/setup/usetup/lang/es-ES.h b/reactos/base/setup/usetup/lang/es-ES.h index d951d6b564f..16ce0d1e01c 100644 --- a/reactos/base/setup/usetup/lang/es-ES.h +++ b/reactos/base/setup/usetup/lang/es-ES.h @@ -18,7 +18,7 @@ static MUI_ENTRY esESLanguagePageEntries[] = { 6, 8, - "Selecci¢n de idioma", + "Selecci¢n del idioma", TEXT_STYLE_NORMAL }, { @@ -1472,6 +1472,12 @@ MUI_ERROR esESErrorEntries[] = "Setup failed to add keyboard layouts to registry.\n" "ENTER = Reboot computer" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "No hay suficiente espacio disponible en la partici¢n seleccionada.\n" + " * Presione una tecla para continuar.", + NULL + }, { //ERROR_UPDATE_GEOID, "Setup could not set the geo id.\n" diff --git a/reactos/base/setup/usetup/lang/et-EE.h b/reactos/base/setup/usetup/lang/et-EE.h index 4a1f7bda62b..19d0242cca5 100644 --- a/reactos/base/setup/usetup/lang/et-EE.h +++ b/reactos/base/setup/usetup/lang/et-EE.h @@ -1468,6 +1468,12 @@ MUI_ERROR etEEErrorEntries[] = "Klaviatuuriasetusi ei ännestunud registrisse lisada.\n" "ENTER = Taask„ivita arvuti" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { //ERROR_UPDATE_GEOID, "Geograafilist asukohta ei ännestunud seadistada.\n" diff --git a/reactos/base/setup/usetup/lang/fr-FR.h b/reactos/base/setup/usetup/lang/fr-FR.h index ae037aba25f..8e7eb59f9df 100644 --- a/reactos/base/setup/usetup/lang/fr-FR.h +++ b/reactos/base/setup/usetup/lang/fr-FR.h @@ -1484,6 +1484,12 @@ MUI_ERROR frFRErrorEntries[] = "Setup failed to add keyboard layouts to registry.\n" "ENTER = Reboot computer" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { //ERROR_UPDATE_GEOID, "Setup could not set the geo id.\n" diff --git a/reactos/base/setup/usetup/lang/it-IT.h b/reactos/base/setup/usetup/lang/it-IT.h index bb220000c84..bc30ae42f59 100644 --- a/reactos/base/setup/usetup/lang/it-IT.h +++ b/reactos/base/setup/usetup/lang/it-IT.h @@ -1472,6 +1472,12 @@ MUI_ERROR itITErrorEntries[] = "Impossibile aggiungere le nazionalit… di tastiera al registro.\n" "INVIO = Riavviare il computer" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Lo spazio disponibile nella partizione selezionata Š insufficiente.\n" + " * Premere un tasto qualsiasi per continuare.", + NULL + }, { //ERROR_UPDATE_GEOID, "Setup could not set the geo id.\n" diff --git a/reactos/base/setup/usetup/lang/ja-JP.h b/reactos/base/setup/usetup/lang/ja-JP.h index af7ccdf2a7e..a697a199565 100644 --- a/reactos/base/setup/usetup/lang/ja-JP.h +++ b/reactos/base/setup/usetup/lang/ja-JP.h @@ -1477,6 +1477,12 @@ MUI_ERROR jaJPErrorEntries[] = "¾¯Ä±¯ÌßÊ geo id ¦ ¾¯Ã² ÃÞ·Ï¾Ý ÃÞ¼À¡\n" "ENTER = ºÝËß­°ÀÉ »²·ÄÞ³" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { NULL, NULL diff --git a/reactos/base/setup/usetup/lang/lt-LT.h b/reactos/base/setup/usetup/lang/lt-LT.h index a0a9eb485bf..a35dca3e4f7 100644 --- a/reactos/base/setup/usetup/lang/lt-LT.h +++ b/reactos/base/setup/usetup/lang/lt-LT.h @@ -1481,6 +1481,12 @@ MUI_ERROR ltLTErrorEntries[] = "Setup failed to add keyboard layouts to registry.\n" "ENTER = Reboot computer" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { //ERROR_UPDATE_GEOID, "Setup could not set the geo id.\n" diff --git a/reactos/base/setup/usetup/lang/nl-NL.h b/reactos/base/setup/usetup/lang/nl-NL.h index eba2d93ad5c..0f0e8651737 100644 --- a/reactos/base/setup/usetup/lang/nl-NL.h +++ b/reactos/base/setup/usetup/lang/nl-NL.h @@ -1499,6 +1499,12 @@ MUI_ERROR nlNLErrorEntries[] = "Setup kan de toetsenbord indelingen niet toevoegen aan de registry.\n" "ENTER = Reboot computer" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { //ERROR_UPDATE_GEOID, "Setup kan de geografische positie niet instellen.\n" diff --git a/reactos/base/setup/usetup/lang/pl-PL.h b/reactos/base/setup/usetup/lang/pl-PL.h index 8d4262d58cd..4fd8b99f7ef 100644 --- a/reactos/base/setup/usetup/lang/pl-PL.h +++ b/reactos/base/setup/usetup/lang/pl-PL.h @@ -1480,6 +1480,12 @@ MUI_ERROR plPLErrorEntries[] = "Instalator nie m¢gˆ doda† ukˆad¢w klawiatury do rejestru.\n" "ENTER = Restart komputera" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { //ERROR_UPDATE_GEOID, "Instalator nie m¢gˆ ustawi† lokalizacji geograficznej.\n" diff --git a/reactos/base/setup/usetup/lang/ru-RU.h b/reactos/base/setup/usetup/lang/ru-RU.h index 7e55b9700bb..1fb41377e50 100644 --- a/reactos/base/setup/usetup/lang/ru-RU.h +++ b/reactos/base/setup/usetup/lang/ru-RU.h @@ -1472,6 +1472,12 @@ MUI_ERROR ruRUErrorEntries[] = "Setup failed to add keyboard layouts to registry.\n" "ENTER = Reboot computer" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { //ERROR_UPDATE_GEOID, "Setup could not set the geo id.\n" diff --git a/reactos/base/setup/usetup/lang/sk-SK.h b/reactos/base/setup/usetup/lang/sk-SK.h index 5078f08139f..355c4946e64 100644 --- a/reactos/base/setup/usetup/lang/sk-SK.h +++ b/reactos/base/setup/usetup/lang/sk-SK.h @@ -1482,6 +1482,12 @@ MUI_ERROR skSKErrorEntries[] = "Inçtal tor zlyhal pri prid van¡ rozlo§en¡ kl vesnice do registrov.\n" "ENTER = Reçtart poŸ¡taŸa" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { //ERROR_UPDATE_GEOID, "Inçtal tor nemohol nastaviœ geo id.\n" diff --git a/reactos/base/setup/usetup/lang/sv-SE.h b/reactos/base/setup/usetup/lang/sv-SE.h index 0dbffdc453c..cc3c3569e30 100644 --- a/reactos/base/setup/usetup/lang/sv-SE.h +++ b/reactos/base/setup/usetup/lang/sv-SE.h @@ -1472,6 +1472,12 @@ MUI_ERROR svSEErrorEntries[] = "Setup failed to add keyboard layouts to registry.\n" "ENTER = Reboot computer" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { //ERROR_UPDATE_GEOID, "Setup could not set the geo id.\n" diff --git a/reactos/base/setup/usetup/lang/uk-UA.h b/reactos/base/setup/usetup/lang/uk-UA.h index ba3fd009623..ebdea9232f0 100644 --- a/reactos/base/setup/usetup/lang/uk-UA.h +++ b/reactos/base/setup/usetup/lang/uk-UA.h @@ -1478,6 +1478,12 @@ MUI_ERROR ukUAErrorEntries[] = "¥ ¢¤ «®áì ¤®¤ â¨ ஧ª« ¤ª¨ ª« ¢i âãਠ¤® à¥óáâàã.\n" "ENTER = ¥à¥§ ¢ ­â ¦¨â¨ ª®¬¯'îâ¥à" }, + { + //ERROR_INSUFFICIENT_DISKSPACE, + "Not enough free space in the selected partition.\n" + " * Press any key to continue.", + NULL + }, { //ERROR_UPDATE_GEOID, "¥ ¢¤ «®áì ¢áâ ­®¢¨â¨ geo id.\n" -- 2.17.1