mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-17 18:59:09 +00:00
Separate plOperationProgress titles and statuses.
Now we render titles above the progress bar and the status below (in the same color as the progress bar!). Also, introduce a new info field that is guaranteed to be right justified.
This commit is contained in:
@ -252,12 +252,10 @@ void plNCAgeJoiner::ExecNextOp () {
|
||||
LogMsg(kLogPerf, L"AgeJoiner: Exec:kLoadAge");
|
||||
|
||||
// Start progress bar
|
||||
char str[256];
|
||||
#ifdef PLASMA_EXTERNAL_RELEASE
|
||||
StrCopy(str, "Loading age...", arrsize(str));
|
||||
#else
|
||||
StrPrintf(str, arrsize(str), "Loading age %s...", age.ageDatasetName);
|
||||
#endif
|
||||
char str[128];
|
||||
#ifndef PLASMA_EXTERNAL_RELEASE
|
||||
snprintf(str, arrsize(str), "Loading age... %s", age.ageDatasetName);
|
||||
#endif
|
||||
progressBar = plProgressMgr::GetInstance()->RegisterOperation(0, str, plProgressMgr::kNone, false, true);
|
||||
plDispatch::SetMsgRecieveCallback(IDispatchMsgReceiveCallback);
|
||||
((plResManager*)hsgResMgr::ResMgr())->SetProgressBarProc(IResMgrProgressBarCallback);
|
||||
|
@ -57,6 +57,14 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
|
||||
#include "hsTimer.h"
|
||||
|
||||
// Draw Colors
|
||||
enum
|
||||
{
|
||||
kTitleColor = 0xccb0b0b0,
|
||||
kProgressBarColor = 0xff302b3a,
|
||||
kInfoColor = 0xff635e6d,
|
||||
};
|
||||
|
||||
|
||||
//// Constructor & Destructor ////////////////////////////////////////////////
|
||||
|
||||
@ -178,85 +186,51 @@ bool plDTProgressMgr::IDrawTheStupidThing(plPipeline *p, plOperationProgress
|
||||
{
|
||||
plDebugText &text = plDebugText::Instance();
|
||||
bool drew_something = false;
|
||||
uint16_t downsz = (text.GetFontSize() << 1) + 4;
|
||||
|
||||
// Lets just set the color to blue
|
||||
uint32_t color = 0xff302b3a;
|
||||
// draw the title
|
||||
if (!prog->GetTitle().IsEmpty()) {
|
||||
y -= downsz;
|
||||
text.DrawString_TEMP(x, y, prog->GetTitle(), kTitleColor);
|
||||
y += downsz;
|
||||
drew_something = true;
|
||||
}
|
||||
|
||||
if( prog->GetMax() > 0.f )
|
||||
{
|
||||
text.Draw3DBorder(x, y, x + width - 1, y + height - 1, color, color);
|
||||
// draw a progress bar
|
||||
if (prog->GetMax() > 0.f) {
|
||||
text.Draw3DBorder(x, y, x + width - 1, y + height - 1, kProgressBarColor, kProgressBarColor);
|
||||
|
||||
x += 2;
|
||||
y += 2;
|
||||
width -= 4;
|
||||
height -= 4;
|
||||
|
||||
uint16_t drawWidth = width;
|
||||
int16_t drawX = x;
|
||||
uint16_t rightX = drawX + drawWidth;
|
||||
uint16_t drawWidth = width;
|
||||
int16_t drawX = x;
|
||||
uint16_t rightX = drawX + drawWidth;
|
||||
|
||||
if (prog->GetProgress() <= prog->GetMax())
|
||||
drawWidth = (uint16_t)( (float)width * prog->GetProgress() / prog->GetMax() );
|
||||
drawWidth = (uint16_t)((float)width * prog->GetProgress() / prog->GetMax());
|
||||
|
||||
rightX = drawX + drawWidth;
|
||||
if (drawWidth > 0)
|
||||
text.DrawRect(drawX, y, rightX, y + height, kProgressBarColor);
|
||||
y += height + 2;
|
||||
|
||||
if( drawWidth > 0 )
|
||||
text.DrawRect( drawX, y, rightX, y + height, color );
|
||||
|
||||
uint32_t timeRemain = prog->fRemainingSecs;
|
||||
if (timeRemain > 0) {
|
||||
plStringStream ss;
|
||||
ss << "APPROXIMATELY ";
|
||||
if (timeRemain > 3600)
|
||||
{
|
||||
uint32_t hours = timeRemain / 3600;
|
||||
const char* plural = (hours > 1) ? "S" : "";
|
||||
ss << hours << " HOUR" << plural << " ";
|
||||
timeRemain %= 3600;
|
||||
}
|
||||
if (timeRemain > 60)
|
||||
{
|
||||
uint32_t minutes = timeRemain / 60;
|
||||
const char* plural = (minutes > 1) ? "S" : "";
|
||||
ss << minutes << " MINUTE" << plural << " ";
|
||||
timeRemain %= 60;
|
||||
}
|
||||
if (timeRemain > 0)
|
||||
{
|
||||
const char* plural = (timeRemain > 1) ? "S" : "";
|
||||
ss << timeRemain << " SECOND" << plural << " ";
|
||||
}
|
||||
ss << "REMAINING";
|
||||
text.DrawString(x, y + height + 2, ss.GetString().c_str(), (uint32_t)0xff635e6d);
|
||||
}
|
||||
|
||||
x -= 2;
|
||||
y -= 2;
|
||||
drew_something = true;
|
||||
}
|
||||
|
||||
y -= ( text.GetFontSize() << 1 ) + 4;
|
||||
// draw the left justified status text
|
||||
if (!prog->GetStatusText().IsEmpty()) {
|
||||
text.DrawString_TEMP(x, y, prog->GetStatusText(), kInfoColor);
|
||||
drew_something = true;
|
||||
}
|
||||
|
||||
#ifndef PLASMA_EXTERNAL_RELEASE
|
||||
static bool drawText = true;
|
||||
#else
|
||||
static bool drawText = false;
|
||||
#endif
|
||||
|
||||
if (drawText)
|
||||
{
|
||||
if (!prog->GetTitle().IsEmpty())
|
||||
{
|
||||
text.DrawString_TEMP( x, y, prog->GetTitle(), (uint32_t)0xccb0b0b0 );
|
||||
x += (uint16_t)text.CalcStringWidth_TEMP( prog->GetTitle() );
|
||||
drew_something = true;
|
||||
}
|
||||
|
||||
if (!prog->GetStatusText().IsEmpty())
|
||||
{
|
||||
text.DrawString_TEMP( x, y, prog->GetStatusText(), (uint32_t)0xccb0b0b0 );
|
||||
drew_something = true;
|
||||
}
|
||||
// draw the right justified info text
|
||||
if (!prog->GetInfoText().IsEmpty()) {
|
||||
uint16_t right_x = 2 + x + width - text.CalcStringWidth_TEMP(prog->GetInfoText());
|
||||
text.DrawString_TEMP(right_x, y, prog->GetInfoText(), kInfoColor);
|
||||
drew_something = true;
|
||||
}
|
||||
|
||||
// return whether or not we drew stuff
|
||||
|
@ -76,6 +76,7 @@ class plOperationProgress
|
||||
float fValue, fMax;
|
||||
plString fTitle;
|
||||
plString fStatusText;
|
||||
plString fInfoText;
|
||||
uint32_t fContext;
|
||||
double fStartTime;
|
||||
|
||||
@ -113,6 +114,7 @@ class plOperationProgress
|
||||
float GetProgress() const { return fValue; }
|
||||
plString GetTitle() const { return fTitle; }
|
||||
plString GetStatusText() const { return fStatusText; }
|
||||
plString GetInfoText() const { return fInfoText; }
|
||||
uint32_t GetContext() const { return fContext; }
|
||||
uint32_t GetElapsedSecs() { return fElapsedSecs; }
|
||||
uint32_t GetRemainingSecs() { return fRemainingSecs; }
|
||||
@ -127,7 +129,10 @@ class plOperationProgress
|
||||
// Set the length
|
||||
void SetLength( float length );
|
||||
|
||||
/** Sets the progress bar's status text */
|
||||
/** Sets the progress bar's right justified info text */
|
||||
void SetInfoText(const plString& info) { fInfoText = info; }
|
||||
|
||||
/** Sets the progress bar's left justified status text */
|
||||
void SetStatusText(const plString& status) { fStatusText = status; }
|
||||
|
||||
/** Sets the progress bar's title */
|
||||
|
Reference in New Issue
Block a user