@ -2018,38 +2018,50 @@ static bool RomFSRawCopy(QProgressDialog& dialog, const FileSys::VirtualDir& src
return true ;
return true ;
}
}
void GMainWindow : : OnGameListRemoveInstalledEntry ( u64 program_id , InstalledEntryType type ) {
QString GMainWindow : : GetGameListErrorRemoving ( InstalledEntryType type ) const {
const QString entry_type = [ type ] {
switch ( type ) {
switch ( type ) {
case InstalledEntryType : : Game :
case InstalledEntryType : : Game :
return tr ( " Contents" ) ;
return tr ( " Error Removing Contents" ) ;
case InstalledEntryType : : Update :
case InstalledEntryType : : Update :
return tr ( " Update" ) ;
return tr ( " Error Removing Update" ) ;
case InstalledEntryType : : AddOnContent :
case InstalledEntryType : : AddOnContent :
return tr ( " DLC" ) ;
return tr ( " Error Removing DLC" ) ;
default :
default :
return QString { } ;
return QStringLiteral ( " Error Removing <Invalid Type> " ) ;
}
}
void GMainWindow : : OnGameListRemoveInstalledEntry ( u64 program_id , InstalledEntryType type ) {
const QString entry_question = [ type ] {
switch ( type ) {
case InstalledEntryType : : Game :
return tr ( " Remove Installed Game Contents? " ) ;
case InstalledEntryType : : Update :
return tr ( " Remove Installed Game Update? " ) ;
case InstalledEntryType : : AddOnContent :
return tr ( " Remove Installed Game DLC? " ) ;
default :
return QStringLiteral ( " Remove Installed Game <Invalid Type>? " ) ;
}
}
} ( ) ;
} ( ) ;
if ( QMessageBox : : question (
if ( QMessageBox : : question ( this , tr ( " Remove Entry " ) , entry_question ,
this , tr ( " Remove Entry " ) , tr ( " Remove Installed Game %1? " ) . arg ( entry_type ) ,
QMessageBox : : Yes | QMessageBox : : No ,
QMessageBox : : Yes | QMessageBox : : No , QMessageBox : : No ) ! = QMessageBox : : Yes ) {
QMessageBox : : No ) ! = QMessageBox : : Yes ) {
return ;
return ;
}
}
switch ( type ) {
switch ( type ) {
case InstalledEntryType : : Game :
case InstalledEntryType : : Game :
RemoveBaseContent ( program_id , entry_type ) ;
RemoveBaseContent ( program_id , type) ;
[[fallthrough]] ;
[[fallthrough]] ;
case InstalledEntryType : : Update :
case InstalledEntryType : : Update :
RemoveUpdateContent ( program_id , entry_ type) ;
RemoveUpdateContent ( program_id , type) ;
if ( type ! = InstalledEntryType : : Game ) {
if ( type ! = InstalledEntryType : : Game ) {
break ;
break ;
}
}
[[fallthrough]] ;
[[fallthrough]] ;
case InstalledEntryType : : AddOnContent :
case InstalledEntryType : : AddOnContent :
RemoveAddOnContent ( program_id , entry_ type) ;
RemoveAddOnContent ( program_id , type) ;
break ;
break ;
}
}
Common : : FS : : RemoveDirRecursively ( Common : : FS : : GetYuzuPath ( Common : : FS : : YuzuPath : : CacheDir ) /
Common : : FS : : RemoveDirRecursively ( Common : : FS : : GetYuzuPath ( Common : : FS : : YuzuPath : : CacheDir ) /
@ -2057,7 +2069,7 @@ void GMainWindow::OnGameListRemoveInstalledEntry(u64 program_id, InstalledEntryT
game_list - > PopulateAsync ( UISettings : : values . game_dirs ) ;
game_list - > PopulateAsync ( UISettings : : values . game_dirs ) ;
}
}
void GMainWindow : : RemoveBaseContent ( u64 program_id , const QString & entry_ type) {
void GMainWindow : : RemoveBaseContent ( u64 program_id , InstalledEntryType type) {
const auto & fs_controller = system - > GetFileSystemController ( ) ;
const auto & fs_controller = system - > GetFileSystemController ( ) ;
const auto res = fs_controller . GetUserNANDContents ( ) - > RemoveExistingEntry ( program_id ) | |
const auto res = fs_controller . GetUserNANDContents ( ) - > RemoveExistingEntry ( program_id ) | |
fs_controller . GetSDMCContents ( ) - > RemoveExistingEntry ( program_id ) ;
fs_controller . GetSDMCContents ( ) - > RemoveExistingEntry ( program_id ) ;
@ -2067,12 +2079,12 @@ void GMainWindow::RemoveBaseContent(u64 program_id, const QString& entry_type) {
tr ( " Successfully removed the installed base game. " ) ) ;
tr ( " Successfully removed the installed base game. " ) ) ;
} else {
} else {
QMessageBox : : warning (
QMessageBox : : warning (
this , tr( " Error Removing %1 " ) . arg ( entry_ type) ,
this , GetGameListErrorRemoving( type) ,
tr ( " The base game is not installed in the NAND and cannot be removed. " ) ) ;
tr ( " The base game is not installed in the NAND and cannot be removed. " ) ) ;
}
}
}
}
void GMainWindow : : RemoveUpdateContent ( u64 program_id , const QString & entry_ type) {
void GMainWindow : : RemoveUpdateContent ( u64 program_id , InstalledEntryType type) {
const auto update_id = program_id | 0x800 ;
const auto update_id = program_id | 0x800 ;
const auto & fs_controller = system - > GetFileSystemController ( ) ;
const auto & fs_controller = system - > GetFileSystemController ( ) ;
const auto res = fs_controller . GetUserNANDContents ( ) - > RemoveExistingEntry ( update_id ) | |
const auto res = fs_controller . GetUserNANDContents ( ) - > RemoveExistingEntry ( update_id ) | |
@ -2082,12 +2094,12 @@ void GMainWindow::RemoveUpdateContent(u64 program_id, const QString& entry_type)
QMessageBox : : information ( this , tr ( " Successfully Removed " ) ,
QMessageBox : : information ( this , tr ( " Successfully Removed " ) ,
tr ( " Successfully removed the installed update. " ) ) ;
tr ( " Successfully removed the installed update. " ) ) ;
} else {
} else {
QMessageBox : : warning ( this , tr( " Error Removing %1 " ) . arg ( entry_ type) ,
QMessageBox : : warning ( this , GetGameListErrorRemoving( type) ,
tr ( " There is no update installed for this title. " ) ) ;
tr ( " There is no update installed for this title. " ) ) ;
}
}
}
}
void GMainWindow : : RemoveAddOnContent ( u64 program_id , const QString & entry_ type) {
void GMainWindow : : RemoveAddOnContent ( u64 program_id , InstalledEntryType type) {
u32 count { } ;
u32 count { } ;
const auto & fs_controller = system - > GetFileSystemController ( ) ;
const auto & fs_controller = system - > GetFileSystemController ( ) ;
const auto dlc_entries = system - > GetContentProvider ( ) . ListEntriesFilter (
const auto dlc_entries = system - > GetContentProvider ( ) . ListEntriesFilter (
@ -2105,7 +2117,7 @@ void GMainWindow::RemoveAddOnContent(u64 program_id, const QString& entry_type)
}
}
if ( count = = 0 ) {
if ( count = = 0 ) {
QMessageBox : : warning ( this , tr( " Error Removing %1 " ) . arg ( entry_ type) ,
QMessageBox : : warning ( this , GetGameListErrorRemoving( type) ,
tr ( " There are no DLC installed for this title. " ) ) ;
tr ( " There are no DLC installed for this title. " ) ) ;
return ;
return ;
}
}