7 #include "ProgressBox.h"
13 static void CopySpaces(char *destString, int numSpaces)
16 for(i = 0; i < numSpaces; i++)
21 /////////////////////////////////
24 const int kNumStringsMax = 10;
26 void CMessageBox::Init(const CSysString &title, const CSysString &message,
27 int numStrings, int width)
29 if (numStrings > kNumStringsMax)
31 m_NumStrings = numStrings;
38 const int kNumStaticStrings = 2;
40 void CMessageBox::ShowProcessMessages(const char *messages[])
42 const char *msgItems[kNumStaticStrings + kNumStringsMax];
43 msgItems[0] = m_Title;
44 msgItems[1] = m_Message;
46 char formattedMessages[kNumStringsMax][256];
48 for (int i = 0; i < m_NumStrings; i++)
50 char *formattedMessage = formattedMessages[i];
51 int len = (int)strlen(messages[i]);
52 int size = MyMax(m_Width, len);
53 int startPos = (size - len) / 2;
54 CopySpaces(formattedMessage, startPos);
55 MyStringCopy(formattedMessage + startPos, messages[i]);
56 CopySpaces(formattedMessage + startPos + len, size - startPos - len);
57 msgItems[kNumStaticStrings + i] = formattedMessage;
60 g_StartupInfo.ShowMessage(0, NULL, msgItems, kNumStaticStrings + m_NumStrings, 0);
63 /////////////////////////////////
66 void CProgressBox::Init(const CSysString &title, const CSysString &message,
69 CMessageBox::Init(title, message, 1, 22);
76 void CProgressBox::ShowProcessMessage(const char *message)
78 CMessageBox::ShowProcessMessages(&message);
81 void CProgressBox::PrintPercent(UInt64 percent)
84 sprintf(valueBuffer, "%I64u%%", percent);
85 ShowProcessMessage(valueBuffer);
88 void CProgressBox::SetTotal(UInt64 total)
93 void CProgressBox::PrintCompeteValue(UInt64 completed)
95 if (completed >= m_CompletedPrev + m_Step || completed < m_CompletedPrev ||
101 PrintPercent(completed * 100 / m_Total);
102 m_CompletedPrev = completed;