chore: update project branding to Citron

Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
Zephyron
2025-05-06 16:08:59 +10:00
parent bfb82e577c
commit 5e16e20427
122 changed files with 448 additions and 448 deletions

View File

@@ -235,7 +235,7 @@ This would ban both their forum username and their IP address.</source>
<message> <message>
<location filename="../../src/citron/compatdb.ui" line="36"/> <location filename="../../src/citron/compatdb.ui" line="36"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Should you choose to submit a test case to the &lt;/span&gt;&lt;a href=&quot;https://citron-emu.org/game/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;citron Compatibility List&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, The following information will be collected and displayed on the site:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Hardware Information (CPU / GPU / Operating System)&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Which version of citron you are running&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The connected citron account&lt;/li&gt;&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Should you choose to submit a test case to the &lt;/span&gt;&lt;a href=&quot;https://citron-emu.org/game/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;citron Compatibility List&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, The following information will be collected and displayed on the site:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Hardware Information (CPU / GPU / Operating System)&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Which version of citron you are running&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The connected citron account&lt;/li&gt;&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Si escolliu presentar un cas de prova a la &lt;/span&gt;&lt;a href=&quot;https://citron-emu.org/game/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;llista de compatibilitat de Yuzu&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, la informació següent es recollirà i es mostrarà al web:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Informació del maquinari (CPU / GPU / Sistema operatiu)&lt;/li&gt; &lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Quina versió de citron està utilitzant?&lt;/li&gt; &lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;El compte de citron connectat&lt;/li&gt;&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Si escolliu presentar un cas de prova a la &lt;/span&gt;&lt;a href=&quot;https://citron-emu.org/game/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;llista de compatibilitat de Citron&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, la informació següent es recollirà i es mostrarà al web:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Informació del maquinari (CPU / GPU / Sistema operatiu)&lt;/li&gt; &lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Quina versió de citron està utilitzant?&lt;/li&gt; &lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;El compte de citron connectat&lt;/li&gt;&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/compatdb.ui" line="77"/> <location filename="../../src/citron/compatdb.ui" line="77"/>

View File

@@ -29,7 +29,7 @@ p, li { white-space: pre-wrap; }
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Yuzu je experimentální open source emulátor pro konzoli Nintendo Switch licencován pod licencí GPLv3.0+.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Citron je experimentální open source emulátor pro konzoli Nintendo Switch licencován pod licencí GPLv3.0+.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Tento software by neměl být využíván pro hraní her, které nevlastníte.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Tento software by neměl být využíván pro hraní her, které nevlastníte.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
@@ -41,7 +41,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location filename="../../src/citron/aboutdialog.ui" line="146"/> <location filename="../../src/citron/aboutdialog.ui" line="146"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; is a trademark of Nintendo. citron is not affiliated with Nintendo in any way.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; is a trademark of Nintendo. citron is not affiliated with Nintendo in any way.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; je trademark Nintenda. Yuzu nemá s Nintendem nic společného.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; je trademark Nintenda. Citron nemá s Nintendem nic společného.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@@ -29,7 +29,7 @@ p, li { white-space: pre-wrap; }
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Yuzu er en eksperimentel åben emulator til Nintendo Switch, under GPLv3.0+ licensen.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Citron er en eksperimentel åben emulator til Nintendo Switch, under GPLv3.0+ licensen.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Denne programvare bør ikke bruges til, at spille spil, du ikke har anskaffet lovlig vis.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Denne programvare bør ikke bruges til, at spille spil, du ikke har anskaffet lovlig vis.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
@@ -41,7 +41,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location filename="../../src/citron/aboutdialog.ui" line="146"/> <location filename="../../src/citron/aboutdialog.ui" line="146"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; is a trademark of Nintendo. citron is not affiliated with Nintendo in any way.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; is a trademark of Nintendo. citron is not affiliated with Nintendo in any way.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; er et varemærke tilhørende Nintendo. Yuzu er ikke tilknyttet Nintendo nogen måde.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; er et varemærke tilhørende Nintendo. Citron er ikke tilknyttet Nintendo nogen måde.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -2229,7 +2229,7 @@ When a guest attempts to open the controller applet, it is immediately closed.</
<message> <message>
<location filename="../../src/citron/configuration/configure_debug.ui" line="403"/> <location filename="../../src/citron/configuration/configure_debug.ui" line="403"/>
<source>Enables citron to check for a working Vulkan environment when the program starts up. Disable this if this is causing issues with external programs seeing citron.</source> <source>Enables citron to check for a working Vulkan environment when the program starts up. Disable this if this is causing issues with external programs seeing citron.</source>
<translation>Gør Yuzu i stand til at kontrollere for et funktionelt Vulkan-miljø, når programmet starter op. Deaktivering af dette forårsager problemer med at eksterne programmer ser Yuzu.</translation> <translation>Gør Citron i stand til at kontrollere for et funktionelt Vulkan-miljø, når programmet starter op. Deaktivering af dette forårsager problemer med at eksterne programmer ser Citron.</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_debug.ui" line="406"/> <location filename="../../src/citron/configuration/configure_debug.ui" line="406"/>

View File

@@ -5296,7 +5296,7 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf
<message> <message>
<location filename="../../src/citron/main.cpp" line="1836"/> <location filename="../../src/citron/main.cpp" line="1836"/>
<source>citron has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://citron-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source> <source>citron has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://citron-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation>Yuzu ist auf einen Fehler gestoßen beim Ausführen des Videokerns. <translation>Citron ist auf einen Fehler gestoßen beim Ausführen des Videokerns.
Dies ist in der Regel auf veraltete GPU Treiber zurückzuführen, integrierte GPUs eingeschlossen. Dies ist in der Regel auf veraltete GPU Treiber zurückzuführen, integrierte GPUs eingeschlossen.
Bitte öffnen Sie die Log Datei für weitere Informationen. Für weitere Informationen wie Sie auf die Log Datei zugreifen, öffnen Sie bitte die folgende Seite: &lt;a href=&apos;https://citron-emu.org/help/reference/log-files/&apos;&gt;Wie wird eine Log Datei hochgeladen?&lt;/a&gt;.</translation> Bitte öffnen Sie die Log Datei für weitere Informationen. Für weitere Informationen wie Sie auf die Log Datei zugreifen, öffnen Sie bitte die folgende Seite: &lt;a href=&apos;https://citron-emu.org/help/reference/log-files/&apos;&gt;Wie wird eine Log Datei hochgeladen?&lt;/a&gt;.</translation>
</message> </message>

View File

@@ -5932,7 +5932,7 @@ Por favor, utiliza esta función sólo para instalar actualizaciones y DLCs.</tr
<message> <message>
<location filename="../../src/citron/main.cpp" line="3564"/> <location filename="../../src/citron/main.cpp" line="3564"/>
<source>Missing citron Account</source> <source>Missing citron Account</source>
<translation>Falta la cuenta de Yuzu</translation> <translation>Falta la cuenta de Citron</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/main.cpp" line="3565"/> <location filename="../../src/citron/main.cpp" line="3565"/>

View File

@@ -4,7 +4,7 @@
<message> <message>
<location filename="../../src/citron/aboutdialog.ui" line="14"/> <location filename="../../src/citron/aboutdialog.ui" line="14"/>
<source>About citron</source> <source>About citron</source>
<translation>Tietoa Yuzu:sta</translation> <translation>Tietoa Citron:sta</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/aboutdialog.ui" line="30"/> <location filename="../../src/citron/aboutdialog.ui" line="30"/>
@@ -4789,7 +4789,7 @@ Haluatko silti ohittaa tämän ja sulkea?</translation>
<message> <message>
<location filename="../../src/citron/bootmanager.cpp" line="974"/> <location filename="../../src/citron/bootmanager.cpp" line="974"/>
<source>citron has not been compiled with OpenGL support.</source> <source>citron has not been compiled with OpenGL support.</source>
<translation>Yuzua ei ole koottu OpenGL-yhteensopivuuden kanssa.</translation> <translation>Citrona ei ole koottu OpenGL-yhteensopivuuden kanssa.</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/bootmanager.cpp" line="993"/> <location filename="../../src/citron/bootmanager.cpp" line="993"/>

View File

@@ -4514,7 +4514,7 @@ UUID : %2</translation>
<message> <message>
<location filename="../../src/citron/configuration/configure_tas.ui" line="17"/> <location filename="../../src/citron/configuration/configure_tas.ui" line="17"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reads controller input from scripts in the same format as TAS-nx scripts.&lt;br/&gt;For a more detailed explanation, please consult the &lt;a href=&quot;https://citron-emu.org/help/feature/tas/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;help page&lt;/span&gt;&lt;/a&gt; on the citron website.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reads controller input from scripts in the same format as TAS-nx scripts.&lt;br/&gt;For a more detailed explanation, please consult the &lt;a href=&quot;https://citron-emu.org/help/feature/tas/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;help page&lt;/span&gt;&lt;/a&gt; on the citron website.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Lit l&apos;entrée du contrôleur à partir des scripts dans le même format que &apos;TAS-nx&apos; &lt;br/&gt; Pour une explication plus détaillée, veuillez consulter le &lt;a href=&quot;https://citron-emu.org/help/feature/tas/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;page d&apos;aide&lt;/span&gt;&lt;/a&gt; sur le site Yuzu.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Lit l&apos;entrée du contrôleur à partir des scripts dans le même format que &apos;TAS-nx&apos; &lt;br/&gt; Pour une explication plus détaillée, veuillez consulter le &lt;a href=&quot;https://citron-emu.org/help/feature/tas/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;page d&apos;aide&lt;/span&gt;&lt;/a&gt; sur le site Citron.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_tas.ui" line="27"/> <location filename="../../src/citron/configuration/configure_tas.ui" line="27"/>
@@ -7399,7 +7399,7 @@ Message de débogage : </translation>
<message> <message>
<location filename="../../src/citron/main.ui" line="379"/> <location filename="../../src/citron/main.ui" line="379"/>
<source>Open &amp;citron Folder</source> <source>Open &amp;citron Folder</source>
<translation>Ouvrir le &amp;dossier de Yuzu</translation> <translation>Ouvrir le &amp;dossier de Citron</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/main.ui" line="387"/> <location filename="../../src/citron/main.ui" line="387"/>

View File

@@ -3122,7 +3122,7 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul
<location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2701"/> <location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2701"/>
<location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2717"/> <location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2717"/>
<source>Requires restarting citron</source> <source>Requires restarting citron</source>
<translation>Yuzu újraindítása szükséges</translation> <translation>Citron újraindítása szükséges</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2668"/> <location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2668"/>

View File

@@ -2763,7 +2763,7 @@ When a guest attempts to open the controller applet, it is immediately closed.</
<message> <message>
<location filename="../../src/citron/configuration/configure_hotkeys.cpp" line="341"/> <location filename="../../src/citron/configuration/configure_hotkeys.cpp" line="341"/>
<source>An error occurred. Please report this issue on github.</source> <source>An error occurred. Please report this issue on github.</source>
<translation>Errore durante la configurazione. Segnala quest&apos;errore alla pagina Github di Yuzu.</translation> <translation>Errore durante la configurazione. Segnala quest&apos;errore alla pagina Github di Citron.</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_hotkeys.cpp" line="381"/> <location filename="../../src/citron/configuration/configure_hotkeys.cpp" line="381"/>

View File

@@ -2301,7 +2301,7 @@ When a guest attempts to open the controller applet, it is immediately closed.</
<message> <message>
<location filename="../../src/citron/configuration/configure_debug.ui" line="549"/> <location filename="../../src/citron/configuration/configure_debug.ui" line="549"/>
<source>**This will be reset automatically when citron closes.</source> <source>**This will be reset automatically when citron closes.</source>
<translation>**Yuzu .</translation> <translation>**Citron .</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_debug.cpp" line="82"/> <location filename="../../src/citron/configuration/configure_debug.cpp" line="82"/>

View File

@@ -4625,7 +4625,7 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe
<message> <message>
<location filename="../../src/citron/configuration/configure_touchscreen_advanced.ui" line="26"/> <location filename="../../src/citron/configuration/configure_touchscreen_advanced.ui" line="26"/>
<source>Warning: The settings in this page affect the inner workings of citron&apos;s emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing.</source> <source>Warning: The settings in this page affect the inner workings of citron&apos;s emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing.</source>
<translation>Ostrzeżenie: Ustawienia na tej stronie mają wpływ na działanie emulowanego ekranu dotykowego Yuzu. ch zmiana może spowodować niepożądane zachowanie, takie jak częściowo lub całkowicie nie działający ekran dotykowy. Powinieneś/naś używać tej strony tylko wtedy, gdy wiesz, co robisz.</translation> <translation>Ostrzeżenie: Ustawienia na tej stronie mają wpływ na działanie emulowanego ekranu dotykowego Citron. ch zmiana może spowodować niepożądane zachowanie, takie jak częściowo lub całkowicie nie działający ekran dotykowy. Powinieneś/naś używać tej strony tylko wtedy, gdy wiesz, co robisz.</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_touchscreen_advanced.ui" line="52"/> <location filename="../../src/citron/configuration/configure_touchscreen_advanced.ui" line="52"/>
@@ -5878,7 +5878,7 @@ Proszę, używaj tej funkcji tylko do instalowania łatek i DLC.</translation>
<message> <message>
<location filename="../../src/citron/main.cpp" line="3564"/> <location filename="../../src/citron/main.cpp" line="3564"/>
<source>Missing citron Account</source> <source>Missing citron Account</source>
<translation>Brakuje konta Yuzu</translation> <translation>Brakuje konta Citron</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/main.cpp" line="3565"/> <location filename="../../src/citron/main.cpp" line="3565"/>

View File

@@ -41,7 +41,7 @@ p, li { white-space: pre-wrap; }
<message> <message>
<location filename="../../src/citron/aboutdialog.ui" line="146"/> <location filename="../../src/citron/aboutdialog.ui" line="146"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; is a trademark of Nintendo. citron is not affiliated with Nintendo in any way.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; is a trademark of Nintendo. citron is not affiliated with Nintendo in any way.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; é uma marca comercial da Nintendo. Yuzu não é afiliado com a Nintendo de qualquer forma.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; é uma marca comercial da Nintendo. Citron não é afiliado com a Nintendo de qualquer forma.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -4991,7 +4991,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<message> <message>
<location filename="../../src/citron/configuration/configure_web.ui" line="25"/> <location filename="../../src/citron/configuration/configure_web.ui" line="25"/>
<source>citron Web Service</source> <source>citron Web Service</source>
<translation>Serviço Web do Yuzu</translation> <translation>Serviço Web do Citron</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_web.ui" line="31"/> <location filename="../../src/citron/configuration/configure_web.ui" line="31"/>
@@ -5037,7 +5037,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<message> <message>
<location filename="../../src/citron/configuration/configure_web.ui" line="134"/> <location filename="../../src/citron/configuration/configure_web.ui" line="134"/>
<source>Share anonymous usage data with the citron team</source> <source>Share anonymous usage data with the citron team</source>
<translation>Compartilhar dados de uso anônimos com a equipa Yuzu</translation> <translation>Compartilhar dados de uso anônimos com a equipa Citron</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_web.ui" line="141"/> <location filename="../../src/citron/configuration/configure_web.ui" line="141"/>
@@ -5917,7 +5917,7 @@ Por favor, use esse recurso apenas para instalar atualizações e DLC.</translat
<message> <message>
<location filename="../../src/citron/main.cpp" line="3564"/> <location filename="../../src/citron/main.cpp" line="3564"/>
<source>Missing citron Account</source> <source>Missing citron Account</source>
<translation>Conta Yuzu Ausente</translation> <translation>Conta Citron Ausente</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/main.cpp" line="3565"/> <location filename="../../src/citron/main.cpp" line="3565"/>

View File

@@ -4,7 +4,7 @@
<message> <message>
<location filename="../../src/citron/aboutdialog.ui" line="14"/> <location filename="../../src/citron/aboutdialog.ui" line="14"/>
<source>About citron</source> <source>About citron</source>
<translation>Yuzu hakkında</translation> <translation>Citron hakkında</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/aboutdialog.ui" line="72"/> <location filename="../../src/citron/aboutdialog.ui" line="72"/>
@@ -29,7 +29,7 @@ p, li { white-space: pre-wrap; }
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Yuzu GPLv3.0+ ile lisanslanmış Nintendo Switch için ık kaynak bir deneysel emülatördür.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Citron GPLv3.0+ ile lisanslanmış Nintendo Switch için ık kaynak bir deneysel emülatördür.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Bu yazılım yasal yollarla edinilmemiş oyunları çalıştırmak için kullanılmamalı.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Bu yazılım yasal yollarla edinilmemiş oyunları çalıştırmak için kullanılmamalı.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
@@ -3102,7 +3102,7 @@ When a guest attempts to open the controller applet, it is immediately closed.</
<location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2701"/> <location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2701"/>
<location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2717"/> <location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2717"/>
<source>Requires restarting citron</source> <source>Requires restarting citron</source>
<translation>Yuzu&apos;yu yeniden başlatmayı gerektirir </translation> <translation>Citron&apos;yu yeniden başlatmayı gerektirir </translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2668"/> <location filename="../../src/citron/configuration/configure_input_advanced.ui" line="2668"/>
@@ -4993,7 +4993,7 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne
<message> <message>
<location filename="../../src/citron/configuration/configure_web.ui" line="134"/> <location filename="../../src/citron/configuration/configure_web.ui" line="134"/>
<source>Share anonymous usage data with the citron team</source> <source>Share anonymous usage data with the citron team</source>
<translation>Yuzu ekibiyle anonim kullanım verilerini paylaş</translation> <translation>Citron ekibiyle anonim kullanım verilerini paylaş</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/configuration/configure_web.ui" line="141"/> <location filename="../../src/citron/configuration/configure_web.ui" line="141"/>
@@ -5270,7 +5270,7 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne
<message> <message>
<location filename="../../src/citron/main.cpp" line="1818"/> <location filename="../../src/citron/main.cpp" line="1818"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats citron supports, &lt;a href=&apos;https://citron-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source> <source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats citron supports, &lt;a href=&apos;https://citron-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Bu oyun için dekonstrükte ROM formatı kullanıyorsunuz, bu fromatın yerine NCA, NAX, XCI ve NSP formatları kullanılmaktadır. Dekonstrükte ROM formatları ikon, üst veri ve güncelleme desteği içermemektedir.&lt;br&gt;&lt;br&gt;Yuzu&apos;nun desteklediği çeşitli Switch formatları için&lt;a href=&apos;https://citron-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;Wiki&apos;yi ziyaret edin&lt;/a&gt;. Bu mesaj yeniden gösterilmeyecektir.</translation> <translation>Bu oyun için dekonstrükte ROM formatı kullanıyorsunuz, bu fromatın yerine NCA, NAX, XCI ve NSP formatları kullanılmaktadır. Dekonstrükte ROM formatları ikon, üst veri ve güncelleme desteği içermemektedir.&lt;br&gt;&lt;br&gt;Citron&apos;nun desteklediği çeşitli Switch formatları için&lt;a href=&apos;https://citron-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;Wiki&apos;yi ziyaret edin&lt;/a&gt;. Bu mesaj yeniden gösterilmeyecektir.</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/main.cpp" line="1830"/> <location filename="../../src/citron/main.cpp" line="1830"/>
@@ -5884,7 +5884,7 @@ Lütfen bu özelliği sadece güncelleme ve DLC yüklemek için kullanın.</tran
<message> <message>
<location filename="../../src/citron/main.cpp" line="3565"/> <location filename="../../src/citron/main.cpp" line="3565"/>
<source>In order to submit a game compatibility test case, you must link your citron account.&lt;br&gt;&lt;br/&gt;To link your citron account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source> <source>In order to submit a game compatibility test case, you must link your citron account.&lt;br&gt;&lt;br/&gt;To link your citron account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Oyun uyumluluk test çalışması göndermek için öncelikle citron hesabınla giriş yapmanız gerekiyor.&lt;br&gt;&lt;br/&gt;Yuzu hesabınızla giriş yapmak için, Emülasyon &amp;gt; Yapılandırma &amp;gt; Web&apos;e gidiniz.</translation> <translation>Oyun uyumluluk test çalışması göndermek için öncelikle citron hesabınla giriş yapmanız gerekiyor.&lt;br&gt;&lt;br/&gt;Citron hesabınızla giriş yapmak için, Emülasyon &amp;gt; Yapılandırma &amp;gt; Web&apos;e gidiniz.</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/main.cpp" line="3580"/> <location filename="../../src/citron/main.cpp" line="3580"/>
@@ -6290,7 +6290,7 @@ Lütfen bu özelliği sadece güncelleme ve DLC yüklemek için kullanın.</tran
<source>The currently running application has requested citron to not exit. <source>The currently running application has requested citron to not exit.
Would you like to bypass this and exit anyway?</source> Would you like to bypass this and exit anyway?</source>
<translation>Şu an çalışan uygulamadan dolayı Yuzu kapatılamıyor. <translation>Şu an çalışan uygulamadan dolayı Citron kapatılamıyor.
Görmezden gelip kapatmak ister misiniz?</translation> Görmezden gelip kapatmak ister misiniz?</translation>
</message> </message>
@@ -6406,7 +6406,7 @@ Görmezden gelip kapatmak ister misiniz?</translation>
<message> <message>
<location filename="../../src/citron/bootmanager.cpp" line="1037"/> <location filename="../../src/citron/bootmanager.cpp" line="1037"/>
<source>citron has not been compiled with OpenGL support.</source> <source>citron has not been compiled with OpenGL support.</source>
<translation>Yuzu OpenGL desteklememektedir.</translation> <translation>Citron OpenGL desteklememektedir.</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/bootmanager.cpp" line="1061"/> <location filename="../../src/citron/bootmanager.cpp" line="1061"/>
@@ -6877,7 +6877,7 @@ Debug Message: </source>
<message> <message>
<location filename="../../src/citron/uisettings.h" line="242"/> <location filename="../../src/citron/uisettings.h" line="242"/>
<source>Exit citron</source> <source>Exit citron</source>
<translation>Yuzu&apos;dan çık</translation> <translation>Citron&apos;dan çık</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/uisettings.h" line="243"/> <location filename="../../src/citron/uisettings.h" line="243"/>
@@ -7255,7 +7255,7 @@ Debug Message: </source>
<message> <message>
<location filename="../../src/citron/main.ui" line="244"/> <location filename="../../src/citron/main.ui" line="244"/>
<source>&amp;About citron</source> <source>&amp;About citron</source>
<translation>&amp;Yuzu Hakkında</translation> <translation>&amp;Citron Hakkında</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/main.ui" line="252"/> <location filename="../../src/citron/main.ui" line="252"/>
@@ -7575,7 +7575,7 @@ Debug Bilgisi:</translation>
<message> <message>
<location filename="../../src/citron/multiplayer/message.cpp" line="32"/> <location filename="../../src/citron/multiplayer/message.cpp" line="32"/>
<source>Creating a room failed. Please retry. Restarting citron might be necessary.</source> <source>Creating a room failed. Please retry. Restarting citron might be necessary.</source>
<translation>Odayı oluşturma başarısız oldu. Lütfen tekrar deneyin. Yuzu&apos;yu yeniden başlatmak gerekebilir.</translation> <translation>Odayı oluşturma başarısız oldu. Lütfen tekrar deneyin. Citron&apos;yu yeniden başlatmak gerekebilir.</translation>
</message> </message>
<message> <message>
<location filename="../../src/citron/multiplayer/message.cpp" line="34"/> <location filename="../../src/citron/multiplayer/message.cpp" line="34"/>

View File

@@ -65,9 +65,9 @@ endif()
# SDL2 # SDL2
if (YUZU_USE_EXTERNAL_SDL2) if (YUZU_USE_EXTERNAL_SDL2)
if (NOT WIN32) if (NOT WIN32)
# Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers # Citron itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers
# Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095) # Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095)
# Yuzu-cmd also needs: Video (depends on Loadso/Dlopen) # Citron-cmd also needs: Video (depends on Loadso/Dlopen)
# CPUinfo also required for SDL Audio, at least until 2.28.0 (see https://github.com/libsdl-org/SDL/issues/7809) # CPUinfo also required for SDL Audio, at least until 2.28.0 (see https://github.com/libsdl-org/SDL/issues/7809)
set(SDL_UNUSED_SUBSYSTEMS set(SDL_UNUSED_SUBSYSTEMS
File Filesystem File Filesystem

View File

@@ -17,7 +17,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<application <application
android:name="org.citron.citron_emu.YuzuApplication" android:name="org.citron.citron_emu.CitronApplication"
android:label="@string/app_name_suffixed" android:label="@string/app_name_suffixed"
android:icon="@drawable/ic_launcher" android:icon="@drawable/ic_launcher"
android:allowBackup="true" android:allowBackup="true"
@@ -36,7 +36,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<activity <activity
android:name="org.citron.citron_emu.ui.main.MainActivity" android:name="org.citron.citron_emu.ui.main.MainActivity"
android:exported="true" android:exported="true"
android:theme="@style/Theme.Yuzu.Splash.Main"> android:theme="@style/Theme.Citron.Splash.Main">
<!-- This intentfilter marks this Activity as the one that gets launched from Home screen. --> <!-- This intentfilter marks this Activity as the one that gets launched from Home screen. -->
<intent-filter> <intent-filter>
@@ -49,12 +49,12 @@ SPDX-License-Identifier: GPL-3.0-or-later
<activity <activity
android:name="org.citron.citron_emu.features.settings.ui.SettingsActivity" android:name="org.citron.citron_emu.features.settings.ui.SettingsActivity"
android:theme="@style/Theme.Yuzu.Main" android:theme="@style/Theme.Citron.Main"
android:label="@string/preferences_settings"/> android:label="@string/preferences_settings"/>
<activity <activity
android:name="org.citron.citron_emu.activities.EmulationActivity" android:name="org.citron.citron_emu.activities.EmulationActivity"
android:theme="@style/Theme.Yuzu.Main" android:theme="@style/Theme.Citron.Main"
android:launchMode="singleTop" android:launchMode="singleTop"
android:supportsPictureInPicture="true" android:supportsPictureInPicture="true"
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|uiMode" android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|uiMode"

View File

@@ -24,7 +24,7 @@ import org.citron.citron_emu.model.GameVerificationResult
/** /**
* Class which contains methods that interact * Class which contains methods that interact
* with the native side of the Yuzu code. * with the native side of the Citron code.
*/ */
object NativeLibrary { object NativeLibrary {
@JvmField @JvmField
@@ -42,7 +42,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun openContentUri(path: String?, openmode: String?): Int { fun openContentUri(path: String?, openmode: String?): Int {
return if (DocumentsTree.isNativePath(path!!)) { return if (DocumentsTree.isNativePath(path!!)) {
YuzuApplication.documentsTree!!.openContentUri(path, openmode) CitronApplication.documentsTree!!.openContentUri(path, openmode)
} else { } else {
FileUtil.openContentUri(path, openmode) FileUtil.openContentUri(path, openmode)
} }
@@ -52,7 +52,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun getSize(path: String?): Long { fun getSize(path: String?): Long {
return if (DocumentsTree.isNativePath(path!!)) { return if (DocumentsTree.isNativePath(path!!)) {
YuzuApplication.documentsTree!!.getFileSize(path) CitronApplication.documentsTree!!.getFileSize(path)
} else { } else {
FileUtil.getFileSize(path) FileUtil.getFileSize(path)
} }
@@ -62,7 +62,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun exists(path: String?): Boolean { fun exists(path: String?): Boolean {
return if (DocumentsTree.isNativePath(path!!)) { return if (DocumentsTree.isNativePath(path!!)) {
YuzuApplication.documentsTree!!.exists(path) CitronApplication.documentsTree!!.exists(path)
} else { } else {
FileUtil.exists(path, suppressLog = true) FileUtil.exists(path, suppressLog = true)
} }
@@ -72,7 +72,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun isDirectory(path: String?): Boolean { fun isDirectory(path: String?): Boolean {
return if (DocumentsTree.isNativePath(path!!)) { return if (DocumentsTree.isNativePath(path!!)) {
YuzuApplication.documentsTree!!.isDirectory(path) CitronApplication.documentsTree!!.isDirectory(path)
} else { } else {
FileUtil.isDirectory(path) FileUtil.isDirectory(path)
} }
@@ -82,7 +82,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun getParentDirectory(path: String): String = fun getParentDirectory(path: String): String =
if (DocumentsTree.isNativePath(path)) { if (DocumentsTree.isNativePath(path)) {
YuzuApplication.documentsTree!!.getParentDirectory(path) CitronApplication.documentsTree!!.getParentDirectory(path)
} else { } else {
path path
} }
@@ -91,7 +91,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun getFilename(path: String): String = fun getFilename(path: String): String =
if (DocumentsTree.isNativePath(path)) { if (DocumentsTree.isNativePath(path)) {
YuzuApplication.documentsTree!!.getFilename(path) CitronApplication.documentsTree!!.getFilename(path)
} else { } else {
FileUtil.getFilename(Uri.parse(path)) FileUtil.getFilename(Uri.parse(path))
} }
@@ -326,7 +326,7 @@ object NativeLibrary {
} }
/** /**
* Logs the Yuzu version, Android version and, CPU. * Logs the Citron version, Android version and, CPU.
*/ */
external fun logDeviceInfo() external fun logDeviceInfo()

View File

@@ -37,7 +37,7 @@ import androidx.navigation.fragment.NavHostFragment
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.databinding.ActivityEmulationBinding import org.citron.citron_emu.databinding.ActivityEmulationBinding
import org.citron.citron_emu.features.input.NativeInput import org.citron.citron_emu.features.input.NativeInput
import org.citron.citron_emu.features.settings.model.BooleanSetting import org.citron.citron_emu.features.settings.model.BooleanSetting
@@ -123,7 +123,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
nfcReader = NfcReader(this) nfcReader = NfcReader(this)
nfcReader.initialize() nfcReader.initialize()
val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) val preferences = PreferenceManager.getDefaultSharedPreferences(CitronApplication.appContext)
if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) { if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) {
if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.totalMemory)) { if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.totalMemory)) {
Toast.makeText( Toast.makeText(

View File

@@ -12,7 +12,7 @@ import androidx.navigation.findNavController
import org.citron.citron_emu.HomeNavigationDirections import org.citron.citron_emu.HomeNavigationDirections
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.databinding.CardSimpleOutlinedBinding import org.citron.citron_emu.databinding.CardSimpleOutlinedBinding
import org.citron.citron_emu.model.Applet import org.citron.citron_emu.model.Applet
import org.citron.citron_emu.model.AppletInfo import org.citron.citron_emu.model.AppletInfo
@@ -64,7 +64,7 @@ class AppletAdapter(val activity: FragmentActivity, applets: List<Applet>) :
NativeLibrary.setCurrentAppletId(applet.appletInfo.appletId) NativeLibrary.setCurrentAppletId(applet.appletInfo.appletId)
val appletGame = Game( val appletGame = Game(
title = YuzuApplication.appContext.getString(applet.titleId), title = CitronApplication.appContext.getString(applet.titleId),
path = appletPath path = appletPath
) )
val action = HomeNavigationDirections.actionGlobalEmulationActivity(appletGame) val action = HomeNavigationDirections.actionGlobalEmulationActivity(appletGame)

View File

@@ -11,7 +11,7 @@ import androidx.navigation.fragment.findNavController
import org.citron.citron_emu.HomeNavigationDirections import org.citron.citron_emu.HomeNavigationDirections
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.databinding.DialogListItemBinding import org.citron.citron_emu.databinding.DialogListItemBinding
import org.citron.citron_emu.model.CabinetMode import org.citron.citron_emu.model.CabinetMode
import org.citron.citron_emu.adapters.CabinetLauncherDialogAdapter.CabinetModeViewHolder import org.citron.citron_emu.adapters.CabinetLauncherDialogAdapter.CabinetModeViewHolder
@@ -49,7 +49,7 @@ class CabinetLauncherDialogAdapter(val fragment: Fragment) :
NativeLibrary.setCurrentAppletId(AppletInfo.Cabinet.appletId) NativeLibrary.setCurrentAppletId(AppletInfo.Cabinet.appletId)
NativeLibrary.setCabinetMode(mode.id) NativeLibrary.setCabinetMode(mode.id)
val appletGame = Game( val appletGame = Game(
title = YuzuApplication.appContext.getString(R.string.cabinet_applet), title = CitronApplication.appContext.getString(R.string.cabinet_applet),
path = appletPath path = appletPath
) )
val action = HomeNavigationDirections.actionGlobalEmulationActivity(appletGame) val action = HomeNavigationDirections.actionGlobalEmulationActivity(appletGame)

View File

@@ -21,7 +21,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.citron.citron_emu.HomeNavigationDirections import org.citron.citron_emu.HomeNavigationDirections
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.databinding.CardGameBinding import org.citron.citron_emu.databinding.CardGameBinding
import org.citron.citron_emu.model.Game import org.citron.citron_emu.model.Game
import org.citron.citron_emu.model.GamesViewModel import org.citron.citron_emu.model.GamesViewModel
@@ -51,12 +51,12 @@ class GameAdapter(private val activity: AppCompatActivity) :
fun onClick(game: Game) { fun onClick(game: Game) {
val gameExists = DocumentFile.fromSingleUri( val gameExists = DocumentFile.fromSingleUri(
YuzuApplication.appContext, CitronApplication.appContext,
Uri.parse(game.path) Uri.parse(game.path)
)?.exists() == true )?.exists() == true
if (!gameExists) { if (!gameExists) {
Toast.makeText( Toast.makeText(
YuzuApplication.appContext, CitronApplication.appContext,
R.string.loader_error_file_not_found, R.string.loader_error_file_not_found,
Toast.LENGTH_LONG Toast.LENGTH_LONG
).show() ).show()
@@ -66,7 +66,7 @@ class GameAdapter(private val activity: AppCompatActivity) :
} }
val preferences = val preferences =
PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) PreferenceManager.getDefaultSharedPreferences(CitronApplication.appContext)
preferences.edit() preferences.edit()
.putLong( .putLong(
game.keyLastPlayedTime, game.keyLastPlayedTime,
@@ -77,12 +77,12 @@ class GameAdapter(private val activity: AppCompatActivity) :
activity.lifecycleScope.launch { activity.lifecycleScope.launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val shortcut = val shortcut =
ShortcutInfoCompat.Builder(YuzuApplication.appContext, game.path) ShortcutInfoCompat.Builder(CitronApplication.appContext, game.path)
.setShortLabel(game.title) .setShortLabel(game.title)
.setIcon(GameIconUtils.getShortcutIcon(activity, game)) .setIcon(GameIconUtils.getShortcutIcon(activity, game))
.setIntent(game.launchIntent) .setIntent(game.launchIntent)
.build() .build()
ShortcutManagerCompat.pushDynamicShortcut(YuzuApplication.appContext, shortcut) ShortcutManagerCompat.pushDynamicShortcut(CitronApplication.appContext, shortcut)
} }
} }

View File

@@ -16,7 +16,7 @@ import org.citron.citron_emu.utils.Log
fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir
class YuzuApplication : Application() { class CitronApplication : Application() {
private fun createNotificationChannels() { private fun createNotificationChannels() {
val noticeChannel = NotificationChannel( val noticeChannel = NotificationChannel(
getString(R.string.notice_notification_channel_id), getString(R.string.notice_notification_channel_id),
@@ -47,7 +47,7 @@ class YuzuApplication : Application() {
companion object { companion object {
var documentsTree: DocumentsTree? = null var documentsTree: DocumentsTree? = null
lateinit var application: YuzuApplication lateinit var application: CitronApplication
val appContext: Context val appContext: Context
get() = application.applicationContext get() = application.applicationContext

View File

@@ -16,12 +16,12 @@ import android.webkit.MimeTypeMap
import java.io.* import java.io.*
import org.citron.citron_emu.BuildConfig import org.citron.citron_emu.BuildConfig
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.getPublicFilesDir import org.citron.citron_emu.getPublicFilesDir
class DocumentProvider : DocumentsProvider() { class DocumentProvider : DocumentsProvider() {
private val baseDirectory: File private val baseDirectory: File
get() = File(YuzuApplication.application.getPublicFilesDir().canonicalPath) get() = File(CitronApplication.application.getPublicFilesDir().canonicalPath)
companion object { companion object {
private val DEFAULT_ROOT_PROJECTION: Array<String> = arrayOf( private val DEFAULT_ROOT_PROJECTION: Array<String> = arrayOf(

View File

@@ -177,9 +177,9 @@ object NativeInput {
/** /**
* Registers a controller to be used with mapping * Registers a controller to be used with mapping
* @param device An [InputDevice] or the input overlay wrapped with [YuzuInputDevice] * @param device An [InputDevice] or the input overlay wrapped with [CitronInputDevice]
*/ */
external fun registerController(device: YuzuInputDevice) external fun registerController(device: CitronInputDevice)
/** /**
* Gets the names of input devices that have been registered with the input subsystem via [registerController] * Gets the names of input devices that have been registered with the input subsystem via [registerController]

View File

@@ -5,12 +5,12 @@ package org.citron.citron_emu.features.input
import android.view.InputDevice import android.view.InputDevice
import androidx.annotation.Keep import androidx.annotation.Keep
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.utils.InputHandler.getGUID import org.citron.citron_emu.utils.InputHandler.getGUID
@Keep @Keep
interface YuzuInputDevice { interface CitronInputDevice {
fun getName(): String fun getName(): String
fun getGUID(): String fun getGUID(): String
@@ -25,15 +25,15 @@ interface YuzuInputDevice {
fun hasKeys(keys: IntArray): BooleanArray = BooleanArray(0) fun hasKeys(keys: IntArray): BooleanArray = BooleanArray(0)
} }
class YuzuPhysicalDevice( class CitronPhysicalDevice(
private val device: InputDevice, private val device: InputDevice,
private val port: Int, private val port: Int,
useSystemVibrator: Boolean useSystemVibrator: Boolean
) : YuzuInputDevice { ) : CitronInputDevice {
private val vibrator = if (useSystemVibrator) { private val vibrator = if (useSystemVibrator) {
YuzuVibrator.getSystemVibrator() CitronVibrator.getSystemVibrator()
} else { } else {
YuzuVibrator.getControllerVibrator(device) CitronVibrator.getControllerVibrator(device)
} }
override fun getName(): String { override fun getName(): String {
@@ -60,14 +60,14 @@ class YuzuPhysicalDevice(
override fun hasKeys(keys: IntArray): BooleanArray = device.hasKeys(*keys) override fun hasKeys(keys: IntArray): BooleanArray = device.hasKeys(*keys)
} }
class YuzuInputOverlayDevice( class CitronInputOverlayDevice(
private val vibration: Boolean, private val vibration: Boolean,
private val port: Int private val port: Int
) : YuzuInputDevice { ) : CitronInputDevice {
private val vibrator = YuzuVibrator.getSystemVibrator() private val vibrator = CitronVibrator.getSystemVibrator()
override fun getName(): String { override fun getName(): String {
return YuzuApplication.appContext.getString(R.string.input_overlay) return CitronApplication.appContext.getString(R.string.input_overlay)
} }
override fun getGUID(): String { override fun getGUID(): String {

View File

@@ -12,32 +12,32 @@ import android.os.VibratorManager
import android.view.InputDevice import android.view.InputDevice
import androidx.annotation.Keep import androidx.annotation.Keep
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
@Keep @Keep
@Suppress("DEPRECATION") @Suppress("DEPRECATION")
interface YuzuVibrator { interface CitronVibrator {
fun supportsVibration(): Boolean fun supportsVibration(): Boolean
fun vibrate(intensity: Float) fun vibrate(intensity: Float)
companion object { companion object {
fun getControllerVibrator(device: InputDevice): YuzuVibrator = fun getControllerVibrator(device: InputDevice): CitronVibrator =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
YuzuVibratorManager(device.vibratorManager) CitronVibratorManager(device.vibratorManager)
} else { } else {
YuzuVibratorManagerCompat(device.vibrator) CitronVibratorManagerCompat(device.vibrator)
} }
fun getSystemVibrator(): YuzuVibrator = fun getSystemVibrator(): CitronVibrator =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
val vibratorManager = YuzuApplication.appContext val vibratorManager = CitronApplication.appContext
.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager .getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
YuzuVibratorManager(vibratorManager) CitronVibratorManager(vibratorManager)
} else { } else {
val vibrator = YuzuApplication.appContext val vibrator = CitronApplication.appContext
.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator .getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
YuzuVibratorManagerCompat(vibrator) CitronVibratorManagerCompat(vibrator)
} }
fun getVibrationEffect(intensity: Float): VibrationEffect? { fun getVibrationEffect(intensity: Float): VibrationEffect? {
@@ -53,24 +53,24 @@ interface YuzuVibrator {
} }
@RequiresApi(Build.VERSION_CODES.S) @RequiresApi(Build.VERSION_CODES.S)
class YuzuVibratorManager(private val vibratorManager: VibratorManager) : YuzuVibrator { class CitronVibratorManager(private val vibratorManager: VibratorManager) : CitronVibrator {
override fun supportsVibration(): Boolean { override fun supportsVibration(): Boolean {
return vibratorManager.vibratorIds.isNotEmpty() return vibratorManager.vibratorIds.isNotEmpty()
} }
override fun vibrate(intensity: Float) { override fun vibrate(intensity: Float) {
val vibration = YuzuVibrator.getVibrationEffect(intensity) ?: return val vibration = CitronVibrator.getVibrationEffect(intensity) ?: return
vibratorManager.vibrate(CombinedVibration.createParallel(vibration)) vibratorManager.vibrate(CombinedVibration.createParallel(vibration))
} }
} }
class YuzuVibratorManagerCompat(private val vibrator: Vibrator) : YuzuVibrator { class CitronVibratorManagerCompat(private val vibrator: Vibrator) : CitronVibrator {
override fun supportsVibration(): Boolean { override fun supportsVibration(): Boolean {
return vibrator.hasVibrator() return vibrator.hasVibrator()
} }
override fun vibrate(intensity: Float) { override fun vibrate(intensity: Float) {
val vibration = YuzuVibrator.getVibrationEffect(intensity) ?: return val vibration = CitronVibrator.getVibrationEffect(intensity) ?: return
vibrator.vibrate(vibration) vibrator.vibrate(vibration)
} }
} }

View File

@@ -4,7 +4,7 @@
package org.citron.citron_emu.features.settings.model package org.citron.citron_emu.features.settings.model
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
object Settings { object Settings {
enum class MenuTag(val titleId: Int = 0) { enum class MenuTag(val titleId: Int = 0) {
@@ -26,7 +26,7 @@ object Settings {
} }
fun getPlayerString(player: Int): String = fun getPlayerString(player: Int): String =
YuzuApplication.appContext.getString(R.string.preferences_player, player) CitronApplication.appContext.getString(R.string.preferences_player, player)
const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch" const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch"
const val PREF_MEMORY_WARNING_SHOWN = "MemoryWarningShown" const val PREF_MEMORY_WARNING_SHOWN = "MemoryWarningShown"

View File

@@ -5,7 +5,7 @@ package org.citron.citron_emu.features.settings.model.view
import androidx.annotation.StringRes import androidx.annotation.StringRes
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.features.input.NativeInput import org.citron.citron_emu.features.input.NativeInput
import org.citron.citron_emu.features.input.model.ButtonName import org.citron.citron_emu.features.input.model.ButtonName
import org.citron.citron_emu.features.input.model.InputType import org.citron.citron_emu.features.input.model.InputType
@@ -19,7 +19,7 @@ sealed class InputSetting(
abstract val inputType: InputType abstract val inputType: InputType
abstract val playerIndex: Int abstract val playerIndex: Int
protected val context get() = YuzuApplication.appContext protected val context get() = CitronApplication.appContext
abstract fun getSelectedValue(): String abstract fun getSelectedValue(): String

View File

@@ -6,7 +6,7 @@ package org.citron.citron_emu.features.settings.model.view
import androidx.annotation.StringRes import androidx.annotation.StringRes
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.features.input.NativeInput import org.citron.citron_emu.features.input.NativeInput
import org.citron.citron_emu.features.input.model.NpadStyleIndex import org.citron.citron_emu.features.input.model.NpadStyleIndex
import org.citron.citron_emu.features.settings.model.AbstractBooleanSetting import org.citron.citron_emu.features.settings.model.AbstractBooleanSetting
@@ -37,14 +37,14 @@ abstract class SettingsItem(
val title: String by lazy { val title: String by lazy {
if (titleId != 0) { if (titleId != 0) {
return@lazy YuzuApplication.appContext.getString(titleId) return@lazy CitronApplication.appContext.getString(titleId)
} }
return@lazy titleString return@lazy titleString
} }
val description: String by lazy { val description: String by lazy {
if (descriptionId != 0) { if (descriptionId != 0) {
return@lazy YuzuApplication.appContext.getString(descriptionId) return@lazy CitronApplication.appContext.getString(descriptionId)
} }
return@lazy descriptionString return@lazy descriptionString
} }

View File

@@ -6,7 +6,7 @@ package org.citron.citron_emu.features.settings.ui
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 org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.adapters.AbstractListAdapter import org.citron.citron_emu.adapters.AbstractListAdapter
import org.citron.citron_emu.databinding.ListItemInputProfileBinding import org.citron.citron_emu.databinding.ListItemInputProfileBinding
import org.citron.citron_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
@@ -57,7 +57,7 @@ sealed interface ProfileItem {
data class NewProfileItem( data class NewProfileItem(
val createNewProfile: () -> Unit val createNewProfile: () -> Unit
) : ProfileItem { ) : ProfileItem {
override val name: String = YuzuApplication.appContext.getString(R.string.create_new_profile) override val name: String = CitronApplication.appContext.getString(R.string.create_new_profile)
} }
data class ExistingProfileItem( data class ExistingProfileItem(

View File

@@ -8,7 +8,7 @@ import android.os.Build
import android.widget.Toast import android.widget.Toast
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.features.input.NativeInput import org.citron.citron_emu.features.input.NativeInput
import org.citron.citron_emu.features.input.model.AnalogDirection import org.citron.citron_emu.features.input.model.AnalogDirection
import org.citron.citron_emu.features.input.model.NativeAnalog import org.citron.citron_emu.features.input.model.NativeAnalog
@@ -35,7 +35,7 @@ class SettingsFragmentPresenter(
) { ) {
private var settingsList = ArrayList<SettingsItem>() private var settingsList = ArrayList<SettingsItem>()
private val context get() = YuzuApplication.appContext private val context get() = CitronApplication.appContext
// Extension for altering settings list based on each setting's properties // Extension for altering settings list based on each setting's properties
fun ArrayList<SettingsItem>.add(key: String) { fun ArrayList<SettingsItem>.add(key: String) {

View File

@@ -8,7 +8,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.features.settings.model.view.SettingsItem import org.citron.citron_emu.features.settings.model.view.SettingsItem
import org.citron.citron_emu.model.Game import org.citron.citron_emu.model.Game
import org.citron.citron_emu.utils.InputHandler import org.citron.citron_emu.utils.InputHandler
@@ -73,7 +73,7 @@ class SettingsViewModel : ViewModel() {
fun setSliderTextValue(value: Float, units: String) { fun setSliderTextValue(value: Float, units: String) {
_sliderProgress.value = value.toInt() _sliderProgress.value = value.toInt()
_sliderTextValue.value = String.format( _sliderTextValue.value = String.format(
YuzuApplication.appContext.getString(R.string.value_with_units), CitronApplication.appContext.getString(R.string.value_with_units),
value.toInt().toString(), value.toInt().toString(),
units units
) )

View File

@@ -11,7 +11,7 @@ import androidx.fragment.app.activityViewModels
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.model.AddonViewModel import org.citron.citron_emu.model.AddonViewModel
import org.citron.citron_emu.ui.main.MainActivity import org.citron.citron_emu.ui.main.MainActivity
@@ -19,7 +19,7 @@ class ContentTypeSelectionDialogFragment : DialogFragment() {
private val addonViewModel: AddonViewModel by activityViewModels() private val addonViewModel: AddonViewModel by activityViewModels()
private val preferences get() = private val preferences get() =
PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) PreferenceManager.getDefaultSharedPreferences(CitronApplication.appContext)
private var selectedItem = 0 private var selectedItem = 0

View File

@@ -26,7 +26,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.citron.citron_emu.HomeNavigationDirections import org.citron.citron_emu.HomeNavigationDirections
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.adapters.GamePropertiesAdapter import org.citron.citron_emu.adapters.GamePropertiesAdapter
import org.citron.citron_emu.databinding.FragmentGamePropertiesBinding import org.citron.citron_emu.databinding.FragmentGamePropertiesBinding
import org.citron.citron_emu.features.settings.model.Settings import org.citron.citron_emu.features.settings.model.Settings
@@ -224,7 +224,7 @@ class GamePropertiesFragment : Fragment() {
negativeAction = { negativeAction = {
File(args.game.saveDir).deleteRecursively() File(args.game.saveDir).deleteRecursively()
Toast.makeText( Toast.makeText(
YuzuApplication.appContext, CitronApplication.appContext,
R.string.save_data_deleted_successfully, R.string.save_data_deleted_successfully,
Toast.LENGTH_SHORT Toast.LENGTH_SHORT
).show() ).show()
@@ -263,7 +263,7 @@ class GamePropertiesFragment : Fragment() {
positiveAction = { positiveAction = {
shaderCacheDir.deleteRecursively() shaderCacheDir.deleteRecursively()
Toast.makeText( Toast.makeText(
YuzuApplication.appContext, CitronApplication.appContext,
R.string.cleared_shaders_successfully, R.string.cleared_shaders_successfully,
Toast.LENGTH_SHORT Toast.LENGTH_SHORT
).show() ).show()
@@ -374,7 +374,7 @@ class GamePropertiesFragment : Fragment() {
return@withContext return@withContext
} }
Toast.makeText( Toast.makeText(
YuzuApplication.appContext, CitronApplication.appContext,
getString(R.string.save_file_imported_success), getString(R.string.save_file_imported_success),
Toast.LENGTH_LONG Toast.LENGTH_LONG
).show() ).show()
@@ -384,7 +384,7 @@ class GamePropertiesFragment : Fragment() {
cacheSaveDir.deleteRecursively() cacheSaveDir.deleteRecursively()
} catch (e: Exception) { } catch (e: Exception) {
Toast.makeText( Toast.makeText(
YuzuApplication.appContext, CitronApplication.appContext,
getString(R.string.fatal_error), getString(R.string.fatal_error),
Toast.LENGTH_LONG Toast.LENGTH_LONG
).show() ).show()

View File

@@ -31,7 +31,7 @@ import org.citron.citron_emu.BuildConfig
import org.citron.citron_emu.HomeNavigationDirections import org.citron.citron_emu.HomeNavigationDirections
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.adapters.HomeSettingAdapter import org.citron.citron_emu.adapters.HomeSettingAdapter
import org.citron.citron_emu.databinding.FragmentHomeSettingsBinding import org.citron.citron_emu.databinding.FragmentHomeSettingsBinding
import org.citron.citron_emu.features.DocumentProvider import org.citron.citron_emu.features.DocumentProvider
@@ -180,7 +180,7 @@ class HomeSettingsFragment : Fragment() {
) )
} else { } else {
val failedNames = result.joinToString("\n") val failedNames = result.joinToString("\n")
val errorMessage = YuzuApplication.appContext.getString( val errorMessage = CitronApplication.appContext.getString(
R.string.verification_failed_for, R.string.verification_failed_for,
failedNames failedNames
) )

View File

@@ -22,7 +22,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.adapters.InstallableAdapter import org.citron.citron_emu.adapters.InstallableAdapter
import org.citron.citron_emu.databinding.FragmentInstallablesBinding import org.citron.citron_emu.databinding.FragmentInstallablesBinding
import org.citron.citron_emu.model.HomeViewModel import org.citron.citron_emu.model.HomeViewModel
@@ -109,7 +109,7 @@ class InstallableFragment : Fragment() {
) )
if (!oldSaveDataFolder.exists() && !futureSaveDataFolder.exists()) { if (!oldSaveDataFolder.exists() && !futureSaveDataFolder.exists()) {
Toast.makeText( Toast.makeText(
YuzuApplication.appContext, CitronApplication.appContext,
R.string.no_save_data_found, R.string.no_save_data_found,
Toast.LENGTH_SHORT Toast.LENGTH_SHORT
).show() ).show()
@@ -262,7 +262,7 @@ class InstallableFragment : Fragment() {
cacheSaveDir.deleteRecursively() cacheSaveDir.deleteRecursively()
} catch (e: Exception) { } catch (e: Exception) {
Toast.makeText( Toast.makeText(
YuzuApplication.appContext, CitronApplication.appContext,
getString(R.string.fatal_error), getString(R.string.fatal_error),
Toast.LENGTH_LONG Toast.LENGTH_LONG
).show() ).show()

View File

@@ -22,7 +22,7 @@ import info.debatty.java.stringsimilarity.Jaccard
import info.debatty.java.stringsimilarity.JaroWinkler import info.debatty.java.stringsimilarity.JaroWinkler
import java.util.Locale import java.util.Locale
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.adapters.GameAdapter import org.citron.citron_emu.adapters.GameAdapter
import org.citron.citron_emu.databinding.FragmentSearchBinding import org.citron.citron_emu.databinding.FragmentSearchBinding
import org.citron.citron_emu.layout.AutofitGridLayoutManager import org.citron.citron_emu.layout.AutofitGridLayoutManager
@@ -58,7 +58,7 @@ class SearchFragment : Fragment() {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
homeViewModel.setNavigationVisibility(visible = true, animated = true) homeViewModel.setNavigationVisibility(visible = true, animated = true)
homeViewModel.setStatusBarShadeVisibility(true) homeViewModel.setStatusBarShadeVisibility(true)
preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) preferences = PreferenceManager.getDefaultSharedPreferences(CitronApplication.appContext)
if (savedInstanceState != null) { if (savedInstanceState != null) {
binding.searchText.setText(savedInstanceState.getString(SEARCH_TEXT)) binding.searchText.setText(savedInstanceState.getString(SEARCH_TEXT))

View File

@@ -30,7 +30,7 @@ import kotlinx.coroutines.launch
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import java.io.File import java.io.File
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.adapters.SetupAdapter import org.citron.citron_emu.adapters.SetupAdapter
import org.citron.citron_emu.databinding.FragmentSetupBinding import org.citron.citron_emu.databinding.FragmentSetupBinding
import org.citron.citron_emu.features.settings.model.Settings import org.citron.citron_emu.features.settings.model.Settings
@@ -343,7 +343,7 @@ class SetupFragment : Fragment() {
} }
private fun finishSetup() { private fun finishSetup() {
PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext).edit() PreferenceManager.getDefaultSharedPreferences(CitronApplication.appContext).edit()
.putBoolean(Settings.PREF_FIRST_APP_LAUNCH, false) .putBoolean(Settings.PREF_FIRST_APP_LAUNCH, false)
.apply() .apply()
mainActivity.finishSetup(binding.root.findNavController()) mainActivity.finishSetup(binding.root.findNavController())

View File

@@ -15,7 +15,7 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.features.settings.model.StringSetting import org.citron.citron_emu.features.settings.model.StringSetting
import org.citron.citron_emu.features.settings.utils.SettingsFile import org.citron.citron_emu.features.settings.utils.SettingsFile
import org.citron.citron_emu.model.Driver.Companion.toDriver import org.citron.citron_emu.model.Driver.Companion.toDriver
@@ -70,7 +70,7 @@ class DriverViewModel : ViewModel() {
val newDriverList = mutableListOf( val newDriverList = mutableListOf(
Driver( Driver(
selectedDriver == GpuDriverMetadata(), selectedDriver == GpuDriverMetadata(),
YuzuApplication.appContext.getString(R.string.system_gpu_driver), CitronApplication.appContext.getString(R.string.system_gpu_driver),
systemDriverData?.get(0) ?: "", systemDriverData?.get(0) ?: "",
systemDriverData?.get(1) ?: "" systemDriverData?.get(1) ?: ""
) )
@@ -186,7 +186,7 @@ class DriverViewModel : ViewModel() {
private fun updateName() { private fun updateName() {
_selectedDriverTitle.value = GpuDriverHelper.customDriverSettingData.name _selectedDriverTitle.value = GpuDriverHelper.customDriverSettingData.name
?: YuzuApplication.appContext.getString(R.string.system_gpu_driver) ?: CitronApplication.appContext.getString(R.string.system_gpu_driver)
} }
private fun setDriverReady() { private fun setDriverReady() {

View File

@@ -11,7 +11,7 @@ import kotlinx.parcelize.Parcelize
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.activities.EmulationActivity import org.citron.citron_emu.activities.EmulationActivity
import org.citron.citron_emu.utils.DirectoryInitialization import org.citron.citron_emu.utils.DirectoryInitialization
import org.citron.citron_emu.utils.FileUtil import org.citron.citron_emu.utils.FileUtil
@@ -52,7 +52,7 @@ class Game(
} }
val saveZipName: String val saveZipName: String
get() = "$title ${YuzuApplication.appContext.getString(R.string.save_data).lowercase()} - ${ get() = "$title ${CitronApplication.appContext.getString(R.string.save_data).lowercase()} - ${
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")) LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))
}.zip" }.zip"
@@ -64,7 +64,7 @@ class Game(
get() = DirectoryInitialization.userDirectory + "/load/" + programIdHex + "/" get() = DirectoryInitialization.userDirectory + "/load/" + programIdHex + "/"
val launchIntent: Intent val launchIntent: Intent
get() = Intent(YuzuApplication.appContext, EmulationActivity::class.java).apply { get() = Intent(CitronApplication.appContext, EmulationActivity::class.java).apply {
action = Intent.ACTION_VIEW action = Intent.ACTION_VIEW
data = Uri.parse(path) data = Uri.parse(path)
} }

View File

@@ -18,7 +18,7 @@ import kotlinx.coroutines.withContext
import kotlinx.serialization.decodeFromString import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.utils.GameHelper import org.citron.citron_emu.utils.GameHelper
import org.citron.citron_emu.utils.NativeConfig import org.citron.citron_emu.utils.NativeConfig
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
@@ -94,7 +94,7 @@ class GamesViewModel : ViewModel() {
if (firstStartup) { if (firstStartup) {
// Retrieve list of cached games // Retrieve list of cached games
val storedGames = val storedGames =
PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) PreferenceManager.getDefaultSharedPreferences(CitronApplication.appContext)
.getStringSet(GameHelper.KEY_GAMES, emptySet()) .getStringSet(GameHelper.KEY_GAMES, emptySet())
if (storedGames!!.isNotEmpty()) { if (storedGames!!.isNotEmpty()) {
val deserializedGames = mutableSetOf<Game>() val deserializedGames = mutableSetOf<Game>()
@@ -109,7 +109,7 @@ class GamesViewModel : ViewModel() {
val gameExists = val gameExists =
DocumentFile.fromSingleUri( DocumentFile.fromSingleUri(
YuzuApplication.appContext, CitronApplication.appContext,
Uri.parse(game.path) Uri.parse(game.path)
)?.exists() )?.exists()
if (gameExists == true) { if (gameExists == true) {

View File

@@ -5,7 +5,7 @@ package org.citron.citron_emu.overlay.model
import androidx.annotation.IntegerRes import androidx.annotation.IntegerRes
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
enum class OverlayControl( enum class OverlayControl(
val id: String, val id: String,
@@ -136,7 +136,7 @@ enum class OverlayControl(
fun getDefaultPositionForLayout(layout: OverlayLayout): Pair<Double, Double> { fun getDefaultPositionForLayout(layout: OverlayLayout): Pair<Double, Double> {
val rawResourcePair: Pair<Int, Int> val rawResourcePair: Pair<Int, Int>
YuzuApplication.appContext.resources.apply { CitronApplication.appContext.resources.apply {
rawResourcePair = when (layout) { rawResourcePair = when (layout) {
OverlayLayout.Landscape -> { OverlayLayout.Landscape -> {
Pair( Pair(

View File

@@ -642,18 +642,18 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
) { progressCallback, _ -> ) { progressCallback, _ ->
val checkStream = val checkStream =
ZipInputStream(BufferedInputStream(contentResolver.openInputStream(result))) ZipInputStream(BufferedInputStream(contentResolver.openInputStream(result)))
var isYuzuBackup = false var isCitronBackup = false
checkStream.use { stream -> checkStream.use { stream ->
var ze: ZipEntry? = null var ze: ZipEntry? = null
while (stream.nextEntry?.also { ze = it } != null) { while (stream.nextEntry?.also { ze = it } != null) {
val itemName = ze!!.name.trim() val itemName = ze!!.name.trim()
if (itemName == "/config/config.ini" || itemName == "config/config.ini") { if (itemName == "/config/config.ini" || itemName == "config/config.ini") {
isYuzuBackup = true isCitronBackup = true
return@use return@use
} }
} }
} }
if (!isYuzuBackup) { if (!isCitronBackup) {
return@newInstance MessageDialogFragment.newInstance( return@newInstance MessageDialogFragment.newInstance(
this, this,
titleId = R.string.invalid_citron_backup, titleId = R.string.invalid_citron_backup,

View File

@@ -6,7 +6,7 @@ package org.citron.citron_emu.utils
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import java.io.IOException import java.io.IOException
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.features.settings.model.BooleanSetting import org.citron.citron_emu.features.settings.model.BooleanSetting
import org.citron.citron_emu.features.settings.model.IntSetting import org.citron.citron_emu.features.settings.model.IntSetting
import org.citron.citron_emu.features.settings.model.Settings import org.citron.citron_emu.features.settings.model.Settings
@@ -38,7 +38,7 @@ object DirectoryInitialization {
private fun initializeInternalStorage() { private fun initializeInternalStorage() {
try { try {
userPath = YuzuApplication.appContext.getExternalFilesDir(null)!!.canonicalPath userPath = CitronApplication.appContext.getExternalFilesDir(null)!!.canonicalPath
NativeLibrary.setAppDirectory(userPath!!) NativeLibrary.setAppDirectory(userPath!!)
} catch (e: IOException) { } catch (e: IOException) {
e.printStackTrace() e.printStackTrace()
@@ -46,7 +46,7 @@ object DirectoryInitialization {
} }
private fun migrateSettings() { private fun migrateSettings() {
val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) val preferences = PreferenceManager.getDefaultSharedPreferences(CitronApplication.appContext)
var saveConfig = false var saveConfig = false
val theme = preferences.migratePreference<Int>(Settings.PREF_THEME) val theme = preferences.migratePreference<Int>(Settings.PREF_THEME)
if (theme != null) { if (theme != null) {

View File

@@ -14,7 +14,7 @@ import java.io.InputStream
import java.net.URLDecoder import java.net.URLDecoder
import java.util.zip.ZipEntry import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream import java.util.zip.ZipInputStream
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.model.MinimalDocumentFile import org.citron.citron_emu.model.MinimalDocumentFile
import org.citron.citron_emu.model.TaskState import org.citron.citron_emu.model.TaskState
import java.io.BufferedOutputStream import java.io.BufferedOutputStream
@@ -31,7 +31,7 @@ object FileUtil {
const val APPLICATION_OCTET_STREAM = "application/octet-stream" const val APPLICATION_OCTET_STREAM = "application/octet-stream"
const val TEXT_PLAIN = "text/plain" const val TEXT_PLAIN = "text/plain"
private val context get() = YuzuApplication.appContext private val context get() = CitronApplication.appContext
/** /**
* Create a file from directory with filename. * Create a file from directory with filename.
@@ -195,7 +195,7 @@ object FileUtil {
* @return String display name * @return String display name
*/ */
fun getFilename(uri: Uri): String { fun getFilename(uri: Uri): String {
val resolver = YuzuApplication.appContext.contentResolver val resolver = CitronApplication.appContext.contentResolver
val columns = arrayOf( val columns = arrayOf(
DocumentsContract.Document.COLUMN_DISPLAY_NAME DocumentsContract.Document.COLUMN_DISPLAY_NAME
) )
@@ -408,10 +408,10 @@ object FileUtil {
val newFile = File(file, it.name!!) val newFile = File(file, it.name!!)
if (it.isDirectory) { if (it.isDirectory) {
newFile.mkdirs() newFile.mkdirs()
DocumentFile.fromTreeUri(YuzuApplication.appContext, it.uri)?.copyFilesTo(newFile) DocumentFile.fromTreeUri(CitronApplication.appContext, it.uri)?.copyFilesTo(newFile)
} else { } else {
val inputStream = val inputStream =
YuzuApplication.appContext.contentResolver.openInputStream(it.uri) CitronApplication.appContext.contentResolver.openInputStream(it.uri)
BufferedInputStream(inputStream).use { bos -> BufferedInputStream(inputStream).use { bos ->
if (!newFile.exists()) { if (!newFile.exists()) {
newFile.createNewFile() newFile.createNewFile()
@@ -487,17 +487,17 @@ object FileUtil {
String(stream.readBytes(), StandardCharsets.UTF_8) String(stream.readBytes(), StandardCharsets.UTF_8)
fun DocumentFile.inputStream(): InputStream = fun DocumentFile.inputStream(): InputStream =
YuzuApplication.appContext.contentResolver.openInputStream(uri)!! CitronApplication.appContext.contentResolver.openInputStream(uri)!!
fun DocumentFile.outputStream(): OutputStream = fun DocumentFile.outputStream(): OutputStream =
YuzuApplication.appContext.contentResolver.openOutputStream(uri)!! CitronApplication.appContext.contentResolver.openOutputStream(uri)!!
fun Uri.inputStream(): InputStream = fun Uri.inputStream(): InputStream =
YuzuApplication.appContext.contentResolver.openInputStream(this)!! CitronApplication.appContext.contentResolver.openInputStream(this)!!
fun Uri.outputStream(): OutputStream = fun Uri.outputStream(): OutputStream =
YuzuApplication.appContext.contentResolver.openOutputStream(this)!! CitronApplication.appContext.contentResolver.openOutputStream(this)!!
fun Uri.asDocumentFile(): DocumentFile? = fun Uri.asDocumentFile(): DocumentFile? =
DocumentFile.fromSingleUri(YuzuApplication.appContext, this) DocumentFile.fromSingleUri(CitronApplication.appContext, this)
} }

View File

@@ -9,7 +9,7 @@ import androidx.preference.PreferenceManager
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.model.Game import org.citron.citron_emu.model.Game
import org.citron.citron_emu.model.GameDir import org.citron.citron_emu.model.GameDir
import org.citron.citron_emu.model.MinimalDocumentFile import org.citron.citron_emu.model.MinimalDocumentFile
@@ -22,7 +22,7 @@ object GameHelper {
fun getGames(): List<Game> { fun getGames(): List<Game> {
val games = mutableListOf<Game>() val games = mutableListOf<Game>()
val context = YuzuApplication.appContext val context = CitronApplication.appContext
preferences = PreferenceManager.getDefaultSharedPreferences(context) preferences = PreferenceManager.getDefaultSharedPreferences(context)
val gameDirs = mutableListOf<GameDir>() val gameDirs = mutableListOf<GameDir>()

View File

@@ -22,7 +22,7 @@ import coil.memory.MemoryCache
import coil.request.ImageRequest import coil.request.ImageRequest
import coil.request.Options import coil.request.Options
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.model.Game import org.citron.citron_emu.model.Game
class GameIconFetcher( class GameIconFetcher(
@@ -58,20 +58,20 @@ class GameIconKeyer : Keyer<Game> {
} }
object GameIconUtils { object GameIconUtils {
private val imageLoader = ImageLoader.Builder(YuzuApplication.appContext) private val imageLoader = ImageLoader.Builder(CitronApplication.appContext)
.components { .components {
add(GameIconKeyer()) add(GameIconKeyer())
add(GameIconFetcher.Factory()) add(GameIconFetcher.Factory())
} }
.memoryCache { .memoryCache {
MemoryCache.Builder(YuzuApplication.appContext) MemoryCache.Builder(CitronApplication.appContext)
.maxSizePercent(0.25) .maxSizePercent(0.25)
.build() .build()
} }
.build() .build()
fun loadGameIcon(game: Game, imageView: ImageView) { fun loadGameIcon(game: Game, imageView: ImageView) {
val request = ImageRequest.Builder(YuzuApplication.appContext) val request = ImageRequest.Builder(CitronApplication.appContext)
.data(game) .data(game)
.target(imageView) .target(imageView)
.error(R.drawable.default_icon) .error(R.drawable.default_icon)
@@ -80,7 +80,7 @@ object GameIconUtils {
} }
suspend fun getGameIcon(lifecycleOwner: LifecycleOwner, game: Game): Bitmap { suspend fun getGameIcon(lifecycleOwner: LifecycleOwner, game: Game): Bitmap {
val request = ImageRequest.Builder(YuzuApplication.appContext) val request = ImageRequest.Builder(CitronApplication.appContext)
.data(game) .data(game)
.lifecycle(lifecycleOwner) .lifecycle(lifecycleOwner)
.error(R.drawable.default_icon) .error(R.drawable.default_icon)
@@ -91,15 +91,15 @@ object GameIconUtils {
suspend fun getShortcutIcon(lifecycleOwner: LifecycleOwner, game: Game): IconCompat { suspend fun getShortcutIcon(lifecycleOwner: LifecycleOwner, game: Game): IconCompat {
val layerDrawable = ResourcesCompat.getDrawable( val layerDrawable = ResourcesCompat.getDrawable(
YuzuApplication.appContext.resources, CitronApplication.appContext.resources,
R.drawable.shortcut, R.drawable.shortcut,
null null
) as LayerDrawable ) as LayerDrawable
layerDrawable.setDrawableByLayerId( layerDrawable.setDrawableByLayerId(
R.id.shortcut_foreground, R.id.shortcut_foreground,
getGameIcon(lifecycleOwner, game).toDrawable(YuzuApplication.appContext.resources) getGameIcon(lifecycleOwner, game).toDrawable(CitronApplication.appContext.resources)
) )
val inset = YuzuApplication.appContext.resources val inset = CitronApplication.appContext.resources
.getDimensionPixelSize(R.dimen.icon_inset) .getDimensionPixelSize(R.dimen.icon_inset)
layerDrawable.setLayerInset(1, inset, inset, inset, inset) layerDrawable.setLayerInset(1, inset, inset, inset, inset)
return IconCompat.createWithAdaptiveBitmap( return IconCompat.createWithAdaptiveBitmap(

View File

@@ -10,7 +10,7 @@ import android.view.Surface
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.citron.citron_emu.features.settings.model.StringSetting import org.citron.citron_emu.features.settings.model.StringSetting
import java.io.FileNotFoundException import java.io.FileNotFoundException
import java.util.zip.ZipException import java.util.zip.ZipException
@@ -27,11 +27,11 @@ object GpuDriverHelper {
fun initializeDriverParameters() { fun initializeDriverParameters() {
try { try {
// Initialize the file redirection directory. // Initialize the file redirection directory.
fileRedirectionPath = YuzuApplication.appContext fileRedirectionPath = CitronApplication.appContext
.getExternalFilesDir(null)!!.canonicalPath + "/gpu/vk_file_redirect/" .getExternalFilesDir(null)!!.canonicalPath + "/gpu/vk_file_redirect/"
// Initialize the driver installation directory. // Initialize the driver installation directory.
driverInstallationPath = YuzuApplication.appContext driverInstallationPath = CitronApplication.appContext
.filesDir.canonicalPath + "/gpu_driver/" .filesDir.canonicalPath + "/gpu_driver/"
} catch (e: IOException) { } catch (e: IOException) {
throw RuntimeException(e) throw RuntimeException(e)
@@ -41,7 +41,7 @@ object GpuDriverHelper {
initializeDirectories() initializeDirectories()
// Initialize hook libraries directory. // Initialize hook libraries directory.
hookLibPath = YuzuApplication.appContext.applicationInfo.nativeLibraryDir + "/" hookLibPath = CitronApplication.appContext.applicationInfo.nativeLibraryDir + "/"
// Initialize GPU driver. // Initialize GPU driver.
NativeLibrary.initializeGpuDriver( NativeLibrary.initializeGpuDriver(

View File

@@ -7,11 +7,11 @@ import android.view.InputDevice
import android.view.KeyEvent import android.view.KeyEvent
import android.view.MotionEvent import android.view.MotionEvent
import org.citron.citron_emu.features.input.NativeInput import org.citron.citron_emu.features.input.NativeInput
import org.citron.citron_emu.features.input.YuzuInputOverlayDevice import org.citron.citron_emu.features.input.CitronInputOverlayDevice
import org.citron.citron_emu.features.input.YuzuPhysicalDevice import org.citron.citron_emu.features.input.CitronPhysicalDevice
object InputHandler { object InputHandler {
var androidControllers = mapOf<Int, YuzuPhysicalDevice>() var androidControllers = mapOf<Int, CitronPhysicalDevice>()
var registeredControllers = mutableListOf<ParamPackage>() var registeredControllers = mutableListOf<ParamPackage>()
fun dispatchKeyEvent(event: KeyEvent): Boolean { fun dispatchKeyEvent(event: KeyEvent): Boolean {
@@ -50,8 +50,8 @@ object InputHandler {
return true return true
} }
fun getDevices(): Map<Int, YuzuPhysicalDevice> { fun getDevices(): Map<Int, CitronPhysicalDevice> {
val gameControllerDeviceIds = mutableMapOf<Int, YuzuPhysicalDevice>() val gameControllerDeviceIds = mutableMapOf<Int, CitronPhysicalDevice>()
val deviceIds = InputDevice.getDeviceIds() val deviceIds = InputDevice.getDeviceIds()
var port = 0 var port = 0
val inputSettings = NativeConfig.getInputSettings(true) val inputSettings = NativeConfig.getInputSettings(true)
@@ -62,7 +62,7 @@ object InputHandler {
sources and InputDevice.SOURCE_JOYSTICK == InputDevice.SOURCE_JOYSTICK sources and InputDevice.SOURCE_JOYSTICK == InputDevice.SOURCE_JOYSTICK
) { ) {
if (!gameControllerDeviceIds.contains(controllerNumber)) { if (!gameControllerDeviceIds.contains(controllerNumber)) {
gameControllerDeviceIds[controllerNumber] = YuzuPhysicalDevice( gameControllerDeviceIds[controllerNumber] = CitronPhysicalDevice(
this, this,
port, port,
inputSettings[port].useSystemVibrator inputSettings[port].useSystemVibrator
@@ -82,7 +82,7 @@ object InputHandler {
} }
// Register the input overlay on a dedicated port for all player 1 vibrations // Register the input overlay on a dedicated port for all player 1 vibrations
NativeInput.registerController(YuzuInputOverlayDevice(androidControllers.isEmpty(), 100)) NativeInput.registerController(CitronInputOverlayDevice(androidControllers.isEmpty(), 100))
registeredControllers.clear() registeredControllers.clear()
NativeInput.getInputDevices().forEach { NativeInput.getInputDevices().forEach {
registeredControllers.add(ParamPackage(it)) registeredControllers.add(ParamPackage(it))

View File

@@ -7,12 +7,12 @@ import android.app.ActivityManager
import android.content.Context import android.content.Context
import android.os.Build import android.os.Build
import org.citron.citron_emu.R import org.citron.citron_emu.R
import org.citron.citron_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import java.util.Locale import java.util.Locale
import kotlin.math.ceil import kotlin.math.ceil
object MemoryUtil { object MemoryUtil {
private val context get() = YuzuApplication.appContext private val context get() = CitronApplication.appContext
private val Float.hundredths: String private val Float.hundredths: String
get() = String.format(Locale.ROOT, "%.2f", this) get() = String.format(Locale.ROOT, "%.2f", this)

View File

@@ -23,12 +23,12 @@ object ThemeHelper {
fun setTheme(activity: AppCompatActivity) { fun setTheme(activity: AppCompatActivity) {
setThemeMode(activity) setThemeMode(activity)
when (Theme.from(IntSetting.THEME.getInt())) { when (Theme.from(IntSetting.THEME.getInt())) {
Theme.Default -> activity.setTheme(R.style.Theme_Yuzu_Main) Theme.Default -> activity.setTheme(R.style.Theme_Citron_Main)
Theme.MaterialYou -> { Theme.MaterialYou -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
activity.setTheme(R.style.Theme_Yuzu_Main_MaterialYou) activity.setTheme(R.style.Theme_Citron_Main_MaterialYou)
} else { } else {
activity.setTheme(R.style.Theme_Yuzu_Main) activity.setTheme(R.style.Theme_Citron_Main)
} }
} }
} }
@@ -37,7 +37,7 @@ object ThemeHelper {
// light app mode, dark system mode, and black backgrounds. Launching the settings activity // light app mode, dark system mode, and black backgrounds. Launching the settings activity
// will then show light mode colors/navigation bars but with black backgrounds. // will then show light mode colors/navigation bars but with black backgrounds.
if (BooleanSetting.BLACK_BACKGROUNDS.getBoolean() && isNightMode(activity)) { if (BooleanSetting.BLACK_BACKGROUNDS.getBoolean() && isNightMode(activity)) {
activity.setTheme(R.style.ThemeOverlay_Yuzu_Dark) activity.setTheme(R.style.ThemeOverlay_Citron_Dark)
} }
} }

View File

@@ -659,7 +659,7 @@ void Java_org_citron_citron_1emu_NativeLibrary_submitInlineKeyboardInput(JNIEnv*
void Java_org_citron_citron_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv* env, void Java_org_citron_citron_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv* env,
jobject instance) { jobject instance) {
const auto nand_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir); const auto nand_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir);
auto vfs_nand_dir = EmulationSession::GetInstance().System().GetFilesystem()->OpenDirectory( auto vfs_nand_dir = EmulationSession::GetInstance().System().GetFilesystem()->OpenDirectory(
Common::FS::PathToUTF8String(nand_dir), FileSys::OpenMode::Read); Common::FS::PathToUTF8String(nand_dir), FileSys::OpenMode::Read);
@@ -831,7 +831,7 @@ jstring Java_org_citron_citron_1emu_NativeLibrary_getSavePath(JNIEnv* env, jobje
const auto user_id = manager.GetUser(static_cast<std::size_t>(0)); const auto user_id = manager.GetUser(static_cast<std::size_t>(0));
ASSERT(user_id); ASSERT(user_id);
const auto nandDir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir); const auto nandDir = Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir);
auto vfsNandDir = system.GetFilesystem()->OpenDirectory(Common::FS::PathToUTF8String(nandDir), auto vfsNandDir = system.GetFilesystem()->OpenDirectory(Common::FS::PathToUTF8String(nandDir),
FileSys::OpenMode::Read); FileSys::OpenMode::Read);

View File

@@ -44,7 +44,7 @@ bool IsProfileNameValid(std::string_view profile_name) {
} }
bool ProfileExistsInFilesystem(std::string_view profile_name) { bool ProfileExistsInFilesystem(std::string_view profile_name) {
return Common::FS::Exists(Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "input" / return Common::FS::Exists(Common::FS::GetCitronPath(Common::FS::CitronPath::ConfigDir) / "input" /
fmt::format("{}.ini", profile_name)); fmt::format("{}.ini", profile_name));
} }
@@ -304,7 +304,7 @@ void Java_org_citron_citron_1emu_features_input_NativeInput_loadInputProfiles(JN
jobject j_obj) { jobject j_obj) {
map_profiles.clear(); map_profiles.clear();
const auto input_profile_loc = const auto input_profile_loc =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "input"; Common::FS::GetCitronPath(Common::FS::CitronPath::ConfigDir) / "input";
if (Common::FS::IsDir(input_profile_loc)) { if (Common::FS::IsDir(input_profile_loc)) {
Common::FS::IterateDirEntries( Common::FS::IterateDirEntries(

View File

@@ -117,7 +117,7 @@
<string name="install_game_content_help_link">https://citron-emu.org/help/quickstart/#dumping-installed-updates</string> <string name="install_game_content_help_link">https://citron-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="custom_driver_not_supported">Driver kustom tidak didukung</string> <string name="custom_driver_not_supported">Driver kustom tidak didukung</string>
<string name="custom_driver_not_supported_description">Driver kustom saat ini tidak dapat digunakan pada perangkat ini. \nCek opsi ini lain waktu untuk mengetahui apakah dapat digunakan!</string> <string name="custom_driver_not_supported_description">Driver kustom saat ini tidak dapat digunakan pada perangkat ini. \nCek opsi ini lain waktu untuk mengetahui apakah dapat digunakan!</string>
<string name="manage_citron_data">Kelola data Yuzu.</string> <string name="manage_citron_data">Kelola data Citron.</string>
<string name="manage_citron_data_description">Impor/expor firmware, key, data pengguna, dan sebagainya!</string> <string name="manage_citron_data_description">Impor/expor firmware, key, data pengguna, dan sebagainya!</string>
<string name="share_save_file">Bagikan file simpanan.</string> <string name="share_save_file">Bagikan file simpanan.</string>
<string name="export_save_failed">Gagal mengekspor simpanan.</string> <string name="export_save_failed">Gagal mengekspor simpanan.</string>

View File

@@ -117,7 +117,7 @@
<string name="install_game_content_help_link">https://citron-emu.org/help/quickstart/#dumping-installed-updates</string> <string name="install_game_content_help_link">https://citron-emu.org/help/quickstart/#dumping-installed-updates</string>
<string name="custom_driver_not_supported">I driver personalizzati non sono supportati.</string> <string name="custom_driver_not_supported">I driver personalizzati non sono supportati.</string>
<string name="custom_driver_not_supported_description">I driver personalizzati non sono attualmente supportati su questo dispositivo.\n Ricontrolla in futuro.</string> <string name="custom_driver_not_supported_description">I driver personalizzati non sono attualmente supportati su questo dispositivo.\n Ricontrolla in futuro.</string>
<string name="manage_citron_data">Gestisci i dati di Yuzu</string> <string name="manage_citron_data">Gestisci i dati di Citron</string>
<string name="manage_citron_data_description">Importa/Esporta il firmware, le keys, i dati utente, e altro!</string> <string name="manage_citron_data_description">Importa/Esporta il firmware, le keys, i dati utente, e altro!</string>
<string name="share_save_file">Condividi i tuoi dati di salvataggio</string> <string name="share_save_file">Condividi i tuoi dati di salvataggio</string>
<string name="export_save_failed">Errore durante l\'esportazione del salvataggio</string> <string name="export_save_failed">Errore durante l\'esportazione del salvataggio</string>
@@ -163,7 +163,7 @@
<string name="exporting_user_data">Esportazione dei Dati Utente...</string> <string name="exporting_user_data">Esportazione dei Dati Utente...</string>
<string name="importing_user_data">Importazione dei Dati Utente...</string> <string name="importing_user_data">Importazione dei Dati Utente...</string>
<string name="import_user_data">Importa i Dati Utente</string> <string name="import_user_data">Importa i Dati Utente</string>
<string name="invalid_citron_backup">Backup di Yuzu Invalido</string> <string name="invalid_citron_backup">Backup di Citron Invalido</string>
<string name="user_data_export_success">Dati Utente esportati con successo</string> <string name="user_data_export_success">Dati Utente esportati con successo</string>
<string name="user_data_import_success">Dati Utente importati con successo.</string> <string name="user_data_import_success">Dati Utente importati con successo.</string>
<string name="user_data_export_cancelled">Esportazione annullata</string> <string name="user_data_export_cancelled">Esportazione annullata</string>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="Theme.Yuzu.Main.MaterialYou" parent="Theme.Yuzu.Main"> <style name="Theme.Citron.Main.MaterialYou" parent="Theme.Citron.Main">
<item name="colorPrimary">@color/m3_sys_color_dynamic_dark_primary</item> <item name="colorPrimary">@color/m3_sys_color_dynamic_dark_primary</item>
<item name="colorOnPrimary">@color/m3_sys_color_dynamic_dark_on_primary</item> <item name="colorOnPrimary">@color/m3_sys_color_dynamic_dark_on_primary</item>
<item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_dark_primary_container</item> <item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_dark_primary_container</item>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="ThemeOverlay.Yuzu.Dark" parent=""> <style name="ThemeOverlay.Citron.Dark" parent="">
<item name="colorSurface">@android:color/black</item> <item name="colorSurface">@android:color/black</item>
<item name="android:colorBackground">@android:color/black</item> <item name="android:colorBackground">@android:color/black</item>
</style> </style>

View File

@@ -32,7 +32,7 @@
<string name="search_and_filter_games">Procura e filtra jogos</string> <string name="search_and_filter_games">Procura e filtra jogos</string>
<string name="select_games_folder">Seleciona a pasta de jogos</string> <string name="select_games_folder">Seleciona a pasta de jogos</string>
<string name="manage_game_folders">Gerenciar pastas de jogos</string> <string name="manage_game_folders">Gerenciar pastas de jogos</string>
<string name="select_games_folder_description">Permite que o Yuzu preencha a lista de jogos</string> <string name="select_games_folder_description">Permite que o Citron preencha a lista de jogos</string>
<string name="add_games_warning">Ignorar a seleção da pasta de jogos?</string> <string name="add_games_warning">Ignorar a seleção da pasta de jogos?</string>
<string name="add_games_warning_description">Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada.</string> <string name="add_games_warning_description">Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada.</string>
<string name="add_games_warning_help">https://citron-emu.org/help/quickstart/#dumping-games</string> <string name="add_games_warning_help">https://citron-emu.org/help/quickstart/#dumping-games</string>
@@ -48,7 +48,7 @@
<string name="notifications_description">Conceda a permissão de notificação com o botão abaixo.</string> <string name="notifications_description">Conceda a permissão de notificação com o botão abaixo.</string>
<string name="give_permission">Conceder permissão</string> <string name="give_permission">Conceder permissão</string>
<string name="notification_warning">Ignorar a concessão da permissão de notificação?</string> <string name="notification_warning">Ignorar a concessão da permissão de notificação?</string>
<string name="notification_warning_description">O Yuzu não irá te notificar de informações importantes. </string> <string name="notification_warning_description">O Citron não irá te notificar de informações importantes. </string>
<string name="permission_denied">Permissão negada</string> <string name="permission_denied">Permissão negada</string>
<string name="permission_denied_description">Você negou essa permissão muitas vezes e agora precisa concedê-la manualmente nas configurações do sistema.</string> <string name="permission_denied_description">Você negou essa permissão muitas vezes e agora precisa concedê-la manualmente nas configurações do sistema.</string>
<string name="about">Sobre</string> <string name="about">Sobre</string>
@@ -76,11 +76,11 @@
<string name="search_recently_added">Adicionado recentemente</string> <string name="search_recently_added">Adicionado recentemente</string>
<string name="search_retail">Jogos comerciais</string> <string name="search_retail">Jogos comerciais</string>
<string name="search_homebrew">Homebrew</string> <string name="search_homebrew">Homebrew</string>
<string name="open_user_folder">Abrir a pasta do Yuzu</string> <string name="open_user_folder">Abrir a pasta do Citron</string>
<string name="open_user_folder_description">Gerencie os arquivos internos do Yuzu</string> <string name="open_user_folder_description">Gerencie os arquivos internos do Citron</string>
<string name="theme_and_color_description">Altere a aparência do aplicativo</string> <string name="theme_and_color_description">Altere a aparência do aplicativo</string>
<string name="no_file_manager">Nenhum gerenciador de arquivos encontrado</string> <string name="no_file_manager">Nenhum gerenciador de arquivos encontrado</string>
<string name="notification_no_directory_link">Não foi possível abrir a pasta do Yuzu</string> <string name="notification_no_directory_link">Não foi possível abrir a pasta do Citron</string>
<string name="notification_no_directory_link_description">Por favor localize manualmente a pasta do usuário, com o painel lateral do gerenciador de arquivos.</string> <string name="notification_no_directory_link_description">Por favor localize manualmente a pasta do usuário, com o painel lateral do gerenciador de arquivos.</string>
<string name="manage_save_data">Gerenciar os dados salvos dos jogos</string> <string name="manage_save_data">Gerenciar os dados salvos dos jogos</string>
<string name="manage_save_data_description">Dados salvos encontrados. Por favor selecione uma opção abaixo.</string> <string name="manage_save_data_description">Dados salvos encontrados. Por favor selecione uma opção abaixo.</string>
@@ -166,7 +166,7 @@
<string name="copied_to_clipboard">Copiado para a área de transferência</string> <string name="copied_to_clipboard">Copiado para a área de transferência</string>
<string name="about_app_description">Um emulador de Switch de código aberto</string> <string name="about_app_description">Um emulador de Switch de código aberto</string>
<string name="contributors">Colaboradores</string> <string name="contributors">Colaboradores</string>
<string name="contributors_description">Feito com \u2764 da equipe do Yuzu</string> <string name="contributors_description">Feito com \u2764 da equipe do Citron</string>
<string name="contributors_link">https://github.com/citron-emu/citron/graphs/contributors</string> <string name="contributors_link">https://github.com/citron-emu/citron/graphs/contributors</string>
<string name="licenses_description">Projetos que tornam o citron para Android possível</string> <string name="licenses_description">Projetos que tornam o citron para Android possível</string>
<string name="build">Versão da Compilação</string> <string name="build">Versão da Compilação</string>

View File

@@ -32,7 +32,7 @@
<string name="search_and_filter_games">Procura e filtra jogos.</string> <string name="search_and_filter_games">Procura e filtra jogos.</string>
<string name="select_games_folder">Seleciona a pasta de jogos.</string> <string name="select_games_folder">Seleciona a pasta de jogos.</string>
<string name="manage_game_folders">Gerencie as pastas de jogos</string> <string name="manage_game_folders">Gerencie as pastas de jogos</string>
<string name="select_games_folder_description">Permite que o Yuzu preencha a lista de jogos</string> <string name="select_games_folder_description">Permite que o Citron preencha a lista de jogos</string>
<string name="add_games_warning">Ignorar a seleção da pasta de jogos?</string> <string name="add_games_warning">Ignorar a seleção da pasta de jogos?</string>
<string name="add_games_warning_description">Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada.</string> <string name="add_games_warning_description">Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada.</string>
<string name="add_games_warning_help">https://citron-emu.org/help/quickstart/#dumping-games</string> <string name="add_games_warning_help">https://citron-emu.org/help/quickstart/#dumping-games</string>
@@ -48,7 +48,7 @@
<string name="notifications_description">Conceda a permissão de notificação com o botão abaixo.</string> <string name="notifications_description">Conceda a permissão de notificação com o botão abaixo.</string>
<string name="give_permission">Conceda permissão</string> <string name="give_permission">Conceda permissão</string>
<string name="notification_warning">Saltar a concessão da permissão de notificação?</string> <string name="notification_warning">Saltar a concessão da permissão de notificação?</string>
<string name="notification_warning_description">Yuzu não conseguirá te notificar de informações importantes. </string> <string name="notification_warning_description">Citron não conseguirá te notificar de informações importantes. </string>
<string name="permission_denied">Permissão negada</string> <string name="permission_denied">Permissão negada</string>
<string name="permission_denied_description">Você negou essa permissão muitas vezes e agora precisa concedê-la manualmente nas configurações do sistema.</string> <string name="permission_denied_description">Você negou essa permissão muitas vezes e agora precisa concedê-la manualmente nas configurações do sistema.</string>
<string name="about">Sobre</string> <string name="about">Sobre</string>
@@ -76,11 +76,11 @@
<string name="search_recently_added">Adicionado recentemente</string> <string name="search_recently_added">Adicionado recentemente</string>
<string name="search_retail">Jogos comerciais</string> <string name="search_retail">Jogos comerciais</string>
<string name="search_homebrew">Homebrew</string> <string name="search_homebrew">Homebrew</string>
<string name="open_user_folder">Abre a pasta Yuzu</string> <string name="open_user_folder">Abre a pasta Citron</string>
<string name="open_user_folder_description">Gere os ficheiro internos do Yuzu</string> <string name="open_user_folder_description">Gere os ficheiro internos do Citron</string>
<string name="theme_and_color_description">Modifica a aparência da App</string> <string name="theme_and_color_description">Modifica a aparência da App</string>
<string name="no_file_manager">Nenhum gestor de ficheiros encontrado</string> <string name="no_file_manager">Nenhum gestor de ficheiros encontrado</string>
<string name="notification_no_directory_link">Impossível abrir pasta Yuzu</string> <string name="notification_no_directory_link">Impossível abrir pasta Citron</string>
<string name="notification_no_directory_link_description">Localiza a pasta de utilizador manualmente com o painel lateral do gestor de ficheiros.</string> <string name="notification_no_directory_link_description">Localiza a pasta de utilizador manualmente com o painel lateral do gestor de ficheiros.</string>
<string name="manage_save_data">Gerir dados guardados</string> <string name="manage_save_data">Gerir dados guardados</string>
<string name="manage_save_data_description">Dados não encontrados. Por favor seleciona uma opção abaixo.</string> <string name="manage_save_data_description">Dados não encontrados. Por favor seleciona uma opção abaixo.</string>
@@ -166,7 +166,7 @@
<string name="copied_to_clipboard">Copiado para a área de transferência</string> <string name="copied_to_clipboard">Copiado para a área de transferência</string>
<string name="about_app_description">Um emulador Switch de código aberto</string> <string name="about_app_description">Um emulador Switch de código aberto</string>
<string name="contributors">Contribuidores</string> <string name="contributors">Contribuidores</string>
<string name="contributors_description">Feito com \u2764 da equipa do Yuzu</string> <string name="contributors_description">Feito com \u2764 da equipa do Citron</string>
<string name="contributors_link">https://github.com/citron-emu/citron/graphs/contributors</string> <string name="contributors_link">https://github.com/citron-emu/citron/graphs/contributors</string>
<string name="licenses_description">Projetos que tornam o citron para Android possível</string> <string name="licenses_description">Projetos que tornam o citron para Android possível</string>
<string name="build">Versão</string> <string name="build">Versão</string>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="Theme.Yuzu.Main.MaterialYou" parent="Theme.Yuzu.Main"> <style name="Theme.Citron.Main.MaterialYou" parent="Theme.Citron.Main">
<item name="colorPrimary">@color/m3_sys_color_dynamic_light_primary</item> <item name="colorPrimary">@color/m3_sys_color_dynamic_light_primary</item>
<item name="colorOnPrimary">@color/m3_sys_color_dynamic_light_on_primary</item> <item name="colorOnPrimary">@color/m3_sys_color_dynamic_light_on_primary</item>
<item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_light_primary_container</item> <item name="colorPrimaryContainer">@color/m3_sys_color_dynamic_light_primary_container</item>

View File

@@ -13,22 +13,22 @@
<item name="android:paddingRight">32dp</item> <item name="android:paddingRight">32dp</item>
</style> </style>
<style name="YuzuSlider" parent="Widget.Material3.Slider"> <style name="CitronSlider" parent="Widget.Material3.Slider">
<item name="tickVisible">false</item> <item name="tickVisible">false</item>
<item name="labelBehavior">gone</item> <item name="labelBehavior">gone</item>
</style> </style>
<style name="YuzuMaterialDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog"> <style name="CitronMaterialDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
<item name="colorPrimary">@color/citron_primaryContainer</item> <item name="colorPrimary">@color/citron_primaryContainer</item>
<item name="colorSurface">@color/citron_primaryContainer</item> <item name="colorSurface">@color/citron_primaryContainer</item>
<item name="colorSecondary">@color/citron_primary</item> <item name="colorSecondary">@color/citron_primary</item>
<item name="android:textColorLink">@color/citron_primary</item> <item name="android:textColorLink">@color/citron_primary</item>
<item name="buttonBarPositiveButtonStyle">@style/YuzuButton</item> <item name="buttonBarPositiveButtonStyle">@style/CitronButton</item>
<item name="buttonBarNegativeButtonStyle">@style/YuzuButton</item> <item name="buttonBarNegativeButtonStyle">@style/CitronButton</item>
<item name="buttonBarNeutralButtonStyle">@style/YuzuButton</item> <item name="buttonBarNeutralButtonStyle">@style/CitronButton</item>
</style> </style>
<style name="YuzuButton" parent="Widget.Material3.Button.TextButton.Dialog"> <style name="CitronButton" parent="Widget.Material3.Button.TextButton.Dialog">
<item name="android:textColor">@color/citron_primary</item> <item name="android:textColor">@color/citron_primary</item>
<item name="rippleColor">@color/citron_inversePrimary</item> <item name="rippleColor">@color/citron_inversePrimary</item>
</style> </style>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="Theme.Yuzu.Splash.Main" parent="Theme.SplashScreen"> <style name="Theme.Citron.Splash.Main" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/citron_surface</item> <item name="windowSplashScreenBackground">@color/citron_surface</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_citron</item> <item name="windowSplashScreenAnimatedIcon">@drawable/ic_citron</item>
<item name="postSplashScreenTheme">@style/Theme.Yuzu.Main</item> <item name="postSplashScreenTheme">@style/Theme.Citron.Main</item>
</style> </style>
<style name="Theme.Yuzu.Main" parent="Theme.Material3.DayNight.NoActionBar"> <style name="Theme.Citron.Main" parent="Theme.Material3.DayNight.NoActionBar">
<item name="colorPrimary">@color/citron_primary</item> <item name="colorPrimary">@color/citron_primary</item>
<item name="colorOnPrimary">@color/citron_onPrimary</item> <item name="colorOnPrimary">@color/citron_onPrimary</item>
<item name="colorPrimaryContainer">@color/citron_primaryContainer</item> <item name="colorPrimaryContainer">@color/citron_primaryContainer</item>
@@ -39,8 +39,8 @@
<item name="android:statusBarColor">@android:color/transparent</item> <item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item> <item name="android:navigationBarColor">@android:color/transparent</item>
<item name="sliderStyle">@style/YuzuSlider</item> <item name="sliderStyle">@style/CitronSlider</item>
<item name="materialAlertDialogTheme">@style/YuzuMaterialDialog</item> <item name="materialAlertDialogTheme">@style/CitronMaterialDialog</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>

View File

@@ -386,7 +386,7 @@ bool IsCubebSuitable() {
// Test opening a device with standard parameters // Test opening a device with standard parameters
cubeb_devid output_device{0}; cubeb_devid output_device{0};
cubeb_devid input_device{0}; cubeb_devid input_device{0};
std::string name{"Yuzu test"}; std::string name{"Citron test"};
cubeb_stream* stream{nullptr}; cubeb_stream* stream{nullptr};
if (cubeb_stream_init(ctx, &stream, name.c_str(), input_device, nullptr, output_device, &params, if (cubeb_stream_init(ctx, &stream, name.c_str(), input_device, nullptr, output_device, &params,

View File

@@ -449,7 +449,7 @@ if (WIN32 AND QT_VERSION VERSION_GREATER_EQUAL 6)
endif() endif()
if (YUZU_USE_BUNDLED_QT AND QT_VERSION VERSION_LESS 6) if (YUZU_USE_BUNDLED_QT AND QT_VERSION VERSION_LESS 6)
include(CopyYuzuQt5Deps) include(CopyCitronQt5Deps)
copy_citron_Qt5_deps(citron) copy_citron_Qt5_deps(citron)
endif() endif()
@@ -459,8 +459,8 @@ if (ENABLE_SDL2)
endif() endif()
if (MSVC) if (MSVC)
include(CopyYuzuSDLDeps) include(CopyCitronSDLDeps)
include(CopyYuzuFFmpegDeps) include(CopyCitronFFmpegDeps)
copy_citron_SDL_deps(citron) copy_citron_SDL_deps(citron)
copy_citron_FFmpeg_deps(citron) copy_citron_FFmpeg_deps(citron)
endif() endif()

View File

@@ -61,7 +61,7 @@
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QLabel" name="labelYuzu"> <widget class="QLabel" name="labelCitron">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>

View File

@@ -30,7 +30,7 @@ QString FormatUserEntryText(const QString& username, Common::UUID uuid) {
QString GetImagePath(Common::UUID uuid) { QString GetImagePath(Common::UUID uuid) {
const auto path = const auto path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir) /
fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString()); fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
return QString::fromStdString(Common::FS::PathToUTF8String(path)); return QString::fromStdString(Common::FS::PathToUTF8String(path));
} }

View File

@@ -57,7 +57,7 @@ QtNXWebEngineView::QtNXWebEngineView(QWidget* parent, Core::System& system,
default_profile{QWebEngineProfile::defaultProfile()}, global_settings{ default_profile{QWebEngineProfile::defaultProfile()}, global_settings{
default_profile->settings()} { default_profile->settings()} {
default_profile->setPersistentStoragePath(QString::fromStdString(Common::FS::PathToUTF8String( default_profile->setPersistentStoragePath(QString::fromStdString(Common::FS::PathToUTF8String(
Common::FS::GetYuzuPath(Common::FS::YuzuPath::YuzuDir) / "qtwebengine"))); Common::FS::GetCitronPath(Common::FS::CitronPath::CitronDir) / "qtwebengine")));
QWebEngineScript gamepad; QWebEngineScript gamepad;
QWebEngineScript window_nx; QWebEngineScript window_nx;
@@ -336,7 +336,7 @@ void QtNXWebEngineView::LoadExtractedFonts() {
QWebEngineScript load_nx_font; QWebEngineScript load_nx_font;
auto fonts_dir_str = Common::FS::PathToUTF8String( auto fonts_dir_str = Common::FS::PathToUTF8String(
Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / "fonts/"); Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) / "fonts/");
std::replace(fonts_dir_str.begin(), fonts_dir_str.end(), '\\', '/'); std::replace(fonts_dir_str.begin(), fonts_dir_str.end(), '\\', '/');

View File

@@ -60,7 +60,7 @@ static void PruneDumpDirectory(const std::filesystem::path& dump_path) {
void InstallCrashHandler() { void InstallCrashHandler() {
// Write crash dumps to profile directory. // Write crash dumps to profile directory.
const auto dump_path = GetYuzuPath(Common::FS::YuzuPath::CrashDumpsDir); const auto dump_path = GetCitronPath(Common::FS::CitronPath::CrashDumpsDir);
PruneDumpDirectory(dump_path); PruneDumpDirectory(dump_path);
#if defined(_WIN32) #if defined(_WIN32)

View File

@@ -21,7 +21,7 @@ ConfigureDebug::ConfigureDebug(const Core::System& system_, QWidget* parent)
connect(ui->open_log_button, &QPushButton::clicked, []() { connect(ui->open_log_button, &QPushButton::clicked, []() {
const auto path = const auto path =
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::LogDir)); QString::fromStdString(Common::FS::GetCitronPathString(Common::FS::CitronPath::LogDir));
QDesktopServices::openUrl(QUrl::fromLocalFile(path)); QDesktopServices::openUrl(QUrl::fromLocalFile(path));
}); });

View File

@@ -47,15 +47,15 @@ void ConfigureFilesystem::changeEvent(QEvent* event) {
void ConfigureFilesystem::SetConfiguration() { void ConfigureFilesystem::SetConfiguration() {
ui->nand_directory_edit->setText( ui->nand_directory_edit->setText(
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::NANDDir))); QString::fromStdString(Common::FS::GetCitronPathString(Common::FS::CitronPath::NANDDir)));
ui->sdmc_directory_edit->setText( ui->sdmc_directory_edit->setText(
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::SDMCDir))); QString::fromStdString(Common::FS::GetCitronPathString(Common::FS::CitronPath::SDMCDir)));
ui->gamecard_path_edit->setText( ui->gamecard_path_edit->setText(
QString::fromStdString(Settings::values.gamecard_path.GetValue())); QString::fromStdString(Settings::values.gamecard_path.GetValue()));
ui->dump_path_edit->setText( ui->dump_path_edit->setText(
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::DumpDir))); QString::fromStdString(Common::FS::GetCitronPathString(Common::FS::CitronPath::DumpDir)));
ui->load_path_edit->setText( ui->load_path_edit->setText(
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::LoadDir))); QString::fromStdString(Common::FS::GetCitronPathString(Common::FS::CitronPath::LoadDir)));
ui->gamecard_inserted->setChecked(Settings::values.gamecard_inserted.GetValue()); ui->gamecard_inserted->setChecked(Settings::values.gamecard_inserted.GetValue());
ui->gamecard_current_game->setChecked(Settings::values.gamecard_current_game.GetValue()); ui->gamecard_current_game->setChecked(Settings::values.gamecard_current_game.GetValue());
@@ -68,13 +68,13 @@ void ConfigureFilesystem::SetConfiguration() {
} }
void ConfigureFilesystem::ApplyConfiguration() { void ConfigureFilesystem::ApplyConfiguration() {
Common::FS::SetYuzuPath(Common::FS::YuzuPath::NANDDir, Common::FS::SetCitronPath(Common::FS::CitronPath::NANDDir,
ui->nand_directory_edit->text().toStdString()); ui->nand_directory_edit->text().toStdString());
Common::FS::SetYuzuPath(Common::FS::YuzuPath::SDMCDir, Common::FS::SetCitronPath(Common::FS::CitronPath::SDMCDir,
ui->sdmc_directory_edit->text().toStdString()); ui->sdmc_directory_edit->text().toStdString());
Common::FS::SetYuzuPath(Common::FS::YuzuPath::DumpDir, Common::FS::SetCitronPath(Common::FS::CitronPath::DumpDir,
ui->dump_path_edit->text().toStdString()); ui->dump_path_edit->text().toStdString());
Common::FS::SetYuzuPath(Common::FS::YuzuPath::LoadDir, Common::FS::SetCitronPath(Common::FS::CitronPath::LoadDir,
ui->load_path_edit->text().toStdString()); ui->load_path_edit->text().toStdString());
Settings::values.gamecard_inserted = ui->gamecard_inserted->isChecked(); Settings::values.gamecard_inserted = ui->gamecard_inserted->isChecked();
@@ -126,12 +126,12 @@ void ConfigureFilesystem::SetDirectory(DirectoryTarget target, QLineEdit* edit)
} }
void ConfigureFilesystem::ResetMetadata() { void ConfigureFilesystem::ResetMetadata() {
if (!Common::FS::Exists(Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / if (!Common::FS::Exists(Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) /
"game_list/")) { "game_list/")) {
QMessageBox::information(this, tr("Reset Metadata Cache"), QMessageBox::information(this, tr("Reset Metadata Cache"),
tr("The metadata cache is already empty.")); tr("The metadata cache is already empty."));
} else if (Common::FS::RemoveDirRecursively( } else if (Common::FS::RemoveDirRecursively(
Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / "game_list")) { Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) / "game_list")) {
QMessageBox::information(this, tr("Reset Metadata Cache"), QMessageBox::information(this, tr("Reset Metadata Cache"),
tr("The operation completed successfully.")); tr("The operation completed successfully."));
UISettings::values.is_game_list_reload_pending.exchange(true); UISettings::values.is_game_list_reload_pending.exchange(true);

View File

@@ -80,7 +80,7 @@ void ConfigurePerGameAddons::ApplyConfiguration() {
std::sort(disabled_addons.begin(), disabled_addons.end()); std::sort(disabled_addons.begin(), disabled_addons.end());
std::sort(current.begin(), current.end()); std::sort(current.begin(), current.end());
if (disabled_addons != current) { if (disabled_addons != current) {
Common::FS::RemoveFile(Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / Common::FS::RemoveFile(Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) /
"game_list" / fmt::format("{:016X}.pv.txt", title_id)); "game_list" / fmt::format("{:016X}.pv.txt", title_id));
} }

View File

@@ -35,7 +35,7 @@ constexpr std::array<u8, 107> backup_jpeg{
QString GetImagePath(const Common::UUID& uuid) { QString GetImagePath(const Common::UUID& uuid) {
const auto path = const auto path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir) /
fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString()); fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
return QString::fromStdString(Common::FS::PathToUTF8String(path)); return QString::fromStdString(Common::FS::PathToUTF8String(path));
} }
@@ -288,7 +288,7 @@ void ConfigureProfileManager::SetUserImage() {
} }
const auto raw_path = QString::fromStdString(Common::FS::PathToUTF8String( const auto raw_path = QString::fromStdString(Common::FS::PathToUTF8String(
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000010")); Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir) / "system/save/8000000000000010"));
const QFileInfo raw_info{raw_path}; const QFileInfo raw_info{raw_path};
if (raw_info.exists() && !raw_info.isDir() && !QFile::remove(raw_path)) { if (raw_info.exists() && !raw_info.isDir() && !QFile::remove(raw_path)) {
QMessageBox::warning(this, tr("Error deleting file"), QMessageBox::warning(this, tr("Error deleting file"),

View File

@@ -28,14 +28,14 @@ ConfigureTasDialog::~ConfigureTasDialog() = default;
void ConfigureTasDialog::LoadConfiguration() { void ConfigureTasDialog::LoadConfiguration() {
ui->tas_path_edit->setText( ui->tas_path_edit->setText(
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::TASDir))); QString::fromStdString(Common::FS::GetCitronPathString(Common::FS::CitronPath::TASDir)));
ui->tas_enable->setChecked(Settings::values.tas_enable.GetValue()); ui->tas_enable->setChecked(Settings::values.tas_enable.GetValue());
ui->tas_loop_script->setChecked(Settings::values.tas_loop.GetValue()); ui->tas_loop_script->setChecked(Settings::values.tas_loop.GetValue());
ui->tas_pause_on_load->setChecked(Settings::values.pause_tas_on_load.GetValue()); ui->tas_pause_on_load->setChecked(Settings::values.pause_tas_on_load.GetValue());
} }
void ConfigureTasDialog::ApplyConfiguration() { void ConfigureTasDialog::ApplyConfiguration() {
Common::FS::SetYuzuPath(Common::FS::YuzuPath::TASDir, ui->tas_path_edit->text().toStdString()); Common::FS::SetCitronPath(Common::FS::CitronPath::TASDir, ui->tas_path_edit->text().toStdString());
Settings::values.tas_enable.SetValue(ui->tas_enable->isChecked()); Settings::values.tas_enable.SetValue(ui->tas_enable->isChecked());
Settings::values.tas_loop.SetValue(ui->tas_loop_script->isChecked()); Settings::values.tas_loop.SetValue(ui->tas_loop_script->isChecked());
Settings::values.pause_tas_on_load.SetValue(ui->tas_pause_on_load->isChecked()); Settings::values.pause_tas_on_load.SetValue(ui->tas_pause_on_load->isChecked());

View File

@@ -144,8 +144,8 @@ ConfigureUi::ConfigureUi(Core::System& system_, QWidget* parent)
connect(ui->screenshot_path_button, &QToolButton::pressed, this, [this] { connect(ui->screenshot_path_button, &QToolButton::pressed, this, [this] {
auto dir = auto dir =
QFileDialog::getExistingDirectory(this, tr("Select Screenshots Path..."), QFileDialog::getExistingDirectory(this, tr("Select Screenshots Path..."),
QString::fromStdString(Common::FS::GetYuzuPathString( QString::fromStdString(Common::FS::GetCitronPathString(
Common::FS::YuzuPath::ScreenshotsDir))); Common::FS::CitronPath::ScreenshotsDir)));
if (!dir.isEmpty()) { if (!dir.isEmpty()) {
if (dir.back() != QChar::fromLatin1('/')) { if (dir.back() != QChar::fromLatin1('/')) {
dir.append(QChar::fromLatin1('/')); dir.append(QChar::fromLatin1('/'));
@@ -176,7 +176,7 @@ void ConfigureUi::ApplyConfiguration() {
UISettings::values.row_2_text_id = ui->row_2_text_combobox->currentData().toUInt(); UISettings::values.row_2_text_id = ui->row_2_text_combobox->currentData().toUInt();
UISettings::values.enable_screenshot_save_as = ui->enable_screenshot_save_as->isChecked(); UISettings::values.enable_screenshot_save_as = ui->enable_screenshot_save_as->isChecked();
Common::FS::SetYuzuPath(Common::FS::YuzuPath::ScreenshotsDir, Common::FS::SetCitronPath(Common::FS::CitronPath::ScreenshotsDir,
ui->screenshot_path_edit->text().toStdString()); ui->screenshot_path_edit->text().toStdString());
const u32 height = ScreenshotDimensionToInt(ui->screenshot_height->currentText()); const u32 height = ScreenshotDimensionToInt(ui->screenshot_height->currentText());
@@ -208,7 +208,7 @@ void ConfigureUi::SetConfiguration() {
ui->enable_screenshot_save_as->setChecked( ui->enable_screenshot_save_as->setChecked(
UISettings::values.enable_screenshot_save_as.GetValue()); UISettings::values.enable_screenshot_save_as.GetValue());
ui->screenshot_path_edit->setText(QString::fromStdString( ui->screenshot_path_edit->setText(QString::fromStdString(
Common::FS::GetYuzuPathString(Common::FS::YuzuPath::ScreenshotsDir))); Common::FS::GetCitronPathString(Common::FS::CitronPath::ScreenshotsDir)));
const auto height = UISettings::values.screenshot_height.GetValue(); const auto height = UISettings::values.screenshot_height.GetValue();
if (height == 0) { if (height == 0) {

View File

@@ -24,7 +24,7 @@
<property name="title"> <property name="title">
<string>citron Web Service</string> <string>citron Web Service</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayoutYuzuWebService"> <layout class="QVBoxLayout" name="verticalLayoutCitronWebService">
<item> <item>
<widget class="QLabel" name="web_credentials_disclaimer"> <widget class="QLabel" name="web_credentials_disclaimer">
<property name="text"> <property name="text">
@@ -33,7 +33,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QGridLayout" name="gridLayoutYuzuUsername"> <layout class="QGridLayout" name="gridLayoutCitronUsername">
<item row="2" column="3"> <item row="2" column="3">
<widget class="QPushButton" name="button_verify_login"> <widget class="QPushButton" name="button_verify_login">
<property name="sizePolicy"> <property name="sizePolicy">

View File

@@ -14,7 +14,7 @@ namespace FS = Common::FS;
namespace { namespace {
bool ProfileExistsInFilesystem(std::string_view profile_name) { bool ProfileExistsInFilesystem(std::string_view profile_name) {
return FS::Exists(FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "input" / return FS::Exists(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "input" /
fmt::format("{}.ini", profile_name)); fmt::format("{}.ini", profile_name));
} }
@@ -29,7 +29,7 @@ std::filesystem::path GetNameWithoutExtension(std::filesystem::path filename) {
} // namespace } // namespace
InputProfiles::InputProfiles() { InputProfiles::InputProfiles() {
const auto input_profile_loc = FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "input"; const auto input_profile_loc = FS::GetCitronPath(FS::CitronPath::ConfigDir) / "input";
if (!FS::IsDir(input_profile_loc)) { if (!FS::IsDir(input_profile_loc)) {
return; return;

View File

@@ -38,7 +38,7 @@ QString GetGameListCachedObject(const std::string& filename, const std::string&
} }
const auto path = const auto path =
Common::FS::PathToUTF8String(Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / Common::FS::PathToUTF8String(Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) /
"game_list" / fmt::format("{}.{}", filename, ext)); "game_list" / fmt::format("{}.{}", filename, ext));
void(Common::FS::CreateParentDirs(path)); void(Common::FS::CreateParentDirs(path));
@@ -70,7 +70,7 @@ std::pair<std::vector<u8>, std::string> GetGameListCachedObject(
} }
const auto game_list_dir = const auto game_list_dir =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / "game_list"; Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) / "game_list";
const auto jpeg_name = fmt::format("{}.jpeg", filename); const auto jpeg_name = fmt::format("{}.jpeg", filename);
const auto app_name = fmt::format("{}.appname.txt", filename); const auto app_name = fmt::format("{}.appname.txt", filename);

View File

@@ -223,7 +223,7 @@ void GMainWindow::ShowTelemetryCallout() {
const int GMainWindow::max_recent_files_item; const int GMainWindow::max_recent_files_item;
static void RemoveCachedContents() { static void RemoveCachedContents() {
const auto cache_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir); const auto cache_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir);
const auto offline_fonts = cache_dir / "fonts"; const auto offline_fonts = cache_dir / "fonts";
const auto offline_manual = cache_dir / "offline_web_applet_manual"; const auto offline_manual = cache_dir / "offline_web_applet_manual";
const auto offline_legal_information = cache_dir / "offline_web_applet_legal_information"; const auto offline_legal_information = cache_dir / "offline_web_applet_legal_information";
@@ -1600,7 +1600,7 @@ void GMainWindow::ConnectMenuEvents() {
connect_menu(ui->action_Configure_Tas, &GMainWindow::OnConfigureTas); connect_menu(ui->action_Configure_Tas, &GMainWindow::OnConfigureTas);
// Help // Help
connect_menu(ui->action_Open_citron_Folder, &GMainWindow::OnOpenYuzuFolder); connect_menu(ui->action_Open_citron_Folder, &GMainWindow::OnOpenCitronFolder);
connect_menu(ui->action_Verify_installed_contents, &GMainWindow::OnVerifyInstalledContents); connect_menu(ui->action_Verify_installed_contents, &GMainWindow::OnVerifyInstalledContents);
connect_menu(ui->action_Install_Firmware, &GMainWindow::OnInstallFirmware); connect_menu(ui->action_Install_Firmware, &GMainWindow::OnInstallFirmware);
connect_menu(ui->action_Install_Keys, &GMainWindow::OnInstallDecryptionKeys); connect_menu(ui->action_Install_Keys, &GMainWindow::OnInstallDecryptionKeys);
@@ -2288,7 +2288,7 @@ void GMainWindow::OnGameListOpenFolder(u64 program_id, GameListOpenTarget target
switch (target) { switch (target) {
case GameListOpenTarget::SaveData: { case GameListOpenTarget::SaveData: {
open_target = tr("Save Data"); open_target = tr("Save Data");
const auto nand_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir); const auto nand_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir);
auto vfs_nand_dir = auto vfs_nand_dir =
vfs->OpenDirectory(Common::FS::PathToUTF8String(nand_dir), FileSys::OpenMode::Read); vfs->OpenDirectory(Common::FS::PathToUTF8String(nand_dir), FileSys::OpenMode::Read);
@@ -2344,7 +2344,7 @@ void GMainWindow::OnGameListOpenFolder(u64 program_id, GameListOpenTarget target
} }
case GameListOpenTarget::ModData: { case GameListOpenTarget::ModData: {
open_target = tr("Mod Data"); open_target = tr("Mod Data");
path = Common::FS::GetYuzuPath(Common::FS::YuzuPath::LoadDir) / path = Common::FS::GetCitronPath(Common::FS::CitronPath::LoadDir) /
fmt::format("{:016X}", program_id); fmt::format("{:016X}", program_id);
break; break;
} }
@@ -2366,7 +2366,7 @@ void GMainWindow::OnGameListOpenFolder(u64 program_id, GameListOpenTarget target
} }
void GMainWindow::OnTransferableShaderCacheOpenFile(u64 program_id) { void GMainWindow::OnTransferableShaderCacheOpenFile(u64 program_id) {
const auto shader_cache_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ShaderDir); const auto shader_cache_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::ShaderDir);
const auto shader_cache_folder_path{shader_cache_dir / fmt::format("{:016x}", program_id)}; const auto shader_cache_folder_path{shader_cache_dir / fmt::format("{:016x}", program_id)};
if (!Common::FS::CreateDirs(shader_cache_folder_path)) { if (!Common::FS::CreateDirs(shader_cache_folder_path)) {
QMessageBox::warning(this, tr("Error Opening Transferable Shader Cache"), QMessageBox::warning(this, tr("Error Opening Transferable Shader Cache"),
@@ -2485,7 +2485,7 @@ void GMainWindow::OnGameListRemoveInstalledEntry(u64 program_id, InstalledEntryT
RemoveAddOnContent(program_id, type); RemoveAddOnContent(program_id, type);
break; break;
} }
Common::FS::RemoveDirRecursively(Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / Common::FS::RemoveDirRecursively(Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) /
"game_list"); "game_list");
game_list->PopulateAsync(UISettings::values.game_dirs); game_list->PopulateAsync(UISettings::values.game_dirs);
} }
@@ -2591,7 +2591,7 @@ void GMainWindow::RemoveTransferableShaderCache(u64 program_id, GameListRemoveTa
return ""; return "";
} }
}(); }();
const auto shader_cache_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ShaderDir); const auto shader_cache_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::ShaderDir);
const auto shader_cache_folder_path = shader_cache_dir / fmt::format("{:016x}", program_id); const auto shader_cache_folder_path = shader_cache_dir / fmt::format("{:016x}", program_id);
const auto target_file = shader_cache_folder_path / target_file_name; const auto target_file = shader_cache_folder_path / target_file_name;
@@ -2612,7 +2612,7 @@ void GMainWindow::RemoveTransferableShaderCache(u64 program_id, GameListRemoveTa
void GMainWindow::RemoveVulkanDriverPipelineCache(u64 program_id) { void GMainWindow::RemoveVulkanDriverPipelineCache(u64 program_id) {
static constexpr std::string_view target_file_name = "vulkan_pipelines.bin"; static constexpr std::string_view target_file_name = "vulkan_pipelines.bin";
const auto shader_cache_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ShaderDir); const auto shader_cache_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::ShaderDir);
const auto shader_cache_folder_path = shader_cache_dir / fmt::format("{:016x}", program_id); const auto shader_cache_folder_path = shader_cache_dir / fmt::format("{:016x}", program_id);
const auto target_file = shader_cache_folder_path / target_file_name; const auto target_file = shader_cache_folder_path / target_file_name;
@@ -2626,7 +2626,7 @@ void GMainWindow::RemoveVulkanDriverPipelineCache(u64 program_id) {
} }
void GMainWindow::RemoveAllTransferableShaderCaches(u64 program_id) { void GMainWindow::RemoveAllTransferableShaderCaches(u64 program_id) {
const auto shader_cache_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ShaderDir); const auto shader_cache_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::ShaderDir);
const auto program_shader_cache_dir = shader_cache_dir / fmt::format("{:016x}", program_id); const auto program_shader_cache_dir = shader_cache_dir / fmt::format("{:016x}", program_id);
if (!Common::FS::Exists(program_shader_cache_dir)) { if (!Common::FS::Exists(program_shader_cache_dir)) {
@@ -2649,7 +2649,7 @@ void GMainWindow::RemoveCustomConfiguration(u64 program_id, const std::string& g
program_id == 0 ? Common::FS::PathToUTF8String(file_path.filename()).append(".ini") program_id == 0 ? Common::FS::PathToUTF8String(file_path.filename()).append(".ini")
: fmt::format("{:016X}.ini", program_id); : fmt::format("{:016X}.ini", program_id);
const auto custom_config_file_path = const auto custom_config_file_path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "custom" / config_file_name; Common::FS::GetCitronPath(Common::FS::CitronPath::ConfigDir) / "custom" / config_file_name;
if (!Common::FS::Exists(custom_config_file_path)) { if (!Common::FS::Exists(custom_config_file_path)) {
QMessageBox::warning(this, tr("Error Removing Custom Configuration"), QMessageBox::warning(this, tr("Error Removing Custom Configuration"),
@@ -2667,7 +2667,7 @@ void GMainWindow::RemoveCustomConfiguration(u64 program_id, const std::string& g
} }
void GMainWindow::RemoveCacheStorage(u64 program_id) { void GMainWindow::RemoveCacheStorage(u64 program_id) {
const auto nand_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir); const auto nand_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir);
auto vfs_nand_dir = auto vfs_nand_dir =
vfs->OpenDirectory(Common::FS::PathToUTF8String(nand_dir), FileSys::OpenMode::Read); vfs->OpenDirectory(Common::FS::PathToUTF8String(nand_dir), FileSys::OpenMode::Read);
@@ -2725,8 +2725,8 @@ void GMainWindow::OnGameListDumpRomFS(u64 program_id, const std::string& game_pa
const auto base_romfs = base_nca->GetRomFS(); const auto base_romfs = base_nca->GetRomFS();
const auto dump_dir = const auto dump_dir =
target == DumpRomFSTarget::Normal target == DumpRomFSTarget::Normal
? Common::FS::GetYuzuPath(Common::FS::YuzuPath::DumpDir) ? Common::FS::GetCitronPath(Common::FS::CitronPath::DumpDir)
: Common::FS::GetYuzuPath(Common::FS::YuzuPath::SDMCDir) / "atmosphere" / "contents"; : Common::FS::GetCitronPath(Common::FS::CitronPath::SDMCDir) / "atmosphere" / "contents";
const auto romfs_dir = fmt::format("{:016X}/romfs", title_id); const auto romfs_dir = fmt::format("{:016X}/romfs", title_id);
const auto path = Common::FS::PathToUTF8String(dump_dir / romfs_dir); const auto path = Common::FS::PathToUTF8String(dump_dir / romfs_dir);
@@ -2981,10 +2981,10 @@ bool GMainWindow::CreateShortcutMessagesGUI(QWidget* parent, int imsg, const QSt
bool GMainWindow::MakeShortcutIcoPath(const u64 program_id, const std::string_view game_file_name, bool GMainWindow::MakeShortcutIcoPath(const u64 program_id, const std::string_view game_file_name,
std::filesystem::path& out_icon_path) { std::filesystem::path& out_icon_path) {
// Get path to Yuzu icons directory & icon extension // Get path to Citron icons directory & icon extension
std::string ico_extension = "png"; std::string ico_extension = "png";
#if defined(_WIN32) #if defined(_WIN32)
out_icon_path = Common::FS::GetYuzuPath(Common::FS::YuzuPath::IconsDir); out_icon_path = Common::FS::GetCitronPath(Common::FS::CitronPath::IconsDir);
ico_extension = "ico"; ico_extension = "ico";
#elif defined(__linux__) || defined(__FreeBSD__) #elif defined(__linux__) || defined(__FreeBSD__)
out_icon_path = Common::FS::GetDataDirectory("XDG_DATA_HOME") / "icons/hicolor/256x256"; out_icon_path = Common::FS::GetDataDirectory("XDG_DATA_HOME") / "icons/hicolor/256x256";
@@ -3107,13 +3107,13 @@ void GMainWindow::OnGameListOpenDirectory(const QString& directory) {
std::filesystem::path fs_path; std::filesystem::path fs_path;
if (directory == QStringLiteral("SDMC")) { if (directory == QStringLiteral("SDMC")) {
fs_path = fs_path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::SDMCDir) / "Nintendo/Contents/registered"; Common::FS::GetCitronPath(Common::FS::CitronPath::SDMCDir) / "Nintendo/Contents/registered";
} else if (directory == QStringLiteral("UserNAND")) { } else if (directory == QStringLiteral("UserNAND")) {
fs_path = fs_path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "user/Contents/registered"; Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir) / "user/Contents/registered";
} else if (directory == QStringLiteral("SysNAND")) { } else if (directory == QStringLiteral("SysNAND")) {
fs_path = fs_path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/Contents/registered"; Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir) / "system/Contents/registered";
} else { } else {
fs_path = directory.toStdString(); fs_path = directory.toStdString();
} }
@@ -3339,7 +3339,7 @@ void GMainWindow::OnMenuInstallToNAND() {
: tr("%n file(s) failed to install\n", "", failed_files.size())); : tr("%n file(s) failed to install\n", "", failed_files.size()));
QMessageBox::information(this, tr("Install Results"), install_results); QMessageBox::information(this, tr("Install Results"), install_results);
Common::FS::RemoveDirRecursively(Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / Common::FS::RemoveDirRecursively(Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) /
"game_list"); "game_list");
game_list->PopulateAsync(UISettings::values.game_dirs); game_list->PopulateAsync(UISettings::values.game_dirs);
ui->action_Install_File_NAND->setEnabled(true); ui->action_Install_File_NAND->setEnabled(true);
@@ -3759,11 +3759,11 @@ void GMainWindow::OnConfigure() {
LOG_WARNING(Frontend, "Failed to remove configuration file"); LOG_WARNING(Frontend, "Failed to remove configuration file");
} }
if (!Common::FS::RemoveDirContentsRecursively( if (!Common::FS::RemoveDirContentsRecursively(
Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "custom")) { Common::FS::GetCitronPath(Common::FS::CitronPath::ConfigDir) / "custom")) {
LOG_WARNING(Frontend, "Failed to remove custom configuration files"); LOG_WARNING(Frontend, "Failed to remove custom configuration files");
} }
if (!Common::FS::RemoveDirRecursively( if (!Common::FS::RemoveDirRecursively(
Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / "game_list")) { Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) / "game_list")) {
LOG_WARNING(Frontend, "Failed to remove game metadata cache files"); LOG_WARNING(Frontend, "Failed to remove game metadata cache files");
} }
@@ -4119,9 +4119,9 @@ void GMainWindow::LoadAmiibo(const QString& filename) {
} }
} }
void GMainWindow::OnOpenYuzuFolder() { void GMainWindow::OnOpenCitronFolder() {
QDesktopServices::openUrl(QUrl::fromLocalFile( QDesktopServices::openUrl(QUrl::fromLocalFile(
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::YuzuDir)))); QString::fromStdString(Common::FS::GetCitronPathString(Common::FS::CitronPath::CitronDir))));
} }
void GMainWindow::OnVerifyInstalledContents() { void GMainWindow::OnVerifyInstalledContents() {
@@ -4336,7 +4336,7 @@ void GMainWindow::OnInstallDecryptionKeys() {
return; return;
} }
const auto citron_keys_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::KeysDir); const auto citron_keys_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::KeysDir);
for (auto key_file : source_key_files) { for (auto key_file : source_key_files) {
std::filesystem::path destination_key_file = citron_keys_dir / key_file.filename(); std::filesystem::path destination_key_file = citron_keys_dir / key_file.filename();
if (!std::filesystem::copy_file(key_file, destination_key_file, if (!std::filesystem::copy_file(key_file, destination_key_file,
@@ -4489,7 +4489,7 @@ void GMainWindow::OnCaptureScreenshot() {
const u64 title_id = system->GetApplicationProcessProgramID(); const u64 title_id = system->GetApplicationProcessProgramID();
const auto screenshot_path = const auto screenshot_path =
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::ScreenshotsDir)); QString::fromStdString(Common::FS::GetCitronPathString(Common::FS::CitronPath::ScreenshotsDir));
const auto date = const auto date =
QDateTime::currentDateTime().toString(QStringLiteral("yyyy-MM-dd_hh-mm-ss-zzz")); QDateTime::currentDateTime().toString(QStringLiteral("yyyy-MM-dd_hh-mm-ss-zzz"));
QString filename = QStringLiteral("%1/%2_%3.png") QString filename = QStringLiteral("%1/%2_%3.png")
@@ -4517,7 +4517,7 @@ void GMainWindow::OnCaptureScreenshot() {
// TODO: Written 2020-10-01: Remove per-game config migration code when it is irrelevant // TODO: Written 2020-10-01: Remove per-game config migration code when it is irrelevant
void GMainWindow::MigrateConfigFiles() { void GMainWindow::MigrateConfigFiles() {
const auto config_dir_fs_path = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir); const auto config_dir_fs_path = Common::FS::GetCitronPath(Common::FS::CitronPath::ConfigDir);
const QDir config_dir = const QDir config_dir =
QDir(QString::fromStdString(Common::FS::PathToUTF8String(config_dir_fs_path))); QDir(QString::fromStdString(Common::FS::PathToUTF8String(config_dir_fs_path)));
const QStringList config_dir_list = config_dir.entryList(QStringList(QStringLiteral("*.ini"))); const QStringList config_dir_list = config_dir.entryList(QStringList(QStringLiteral("*.ini")));

View File

@@ -377,7 +377,7 @@ private slots:
void OnToggleAdaptingFilter(); void OnToggleAdaptingFilter();
void OnConfigurePerGame(); void OnConfigurePerGame();
void OnLoadAmiibo(); void OnLoadAmiibo();
void OnOpenYuzuFolder(); void OnOpenCitronFolder();
void OnVerifyInstalledContents(); void OnVerifyInstalledContents();
void OnInstallFirmware(); void OnInstallFirmware();
void OnInstallDecryptionKeys(); void OnInstallDecryptionKeys();

View File

@@ -26,7 +26,7 @@ std::optional<std::filesystem::path> GetCurrentUserPlayTimePath(
if (!uuid.has_value()) { if (!uuid.has_value()) {
return std::nullopt; return std::nullopt;
} }
return Common::FS::GetYuzuPath(Common::FS::YuzuPath::PlayTimeDir) / return Common::FS::GetCitronPath(Common::FS::CitronPath::PlayTimeDir) /
uuid->RawString().append(".bin"); uuid->RawString().append(".bin");
} }

View File

@@ -57,7 +57,7 @@ u32 CalculateWidth(u32 height, Settings::AspectRatio ratio) {
void SaveWindowState() { void SaveWindowState() {
const auto window_state_config_loc = const auto window_state_config_loc =
FS::PathToUTF8String(FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "window_state.ini"); FS::PathToUTF8String(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "window_state.ini");
void(FS::CreateParentDir(window_state_config_loc)); void(FS::CreateParentDir(window_state_config_loc));
QSettings config(QString::fromStdString(window_state_config_loc), QSettings::IniFormat); QSettings config(QString::fromStdString(window_state_config_loc), QSettings::IniFormat);
@@ -73,12 +73,12 @@ void SaveWindowState() {
void RestoreWindowState(std::unique_ptr<QtConfig>& qtConfig) { void RestoreWindowState(std::unique_ptr<QtConfig>& qtConfig) {
const auto window_state_config_loc = const auto window_state_config_loc =
FS::PathToUTF8String(FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "window_state.ini"); FS::PathToUTF8String(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "window_state.ini");
// Migrate window state from old location // Migrate window state from old location
if (!FS::Exists(window_state_config_loc) && qtConfig->Exists("UI", "UILayout\\geometry")) { if (!FS::Exists(window_state_config_loc) && qtConfig->Exists("UI", "UILayout\\geometry")) {
const auto config_loc = const auto config_loc =
FS::PathToUTF8String(FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "qt-config.ini"); FS::PathToUTF8String(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "qt-config.ini");
QSettings config(QString::fromStdString(config_loc), QSettings::IniFormat); QSettings config(QString::fromStdString(config_loc), QSettings::IniFormat);
config.beginGroup(QStringLiteral("UI")); config.beginGroup(QStringLiteral("UI"));

View File

@@ -54,7 +54,7 @@ if(WIN32)
endif() endif()
if (MSVC) if (MSVC)
include(CopyYuzuSDLDeps) include(CopyCitronSDLDeps)
copy_citron_SDL_deps(citron-cmd) copy_citron_SDL_deps(citron-cmd)
endif() endif()

View File

@@ -356,35 +356,35 @@ jfieldID GetPlayerInputUseSystemVibratorField() {
return s_player_input_use_system_vibrator_field; return s_player_input_use_system_vibrator_field;
} }
jclass GetYuzuInputDeviceInterface() { jclass GetCitronInputDeviceInterface() {
return s_citron_input_device_interface; return s_citron_input_device_interface;
} }
jmethodID GetYuzuDeviceGetName() { jmethodID GetCitronDeviceGetName() {
return s_citron_input_device_get_name; return s_citron_input_device_get_name;
} }
jmethodID GetYuzuDeviceGetGUID() { jmethodID GetCitronDeviceGetGUID() {
return s_citron_input_device_get_guid; return s_citron_input_device_get_guid;
} }
jmethodID GetYuzuDeviceGetPort() { jmethodID GetCitronDeviceGetPort() {
return s_citron_input_device_get_port; return s_citron_input_device_get_port;
} }
jmethodID GetYuzuDeviceGetSupportsVibration() { jmethodID GetCitronDeviceGetSupportsVibration() {
return s_citron_input_device_get_supports_vibration; return s_citron_input_device_get_supports_vibration;
} }
jmethodID GetYuzuDeviceVibrate() { jmethodID GetCitronDeviceVibrate() {
return s_citron_input_device_vibrate; return s_citron_input_device_vibrate;
} }
jmethodID GetYuzuDeviceGetAxes() { jmethodID GetCitronDeviceGetAxes() {
return s_citron_input_device_get_axes; return s_citron_input_device_get_axes;
} }
jmethodID GetYuzuDeviceHasKeys() { jmethodID GetCitronDeviceHasKeys() {
return s_citron_input_device_has_keys; return s_citron_input_device_has_keys;
} }
@@ -531,7 +531,7 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) {
env->DeleteLocalRef(player_input_class); env->DeleteLocalRef(player_input_class);
const jclass citron_input_device_interface = const jclass citron_input_device_interface =
env->FindClass("org/citron/citron_emu/features/input/YuzuInputDevice"); env->FindClass("org/citron/citron_emu/features/input/CitronInputDevice");
s_citron_input_device_interface = s_citron_input_device_interface =
reinterpret_cast<jclass>(env->NewGlobalRef(citron_input_device_interface)); reinterpret_cast<jclass>(env->NewGlobalRef(citron_input_device_interface));
s_citron_input_device_get_name = s_citron_input_device_get_name =

View File

@@ -100,13 +100,13 @@ jfieldID GetPlayerInputButtonColorRightField();
jfieldID GetPlayerInputProfileNameField(); jfieldID GetPlayerInputProfileNameField();
jfieldID GetPlayerInputUseSystemVibratorField(); jfieldID GetPlayerInputUseSystemVibratorField();
jclass GetYuzuInputDeviceInterface(); jclass GetCitronInputDeviceInterface();
jmethodID GetYuzuDeviceGetName(); jmethodID GetCitronDeviceGetName();
jmethodID GetYuzuDeviceGetGUID(); jmethodID GetCitronDeviceGetGUID();
jmethodID GetYuzuDeviceGetPort(); jmethodID GetCitronDeviceGetPort();
jmethodID GetYuzuDeviceGetSupportsVibration(); jmethodID GetCitronDeviceGetSupportsVibration();
jmethodID GetYuzuDeviceVibrate(); jmethodID GetCitronDeviceVibrate();
jmethodID GetYuzuDeviceGetAxes(); jmethodID GetCitronDeviceGetAxes();
jmethodID GetYuzuDeviceHasKeys(); jmethodID GetCitronDeviceHasKeys();
} // namespace Common::Android } // namespace Common::Android

View File

@@ -56,10 +56,10 @@ namespace fs = std::filesystem;
/** /**
* The PathManagerImpl is a singleton allowing to manage the mapping of * The PathManagerImpl is a singleton allowing to manage the mapping of
* YuzuPath enums to real filesystem paths. * CitronPath enums to real filesystem paths.
* This class provides 2 functions: GetYuzuPathImpl and SetYuzuPathImpl. * This class provides 2 functions: GetCitronPathImpl and SetCitronPathImpl.
* These are used by GetYuzuPath and SetYuzuPath respectively to get or modify * These are used by GetCitronPath and SetCitronPath respectively to get or modify
* the path mapped by the YuzuPath enum. * the path mapped by the CitronPath enum.
*/ */
class PathManagerImpl { class PathManagerImpl {
public: public:
@@ -75,11 +75,11 @@ public:
PathManagerImpl(PathManagerImpl&&) = delete; PathManagerImpl(PathManagerImpl&&) = delete;
PathManagerImpl& operator=(PathManagerImpl&&) = delete; PathManagerImpl& operator=(PathManagerImpl&&) = delete;
[[nodiscard]] const fs::path& GetYuzuPathImpl(YuzuPath citron_path) { [[nodiscard]] const fs::path& GetCitronPathImpl(CitronPath citron_path) {
return citron_paths.at(citron_path); return citron_paths.at(citron_path);
} }
void SetYuzuPathImpl(YuzuPath citron_path, const fs::path& new_path) { void SetCitronPathImpl(CitronPath citron_path, const fs::path& new_path) {
citron_paths.insert_or_assign(citron_path, new_path); citron_paths.insert_or_assign(citron_path, new_path);
} }
@@ -115,22 +115,22 @@ public:
} }
#endif #endif
GenerateYuzuPath(YuzuPath::YuzuDir, citron_path); GenerateCitronPath(CitronPath::CitronDir, citron_path);
GenerateYuzuPath(YuzuPath::AmiiboDir, citron_path / AMIIBO_DIR); GenerateCitronPath(CitronPath::AmiiboDir, citron_path / AMIIBO_DIR);
GenerateYuzuPath(YuzuPath::CacheDir, citron_path_cache); GenerateCitronPath(CitronPath::CacheDir, citron_path_cache);
GenerateYuzuPath(YuzuPath::ConfigDir, citron_path_config); GenerateCitronPath(CitronPath::ConfigDir, citron_path_config);
GenerateYuzuPath(YuzuPath::CrashDumpsDir, citron_path / CRASH_DUMPS_DIR); GenerateCitronPath(CitronPath::CrashDumpsDir, citron_path / CRASH_DUMPS_DIR);
GenerateYuzuPath(YuzuPath::DumpDir, citron_path / DUMP_DIR); GenerateCitronPath(CitronPath::DumpDir, citron_path / DUMP_DIR);
GenerateYuzuPath(YuzuPath::KeysDir, citron_path / KEYS_DIR); GenerateCitronPath(CitronPath::KeysDir, citron_path / KEYS_DIR);
GenerateYuzuPath(YuzuPath::LoadDir, citron_path / LOAD_DIR); GenerateCitronPath(CitronPath::LoadDir, citron_path / LOAD_DIR);
GenerateYuzuPath(YuzuPath::LogDir, citron_path / LOG_DIR); GenerateCitronPath(CitronPath::LogDir, citron_path / LOG_DIR);
GenerateYuzuPath(YuzuPath::NANDDir, citron_path / NAND_DIR); GenerateCitronPath(CitronPath::NANDDir, citron_path / NAND_DIR);
GenerateYuzuPath(YuzuPath::PlayTimeDir, citron_path / PLAY_TIME_DIR); GenerateCitronPath(CitronPath::PlayTimeDir, citron_path / PLAY_TIME_DIR);
GenerateYuzuPath(YuzuPath::ScreenshotsDir, citron_path / SCREENSHOTS_DIR); GenerateCitronPath(CitronPath::ScreenshotsDir, citron_path / SCREENSHOTS_DIR);
GenerateYuzuPath(YuzuPath::SDMCDir, citron_path / SDMC_DIR); GenerateCitronPath(CitronPath::SDMCDir, citron_path / SDMC_DIR);
GenerateYuzuPath(YuzuPath::ShaderDir, citron_path / SHADER_DIR); GenerateCitronPath(CitronPath::ShaderDir, citron_path / SHADER_DIR);
GenerateYuzuPath(YuzuPath::TASDir, citron_path / TAS_DIR); GenerateCitronPath(CitronPath::TASDir, citron_path / TAS_DIR);
GenerateYuzuPath(YuzuPath::IconsDir, citron_path / ICONS_DIR); GenerateCitronPath(CitronPath::IconsDir, citron_path / ICONS_DIR);
} }
private: private:
@@ -140,13 +140,13 @@ private:
~PathManagerImpl() = default; ~PathManagerImpl() = default;
void GenerateYuzuPath(YuzuPath citron_path, const fs::path& new_path) { void GenerateCitronPath(CitronPath citron_path, const fs::path& new_path) {
void(FS::CreateDir(new_path)); void(FS::CreateDir(new_path));
SetYuzuPathImpl(citron_path, new_path); SetCitronPathImpl(citron_path, new_path);
} }
std::unordered_map<YuzuPath, fs::path> citron_paths; std::unordered_map<CitronPath, fs::path> citron_paths;
}; };
bool ValidatePath(const fs::path& path) { bool ValidatePath(const fs::path& path) {
@@ -230,22 +230,22 @@ void SetAppDirectory(const std::string& app_directory) {
PathManagerImpl::GetInstance().Reinitialize(app_directory); PathManagerImpl::GetInstance().Reinitialize(app_directory);
} }
const fs::path& GetYuzuPath(YuzuPath citron_path) { const fs::path& GetCitronPath(CitronPath citron_path) {
return PathManagerImpl::GetInstance().GetYuzuPathImpl(citron_path); return PathManagerImpl::GetInstance().GetCitronPathImpl(citron_path);
} }
std::string GetYuzuPathString(YuzuPath citron_path) { std::string GetCitronPathString(CitronPath citron_path) {
return PathToUTF8String(GetYuzuPath(citron_path)); return PathToUTF8String(GetCitronPath(citron_path));
} }
void SetYuzuPath(YuzuPath citron_path, const fs::path& new_path) { void SetCitronPath(CitronPath citron_path, const fs::path& new_path) {
if (!FS::IsDir(new_path)) { if (!FS::IsDir(new_path)) {
LOG_ERROR(Common_Filesystem, "Filesystem object at new_path={} is not a directory", LOG_ERROR(Common_Filesystem, "Filesystem object at new_path={} is not a directory",
PathToUTF8String(new_path)); PathToUTF8String(new_path));
return; return;
} }
PathManagerImpl::GetInstance().SetYuzuPathImpl(citron_path, new_path); PathManagerImpl::GetInstance().SetCitronPathImpl(citron_path, new_path);
} }
#ifdef _WIN32 #ifdef _WIN32

View File

@@ -10,8 +10,8 @@
namespace Common::FS { namespace Common::FS {
enum class YuzuPath { enum class CitronPath {
YuzuDir, // Where citron stores its data. CitronDir, // Where citron stores its data.
AmiiboDir, // Where Amiibo backups are stored. AmiiboDir, // Where Amiibo backups are stored.
CacheDir, // Where cached filesystem data is stored. CacheDir, // Where cached filesystem data is stored.
ConfigDir, // Where config files are stored. ConfigDir, // Where config files are stored.
@@ -193,39 +193,39 @@ template <typename Path>
void SetAppDirectory(const std::string& app_directory); void SetAppDirectory(const std::string& app_directory);
/** /**
* Gets the filesystem path associated with the YuzuPath enum. * Gets the filesystem path associated with the CitronPath enum.
* *
* @param citron_path YuzuPath enum * @param citron_path CitronPath enum
* *
* @returns The filesystem path associated with the YuzuPath enum. * @returns The filesystem path associated with the CitronPath enum.
*/ */
[[nodiscard]] const std::filesystem::path& GetYuzuPath(YuzuPath citron_path); [[nodiscard]] const std::filesystem::path& GetCitronPath(CitronPath citron_path);
/** /**
* Gets the filesystem path associated with the YuzuPath enum as a UTF-8 encoded std::string. * Gets the filesystem path associated with the CitronPath enum as a UTF-8 encoded std::string.
* *
* @param citron_path YuzuPath enum * @param citron_path CitronPath enum
* *
* @returns The filesystem path associated with the YuzuPath enum as a UTF-8 encoded std::string. * @returns The filesystem path associated with the CitronPath enum as a UTF-8 encoded std::string.
*/ */
[[nodiscard]] std::string GetYuzuPathString(YuzuPath citron_path); [[nodiscard]] std::string GetCitronPathString(CitronPath citron_path);
/** /**
* Sets a new filesystem path associated with the YuzuPath enum. * Sets a new filesystem path associated with the CitronPath enum.
* If the filesystem object at new_path is not a directory, this function will not do anything. * If the filesystem object at new_path is not a directory, this function will not do anything.
* *
* @param citron_path YuzuPath enum * @param citron_path CitronPath enum
* @param new_path New filesystem path * @param new_path New filesystem path
*/ */
void SetYuzuPath(YuzuPath citron_path, const std::filesystem::path& new_path); void SetCitronPath(CitronPath citron_path, const std::filesystem::path& new_path);
#ifdef _WIN32 #ifdef _WIN32
template <typename Path> template <typename Path>
void SetYuzuPath(YuzuPath citron_path, const Path& new_path) { void SetCitronPath(CitronPath citron_path, const Path& new_path) {
if constexpr (IsChar<typename Path::value_type>) { if constexpr (IsChar<typename Path::value_type>) {
SetYuzuPath(citron_path, ToU8String(new_path)); SetCitronPath(citron_path, ToU8String(new_path));
} else { } else {
SetYuzuPath(citron_path, std::filesystem::path{new_path}); SetCitronPath(citron_path, std::filesystem::path{new_path});
} }
} }
#endif #endif
@@ -288,11 +288,11 @@ enum class DirectorySeparator {
}; };
// Splits the path on '/' or '\' and put the components into a vector // Splits the path on '/' or '\' and put the components into a vector
// i.e. "C:\Users\Yuzu\Documents\save.bin" becomes {"C:", "Users", "Yuzu", "Documents", "save.bin" } // i.e. "C:\Users\Citron\Documents\save.bin" becomes {"C:", "Users", "Citron", "Documents", "save.bin" }
[[nodiscard]] std::vector<std::string_view> SplitPathComponents(std::string_view filename); [[nodiscard]] std::vector<std::string_view> SplitPathComponents(std::string_view filename);
// Splits the path on '/' or '\' and put the components into a vector // Splits the path on '/' or '\' and put the components into a vector
// i.e. "C:\Users\Yuzu\Documents\save.bin" becomes {"C:", "Users", "Yuzu", "Documents", "save.bin" } // i.e. "C:\Users\Citron\Documents\save.bin" becomes {"C:", "Users", "Citron", "Documents", "save.bin" }
[[nodiscard]] std::vector<std::string> SplitPathComponentsCopy(std::string_view filename); [[nodiscard]] std::vector<std::string> SplitPathComponentsCopy(std::string_view filename);
// Removes trailing slash, makes all '\\' into '/', and removes duplicate '/'. Makes '/' into '\\' // Removes trailing slash, makes all '\\' into '/', and removes duplicate '/'. Makes '/' into '\\'

View File

@@ -195,7 +195,7 @@ public:
return; return;
} }
using namespace Common::FS; using namespace Common::FS;
const auto& log_dir = GetYuzuPath(YuzuPath::LogDir); const auto& log_dir = GetCitronPath(CitronPath::LogDir);
void(CreateDir(log_dir)); void(CreateDir(log_dir));
Filter filter; Filter filter;
filter.ParseFilterString(Settings::values.log_filter.GetValue()); filter.ParseFilterString(Settings::values.log_filter.GetValue());

View File

@@ -138,7 +138,7 @@ void PrintMessageToLogcat(const Entry& entry) {
case Level::Count: case Level::Count:
UNREACHABLE(); UNREACHABLE();
} }
__android_log_print(android_log_priority, "YuzuNative", "%s", str.c_str()); __android_log_print(android_log_priority, "CitronNative", "%s", str.c_str());
#endif #endif
} }
} // namespace Common::Log } // namespace Common::Log

View File

@@ -14,7 +14,7 @@ namespace Common {
void ConfigureNvidiaEnvironmentFlags() { void ConfigureNvidiaEnvironmentFlags() {
#ifdef _WIN32 #ifdef _WIN32
const auto nvidia_shader_dir = const auto nvidia_shader_dir =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::ShaderDir) / "nvidia"; Common::FS::GetCitronPath(Common::FS::CitronPath::ShaderDir) / "nvidia";
if (!Common::FS::CreateDirs(nvidia_shader_dir)) { if (!Common::FS::CreateDirs(nvidia_shader_dir)) {
return; return;

View File

@@ -130,11 +130,11 @@ void LogSettings() {
log_setting(name, setting->Canonicalize()); log_setting(name, setting->Canonicalize());
} }
} }
log_path("DataStorage_CacheDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir)); log_path("DataStorage_CacheDir", Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir));
log_path("DataStorage_ConfigDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir)); log_path("DataStorage_ConfigDir", Common::FS::GetCitronPath(Common::FS::CitronPath::ConfigDir));
log_path("DataStorage_LoadDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::LoadDir)); log_path("DataStorage_LoadDir", Common::FS::GetCitronPath(Common::FS::CitronPath::LoadDir));
log_path("DataStorage_NANDDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir)); log_path("DataStorage_NANDDir", Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir));
log_path("DataStorage_SDMCDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::SDMCDir)); log_path("DataStorage_SDMCDir", Common::FS::GetCitronPath(Common::FS::CitronPath::SDMCDir));
} }
void UpdateGPUAccuracy() { void UpdateGPUAccuracy() {

View File

@@ -372,7 +372,7 @@ Key128 DeriveKeyblobMACKey(const Key128& keyblob_key, const Key128& mac_source)
std::optional<Key128> DeriveSDSeed() { std::optional<Key128> DeriveSDSeed() {
const auto system_save_43_path = const auto system_save_43_path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/8000000000000043"; Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir) / "system/save/8000000000000043";
const Common::FS::IOFile save_43{system_save_43_path, Common::FS::FileAccessMode::Read, const Common::FS::IOFile save_43{system_save_43_path, Common::FS::FileAccessMode::Read,
Common::FS::FileType::BinaryFile}; Common::FS::FileType::BinaryFile};
@@ -381,7 +381,7 @@ std::optional<Key128> DeriveSDSeed() {
} }
const auto sd_private_path = const auto sd_private_path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::SDMCDir) / "Nintendo/Contents/private"; Common::FS::GetCitronPath(Common::FS::CitronPath::SDMCDir) / "Nintendo/Contents/private";
const Common::FS::IOFile sd_private{sd_private_path, Common::FS::FileAccessMode::Read, const Common::FS::IOFile sd_private{sd_private_path, Common::FS::FileAccessMode::Read,
Common::FS::FileType::BinaryFile}; Common::FS::FileType::BinaryFile};
@@ -640,7 +640,7 @@ KeyManager::KeyManager() {
void KeyManager::ReloadKeys() { void KeyManager::ReloadKeys() {
// Initialize keys // Initialize keys
const auto citron_keys_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::KeysDir); const auto citron_keys_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::KeysDir);
if (!Common::FS::CreateDir(citron_keys_dir)) { if (!Common::FS::CreateDir(citron_keys_dir)) {
LOG_ERROR(Core, "Failed to create the keys directory."); LOG_ERROR(Core, "Failed to create the keys directory.");
@@ -847,7 +847,7 @@ Key256 KeyManager::GetBISKey(u8 partition_id) const {
template <size_t Size> template <size_t Size>
void KeyManager::WriteKeyToFile(KeyCategory category, std::string_view keyname, void KeyManager::WriteKeyToFile(KeyCategory category, std::string_view keyname,
const std::array<u8, Size>& key) { const std::array<u8, Size>& key) {
const auto citron_keys_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::KeysDir); const auto citron_keys_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::KeysDir);
std::string filename = "title.keys_autogenerated"; std::string filename = "title.keys_autogenerated";
@@ -869,7 +869,7 @@ void KeyManager::WriteKeyToFile(KeyCategory category, std::string_view keyname,
if (add_info_text) { if (add_info_text) {
void(file.WriteString( void(file.WriteString(
"# This file is autogenerated by Yuzu\n" "# This file is autogenerated by Citron\n"
"# It serves to store keys that were automatically generated from the normal keys\n" "# It serves to store keys that were automatically generated from the normal keys\n"
"# If you are experiencing issues involving keys, it may help to delete this file\n")); "# If you are experiencing issues involving keys, it may help to delete this file\n"));
} }
@@ -947,7 +947,7 @@ void KeyManager::SetKey(S256KeyType id, Key256 key, u64 field1, u64 field2) {
} }
bool KeyManager::KeyFileExists(bool title) { bool KeyManager::KeyFileExists(bool title) {
const auto citron_keys_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::KeysDir); const auto citron_keys_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::KeysDir);
if (title) { if (title) {
return Common::FS::Exists(citron_keys_dir / "title.keys"); return Common::FS::Exists(citron_keys_dir / "title.keys");
@@ -1197,7 +1197,7 @@ void KeyManager::PopulateTickets() {
std::vector<Ticket> tickets; std::vector<Ticket> tickets;
const auto system_save_e1_path = const auto system_save_e1_path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/80000000000000e1"; Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir) / "system/save/80000000000000e1";
if (Common::FS::Exists(system_save_e1_path)) { if (Common::FS::Exists(system_save_e1_path)) {
const Common::FS::IOFile save_e1{system_save_e1_path, Common::FS::FileAccessMode::Read, const Common::FS::IOFile save_e1{system_save_e1_path, Common::FS::FileAccessMode::Read,
Common::FS::FileType::BinaryFile}; Common::FS::FileType::BinaryFile};
@@ -1206,7 +1206,7 @@ void KeyManager::PopulateTickets() {
} }
const auto system_save_e2_path = const auto system_save_e2_path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / "system/save/80000000000000e2"; Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir) / "system/save/80000000000000e2";
if (Common::FS::Exists(system_save_e2_path)) { if (Common::FS::Exists(system_save_e2_path)) {
const Common::FS::IOFile save_e2{system_save_e2_path, Common::FS::FileAccessMode::Read, const Common::FS::IOFile save_e2{system_save_e2_path, Common::FS::FileAccessMode::Read,
Common::FS::FileType::BinaryFile}; Common::FS::FileType::BinaryFile};

View File

@@ -83,7 +83,7 @@ VirtualFile BISFactory::OpenPartitionStorage(BisPartitionId id,
VirtualFilesystem file_system) const { VirtualFilesystem file_system) const {
auto& keys = Core::Crypto::KeyManager::Instance(); auto& keys = Core::Crypto::KeyManager::Instance();
Core::Crypto::PartitionDataManager pdm{file_system->OpenDirectory( Core::Crypto::PartitionDataManager pdm{file_system->OpenDirectory(
Common::FS::GetYuzuPathString(Common::FS::YuzuPath::NANDDir), OpenMode::Read)}; Common::FS::GetCitronPathString(Common::FS::CitronPath::NANDDir), OpenMode::Read)};
keys.PopulateFromPartitionData(pdm); keys.PopulateFromPartitionData(pdm);
switch (id) { switch (id) {

View File

@@ -437,7 +437,7 @@ void RegisteredCache::ProcessFiles(const std::vector<NcaID>& ids) {
} }
} }
void RegisteredCache::AccumulateYuzuMeta() { void RegisteredCache::AccumulateCitronMeta() {
const auto meta_dir = dir->GetSubdirectory("citron_meta"); const auto meta_dir = dir->GetSubdirectory("citron_meta");
if (meta_dir == nullptr) { if (meta_dir == nullptr) {
return; return;
@@ -460,7 +460,7 @@ void RegisteredCache::Refresh() {
const auto ids = AccumulateFiles(); const auto ids = AccumulateFiles();
ProcessFiles(ids); ProcessFiles(ids);
AccumulateYuzuMeta(); AccumulateCitronMeta();
} }
RegisteredCache::RegisteredCache(VirtualDir dir_, ContentProviderParsingFunction parsing_function) RegisteredCache::RegisteredCache(VirtualDir dir_, ContentProviderParsingFunction parsing_function)
@@ -668,7 +668,7 @@ InstallResult RegisteredCache::InstallEntry(const NCA& nca, TitleType type,
mbedtls_sha256_ret(data.data(), data.size(), c_rec.hash.data(), 0); mbedtls_sha256_ret(data.data(), data.size(), c_rec.hash.data(), 0);
std::memcpy(&c_rec.nca_id, &c_rec.hash, 16); std::memcpy(&c_rec.nca_id, &c_rec.hash, 16);
const CNMT new_cnmt(header, opt_header, {c_rec}, {}); const CNMT new_cnmt(header, opt_header, {c_rec}, {});
if (!RawInstallYuzuMeta(new_cnmt)) { if (!RawInstallCitronMeta(new_cnmt)) {
return InstallResult::ErrorMetaFailed; return InstallResult::ErrorMetaFailed;
} }
return RawInstallNCA(nca, copy, overwrite_if_exists, c_rec.nca_id); return RawInstallNCA(nca, copy, overwrite_if_exists, c_rec.nca_id);
@@ -693,7 +693,7 @@ InstallResult RegisteredCache::InstallEntry(const NCA& nca, const CNMTHeader& ba
}; };
const OptionalHeader opt_header{0, 0}; const OptionalHeader opt_header{0, 0};
const CNMT new_cnmt(header, opt_header, {base_record}, {}); const CNMT new_cnmt(header, opt_header, {base_record}, {});
if (!RawInstallYuzuMeta(new_cnmt)) { if (!RawInstallCitronMeta(new_cnmt)) {
return InstallResult::ErrorMetaFailed; return InstallResult::ErrorMetaFailed;
} }
return RawInstallNCA(nca, copy, overwrite_if_exists, base_record.nca_id); return RawInstallNCA(nca, copy, overwrite_if_exists, base_record.nca_id);
@@ -802,7 +802,7 @@ InstallResult RegisteredCache::RawInstallNCA(const NCA& nca, const VfsCopyFuncti
: InstallResult::ErrorCopyFailed; : InstallResult::ErrorCopyFailed;
} }
bool RegisteredCache::RawInstallYuzuMeta(const CNMT& cnmt) { bool RegisteredCache::RawInstallCitronMeta(const CNMT& cnmt) {
// Reasoning behind this method can be found in the comment for InstallEntry, NCA overload. // Reasoning behind this method can be found in the comment for InstallEntry, NCA overload.
const auto meta_dir = dir->CreateDirectoryRelative("citron_meta"); const auto meta_dir = dir->CreateDirectoryRelative("citron_meta");
const auto filename = GetCNMTName(cnmt.GetType(), cnmt.GetTitleID()); const auto filename = GetCNMTName(cnmt.GetType(), cnmt.GetTitleID());

View File

@@ -184,13 +184,13 @@ private:
std::function<bool(const CNMT&, const ContentRecord&)> filter) const; std::function<bool(const CNMT&, const ContentRecord&)> filter) const;
std::vector<NcaID> AccumulateFiles() const; std::vector<NcaID> AccumulateFiles() const;
void ProcessFiles(const std::vector<NcaID>& ids); void ProcessFiles(const std::vector<NcaID>& ids);
void AccumulateYuzuMeta(); void AccumulateCitronMeta();
std::optional<NcaID> GetNcaIDFromMetadata(u64 title_id, ContentRecordType type) const; std::optional<NcaID> GetNcaIDFromMetadata(u64 title_id, ContentRecordType type) const;
VirtualFile GetFileAtID(NcaID id) const; VirtualFile GetFileAtID(NcaID id) const;
VirtualFile OpenFileOrDirectoryConcat(const VirtualDir& open_dir, std::string_view path) const; VirtualFile OpenFileOrDirectoryConcat(const VirtualDir& open_dir, std::string_view path) const;
InstallResult RawInstallNCA(const NCA& nca, const VfsCopyFunction& copy, InstallResult RawInstallNCA(const NCA& nca, const VfsCopyFunction& copy,
bool overwrite_if_exists, std::optional<NcaID> override_id = {}); bool overwrite_if_exists, std::optional<NcaID> override_id = {});
bool RawInstallYuzuMeta(const CNMT& cnmt); bool RawInstallCitronMeta(const CNMT& cnmt);
VirtualDir dir; VirtualDir dir;
ContentProviderParsingFunction parser; ContentProviderParsingFunction parser;

View File

@@ -36,7 +36,7 @@ namespace Service::Account {
constexpr std::size_t THUMBNAIL_SIZE = 0x24000; constexpr std::size_t THUMBNAIL_SIZE = 0x24000;
static std::filesystem::path GetImagePath(const Common::UUID& uuid) { static std::filesystem::path GetImagePath(const Common::UUID& uuid) {
return Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) / return Common::FS::GetCitronPath(Common::FS::CitronPath::NANDDir) /
fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString()); fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
} }
@@ -833,7 +833,7 @@ Result Module::Interface::InitializeApplicationInfoBase() {
case FileSys::StorageId::Host: case FileSys::StorageId::Host:
case FileSys::StorageId::NandUser: case FileSys::StorageId::NandUser:
case FileSys::StorageId::SdCard: case FileSys::StorageId::SdCard:
case FileSys::StorageId::None: // Yuzu specific, differs from hardware case FileSys::StorageId::None: // Citron specific, differs from hardware
application_info.application_type = ApplicationType::Digital; application_info.application_type = ApplicationType::Digital;
break; break;
default: default:

View File

@@ -377,7 +377,7 @@ bool ProfileManager::SetProfileBaseAndData(Common::UUID uuid, const ProfileBase&
} }
void ProfileManager::ParseUserSaveFile() { void ProfileManager::ParseUserSaveFile() {
const auto save_path(FS::GetYuzuPath(FS::YuzuPath::NANDDir) / ACC_SAVE_AVATORS_BASE_PATH / const auto save_path(FS::GetCitronPath(FS::CitronPath::NANDDir) / ACC_SAVE_AVATORS_BASE_PATH /
"profiles.dat"); "profiles.dat");
const FS::IOFile save(save_path, FS::FileAccessMode::Read, FS::FileType::BinaryFile); const FS::IOFile save(save_path, FS::FileAccessMode::Read, FS::FileType::BinaryFile);
@@ -429,12 +429,12 @@ void ProfileManager::WriteUserSaveFile() {
}; };
} }
const auto raw_path(FS::GetYuzuPath(FS::YuzuPath::NANDDir) / "system/save/8000000000000010"); const auto raw_path(FS::GetCitronPath(FS::CitronPath::NANDDir) / "system/save/8000000000000010");
if (FS::IsFile(raw_path) && !FS::RemoveFile(raw_path)) { if (FS::IsFile(raw_path) && !FS::RemoveFile(raw_path)) {
return; return;
} }
const auto save_path(FS::GetYuzuPath(FS::YuzuPath::NANDDir) / ACC_SAVE_AVATORS_BASE_PATH / const auto save_path(FS::GetCitronPath(FS::CitronPath::NANDDir) / ACC_SAVE_AVATORS_BASE_PATH /
"profiles.dat"); "profiles.dat");
if (!FS::CreateParentDirs(save_path)) { if (!FS::CreateParentDirs(save_path)) {

View File

@@ -155,7 +155,7 @@ void ExtractSharedFonts(Core::System& system) {
"FontNintendoExtended2.ttf", "FontNintendoExtended2.ttf",
}; };
const auto fonts_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / "fonts"; const auto fonts_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) / "fonts";
for (std::size_t i = 0; i < NS::SHARED_FONTS.size(); ++i) { for (std::size_t i = 0; i < NS::SHARED_FONTS.size(); ++i) {
const auto font_file_path = fonts_dir / DECRYPTED_SHARED_FONTS[i]; const auto font_file_path = fonts_dir / DECRYPTED_SHARED_FONTS[i];
@@ -415,7 +415,7 @@ void WebBrowser::InitializeOffline() {
"system_data", "system_data",
}; };
offline_cache_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / offline_cache_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::CacheDir) /
fmt::format("offline_web_applet_{}/{:016X}", fmt::format("offline_web_applet_{}/{:016X}",
RESOURCE_TYPES[static_cast<u32>(document_kind) - 1], title_id); RESOURCE_TYPES[static_cast<u32>(document_kind) - 1], title_id);

View File

@@ -353,7 +353,7 @@ Result ISelfController::GetAccumulatedSuspendedTickValue(
LOG_DEBUG(Service_AM, "called."); LOG_DEBUG(Service_AM, "called.");
// This command returns the total number of system ticks since ISelfController creation // This command returns the total number of system ticks since ISelfController creation
// where the game was suspended. Since Yuzu doesn't implement game suspension, this command // where the game was suspended. Since Citron doesn't implement game suspension, this command
// can just always return 0 ticks. // can just always return 0 ticks.
std::scoped_lock lk{m_applet->lock}; std::scoped_lock lk{m_applet->lock};
*out_accumulated_suspended_tick_value = m_applet->suspended_ticks; *out_accumulated_suspended_tick_value = m_applet->suspended_ticks;

View File

@@ -303,7 +303,7 @@ void AlbumManager::FindScreenshots() {
album_files.clear(); album_files.clear();
// TODO: Swap this with a blocking operation. // TODO: Swap this with a blocking operation.
const auto screenshots_dir = Common::FS::GetYuzuPath(Common::FS::YuzuPath::ScreenshotsDir); const auto screenshots_dir = Common::FS::GetCitronPath(Common::FS::CitronPath::ScreenshotsDir);
Common::FS::IterateDirEntries( Common::FS::IterateDirEntries(
screenshots_dir, screenshots_dir,
[this](const std::filesystem::path& full_path) { [this](const std::filesystem::path& full_path) {
@@ -438,7 +438,7 @@ static void PNGToMemory(void* context, void* data, int len) {
Result AlbumManager::SaveImage(ApplicationAlbumEntry& out_entry, std::span<const u8> image, Result AlbumManager::SaveImage(ApplicationAlbumEntry& out_entry, std::span<const u8> image,
u64 title_id, const AlbumFileDateTime& date) const { u64 title_id, const AlbumFileDateTime& date) const {
const auto screenshot_path = const auto screenshot_path =
Common::FS::GetYuzuPathString(Common::FS::YuzuPath::ScreenshotsDir); Common::FS::GetCitronPathString(Common::FS::CitronPath::ScreenshotsDir);
const std::string formatted_date = const std::string formatted_date =
fmt::format("{:04}-{:02}-{:02}_{:02}-{:02}-{:02}-{:03}", date.year, date.month, date.day, fmt::format("{:04}-{:02}-{:02}_{:02}-{:02}-{:02}-{:03}", date.year, date.month, date.day,
date.hour, date.minute, date.second, 0); date.hour, date.minute, date.second, 0);

View File

@@ -66,7 +66,7 @@ enum class FatalType : u32 {
static void GenerateErrorReport(Core::System& system, Result error_code, const FatalInfo& info) { static void GenerateErrorReport(Core::System& system, Result error_code, const FatalInfo& info) {
const auto title_id = system.GetApplicationProcessProgramID(); const auto title_id = system.GetApplicationProcessProgramID();
std::string crash_report = fmt::format( std::string crash_report = fmt::format(
"Yuzu {}-{} crash report\n" "Citron {}-{} crash report\n"
"Title ID: {:016x}\n" "Title ID: {:016x}\n"
"Result: 0x{:X} ({:04}-{:04d})\n" "Result: 0x{:X} ({:04}-{:04d})\n"
"Set flags: 0x{:16X}\n" "Set flags: 0x{:16X}\n"

View File

@@ -346,12 +346,12 @@ std::shared_ptr<SaveDataController> FileSystemController::OpenSaveDataController
std::shared_ptr<FileSys::SaveDataFactory> FileSystemController::CreateSaveDataFactory( std::shared_ptr<FileSys::SaveDataFactory> FileSystemController::CreateSaveDataFactory(
ProgramId program_id) { ProgramId program_id) {
using YuzuPath = Common::FS::YuzuPath; using CitronPath = Common::FS::CitronPath;
const auto rw_mode = FileSys::OpenMode::ReadWrite; const auto rw_mode = FileSys::OpenMode::ReadWrite;
auto vfs = system.GetFilesystem(); auto vfs = system.GetFilesystem();
const auto nand_directory = const auto nand_directory =
vfs->OpenDirectory(Common::FS::GetYuzuPathString(YuzuPath::NANDDir), rw_mode); vfs->OpenDirectory(Common::FS::GetCitronPathString(CitronPath::NANDDir), rw_mode);
return std::make_shared<FileSys::SaveDataFactory>(system, program_id, return std::make_shared<FileSys::SaveDataFactory>(system, program_id,
std::move(nand_directory)); std::move(nand_directory));
} }
@@ -683,20 +683,20 @@ void FileSystemController::CreateFactories(FileSys::VfsFilesystem& vfs, bool ove
sdmc_factory = nullptr; sdmc_factory = nullptr;
} }
using YuzuPath = Common::FS::YuzuPath; using CitronPath = Common::FS::CitronPath;
const auto sdmc_dir_path = Common::FS::GetYuzuPath(YuzuPath::SDMCDir); const auto sdmc_dir_path = Common::FS::GetCitronPath(CitronPath::SDMCDir);
const auto sdmc_load_dir_path = sdmc_dir_path / "atmosphere/contents"; const auto sdmc_load_dir_path = sdmc_dir_path / "atmosphere/contents";
const auto rw_mode = FileSys::OpenMode::ReadWrite; const auto rw_mode = FileSys::OpenMode::ReadWrite;
auto nand_directory = auto nand_directory =
vfs.OpenDirectory(Common::FS::GetYuzuPathString(YuzuPath::NANDDir), rw_mode); vfs.OpenDirectory(Common::FS::GetCitronPathString(CitronPath::NANDDir), rw_mode);
auto sd_directory = vfs.OpenDirectory(Common::FS::PathToUTF8String(sdmc_dir_path), rw_mode); auto sd_directory = vfs.OpenDirectory(Common::FS::PathToUTF8String(sdmc_dir_path), rw_mode);
auto load_directory = vfs.OpenDirectory(Common::FS::GetYuzuPathString(YuzuPath::LoadDir), auto load_directory = vfs.OpenDirectory(Common::FS::GetCitronPathString(CitronPath::LoadDir),
FileSys::OpenMode::Read); FileSys::OpenMode::Read);
auto sd_load_directory = vfs.OpenDirectory(Common::FS::PathToUTF8String(sdmc_load_dir_path), auto sd_load_directory = vfs.OpenDirectory(Common::FS::PathToUTF8String(sdmc_load_dir_path),
FileSys::OpenMode::Read); FileSys::OpenMode::Read);
auto dump_directory = auto dump_directory =
vfs.OpenDirectory(Common::FS::GetYuzuPathString(YuzuPath::DumpDir), rw_mode); vfs.OpenDirectory(Common::FS::GetCitronPathString(CitronPath::DumpDir), rw_mode);
if (bis_factory == nullptr) { if (bis_factory == nullptr) {
bis_factory = std::make_unique<FileSys::BISFactory>( bis_factory = std::make_unique<FileSys::BISFactory>(

Some files were not shown because too many files have changed in this diff Show More