refactoring
Co-authored-by: n.fedorov <mail@nfedorov.dev> Co-committed-by: n.fedorov <mail@nfedorov.dev>
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
#pragma once
|
||||
#include <pu/Plutonium>
|
||||
|
||||
#include <nxst/domain/util.hpp>
|
||||
#include <nxst/ui/theme.hpp>
|
||||
|
||||
namespace ui {
|
||||
|
||||
class TransferOverlay : public pu::ui::Overlay {
|
||||
private:
|
||||
pu::ui::elm::Rectangle::Ref card;
|
||||
pu::ui::elm::TextBlock::Ref titleText;
|
||||
pu::ui::elm::TextBlock::Ref statusText;
|
||||
pu::ui::elm::Rectangle::Ref progressTrack;
|
||||
pu::ui::elm::ProgressBar::Ref progressBar;
|
||||
pu::ui::elm::TextBlock::Ref indeterminateText;
|
||||
pu::ui::elm::TextBlock::Ref hintText;
|
||||
|
||||
static constexpr int CardW = 720;
|
||||
static constexpr int CardH = 360;
|
||||
static constexpr int CardX = (theme::layout::ScreenW - CardW) / 2;
|
||||
static constexpr int CardY = (theme::layout::ScreenH - CardH) / 2;
|
||||
|
||||
public:
|
||||
TransferOverlay(const std::string& title)
|
||||
: Overlay(0, 0, theme::layout::ScreenW, theme::layout::ScreenH, theme::color::Scrim) {
|
||||
using namespace theme;
|
||||
|
||||
card = pu::ui::elm::Rectangle::New(CardX, CardY, CardW, CardH, color::BgSurface, radius::lg);
|
||||
|
||||
titleText = pu::ui::elm::TextBlock::New(CardX + space::lg, CardY + space::lg, title);
|
||||
titleText->SetFont(type::font(type::Title));
|
||||
titleText->SetColor(color::TextPrimary);
|
||||
|
||||
statusText = pu::ui::elm::TextBlock::New(CardX + space::lg, CardY + space::lg + 56, "");
|
||||
statusText->SetFont(type::font(type::Body));
|
||||
statusText->SetColor(color::TextSecondary);
|
||||
|
||||
int barX = CardX + space::lg;
|
||||
int barY = CardY + space::lg + 56 + 56;
|
||||
int barW = CardW - 2 * space::lg;
|
||||
|
||||
progressTrack = pu::ui::elm::Rectangle::New(barX, barY, barW, 8, color::Divider, radius::sm);
|
||||
|
||||
progressBar = pu::ui::elm::ProgressBar::New(barX, barY, barW, 8, 100.0);
|
||||
progressBar->SetProgressColor(color::Primary);
|
||||
progressBar->SetBackgroundColor(color::Divider);
|
||||
|
||||
indeterminateText = pu::ui::elm::TextBlock::New(barX, barY - 4, "Preparing transfer...");
|
||||
indeterminateText->SetFont(type::font(type::Body));
|
||||
indeterminateText->SetColor(color::TextMuted);
|
||||
indeterminateText->SetVisible(false);
|
||||
|
||||
hintText =
|
||||
pu::ui::elm::TextBlock::New(CardX + space::lg, CardY + CardH - space::lg - 18, "B to cancel");
|
||||
hintText->SetFont(type::font(type::Caption));
|
||||
hintText->SetColor(color::TextMuted);
|
||||
|
||||
this->Add(card);
|
||||
this->Add(titleText);
|
||||
this->Add(statusText);
|
||||
this->Add(progressTrack);
|
||||
this->Add(progressBar);
|
||||
this->Add(indeterminateText);
|
||||
this->Add(hintText);
|
||||
}
|
||||
PU_SMART_CTOR(TransferOverlay)
|
||||
|
||||
void SetStatus(const std::string& status) {
|
||||
statusText->SetText(string_utils::elide(status, 56));
|
||||
}
|
||||
|
||||
void SetProgress(double val) {
|
||||
progressBar->SetProgress(val);
|
||||
}
|
||||
|
||||
void SetProgressVisible(bool visible) {
|
||||
progressTrack->SetVisible(visible);
|
||||
progressBar->SetVisible(visible);
|
||||
indeterminateText->SetVisible(!visible);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace ui
|
||||
Reference in New Issue
Block a user