mirror of
https://github.com/azahar-emu/azahar.git
synced 2026-06-06 02:33:44 -04:00
frontend: Revert removal of .3ds support (#1701)
* frontend: Revert removal of .3ds support * Added 3ds extension to Info.plist * Added .3ds extension to org.azahar_emu.Azahar.xml * game_list.h: Removed leftover definitions --------- Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
This commit is contained in:
parent
a9923b6844
commit
fc137b0229
11 changed files with 10 additions and 85 deletions
1
dist/apple/Info.plist.in
vendored
1
dist/apple/Info.plist.in
vendored
|
|
@ -35,6 +35,7 @@
|
||||||
<string>cci</string>
|
<string>cci</string>
|
||||||
<string>cxi</string>
|
<string>cxi</string>
|
||||||
<string>cia</string>
|
<string>cia</string>
|
||||||
|
<string>3ds</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleTypeName</key>
|
<key>CFBundleTypeName</key>
|
||||||
<string>Nintendo 3DS File</string>
|
<string>Nintendo 3DS File</string>
|
||||||
|
|
|
||||||
1
dist/org.azahar_emu.Azahar.xml
vendored
1
dist/org.azahar_emu.Azahar.xml
vendored
|
|
@ -16,6 +16,7 @@
|
||||||
<expanded-acronym>CTR Cart Image</expanded-acronym>
|
<expanded-acronym>CTR Cart Image</expanded-acronym>
|
||||||
<icon name="azahar"/>
|
<icon name="azahar"/>
|
||||||
<glob pattern="*.cci"/>
|
<glob pattern="*.cci"/>
|
||||||
|
<glob pattern="*.3ds"/>
|
||||||
<magic><match value="NCSD" type="string" offset="256"/></magic>
|
<magic><match value="NCSD" type="string" offset="256"/></magic>
|
||||||
</mime-type>
|
</mime-type>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,16 +7,12 @@ package org.citra.citra_emu.fragments
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.method.LinkMovementMethod
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.ViewGroup.MarginLayoutParams
|
import android.view.ViewGroup.MarginLayoutParams
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.content.edit
|
|
||||||
import androidx.core.text.HtmlCompat
|
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.core.view.updatePadding
|
import androidx.core.view.updatePadding
|
||||||
|
|
@ -50,7 +46,6 @@ class GamesFragment : Fragment() {
|
||||||
|
|
||||||
private val gamesViewModel: GamesViewModel by activityViewModels()
|
private val gamesViewModel: GamesViewModel by activityViewModels()
|
||||||
private val homeViewModel: HomeViewModel by activityViewModels()
|
private val homeViewModel: HomeViewModel by activityViewModels()
|
||||||
private var show3DSFileWarning: Boolean = true
|
|
||||||
private lateinit var gameAdapter: GameAdapter
|
private lateinit var gameAdapter: GameAdapter
|
||||||
|
|
||||||
private val openImageLauncher = registerForActivityResult(
|
private val openImageLauncher = registerForActivityResult(
|
||||||
|
|
@ -224,34 +219,6 @@ class GamesFragment : Fragment() {
|
||||||
setInsets()
|
setInsets()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
|
||||||
super.onResume()
|
|
||||||
|
|
||||||
if (show3DSFileWarning &&
|
|
||||||
!PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext)
|
|
||||||
.getBoolean("show_3ds_files_warning", false)) {
|
|
||||||
val message = HtmlCompat.fromHtml(getString(R.string.warning_3ds_files),
|
|
||||||
HtmlCompat.FROM_HTML_MODE_LEGACY)
|
|
||||||
|
|
||||||
context?.let {
|
|
||||||
val alert = MaterialAlertDialogBuilder(it)
|
|
||||||
.setTitle(getString(R.string.important))
|
|
||||||
.setMessage(message)
|
|
||||||
.setPositiveButton(R.string.dont_show_again) { _, _ ->
|
|
||||||
PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext)
|
|
||||||
.edit() {
|
|
||||||
putBoolean("show_3ds_files_warning", true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.show()
|
|
||||||
|
|
||||||
val alertMessage = alert.findViewById<View>(android.R.id.message) as TextView
|
|
||||||
alertMessage.movementMethod = LinkMovementMethod.getInstance()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
show3DSFileWarning = false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
_binding = null
|
_binding = null
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ class Game(
|
||||||
val allExtensions: Set<String> get() = extensions + badExtensions
|
val allExtensions: Set<String> get() = extensions + badExtensions
|
||||||
|
|
||||||
val extensions: Set<String> = HashSet(
|
val extensions: Set<String> = HashSet(
|
||||||
listOf("3dsx", "app", "axf", "cci", "cxi", "elf", "z3dsx", "zcci", "zcxi")
|
listOf("3dsx", "app", "axf", "cci", "cxi", "elf", "z3dsx", "zcci", "zcxi", "3ds")
|
||||||
)
|
)
|
||||||
|
|
||||||
val badExtensions: Set<String> = HashSet(
|
val badExtensions: Set<String> = HashSet(
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,6 @@
|
||||||
<string name="select_citra_user_folder_home_description">Changes the files that Azahar uses to load applications</string>
|
<string name="select_citra_user_folder_home_description">Changes the files that Azahar uses to load applications</string>
|
||||||
<string name="theme_and_color_description">Modify the look of the app</string>
|
<string name="theme_and_color_description">Modify the look of the app</string>
|
||||||
<string name="install_cia_title">Install CIA</string>
|
<string name="install_cia_title">Install CIA</string>
|
||||||
<string name="warning_3ds_files"><![CDATA[Encrypted files and .3ds files are no longer supported. Decrypting and/or renaming to .cci may be necessary. <a href="https://azahar-emu.org/blog/game-loading-changes/">Learn more.</a>]]></string>
|
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
<string name="select_gpu_driver">Select GPU driver</string>
|
<string name="select_gpu_driver">Select GPU driver</string>
|
||||||
|
|
@ -398,8 +397,6 @@
|
||||||
<string name="auto_select">Auto-Select</string>
|
<string name="auto_select">Auto-Select</string>
|
||||||
<string name="start">Start</string>
|
<string name="start">Start</string>
|
||||||
<string name="cancelling">Cancelling…</string>
|
<string name="cancelling">Cancelling…</string>
|
||||||
<string name="important">Important</string>
|
|
||||||
<string name="dont_show_again">Don\'t show again</string>
|
|
||||||
<string name="visibility">Visibility</string>
|
<string name="visibility">Visibility</string>
|
||||||
<string name="information">Information</string>
|
<string name="information">Information</string>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3183,7 +3183,7 @@ void GMainWindow::OnCompressFile() {
|
||||||
|
|
||||||
QStringList filepaths =
|
QStringList filepaths =
|
||||||
QFileDialog::getOpenFileNames(this, tr("Load 3DS ROM Files"), UISettings::values.roms_path,
|
QFileDialog::getOpenFileNames(this, tr("Load 3DS ROM Files"), UISettings::values.roms_path,
|
||||||
tr("3DS ROM Files (*.cia *.cci *.3dsx *.cxi)") +
|
tr("3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds)") +
|
||||||
QStringLiteral(";;") + tr("All Files (*.*)"));
|
QStringLiteral(";;") + tr("All Files (*.*)"));
|
||||||
|
|
||||||
QString out_path;
|
QString out_path;
|
||||||
|
|
@ -3863,8 +3863,8 @@ static bool IsSingleFileDropEvent(const QMimeData* mime) {
|
||||||
return mime->hasUrls() && mime->urls().length() == 1;
|
return mime->hasUrls() && mime->urls().length() == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const std::array<std::string, 10> AcceptedExtensions = {
|
static const std::array<std::string, 11> AcceptedExtensions = {
|
||||||
"cci", "cxi", "bin", "3dsx", "app", "elf", "axf", "zcci", "zcxi", "z3dsx"};
|
"cci", "cxi", "bin", "3dsx", "app", "elf", "axf", "zcci", "zcxi", "z3dsx", "3ds"};
|
||||||
|
|
||||||
static bool IsCorrectFileExtension(const QMimeData* mime) {
|
static bool IsCorrectFileExtension(const QMimeData* mime) {
|
||||||
const QString& filename = mime->urls().at(0).toLocalFile();
|
const QString& filename = mime->urls().at(0).toLocalFile();
|
||||||
|
|
|
||||||
|
|
@ -852,7 +852,6 @@ void QtConfig::ReadUIGameListValues() {
|
||||||
ReadBasicSetting(UISettings::values.game_list_row_2);
|
ReadBasicSetting(UISettings::values.game_list_row_2);
|
||||||
ReadBasicSetting(UISettings::values.game_list_hide_no_icon);
|
ReadBasicSetting(UISettings::values.game_list_hide_no_icon);
|
||||||
ReadBasicSetting(UISettings::values.game_list_single_line_mode);
|
ReadBasicSetting(UISettings::values.game_list_single_line_mode);
|
||||||
ReadBasicSetting(UISettings::values.show_3ds_files_warning);
|
|
||||||
|
|
||||||
ReadBasicSetting(UISettings::values.show_compat_column);
|
ReadBasicSetting(UISettings::values.show_compat_column);
|
||||||
ReadBasicSetting(UISettings::values.show_region_column);
|
ReadBasicSetting(UISettings::values.show_region_column);
|
||||||
|
|
@ -1376,7 +1375,6 @@ void QtConfig::SaveUIGameListValues() {
|
||||||
WriteBasicSetting(UISettings::values.game_list_row_2);
|
WriteBasicSetting(UISettings::values.game_list_row_2);
|
||||||
WriteBasicSetting(UISettings::values.game_list_hide_no_icon);
|
WriteBasicSetting(UISettings::values.game_list_hide_no_icon);
|
||||||
WriteBasicSetting(UISettings::values.game_list_single_line_mode);
|
WriteBasicSetting(UISettings::values.game_list_single_line_mode);
|
||||||
WriteBasicSetting(UISettings::values.show_3ds_files_warning);
|
|
||||||
|
|
||||||
WriteBasicSetting(UISettings::values.show_compat_column);
|
WriteBasicSetting(UISettings::values.show_compat_column);
|
||||||
WriteBasicSetting(UISettings::values.show_region_column);
|
WriteBasicSetting(UISettings::values.show_region_column);
|
||||||
|
|
|
||||||
|
|
@ -391,40 +391,6 @@ GameList::GameList(PlayTime::PlayTimeManager& play_time_manager_, GMainWindow* p
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
|
|
||||||
if (UISettings::values.show_3ds_files_warning.GetValue()) {
|
|
||||||
|
|
||||||
warning_layout = new QHBoxLayout;
|
|
||||||
deprecated_3ds_warning = new QLabel;
|
|
||||||
deprecated_3ds_warning->setText(
|
|
||||||
tr("IMPORTANT: Encrypted files and .3ds files are no longer supported. Decrypting "
|
|
||||||
"and/or renaming to .cci may be necessary. <a "
|
|
||||||
"href='https://azahar-emu.org/blog/game-loading-changes/'>Learn more.</a>"));
|
|
||||||
deprecated_3ds_warning->setOpenExternalLinks(true);
|
|
||||||
deprecated_3ds_warning->setStyleSheet(
|
|
||||||
QString::fromStdString("color: black; font-weight: bold;"));
|
|
||||||
|
|
||||||
warning_hide = new QPushButton(tr("Don't show again"));
|
|
||||||
warning_hide->setStyleSheet(
|
|
||||||
QString::fromStdString("color: blue; text-decoration: underline;"));
|
|
||||||
warning_hide->setFlat(true);
|
|
||||||
warning_hide->setCursor(Qt::PointingHandCursor);
|
|
||||||
|
|
||||||
connect(warning_hide, &QPushButton::clicked, [this]() {
|
|
||||||
warning_widget->setVisible(false);
|
|
||||||
UISettings::values.show_3ds_files_warning.SetValue(false);
|
|
||||||
});
|
|
||||||
|
|
||||||
warning_layout->addWidget(deprecated_3ds_warning);
|
|
||||||
warning_layout->addStretch();
|
|
||||||
warning_layout->addWidget(warning_hide);
|
|
||||||
warning_layout->setContentsMargins(3, 3, 3, 3);
|
|
||||||
warning_widget = new QWidget;
|
|
||||||
warning_widget->setStyleSheet(QString::fromStdString("background-color: khaki;"));
|
|
||||||
warning_widget->setLayout(warning_layout);
|
|
||||||
|
|
||||||
layout->addWidget(warning_widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
layout->addWidget(tree_view);
|
layout->addWidget(tree_view);
|
||||||
layout->addWidget(search_field);
|
layout->addWidget(search_field);
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
|
|
@ -1107,9 +1073,9 @@ void GameList::LoadInterfaceLayout() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const QStringList GameList::supported_file_extensions = {
|
const QStringList GameList::supported_file_extensions = {
|
||||||
QStringLiteral("3dsx"), QStringLiteral("elf"), QStringLiteral("axf"),
|
QStringLiteral("3dsx"), QStringLiteral("elf"), QStringLiteral("axf"), QStringLiteral("cci"),
|
||||||
QStringLiteral("cci"), QStringLiteral("cxi"), QStringLiteral("app"),
|
QStringLiteral("cxi"), QStringLiteral("app"), QStringLiteral("z3dsx"), QStringLiteral("zcci"),
|
||||||
QStringLiteral("z3dsx"), QStringLiteral("zcci"), QStringLiteral("zcxi"),
|
QStringLiteral("zcxi"), QStringLiteral("3ds"),
|
||||||
};
|
};
|
||||||
|
|
||||||
void GameList::RefreshGameDirectory() {
|
void GameList::RefreshGameDirectory() {
|
||||||
|
|
|
||||||
|
|
@ -137,10 +137,6 @@ private:
|
||||||
void changeEvent(QEvent*) override;
|
void changeEvent(QEvent*) override;
|
||||||
void RetranslateUI();
|
void RetranslateUI();
|
||||||
|
|
||||||
QHBoxLayout* warning_layout = nullptr;
|
|
||||||
QWidget* warning_widget = nullptr;
|
|
||||||
QLabel* deprecated_3ds_warning = nullptr;
|
|
||||||
QPushButton* warning_hide = nullptr;
|
|
||||||
GameListSearchField* search_field;
|
GameListSearchField* search_field;
|
||||||
GMainWindow* main_window = nullptr;
|
GMainWindow* main_window = nullptr;
|
||||||
QVBoxLayout* layout = nullptr;
|
QVBoxLayout* layout = nullptr;
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,6 @@ struct Values {
|
||||||
Settings::Setting<GameListText> game_list_row_2{GameListText::FileName, "row2"};
|
Settings::Setting<GameListText> game_list_row_2{GameListText::FileName, "row2"};
|
||||||
Settings::Setting<bool> game_list_hide_no_icon{false, "hideNoIcon"};
|
Settings::Setting<bool> game_list_hide_no_icon{false, "hideNoIcon"};
|
||||||
Settings::Setting<bool> game_list_single_line_mode{false, "singleLineMode"};
|
Settings::Setting<bool> game_list_single_line_mode{false, "singleLineMode"};
|
||||||
Settings::Setting<bool> show_3ds_files_warning{true, "show_3ds_files_warning"};
|
|
||||||
|
|
||||||
// Compatibility List
|
// Compatibility List
|
||||||
Settings::Setting<bool> show_compat_column{true, "show_compat_column"};
|
Settings::Setting<bool> show_compat_column{true, "show_compat_column"};
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ FileType GuessFromExtension(const std::string& extension_) {
|
||||||
if (extension == ".elf" || extension == ".axf")
|
if (extension == ".elf" || extension == ".axf")
|
||||||
return FileType::ELF;
|
return FileType::ELF;
|
||||||
|
|
||||||
if (extension == ".cci" || extension == ".zcci")
|
if (extension == ".cci" || extension == ".zcci" || extension == ".3ds")
|
||||||
return FileType::CCI;
|
return FileType::CCI;
|
||||||
|
|
||||||
if (extension == ".cxi" || extension == ".app" || extension == ".zcxi")
|
if (extension == ".cxi" || extension == ".app" || extension == ".zcxi")
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue