WiiUIdent/source/screens/StorageScreen.cpp
2023-03-31 17:11:41 +02:00

65 lines
2.0 KiB
C++

#include "StorageScreen.hpp"
#include "system/MemoryDevice.hpp"
#include "Utils.hpp"
#include <functional>
StorageScreen::StorageScreen()
{
for (const MemoryDevice& dev : MemoryDevice::GetDevices()) {
ScreenList* list = nullptr;
if (dev.GetType() == MemoryDevice::TYPE_MLC) {
list = &mlcList;
} else if (dev.GetType() == MemoryDevice::TYPE_SD_CARD) {
list = &sdList;
} else {
continue;
}
list->push_back({"Type:", dev.GetCardType() == MemoryDevice::CARD_TYPE_SD ? "SD" : "MMC"});
list->push_back({"Manufacturer:", Utils::sprintf("%s (0x%02x)", dev.GetManufacturerName().c_str(), dev.GetMID())});
list->push_back({"Product Name:", {dev.GetName(), true}});
list->push_back({"Product Revision:", Utils::sprintf("%d.%d (0x%02x)", dev.GetPRV() >> 4, dev.GetPRV() & 0xf, dev.GetPRV())});
if (dev.GetType() == MemoryDevice::TYPE_MLC)
list->push_back({"Production Date:", dev.GetProductionDate()});
list->push_back({"Size:", Utils::sprintf("%llu MiB", dev.GetTotalSize() / 1024ull / 1024ull)});
list->push_back({"CID:", {Utils::ToHexString(dev.GetCID().data(), dev.GetCID().size()), true}});
list->push_back({"CSD:", {Utils::ToHexString(dev.GetCSD().data(), dev.GetCSD().size()), true}});
}
if (mlcList.empty()) {
mlcList.push_back({"Not Attached", ""});
}
if (sdList.empty()) {
sdList.push_back({"Not Attached", ""});
}
}
StorageScreen::~StorageScreen()
{
}
void StorageScreen::Draw()
{
DrawTopBar("Storage Information");
int yOff = 128;
yOff = DrawHeader(32, yOff, 896, 0xf2db, "MLC");
yOff = DrawList(32, yOff, 896, mlcList);
yOff = 128;
yOff = DrawHeader(992, yOff, 896, 0xf7c2, "SD Card");
yOff = DrawList(992, yOff, 896, sdList);
DrawBottomBar(nullptr, "\ue044 Exit", "\ue001 Back");
}
bool StorageScreen::Update(VPADStatus& input)
{
if (input.trigger & VPAD_BUTTON_B) {
return false;
}
return true;
}