void DisplayCompressProgress()

in src/wffile.c [465:586]


void DisplayCompressProgress(
    int iType)
{
    TCHAR szTemp[120];
    TCHAR szNum[30];
    LARGE_INTEGER Percentage;


    if (!bShowProgress)
    {
        return;
    }

    switch (iType)
    {
        case ( PROGRESS_UPD_FILEANDDIR ) :
        case ( PROGRESS_UPD_FILENAME ) :
        {
            SetDlgItemText(hDlgProgress, IDD_COMPRESS_FILE, szGlobalFile);
            if (iType != PROGRESS_UPD_FILEANDDIR)
            {
                break;
            }

            // else...fall through
        }
        case ( PROGRESS_UPD_DIRECTORY ) :
        {
            //
            //  Preprocess the directory name to shorten it to fit
            //  into our space.
            //
            CompactPath(hDCdir, szGlobalDir, dxdir);
            SetDlgItemText(hDlgProgress, IDD_COMPRESS_DIR, szGlobalDir);

            break;
        }
        case ( PROGRESS_UPD_DIRCNT ) :
        {
            AddCommasInternal(szNum, (DWORD)TotalDirectoryCount);
            SetDlgItemText(hDlgProgress, IDD_COMPRESS_TDIRS, szNum);

            break;
        }
        case ( PROGRESS_UPD_FILENUMBERS ) :
        case ( PROGRESS_UPD_FILECNT ) :
        {
            AddCommasInternal(szNum, (DWORD)TotalFileCount);
            SetDlgItemText(hDlgProgress, IDD_COMPRESS_TFILES, szNum);
            if (iType != PROGRESS_UPD_FILENUMBERS)
            {
                break;
            }

            // else...fall through
        }
        case ( PROGRESS_UPD_COMPRESSEDSIZE ) :
        {
            PutSize(&TotalCompressedSize, szNum);
            wsprintf(szTemp, szSBytes, szNum);
            SetDlgItemText(hDlgProgress, IDD_COMPRESS_CSIZE, szTemp);
            if (iType != PROGRESS_UPD_FILENUMBERS)
            {
                break;
            }

            // else...fall through
        }
        case ( PROGRESS_UPD_FILESIZE ) :
        {
            PutSize(&TotalFileSize, szNum);
            wsprintf(szTemp, szSBytes, szNum);
            SetDlgItemText(hDlgProgress, IDD_COMPRESS_USIZE, szTemp);
            if (iType != PROGRESS_UPD_FILENUMBERS)
            {
                break;
            }

            // else...fall through
        }
        case ( PROGRESS_UPD_PERCENTAGE ) :
        {
            if (TotalFileSize.QuadPart != 0)
            {
                //
                //  Percentage = 100 - ((CompressSize * 100) / FileSize)
                //
                Percentage.QuadPart =
                    (TotalCompressedSize.QuadPart * 100) /
                    TotalFileSize.QuadPart;

                if (Percentage.HighPart || (Percentage.LowPart > 100))
                {
                    //
                    //  Percentage = 100%
                    //
                    Percentage.LowPart = 100;
                    Percentage.HighPart = 0;
                }
                else
                {
                    Percentage.LowPart = 100 - Percentage.LowPart;
                }
            }
            else
            {
                //
                //  Percentage = 0%
                //
                Percentage.LowPart = 0;
                Percentage.HighPart = 0;
            }
            PutSize(&Percentage, szNum);
            wsprintf(szTemp, TEXT("%s%%"), szNum);
            SetDlgItemText(hDlgProgress, IDD_COMPRESS_RATIO, szTemp);

            break;
        }
    }

    wfProgressYield();
}