1
0
Fork 0
forked from suyu/suyu

Merge pull request #1091 from lioncash/warning

qt/main: Get rid of compilation warnings
This commit is contained in:
bunnei 2018-08-17 00:19:05 -04:00 committed by GitHub
commit 1db7839f11
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -628,24 +628,33 @@ void GMainWindow::OnMenuInstallToNAND() {
QString filename = QFileDialog::getOpenFileName(this, tr("Install File"), QString filename = QFileDialog::getOpenFileName(this, tr("Install File"),
UISettings::values.roms_path, file_filter); UISettings::values.roms_path, file_filter);
if (filename.isEmpty()) {
return;
}
const auto qt_raw_copy = [this](FileSys::VirtualFile src, FileSys::VirtualFile dest) { const auto qt_raw_copy = [this](FileSys::VirtualFile src, FileSys::VirtualFile dest) {
if (src == nullptr || dest == nullptr) if (src == nullptr || dest == nullptr)
return false; return false;
if (!dest->Resize(src->GetSize())) if (!dest->Resize(src->GetSize()))
return false; return false;
QProgressDialog progress(fmt::format("Installing file \"{}\"...", src->GetName()).c_str(), std::array<u8, 0x1000> buffer{};
"Cancel", 0, src->GetSize() / 0x1000, this); const int progress_maximum = static_cast<int>(src->GetSize() / buffer.size());
QProgressDialog progress(
tr("Installing file \"%1\"...").arg(QString::fromStdString(src->GetName())),
tr("Cancel"), 0, progress_maximum, this);
progress.setWindowModality(Qt::WindowModal); progress.setWindowModality(Qt::WindowModal);
std::array<u8, 0x1000> buffer{}; for (size_t i = 0; i < src->GetSize(); i += buffer.size()) {
for (size_t i = 0; i < src->GetSize(); i += 0x1000) {
if (progress.wasCanceled()) { if (progress.wasCanceled()) {
dest->Resize(0); dest->Resize(0);
return false; return false;
} }
progress.setValue(i / 0x1000); const int progress_value = static_cast<int>(i / buffer.size());
progress.setValue(progress_value);
const auto read = src->Read(buffer.data(), buffer.size(), i); const auto read = src->Read(buffer.data(), buffer.size(), i);
dest->Write(buffer.data(), read, i); dest->Write(buffer.data(), read, i);
} }
@ -668,92 +677,88 @@ void GMainWindow::OnMenuInstallToNAND() {
}; };
const auto overwrite = [this]() { const auto overwrite = [this]() {
return QMessageBox::question(this, "Failed to Install", return QMessageBox::question(this, tr("Failed to Install"),
"The file you are attempting to install already exists " tr("The file you are attempting to install already exists "
"in the cache. Would you like to overwrite it?") == "in the cache. Would you like to overwrite it?")) ==
QMessageBox::Yes; QMessageBox::Yes;
}; };
if (!filename.isEmpty()) { if (filename.endsWith("xci", Qt::CaseInsensitive)) {
if (filename.endsWith("xci", Qt::CaseInsensitive)) { const auto xci = std::make_shared<FileSys::XCI>(
const auto xci = std::make_shared<FileSys::XCI>( vfs->OpenFile(filename.toStdString(), FileSys::Mode::Read));
vfs->OpenFile(filename.toStdString(), FileSys::Mode::Read)); if (xci->GetStatus() != Loader::ResultStatus::Success) {
if (xci->GetStatus() != Loader::ResultStatus::Success) { failed();
failed(); return;
return; }
} const auto res =
const auto res = Service::FileSystem::GetUserNANDContents()->InstallEntry(xci, false, qt_raw_copy);
Service::FileSystem::GetUserNANDContents()->InstallEntry(xci, false, qt_raw_copy); if (res == FileSys::InstallResult::Success) {
if (res == FileSys::InstallResult::Success) { success();
success(); } else {
} else { if (res == FileSys::InstallResult::ErrorAlreadyExists) {
if (res == FileSys::InstallResult::ErrorAlreadyExists) { if (overwrite()) {
if (overwrite()) { const auto res2 = Service::FileSystem::GetUserNANDContents()->InstallEntry(
const auto res2 = Service::FileSystem::GetUserNANDContents()->InstallEntry( xci, true, qt_raw_copy);
xci, true, qt_raw_copy); if (res2 == FileSys::InstallResult::Success) {
if (res2 == FileSys::InstallResult::Success) { success();
success(); } else {
} else { failed();
failed();
}
} }
}
} else {
failed();
}
}
} else {
const auto nca = std::make_shared<FileSys::NCA>(
vfs->OpenFile(filename.toStdString(), FileSys::Mode::Read));
if (nca->GetStatus() != Loader::ResultStatus::Success) {
failed();
return;
}
const QStringList tt_options{tr("System Application"),
tr("System Archive"),
tr("System Application Update"),
tr("Firmware Package (Type A)"),
tr("Firmware Package (Type B)"),
tr("Game"),
tr("Game Update"),
tr("Game DLC"),
tr("Delta Title")};
bool ok;
const auto item = QInputDialog::getItem(
this, tr("Select NCA Install Type..."),
tr("Please select the type of title you would like to install this NCA as:\n(In "
"most instances, the default 'Game' is fine.)"),
tt_options, 5, false, &ok);
auto index = tt_options.indexOf(item);
if (!ok || index == -1) {
QMessageBox::warning(this, tr("Failed to Install"),
tr("The title type you selected for the NCA is invalid."));
return;
}
if (index >= 5)
index += 0x7B;
const auto res = Service::FileSystem::GetUserNANDContents()->InstallEntry(
nca, static_cast<FileSys::TitleType>(index), false, qt_raw_copy);
if (res == FileSys::InstallResult::Success) {
success();
} else if (res == FileSys::InstallResult::ErrorAlreadyExists) {
if (overwrite()) {
const auto res2 = Service::FileSystem::GetUserNANDContents()->InstallEntry(
nca, static_cast<FileSys::TitleType>(index), true, qt_raw_copy);
if (res2 == FileSys::InstallResult::Success) {
success();
} else { } else {
failed(); failed();
} }
} }
} else { } else {
const auto nca = std::make_shared<FileSys::NCA>( failed();
vfs->OpenFile(filename.toStdString(), FileSys::Mode::Read));
if (nca->GetStatus() != Loader::ResultStatus::Success) {
failed();
return;
}
static const QStringList tt_options{"System Application",
"System Archive",
"System Application Update",
"Firmware Package (Type A)",
"Firmware Package (Type B)",
"Game",
"Game Update",
"Game DLC",
"Delta Title"};
bool ok;
const auto item = QInputDialog::getItem(
this, tr("Select NCA Install Type..."),
tr("Please select the type of title you would like to install this NCA as:\n(In "
"most instances, the default 'Game' is fine.)"),
tt_options, 5, false, &ok);
auto index = tt_options.indexOf(item);
if (!ok || index == -1) {
QMessageBox::warning(this, tr("Failed to Install"),
tr("The title type you selected for the NCA is invalid."));
return;
}
if (index >= 5)
index += 0x7B;
const auto res = Service::FileSystem::GetUserNANDContents()->InstallEntry(
nca, static_cast<FileSys::TitleType>(index), false, qt_raw_copy);
if (res == FileSys::InstallResult::Success) {
success();
} else {
if (res == FileSys::InstallResult::ErrorAlreadyExists) {
if (overwrite()) {
const auto res2 = Service::FileSystem::GetUserNANDContents()->InstallEntry(
nca, static_cast<FileSys::TitleType>(index), true, qt_raw_copy);
if (res2 == FileSys::InstallResult::Success) {
success();
} else {
failed();
}
}
} else {
failed();
}
}
} }
} }
} }