Improved progress bar popups for downloads
Now shows the filename, and also there's a delay mode where they'll only be visible if the download takes more than a second, plus they can be named.
This commit is contained in:
parent
04932d98a7
commit
ecea3844b0
18 changed files with 167 additions and 157 deletions
|
@ -292,13 +292,9 @@ void OnScreenMessagesView::Draw(UIContext &dc) {
|
|||
}
|
||||
}
|
||||
|
||||
// Get height
|
||||
float w, h;
|
||||
dc.MeasureText(dc.theme->uiFont, 1.0f, 1.0f, "Wg", &w, &h);
|
||||
|
||||
y = 10.0f;
|
||||
|
||||
// Then draw them all.
|
||||
// Draw the progress bars.
|
||||
const std::vector<OnScreenDisplay::ProgressBar> bars = g_OSD.ProgressBars();
|
||||
for (auto &bar : bars) {
|
||||
float tw, th;
|
||||
|
@ -306,11 +302,14 @@ void OnScreenMessagesView::Draw(UIContext &dc) {
|
|||
Bounds b(0.0f, y, tw, th);
|
||||
b.x = (bounds_.w - b.w) * 0.5f;
|
||||
|
||||
float alpha = Clamp((float)(bar.endTime - now) * 4.0f, 0.0f, 1.0f);
|
||||
float enterAlpha = saturatef((float)(now - bar.startTime) * 4.0f);
|
||||
float leaveAlpha = saturatef((float)(bar.endTime - now) * 4.0f);
|
||||
float alpha = std::min(enterAlpha, leaveAlpha);
|
||||
RenderOSDProgressBar(dc, bar, b, 0, alpha);
|
||||
y += (b.h + 4.0f) * alpha; // including alpha here gets us smooth animations.
|
||||
}
|
||||
|
||||
// Draw the rest of the top-center messages.
|
||||
const std::vector<OnScreenDisplay::Entry> entries = g_OSD.Entries();
|
||||
for (const auto &entry : entries) {
|
||||
dc.SetFontScale(1.0f, 1.0f);
|
||||
|
@ -365,28 +364,6 @@ void OnScreenMessagesView::Draw(UIContext &dc) {
|
|||
RenderOSDEntry(dc, entry, b, h1, align, alpha);
|
||||
y += (b.h * scale + 4.0f) * alpha; // including alpha here gets us smooth animations.
|
||||
}
|
||||
|
||||
// Thin bar at the top of the screen.
|
||||
// TODO: Remove and replace with "proper" progress bars.
|
||||
std::vector<float> progress = g_DownloadManager.GetCurrentProgress();
|
||||
if (!progress.empty()) {
|
||||
static const uint32_t colors[4] = {
|
||||
0xFFFFFFFF,
|
||||
0xFFCCCCCC,
|
||||
0xFFAAAAAA,
|
||||
0xFF777777,
|
||||
};
|
||||
|
||||
dc.Begin();
|
||||
int h = 5;
|
||||
for (size_t i = 0; i < progress.size(); i++) {
|
||||
float barWidth = 10 + (dc.GetBounds().w - 10) * progress[i];
|
||||
Bounds bounds(0, h * i, barWidth, h);
|
||||
UI::Drawable solid(colors[i & 3]);
|
||||
dc.FillRect(solid, bounds);
|
||||
}
|
||||
dc.Flush();
|
||||
}
|
||||
}
|
||||
|
||||
std::string OnScreenMessagesView::DescribeText() const {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue