From 641ef1b887e7e5bf6eac24315cba87005b47a54c Mon Sep 17 00:00:00 2001 From: Exverge Date: Sun, 7 Apr 2024 15:54:44 -0400 Subject: [PATCH 01/28] Map methods in firmware 18.0.0 --- src/core/hle/service/acc/acc.cpp | 22 ++++++++-- src/core/hle/service/audio/audio_device.cpp | 11 ++++- .../hle/service/filesystem/fsp/fsp_srv.cpp | 3 +- src/core/hle/service/ldn/ldn.cpp | 2 + .../system_local_communication_service.cpp | 7 ++++ .../ldn/user_local_communication_service.cpp | 9 ++++- src/core/hle/service/npns/npns.cpp | 40 +++++++++++++++---- .../service/pctl/parental_control_service.cpp | 7 ++++ src/core/hle/service/ssl/ssl.cpp | 6 ++- 9 files changed, 92 insertions(+), 15 deletions(-) diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index 888b34336b..d0771996b7 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -102,6 +102,7 @@ public: {150, nullptr, "CreateAuthorizationRequest"}, {160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"}, {161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"}, + {180, nullptr, "GetRequestForNintendoAccountReauthentication"}, // 18.0.0+ }; // clang-format on @@ -135,6 +136,7 @@ public: {13, nullptr, "GetLinkedNintendoAccountId"}, {14, nullptr, "GetNickname"}, {15, nullptr, "GetProfileImage"}, + {16, nullptr, "GetProfileLargeImage"}, // 18.0.0+ {21, nullptr, "LoadIdTokenCache"}, {100, nullptr, "RegisterUser"}, // [1.0.0-3.0.2] RegisterAsync {101, nullptr, "RegisterUserWithUid"}, // [1.0.0-3.0.2] RegisterWithUidAsync @@ -176,10 +178,11 @@ public: {140, nullptr, "GetNetworkServiceLicenseCache"}, // 5.0.0+ {141, nullptr, "RefreshNetworkServiceLicenseCacheAsync"}, // 5.0.0+ {142, nullptr, "RefreshNetworkServiceLicenseCacheAsyncIfSecondsElapsed"}, // 5.0.0+ - {143, nullptr, "GetNetworkServiceLicenseCacheEx"}, + {143, nullptr, "GetNetworkServiceLicenseCacheEx"}, // 15.0.0+ {150, nullptr, "CreateAuthorizationRequest"}, - {160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"}, - {161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"}, + {160, nullptr, "RequiresUpdateNetworkServiceAccountIdTokenCache"}, // 16.0.0+ + {161, nullptr, "RequireReauthenticationOfNetworkServiceAccount"}, // 16.0.0+ + {180, nullptr, "GetRequestForNintendoAccountReauthentication"}, // 18.0.0+ {200, nullptr, "IsRegistered"}, {201, nullptr, "RegisterAsync"}, {202, nullptr, "UnregisterAsync"}, @@ -263,6 +266,7 @@ public: {101, nullptr, "GetLinkedNintendoAccountId"}, {102, nullptr, "GetNickname"}, {103, nullptr, "GetProfileImage"}, + {104, nullptr, "GetProfileLargeImage"}, // 18.0.0+ }; // clang-format on @@ -317,6 +321,9 @@ public: {1, &IProfileCommon::GetBase, "GetBase"}, {10, &IProfileCommon::GetImageSize, "GetImageSize"}, {11, &IProfileCommon::LoadImage, "LoadImage"}, + {20, &IProfileCommon::GetImageSize, "GetLargeImageSize"}, // 18.0.0+ + {21, &IProfileCommon::LoadImage, "LoadLargeImage"}, // 18.0.0+ + {30, nullptr, "GetImageId"}, // 18.0.0+ }; RegisterHandlers(functions); @@ -325,6 +332,7 @@ public: static const FunctionInfo editor_functions[] = { {100, &IProfileCommon::Store, "Store"}, {101, &IProfileCommon::StoreWithImage, "StoreWithImage"}, + {110, &IProfileCommon::StoreWithImage, "StoreWithLargeImage"}, // 18.0.0+ }; RegisterHandlers(editor_functions); @@ -530,6 +538,7 @@ public: {13, nullptr, "GetLinkedNintendoAccountId"}, {14, nullptr, "GetNickname"}, {15, nullptr, "GetProfileImage"}, + {16, nullptr, "GetProfileLargeImage"}, // 18.0.0+ {21, nullptr, "LoadIdTokenCache"}, // 3.0.0+ }; // clang-format on @@ -684,8 +693,15 @@ public: {101, nullptr, "GetLinkedNintendoAccountId"}, {102, nullptr, "GetNickname"}, {103, nullptr, "GetProfileImage"}, + {104, nullptr, "GetProfileLargeImage"}, // 18.0.0+ {110, nullptr, "RegisterUserAsync"}, {111, nullptr, "GetUid"}, + {200, nullptr, "ApplyResponseForUserCreationAsync"}, // 17.0.0+ + {205, nullptr, "SuspendAfterApplyResponse"}, // 17.0.0+ + {210, nullptr, "IsProfileAvailable"}, // 17.0.0+ + {220, nullptr, "RegisterUserAsyncWithoutProfile"}, // 17.0.0+ + {221, nullptr, "RegisterUserWithProfileAsync"}, // 17.0.0+ + {230, nullptr, "RegisterUserWithLargeImageProfileAsync"}, // 18.0.0+ }; // clang-format on diff --git a/src/core/hle/service/audio/audio_device.cpp b/src/core/hle/service/audio/audio_device.cpp index 438f3cccdf..d3b104f710 100644 --- a/src/core/hle/service/audio/audio_device.cpp +++ b/src/core/hle/service/audio/audio_device.cpp @@ -27,8 +27,15 @@ IAudioDevice::IAudioDevice(Core::System& system_, u64 applet_resource_user_id, u {10, D<&IAudioDevice::GetActiveAudioDeviceNameAuto>, "GetActiveAudioDeviceNameAuto"}, {11, D<&IAudioDevice::QueryAudioDeviceInputEvent>, "QueryAudioDeviceInputEvent"}, {12, D<&IAudioDevice::QueryAudioDeviceOutputEvent>, "QueryAudioDeviceOutputEvent"}, - {13, D<&IAudioDevice::GetActiveAudioDeviceName>, "GetActiveAudioOutputDeviceName"}, - {14, D<&IAudioDevice::ListAudioOutputDeviceName>, "ListAudioOutputDeviceName"}, + {13, D<&IAudioDevice::GetActiveAudioDeviceName>, + "GetActiveAudioOutputDeviceName"}, // 13.0.0+ + {14, D<&IAudioDevice::ListAudioOutputDeviceName>, "ListAudioOutputDeviceName"}, // 13.0.0+ + {15, nullptr, "AcquireAudioInputDeviceNotification"}, // 17.0.0+ + {16, nullptr, "ReleaseAudioInputDeviceNotification"}, // 17.0.0+ + {17, nullptr, "AcquireAudioOutputDeviceNotification"}, // 17.0.0+ + {18, nullptr, "ReleaseAudioOutputDeviceNotification"}, // 17.0.0+ + {19, nullptr, "SetAudioDeviceOutputVolumeAutoTuneEnabled"}, // 18.0.0+ + {20, nullptr, "IsAudioDeviceOutputVolumeAutoTuneEnabled"} // 18.0.0+ }; RegisterHandlers(functions); diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp index 2bc6361bb7..ed503d5d6a 100644 --- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp +++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp @@ -53,7 +53,7 @@ FSP_SRV::FSP_SRV(Core::System& system_) {1, D<&FSP_SRV::SetCurrentProcess>, "SetCurrentProcess"}, {2, nullptr, "OpenDataFileSystemByCurrentProcess"}, {7, D<&FSP_SRV::OpenFileSystemWithPatch>, "OpenFileSystemWithPatch"}, - {8, nullptr, "OpenFileSystemWithId"}, + {8, nullptr, "OpenFileSystemWithIdObsolete"}, // 16.0.0+, OpenFileSystemWithId 2.0.0-15.0.1 {9, nullptr, "OpenDataFileSystemByApplicationId"}, {11, nullptr, "OpenBisFileSystem"}, {12, nullptr, "OpenBisStorage"}, @@ -169,6 +169,7 @@ FSP_SRV::FSP_SRV(Core::System& system_) {1018, nullptr, "SetDebugOption"}, {1019, nullptr, "UnsetDebugOption"}, {1100, nullptr, "OverrideSaveDataTransferTokenSignVerificationKey"}, + {1101, nullptr, "OverrideSaveDataTransferKeyForTest"}, // 18.0.0+ {1110, nullptr, "CorruptSaveDataFileSystemBySaveDataSpaceId2"}, {1200, D<&FSP_SRV::OpenMultiCommitManager>, "OpenMultiCommitManager"}, {1300, nullptr, "OpenBisWiper"}, diff --git a/src/core/hle/service/ldn/ldn.cpp b/src/core/hle/service/ldn/ldn.cpp index f2d638c30e..1b0148fda0 100644 --- a/src/core/hle/service/ldn/ldn.cpp +++ b/src/core/hle/service/ldn/ldn.cpp @@ -40,6 +40,7 @@ public: // clang-format off static const FunctionInfo functions[] = { {0, C<&ISystemServiceCreator::CreateSystemLocalCommunicationService>, "CreateSystemLocalCommunicationService"}, + {1, nullptr, "CreateClientProcessMonitor"} // 18.0.0+ }; // clang-format on @@ -62,6 +63,7 @@ public: // clang-format off static const FunctionInfo functions[] = { {0, C<&IUserServiceCreator::CreateUserLocalCommunicationService>, "CreateUserLocalCommunicationService"}, + {1, nullptr, "CreateClientProcessMonitor"}, // 18.0.0+ }; // clang-format on diff --git a/src/core/hle/service/ldn/system_local_communication_service.cpp b/src/core/hle/service/ldn/system_local_communication_service.cpp index 7b52223cdc..fc283da4cf 100644 --- a/src/core/hle/service/ldn/system_local_communication_service.cpp +++ b/src/core/hle/service/ldn/system_local_communication_service.cpp @@ -40,6 +40,13 @@ ISystemLocalCommunicationService::ISystemLocalCommunicationService(Core::System& {401, nullptr, "FinalizeSystem"}, {402, nullptr, "SetOperationMode"}, {403, C<&ISystemLocalCommunicationService::InitializeSystem2>, "InitializeSystem2"}, + {500, nullptr, "EnableActionFrame"}, // 18.0.0+ + {501, nullptr, "DisableActionFrame"}, // 18.0.0+ + {502, nullptr, "SendActionFrame"}, // 18.0.0+ + {503, nullptr, "RecvActionFrame"}, // 18.0.0+ + {505, nullptr, "SetHomeChannel"}, // 18.0.0+ + {600, nullptr, "SetTxPower"}, // 18.0.0+ + {601, nullptr, "ResetTxPower"} // 18.0.0+ }; // clang-format on diff --git a/src/core/hle/service/ldn/user_local_communication_service.cpp b/src/core/hle/service/ldn/user_local_communication_service.cpp index f28368962f..8e559f4400 100644 --- a/src/core/hle/service/ldn/user_local_communication_service.cpp +++ b/src/core/hle/service/ldn/user_local_communication_service.cpp @@ -53,7 +53,14 @@ IUserLocalCommunicationService::IUserLocalCommunicationService(Core::System& sys {304, C<&IUserLocalCommunicationService::Disconnect>, "Disconnect"}, {400, C<&IUserLocalCommunicationService::Initialize>, "Initialize"}, {401, C<&IUserLocalCommunicationService::Finalize>, "Finalize"}, - {402, C<&IUserLocalCommunicationService::Initialize2>, "Initialize2"}, + {402, C<&IUserLocalCommunicationService::Initialize2>, "Initialize2"}, // 7.0.0+ + {500, nullptr, "EnableActionFrame"}, // 18.0.0+ + {501, nullptr, "DisableActionFrame"}, // 18.0.0+ + {502, nullptr, "SendActionFrame"}, // 18.0.0+ + {503, nullptr, "RecvActionFrame"}, // 18.0.0+ + {505, nullptr, "SetHomeChannel"}, // 18.0.0+ + {600, nullptr, "SetTxPower"}, // 18.0.0+ + {601, nullptr, "ResetTxPower"} // 18.0.0+ }; // clang-format on diff --git a/src/core/hle/service/npns/npns.cpp b/src/core/hle/service/npns/npns.cpp index e54827efef..0c6ba14b4e 100644 --- a/src/core/hle/service/npns/npns.cpp +++ b/src/core/hle/service/npns/npns.cpp @@ -24,26 +24,44 @@ public: {4, nullptr, "ReceiveRaw"}, {5, C<&INpnsSystem::GetReceiveEvent>, "GetReceiveEvent"}, {6, nullptr, "ListenUndelivered"}, - {7, nullptr, "GetStateChangeEVent"}, + {7, nullptr, "GetStateChangeEvent"}, + {8, nullptr, "ListenToByName"}, // 18.0.0+ {11, nullptr, "SubscribeTopic"}, {12, nullptr, "UnsubscribeTopic"}, {13, nullptr, "QueryIsTopicExist"}, + {14, nullptr, "SubscribeTopicByAccount"}, // 18.0.0+ + {15, nullptr, "UnsubscribeTopicByAccount"}, // 18.0.0+ + {16, nullptr, "DownloadSubscriptionList"}, // 18.0.0+ {21, nullptr, "CreateToken"}, {22, nullptr, "CreateTokenWithApplicationId"}, {23, nullptr, "DestroyToken"}, {24, nullptr, "DestroyTokenWithApplicationId"}, {25, nullptr, "QueryIsTokenValid"}, {26, nullptr, "ListenToMyApplicationId"}, - {27, nullptr, "DestroyTokenAll"}, + {27, nullptr, "DestroyTokenAll"}, // 13.0.0+ + {28, nullptr, "CreateTokenWithName"}, // 18.0.0+ + {29, nullptr, "DestroyTokenWithName"}, // 18.0.0+ {31, nullptr, "UploadTokenToBaaS"}, {32, nullptr, "DestroyTokenForBaaS"}, {33, nullptr, "CreateTokenForBaaS"}, {34, nullptr, "SetBaaSDeviceAccountIdList"}, + {35, nullptr, "LinkNsaId"}, // 17.0.0+ + {36, nullptr, "UnlinkNsaId"}, // 17.0.0+ + {37, nullptr, "RelinkNsaId"}, // 18.0.0+ + {40, nullptr, "GetNetworkServiceAccountIdTokenRequestEvent"}, // 17.0.0+ + {41, nullptr, "TryPopNetworkServiceAccountIdTokenRequestUid"}, // 17.0.0+ + {42, nullptr, "SetNetworkServiceAccountIdTokenSuccess"}, // 17.0.0+ + {43, nullptr, "SetNetworkServiceAccountIdTokenFailure"}, // 17.0.0+ + {44, nullptr, "SetUidList"}, // 17.0.0+ + {45, nullptr, "PutDigitalTwinKeyValue"}, // 17.0.0+ + {51, nullptr, "DeleteDigitalTwinKeyValue"}, // 18.0.0+ {101, nullptr, "Suspend"}, {102, nullptr, "Resume"}, {103, nullptr, "GetState"}, {104, nullptr, "GetStatistics"}, {105, nullptr, "GetPlayReportRequestEvent"}, + {106, nullptr, "GetLastNotifiedTime"}, + {107, nullptr, "SetLastNotifiedTime"}, {111, nullptr, "GetJid"}, {112, nullptr, "CreateJid"}, {113, nullptr, "DestroyJid"}, @@ -55,10 +73,17 @@ public: {153, nullptr, "GetDropEventWithHandover"}, {154, nullptr, "CreateTokenAsync"}, {155, nullptr, "CreateTokenAsyncWithApplicationId"}, - {161, nullptr, "GetRequestChangeStateCancelEvent"}, - {162, nullptr, "RequestChangeStateForceTimedWithCancelEvent"}, - {201, nullptr, "RequestChangeStateForceTimed"}, - {202, nullptr, "RequestChangeStateForceAsync"}, + {156, nullptr, "CreateTokenWithNameAsync"}, // 18.0.0+ + {161, nullptr, "GetRequestChangeStateCancelEvent"}, // 10.0.0+ + {162, nullptr, "RequestChangeStateForceTimedWithCancelEvent"}, // 10.0.0+ + {201, nullptr, "RequestChangeStateForceTimed"}, // 3.0.0+ + {202, nullptr, "RequestChangeStateForceAsync"}, // 3.0.0+ + {301, nullptr, "GetPassword"}, // 18.0.0+ + {302, nullptr, "GetAllImmigration"}, // 18.0.0+ + {303, nullptr, "GetNotificationHistories"}, // 18.0.0+ + {304, nullptr, "GetPersistentConnectionSummary"}, // 18.0.0+ + {305, nullptr, "GetDigitalTwinSummary"}, // 18.0.0+ + {306, nullptr, "GetDigitalTwinValue"}, // 18.0.0+ }; // clang-format on @@ -98,7 +123,8 @@ public: {3, nullptr, "Receive"}, {4, nullptr, "ReceiveRaw"}, {5, nullptr, "GetReceiveEvent"}, - {7, nullptr, "GetStateChangeEVent"}, + {7, nullptr, "GetStateChangeEvent"}, + {8, nullptr, "ListenToByName"}, // 18.0.0+ {21, nullptr, "CreateToken"}, {23, nullptr, "DestroyToken"}, {25, nullptr, "QueryIsTokenValid"}, diff --git a/src/core/hle/service/pctl/parental_control_service.cpp b/src/core/hle/service/pctl/parental_control_service.cpp index f57f2f1577..664d9c1fd8 100644 --- a/src/core/hle/service/pctl/parental_control_service.cpp +++ b/src/core/hle/service/pctl/parental_control_service.cpp @@ -86,6 +86,7 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili {1472, nullptr, "CancelNetworkRequest"}, {1473, D<&IParentalControlService::GetUnlinkedEvent>, "GetUnlinkedEvent"}, {1474, nullptr, "ClearUnlinkedEvent"}, + {1475, nullptr, "GetExtendedPlayTimerEvent"}, // 18.0.0+ {1601, nullptr, "DisableAllFeatures"}, {1602, nullptr, "PostEnableAllFeatures"}, {1603, nullptr, "IsAllFeaturesDisabled"}, @@ -101,6 +102,10 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili {1951, nullptr, "SetPlayTimerSettingsForDebug"}, {1952, nullptr, "GetPlayTimerSpentTimeForTest"}, {1953, nullptr, "SetPlayTimerAlarmDisabledForDebug"}, + {1954, nullptr, "IsBedtimeAlarmEnabled"}, // 18.0.0+ + {1955, nullptr, "GetBedtimeAlarmTime"}, // 18.0.0+ + {1956, nullptr, "GetBedtimeAlarmTimeHour"}, // 18.0.0+ + {1967, nullptr, "GetBedtimeAlarmMinute"}, // 18.0.0+ {2001, nullptr, "RequestPairingAsync"}, {2002, nullptr, "FinishRequestPairing"}, {2003, nullptr, "AuthorizePairingAsync"}, @@ -117,6 +122,8 @@ IParentalControlService::IParentalControlService(Core::System& system_, Capabili {2014, nullptr, "FinishSynchronizeParentalControlSettings"}, {2015, nullptr, "FinishSynchronizeParentalControlSettingsWithLastUpdated"}, {2016, nullptr, "RequestUpdateExemptionListAsync"}, + {145601, nullptr, "GetPlayTimerSettingsVer2"}, // 18.0.0+ + {195101, nullptr, "SetPlayTimerSettingsForDebugVer2"}, // 18.0.0+ }; // clang-format on RegisterHandlers(functions); diff --git a/src/core/hle/service/ssl/ssl.cpp b/src/core/hle/service/ssl/ssl.cpp index 008ee44923..37105d74b7 100644 --- a/src/core/hle/service/ssl/ssl.cpp +++ b/src/core/hle/service/ssl/ssl.cpp @@ -507,7 +507,11 @@ public: {6, nullptr, "FlushSessionCache"}, {7, nullptr, "SetDebugOption"}, {8, nullptr, "GetDebugOption"}, - {8, nullptr, "ClearTls12FallbackFlag"}, + {9, nullptr, "ClearTls12FallbackFlag"}, + {100, nullptr, "CreateContextForSystem"}, + {101, nullptr, "SetThreadCoreMask"}, + {102, nullptr, "GetThreadCoreMask"}, + {103, nullptr, "VerifySignature"}, // 18.0.0+ }; // clang-format on From 70c52a1914efd409db0316270dca0f9c820ef76c Mon Sep 17 00:00:00 2001 From: lol Date: Tue, 9 Apr 2024 18:05:24 +0200 Subject: [PATCH 02/28] fix qlaunch on firmware 18 --- src/core/hle/kernel/k_page_table_base.cpp | 7 +++++++ src/core/hle/kernel/k_page_table_base.h | 4 ++++ src/core/hle/kernel/k_process_page_table.h | 3 +++ src/core/hle/kernel/svc/svc_info.cpp | 7 ++++++- src/core/hle/kernel/svc_types.h | 6 +++++- src/core/hle/service/acc/acc.cpp | 19 +++++++++++++++++-- 6 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/core/hle/kernel/k_page_table_base.cpp b/src/core/hle/kernel/k_page_table_base.cpp index 7714717f74..e67105dea4 100644 --- a/src/core/hle/kernel/k_page_table_base.cpp +++ b/src/core/hle/kernel/k_page_table_base.cpp @@ -172,6 +172,7 @@ Result KPageTableBase::InitializeForKernel(bool is_64_bit, KVirtualAddress start m_mapped_unsafe_physical_memory = 0; m_mapped_insecure_memory = 0; m_mapped_ipc_server_memory = 0; + m_alias_region_extra_size = 0; m_memory_block_slab_manager = m_kernel.GetSystemSystemResource().GetMemoryBlockSlabManagerPointer(); @@ -269,6 +270,12 @@ Result KPageTableBase::InitializeForProcess(Svc::CreateProcessFlag as_type, bool process_code_end = m_code_region_end; } + m_alias_region_extra_size = 0; + if (as_type == Svc::CreateProcessFlag::EnableReservedRegionExtraSize) { + m_alias_region_extra_size = GetAddressSpaceSize() / 8; + alias_region_size += m_alias_region_extra_size; + } + // Set other basic fields. m_enable_aslr = enable_aslr; m_enable_device_address_space_merge = enable_das_merge; diff --git a/src/core/hle/kernel/k_page_table_base.h b/src/core/hle/kernel/k_page_table_base.h index 37c745d14a..d944306b70 100644 --- a/src/core/hle/kernel/k_page_table_base.h +++ b/src/core/hle/kernel/k_page_table_base.h @@ -208,6 +208,7 @@ private: size_t m_mapped_unsafe_physical_memory{}; size_t m_mapped_insecure_memory{}; size_t m_mapped_ipc_server_memory{}; + size_t m_alias_region_extra_size{}; mutable KLightLock m_general_lock; mutable KLightLock m_map_physical_memory_lock; KLightLock m_device_map_lock; @@ -682,6 +683,9 @@ public: size_t GetAliasRegionSize() const { return m_alias_region_end - m_alias_region_start; } + size_t GetReservedRegionExtraSize() const { + return m_alias_region_extra_size; + } size_t GetStackRegionSize() const { return m_stack_region_end - m_stack_region_start; } diff --git a/src/core/hle/kernel/k_process_page_table.h b/src/core/hle/kernel/k_process_page_table.h index 346d7ca083..38c5fb8162 100644 --- a/src/core/hle/kernel/k_process_page_table.h +++ b/src/core/hle/kernel/k_process_page_table.h @@ -410,6 +410,9 @@ public: size_t GetAliasRegionSize() const { return m_page_table.GetAliasRegionSize(); } + size_t GetReservedRegionExtraSize() const { + return m_page_table.GetReservedRegionExtraSize(); + } size_t GetStackRegionSize() const { return m_page_table.GetStackRegionSize(); } diff --git a/src/core/hle/kernel/svc/svc_info.cpp b/src/core/hle/kernel/svc/svc_info.cpp index 231e4d0e1b..007bb9f705 100644 --- a/src/core/hle/kernel/svc/svc_info.cpp +++ b/src/core/hle/kernel/svc/svc_info.cpp @@ -37,7 +37,8 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle case InfoType::TotalNonSystemMemorySize: case InfoType::UsedNonSystemMemorySize: case InfoType::IsApplication: - case InfoType::FreeThreadCount: { + case InfoType::FreeThreadCount: + case InfoType::ReservedRegionExtraSize: { R_UNLESS(info_sub_id == 0, ResultInvalidEnumValue); const auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable(); @@ -134,6 +135,10 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle } R_SUCCEED(); + case InfoType::ReservedRegionExtraSize: + *result = process->GetPageTable().GetReservedRegionExtraSize(); + R_SUCCEED(); + default: break; } diff --git a/src/core/hle/kernel/svc_types.h b/src/core/hle/kernel/svc_types.h index ab432ea78b..df92fa0089 100644 --- a/src/core/hle/kernel/svc_types.h +++ b/src/core/hle/kernel/svc_types.h @@ -153,6 +153,7 @@ enum class InfoType : u32 { ThreadTickCount = 25, IsSvcPermitted = 26, IoRegionHint = 27, + ReservedRegionExtraSize = 28, MesosphereMeta = 65000, MesosphereCurrentProcess = 65001, @@ -642,9 +643,12 @@ enum class CreateProcessFlag : u32 { // 11.x+ DisableDeviceAddressSpaceMerge. DisableDeviceAddressSpaceMerge = (1 << 12), + EnableReservedRegionExtraSize = (1 << 13), + // Mask of all flags. All = Is64Bit | AddressSpaceMask | EnableDebug | EnableAslr | IsApplication | - PoolPartitionMask | OptimizeMemoryAllocation | DisableDeviceAddressSpaceMerge, + PoolPartitionMask | OptimizeMemoryAllocation | DisableDeviceAddressSpaceMerge | + EnableReservedRegionExtraSize, }; DECLARE_ENUM_FLAG_OPERATORS(CreateProcessFlag); diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index d0771996b7..fd7104dfee 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -323,7 +323,7 @@ public: {11, &IProfileCommon::LoadImage, "LoadImage"}, {20, &IProfileCommon::GetImageSize, "GetLargeImageSize"}, // 18.0.0+ {21, &IProfileCommon::LoadImage, "LoadLargeImage"}, // 18.0.0+ - {30, nullptr, "GetImageId"}, // 18.0.0+ + {30, &IProfileCommon::Unknown, "GetImageId"}, // 18.0.0+ }; RegisterHandlers(functions); @@ -494,6 +494,13 @@ protected: rb.Push(ResultSuccess); } + void Unknown(HLERequestContext& ctx) { + LOG_WARNING(Service_ACC, "(STUBBED) called"); + IPC::ResponseBuilder rb{ctx, 3}; + rb.Push(ResultSuccess); + rb.Push(0); + } + ProfileManager& profile_manager; Common::UUID user_id{}; ///< The user id this profile refers to. }; @@ -509,7 +516,15 @@ class IProfileEditor final : public IProfileCommon { public: explicit IProfileEditor(Core::System& system_, Common::UUID user_id_, ProfileManager& profile_manager_) - : IProfileCommon{system_, "IProfileEditor", true, user_id_, profile_manager_} {} + : IProfileCommon{system_, "IProfileEditor", true, user_id_, profile_manager_} { + // clang-format off + static const FunctionInfo functions[] = { + {30, &IProfileEditor::Unknown, "Unknown"}, + }; + // clang-format on + + RegisterHandlers(functions); + } }; class ISessionObject final : public ServiceFramework { From 97814d3e593b0827e0d79b9faa51431e55052dd2 Mon Sep 17 00:00:00 2001 From: flodavid Date: Thu, 18 Jan 2024 20:51:39 +0000 Subject: [PATCH 03/28] Load custom Qt themes from yuzu data directory - Directory is qt_themes, each theme must be in one folder - It should contain a file "style.qss" - It may contain an "icons" sub-directory, to override included icons (with files like mytheme/icons/colorful/48x48/star.png for example) - Directories ending by "_dark" are reserved for dark variant icons. They are not listed as themes in the UI. - If theme directory contains "dark" or "midnight", theme will be considered dark --- src/common/fs/fs_paths.h | 3 +- src/common/fs/path_util.cpp | 3 +- src/common/fs/path_util.h | 3 +- src/suyu/configuration/configure_ui.cpp | 27 +++++++++-- src/suyu/configuration/qt_config.cpp | 11 ++--- src/suyu/debugger/wait_tree.cpp | 5 +- src/suyu/main.cpp | 64 +++++++++++++++++-------- src/suyu/main.h | 6 +++ src/suyu/uisettings.cpp | 19 ++++---- src/suyu/uisettings.h | 23 ++++----- 10 files changed, 102 insertions(+), 62 deletions(-) diff --git a/src/common/fs/fs_paths.h b/src/common/fs/fs_paths.h index 3720976efe..de06571a6f 100644 --- a/src/common/fs/fs_paths.h +++ b/src/common/fs/fs_paths.h @@ -15,6 +15,7 @@ #define CONFIG_DIR "config" #define CRASH_DUMPS_DIR "crash_dumps" #define DUMP_DIR "dump" +#define ICONS_DIR "icons" #define KEYS_DIR "keys" #define LOAD_DIR "load" #define LOG_DIR "log" @@ -24,7 +25,7 @@ #define SDMC_DIR "sdmc" #define SHADER_DIR "shader" #define TAS_DIR "tas" -#define ICONS_DIR "icons" +#define THEMES_DIR "qt_themes" // suyu-specific files diff --git a/src/common/fs/path_util.cpp b/src/common/fs/path_util.cpp index e23f53fb9d..9362e18c39 100644 --- a/src/common/fs/path_util.cpp +++ b/src/common/fs/path_util.cpp @@ -121,6 +121,7 @@ public: GenerateSuyuPath(SuyuPath::ConfigDir, suyu_path_config); GenerateSuyuPath(SuyuPath::CrashDumpsDir, suyu_path / CRASH_DUMPS_DIR); GenerateSuyuPath(SuyuPath::DumpDir, suyu_path / DUMP_DIR); + GenerateSuyuPath(SuyuPath::IconsDir, suyu_path / ICONS_DIR); GenerateSuyuPath(SuyuPath::KeysDir, suyu_path / KEYS_DIR); GenerateSuyuPath(SuyuPath::LoadDir, suyu_path / LOAD_DIR); GenerateSuyuPath(SuyuPath::LogDir, suyu_path / LOG_DIR); @@ -130,7 +131,7 @@ public: GenerateSuyuPath(SuyuPath::SDMCDir, suyu_path / SDMC_DIR); GenerateSuyuPath(SuyuPath::ShaderDir, suyu_path / SHADER_DIR); GenerateSuyuPath(SuyuPath::TASDir, suyu_path / TAS_DIR); - GenerateSuyuPath(SuyuPath::IconsDir, suyu_path / ICONS_DIR); + GenerateSuyuPath(SuyuPath::ThemesDir, suyu_path / THEMES_DIR); } private: diff --git a/src/common/fs/path_util.h b/src/common/fs/path_util.h index 2076fbcd43..1ac4a26eea 100644 --- a/src/common/fs/path_util.h +++ b/src/common/fs/path_util.h @@ -17,6 +17,7 @@ enum class SuyuPath { ConfigDir, // Where config files are stored. CrashDumpsDir, // Where crash dumps are stored. DumpDir, // Where dumped data is stored. + IconsDir, // Where Icons for Windows shortcuts are stored. KeysDir, // Where key files are stored. LoadDir, // Where cheat/mod files are stored. LogDir, // Where log files are stored. @@ -26,7 +27,7 @@ enum class SuyuPath { SDMCDir, // Where the emulated SDMC is stored. ShaderDir, // Where shaders are stored. TASDir, // Where TAS scripts are stored. - IconsDir, // Where Icons for Windows shortcuts are stored. + ThemesDir, // Where users should put their custom themes }; /** diff --git a/src/suyu/configuration/configure_ui.cpp b/src/suyu/configuration/configure_ui.cpp index a3648c5b1c..046b34721e 100644 --- a/src/suyu/configuration/configure_ui.cpp +++ b/src/suyu/configuration/configure_ui.cpp @@ -106,11 +106,31 @@ ConfigureUi::ConfigureUi(Core::System& system_, QWidget* parent) InitializeLanguageComboBox(); - for (const auto& theme : UISettings::themes) { + for (const auto& theme : UISettings::included_themes) { ui->theme_combobox->addItem(QString::fromUtf8(theme.first), QString::fromUtf8(theme.second)); } + // Add custom styles stored in yuzu directory + const QDir themes_local_dir( + QString::fromStdString(Common::FS::GetSuyuPathString(Common::FS::SuyuPath::ThemesDir))); + for (const QString& theme_dir : + themes_local_dir.entryList(QDir::NoDot | QDir::NoDotDot | QDir::Dirs)) { + // folders ending with "_dark" are reserved for dark variant icons of other styles + if (theme_dir.endsWith(QStringLiteral("_dark"))) { + continue; + } + // Split at _ and capitalize words in name + QStringList cased_name; + for (QString word : theme_dir.split(QChar::fromLatin1('_'))) { + cased_name.append(word.at(0).toUpper() + word.mid(1)); + } + QString theme_name = cased_name.join(QChar::fromLatin1(' ')); + theme_name += QStringLiteral(" (%1)").arg(tr("Custom")); + + ui->theme_combobox->addItem(theme_name, themes_local_dir.filePath(theme_dir)); + } + InitializeIconSizeComboBox(); InitializeRowComboBoxes(); @@ -164,7 +184,7 @@ ConfigureUi::~ConfigureUi() = default; void ConfigureUi::ApplyConfiguration() { UISettings::values.theme = - ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString().toStdString(); + ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString(); UISettings::values.show_add_ons = ui->show_add_ons->isChecked(); UISettings::values.show_compat = ui->show_compat->isChecked(); UISettings::values.show_size = ui->show_size->isChecked(); @@ -191,8 +211,7 @@ void ConfigureUi::RequestGameListUpdate() { } void ConfigureUi::SetConfiguration() { - ui->theme_combobox->setCurrentIndex( - ui->theme_combobox->findData(QString::fromStdString(UISettings::values.theme))); + ui->theme_combobox->setCurrentIndex(ui->theme_combobox->findData(UISettings::values.theme)); ui->language_combobox->setCurrentIndex(ui->language_combobox->findData( QString::fromStdString(UISettings::values.language.GetValue()))); ui->show_add_ons->setChecked(UISettings::values.show_add_ons.GetValue()); diff --git a/src/suyu/configuration/qt_config.cpp b/src/suyu/configuration/qt_config.cpp index 37951b9c84..2868db4ebb 100644 --- a/src/suyu/configuration/qt_config.cpp +++ b/src/suyu/configuration/qt_config.cpp @@ -260,9 +260,8 @@ void QtConfig::ReadShortcutValues() { void QtConfig::ReadUIValues() { BeginGroup(Settings::TranslateCategory(Settings::Category::Ui)); - UISettings::values.theme = ReadStringSetting( - std::string("theme"), - std::string(UISettings::themes[static_cast(UISettings::default_theme)].second)); + UISettings::values.theme = QString::fromStdString( + ReadStringSetting(std::string("theme"), std::string(UISettings::default_theme))); ReadUIGamelistValues(); ReadUILayoutValues(); @@ -468,10 +467,8 @@ void QtConfig::SaveUIValues() { WriteCategory(Settings::Category::Ui); WriteCategory(Settings::Category::UiGeneral); - WriteStringSetting( - std::string("theme"), UISettings::values.theme, - std::make_optional(std::string( - UISettings::themes[static_cast(UISettings::default_theme)].second))); + WriteStringSetting(std::string("theme"), UISettings::values.theme.toStdString(), + std::make_optional(std::string(UISettings::default_theme))); SaveUIGamelistValues(); SaveUILayoutValues(); diff --git a/src/suyu/debugger/wait_tree.cpp b/src/suyu/debugger/wait_tree.cpp index b339862ba7..b5ee4bcfdf 100644 --- a/src/suyu/debugger/wait_tree.cpp +++ b/src/suyu/debugger/wait_tree.cpp @@ -35,9 +35,8 @@ constexpr std::array, 10> WaitTreeColors{{ }}; bool IsDarkTheme() { - const auto& theme = UISettings::values.theme; - return theme == std::string("qdarkstyle") || theme == std::string("qdarkstyle_midnight_blue") || - theme == std::string("colorful_dark") || theme == std::string("colorful_midnight_blue"); + return UISettings::values.theme.contains(QStringLiteral("dark")) || + UISettings::values.theme.contains(QStringLiteral("midnight")); } } // namespace diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index 9a3ee7f662..030e4ae511 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -3542,7 +3542,7 @@ void GMainWindow::ResetWindowSize1080() { } void GMainWindow::OnConfigure() { - const auto old_theme = UISettings::values.theme; + const QString old_theme = UISettings::values.theme; const bool old_discord_presence = UISettings::values.enable_discord_presence.GetValue(); const auto old_language_index = Settings::values.language_index.GetValue(); #ifdef __unix__ @@ -4812,9 +4812,8 @@ static void AdjustLinkColor() { } void GMainWindow::UpdateUITheme() { - const QString default_theme = QString::fromUtf8( - UISettings::themes[static_cast(UISettings::default_theme)].second); - QString current_theme = QString::fromStdString(UISettings::values.theme); + QString default_theme = QString::fromStdString(UISettings::default_theme.data()); + QString current_theme = UISettings::values.theme; if (current_theme.isEmpty()) { current_theme = default_theme; @@ -4825,6 +4824,7 @@ void GMainWindow::UpdateUITheme() { AdjustLinkColor(); #else if (current_theme == QStringLiteral("default") || current_theme == QStringLiteral("colorful")) { + LOG_INFO(Frontend, "Theme is default or colorful: {}", current_theme.toStdString()); QIcon::setThemeName(current_theme == QStringLiteral("colorful") ? current_theme : startup_icon_theme); QIcon::setThemeSearchPaths(QStringList(default_theme_paths)); @@ -4832,35 +4832,57 @@ void GMainWindow::UpdateUITheme() { current_theme = QStringLiteral("default_dark"); } } else { + LOG_INFO(Frontend, "Theme is NOT default or colorful: {}", current_theme.toStdString()); QIcon::setThemeName(current_theme); - QIcon::setThemeSearchPaths(QStringList(QStringLiteral(":/icons"))); + // Use icon resources from application binary and current theme subdirectory if it exists + QStringList theme_paths; + theme_paths << QString::fromStdString(":/icons") + << QStringLiteral("%1/%2/icons") + .arg(QString::fromStdString( + Common::FS::GetYuzuPathString(Common::FS::YuzuPath::ThemesDir)), + current_theme); + QIcon::setThemeSearchPaths(theme_paths); AdjustLinkColor(); } #endif if (current_theme != default_theme) { - QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)}; - QFile f(theme_uri); - if (!f.open(QFile::ReadOnly | QFile::Text)) { - LOG_ERROR(Frontend, "Unable to open style \"{}\", fallback to the default theme", - UISettings::values.theme); - current_theme = default_theme; + QString theme_uri{current_theme + QStringLiteral("style.qss")}; + if (tryLoadStylesheet(theme_uri)) { + return; } - } - QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)}; - QFile f(theme_uri); - if (f.open(QFile::ReadOnly | QFile::Text)) { - QTextStream ts(&f); - qApp->setStyleSheet(ts.readAll()); - setStyleSheet(ts.readAll()); - } else { + // Reading new theme failed, loading default stylesheet + LOG_ERROR(Frontend, "Unable to open style \"{}\", fallback to the default theme", + current_theme.toStdString()); + + current_theme = default_theme; + theme_uri = QStringLiteral(":%1/style.qss").arg(default_theme); + if (tryLoadStylesheet(theme_uri)) { + return; + } + + // Reading default failed, loading empty stylesheet LOG_ERROR(Frontend, "Unable to set style \"{}\", stylesheet file not found", - UISettings::values.theme); + current_theme.toStdString()); + qApp->setStyleSheet({}); setStyleSheet({}); } } +bool GMainWindow::tryLoadStylesheet(const QString& theme_path) { + QFile theme_file(theme_path); + if (theme_file.open(QFile::ReadOnly | QFile::Text)) { + LOG_INFO(Frontend, "Loading style in: {}", theme_path.toStdString()); + QTextStream ts(&theme_file); + qApp->setStyleSheet(ts.readAll()); + setStyleSheet(ts.readAll()); + return true; + } + // Opening the file failed + return false; +} + void GMainWindow::LoadTranslation() { bool loaded; @@ -4919,7 +4941,7 @@ void GMainWindow::changeEvent(QEvent* event) { // UpdateUITheme is a decent work around if (event->type() == QEvent::PaletteChange) { const QPalette test_palette(qApp->palette()); - const QString current_theme = QString::fromStdString(UISettings::values.theme); + const QString& current_theme = UISettings::values.theme; // Keeping eye on QPalette::Window to avoid looping. QPalette::Text might be useful too static QColor last_window_color; const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window); diff --git a/src/suyu/main.h b/src/suyu/main.h index e20950e238..6bbcdd7c58 100644 --- a/src/suyu/main.h +++ b/src/suyu/main.h @@ -165,6 +165,12 @@ class GMainWindow : public QMainWindow { CREATE_SHORTCUT_MSGBOX_APPVOLATILE_WARNING, }; + /** + * Try to load a stylesheet from its path. If the path starts with ":/", its embedded in the app + * @returns true if the text file could be opened as read-only + */ + bool tryLoadStylesheet(const QString& theme_path); + public: void filterBarSetChecked(bool state); void UpdateUITheme(); diff --git a/src/suyu/uisettings.cpp b/src/suyu/uisettings.cpp index 60d4063c8c..e382afdf61 100644 --- a/src/suyu/uisettings.cpp +++ b/src/suyu/uisettings.cpp @@ -22,19 +22,18 @@ namespace FS = Common::FS; namespace UISettings { -const Themes themes{{ - {"Default", "default"}, - {"Default Colorful", "colorful"}, - {"Dark", "qdarkstyle"}, - {"Dark Colorful", "colorful_dark"}, - {"Midnight Blue", "qdarkstyle_midnight_blue"}, - {"Midnight Blue Colorful", "colorful_midnight_blue"}, +const Themes included_themes{{ + {"Default", ":/default/"}, + {"Default Colorful", ":/colorful/"}, + {"Dark", ":/qdarkstyle/"}, + {"Dark Colorful", ":/colorful_dark/"}, + {"Midnight Blue", ":/qdarkstyle_midnight_blue/"}, + {"Midnight Blue Colorful", ":/colorful_midnight_blue/"}, }}; bool IsDarkTheme() { - const auto& theme = UISettings::values.theme; - return theme == std::string("qdarkstyle") || theme == std::string("qdarkstyle_midnight_blue") || - theme == std::string("colorful_dark") || theme == std::string("colorful_midnight_blue"); + return UISettings::values.theme.contains(QStringLiteral("dark")) || + UISettings::values.theme.contains(QStringLiteral("midnight")); } Values values = {}; diff --git a/src/suyu/uisettings.h b/src/suyu/uisettings.h index cab889680f..7713c8c73a 100644 --- a/src/suyu/uisettings.h +++ b/src/suyu/uisettings.h @@ -35,6 +35,10 @@ extern template class Setting; namespace UISettings { +/** + * Check if the theme is dark + * @returns true if the current theme contains the string "dark" in its name + */ bool IsDarkTheme(); struct ContextualShortcut { @@ -50,25 +54,16 @@ struct Shortcut { ContextualShortcut shortcut; }; -enum class Theme { - Default, - DefaultColorful, - Dark, - DarkColorful, - MidnightBlue, - MidnightBlueColorful, -}; - -static constexpr Theme default_theme{ +static constexpr std::string_view default_theme{ #ifdef _WIN32 - Theme::DarkColorful + "colorful_dark" #else - Theme::DefaultColorful + "colorful" #endif }; using Themes = std::array, 6>; -extern const Themes themes; +extern const Themes included_themes; struct GameDir { std::string path; @@ -160,7 +155,7 @@ struct Values { QStringList recent_files; Setting language{linkage, {}, "language", Category::Paths}; - std::string theme; + QString theme; // Shortcut name std::vector shortcuts; From f01d7305c0c9b4baee31fd729db3ee48ea851bb2 Mon Sep 17 00:00:00 2001 From: flodavid Date: Sun, 4 Feb 2024 04:04:47 +0100 Subject: [PATCH 04/28] Automatic dark theme switching for Windows and Linux - Windows dark theme uses "fusion" style, which is better suited, but has minor differences - Improve OS theme detection - Linux: - Listen for OS color schemes changes on D-Bus - Read OS scheme for D-Bus. Fallback with gsettings, reading org.gnome.desktop.interface. First "color-scheme" key, then "gtk-theme". Finally, fallback to checking window palette - Windows (dark mode detection was not implemented before): - Force dark palette when OS uses dark mode by setting QT_QPA_PLATFORM to "windows:darkmode=2" - This enables to detect dark mode by checking the window palette - Improve theming capabilites: - Linux uses custom palette when dark mode is detected. By using palette(xxx) in .qss files, there is no need to create a dark stylesheet - Allow themes to have stylesheet variants, dark.qss and light.qss - If current mode is dark, use dark icons for controller and keyboard applets - Add "dark" property to RendererStatusBarButton and GPUStatusBarButton, set to true when dark mode is used. Allows to have distinct colors for GPU API and accuracy buttons depending on dark mode or not - Enable all themes to have dark icon alternatives, not just "default" and "colorful" - If dark mode, icons are loaded from the directory "THEME-NAME_dark/icons" - If current mode is dark, use dark icons for controller and keyboard applets - Only qdarkstyle, qdarkstyle_midnight_blue, colorful_dark and colorful_midnight_blue used elements specific to dark themes --- dist/qt_themes/default/style.qss | 88 +++-- src/suyu/applets/qt_controller.cpp | 16 +- src/suyu/applets/qt_software_keyboard.cpp | 4 +- src/suyu/main.cpp | 392 ++++++++++++++++------ src/suyu/main.h | 48 ++- src/suyu/startup_checks.cpp | 5 + src/suyu/uisettings.cpp | 5 - src/suyu/uisettings.h | 14 +- 8 files changed, 414 insertions(+), 158 deletions(-) diff --git a/dist/qt_themes/default/style.qss b/dist/qt_themes/default/style.qss index 921950c6c0..bd9c1964cf 100644 --- a/dist/qt_themes/default/style.qss +++ b/dist/qt_themes/default/style.qss @@ -1,3 +1,14 @@ +/* +* SPDX-FileCopyrightText: 2018 yuzu Emulator Project +* SPDX-FileCopyrightText: 2024 suyu Emulator Project +* SPDX-License-Identifier: GPL-2.0-or-later +*/ + +QWidget:item:hover { + background-color: #28668d; + color: #eff0f1; +} + QAbstractSpinBox { min-height: 19px; } @@ -94,21 +105,21 @@ QGroupBox#groupPlayer5Connected:checked, QGroupBox#groupPlayer6Connected:checked, QGroupBox#groupPlayer7Connected:checked, QGroupBox#groupPlayer8Connected:checked { - background-color: #f5f5f5; + background-color: palette(window); } QWidget#topControllerApplet { - border-bottom: 1px solid #828790 + border-bottom: 1px solid palette(dark) } QWidget#bottomPerGameInput, QWidget#bottomControllerApplet { - border-top: 1px solid #828790 + border-top: 1px solid palette(dark) } QWidget#topPerGameInput, QWidget#middleControllerApplet { - background-color: #fff; + background-color: palette(base) } QWidget#topPerGameInput QComboBox, @@ -345,7 +356,7 @@ QWidget#lineDialog { QStackedWidget#bottomOSK, QWidget#contentDialog, QWidget#contentRichDialog { - background: rgba(240, 240, 240, 1); + background: palette(base); } QWidget#contentDialog, @@ -402,6 +413,7 @@ QWidget#inputOSK QLineEdit { background: transparent; border: none; color: #ccc; + padding: 0px; } QWidget#inputBoxOSK { @@ -431,6 +443,27 @@ QWidget#boxOSK QLabel#label_characters_box { color: #ccc; } +QWidget#buttonsDialog, +QWidget#buttonsRichDialog, +QWidget#mainOSK, +QWidget#headerOSK, +QWidget#normalOSK, +QWidget#shiftOSK, +QWidget#numOSK, +QWidget#subOSK, +QWidget#inputOSK, +QWidget#inputBoxOSK, +QWidget#charactersOSK, +QWidget#charactersBoxOSK, +QWidget#legendOSK, +QWidget#legendOSK QWidget, +QWidget#legendOSKshift, +QWidget#legendOSKshift QWidget, +QWidget#legendOSKnum, +QWidget#legendOSKnum QWidget { + background: transparent; +} + QWidget#contentDialog QLabel#label_title, QWidget#contentRichDialog QLabel#label_title_rich { color: #888; @@ -471,8 +504,8 @@ QDialog#OverlayDialog QPushButton:pressed { } QDialog#QtSoftwareKeyboardDialog QPushButton { - background: rgba(232, 232, 232, 1); - border: 2px solid rgba(240, 240, 240, 1); + background: palette(window); + border: 2px solid palette(base); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift, @@ -481,27 +514,35 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { - background: rgba(218, 218, 218, 1); - border: 2px solid rgba(240, 240, 240, 1); + background: palette(alternate-base); + border: 2px solid palette(base); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { - color: rgba(240, 240, 240, 1); - background: rgba(44, 44, 44, 1); - border: 2px solid rgba(240, 240, 240, 1); + color: palette(base); + background: palette(mid); + border: 2px solid palette(base); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { - color: rgba(240, 240, 240, 1); - background: rgba(49, 79, 239, 1); - border: 2px solid rgba(240, 240, 240, 1); + color: palette(base); + background: palette(highlight); + border: 2px solid palette(base); } QDialog#QtSoftwareKeyboardDialog QPushButton:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton:hover +{ + background: palette(base); + border: 5px solid rgba(148, 250, 202, 1); + border-radius: 6px; + outline: none; +} + QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:focus, @@ -514,8 +555,6 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:focus, - -QDialog#QtSoftwareKeyboardDialog QPushButton:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:hover, @@ -524,12 +563,11 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover { - color: rgba(0, 0, 0, 1); - background: rgba(255, 255, 255, 1); +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover +{ border: 5px solid rgba(148, 250, 202, 1); border-radius: 6px; outline: none; @@ -548,7 +586,7 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:pressed, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:pressed, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:pressed, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed { - color: rgba(240, 240, 240, 1); + color: palette(base); background: rgba(150, 150, 150, 1); border: 5px solid rgba(148, 250, 202, 1); border-radius: 6px; @@ -653,8 +691,8 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { - color: rgba(164, 164, 164, 1); - background-color: rgba(218, 218, 218, 1); + color: palette(midlight); + background-color: palette(alternate-base); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled, @@ -671,7 +709,7 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_8:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_9:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled { - color: rgba(164, 164, 164, 1); + color: palette(midlight); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, diff --git a/src/suyu/applets/qt_controller.cpp b/src/suyu/applets/qt_controller.cpp index f27ab835e5..d41d23eceb 100644 --- a/src/suyu/applets/qt_controller.cpp +++ b/src/suyu/applets/qt_controller.cpp @@ -384,10 +384,12 @@ bool QtControllerSelectorDialog::CheckIfParametersMet() { void QtControllerSelectorDialog::SetSupportedControllers() { const QString theme = [] { - if (QIcon::themeName().contains(QStringLiteral("dark"))) { - return QStringLiteral("_dark"); - } else if (QIcon::themeName().contains(QStringLiteral("midnight"))) { + if (QIcon::themeName().contains(QStringLiteral("midnight"))) { return QStringLiteral("_midnight"); + } else if (GMainWindow::CheckDarkMode() || + QIcon::themeName().contains(QStringLiteral("dark"))) { + // Use dark icons if current OS mode is dark, or the theme contains "dark" in its name + return QStringLiteral("_dark"); } else { return QString{}; } @@ -572,10 +574,12 @@ void QtControllerSelectorDialog::UpdateControllerIcon(std::size_t player_index) } const QString theme = [] { - if (QIcon::themeName().contains(QStringLiteral("dark"))) { - return QStringLiteral("_dark"); - } else if (QIcon::themeName().contains(QStringLiteral("midnight"))) { + if (QIcon::themeName().contains(QStringLiteral("midnight"))) { return QStringLiteral("_midnight"); + } else if (GMainWindow::CheckDarkMode() || + QIcon::themeName().contains(QStringLiteral("dark"))) { + // Use dark icons if current OS mode is dark, or the theme contains "dark" in its name + return QStringLiteral("_dark"); } else { return QString{}; } diff --git a/src/suyu/applets/qt_software_keyboard.cpp b/src/suyu/applets/qt_software_keyboard.cpp index a1bcfa717e..ca7169e2a2 100644 --- a/src/suyu/applets/qt_software_keyboard.cpp +++ b/src/suyu/applets/qt_software_keyboard.cpp @@ -823,7 +823,9 @@ void QtSoftwareKeyboardDialog::SetControllerImage() { handheld->IsConnected() ? handheld->GetNpadStyleIndex() : player_1->GetNpadStyleIndex(); const QString theme = [] { - if (QIcon::themeName().contains(QStringLiteral("dark")) || + // Use dark icons if current OS mode is dark, or the theme contains "dark", or "midnight" in + // its name + if (GMainWindow::CheckDarkMode() || QIcon::themeName().contains(QStringLiteral("dark")) || QIcon::themeName().contains(QStringLiteral("midnight"))) { return QStringLiteral("_dark"); } else { diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index 030e4ae511..e6d14717cf 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -9,7 +9,9 @@ #include #include #include +#include #include + #include "core/hle/service/am/applet_manager.h" #include "core/loader/nca.h" #include "core/loader/nro.h" @@ -20,6 +22,9 @@ #endif #ifdef __unix__ #include +#include +#include +#include #include #include "common/linux/gamemode.h" #endif @@ -271,18 +276,6 @@ static void OverrideWindowsFont() { } #endif -bool GMainWindow::CheckDarkMode() { -#ifdef __unix__ - const QPalette test_palette(qApp->palette()); - const QColor text_color = test_palette.color(QPalette::Active, QPalette::Text); - const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window); - return (text_color.value() > window_color.value()); -#else - // TODO: Windows - return false; -#endif // __unix__ -} - GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulkan) : ui{std::make_unique()}, system{std::make_unique()}, input_subsystem{std::make_shared()}, config{std::move(config_)}, @@ -303,8 +296,6 @@ GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulk ui->setupUi(this); statusBar()->hide(); - // Check dark mode before a theme is loaded - os_dark_mode = CheckDarkMode(); startup_icon_theme = QIcon::themeName(); // fallback can only be set once, colorful theme icons are okay on both light/dark QIcon::setFallbackThemeName(QStringLiteral("colorful")); @@ -329,6 +320,7 @@ GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulk SetDefaultUIGeometry(); RestoreUIState(); + UpdateUITheme(); ConnectMenuEvents(); ConnectWidgetEvents(); @@ -449,7 +441,10 @@ GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulk SDL_EnableScreenSaver(); #endif +#ifdef __unix__ SetupPrepareForSleep(); + ListenColorSchemeChange(); +#endif QStringList args = QApplication::arguments(); @@ -1647,8 +1642,8 @@ void GMainWindow::OnDisplayTitleBars(bool show) { } } -void GMainWindow::SetupPrepareForSleep() { #ifdef __unix__ +void GMainWindow::SetupPrepareForSleep() { auto bus = QDBusConnection::systemBus(); if (bus.isConnected()) { const bool success = bus.connect( @@ -1662,8 +1657,8 @@ void GMainWindow::SetupPrepareForSleep() { } else { LOG_WARNING(Frontend, "QDBusConnection system bus is not connected"); } -#endif // __unix__ } +#endif // __unix__ void GMainWindow::OnPrepareForSleep(bool prepare_sleep) { if (emu_thread == nullptr) { @@ -4799,9 +4794,106 @@ void GMainWindow::filterBarSetChecked(bool state) { emit(OnToggleFilterBar()); } +void GMainWindow::UpdateUITheme() { + LOG_DEBUG(Frontend, "Updating UI"); + QString default_theme = QString::fromStdString(UISettings::default_theme.data()); + QString current_theme = UISettings::values.theme; + if (current_theme.isEmpty()) { + current_theme = default_theme; + } + const bool current_dark_mode = CheckDarkMode(); + + UpdateIcons(current_theme); + + /* Find the stylesheet to load */ + if (TryLoadStylesheet(current_theme)) { + return; + } + + // Reading new theme failed, loading default stylesheet + LOG_ERROR(Frontend, "Unable to open style \"{}\", fallback to the default theme", + current_theme.toStdString()); + + if (TryLoadStylesheet(QStringLiteral(":/%1").arg(default_theme))) { + return; + } + + // Reading default failed, loading empty stylesheet + LOG_ERROR(Frontend, "Unable to set default style, stylesheet file not found"); + + qApp->setStyleSheet({}); + setStyleSheet({}); +} + +void GMainWindow::UpdateIcons(const QString& theme_path) { + // Get the theme directory from its path + std::size_t last_slash = theme_path.toStdString().find_last_of("/"); + QString theme_dir = QString::fromStdString(theme_path.toStdString().substr(last_slash + 1)); + + // Append _dark to the theme name to use dark variant icons + if (CheckDarkMode()) { + LOG_DEBUG(Frontend, "Using icons from: {}", theme_dir.toStdString() + "_dark"); + QIcon::setThemeName(theme_dir + QStringLiteral("_dark")); + } else { + LOG_DEBUG(Frontend, "Using icons from: {}", theme_dir.toStdString()); + QIcon::setThemeName(theme_dir); + } + + const QString theme_directory{ + QString::fromStdString(Common::FS::GetSuyuPathString(Common::FS::SuyuPath::ThemesDir))}; + + // Set path for default icons + // Use icon resources from application binary and current theme local subdirectory, if it exists + QStringList theme_paths; + theme_paths << QString::fromStdString(":/icons") << QStringLiteral("%1").arg(theme_directory); + QIcon::setThemeSearchPaths(theme_paths); + + // Change current directory, to allow user themes to add their own icons + QDir::setCurrent(QStringLiteral("%1/%2").arg(theme_directory, UISettings::values.theme)); + + emit UpdateThemedIcons(); +} + +bool GMainWindow::TryLoadStylesheet(const QString& theme_uri) { + QString style_path; + + // Use themed stylesheet if it exists + if (CheckDarkMode()) { + style_path = theme_uri + QStringLiteral("/dark.qss"); + } else { + style_path = theme_uri + QStringLiteral("/light.qss"); + } + if (!QFile::exists(style_path)) { + LOG_INFO(Frontend, "Themed (light/dark) stylesheet could not be found, using default one"); + // Use common stylesheet if themed one does not exist + style_path = theme_uri + QStringLiteral("/style.qss"); + } + + // Loading stylesheet + QFile style_file(style_path); + if (style_file.open(QFile::ReadOnly | QFile::Text)) { + // Update the color palette before applying the stylesheet + UpdateThemePalette(); + + LOG_INFO(Frontend, "Loading stylesheet in: {}", theme_uri.toStdString()); + QTextStream ts_theme(&style_file); + qApp->setStyleSheet(ts_theme.readAll()); + setStyleSheet(ts_theme.readAll()); + SetCustomStylesheet(); + + return true; + } + // Opening the file failed + return false; +} + +bool GMainWindow::TryLoadStylesheet(const std::filesystem::path& theme_path) { + return TryLoadStylesheet(QString::fromStdString(theme_path.string() + "/")); +} + static void AdjustLinkColor() { QPalette new_pal(qApp->palette()); - if (UISettings::IsDarkTheme()) { + if (GMainWindow::CheckDarkMode()) { new_pal.setColor(QPalette::Link, QColor(0, 190, 255, 255)); } else { new_pal.setColor(QPalette::Link, QColor(0, 140, 200, 255)); @@ -4811,77 +4903,201 @@ static void AdjustLinkColor() { } } -void GMainWindow::UpdateUITheme() { - QString default_theme = QString::fromStdString(UISettings::default_theme.data()); - QString current_theme = UISettings::values.theme; - - if (current_theme.isEmpty()) { - current_theme = default_theme; - } - +void GMainWindow::UpdateThemePalette() { + QPalette themePalette(qApp->palette()); #ifdef _WIN32 - QIcon::setThemeName(current_theme); - AdjustLinkColor(); -#else - if (current_theme == QStringLiteral("default") || current_theme == QStringLiteral("colorful")) { - LOG_INFO(Frontend, "Theme is default or colorful: {}", current_theme.toStdString()); - QIcon::setThemeName(current_theme == QStringLiteral("colorful") ? current_theme - : startup_icon_theme); - QIcon::setThemeSearchPaths(QStringList(default_theme_paths)); - if (CheckDarkMode()) { - current_theme = QStringLiteral("default_dark"); + QColor dark(25, 25, 25); + QColor darkGray(100, 100, 100); + QColor gray(150, 150, 150); + QColor light(230, 230, 230); + // By default, revert fusion style set for Windows dark theme + QString style; + if (CheckDarkMode()) { + // AlternateBase is kept at rgb(233, 231, 227) or rgb(245, 245, 245) on Windows dark + // palette, fix this. Sometimes, it even is rgb(0, 0, 0), but uses a very light gray for + // alternate rows, do not know why + if (themePalette.alternateBase().color() == QColor(233, 231, 227) || + themePalette.alternateBase().color() == QColor(245, 245, 245) || + themePalette.alternateBase().color() == QColor(0, 0, 0)) { + themePalette.setColor(QPalette::AlternateBase, dark); + alternate_base_modified = true; } + // Use fusion theme, since its close to windowsvista, but works well with a dark palette + style = QStringLiteral("fusion"); } else { - LOG_INFO(Frontend, "Theme is NOT default or colorful: {}", current_theme.toStdString()); - QIcon::setThemeName(current_theme); - // Use icon resources from application binary and current theme subdirectory if it exists - QStringList theme_paths; - theme_paths << QString::fromStdString(":/icons") - << QStringLiteral("%1/%2/icons") - .arg(QString::fromStdString( - Common::FS::GetYuzuPathString(Common::FS::YuzuPath::ThemesDir)), - current_theme); - QIcon::setThemeSearchPaths(theme_paths); - AdjustLinkColor(); + // Reset AlternateBase if it has been modified + if (alternate_base_modified) { + themePalette.setColor(QPalette::AlternateBase, QColor(245, 245, 245)); + alternate_base_modified = false; + } + // Reset Windows theme to the default + style = QStringLiteral("windowsvista"); + } + LOG_DEBUG(Frontend, "Using style: {}", style.toStdString()); + qApp->setStyle(style); +#else + if (CheckDarkMode()) { + // Set Dark palette on non Windows platforms (that may not have a dark palette) + LOG_INFO(Frontend, "Using custom dark palette"); + themePalette.setColor(QPalette::Window, QColor(53, 53, 53)); + themePalette.setColor(QPalette::WindowText, Qt::white); + themePalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(127, 127, 127)); + themePalette.setColor(QPalette::Base, QColor(42, 42, 42)); + themePalette.setColor(QPalette::AlternateBase, QColor(66, 66, 66)); + themePalette.setColor(QPalette::ToolTipBase, Qt::white); + themePalette.setColor(QPalette::ToolTipText, QColor(53, 53, 53)); + themePalette.setColor(QPalette::Text, Qt::white); + themePalette.setColor(QPalette::Disabled, QPalette::Text, QColor(127, 127, 127)); + themePalette.setColor(QPalette::Dark, QColor(35, 35, 35)); + themePalette.setColor(QPalette::Shadow, QColor(20, 20, 20)); + themePalette.setColor(QPalette::Button, QColor(53, 53, 53)); + themePalette.setColor(QPalette::ButtonText, Qt::white); + themePalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(127, 127, 127)); + themePalette.setColor(QPalette::BrightText, Qt::red); + themePalette.setColor(QPalette::Link, QColor(42, 130, 218)); + themePalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); + themePalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(80, 80, 80)); + themePalette.setColor(QPalette::HighlightedText, Qt::white); + themePalette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(127, 127, 127)); + } else { + LOG_INFO(Frontend, "Using standard palette"); + // Reset light palette on non Windows platforms + themePalette = this->style()->standardPalette(); } #endif - if (current_theme != default_theme) { - QString theme_uri{current_theme + QStringLiteral("style.qss")}; - if (tryLoadStylesheet(theme_uri)) { - return; - } - - // Reading new theme failed, loading default stylesheet - LOG_ERROR(Frontend, "Unable to open style \"{}\", fallback to the default theme", - current_theme.toStdString()); - - current_theme = default_theme; - theme_uri = QStringLiteral(":%1/style.qss").arg(default_theme); - if (tryLoadStylesheet(theme_uri)) { - return; - } - - // Reading default failed, loading empty stylesheet - LOG_ERROR(Frontend, "Unable to set style \"{}\", stylesheet file not found", - current_theme.toStdString()); - - qApp->setStyleSheet({}); - setStyleSheet({}); - } + qApp->setPalette(themePalette); + AdjustLinkColor(); } -bool GMainWindow::tryLoadStylesheet(const QString& theme_path) { - QFile theme_file(theme_path); - if (theme_file.open(QFile::ReadOnly | QFile::Text)) { - LOG_INFO(Frontend, "Loading style in: {}", theme_path.toStdString()); - QTextStream ts(&theme_file); - qApp->setStyleSheet(ts.readAll()); - setStyleSheet(ts.readAll()); - return true; +void GMainWindow::SetCustomStylesheet() { + setStyleSheet(QStringLiteral("QStatusBar::item { border: none; }")); + + // Set "dark" qss property value, that may be used in stylesheets + bool is_dark_mode = CheckDarkMode(); + if (renderer_status_button) { + renderer_status_button->setProperty("dark", is_dark_mode); } - // Opening the file failed + if (gpu_accuracy_button) { + gpu_accuracy_button->setProperty("dark", is_dark_mode); + } +#ifdef _WIN32 + // Windows dark mode uses "fusion" style. Make it look like more "windowsvista" light style + if (is_dark_mode) { + /* the groove expands to the size of the slider by default. by giving it a height, it has a + fixed size */ + /* handle is placed by default on the contents rect of the groove. Negative margin expands + it outside the groove */ + setStyleSheet(QStringLiteral("QSlider:horizontal{ height:30px; }\ + QSlider::sub-page:horizontal { background-color: palette(highlight); }\ + QSlider::add-page:horizontal { background-color: palette(midlight);}\ + QSlider::groove:horizontal { border-width: 1px; margin: 1px 0; height: 2px;}\ + QSlider::handle:horizontal { border-width: 1px; border-style: solid; border-color: palette(dark);\ + width: 10px; margin: -10px 0px; }\ + QSlider::handle { background-color: palette(button); }\ + QSlider::handle:hover { background-color: palette(highlight); }")); + } +#endif +} + +#ifdef __unix__ +bool GMainWindow::ListenColorSchemeChange() { + auto bus = QDBusConnection::sessionBus(); + if (bus.isConnected()) { + const QString dbus_service = QStringLiteral("org.freedesktop.portal.Desktop"); + const QString dbus_path = QStringLiteral("/org/freedesktop/portal/desktop"); + const QString dbus_interface = QStringLiteral("org.freedesktop.portal.Settings"); + const QString dbus_method = QStringLiteral("SettingChanged"); + QStringList dbus_arguments; + dbus_arguments << QStringLiteral("org.freedesktop.appearance") + << QStringLiteral("color-scheme"); + const QString dbus_signature = QStringLiteral("ssv"); + + LOG_INFO(Frontend, "Connected to DBus, listening for OS theme changes"); + return bus.connect(dbus_service, dbus_path, dbus_interface, dbus_method, dbus_arguments, + dbus_signature, this, SLOT(UpdateUITheme())); + } + LOG_WARNING(Frontend, "Unable to connect to DBus to listen for OS theme changes"); return false; } +#endif + +bool GMainWindow::CheckDarkMode() { + const QPalette current_palette(qApp->palette()); +#ifdef __unix__ + QProcess process; + QStringList gdbus_arguments; + + // Using the freedesktop specifications for checking dark mode + LOG_INFO(Frontend, "Retrieving theme from freedesktop color-scheme..."); + gdbus_arguments << QStringLiteral("--dest=org.freedesktop.portal.Desktop") + << QStringLiteral("--object-path /org/freedesktop/portal/desktop") + << QStringLiteral("--method org.freedesktop.portal.Settings.Read " + "org.freedesktop.appearance color-scheme"); + process.start(QStringLiteral("gdbus call --session"), gdbus_arguments); + process.waitForFinished(1000); + QByteArray dbus_output = process.readAllStandardOutput(); + + if (!dbus_output.isEmpty()) { + const int systemColorSchema = QString::fromUtf8(dbus_output).trimmed().right(1).toInt(); + return systemColorSchema == 1; + } + + // Try alternative for Gnome if the previous one failed + QStringList gsettings_arguments; + gsettings_arguments << QStringLiteral("get") + << QStringLiteral("org.gnome.desktop.interface") + << QStringLiteral("color-scheme"); + + LOG_DEBUG(Frontend, "failed, retrieving theme from gsettings color-scheme..."); + process.start(QStringLiteral("gsettings"), gsettings_arguments); + process.waitForFinished(1000); + QByteArray gsettings_output = process.readAllStandardOutput(); + + // Try older gtk-theme method if the previous one failed + if (gsettings_output.isEmpty()) { + LOG_INFO(Frontend, "failed, retrieving theme from gtk-theme..."); + gsettings_arguments.takeLast(); + gsettings_arguments << QStringLiteral("gtk-theme"); + + process.start(QStringLiteral("gsettings"), gsettings_arguments); + process.waitForFinished(1000); + gsettings_output = process.readAllStandardOutput(); + } + + // Interpret gsettings value if it succeeded + if (!gsettings_output.isEmpty()) { + QString systeme_theme = QString::fromUtf8(gsettings_output); + LOG_DEBUG(Frontend, "Gsettings output: {}", systeme_theme.toStdString()); + return systeme_theme.contains(QStringLiteral("dark"), Qt::CaseInsensitive); + } + LOG_DEBUG(Frontend, "failed, retrieving theme from palette"); +#endif + // Use default method based on palette swap by OS. + // It is the only method on Windows with Qt 5. + // Windows needs QT_QPA_PLATFORM env variable set to windows:darkmode=2 to force palette change + return (current_palette.color(QPalette::WindowText).lightness() > + current_palette.color(QPalette::Window).lightness()); +} + +void GMainWindow::changeEvent(QEvent* event) { + // PaletteChange event appears to only reach so far into the GUI, explicitly asking to + // UpdateUITheme is a decent work around + if (event->type() == QEvent::PaletteChange || + event->type() == QEvent::ApplicationPaletteChange) { + LOG_INFO(Frontend, + "Window color palette changed by event: {} (QEvent::PaletteChange is: {})", + event->type(), QEvent::PaletteChange); + const QPalette test_palette(qApp->palette()); + // Keeping eye on QPalette::Window to avoid looping. QPalette::Text might be useful too + const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window); + + if (last_window_color != window_color) { + last_window_color = window_color; + + UpdateUITheme(); + } + } else QWidget::changeEvent(event); +} void GMainWindow::LoadTranslation() { bool loaded; @@ -4935,26 +5151,6 @@ void GMainWindow::SetGamemodeEnabled(bool state) { } #endif -void GMainWindow::changeEvent(QEvent* event) { -#ifdef __unix__ - // PaletteChange event appears to only reach so far into the GUI, explicitly asking to - // UpdateUITheme is a decent work around - if (event->type() == QEvent::PaletteChange) { - const QPalette test_palette(qApp->palette()); - const QString& current_theme = UISettings::values.theme; - // Keeping eye on QPalette::Window to avoid looping. QPalette::Text might be useful too - static QColor last_window_color; - const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window); - if (last_window_color != window_color && (current_theme == QStringLiteral("default") || - current_theme == QStringLiteral("colorful"))) { - UpdateUITheme(); - } - last_window_color = window_color; - } -#endif // __unix__ - QWidget::changeEvent(event); -} - Service::AM::FrontendAppletParameters GMainWindow::ApplicationAppletParameters() { return Service::AM::FrontendAppletParameters{ .applet_id = Service::AM::AppletId::Application, diff --git a/src/suyu/main.h b/src/suyu/main.h index 6bbcdd7c58..d0f1bd96e6 100644 --- a/src/suyu/main.h +++ b/src/suyu/main.h @@ -25,9 +25,8 @@ #include "suyu/util/controller_navigation.h" #ifdef __unix__ +#include #include -#include -#include #endif class QtConfig; @@ -165,14 +164,9 @@ class GMainWindow : public QMainWindow { CREATE_SHORTCUT_MSGBOX_APPVOLATILE_WARNING, }; - /** - * Try to load a stylesheet from its path. If the path starts with ":/", its embedded in the app - * @returns true if the text file could be opened as read-only - */ - bool tryLoadStylesheet(const QString& theme_path); - public: void filterBarSetChecked(bool state); + static bool CheckDarkMode(); void UpdateUITheme(); explicit GMainWindow(std::unique_ptr config_, bool has_broken_vulkan); ~GMainWindow() override; @@ -265,12 +259,44 @@ private: void SetDefaultUIGeometry(); void RestoreUIState(); + /** + * Load the icons used by the current theme. Use dark icons if the current mode is dark + */ + void UpdateIcons(const QString& theme_used); + /** + * Set the palette used by the stylsheet for the dark/light mode selected, according to the OS + */ + void UpdateThemePalette(); + /** + * Try to load a stylesheet from its URI. + * If the path starts with ":/", its embedded in the app, otherwise its in a local directory + * @returns true if the text file could be opened as read-only + */ + bool TryLoadStylesheet(const QString& theme_uri); + /** + * Try to load a stylesheet from filesystem path + * @returns true if the text file could be opened as read-only + */ + bool TryLoadStylesheet(const std::filesystem::path& theme_path); + /** + * Default customizations to the stylesheets + */ + void SetCustomStylesheet(); +#ifdef __unix__ + /** + * Create a signal to update the UI theme when the OS color scheme is changed + * @returns true if we could connect to dbus + */ + bool ListenColorSchemeChange(); +#endif void ConnectWidgetEvents(); void ConnectMenuEvents(); void UpdateMenuState(); +#ifdef __unix__ void SetupPrepareForSleep(); +#endif void PreventOSSleep(); void AllowOSSleep(); @@ -401,6 +427,7 @@ private slots: void ResetWindowSize720(); void ResetWindowSize900(); void ResetWindowSize1080(); + void UpdateUITheme(); void OnAlbum(); void OnCabinet(Service::NFP::CabinetMode mode); void OnMiiEdit(); @@ -447,7 +474,7 @@ private: void OpenURL(const QUrl& url); void LoadTranslation(); void OpenPerGameConfiguration(u64 title_id, const std::string& file_name); - bool CheckDarkMode(); + bool CheckSystemArchiveDecryption(); bool CheckFirmwarePresence(); void SetFirmwareVersion(); void ConfigureFilesystemProvider(const std::string& filepath); @@ -531,7 +558,8 @@ private: QTimer update_input_timer; QString startup_icon_theme; - bool os_dark_mode = false; + bool alternate_base_modified = false; + QColor last_window_color; // FS std::shared_ptr vfs; diff --git a/src/suyu/startup_checks.cpp b/src/suyu/startup_checks.cpp index 292fbcbbaa..32011f6d5c 100644 --- a/src/suyu/startup_checks.cpp +++ b/src/suyu/startup_checks.cpp @@ -5,6 +5,8 @@ #ifdef _WIN32 #include +#include +#include #include #include #elif defined(SUYU_UNIX) @@ -36,6 +38,9 @@ void CheckVulkan() { bool CheckEnvVars(bool* is_child) { #ifdef _WIN32 + // Force adapting theme to follow Windows dark mode + qputenv("QT_QPA_PLATFORM", QByteArray("windows:darkmode=2")); + // Check environment variable to see if we are the child char variable_contents[8]; const DWORD startup_check_var = diff --git a/src/suyu/uisettings.cpp b/src/suyu/uisettings.cpp index e382afdf61..8d65905104 100644 --- a/src/suyu/uisettings.cpp +++ b/src/suyu/uisettings.cpp @@ -31,11 +31,6 @@ const Themes included_themes{{ {"Midnight Blue Colorful", ":/colorful_midnight_blue/"}, }}; -bool IsDarkTheme() { - return UISettings::values.theme.contains(QStringLiteral("dark")) || - UISettings::values.theme.contains(QStringLiteral("midnight")); -} - Values values = {}; u32 CalculateWidth(u32 height, Settings::AspectRatio ratio) { diff --git a/src/suyu/uisettings.h b/src/suyu/uisettings.h index 7713c8c73a..6bb903efa7 100644 --- a/src/suyu/uisettings.h +++ b/src/suyu/uisettings.h @@ -35,12 +35,6 @@ extern template class Setting; namespace UISettings { -/** - * Check if the theme is dark - * @returns true if the current theme contains the string "dark" in its name - */ -bool IsDarkTheme(); - struct ContextualShortcut { std::string keyseq; std::string controller_keyseq; @@ -54,13 +48,7 @@ struct Shortcut { ContextualShortcut shortcut; }; -static constexpr std::string_view default_theme{ -#ifdef _WIN32 - "colorful_dark" -#else - "colorful" -#endif -}; +static constexpr std::string_view default_theme{"colorful"}; using Themes = std::array, 6>; extern const Themes included_themes; From 104e6c3ff755e7584fb86375c7b5b84711959e6d Mon Sep 17 00:00:00 2001 From: flodavid Date: Sun, 4 Feb 2024 04:05:50 +0100 Subject: [PATCH 05/28] Rework themes to easily use light/dark palette, using only different icons - Renamed themes: - "colorful" to "default" and "colorful_dark" to "default_dark" - "default" to "monochrome" and "default_dark" to "monochrome_dark" - "colorful_midnight_blue" to "qdarkstyle_midnight_blue" - "qdarkstyle_midnight_blue" to "qdarkstyle_midnight_blue_monochrome" - qdarkstyle is renamed from "Dark" to "Mine Shaft" in the UI - default and monochrome themes all use the same qss stylesheet - Remove the ability to select "default_dark" directly - Default has better support for light and dark - Controller and Keyboard applets icons and style adapt to dark mode - Add "qdarkstyle_monochrome" theme - Remove duplicated icon files --- .reuse/dep5 | 52 +- dist/icons/overlay/osk_button_backspace.png | Bin 1272 -> 2938 bytes dist/icons/overlay/overlay.qrc | 60 +- .../arrow_left.png} | Bin .../arrow_right.png} | Bin .../button_A.png} | Bin .../button_B.png} | Bin .../button_L.png} | Bin .../button_R.png} | Bin .../button_X.png} | Bin .../button_Y.png} | Bin .../button_minus.png} | Bin .../button_plus.png} | Bin .../button_press_stick.png} | Bin .../controller_dual_joycon.png} | Bin .../controller_handheld.png} | Bin .../controller_pro.png} | Bin .../controller_single_joycon_left.png} | Bin .../controller_single_joycon_left_a.png} | Bin .../controller_single_joycon_left_b.png} | Bin .../controller_single_joycon_left_x.png} | Bin .../controller_single_joycon_left_y.png} | Bin .../controller_single_joycon_right.png} | Bin .../osk_button_B.png} | Bin .../osk_button_B_disabled.png} | Bin .../osk_button_Y.png} | Bin .../osk_button_Y_disabled.png} | Bin .../osk_button_backspace.png} | Bin .../osk_button_plus.png} | Bin .../osk_button_plus_disabled.png} | Bin .../osk_button_shift.png} | Bin .../osk_button_shift_on.png} | Bin .../colorful/icons/16x16/connected.png | Bin 575 -> 0 bytes .../icons/16x16/connected_notification.png | Bin 760 -> 0 bytes .../colorful/icons/16x16/disconnected.png | Bin 648 -> 0 bytes dist/qt_themes/colorful/icons/16x16/lock.png | Bin 330 -> 0 bytes .../colorful/icons/256x256/plus_folder.png | Bin 4643 -> 0 bytes .../colorful/icons/48x48/bad_folder.png | Bin 528 -> 0 bytes dist/qt_themes/colorful/icons/48x48/chip.png | Bin 582 -> 0 bytes .../qt_themes/colorful/icons/48x48/folder.png | Bin 460 -> 0 bytes .../colorful/icons/48x48/list-add.png | Bin 204 -> 0 bytes .../colorful/icons/48x48/sd_card.png | Bin 228 -> 0 bytes dist/qt_themes/colorful/icons/48x48/star.png | Bin 1108 -> 0 bytes dist/qt_themes/colorful/style.qrc | 30 - .../qt_themes/colorful_dark/icons/index.theme | 8 - dist/qt_themes/colorful_dark/style.qrc | 57 -- .../colorful_midnight_blue/icons/index.theme | 8 - .../colorful_midnight_blue/style.qrc | 63 -- dist/qt_themes/default/default.qrc | 20 +- .../icons/16x16/checked.png | Bin .../icons/16x16/failed.png | Bin .../icons/16x16/info.png | Bin dist/qt_themes/default/icons/16x16/lock.png | Bin 318 -> 330 bytes .../icons/16x16/sync.png | Bin .../icons/16x16/view-refresh.png | Bin .../default/icons/256x256/plus_folder.png | Bin 1948 -> 4643 bytes .../default/icons/48x48/bad_folder.png | Bin 1007 -> 528 bytes dist/qt_themes/default/icons/48x48/chip.png | Bin 511 -> 582 bytes dist/qt_themes/default/icons/48x48/folder.png | Bin 535 -> 460 bytes .../default/icons/48x48/list-add.png | Bin 204 -> 204 bytes .../icons/48x48/no_avatar.png | Bin .../qt_themes/default/icons/48x48/sd_card.png | Bin 198 -> 228 bytes dist/qt_themes/default/icons/48x48/star.png | Bin 1029 -> 1108 bytes dist/qt_themes/default/icons/index.theme | 5 +- dist/qt_themes/default/style.qss | 116 +-- .../icons/16x16/lock.png | Bin .../icons/16x16/view-refresh.png | Bin dist/qt_themes/default_dark/icons/index.theme | 2 +- dist/qt_themes/default_dark/style.qrc | 25 - dist/qt_themes/default_dark/style.qss | 687 ------------------ dist/qt_themes/monochrome/icons.qrc | 32 + .../qt_themes/monochrome/icons/16x16/lock.png | Bin 0 -> 318 bytes .../monochrome/icons/256x256/plus_folder.png | Bin 0 -> 1948 bytes .../monochrome/icons/48x48/bad_folder.png | Bin 0 -> 1007 bytes .../qt_themes/monochrome/icons/48x48/chip.png | Bin 0 -> 511 bytes .../monochrome/icons/48x48/folder.png | Bin 0 -> 535 bytes .../monochrome/icons/48x48/list-add.png | Bin 0 -> 204 bytes .../monochrome/icons/48x48/sd_card.png | Bin 0 -> 198 bytes .../qt_themes/monochrome/icons/48x48/star.png | Bin 0 -> 1029 bytes .../icons/index.theme | 7 +- dist/qt_themes/monochrome/style.qrc | 5 + .../icons/16x16/lock.png | Bin .../icons/256x256/plus_folder.png | Bin .../icons/48x48/bad_folder.png | Bin .../icons/48x48/chip.png | Bin .../icons/48x48/folder.png | Bin .../icons/48x48/list-add.png | Bin .../icons/48x48/no_avatar.png | Bin .../icons/48x48/sd_card.png | Bin .../icons/48x48/star.png | Bin .../monochrome_dark/icons/index.theme | 14 + .../qdarkstyle/{style.qss => dark.qss} | 85 --- dist/qt_themes/qdarkstyle/icons.qrc | 51 ++ .../qdarkstyle/icons/16x16/connected.png | Bin 575 -> 0 bytes .../icons/16x16/connected_notification.png | Bin 760 -> 0 bytes .../qdarkstyle/icons/16x16/disconnected.png | Bin 648 -> 0 bytes .../qdarkstyle/icons/16x16/view-refresh.png | Bin 362 -> 0 bytes dist/qt_themes/qdarkstyle/icons/index.theme | 14 +- dist/qt_themes/qdarkstyle/style.qrc | 63 +- .../{style.qss => dark.qss} | 89 --- .../qdarkstyle_midnight_blue/icons.qrc | 224 ++++++ .../icons/index.theme | 14 +- .../qdarkstyle_midnight_blue/style.qrc | 229 +----- .../icons.qrc | 33 + .../icons/index.theme | 14 + .../style.qrc | 8 + .../qt_themes/qdarkstyle_monochrome/icons.qrc | 33 + .../qdarkstyle_monochrome/icons/index.theme | 14 + .../qt_themes/qdarkstyle_monochrome/style.qrc | 8 + src/suyu/applets/qt_software_keyboard.cpp | 160 ++-- src/suyu/applets/qt_software_keyboard.h | 9 + src/suyu/main.cpp | 17 +- src/suyu/main.h | 1 - src/suyu/uisettings.cpp | 12 +- src/suyu/uisettings.h | 2 +- 115 files changed, 685 insertions(+), 1586 deletions(-) rename dist/icons/{overlay/arrow_left_dark.png => overlay_dark/arrow_left.png} (100%) rename dist/icons/{overlay/arrow_right_dark.png => overlay_dark/arrow_right.png} (100%) rename dist/icons/{overlay/button_A_dark.png => overlay_dark/button_A.png} (100%) rename dist/icons/{overlay/button_B_dark.png => overlay_dark/button_B.png} (100%) rename dist/icons/{overlay/button_L_dark.png => overlay_dark/button_L.png} (100%) rename dist/icons/{overlay/button_R_dark.png => overlay_dark/button_R.png} (100%) rename dist/icons/{overlay/button_X_dark.png => overlay_dark/button_X.png} (100%) rename dist/icons/{overlay/button_Y_dark.png => overlay_dark/button_Y.png} (100%) rename dist/icons/{overlay/button_minus_dark.png => overlay_dark/button_minus.png} (100%) rename dist/icons/{overlay/button_plus_dark.png => overlay_dark/button_plus.png} (100%) rename dist/icons/{overlay/button_press_stick_dark.png => overlay_dark/button_press_stick.png} (100%) rename dist/icons/{overlay/controller_dual_joycon_dark.png => overlay_dark/controller_dual_joycon.png} (100%) rename dist/icons/{overlay/controller_handheld_dark.png => overlay_dark/controller_handheld.png} (100%) rename dist/icons/{overlay/controller_pro_dark.png => overlay_dark/controller_pro.png} (100%) rename dist/icons/{overlay/controller_single_joycon_left_dark.png => overlay_dark/controller_single_joycon_left.png} (100%) rename dist/icons/{overlay/controller_single_joycon_left_a_dark.png => overlay_dark/controller_single_joycon_left_a.png} (100%) rename dist/icons/{overlay/controller_single_joycon_left_b_dark.png => overlay_dark/controller_single_joycon_left_b.png} (100%) rename dist/icons/{overlay/controller_single_joycon_left_x_dark.png => overlay_dark/controller_single_joycon_left_x.png} (100%) rename dist/icons/{overlay/controller_single_joycon_left_y_dark.png => overlay_dark/controller_single_joycon_left_y.png} (100%) rename dist/icons/{overlay/controller_single_joycon_right_dark.png => overlay_dark/controller_single_joycon_right.png} (100%) rename dist/icons/{overlay/osk_button_B_dark.png => overlay_dark/osk_button_B.png} (100%) rename dist/icons/{overlay/osk_button_B_dark_disabled.png => overlay_dark/osk_button_B_disabled.png} (100%) rename dist/icons/{overlay/osk_button_Y_dark.png => overlay_dark/osk_button_Y.png} (100%) rename dist/icons/{overlay/osk_button_Y_dark_disabled.png => overlay_dark/osk_button_Y_disabled.png} (100%) rename dist/icons/{overlay/osk_button_backspace_dark.png => overlay_dark/osk_button_backspace.png} (100%) rename dist/icons/{overlay/osk_button_plus_dark.png => overlay_dark/osk_button_plus.png} (100%) rename dist/icons/{overlay/osk_button_plus_dark_disabled.png => overlay_dark/osk_button_plus_disabled.png} (100%) rename dist/icons/{overlay/osk_button_shift_dark.png => overlay_dark/osk_button_shift.png} (100%) rename dist/icons/{overlay/osk_button_shift_on_dark.png => overlay_dark/osk_button_shift_on.png} (100%) delete mode 100644 dist/qt_themes/colorful/icons/16x16/connected.png delete mode 100644 dist/qt_themes/colorful/icons/16x16/connected_notification.png delete mode 100644 dist/qt_themes/colorful/icons/16x16/disconnected.png delete mode 100644 dist/qt_themes/colorful/icons/16x16/lock.png delete mode 100644 dist/qt_themes/colorful/icons/256x256/plus_folder.png delete mode 100644 dist/qt_themes/colorful/icons/48x48/bad_folder.png delete mode 100644 dist/qt_themes/colorful/icons/48x48/chip.png delete mode 100644 dist/qt_themes/colorful/icons/48x48/folder.png delete mode 100644 dist/qt_themes/colorful/icons/48x48/list-add.png delete mode 100644 dist/qt_themes/colorful/icons/48x48/sd_card.png delete mode 100644 dist/qt_themes/colorful/icons/48x48/star.png delete mode 100644 dist/qt_themes/colorful/style.qrc delete mode 100644 dist/qt_themes/colorful_dark/icons/index.theme delete mode 100644 dist/qt_themes/colorful_dark/style.qrc delete mode 100644 dist/qt_themes/colorful_midnight_blue/icons/index.theme delete mode 100644 dist/qt_themes/colorful_midnight_blue/style.qrc rename dist/qt_themes/{colorful => default}/icons/16x16/checked.png (100%) rename dist/qt_themes/{colorful => default}/icons/16x16/failed.png (100%) rename dist/qt_themes/{colorful => default}/icons/16x16/info.png (100%) rename dist/qt_themes/{colorful => default}/icons/16x16/sync.png (100%) rename dist/qt_themes/{colorful => default}/icons/16x16/view-refresh.png (100%) rename dist/qt_themes/{colorful => default}/icons/48x48/no_avatar.png (100%) rename dist/qt_themes/{colorful_dark => default_dark}/icons/16x16/lock.png (100%) rename dist/qt_themes/{colorful_dark => default_dark}/icons/16x16/view-refresh.png (100%) delete mode 100644 dist/qt_themes/default_dark/style.qrc delete mode 100644 dist/qt_themes/default_dark/style.qss create mode 100644 dist/qt_themes/monochrome/icons.qrc create mode 100644 dist/qt_themes/monochrome/icons/16x16/lock.png create mode 100644 dist/qt_themes/monochrome/icons/256x256/plus_folder.png create mode 100644 dist/qt_themes/monochrome/icons/48x48/bad_folder.png create mode 100644 dist/qt_themes/monochrome/icons/48x48/chip.png create mode 100644 dist/qt_themes/monochrome/icons/48x48/folder.png create mode 100644 dist/qt_themes/monochrome/icons/48x48/list-add.png create mode 100644 dist/qt_themes/monochrome/icons/48x48/sd_card.png create mode 100644 dist/qt_themes/monochrome/icons/48x48/star.png rename dist/qt_themes/{colorful => monochrome}/icons/index.theme (60%) create mode 100644 dist/qt_themes/monochrome/style.qrc rename dist/qt_themes/{qdarkstyle => monochrome_dark}/icons/16x16/lock.png (100%) rename dist/qt_themes/{qdarkstyle => monochrome_dark}/icons/256x256/plus_folder.png (100%) rename dist/qt_themes/{qdarkstyle => monochrome_dark}/icons/48x48/bad_folder.png (100%) rename dist/qt_themes/{qdarkstyle => monochrome_dark}/icons/48x48/chip.png (100%) rename dist/qt_themes/{qdarkstyle => monochrome_dark}/icons/48x48/folder.png (100%) rename dist/qt_themes/{qdarkstyle => monochrome_dark}/icons/48x48/list-add.png (100%) rename dist/qt_themes/{qdarkstyle => monochrome_dark}/icons/48x48/no_avatar.png (100%) rename dist/qt_themes/{qdarkstyle => monochrome_dark}/icons/48x48/sd_card.png (100%) rename dist/qt_themes/{qdarkstyle => monochrome_dark}/icons/48x48/star.png (100%) create mode 100644 dist/qt_themes/monochrome_dark/icons/index.theme rename dist/qt_themes/qdarkstyle/{style.qss => dark.qss} (93%) create mode 100644 dist/qt_themes/qdarkstyle/icons.qrc delete mode 100644 dist/qt_themes/qdarkstyle/icons/16x16/connected.png delete mode 100644 dist/qt_themes/qdarkstyle/icons/16x16/connected_notification.png delete mode 100644 dist/qt_themes/qdarkstyle/icons/16x16/disconnected.png delete mode 100644 dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png rename dist/qt_themes/qdarkstyle_midnight_blue/{style.qss => dark.qss} (95%) create mode 100644 dist/qt_themes/qdarkstyle_midnight_blue/icons.qrc create mode 100644 dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc create mode 100644 dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons/index.theme create mode 100644 dist/qt_themes/qdarkstyle_midnight_blue_monochrome/style.qrc create mode 100644 dist/qt_themes/qdarkstyle_monochrome/icons.qrc create mode 100644 dist/qt_themes/qdarkstyle_monochrome/icons/index.theme create mode 100644 dist/qt_themes/qdarkstyle_monochrome/style.qrc diff --git a/.reuse/dep5 b/.reuse/dep5 index baf1354bf6..9779726e3f 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -5,10 +5,13 @@ Comment: It is best to use this file to record copyright information about Files: dist/english_plurals/* dist/icons/controller/*.png dist/icons/overlay/*.png + dist/icons/overlay_dark/*.png dist/languages/* dist/qt_themes/*/icons/48x48/sd_card.png dist/qt_themes/*/icons/index.theme dist/qt_themes/default/style.qss + dist/qt_themes/*/icons.qrc + dist/qt_themes/*/style.qrc Copyright: yuzu Emulator Project suyu Emulator Project License: GPL-2.0-or-later @@ -22,8 +25,7 @@ Copyright: suyu Emulator Project License: GPL-2.0-or-later Files: dist/qt_themes/qdarkstyle*/LICENSE.* - dist/qt_themes/qdarkstyle*/style.qrc - dist/qt_themes/qdarkstyle*/style.qss + dist/qt_themes/qdarkstyle*/dark.qss Copyright: 2013 Colin Duquesnoy 2019 Daniel Cosmo Pizetta License: MIT @@ -33,28 +35,28 @@ Copyright: 2013 Colin Duquesnoy 2019 Daniel Cosmo Pizetta License: CC-BY-4.0 -Files: dist/qt_themes/default/icons/256x256/plus_folder.png - dist/qt_themes/default/icons/48x48/bad_folder.png - dist/qt_themes/default/icons/48x48/chip.png - dist/qt_themes/default/icons/48x48/folder.png - dist/qt_themes/default/icons/48x48/star.png - dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png - dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png - dist/qt_themes/qdarkstyle/icons/48x48/chip.png - dist/qt_themes/qdarkstyle/icons/48x48/folder.png - dist/qt_themes/qdarkstyle/icons/48x48/star.png +Files: dist/qt_themes/monochrome/icons/256x256/plus_folder.png + dist/qt_themes/monochrome/icons/48x48/bad_folder.png + dist/qt_themes/monochrome/icons/48x48/chip.png + dist/qt_themes/monochrome/icons/48x48/folder.png + dist/qt_themes/monochrome/icons/48x48/star.png + dist/qt_themes/monochrome_dark/icons/48x48/bad_folder.png + dist/qt_themes/monochrome_dark/icons/48x48/chip.png + dist/qt_themes/monochrome_dark/icons/48x48/folder.png + dist/qt_themes/monochrome_dark/icons/48x48/star.png + dist/qt_themes/monochrome_dark/icons/256x256/plus_folder.png Copyright: Refactoring UI Inc. License: MIT Comment: https://github.com/tailwindlabs/heroicons -Files: dist/qt_themes/colorful/icons/16x16/lock.png - dist/qt_themes/colorful/icons/256x256/plus_folder.png - dist/qt_themes/colorful/icons/48x48/bad_folder.png - dist/qt_themes/colorful/icons/48x48/chip.png - dist/qt_themes/colorful/icons/48x48/folder.png - dist/qt_themes/colorful_dark/icons/16x16/lock.png - dist/qt_themes/colorful/icons/16x16/info.png - dist/qt_themes/colorful/icons/16x16/sync.png +Files: dist/qt_themes/default/icons/16x16/lock.png + dist/qt_themes/default/icons/256x256/plus_folder.png + dist/qt_themes/default/icons/48x48/bad_folder.png + dist/qt_themes/default/icons/48x48/chip.png + dist/qt_themes/default/icons/48x48/folder.png + dist/qt_themes/default_dark/icons/16x16/lock.png + dist/qt_themes/default/icons/16x16/info.png + dist/qt_themes/default/icons/16x16/sync.png Copyright: Icons8 License: MIT Comment: https://github.com/icons8/flat-color-icons @@ -70,15 +72,15 @@ Files: dist/qt_themes/*/icons/48x48/no_avatar.png Copyright: Ionic (http://ionic.io/) License: MIT -Files: dist/qt_themes/colorful/icons/48x48/star.png - dist/qt_themes/colorful/icons/16x16/checked.png - dist/qt_themes/colorful/icons/16x16/failed.png +Files: dist/qt_themes/default/icons/48x48/star.png + dist/qt_themes/default/icons/16x16/checked.png + dist/qt_themes/default/icons/16x16/failed.png Copyright: SVG Repo License: CC0-1.0 Files: dist/qt_themes/*/icons/16x16/view-refresh.png - dist/qt_themes/default/icons/16x16/lock.png - dist/qt_themes/qdarkstyle/icons/16x16/lock.png + dist/qt_themes/monochrome/icons/16x16/lock.png + dist/qt_themes/monochrome_dark/icons/16x16/lock.png Copyright: Google, Inc. License: Apache-2.0 diff --git a/dist/icons/overlay/osk_button_backspace.png b/dist/icons/overlay/osk_button_backspace.png index b7dc33228250bc2af38d43d24d05c2c25cd73a2b..b212efbbc3301cb6cf45863ef2defefd7cfc69ae 100644 GIT binary patch literal 2938 zcmV-=3x)KFP)uq`Zoshq!_S2zX8&7#L{o>+3r{4XX+2!McR`QE*IHy=KHSOyDKpZW9WcQ0JH@RPvvoXSCAbVPy70R%i3cXoC@Fg!e5 zq0J%ibO6tV!1I#UM`8D01u_K?@Lb90@;!_)&(S7u!GZ;C)z#G>2cB27J_@`4DUca} zfaj|A_Vx{?G((j`;CTahE&!gts~i+YM=6jAfPm)9Op5-9*3Z)BkW1EIxO7R+^DnKB z!tQ7Vf(HnA)&kEhHp#26umAI$Idi1vX|wTD*k%kM7x3_y{sNEdp8%eH1pw|92(kwP z92qY7K0VKkHX$!vy0iuRi-D)l#!q28wF1EbWZ?NB@T{>(9Pr5CpbQfB+xW4yC7xQ^ z&}-{QV{giN%Q^p`#y*NoPym^g6F&oD}TEj;SSpPv9%?hWsH_Tw0QC2 z&(oGIw*KPSb8Z>x_zgdc`T3NuFH$f7nQzOlfaf!DgqnCP@Z87$eGb8fZT#5U3OxJv z?c09n(4ngG^72Cs4Go`73Zij%(DKs~2bw(T3!)$ZBH(%QZ6V-GZ4!r2_hNr7i8^fK z$JVwKo^fAEK{OGb@$>tFD0P4cxQZY*0nf*55{E!{V7~@lAk57nF z1&Dwb65Mv+`H)TGfag}g`KFBz7q-WO$2UaN!Q%^})Bqyj1|~#zFfn?DP4cn?k1vR# z!s7#?Q~)C2CT=d9xyd|L3(u@sv&I@58^1=+^8>99S9Vc)o{8sjbx#x*9@h{h4iEvK z(BI#`YybZJ@6;yHz;gre$oyEU9}PUNdLk`6E+I-3AOe0j^~<}cUw)f5>wI%ZcqIM; z@Z7ES;nI$ne$74Hm0F*C8HVUdR}s&{aeSCz4|#H38ON^lSaa_4Irs0iJ`w|nfZt=_ zIZoSH)9tS&;0LunT-(|90@9wim$Nj^IhAgS07SrNc6WF0IC$`2y*7d7+j0f)Y}Wel zWtU_^lRQ@xy}ScNz#rjec^fy)wNV;0*)enH&K;<$t6K>?k7|ARwo4+hNt`3DPF?{b z;PaRZ+QQ0->bMOXKfa=(qG!>fMJs^k8Lf|`?0hEJr*9j5ya7bOE2v-INd5ABZ3E}c zo7creqyw*q3c0LmA!>21DqVh%bJX;%* zPk5wFP60x+>-nbq1i$LycP?3fvV#tv14iWSbU5NxsnibJv^}bAQV=Bxj}<@$p4)-vhNvP=b{ypxPw@Yj0MC9KKUuK#4N=nY zr~yIw2R+u zV$j;UhA1s~v;b{%uyR65F{C78M4N=H+Zl*NORI$hvVeel$jg#i@i9^N*yBJ1zKT)i z2N-3R%UJ9W-KgBlAk->}wNODN;Ak!7EGhJ~G5Y4C^GhD+nE^Au%L9s7kr5qr}%|LXM79whV zUZ&RPJRs`Q`pA-s?no$L12BLb_yg$L3_fxb90itgM(RZ}=Y1_GiNA?sVmYG%3Y9M+m zt4~{4NcawIGJ)tuAi7;^pO&3Vc*dtEeE4*wkJC$7X`=}Gq~6}%rw$xA(4=XsS^qBc zWg9g1Y1sHov`^nQT6qJ=^hEDtUD$5cg~>jBu|H-VysSq3ZEWL&4U$N366c63n^%Ag zL}&A6oo4Nub%1D)djWZ?juf5+`AIUdNuDc;*xms$5M4mQ{Z_fIj4f5LRfPWE>*ga0KUTCcG$Y~m{rOb=9Y{eBm{Pz$|LWBhQA zSd7vW$!6sDEA0!j7zzXjkhv#1osG$NvoX264l4G?ET5KrrDMH5Aoht0gLFosqv+1% z?89tOzEfTq8Rhti$MCA}1Jo1C7Qyo7=HlZ?fgpRJlFQj86zD&w-7c6_uf42(T@FNl z@TA|2cN;W7=5n^0F`{4ayJ{l`%0Tu~1|pNMf1UB!_8>s;02zqB0z^O7#?NjbZ?YSR zl!5$H>!YxnT!BmgWFWc;h;G&<((FGi1!)~xABEk~3S$l6?m6LIlee1ECo^r$Xv=~BZo~u zbWvFH6s?&~fgk`f5LNQ;4j?*bx<(g&4@ZGu05TBOQU3iR=W@!j2&7SBi%(eLh+kBtQnDQz--4O&LgCKBUfP6u|;y zAo>8SL?6|x63u72!iy?sfDA1 k05T9+z0bpse1+Hl06GPGVnhOmSpWb407*qoM6N<$f-{k5TmS$7 delta 1263 zcmVCEmkaxCG}RWF%OnckANy6U%_W+heyPsJ_)Bnp(R%b9}bm&zm{ zQ6Re|=lFTdPv!AIqCj?A&h_)~YYqnz1>#MJnGdJ;1ri0)JbWYT z4kQWWO7<+pV}GA3cLI_GawT)V;^9-jbwFS$ox>JYT^j_(EYEUf zy@lp!$-DWie39YPipS9jqWD0rwY^vInCo4ONIXsu2_8Wd zALy6%d_wW?BG)Vyk025}f+#+a>B5&J&nZAG9zi5{1bjLV(mdfnu4K-Y#edKI-Vq}8K%{xXfn0N5C5s;vy9D(^ zqn0ATkO)n88U3ncm_{cp^1qWXQ?4M_86{=dkPgqMHo0Hpax@t?So zJbymg?lk}L2>e}3h!_Uy!`uxJl(IDZzy3OfNnvfDmDWg^RBM}A`fNOt28 zuuF?=@71vYknH#iV0I82K|h!wh!V3r zt9cGk{n9?K39|#lYx8-nPfkSPBY2ue1L^Q&LG&KG=0p@e#Ho40fn14~sHKo!+UG(P zJ_f9LG?0#KCci=-cdg?Qg$cmjZAv3Woc-RYXgBMLi;AbH{g0pGXfvwk9bwSOzc zBMLjrB6;Ei0p(77(@(^c5sdFK7jTdMEcZVkl9LcmJ z`HPomKDS632r!dr{F~Kw?WBQ#Y-!f~OCgozk_G~@b;YPKIW1`*z-}!@9)8QlBn<>` zFY%NAof(`o5MYlLM4#1qCk+J1*=X2zOqZmAT#1)^fr^{Fx#qmH08%%sc(?!(caOHu z7eM0Ln{O9D;y%Fqq5$%yGKk+5K;D$c^N#|^8@o8O0>~S#%$Ws{H)eg#Er2``r#~9m Z<4=bU9t_=IpXdMp002ovPDHLkV1g|JP>28k diff --git a/dist/icons/overlay/overlay.qrc b/dist/icons/overlay/overlay.qrc index 8d7833aca0..2319e6dd28 100644 --- a/dist/icons/overlay/overlay.qrc +++ b/dist/icons/overlay/overlay.qrc @@ -6,64 +6,66 @@ SPDX-License-Identifier: GPL-2.0-or-later arrow_left.png - arrow_left_dark.png arrow_right.png - arrow_right_dark.png button_minus.png - button_minus_dark.png button_plus.png - button_plus_dark.png button_A.png - button_A_dark.png button_B.png - button_B_dark.png button_X.png - button_X_dark.png button_Y.png - button_Y_dark.png button_L.png - button_L_dark.png button_R.png - button_R_dark.png button_press_stick.png - button_press_stick_dark.png osk_button_B.png osk_button_B_disabled.png - osk_button_B_dark.png - osk_button_B_dark_disabled.png osk_button_Y.png osk_button_Y_disabled.png - osk_button_Y_dark.png - osk_button_Y_dark_disabled.png osk_button_backspace.png - osk_button_backspace_dark.png osk_button_plus.png osk_button_plus_disabled.png - osk_button_plus_dark.png - osk_button_plus_dark_disabled.png osk_button_shift.png - osk_button_shift_dark.png osk_button_shift_on.png - osk_button_shift_on_dark.png osk_button_shift_lock_on.png osk_button_shift_lock_off.png controller_dual_joycon.png - controller_dual_joycon_dark.png controller_pro.png - controller_pro_dark.png controller_handheld.png - controller_handheld_dark.png controller_single_joycon_left.png - controller_single_joycon_left_dark.png controller_single_joycon_right.png - controller_single_joycon_right_dark.png controller_single_joycon_left_a.png - controller_single_joycon_left_a_dark.png controller_single_joycon_left_b.png - controller_single_joycon_left_b_dark.png controller_single_joycon_left_x.png - controller_single_joycon_left_x_dark.png controller_single_joycon_left_y.png - controller_single_joycon_left_y_dark.png + + + ../overlay_dark/arrow_left.png + ../overlay_dark/arrow_right.png + ../overlay_dark/button_minus.png + ../overlay_dark/button_plus.png + ../overlay_dark/button_A.png + ../overlay_dark/button_B.png + ../overlay_dark/button_X.png + ../overlay_dark/button_Y.png + ../overlay_dark/button_L.png + ../overlay_dark/button_R.png + ../overlay_dark/button_press_stick.png + ../overlay_dark/osk_button_B.png + ../overlay_dark/osk_button_B.png + ../overlay_dark/osk_button_Y.png + ../overlay_dark/osk_button_Y.png + ../overlay_dark/osk_button_backspace.png + ../overlay_dark/osk_button_plus.png + ../overlay_dark/osk_button_plus.png + ../overlay_dark/osk_button_shift.png + ../overlay_dark/osk_button_shift_on.png + ../overlay_dark/controller_dual_joycon.png + ../overlay_dark/controller_pro.png + ../overlay_dark/controller_handheld.png + ../overlay_dark/controller_single_joycon_left.png + ../overlay_dark/controller_single_joycon_right.png + ../overlay_dark/controller_single_joycon_left_a.png + ../overlay_dark/controller_single_joycon_left_b.png + ../overlay_dark/controller_single_joycon_left_x.png + ../overlay_dark/controller_single_joycon_left_y.png diff --git a/dist/icons/overlay/arrow_left_dark.png b/dist/icons/overlay_dark/arrow_left.png similarity index 100% rename from dist/icons/overlay/arrow_left_dark.png rename to dist/icons/overlay_dark/arrow_left.png diff --git a/dist/icons/overlay/arrow_right_dark.png b/dist/icons/overlay_dark/arrow_right.png similarity index 100% rename from dist/icons/overlay/arrow_right_dark.png rename to dist/icons/overlay_dark/arrow_right.png diff --git a/dist/icons/overlay/button_A_dark.png b/dist/icons/overlay_dark/button_A.png similarity index 100% rename from dist/icons/overlay/button_A_dark.png rename to dist/icons/overlay_dark/button_A.png diff --git a/dist/icons/overlay/button_B_dark.png b/dist/icons/overlay_dark/button_B.png similarity index 100% rename from dist/icons/overlay/button_B_dark.png rename to dist/icons/overlay_dark/button_B.png diff --git a/dist/icons/overlay/button_L_dark.png b/dist/icons/overlay_dark/button_L.png similarity index 100% rename from dist/icons/overlay/button_L_dark.png rename to dist/icons/overlay_dark/button_L.png diff --git a/dist/icons/overlay/button_R_dark.png b/dist/icons/overlay_dark/button_R.png similarity index 100% rename from dist/icons/overlay/button_R_dark.png rename to dist/icons/overlay_dark/button_R.png diff --git a/dist/icons/overlay/button_X_dark.png b/dist/icons/overlay_dark/button_X.png similarity index 100% rename from dist/icons/overlay/button_X_dark.png rename to dist/icons/overlay_dark/button_X.png diff --git a/dist/icons/overlay/button_Y_dark.png b/dist/icons/overlay_dark/button_Y.png similarity index 100% rename from dist/icons/overlay/button_Y_dark.png rename to dist/icons/overlay_dark/button_Y.png diff --git a/dist/icons/overlay/button_minus_dark.png b/dist/icons/overlay_dark/button_minus.png similarity index 100% rename from dist/icons/overlay/button_minus_dark.png rename to dist/icons/overlay_dark/button_minus.png diff --git a/dist/icons/overlay/button_plus_dark.png b/dist/icons/overlay_dark/button_plus.png similarity index 100% rename from dist/icons/overlay/button_plus_dark.png rename to dist/icons/overlay_dark/button_plus.png diff --git a/dist/icons/overlay/button_press_stick_dark.png b/dist/icons/overlay_dark/button_press_stick.png similarity index 100% rename from dist/icons/overlay/button_press_stick_dark.png rename to dist/icons/overlay_dark/button_press_stick.png diff --git a/dist/icons/overlay/controller_dual_joycon_dark.png b/dist/icons/overlay_dark/controller_dual_joycon.png similarity index 100% rename from dist/icons/overlay/controller_dual_joycon_dark.png rename to dist/icons/overlay_dark/controller_dual_joycon.png diff --git a/dist/icons/overlay/controller_handheld_dark.png b/dist/icons/overlay_dark/controller_handheld.png similarity index 100% rename from dist/icons/overlay/controller_handheld_dark.png rename to dist/icons/overlay_dark/controller_handheld.png diff --git a/dist/icons/overlay/controller_pro_dark.png b/dist/icons/overlay_dark/controller_pro.png similarity index 100% rename from dist/icons/overlay/controller_pro_dark.png rename to dist/icons/overlay_dark/controller_pro.png diff --git a/dist/icons/overlay/controller_single_joycon_left_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left.png diff --git a/dist/icons/overlay/controller_single_joycon_left_a_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left_a.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_a_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left_a.png diff --git a/dist/icons/overlay/controller_single_joycon_left_b_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left_b.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_b_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left_b.png diff --git a/dist/icons/overlay/controller_single_joycon_left_x_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left_x.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_x_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left_x.png diff --git a/dist/icons/overlay/controller_single_joycon_left_y_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left_y.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_y_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left_y.png diff --git a/dist/icons/overlay/controller_single_joycon_right_dark.png b/dist/icons/overlay_dark/controller_single_joycon_right.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_right_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_right.png diff --git a/dist/icons/overlay/osk_button_B_dark.png b/dist/icons/overlay_dark/osk_button_B.png similarity index 100% rename from dist/icons/overlay/osk_button_B_dark.png rename to dist/icons/overlay_dark/osk_button_B.png diff --git a/dist/icons/overlay/osk_button_B_dark_disabled.png b/dist/icons/overlay_dark/osk_button_B_disabled.png similarity index 100% rename from dist/icons/overlay/osk_button_B_dark_disabled.png rename to dist/icons/overlay_dark/osk_button_B_disabled.png diff --git a/dist/icons/overlay/osk_button_Y_dark.png b/dist/icons/overlay_dark/osk_button_Y.png similarity index 100% rename from dist/icons/overlay/osk_button_Y_dark.png rename to dist/icons/overlay_dark/osk_button_Y.png diff --git a/dist/icons/overlay/osk_button_Y_dark_disabled.png b/dist/icons/overlay_dark/osk_button_Y_disabled.png similarity index 100% rename from dist/icons/overlay/osk_button_Y_dark_disabled.png rename to dist/icons/overlay_dark/osk_button_Y_disabled.png diff --git a/dist/icons/overlay/osk_button_backspace_dark.png b/dist/icons/overlay_dark/osk_button_backspace.png similarity index 100% rename from dist/icons/overlay/osk_button_backspace_dark.png rename to dist/icons/overlay_dark/osk_button_backspace.png diff --git a/dist/icons/overlay/osk_button_plus_dark.png b/dist/icons/overlay_dark/osk_button_plus.png similarity index 100% rename from dist/icons/overlay/osk_button_plus_dark.png rename to dist/icons/overlay_dark/osk_button_plus.png diff --git a/dist/icons/overlay/osk_button_plus_dark_disabled.png b/dist/icons/overlay_dark/osk_button_plus_disabled.png similarity index 100% rename from dist/icons/overlay/osk_button_plus_dark_disabled.png rename to dist/icons/overlay_dark/osk_button_plus_disabled.png diff --git a/dist/icons/overlay/osk_button_shift_dark.png b/dist/icons/overlay_dark/osk_button_shift.png similarity index 100% rename from dist/icons/overlay/osk_button_shift_dark.png rename to dist/icons/overlay_dark/osk_button_shift.png diff --git a/dist/icons/overlay/osk_button_shift_on_dark.png b/dist/icons/overlay_dark/osk_button_shift_on.png similarity index 100% rename from dist/icons/overlay/osk_button_shift_on_dark.png rename to dist/icons/overlay_dark/osk_button_shift_on.png diff --git a/dist/qt_themes/colorful/icons/16x16/connected.png b/dist/qt_themes/colorful/icons/16x16/connected.png deleted file mode 100644 index 0afc18cb7a19028fd567a7ca7ced62cd164657de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmV-F0>J%=P)0k{|sIn0V`B1xGGFnerg>I4!7^B>UM&p)aM9vQI<{ZJ4 z8HZ4p+_%{7AT1;1-`r}Q8XRRVYW9}G=D3HXRO!FFg z<>v6FfXkm66-$M=OnPPtTpl}lK!#o^J26y#00VLkV5Ig4hAIxCZ~AU@6mMaG2|$+zA&;BarDZyi@16B z4lE8kTwX8y!4LxB2>hW4yn!GbZg+WiA%P|k^Ip;o774}ts6fO6U&y7=hp3TO@-WL? z{^Mh)gLW3&bGqIiV!1gSPQ{V|zW{P&fJjHVbAtc? N002ovPDHLkV1hH82Xp`c diff --git a/dist/qt_themes/colorful/icons/16x16/connected_notification.png b/dist/qt_themes/colorful/icons/16x16/connected_notification.png deleted file mode 100644 index 72466e098e471ae5a97c49a56536dd4bf62b3a08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0*y&TK~y+Tl~Y|v z6j2oZ?(CguoZVz~OB-RWz#nLd9z^@Yo&q%@j2=qtp^PLV$cmEeAL_xE^2wfrs242~ zp$Ef$h%#S%kW`EcLR4x6ZEJVk8F%j7>CU(tNkRF+;a<+Y=R4my_gvyQ4zjp<{ql`; zI^D*(O+BwTbI<>_2MD8-wl5<%-+In!I@(0@^Fzo{bD*j!D3xKFhG&Lp!dzV1$6_(` z^gLuV6YIgUEb0c8*Ie*2x#lAhY;J={1gb21z6E0ugAZC@F^euEux;jDmV`UFz7l>- zK|xT%#N<56!g^D3Wwr@)QUY z@d)MRLDK?Qog0L{ZY_3>K0_%MP_m~6ird7|QOF|6#=1I$H9tA_=53H>6>z~YHTJ@7 zb_Nd4PV}Lux(a+|27GF2$(u@fs~(9UHZ*jca>r)zc$_}(It@ippva0SLlzB`5RY_2 zDJ%pZ9`=H=;M3EPtE-_V5`;>`*WTHAw^h71&5pJA_QIN1DX?Z|p%fSYQs6=ghhYg- zVhSf|d1>iW;`5ymOPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0v$<2K~y+Tl~PS> zQ$Z9x^WL<1ZG=jLsqtf@CIu;o=wGnd1VlHD;-XFKLZw(mq)@*>1VJ>!or+OVq^`wu znJxuC&?1zmaamnO1NME*%5JoAzwQ9hHiSzzQVT5*fC(vPaz_Kh*+6Kq5b=Zyr$6d-BjRvNsUN9r<)$o0v zs;137DRgyhL@Z{(G)=_g8<0qB!nUp3v1>;LeY^L_vp9U_(^UgFXW)W|)!HD0fHMwq z`Rc|0_8q`L@sq zk>1%G63fVBGANuFmY*(fDuPllKmS8eCS`Em`r?L1hp>O&UTLdSRsk4e>gLt9;4C;0 zLcq{BFQXMa*Fk%G45d;@#y$LM{=|d(5AnGC1hkF9bzQ?)OM&Zp`Y#clJ$)W#YAJ!{ z4H0nGY&P-w?HjzG{fJLxahf`;55)a!M*cR#Fvf$Tw4UQO#< z+13h9kDdH|_{gEo)RvScR^ra>BKrFe$hQ&GwNfR74B5P3+o;Y|898=5|6Tg*(O>)p iN=@~G{{?26=FLU_5=aXOVS_yY0000ROSwGo6XvJPv zzlZ+oGn97-o-r-r&$VfgJ0KmA>2yufc!z{~qGQbm$8Tq=^*@-iIzITdZ+^wR?aTAG zy=^&a8Kl52V{ys6@63-oYYcdPN9cVtn5|nNv)ozk?u}LA z|1=jF*xy&`&-?QyY@&mH_rsJ||S^eTg=tDnm{r-UW|<05{U diff --git a/dist/qt_themes/colorful/icons/256x256/plus_folder.png b/dist/qt_themes/colorful/icons/256x256/plus_folder.png deleted file mode 100644 index 760fe6245e72cd0144b4dd198465db6c902ad400..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4643 zcmb_gbySo=*PmsVuBBw@5*JZG8kAU+6osXvLz<->Xmko?yFzklBMy!V_r_nF_^GxyHSt@A{qwbZC7SSbJi)Eer_x&S~3pAbMsLSSZI zh4usn^S-U2Pe!08WVTU+Ik|_ru{QuT@P7mHcMvU009kxgjC}Om?S1?odf5Sge}7>o zH)n5~haPsq?p_WVTXL)b(B)_-E9nPhZq7I*vHu7p{e3YaertTIe`C$4Gzk^T-C~eN zZ^X_^eCe4H57{!5|3QY*`oN$CS57rwZF|pMn)1etP&-)Zi z!lS@oN*ZN{G{lUE+rFM_P88NnUku49_7F3ZfXWQmbKzRx+>|9SY#BC;r4|~x4GJrU z?r;;t9GXb6vx!uTj*!9S!wEYa4@zNI68wSOQ)2o~l(xB2YZpm?c7(tmI*HrA*+AEc zq8o2dnj;c(nN4I%w8iU&k7EK}OzrF1_o0dGB6l z`>{LsrOhE|HLyM<4?tMIpX@&T0()$=yotK{}47&W**RHsC z(Q$~lJ%|oZS%@a$yQKZ__Du6yY&q=B4ZJ+{dWJ zgU%lOkp>AE*qV3~jfTDy2BQUwaeseYV}8sGsHssL(!se84Gg&w51d3!Br_EuNgB}S z0q*dj!hGkIwW-d>XNcY>KsgV!#JKbYZt$XRip_U_S?@lrjRHt`MWM{w8Oc*5prxF2 zSHb-WB5$l%uc0>5u|fBJUS-vS>hn8k)L4z@ajD3nfS%>Ud#TdQ;NwKHJm6(*R`v=l zbGvbH+0`4;GItW)Kv!P(Mc>IAf;M$7kry}-5-1NUB{uxN+sz;b4PuS-R>lm?26$Fs|&y@T(re3O=0m+uTWmf(Q zG3H?g6DhIQmI^Tt-y~n+GZj+faV4F^5>p1xWFJQIE|oSN34JC}`P8mIMl>Tf#O)ka zCy6^`P^{qh{#L<;q3jm6AaWP3sE3xqM9jKg=8zkoi=u3nWHU{~v3hz?8R6u;oQews z&=>U*oEUxH7V_uvj=d#2DTTelEQM8wLg?Aw%NCpWiGbJ;ul+j`k4O8UU*jjaHjDB9>R%$2- zNO@awEnv%vb-;JbN?X{7%Z530{DeNBQ3OYNz~rf9E+YJTFzjBXV||r2`S%Oc` zOnuwq>!B1D8%3R(Ggr-w=34WZQ(H?hp@HzEqR6=9pR^JtTakg+1$1u$)G4Sd!w}LQzXW17=bK{fT&hvNP35uP@G^FeQ0{iICO`N9hk;YS`ruySW{&}}FTo12qoasOj* zuzg~I&rYqgUA#^Jn)ppLa0&mGgV7z%|WLs16JyV^u zpr;5{c69n9Yka2RL^1=Cg!aAIOysItrYtwxa~TMT{SC*)VSW{Mq*65J4dfc{tj;UG z&?R_E=SH`|!VuKA8eiy`TkCh;ThOr-BoD>Lp~1yb2!qZC2~GF3s9yO!&UERrnd>Bg z<>QDCO7($Cu%zPZj*q(vKoO}_v{tJ(%~DhTGxdyl!x3hJw&b|CgvN0R zg=pyVKk72F?C_748#84*%@ud8kN2Q&#I*KOY9snI39|1UXxS z6_BMBs3Z!#x;cE8fK56F^~3~txkp4Znwd!r-+eM(Xj{I&>oj3kTG`o-nt7?cV|5NxHADn(*D`ZXad33#?-!w!OsxJhp`h8>y=)EJ z8?ur;Bd>ndruRL6_x2r6#=s+!PtG}%9A~ey#u#K)XlgPcDE>(W_+I7gsm;nlf%tjb z$g6@UCmZeo7JI+^vsxQ7w)e_%)||cw{p11h8AKB)OaAIDW0Iv932nG^G=x$8DRdlFuhc3-=+m z6@s;pZo7crZ$2I~l8po+;65kP7L6aB3nMxUe3JXnqu-7o*bpg6lF380X!djD`pnms z^;zdHKWCcvOE`h;qLYN>k&U)9Q44MGSxrFAUWk0@WXAe_Wfp3d-R<+F?CUkkVh@2w zlvrccE*@vCQqC6d$fphCwqK9Ef>!(X10T?WiXNWwaG@UDIn9Pb176*=T%a8tjmGj_1&3`H6^^zpaXjTEmGuhh0OHLCK&eXlmeN<2lCL1KQ?l^ zaSt4P{ zpJr!Ck&3jTbkC!EBcrU9rtsp2`mA(;O`FHnTgl(|f>gQxZS&K`oT|eg@_R!k!m;S^ z;Luqx{teu+60%zsNX+br$HF7gj>|1Y{ASV zC$5JoHY57uv8w%aR;G#E7l(P~vgkzr6j}UDFnv+4xLS<7AD)MV^e2t5>Uk&=r)3G4 zRY-F+PWp*F84W6{~vL6A)#ITR}=Et-D*kth@K-IBv2rY3%0g^*~b zpTCq(_lC*Q&LflY_%4r)3qt?KGE`ksbsu*L9~9nR;H@CDj@xNSA|&Bj*1xP+IuW(E z<x#EX#~OTAMu=Cj?$vykYrlaVXyPP^X7+xZ%97v^?=}p9+X!&MLk?hWus52kG-h zG%WTbYO7wb;+kl%f_FqEJ?>m)%Z7GDOLcA!IPCmhPkdzI@4lTD?73(1jx9wb{@~f% zn<&E>IJE;I{c7RXiUED~&;)7lwgD|%Rz2)2Moel`qvEEzZ)yaK} z%M$h?hwsEfq=v6I+jKm~+ICE*^7rV^Eg-p%^zeu@-!+JR0(bFi;2x^vl-fBOTB%i&^J zL(HtCX!_r#amBrOLRQ2{5(*Ssp4N_9(UCX45s~L;;OS=4{N&qXsizJAJuhVRc~uS^ zPS#}%CIuCF?Hw17D>!{3Cp3!@fkJy2-m@K3SgkSc5&rB&4%Z+lAI+9YjnC`-$hjM! zu;jX%1^d9enLegkj+X2Av$$4HvS1l>l;UZxmLb)_w8%4_Dr~e!;r7@!T66X?TnL=%ci8!HVh8EkHYh=tQSN$+>Jp}J&FGB^2 z5Sk{b$}|VQ1EkBmQT?RLwnu+hn62uIs*9H@JL~PLdiwku+d)oD)jW<^ud)c!gj%8W zC?Z0FLZQYAd!7pFBKNDdjZ2Jpd}{TkKw}x9>t+;OQS>?2aT}GTOJc~`q7o2WQ-3WW zM)BS|hn(08)Im1s)tMP*1SiPHTutKKOhdk{aTJsfA$k9QI=+5E`z5UWL5!_pHQ|R2 N&`{A*F1u|N`hPMhH%|Zn diff --git a/dist/qt_themes/colorful/icons/48x48/bad_folder.png b/dist/qt_themes/colorful/icons/48x48/bad_folder.png deleted file mode 100644 index 34069c6b230de579d436fa9f0c21ae37af905b2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 zcmV+r0`L8aP)D=(%e@MHK8fkB=Bj zAo71N_TM-+BcNWZW5yA1JUFhvNgbx+#t;a7*^hmf6*R3n7W%qhe}R$vr)HtS?Z$}H zG4o!X(_6sz@(}sdBcmf285ttS{PG$t1;D%q2XCGsu;Kn*4EJ`EV}rNOsB1G50Q+ud zk;W!zsIv`2?JeY3^jMW_j?@CSU7w3IHc5j`^%!idCC8%2D%f^^N-bd7vjgnAMv6H$ zRRc8@7^o_rcZ`lz$ux@g9a}{@0rQS^^6Ppp>nQlxOkH&kI3Aw3BuX6#@;?!z_y14T zWD@^HDbsuT!ZivN`yU9kwIux}`Y&I&S~39%P%Vo&wyKl@Ww{HS`zJUY4#@7Hv$NlKH@gFOfWh#;p`a7> zHS|=Xi|Jg_aj&Q#lU501AZa|+UAa*$TBPeBeF7jKv8Dk59qm|`?ej*L3uX^12YbBVuC(8l1+gV$k**_t@c>ZJWBZB=;`hL$Y!X2M?Al&7anv=x5Djc` zF{wX=?AZ&m9kLRimbq{p`;P&?xFf(F2AivLfXd3&7a92KYV;p~>3ie@1>}zj8+*Yu zi1xtn5y8a+fD4SCBnjp`f!P{6Z7!DRe2Uhd-S73pU@#lExS?7!1ks16+4{ U)=xYDaR2}S07*qoM6N<$f@LZ5LI3~& diff --git a/dist/qt_themes/colorful/icons/48x48/folder.png b/dist/qt_themes/colorful/icons/48x48/folder.png deleted file mode 100644 index 498de4c62940559bcfa3c609f7e7474ee8d86ae3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!hD1*n$B+!?x05z{F*}O5F27(eFndMoj+0rh z&40xH>tws))HAoNDb{TF1AmTbg1vvM{SK{ta!*3~yJ+!)lAVWV&RycPFhE13E=fG| z{;|wSu|F(+sy(|uFZrH++0<`EXXd#6OY88yk-96naQ3a=s-IZ*Mcjyg^Hped$L!qi z%Nu{^ytsFDZ`S68H$NYoZToJXVxeu_-lz9MzHG4Dnwk1|k- z)~iH;!ZoYKb0iMl`PS*vyLEB3S>J-KUs+~KW%p^nb}KG(nEz~9`TJGQDeI0eyQ*M+ z{q3idHxmD6Mc3=>-?Mj)jN*D=sBp1PxMbenmA6-}RqQ-41{geD{an^LB{Ts5V+X_j diff --git a/dist/qt_themes/colorful/icons/48x48/list-add.png b/dist/qt_themes/colorful/icons/48x48/list-add.png deleted file mode 100644 index 74e4882aaedc98b57cce65ae5c0a2683bab31279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCils0(?ST_0ALmnd!^rR{<%ek|4j}{|ryJ8+ZYEoCO|{#S9F5he4R}c>anM zprE6ti(`m~_uJEkTnq|4&KIBkn;y0>KuJVP%j$`*d51w2Hv=64#i!@TrNPv7(8A5T-G@yGywoSu{iDk diff --git a/dist/qt_themes/colorful/icons/48x48/sd_card.png b/dist/qt_themes/colorful/icons/48x48/sd_card.png deleted file mode 100644 index 652d61bc325bb1aad05f0cf316a540539007db27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?31We{epSZZGe6rASi z;uw-~@9nLFybTIGtq-ro-Z`MmY&og?*g;+yH}?gKEOH;;pFMK;H`B`8MbXZ(*FWEC z*meGH_WK=KKQs&offQDYsv`dLmWMB|uJoCySmSNRH zXNIRALK~_ob_p;r)JrZ;FIPU6$&C&jo{= O&EVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGff&c&uf&sqz;-vrp1L;XbK~!i%?U~PS zOi>ia&v{dXiliH?Ea>m5YV=J@_#cF(BsMmFOT@16TZoX5NLUE55E8}4qVW$P%nb1( zn$EO{AYwr)%!F#a<9pxSl&Kl>?zm68m``)xJLk-u`|dgC{+d@RQ>ILKNUVOj#2Qy= zH543u4+o~h}$Yl66AKfZVTN z1_u%lf3?qEJG%pMtyv?S3^;TM*WBQU6Utn$o&iZTwvu=cA^zF6h|BG%2U@d&{S0_= z5ZC;HacHlWtYI|+602FVnIO`WGQ!~RNa5ZVg^L5`$5`c)UviOSjm9gt7)J}8Ennd_IIhAYjbzV_$ z-R3U(L9hBZLcElHUSGJ0}_t za#K6u#u;t;A6y91c|}nN6uuK}$z90DX>AG*=5ypGw*=|DB9H?LhAYw#E3y`AjA6H(U1-B9gn0&roO)bscV1CJA0u^I4ve`2%!{>TpAy09=b-!WT>Oda@r{HvE!H;BCkj^gxa@IHsz20kcfvGmtMh4a|N#xYyvOee95 zjyfs!k|(V=Id - - - - icons/index.theme - icons/16x16/checked.png - icons/16x16/connected.png - icons/16x16/connected_notification.png - icons/16x16/disconnected.png - icons/16x16/failed.png - icons/16x16/info.png - icons/16x16/lock.png - icons/16x16/sync.png - icons/16x16/view-refresh.png - icons/48x48/bad_folder.png - icons/48x48/chip.png - icons/48x48/folder.png - icons/48x48/list-add.png - icons/48x48/no_avatar.png - icons/48x48/sd_card.png - icons/48x48/star.png - icons/256x256/plus_folder.png - - - ../default/style.qss - - diff --git a/dist/qt_themes/colorful_dark/icons/index.theme b/dist/qt_themes/colorful_dark/icons/index.theme deleted file mode 100644 index b37a06df78..0000000000 --- a/dist/qt_themes/colorful_dark/icons/index.theme +++ /dev/null @@ -1,8 +0,0 @@ -[Icon Theme] -Name=colorful_dark -Comment=Colorful theme (Dark style) -Inherits=colorful -Directories=16x16 - -[16x16] -Size=16 diff --git a/dist/qt_themes/colorful_dark/style.qrc b/dist/qt_themes/colorful_dark/style.qrc deleted file mode 100644 index 72451ef023..0000000000 --- a/dist/qt_themes/colorful_dark/style.qrc +++ /dev/null @@ -1,57 +0,0 @@ - - - - - icons/index.theme - icons/16x16/lock.png - icons/16x16/view-refresh.png - - - - ../qdarkstyle/rc/up_arrow_disabled.png - ../qdarkstyle/rc/Hmovetoolbar.png - ../qdarkstyle/rc/stylesheet-branch-end.png - ../qdarkstyle/rc/branch_closed-on.png - ../qdarkstyle/rc/stylesheet-vline.png - ../qdarkstyle/rc/branch_closed.png - ../qdarkstyle/rc/branch_open-on.png - ../qdarkstyle/rc/transparent.png - ../qdarkstyle/rc/right_arrow_disabled.png - ../qdarkstyle/rc/sizegrip.png - ../qdarkstyle/rc/close.png - ../qdarkstyle/rc/close-hover.png - ../qdarkstyle/rc/close-pressed.png - ../qdarkstyle/rc/down_arrow.png - ../qdarkstyle/rc/Vmovetoolbar.png - ../qdarkstyle/rc/left_arrow.png - ../qdarkstyle/rc/stylesheet-branch-more.png - ../qdarkstyle/rc/up_arrow.png - ../qdarkstyle/rc/right_arrow.png - ../qdarkstyle/rc/left_arrow_disabled.png - ../qdarkstyle/rc/Hsepartoolbar.png - ../qdarkstyle/rc/branch_open.png - ../qdarkstyle/rc/Vsepartoolbar.png - ../qdarkstyle/rc/down_arrow_disabled.png - ../qdarkstyle/rc/undock.png - ../qdarkstyle/rc/checkbox_checked_disabled.png - ../qdarkstyle/rc/checkbox_checked_focus.png - ../qdarkstyle/rc/checkbox_checked.png - ../qdarkstyle/rc/checkbox_indeterminate.png - ../qdarkstyle/rc/checkbox_indeterminate_focus.png - ../qdarkstyle/rc/checkbox_unchecked_disabled.png - ../qdarkstyle/rc/checkbox_unchecked_focus.png - ../qdarkstyle/rc/checkbox_unchecked.png - ../qdarkstyle/rc/radio_checked_disabled.png - ../qdarkstyle/rc/radio_checked_focus.png - ../qdarkstyle/rc/radio_checked.png - ../qdarkstyle/rc/radio_unchecked_disabled.png - ../qdarkstyle/rc/radio_unchecked_focus.png - ../qdarkstyle/rc/radio_unchecked.png - - - ../qdarkstyle/style.qss - - diff --git a/dist/qt_themes/colorful_midnight_blue/icons/index.theme b/dist/qt_themes/colorful_midnight_blue/icons/index.theme deleted file mode 100644 index dcb2c50d68..0000000000 --- a/dist/qt_themes/colorful_midnight_blue/icons/index.theme +++ /dev/null @@ -1,8 +0,0 @@ -[Icon Theme] -Name=colorful_midnight_blue -Comment=Colorful theme (Midnight Blue style) -Inherits=colorful -Directories=16x16 - -[16x16] -Size=16 diff --git a/dist/qt_themes/colorful_midnight_blue/style.qrc b/dist/qt_themes/colorful_midnight_blue/style.qrc deleted file mode 100644 index b9821c6722..0000000000 --- a/dist/qt_themes/colorful_midnight_blue/style.qrc +++ /dev/null @@ -1,63 +0,0 @@ - - - - - icons/index.theme - ../colorful_dark/icons/16x16/lock.png - ../qdarkstyle/icons/16x16/view-refresh.png - ../colorful/icons/48x48/bad_folder.png - ../colorful/icons/48x48/chip.png - ../colorful/icons/48x48/folder.png - ../colorful/icons/48x48/list-add.png - ../colorful/icons/48x48/sd_card.png - ../colorful/icons/256x256/plus_folder.png - - - - ../qdarkstyle_midnight_blue/rc/up_arrow_disabled.png - ../qdarkstyle_midnight_blue/rc/Hmovetoolbar.png - ../qdarkstyle_midnight_blue/rc/stylesheet-branch-end.png - ../qdarkstyle_midnight_blue/rc/branch_closed-on.png - ../qdarkstyle_midnight_blue/rc/stylesheet-vline.png - ../qdarkstyle_midnight_blue/rc/branch_closed.png - ../qdarkstyle_midnight_blue/rc/branch_open-on.png - ../qdarkstyle_midnight_blue/rc/transparent.png - ../qdarkstyle_midnight_blue/rc/right_arrow_disabled.png - ../qdarkstyle_midnight_blue/rc/sizegrip.png - ../qdarkstyle_midnight_blue/rc/close.png - ../qdarkstyle_midnight_blue/rc/close-hover.png - ../qdarkstyle_midnight_blue/rc/close-pressed.png - ../qdarkstyle_midnight_blue/rc/down_arrow.png - ../qdarkstyle_midnight_blue/rc/Vmovetoolbar.png - ../qdarkstyle_midnight_blue/rc/left_arrow.png - ../qdarkstyle_midnight_blue/rc/stylesheet-branch-more.png - ../qdarkstyle_midnight_blue/rc/up_arrow.png - ../qdarkstyle_midnight_blue/rc/right_arrow.png - ../qdarkstyle_midnight_blue/rc/left_arrow_disabled.png - ../qdarkstyle_midnight_blue/rc/Hsepartoolbar.png - ../qdarkstyle_midnight_blue/rc/branch_open.png - ../qdarkstyle_midnight_blue/rc/Vsepartoolbar.png - ../qdarkstyle_midnight_blue/rc/down_arrow_disabled.png - ../qdarkstyle_midnight_blue/rc/undock.png - ../qdarkstyle_midnight_blue/rc/checkbox_checked_disabled.png - ../qdarkstyle_midnight_blue/rc/checkbox_checked_focus.png - ../qdarkstyle_midnight_blue/rc/checkbox_checked.png - ../qdarkstyle_midnight_blue/rc/checkbox_indeterminate.png - ../qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus.png - ../qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled.png - ../qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus.png - ../qdarkstyle_midnight_blue/rc/checkbox_unchecked.png - ../qdarkstyle_midnight_blue/rc/radio_checked_disabled.png - ../qdarkstyle_midnight_blue/rc/radio_checked_focus.png - ../qdarkstyle_midnight_blue/rc/radio_checked.png - ../qdarkstyle_midnight_blue/rc/radio_unchecked_disabled.png - ../qdarkstyle_midnight_blue/rc/radio_unchecked_focus.png - ../qdarkstyle_midnight_blue/rc/radio_unchecked.png - - - ../qdarkstyle_midnight_blue/style.qss - - diff --git a/dist/qt_themes/default/default.qrc b/dist/qt_themes/default/default.qrc index 4522865b4c..125bc3f342 100644 --- a/dist/qt_themes/default/default.qrc +++ b/dist/qt_themes/default/default.qrc @@ -4,23 +4,37 @@ SPDX-License-Identifier: GPL-2.0-or-later --> + + + style.qss + + + - icons/index.theme icons/16x16/connected.png icons/16x16/connected_notification.png icons/16x16/disconnected.png + icons/16x16/failed.png + icons/16x16/info.png icons/16x16/lock.png + icons/16x16/sync.png + icons/16x16/view-refresh.png icons/48x48/bad_folder.png icons/48x48/chip.png icons/48x48/folder.png icons/48x48/list-add.png + icons/48x48/no_avatar.png icons/48x48/sd_card.png icons/48x48/star.png icons/256x256/plus_folder.png icons/256x256/suyu.png - - style.qss + + + + ../default_dark/icons/index.theme + ../default_dark/icons/16x16/lock.png + ../default_dark/icons/16x16/view-refresh.png diff --git a/dist/qt_themes/colorful/icons/16x16/checked.png b/dist/qt_themes/default/icons/16x16/checked.png similarity index 100% rename from dist/qt_themes/colorful/icons/16x16/checked.png rename to dist/qt_themes/default/icons/16x16/checked.png diff --git a/dist/qt_themes/colorful/icons/16x16/failed.png b/dist/qt_themes/default/icons/16x16/failed.png similarity index 100% rename from dist/qt_themes/colorful/icons/16x16/failed.png rename to dist/qt_themes/default/icons/16x16/failed.png diff --git a/dist/qt_themes/colorful/icons/16x16/info.png b/dist/qt_themes/default/icons/16x16/info.png similarity index 100% rename from dist/qt_themes/colorful/icons/16x16/info.png rename to dist/qt_themes/default/icons/16x16/info.png diff --git a/dist/qt_themes/default/icons/16x16/lock.png b/dist/qt_themes/default/icons/16x16/lock.png index 69d399050804cfa45e00850d4330a5b7cfaa3a43..fd27069d807e26186c8a610bdbcc0ce172562af6 100644 GIT binary patch delta 252 zcmVCM8whdf>JxsruFf zb%+Dm4u(=#M8SY-MmmKS9@Y;9X%jfGqAb^b6~Ghx2q9%=Km*jAY9sCn*is%8f}*QX0VKElhHfx<~wrlZ+Rp qB)y(^kp^-mi|Z;_>7Bed=iCQi-Z^EWi_{zd0000>Xmko?yFzklBMy!V_r_nF_^GxyHSt@A{qwbZC7SSbJi)Eer_x&S~3pAbMsLSSZI zh4usn^S-U2Pe!08WVTU+Ik|_ru{QuT@P7mHcMvU009kxgjC}Om?S1?odf5Sge}7>o zH)n5~haPsq?p_WVTXL)b(B)_-E9nPhZq7I*vHu7p{e3YaertTIe`C$4Gzk^T-C~eN zZ^X_^eCe4H57{!5|3QY*`oN$CS57rwZF|pMn)1etP&-)Zi z!lS@oN*ZN{G{lUE+rFM_P88NnUku49_7F3ZfXWQmbKzRx+>|9SY#BC;r4|~x4GJrU z?r;;t9GXb6vx!uTj*!9S!wEYa4@zNI68wSOQ)2o~l(xB2YZpm?c7(tmI*HrA*+AEc zq8o2dnj;c(nN4I%w8iU&k7EK}OzrF1_o0dGB6l z`>{LsrOhE|HLyM<4?tMIpX@&T0()$=yotK{}47&W**RHsC z(Q$~lJ%|oZS%@a$yQKZ__Du6yY&q=B4ZJ+{dWJ zgU%lOkp>AE*qV3~jfTDy2BQUwaeseYV}8sGsHssL(!se84Gg&w51d3!Br_EuNgB}S z0q*dj!hGkIwW-d>XNcY>KsgV!#JKbYZt$XRip_U_S?@lrjRHt`MWM{w8Oc*5prxF2 zSHb-WB5$l%uc0>5u|fBJUS-vS>hn8k)L4z@ajD3nfS%>Ud#TdQ;NwKHJm6(*R`v=l zbGvbH+0`4;GItW)Kv!P(Mc>IAf;M$7kry}-5-1NUB{uxN+sz;b4PuS-R>lm?26$Fs|&y@T(re3O=0m+uTWmf(Q zG3H?g6DhIQmI^Tt-y~n+GZj+faV4F^5>p1xWFJQIE|oSN34JC}`P8mIMl>Tf#O)ka zCy6^`P^{qh{#L<;q3jm6AaWP3sE3xqM9jKg=8zkoi=u3nWHU{~v3hz?8R6u;oQews z&=>U*oEUxH7V_uvj=d#2DTTelEQM8wLg?Aw%NCpWiGbJ;ul+j`k4O8UU*jjaHjDB9>R%$2- zNO@awEnv%vb-;JbN?X{7%Z530{DeNBQ3OYNz~rf9E+YJTFzjBXV||r2`S%Oc` zOnuwq>!B1D8%3R(Ggr-w=34WZQ(H?hp@HzEqR6=9pR^JtTakg+1$1u$)G4Sd!w}LQzXW17=bK{fT&hvNP35uP@G^FeQ0{iICO`N9hk;YS`ruySW{&}}FTo12qoasOj* zuzg~I&rYqgUA#^Jn)ppLa0&mGgV7z%|WLs16JyV^u zpr;5{c69n9Yka2RL^1=Cg!aAIOysItrYtwxa~TMT{SC*)VSW{Mq*65J4dfc{tj;UG z&?R_E=SH`|!VuKA8eiy`TkCh;ThOr-BoD>Lp~1yb2!qZC2~GF3s9yO!&UERrnd>Bg z<>QDCO7($Cu%zPZj*q(vKoO}_v{tJ(%~DhTGxdyl!x3hJw&b|CgvN0R zg=pyVKk72F?C_748#84*%@ud8kN2Q&#I*KOY9snI39|1UXxS z6_BMBs3Z!#x;cE8fK56F^~3~txkp4Znwd!r-+eM(Xj{I&>oj3kTG`o-nt7?cV|5NxHADn(*D`ZXad33#?-!w!OsxJhp`h8>y=)EJ z8?ur;Bd>ndruRL6_x2r6#=s+!PtG}%9A~ey#u#K)XlgPcDE>(W_+I7gsm;nlf%tjb z$g6@UCmZeo7JI+^vsxQ7w)e_%)||cw{p11h8AKB)OaAIDW0Iv932nG^G=x$8DRdlFuhc3-=+m z6@s;pZo7crZ$2I~l8po+;65kP7L6aB3nMxUe3JXnqu-7o*bpg6lF380X!djD`pnms z^;zdHKWCcvOE`h;qLYN>k&U)9Q44MGSxrFAUWk0@WXAe_Wfp3d-R<+F?CUkkVh@2w zlvrccE*@vCQqC6d$fphCwqK9Ef>!(X10T?WiXNWwaG@UDIn9Pb176*=T%a8tjmGj_1&3`H6^^zpaXjTEmGuhh0OHLCK&eXlmeN<2lCL1KQ?l^ zaSt4P{ zpJr!Ck&3jTbkC!EBcrU9rtsp2`mA(;O`FHnTgl(|f>gQxZS&K`oT|eg@_R!k!m;S^ z;Luqx{teu+60%zsNX+br$HF7gj>|1Y{ASV zC$5JoHY57uv8w%aR;G#E7l(P~vgkzr6j}UDFnv+4xLS<7AD)MV^e2t5>Uk&=r)3G4 zRY-F+PWp*F84W6{~vL6A)#ITR}=Et-D*kth@K-IBv2rY3%0g^*~b zpTCq(_lC*Q&LflY_%4r)3qt?KGE`ksbsu*L9~9nR;H@CDj@xNSA|&Bj*1xP+IuW(E z<x#EX#~OTAMu=Cj?$vykYrlaVXyPP^X7+xZ%97v^?=}p9+X!&MLk?hWus52kG-h zG%WTbYO7wb;+kl%f_FqEJ?>m)%Z7GDOLcA!IPCmhPkdzI@4lTD?73(1jx9wb{@~f% zn<&E>IJE;I{c7RXiUED~&;)7lwgD|%Rz2)2Moel`qvEEzZ)yaK} z%M$h?hwsEfq=v6I+jKm~+ICE*^7rV^Eg-p%^zeu@-!+JR0(bFi;2x^vl-fBOTB%i&^J zL(HtCX!_r#amBrOLRQ2{5(*Ssp4N_9(UCX45s~L;;OS=4{N&qXsizJAJuhVRc~uS^ zPS#}%CIuCF?Hw17D>!{3Cp3!@fkJy2-m@K3SgkSc5&rB&4%Z+lAI+9YjnC`-$hjM! zu;jX%1^d9enLegkj+X2Av$$4HvS1l>l;UZxmLb)_w8%4_Dr~e!;r7@!T66X?TnL=%ci8!HVh8EkHYh=tQSN$+>Jp}J&FGB^2 z5Sk{b$}|VQ1EkBmQT?RLwnu+hn62uIs*9H@JL~PLdiwku+d)oD)jW<^ud)c!gj%8W zC?Z0FLZQYAd!7pFBKNDdjZ2Jpd}{TkKw}x9>t+;OQS>?2aT}GTOJc~`q7o2WQ-3WW zM)BS|hn(08)Im1s)tMP*1SiPHTutKKOhdk{aTJsfA$k9QI=+5E`z5UWL5!_pHQ|R2 N&`{A*F1u|N`hPMhH%|Zn literal 1948 zcma)-eKZsLAIHD5nN5aU-9;WUY$P#{Ym?Uzu!5(^E>B#&inOwpZ8zye?IvXKW~)!Ms)xH zinPlk0077;LI47`YG2aBX8=%(Bzd?~Q{*$RpiC?YcqtZz=o>c=z5GXg`t?63-4fe! zbFgeWf%WwJvdQ=(-W<2)YQ8C{o& zg%KN&u{8KkWTW87Pi~m!JOZ~0vCs!|#E3H1>6G~+t=_=;aI0LIErC@esf7Lra1lT< zUL{8U2vAuo{Vtqwgu!s|aBrP{@QutN5^`F0_o6&8;gQ@@I?pWGjd-lrrD{pw+McyA z<{Ydy^Jk#r2UV2syE+EOj$OiLBbl@NQp?+UMdpXKjail`u+IF!iDa{DftUI1h+kZE z0GS_^&O^mf2*W1qiNGM7b_(}mY%2?y`xRqy99f!HVTYN)XAGU`*d|ya^VQ;K8|kM- z3jerlBsC(&R(~b-X`bGWviEq7Ot&ga$msHIAeU8&^~lmUa?B{)?D9VH$U6Glq-j0I zVG~O986~Y8NtT8=+mA}G-v6l5Xy=%v5EiO@dM;7SYKk|(E>9S;k=Kh^VA*K0504J-a*hl;+5T^(q55GJg8L zGrVw>)<4d=*HGgH&Kl3&7W3+0{OI$?Hl(;#17=+B&dzr*eq8Ocx&Cu7$Vloc3+V!b zP5W29IX^(D)6G2y-le$U*necf?0F{^?!L6QC%M~=`WTkR0F&k&tS2iKEB;v@=;>aU z-V+rDpKb4vQb{)wg-;N~kLg`4QvOemgBk}HJ|)X2qj0LNQ2wtP0Y>E&w! zprWFIzR*eh{r&s!Yj?tGiji5!4`ydL~0$sKS0scSF>V;8?|7YEM!LB`Z zmR?&w2CJplJim6mDjn2JvbJo64=~OI&6E3Cl|#V!5_WX9Vhaa7s!LFjwY@$Fl+UoH z!XufdDz`gmVpLBCenlBaSoUaK2;YacVe4EgDcFNDl4e|pph5F&ey*#OgNQ;e3okpi z4wTdlpm|Ewy7@s6ac7qW&7Q5pDlTwYt+!~HszTdNn=fl7+iVt9T5A~fapw5%(-^z@ z`jK-=F<0UZ9SfCUs4p-fZ=17S4zl3uEJTv&55+ds3MzUm`s!cN=rO8R;iUfWc$X<9 zsHeJb(GnUqf6lYkc$cu%veQrhJ|p)lL@?r(Hy^ASWmYcejvVWma3e}yRmhqczNHRO z{Qt4szjrOkIM=WYFDgk~|MV3Im{s>|PXL=!^J)zp*`=;MF@^q%nbPwfpN7S=&TLA! z8pY?XtLtm?407y*TQt>JhtO6}*dj29k5*mfg&F@?*%z~H2o=l8TDBV4$XGz}1A^vH zzEO3f|0uK+_ChkgZRnUc5Z^Bf11ISl0O5G96Z=%#_uHYp5KA)D=r+*I%`|aKfKlB{ zJVPF|PtDbeloVc9See_AZ0NV*!?2-@vmgV5Y)oyzM`0m??Zw;f;=2m$5-iYGG0_Ua4T1^8k)8-V#duMR9 zXIl;?XR=ymU5;TUze(1MNnXErYbC>*;oPc336Ad{ZFR^bC;vJVxp7IVgjGB}tzbzn z|4S0x3?Yj*F|neAqv$MK)#FI3Q>ci5<$JoYif+Gx6oLfX?61r1Xu?Ra9W4v{9TJU1 z7g$?YVl`fyh@!qiB4@4tI$$Khwz>EEyCjhGB-mC*$NZF^>vz)^DdIR-#gN}6ekRh2 zXW-4fceM7Yf2c})q?U2LpH}v@xm!)PT~#?UM8l2rg3XhB#r7I^Sa2I^bnl6af#l9= zSa97AF_~Graq9C%$({)7W-ABh(CV_(f)Stg4S(jqR|HN@)z*jx=9Dzo(vvF)-y8In zN;B_{gg0;}oOt89<$}b7@)%a%IE|*ryp<|@O!;-otCVvUqLYVTaL0Al{MS!3CGi%} Yh89WFHBF|yt6vw8JpDWxh~e3P1CC-@r2qf` diff --git a/dist/qt_themes/default/icons/48x48/bad_folder.png b/dist/qt_themes/default/icons/48x48/bad_folder.png index 364ec646f6f1c6b5b632fb68efd2602aa2c87f25..34069c6b230de579d436fa9f0c21ae37af905b2e 100644 GIT binary patch delta 503 zcmVMLN`2`L5i1E*bZ0xZA+EWiRRzyd75 z0+!u4eEZa7(PBUW_oJiOcj^3O-H(qLOCa)pFZSO!HzS~4t7FCya6CA!z)2mZY~eTSYnn^Nw}$ z>v}KiDEQb+U3CvQ9-g=)N*xLEKM|z&|4-Fq68}Xh(|h^CH3}8`9|*OzB>g7(FJHJ? tG64xtEsHs}s+0m{xeJ{8Cpa7q$popE`M?eo;{B1n&osBYyw^b5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vG$ zaR2}!aRGnSI!pin1B6LLK~!i%?U_qx6G0fqceY8JQfje^v^`Z?C}^vKU~SWss8#7B zq7>^BQS_o%D&FixC}>dx@paXk2fb`ZDZ`N1#yeVg56zU<8GBU+9eIp#J@EUkFq1{j3pFdw?%DLe;9&1{xf4~HRFVJbWs4gO*0WZOnAGQDDfvngJ|B@|Er_CrMLvI&}KUPF63tDU+} zHu4pokB2E_rhtzd8%iVXf$ngJ|1ia3wJcx6(n_)N0)IwY>*smAo+q4f{9^0^#k5Ym ztsLbAOnAJ#=$_Rg1-yDZ&wETH%28TCcyq84L#s!mNifwNjkY#ciBu_Sk3cNek5?c3 zsWD#541F15Iv?a4d3h(WRF1L&A|d~3Ea>`)7%IQ{_+{Dc2QLu6iLc^a(T>K3c&rX3 z1zsWj3B_=;jZ8e^3rO;8hQYp#oK3eX^~iLVl1+rr`)T^lJu zs({Fr#zpu9r#Zfe>&A1#;Lj+IubP5$t@m?VuzyUXQpg>F3B3<}qC{lrP&}zm9v86` zt_ui<{7W%#_ltBIm~H4%;-W|$;0Ne4MB*CvM}X_6@#={usi5)06$6iY$_E~HqlmX+ zwH@rsPKnqx5?zS5ieMU;b{2<2fxY35rhVAXKES8oTAPSmy9)Xt1OR#6SL$==RR>Ov#XPMuh06U)WY3f(Jf3*aAUt?W0XXD{?frwy}FYEx@1Okp>)ccpBU+GsvjbfN_gL8l$FL3%p3 z7AA3;zv7H zv$NlKH@gFOfWh#;p`a7>HS|=Xi|Jg_aj&Q#lU501AZa|+UAa*$TBPeBeF7jKv8Dk5 ze;w^um+kXLmkVYMlpEEerQBx#g;3;qrw4ny->$UZmIbjTWRb2Te(?ZM&|~|G3*z^{ zq-+vF0qojdHgVK7zYq;~zqlj79R{1La)8Rp))yK0 z>T2{Kfa!bW0|n%d2^)LCHHh}W@Dahqe*=IEjGiP3<~)Jf8ar(+mgszn)}G`TEFb57 zrOHkr+06?jN9vE!)Eh{BA4vTZFb0xF)Cb}q+CH!X7z0To>I0Mk^tVg^WtNXe+6UHl z0>7F3WqnsRU-W+9EdCE@3Mha(U=39Kwt-~tF_(V@tbhe@rpPOZE8smK ze>p4rtoJlw(sS~Sy_Ung-iEwoLv)`?aNS?OM9DdRze{bt7Y*)v=M)A$(H#DiS)^wYk?h>bk0U9E8N#dFJ zk7Z7Z{bBJ_?b-c#$@lcjrhY3rGspE`T8H<(#ta z__C`C_SfHjI(Z}Ue^zw8&i*}n=g26o2Zjq5>x4_@{atx`@A(p6txs?A`x& zH+P$zDR?}dd{Y-5qcq?&j$$V^VkMm620jJ78Zm`e_>qz)*nf;QVHMxeR!9z)a0X9MeSdR~J!&X``4#E0ETKP|3pDHOwoRWba)+CxW{lhf5VzqmN=u#sSn&Z| z;{&+H2XKuK;2IymH9mlAd;r(@0IpF0t+klgR;^uQtEs2}_oa4>zVMhO2Et<$-76Q` z@eQMQ`;Vx#7cGgnMl~#>_8Fozs^&HfIKb$Wd2k=g^itz9+6HD()!K_OR?wVESyVL! z%ZfH8@e*w(W;ppv)}K?`k`@X>S1?**}8GQ4U;xaoziYw&aP9>#K6FCLDMcJ zMv;L*jPcAXhggPH51kpFeh6)-s@NsKz)&x_JiT1`SSCY{P>+xfP&EvkxzRcGd*aWf ccAs{iWzSA@?$SRO+zyiTboFyt=akR{02`=D;Q#;t delta 149 zcmaFDc#Ls^WqpOGi(^Q}y|>pL`5Fv3SR6k5uRo@K6Ysy;;tX-dvfr70TTlQgYD^lA8tm5GmKYK9DMB>XWemnD#Xmdutj3| x>TEw(y-SO~EY62-=%@ed%(4DlnH&a{XiVnHj+glfIxdw<{Dl&Kl>?zm68m``)x zJLk-u`|dgC{+d@RQ>ILKNUVOj#2Qy=H543u4+o~h}$Yl66AKfZVTN1_u%lf3?qEJG%pMtyv?S3^;TM*WBQU6Utn$ zo&iZTwvu=cA%FhawusB^sRvrKg8dA5auC=2fpKWBmaJhl0}`ukA$A@?EYz-GLc83N zR2i~@-3+j^UtP0GUKoGfTDF3<3`o4O3FGG}#9~1~7Gx=Rq*UF1#$pCUt@}aRW7M*? zFIdTd+^cDzNaPvBpaJoSxrN<+^__ph*a3+*&Bya=F@F$haL%bA;cA#&lm&i;;Jijj z;F$58JZBI+8HE1>9PN9b{WutT9gy42RWxmMAsSzZM)jRA#;F-)j;a$PBPcJBp*{ra zCAz4~kC)iVanB{k0g2ZigJmnCTcu4?3#MW8?Hosw<8vr?%vOyZMuj_Cn|cVvX)Jw2 zYd$#+aDUD75vq)IV#wUorm2I-Ey{db%`4u1)fS)pbKt?UY2;AG*=5ypGw*=|DB9H?LhAYw#E3y`AjA6H(U1-B9gn0&r zoPT;;ZFgQ#K_4S^S`Li41I&xHWS;Hp;0--D^p*T0lzP1k(b_t$Elx!bCsZtp)qj<*O-oPg=d**0_9}GA%|M|Xej&tVxXD-ZPc9DpYdjqf?NCHoQ zS21cCMHX-wW!zdW0rO_jS7;o=X+Bks&Z4hSNC5qKPoST8mu+NJV>djmi?yxVq@d|F zxlh#Z0}n*oUVp=yM)4l|)2;^^MB9g1a~FX1*o{sA`M^Tpr|4T}O4Q^MlFR22Fot>u z9tXt!6L^FDDIc=*9Tt6WXWU%?)?ha{2^3lS7XiOT%xV+Drk0Rg65YU%r9O;GC;Y}_ zglv!Y1wak3EF{lCQNQgHa|_sEsW$@OLh=s)&rlmfAb++2pYi^h29-ZRi3@Lu?#q<- z6RNkNi5e1&2_I@uEpq4@ujnh^_`3|fS^c&gka;sZN^$|~JHSj|z0HJWjM@5Z#Y5tIWjT|}m^rw8d` z7tUQKskO>|#$|+Dpv^^4=KATN8|MRQBj#;e9)A%(M&Ob;SLj_Pg-p`v98v$80Y?g7 z0=NT_$prR`dXyzJ<3~-?2XwECfY?wk1p9nqi-DcG6#K;W3C?;WPCd{i#9CcqvQR0n z_1iH9oYH*~t%9@5xND91I1fAWns6y9{r1Y`UjWO+n2jQ449JUP0(*qeC+rusb-;HY z^M9!_jD5RIpi&cSOkErk=oBLDx;+o*@Gv{5i(6j@(@(lx^mUpxpM$z4v5M3HYk?jQ zgAY;X*HZnrTTGAUs1fZ$WbjS!gWT>0ffk%wY7%vUbsYQhO6WFuxs}u$Eja&E#_msH z`nN7?ChGP?dx1(Ho=P3#Hdb=hnw&r}@Mz0JI909@?jw}1WBs@$2zTI53+Ft7r4Ob>lo6-L4Y};3R4rOrlcXJ3v_k&NARG(<%BeaDteBN6Q9Q0EGrQ3sIBtx~rYT d9Om%9;xE_n=@mA1l}`Ww002ovPDHLkV1gj%$m9S3 diff --git a/dist/qt_themes/default/icons/index.theme b/dist/qt_themes/default/icons/index.theme index 21b35e3e3c..6c455463ee 100644 --- a/dist/qt_themes/default/icons/index.theme +++ b/dist/qt_themes/default/icons/index.theme @@ -1,7 +1,6 @@ [Icon Theme] Name=default -Comment=default theme -Inherits=colorful +Comment=Colorful theme Directories=16x16,48x48,256x256 [16x16] @@ -9,6 +8,6 @@ Size=16 [48x48] Size=48 - + [256x256] Size=256 diff --git a/dist/qt_themes/default/style.qss b/dist/qt_themes/default/style.qss index bd9c1964cf..16b779b1b8 100644 --- a/dist/qt_themes/default/style.qss +++ b/dist/qt_themes/default/style.qss @@ -22,7 +22,7 @@ QPushButton#TogglableStatusBarButton { } QPushButton#TogglableStatusBarButton:checked { - color: #000000; + color: palette(text); } QPushButton#TogglableStatusBarButton:hover { @@ -49,6 +49,10 @@ QPushButton#RendererStatusBarButton:!checked { color: #0066ff; } +QPushButton#RendererStatusBarButton:!checked[dark=true] { + color: #00ccdd; +} + QPushButton#GPUStatusBarButton { color: #656565; border: 1px solid transparent; @@ -65,13 +69,21 @@ QPushButton#GPUStatusBarButton:checked { color: #b06020; } +QPushButton#GPUStatusBarButton:checked[dark=true] { + color: #ff8040; +} + QPushButton#GPUStatusBarButton:!checked { color: #109010; } +QPushButton#GPUStatusBarButton:!checked[dark=true] { + color: #40dd40; +} + QPushButton#DockingStatusBarButton { min-width: 0px; - color: #000000; + color: palette(text); border: 1px solid transparent; background-color: transparent; padding: 0px 3px 0px 3px; @@ -131,10 +143,6 @@ QWidget#connectedControllers { background: transparent; } -QWidget#closeButtons { - background: transparent; -} - QWidget#playersSupported, QWidget#controllersSupported, QWidget#controllerSupported1, @@ -383,7 +391,7 @@ QStackedWidget#stackedDialog QTextBrowser QScrollBar::vertical { border-radius: 4px; } -QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizoncal { +QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizontal { background: #cdcdcd; height: 15px; margin: 3px 15px 3px 15px; @@ -592,42 +600,6 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed { border-radius: 6px; } -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { - image: url(:/overlay/osk_button_B.png); - image-position: right; - qproperty-icon: url(:/overlay/osk_button_backspace.png); - qproperty-iconSize: 36px; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { - image: url(:/overlay/osk_button_Y.png); - image-position: right; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { - image: url(:/overlay/osk_button_plus.png); - image-position: right; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift { - image: url(:/overlay/osk_button_shift_lock_off.png); - image-position: left; - qproperty-icon: url(:/overlay/osk_button_shift.png); - qproperty-iconSize: 36px; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift { - image: url(:/overlay/osk_button_shift_lock_off.png); - image-position: left; - qproperty-icon: url(:/overlay/osk_button_shift_on.png); - qproperty-iconSize: 36px; -} - QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket, QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket, QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis, @@ -640,47 +612,6 @@ QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel { color: #ccc; } -QDialog#QtSoftwareKeyboardDialog QWidget#button_L, -QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num { - image: url(:/overlay/button_L.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num { - image: url(:/overlay/arrow_left.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_R, -QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num { - image: url(:/overlay/button_R.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num { - image: url(:/overlay/arrow_right.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick, -QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift { - image: url(:/overlay/button_press_stick.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_X, -QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num { - image: url(:/overlay/button_X.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_A, -QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num { - image: url(:/overlay/button_A.png); -} - QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled, @@ -711,20 +642,3 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled { color: palette(midlight); } - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled { - image: url(:/overlay/osk_button_plus_disabled.png); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { - image: url(:/overlay/osk_button_B_disabled.png); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled { - image: url(:/overlay/osk_button_Y_disabled.png); -} diff --git a/dist/qt_themes/colorful_dark/icons/16x16/lock.png b/dist/qt_themes/default_dark/icons/16x16/lock.png similarity index 100% rename from dist/qt_themes/colorful_dark/icons/16x16/lock.png rename to dist/qt_themes/default_dark/icons/16x16/lock.png diff --git a/dist/qt_themes/colorful_dark/icons/16x16/view-refresh.png b/dist/qt_themes/default_dark/icons/16x16/view-refresh.png similarity index 100% rename from dist/qt_themes/colorful_dark/icons/16x16/view-refresh.png rename to dist/qt_themes/default_dark/icons/16x16/view-refresh.png diff --git a/dist/qt_themes/default_dark/icons/index.theme b/dist/qt_themes/default_dark/icons/index.theme index 60a072d1d6..32d84fa9bd 100644 --- a/dist/qt_themes/default_dark/icons/index.theme +++ b/dist/qt_themes/default_dark/icons/index.theme @@ -1,7 +1,7 @@ [Icon Theme] Name=default_dark Comment=Colorful theme (Dark style) -Inherits=colorful +Inherits=default Directories=16x16 [16x16] diff --git a/dist/qt_themes/default_dark/style.qrc b/dist/qt_themes/default_dark/style.qrc deleted file mode 100644 index 7de4737c2c..0000000000 --- a/dist/qt_themes/default_dark/style.qrc +++ /dev/null @@ -1,25 +0,0 @@ - - - - ../colorful/icons/16x16/connected.png - ../colorful/icons/16x16/connected_notification.png - ../colorful/icons/16x16/disconnected.png - icons/index.theme - ../colorful_dark/icons/16x16/lock.png - ../colorful_dark/icons/16x16/view-refresh.png - ../colorful/icons/48x48/bad_folder.png - ../colorful/icons/48x48/chip.png - ../colorful/icons/48x48/folder.png - ../qdarkstyle/icons/48x48/no_avatar.png - ../colorful/icons/48x48/list-add.png - ../colorful/icons/48x48/sd_card.png - ../colorful/icons/256x256/plus_folder.png - - - - style.qss - - diff --git a/dist/qt_themes/default_dark/style.qss b/dist/qt_themes/default_dark/style.qss deleted file mode 100644 index ca6daa2d52..0000000000 --- a/dist/qt_themes/default_dark/style.qss +++ /dev/null @@ -1,687 +0,0 @@ -/* -* SPDX-FileCopyrightText: 2018 yuzu Emulator Project -* SPDX-License-Identifier: GPL-2.0-or-later -*/ -QAbstractSpinBox { - min-height: 19px; -} - -QPushButton#TogglableStatusBarButton { - color: #959595; - border: 1px solid transparent; - background-color: transparent; - padding: 0px 3px 0px 3px; - text-align: center; -} - -QPushButton#TogglableStatusBarButton:checked { - color: palette(text); -} - -QPushButton#TogglableStatusBarButton:hover { - border: 1px solid #76797C; -} - -QPushButton#RendererStatusBarButton { - color: #656565; - border: 1px solid transparent; - background-color: transparent; - padding: 0px 3px 0px 3px; - text-align: center; -} - -QPushButton#RendererStatusBarButton:hover { - border: 1px solid #76797C; -} - -QPushButton#RendererStatusBarButton:checked { - color: #e85c00; -} - -QPushButton#RendererStatusBarButton:!checked { - color: #00ccdd; -} - -QPushButton#GPUStatusBarButton { - color: #656565; - border: 1px solid transparent; - background-color: transparent; - padding: 0px 3px 0px 3px; - text-align: center; -} - -QPushButton#GPUStatusBarButton:hover { - border: 1px solid #76797C; -} - -QPushButton#GPUStatusBarButton:checked { - color: #ff8040; -} - -QPushButton#GPUStatusBarButton:!checked { - color: #40dd40; -} - -QPushButton#DockingStatusBarButton { - min-width: 0px; - color: palette(text); - border: 1px solid transparent; - background-color: transparent; - padding: 0px 3px 0px 3px; - text-align: center; -} - -QPushButton#DockingStatusBarButton:hover { - border: 1px solid #76797C; -} - -QPushButton#buttonRefreshDevices { - min-width: 21px; - min-height: 21px; - max-width: 21px; - max-height: 21px; -} - -QWidget#bottomPerGameInput, -QWidget#topControllerApplet, -QWidget#bottomControllerApplet, -QGroupBox#groupPlayer1Connected:checked, -QGroupBox#groupPlayer2Connected:checked, -QGroupBox#groupPlayer3Connected:checked, -QGroupBox#groupPlayer4Connected:checked, -QGroupBox#groupPlayer5Connected:checked, -QGroupBox#groupPlayer6Connected:checked, -QGroupBox#groupPlayer7Connected:checked, -QGroupBox#groupPlayer8Connected:checked { - background-color: #f5f5f5; -} - -QWidget#topControllerApplet { - border-bottom: 1px solid #828790 -} - -QWidget#bottomPerGameInput, -QWidget#bottomControllerApplet { - border-top: 1px solid #828790 -} - -QWidget#topPerGameInput, -QWidget#middleControllerApplet { - background-color: #fff; -} - -QWidget#topPerGameInput QComboBox, -QWidget#middleControllerApplet QComboBox { - width: 120px; -} - -QWidget#connectedControllers { - background: transparent; -} - -QWidget#playersSupported, -QWidget#controllersSupported, -QWidget#controllerSupported1, -QWidget#controllerSupported2, -QWidget#controllerSupported3, -QWidget#controllerSupported4, -QWidget#controllerSupported5, -QWidget#controllerSupported6 { - border: none; - background: transparent; -} - -QGroupBox#groupPlayer1Connected, -QGroupBox#groupPlayer2Connected, -QGroupBox#groupPlayer3Connected, -QGroupBox#groupPlayer4Connected, -QGroupBox#groupPlayer5Connected, -QGroupBox#groupPlayer6Connected, -QGroupBox#groupPlayer7Connected, -QGroupBox#groupPlayer8Connected { - border: 1px solid #828790; - border-radius: 3px; - padding: 0px; - min-height: 98px; - max-height: 98px; -} - -QGroupBox#groupPlayer1Connected:unchecked, -QGroupBox#groupPlayer2Connected:unchecked, -QGroupBox#groupPlayer3Connected:unchecked, -QGroupBox#groupPlayer4Connected:unchecked, -QGroupBox#groupPlayer5Connected:unchecked, -QGroupBox#groupPlayer6Connected:unchecked, -QGroupBox#groupPlayer7Connected:unchecked, -QGroupBox#groupPlayer8Connected:unchecked { - border: 1px solid #d9d9d9; -} - -QGroupBox#groupPlayer1Connected::title, -QGroupBox#groupPlayer2Connected::title, -QGroupBox#groupPlayer3Connected::title, -QGroupBox#groupPlayer4Connected::title, -QGroupBox#groupPlayer5Connected::title, -QGroupBox#groupPlayer6Connected::title, -QGroupBox#groupPlayer7Connected::title, -QGroupBox#groupPlayer8Connected::title { - subcontrol-origin: margin; - subcontrol-position: top left; - padding-left: 0px; - padding-right: 0px; - padding-top: 1px; - margin-left: 0px; - margin-right: -4px; - margin-bottom: 4px; -} - -QCheckBox#checkboxPlayer1Connected, -QCheckBox#checkboxPlayer2Connected, -QCheckBox#checkboxPlayer3Connected, -QCheckBox#checkboxPlayer4Connected, -QCheckBox#checkboxPlayer5Connected, -QCheckBox#checkboxPlayer6Connected, -QCheckBox#checkboxPlayer7Connected, -QCheckBox#checkboxPlayer8Connected { - spacing: 0px; -} - -QWidget#Player1LEDs QCheckBox, -QWidget#Player2LEDs QCheckBox, -QWidget#Player3LEDs QCheckBox, -QWidget#Player4LEDs QCheckBox, -QWidget#Player5LEDs QCheckBox, -QWidget#Player6LEDs QCheckBox, -QWidget#Player7LEDs QCheckBox, -QWidget#Player8LEDs QCheckBox { - spacing: 0px; -} - -QWidget#Player1LEDs QCheckBox::indicator, -QWidget#Player2LEDs QCheckBox::indicator, -QWidget#Player3LEDs QCheckBox::indicator, -QWidget#Player4LEDs QCheckBox::indicator, -QWidget#Player5LEDs QCheckBox::indicator, -QWidget#Player6LEDs QCheckBox::indicator, -QWidget#Player7LEDs QCheckBox::indicator, -QWidget#Player8LEDs QCheckBox::indicator { - width: 6px; - height: 6px; - margin-left: 0px; -} - -QWidget#bottomPerGameInput QCheckBox#checkboxPlayer1Connected::indicator, -QWidget#bottomPerGameInput QCheckBox#checkboxPlayer2Connected::indicator, -QWidget#bottomPerGameInput QCheckBox#checkboxPlayer3Connected::indicator, -QWidget#bottomPerGameInput QCheckBox#checkboxPlayer4Connected::indicator, -QWidget#bottomPerGameInput QCheckBox#checkboxPlayer5Connected::indicator, -QWidget#bottomPerGameInput QCheckBox#checkboxPlayer6Connected::indicator, -QWidget#bottomPerGameInput QCheckBox#checkboxPlayer7Connected::indicator, -QWidget#bottomPerGameInput QCheckBox#checkboxPlayer8Connected::indicator { - width: 12px; - height: 12px; -} - -QCheckBox#checkboxPlayer1Connected::indicator, -QCheckBox#checkboxPlayer2Connected::indicator, -QCheckBox#checkboxPlayer3Connected::indicator, -QCheckBox#checkboxPlayer4Connected::indicator, -QCheckBox#checkboxPlayer5Connected::indicator, -QCheckBox#checkboxPlayer6Connected::indicator, -QCheckBox#checkboxPlayer7Connected::indicator, -QCheckBox#checkboxPlayer8Connected::indicator { - width: 14px; - height: 14px; -} - -QGroupBox#groupPlayer1Connected::indicator, -QGroupBox#groupPlayer2Connected::indicator, -QGroupBox#groupPlayer3Connected::indicator, -QGroupBox#groupPlayer4Connected::indicator, -QGroupBox#groupPlayer5Connected::indicator, -QGroupBox#groupPlayer6Connected::indicator, -QGroupBox#groupPlayer7Connected::indicator, -QGroupBox#groupPlayer8Connected::indicator { - width: 16px; - height: 16px; -} - -QWidget#Player1LEDs QCheckBox::indicator:checked, -QWidget#Player2LEDs QCheckBox::indicator:checked, -QWidget#Player3LEDs QCheckBox::indicator:checked, -QWidget#Player4LEDs QCheckBox::indicator:checked, -QWidget#Player5LEDs QCheckBox::indicator:checked, -QWidget#Player6LEDs QCheckBox::indicator:checked, -QWidget#Player7LEDs QCheckBox::indicator:checked, -QWidget#Player8LEDs QCheckBox::indicator:checked, -QGroupBox#groupPlayer1Connected::indicator:checked, -QGroupBox#groupPlayer2Connected::indicator:checked, -QGroupBox#groupPlayer3Connected::indicator:checked, -QGroupBox#groupPlayer4Connected::indicator:checked, -QGroupBox#groupPlayer5Connected::indicator:checked, -QGroupBox#groupPlayer6Connected::indicator:checked, -QGroupBox#groupPlayer7Connected::indicator:checked, -QGroupBox#groupPlayer8Connected::indicator:checked, -QCheckBox#checkboxPlayer1Connected::indicator:checked, -QCheckBox#checkboxPlayer2Connected::indicator:checked, -QCheckBox#checkboxPlayer3Connected::indicator:checked, -QCheckBox#checkboxPlayer4Connected::indicator:checked, -QCheckBox#checkboxPlayer5Connected::indicator:checked, -QCheckBox#checkboxPlayer6Connected::indicator:checked, -QCheckBox#checkboxPlayer7Connected::indicator:checked, -QCheckBox#checkboxPlayer8Connected::indicator:checked, -QGroupBox#groupConnectedController::indicator:checked { - border-radius: 2px; - border: 1px solid #929192; - background: #39ff14; - image: none; -} - -QWidget#Player1LEDs QCheckBox::indicator:unchecked, -QWidget#Player2LEDs QCheckBox::indicator:unchecked, -QWidget#Player3LEDs QCheckBox::indicator:unchecked, -QWidget#Player4LEDs QCheckBox::indicator:unchecked, -QWidget#Player5LEDs QCheckBox::indicator:unchecked, -QWidget#Player6LEDs QCheckBox::indicator:unchecked, -QWidget#Player7LEDs QCheckBox::indicator:unchecked, -QWidget#Player8LEDs QCheckBox::indicator:unchecked, -QGroupBox#groupPlayer1Connected::indicator:unchecked, -QGroupBox#groupPlayer2Connected::indicator:unchecked, -QGroupBox#groupPlayer3Connected::indicator:unchecked, -QGroupBox#groupPlayer4Connected::indicator:unchecked, -QGroupBox#groupPlayer5Connected::indicator:unchecked, -QGroupBox#groupPlayer6Connected::indicator:unchecked, -QGroupBox#groupPlayer7Connected::indicator:unchecked, -QGroupBox#groupPlayer8Connected::indicator:unchecked, -QCheckBox#checkboxPlayer1Connected::indicator:unchecked, -QCheckBox#checkboxPlayer2Connected::indicator:unchecked, -QCheckBox#checkboxPlayer3Connected::indicator:unchecked, -QCheckBox#checkboxPlayer4Connected::indicator:unchecked, -QCheckBox#checkboxPlayer5Connected::indicator:unchecked, -QCheckBox#checkboxPlayer6Connected::indicator:unchecked, -QCheckBox#checkboxPlayer7Connected::indicator:unchecked, -QCheckBox#checkboxPlayer8Connected::indicator:unchecked, -QGroupBox#groupConnectedController::indicator:unchecked { - border-radius: 2px; - border: 1px solid #929192; - background: transparent; - image: none; -} - -QWidget#controllerPlayer1, -QWidget#controllerPlayer2, -QWidget#controllerPlayer3, -QWidget#controllerPlayer4, -QWidget#controllerPlayer5, -QWidget#controllerPlayer6, -QWidget#controllerPlayer7, -QWidget#controllerPlayer8 { - background: transparent; -} - -QDialog#QtSoftwareKeyboardDialog, -QStackedWidget#topOSK { - background: rgba(51, 51, 51, .9); -} - - -QDialog#OverlayDialog, -QStackedWidget#stackedDialog { - background: rgba(51, 51, 51, .7); -} - -QWidget#boxOSK, -QWidget#lineOSK, -QWidget#richDialog, -QWidget#lineDialog { - background: transparent; -} - -QStackedWidget#bottomOSK, -QWidget#contentDialog, -QWidget#contentRichDialog { - background: rgba(240, 240, 240, 1); -} - -QWidget#contentDialog, -QWidget#contentRichDialog { - margin: 5px; - border-radius: 6px; -} - -QWidget#buttonsDialog, -QWidget#buttonsRichDialog { - margin: 5px; - border-top: 2px solid rgba(44, 44, 44, 1); -} - -QWidget#legendOSKnum { - border-top: 1px solid rgba(44, 44, 44, 1); -} - -QStackedWidget#stackedDialog QTextBrowser QScrollBar::vertical { - background: #cdcdcd; - width: 15px; - margin: 15px 3px 15px 3px; - border: 1px transparent; - border-radius: 4px; -} - -QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizoncal { - background: #cdcdcd; - height: 15px; - margin: 3px 15px 3px 15px; - border: 1px transparent; - border-radius: 4px; -} - -QStackedWidget#stackedDialog QTextBrowser QScrollBar::handle { - background: #fff; - border-radius: 4px; - min-height: 5px; - min-width: 5px; -} - -QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-line, -QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-line, -QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-page, -QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-page { - background: none; -} - -QWidget#inputOSK { - border-bottom: 3px solid rgba(255, 255, 255, .9); -} - -QWidget#inputOSK QLineEdit { - background: transparent; - border: none; - color: #ccc; -} - -QWidget#inputBoxOSK { - border: 2px solid rgba(255, 255, 255, .9); -} - -QWidget#inputBoxOSK QTextEdit { - background: transparent; - border: none; - color: #ccc; -} - -QWidget#richDialog QTextBrowser { - background: transparent; - border: none; - padding: 35px 65px; -} - - -QWidget#lineOSK QLabel#label_header { - color: #f0f0f0; -} - -QWidget#lineOSK QLabel#label_sub, -QWidget#lineOSK QLabel#label_characters, -QWidget#boxOSK QLabel#label_characters_box { - color: #ccc; -} - -QWidget#contentDialog QLabel#label_title, -QWidget#contentRichDialog QLabel#label_title_rich { - color: #888; -} - -QWidget#contentDialog QLabel#label_dialog { - padding: 20px 65px; -} - -QWidget#contentDialog QLabel#label_title, -QWidget#contentRichDialog QLabel#label_title_rich { - padding: 0px 65px; -} - -QDialog#OverlayDialog QPushButton { - color: rgba(49, 79, 239, 1); - background: transparent; - border: none; - padding: 0px; - min-width: 0px; -} - -QDialog#OverlayDialog QPushButton:focus, -QDialog#OverlayDialog QPushButton:hover { - color: rgba(49, 79, 239, 1); - background: rgba(255, 255, 255, 1); - border: 5px solid rgba(148, 250, 202, 1); - border-radius: 6px; - outline: none; -} - -QDialog#OverlayDialog QPushButton:pressed { - color: rgba(240, 240, 240, 1); - background: rgba(150, 150, 150, 1); - border: 5px solid rgba(148, 250, 202, 1); - border-radius: 6px; - outline: none; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton { - background: rgba(232, 232, 232, 1); - border: 2px solid rgba(240, 240, 240, 1); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { - background: rgba(218, 218, 218, 1); - border: 2px solid rgba(240, 240, 240, 1); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { - color: rgba(240, 240, 240, 1); - background: rgba(44, 44, 44, 1); - border: 2px solid rgba(240, 240, 240, 1); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { - color: rgba(240, 240, 240, 1); - background: rgba(49, 79, 239, 1); - border: 2px solid rgba(240, 240, 240, 1); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:focus, - -QDialog#QtSoftwareKeyboardDialog QPushButton:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover { - color: rgba(0, 0, 0, 1); - background: rgba(255, 255, 255, 1); - border: 5px solid rgba(148, 250, 202, 1); - border-radius: 6px; - outline: none; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:pressed, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed { - color: rgba(240, 240, 240, 1); - background: rgba(150, 150, 150, 1); - border: 5px solid rgba(148, 250, 202, 1); - border-radius: 6px; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { - image: url(:/overlay/osk_button_B.png); - image-position: right; - qproperty-icon: url(:/overlay/osk_button_backspace.png); - qproperty-iconSize: 36px; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { - image: url(:/overlay/osk_button_Y.png); - image-position: right; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { - image: url(:/overlay/osk_button_plus.png); - image-position: right; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift { - image: url(:/overlay/osk_button_shift_lock_off.png); - image-position: left; - qproperty-icon: url(:/overlay/osk_button_shift.png); - qproperty-iconSize: 36px; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift { - image: url(:/overlay/osk_button_shift_lock_off.png); - image-position: left; - qproperty-icon: url(:/overlay/osk_button_shift_on.png); - qproperty-iconSize: 36px; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_parenthesis { - padding-bottom: 7px; -} - -QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel { - background: transparent; - color: #ccc; -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_L, -QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num { - image: url(:/overlay/button_L.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num { - image: url(:/overlay/arrow_left.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_R, -QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num { - image: url(:/overlay/button_R.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num { - image: url(:/overlay/arrow_right.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick, -QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift { - image: url(:/overlay/button_press_stick.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_X, -QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num { - image: url(:/overlay/button_X.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_A, -QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num { - image: url(:/overlay/button_A.png); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { - color: rgba(164, 164, 164, 1); - background-color: rgba(218, 218, 218, 1); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_slash:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_percent:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_1:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_2:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_3:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_4:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_5:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_6:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_7:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_8:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_9:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled { - color: rgba(164, 164, 164, 1); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled { - image: url(:/overlay/osk_button_plus_disabled.png); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { - image: url(:/overlay/osk_button_B_disabled.png); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled { - image: url(:/overlay/osk_button_Y_disabled.png); -} diff --git a/dist/qt_themes/monochrome/icons.qrc b/dist/qt_themes/monochrome/icons.qrc new file mode 100644 index 0000000000..4eb16294fe --- /dev/null +++ b/dist/qt_themes/monochrome/icons.qrc @@ -0,0 +1,32 @@ + + + + + icons/index.theme + icons/16x16/lock.png + icons/48x48/bad_folder.png + icons/48x48/chip.png + icons/48x48/folder.png + icons/48x48/list-add.png + icons/48x48/sd_card.png + icons/48x48/star.png + icons/256x256/plus_folder.png + + + + + ../monochrome_dark/icons/index.theme + ../monochrome_dark/icons/16x16/lock.png + ../monochrome_dark/icons/48x48/bad_folder.png + ../monochrome_dark/icons/48x48/chip.png + ../monochrome_dark/icons/48x48/folder.png + ../monochrome_dark/icons/48x48/list-add.png + ../monochrome_dark/icons/48x48/no_avatar.png + ../monochrome_dark/icons/48x48/sd_card.png + ../monochrome_dark/icons/48x48/star.png + ../monochrome_dark/icons/256x256/plus_folder.png + + diff --git a/dist/qt_themes/monochrome/icons/16x16/lock.png b/dist/qt_themes/monochrome/icons/16x16/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..69d399050804cfa45e00850d4330a5b7cfaa3a43 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!ONa5jv*HQQzsd6F&PTDF7BvcigwK2xb0Ff zhuneUh?|ux2k!;nxOsckjoY_Y^!}UPGoe*wHNV_%W63ndp3?>s!+)Bcyi&JF|NSS8 z=V~*h%D1jjJsVrkHDP68_`=NlGZsGSH;3>PO&93KD~2sN7CUWf&8hc?pDt;S^FO@r z!vyx7-tt$_Rg!A$X2A*{aP#H<=j0M&+o7&+_Oww)O|$;=sgBcS3j3^ HP6Ym?Uzu!5(^E>B#&inOwpZ8zye?IvXKW~)!Ms)xH zinPlk0077;LI47`YG2aBX8=%(Bzd?~Q{*$RpiC?YcqtZz=o>c=z5GXg`t?63-4fe! zbFgeWf%WwJvdQ=(-W<2)YQ8C{o& zg%KN&u{8KkWTW87Pi~m!JOZ~0vCs!|#E3H1>6G~+t=_=;aI0LIErC@esf7Lra1lT< zUL{8U2vAuo{Vtqwgu!s|aBrP{@QutN5^`F0_o6&8;gQ@@I?pWGjd-lrrD{pw+McyA z<{Ydy^Jk#r2UV2syE+EOj$OiLBbl@NQp?+UMdpXKjail`u+IF!iDa{DftUI1h+kZE z0GS_^&O^mf2*W1qiNGM7b_(}mY%2?y`xRqy99f!HVTYN)XAGU`*d|ya^VQ;K8|kM- z3jerlBsC(&R(~b-X`bGWviEq7Ot&ga$msHIAeU8&^~lmUa?B{)?D9VH$U6Glq-j0I zVG~O986~Y8NtT8=+mA}G-v6l5Xy=%v5EiO@dM;7SYKk|(E>9S;k=Kh^VA*K0504J-a*hl;+5T^(q55GJg8L zGrVw>)<4d=*HGgH&Kl3&7W3+0{OI$?Hl(;#17=+B&dzr*eq8Ocx&Cu7$Vloc3+V!b zP5W29IX^(D)6G2y-le$U*necf?0F{^?!L6QC%M~=`WTkR0F&k&tS2iKEB;v@=;>aU z-V+rDpKb4vQb{)wg-;N~kLg`4QvOemgBk}HJ|)X2qj0LNQ2wtP0Y>E&w! zprWFIzR*eh{r&s!Yj?tGiji5!4`ydL~0$sKS0scSF>V;8?|7YEM!LB`Z zmR?&w2CJplJim6mDjn2JvbJo64=~OI&6E3Cl|#V!5_WX9Vhaa7s!LFjwY@$Fl+UoH z!XufdDz`gmVpLBCenlBaSoUaK2;YacVe4EgDcFNDl4e|pph5F&ey*#OgNQ;e3okpi z4wTdlpm|Ewy7@s6ac7qW&7Q5pDlTwYt+!~HszTdNn=fl7+iVt9T5A~fapw5%(-^z@ z`jK-=F<0UZ9SfCUs4p-fZ=17S4zl3uEJTv&55+ds3MzUm`s!cN=rO8R;iUfWc$X<9 zsHeJb(GnUqf6lYkc$cu%veQrhJ|p)lL@?r(Hy^ASWmYcejvVWma3e}yRmhqczNHRO z{Qt4szjrOkIM=WYFDgk~|MV3Im{s>|PXL=!^J)zp*`=;MF@^q%nbPwfpN7S=&TLA! z8pY?XtLtm?407y*TQt>JhtO6}*dj29k5*mfg&F@?*%z~H2o=l8TDBV4$XGz}1A^vH zzEO3f|0uK+_ChkgZRnUc5Z^Bf11ISl0O5G96Z=%#_uHYp5KA)D=r+*I%`|aKfKlB{ zJVPF|PtDbeloVc9See_AZ0NV*!?2-@vmgV5Y)oyzM`0m??Zw;f;=2m$5-iYGG0_Ua4T1^8k)8-V#duMR9 zXIl;?XR=ymU5;TUze(1MNnXErYbC>*;oPc336Ad{ZFR^bC;vJVxp7IVgjGB}tzbzn z|4S0x3?Yj*F|neAqv$MK)#FI3Q>ci5<$JoYif+Gx6oLfX?61r1Xu?Ra9W4v{9TJU1 z7g$?YVl`fyh@!qiB4@4tI$$Khwz>EEyCjhGB-mC*$NZF^>vz)^DdIR-#gN}6ekRh2 zXW-4fceM7Yf2c})q?U2LpH}v@xm!)PT~#?UM8l2rg3XhB#r7I^Sa2I^bnl6af#l9= zSa97AF_~Graq9C%$({)7W-ABh(CV_(f)Stg4S(jqR|HN@)z*jx=9Dzo(vvF)-y8In zN;B_{gg0;}oOt89<$}b7@)%a%IE|*ryp<|@O!;-otCVvUqLYVTaL0Al{MS!3CGi%} Yh89WFHBF|yt6vw8JpDWxh~e3P1CC-@r2qf` literal 0 HcmV?d00001 diff --git a/dist/qt_themes/monochrome/icons/48x48/bad_folder.png b/dist/qt_themes/monochrome/icons/48x48/bad_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..364ec646f6f1c6b5b632fb68efd2602aa2c87f25 GIT binary patch literal 1007 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vG$aR2}!aRGnSI!pin1B6LLK~!i%?U_qx z6G0fqceY8JQfje^v^`Z?C}^vKU~SWss8#7Bq7>^BQS_o%D&FixC}>dx@paXk2fb!jWysaGN1x$Fnz386RA_cs9JkNVfB+5}*KzMVo z5<{y;q)9N<9gVg&R*6(8YL7rH){j>o{HZZs%M5)PVmcq>8+myruvCt+0wN**YAopb zi5M!s`S@ko?FTOqzlpEnUD1xlhIp(FB?VwYW}3myAWYoh(Hxy15i^77XU%ODqNIRm zsA)TAnqQsWj3B_=;jZ8e^3r zO;8hQYp#oK3eX^~iLVl1+rr`)T^lJus({Fr#zpu9r#Zfe>&A1#;Lj+IubP5$t@m?V zuuP;<$Q^+Ry$^k&L}ckuJgH9}7qJws3kZk&OEGZwi*y>8ZRk?sqDUR!2k0|I;u`ly zfa|C6>WL?*pz*^M1CM&j2Of5#h__<39qh|aiP$v~U5K}eU>cZq7KcNDz2T0geb~-E zz^C9^n}}TFz5u5E5Rnrej8uAxaM_G!0EK=Rp=(?hfG77T^ho4iLv7dvX}nq6NNrBuZx2B0n{&Y%FbQ3BjX|dkvr%emElgoI zw0EU!l-g)MR&=5T4ne0Kvq5?~w-zRGn!oAM^*Tr!RzSCZ@~MLUANU0C!aI=u%gB)< d$Nzz*{RLYl6+9v2Tqpnl002ovPDHLkV1lP2!l3{F literal 0 HcmV?d00001 diff --git a/dist/qt_themes/monochrome/icons/48x48/chip.png b/dist/qt_themes/monochrome/icons/48x48/chip.png new file mode 100644 index 0000000000000000000000000000000000000000..1b573d51af66864f03a7e20179d3ea4d5f36a012 GIT binary patch literal 511 zcmV9EdCE@3Mha(U=39Kwt-~tF_(V@tbhe@rpPOZE8smKIV=0D_cUSBbMlS7Ve^b~ zpCI|hZY>H}i=fZIrA1)D1@I{LT3H0%iJ()9pbkp0*SBv$NROG$ZR`C;c@8vM#WlBm z{-GACg|z-hS|#Kl^7*&fDJ`V(w`ieRqP0$ZEg|VT>qFz6Y$1y&q@7Zx@kTj?21PC) zHMxM)jIsc&7LsTWuF!bVv`}9saWpNoO|;gDRts6n>E5-FHCYQuD)BkSjYNaI%<}%J z58;F3UVI|X%|r>jh`p8;fgjL6pjLKcQNTIyl_2?73nvPx#1ZP1_K>z@;j|==^1poj532;bRa{vG$asU7#askq98zBGy0jx!G;=NG{;w3(V&)^%7sC5cDp(K0(Eum7VP&2?Hew~5;RZehy&5rvSNM^VC)kWN zVHMxeR!9z)a0X9MeRGaIYAAsD73r}op+A}nH0$iPO`j}shnuBljNAke zx8X5LOP&H)@c~@p1GvTqaE%Y(8Xv$lK7ea{0N3~cu2BH3wV2petzBcQsi*+=rFM+I z@R%hA!ebQOD;L`F4WoDakEpd5Es3~BH7uj{8KO0+<~9sC!03~Ca39O`<1^X@W>MAJ zi!oNvoJv_#H3rLyHYV{BZ6{_ytlBSEK+1 z9X(wfLp;3So;KuSP~dUC`0U^Gu!R9iB3fEjPkbdm@pg-Z*l@4;Y#AsZGNCu2rl{_h ojlvg2t|q1;trMCncE~dD#zk`|?lR_b0UE~O>FVdQ&MBb@0NraiKmY&$ literal 0 HcmV?d00001 diff --git a/dist/qt_themes/monochrome/icons/48x48/sd_card.png b/dist/qt_themes/monochrome/icons/48x48/sd_card.png new file mode 100644 index 0000000000000000000000000000000000000000..6bcb7f6b1d93ab9bf8731849832aa88df68b0fd3 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?31We{epSZZGe6s+)c zaSX}0_x8FYUxNV$i^GTi^~cn&+=x(=%u};{v&H06PkCtJvZCsP{SW0+&pdlL-EzG| z-1TF9PY%8>U;^s5J>Boa&B$C$hNGxBS?WfCd ieyFWGC%N1H)%2fvs!qH~tv4HLK~kQselF{r5}E)AjzNq7 literal 0 HcmV?d00001 diff --git a/dist/qt_themes/monochrome/icons/48x48/star.png b/dist/qt_themes/monochrome/icons/48x48/star.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b78f0c3e543913b18d4f95956109c7d2646ba8 GIT binary patch literal 1029 zcmV+g1p51lP)X)lQZo@-L=cu)ZHg3&%A{3AU{olP z1-a8`)uIOkK?H#db72rfkkLY-$D*Q0B3jg{0v8dMp}mlZe3E70Z83B4od0>=d**0_ z9}GA%|M|Xej&tVxXD-ZPc9DpYdjqf?NCHoQS21cCMHX-wW!zdW0rO_jS7;o=X+Bks z&Z4hSNC5qKPoST8mu+NJV>djmi?yxVq@d|Fxlh#Z0}n*oUc;J3@gDort_K=K+lN_m z7l8HHjZOghz(U}s=v!w>)Z`M9%jXd=hI$7c2gLppc!T{ZAF}iv7JYAL++6_HU^h4k z6j}Ng0l!7eY7@eymXKT$-N2BgK8#8y{KjO2Y>)N@Kn<`gB+o%nzwHup3)o?)Hv->6 z@(%#dP#Z%awgI2<{+b4rKR}5KZ;9^9l=l;`HOTxDU^IeA61d{Se>Eca2vF)bfin>W zo}%`CFBG7bLKKbDRzmp>tP=HJZ7K*qfakzHE#ieypcdE-YyuXC;I0MAeLUK50sCyH zfQvwG2qDwR)!I|S(|Nx^<+#6SuYrmf%}P{gP3dD2SQ#|h?r?fl42qN*&`iR&v&woIo+~%R@L- zt`Y7dl&@p`xF!g9;7<$ZJj6y&w`}R6QIB=wJR9Av6A9oXY8y>Un14sh237!t2005+lkvK%ox>dF@W0|O*YW8UHg=Uy00000NkvXXu0mjfk8a2c literal 0 HcmV?d00001 diff --git a/dist/qt_themes/colorful/icons/index.theme b/dist/qt_themes/monochrome/icons/index.theme similarity index 60% rename from dist/qt_themes/colorful/icons/index.theme rename to dist/qt_themes/monochrome/icons/index.theme index 6eb3c69495..c2764622e0 100644 --- a/dist/qt_themes/colorful/icons/index.theme +++ b/dist/qt_themes/monochrome/icons/index.theme @@ -1,8 +1,9 @@ [Icon Theme] -Name=colorful -Comment=Colorful theme +Name=monochrome +Comment=Monochrome light icons +Inherits=default Directories=16x16,48x48,256x256 - + [16x16] Size=16 diff --git a/dist/qt_themes/monochrome/style.qrc b/dist/qt_themes/monochrome/style.qrc new file mode 100644 index 0000000000..54778e2f54 --- /dev/null +++ b/dist/qt_themes/monochrome/style.qrc @@ -0,0 +1,5 @@ + + + ../default/style.qss + + diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/lock.png b/dist/qt_themes/monochrome_dark/icons/16x16/lock.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/16x16/lock.png rename to dist/qt_themes/monochrome_dark/icons/16x16/lock.png diff --git a/dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png b/dist/qt_themes/monochrome_dark/icons/256x256/plus_folder.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png rename to dist/qt_themes/monochrome_dark/icons/256x256/plus_folder.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png b/dist/qt_themes/monochrome_dark/icons/48x48/bad_folder.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png rename to dist/qt_themes/monochrome_dark/icons/48x48/bad_folder.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/chip.png b/dist/qt_themes/monochrome_dark/icons/48x48/chip.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/chip.png rename to dist/qt_themes/monochrome_dark/icons/48x48/chip.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/folder.png b/dist/qt_themes/monochrome_dark/icons/48x48/folder.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/folder.png rename to dist/qt_themes/monochrome_dark/icons/48x48/folder.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/list-add.png b/dist/qt_themes/monochrome_dark/icons/48x48/list-add.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/list-add.png rename to dist/qt_themes/monochrome_dark/icons/48x48/list-add.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/no_avatar.png b/dist/qt_themes/monochrome_dark/icons/48x48/no_avatar.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/no_avatar.png rename to dist/qt_themes/monochrome_dark/icons/48x48/no_avatar.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png b/dist/qt_themes/monochrome_dark/icons/48x48/sd_card.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png rename to dist/qt_themes/monochrome_dark/icons/48x48/sd_card.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/star.png b/dist/qt_themes/monochrome_dark/icons/48x48/star.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/star.png rename to dist/qt_themes/monochrome_dark/icons/48x48/star.png diff --git a/dist/qt_themes/monochrome_dark/icons/index.theme b/dist/qt_themes/monochrome_dark/icons/index.theme new file mode 100644 index 0000000000..9ca318d09e --- /dev/null +++ b/dist/qt_themes/monochrome_dark/icons/index.theme @@ -0,0 +1,14 @@ +[Icon Theme] +Name=monochrome_dark +Comment=Monochrome dark icons +Inherits=default_dark +Directories=16x16,48x48,256x256 + +[16x16] +Size=16 + +[48x48] +Size=48 + +[256x256] +Size=256 diff --git a/dist/qt_themes/qdarkstyle/style.qss b/dist/qt_themes/qdarkstyle/dark.qss similarity index 93% rename from dist/qt_themes/qdarkstyle/style.qss rename to dist/qt_themes/qdarkstyle/dark.qss index 328ac942fc..09397f89f5 100644 --- a/dist/qt_themes/qdarkstyle/style.qss +++ b/dist/qt_themes/qdarkstyle/dark.qss @@ -1380,10 +1380,6 @@ QWidget#connectedControllers { background: transparent; } -QWidget#closeButtons { - background: transparent; -} - QWidget#playersSupported, QWidget#controllersSupported, QWidget#controllerSupported1, @@ -1843,40 +1839,17 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed { QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { - image: url(:/overlay/osk_button_B_dark.png); image-position: right; - qproperty-icon: url(:/overlay/osk_button_backspace_dark.png); qproperty-iconSize: 36px; } -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { - image: url(:/overlay/osk_button_Y_dark.png); - image-position: right; -} - QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { color: rgba(44, 44, 44, 1); - image: url(:/overlay/osk_button_plus_dark.png); image-position: right; } -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift { - image: url(:/overlay/osk_button_shift_lock_off.png); - image-position: left; - qproperty-icon: url(:/overlay/osk_button_shift_dark.png); - qproperty-iconSize: 36px; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift { - image: url(:/overlay/osk_button_shift_lock_off.png); - image-position: left; - qproperty-icon: url(:/overlay/osk_button_shift_on_dark.png); - qproperty-iconSize: 36px; -} - QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket, QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket, QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis, @@ -1889,47 +1862,6 @@ QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel { color: #ccc; } -QDialog#QtSoftwareKeyboardDialog QWidget#button_L, -QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num { - image: url(:/overlay/button_L_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num { - image: url(:/overlay/arrow_left_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_R, -QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num { - image: url(:/overlay/button_R_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num { - image: url(:/overlay/arrow_right_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick, -QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift { - image: url(:/overlay/button_press_stick_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_X, -QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num { - image: url(:/overlay/button_X_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_A, -QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num { - image: url(:/overlay/button_A_dark.png); -} - QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled, @@ -1961,23 +1893,6 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled { color: rgba(144, 144, 144, 1); } -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled { - image: url(:/overlay/osk_button_plus_dark_disabled.png); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { - image: url(:/overlay/osk_button_B_dark_disabled.png); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled { - image: url(:/overlay/osk_button_Y_dark_disabled.png); -} - QDialog#QtSoftwareKeyboardDialog QFrame, QDialog#QtSoftwareKeyboardDialog QFrame[frameShape="0"], QDialog#OverlayDialog QFrame, diff --git a/dist/qt_themes/qdarkstyle/icons.qrc b/dist/qt_themes/qdarkstyle/icons.qrc new file mode 100644 index 0000000000..d7ec900649 --- /dev/null +++ b/dist/qt_themes/qdarkstyle/icons.qrc @@ -0,0 +1,51 @@ + + + icons/index.theme + ../default_dark/icons/16x16/lock.png + + + icons/index.theme + ../default_dark/icons/16x16/lock.png + + + rc/branch_closed-on.png + rc/branch_closed.png + rc/branch_open-on.png + rc/branch_open.png + rc/checkbox_checked.png + rc/checkbox_checked_disabled.png + rc/checkbox_checked_focus.png + rc/checkbox_indeterminate.png + rc/checkbox_indeterminate_focus.png + rc/checkbox_unchecked.png + rc/checkbox_unchecked_disabled.png + rc/checkbox_unchecked_focus.png + rc/close-hover.png + rc/close-pressed.png + rc/close.png + rc/down_arrow.png + rc/down_arrow_disabled.png + rc/Hmovetoolbar.png + rc/Hsepartoolbar.png + rc/left_arrow.png + rc/left_arrow_disabled.png + rc/radio_checked.png + rc/radio_checked_disabled.png + rc/radio_checked_focus.png + rc/radio_unchecked.png + rc/radio_unchecked_disabled.png + rc/radio_unchecked_focus.png + rc/right_arrow.png + rc/right_arrow_disabled.png + rc/sizegrip.png + rc/stylesheet-branch-end.png + rc/stylesheet-branch-more.png + rc/stylesheet-vline.png + rc/transparent.png + rc/undock.png + rc/up_arrow.png + rc/up_arrow_disabled.png + rc/Vmovetoolbar.png + rc/Vsepartoolbar.png + + diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/connected.png b/dist/qt_themes/qdarkstyle/icons/16x16/connected.png deleted file mode 100644 index 0afc18cb7a19028fd567a7ca7ced62cd164657de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmV-F0>J%=P)0k{|sIn0V`B1xGGFnerg>I4!7^B>UM&p)aM9vQI<{ZJ4 z8HZ4p+_%{7AT1;1-`r}Q8XRRVYW9}G=D3HXRO!FFg z<>v6FfXkm66-$M=OnPPtTpl}lK!#o^J26y#00VLkV5Ig4hAIxCZ~AU@6mMaG2|$+zA&;BarDZyi@16B z4lE8kTwX8y!4LxB2>hW4yn!GbZg+WiA%P|k^Ip;o774}ts6fO6U&y7=hp3TO@-WL? z{^Mh)gLW3&bGqIiV!1gSPQ{V|zW{P&fJjHVbAtc? N002ovPDHLkV1hH82Xp`c diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/connected_notification.png b/dist/qt_themes/qdarkstyle/icons/16x16/connected_notification.png deleted file mode 100644 index 72466e098e471ae5a97c49a56536dd4bf62b3a08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0*y&TK~y+Tl~Y|v z6j2oZ?(CguoZVz~OB-RWz#nLd9z^@Yo&q%@j2=qtp^PLV$cmEeAL_xE^2wfrs242~ zp$Ef$h%#S%kW`EcLR4x6ZEJVk8F%j7>CU(tNkRF+;a<+Y=R4my_gvyQ4zjp<{ql`; zI^D*(O+BwTbI<>_2MD8-wl5<%-+In!I@(0@^Fzo{bD*j!D3xKFhG&Lp!dzV1$6_(` z^gLuV6YIgUEb0c8*Ie*2x#lAhY;J={1gb21z6E0ugAZC@F^euEux;jDmV`UFz7l>- zK|xT%#N<56!g^D3Wwr@)QUY z@d)MRLDK?Qog0L{ZY_3>K0_%MP_m~6ird7|QOF|6#=1I$H9tA_=53H>6>z~YHTJ@7 zb_Nd4PV}Lux(a+|27GF2$(u@fs~(9UHZ*jca>r)zc$_}(It@ippva0SLlzB`5RY_2 zDJ%pZ9`=H=;M3EPtE-_V5`;>`*WTHAw^h71&5pJA_QIN1DX?Z|p%fSYQs6=ghhYg- zVhSf|d1>iW;`5ymOPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0v$<2K~y+Tl~PS> zQ$Z9x^WL<1ZG=jLsqtf@CIu;o=wGnd1VlHD;-XFKLZw(mq)@*>1VJ>!or+OVq^`wu znJxuC&?1zmaamnO1NME*%5JoAzwQ9hHiSzzQVT5*fC(vPaz_Kh*+6Kq5b=Zyr$6d-BjRvNsUN9r<)$o0v zs;137DRgyhL@Z{(G)=_g8<0qB!nUp3v1>;LeY^L_vp9U_(^UgFXW)W|)!HD0fHMwq z`Rc|0_8q`L@sq zk>1%G63fVBGANuFmY*(fDuPllKmS8eCS`Em`r?L1hp>O&UTLdSRsk4e>gLt9;4C;0 zLcq{BFQXMa*Fk%G45d;@#y$LM{=|d(5AnGC1hkF9bzQ?)OM&Zp`Y#clJ$)W#YAJ!{ z4H0nGY&P-w?HjzG{fJLxahf`;55)a!M*cR#Fvf$Tw4UQO#< z+13h9kDdH|_{gEo)RvScR^ra>BKrFe$hQ&GwNfR74B5P3+o;Y|898=5|6Tg*(O>)p iN=@~G{{?26=FLU_5=aXOVS_yY00002?p zD}XSgpwrRCKtah8*NBqf{Irtt#G+J&^73-M%)IR4TP^t%4d#k2I8Aju - - icons/index.theme - icons/16x16/connected.png - icons/16x16/disconnected.png - icons/16x16/connected_notification.png - icons/16x16/lock.png - icons/16x16/view-refresh.png - icons/48x48/bad_folder.png - icons/48x48/chip.png - icons/48x48/folder.png - icons/48x48/no_avatar.png - icons/48x48/list-add.png - icons/48x48/sd_card.png - icons/48x48/star.png - icons/256x256/plus_folder.png - - - rc/up_arrow_disabled.png - rc/Hmovetoolbar.png - rc/stylesheet-branch-end.png - rc/branch_closed-on.png - rc/stylesheet-vline.png - rc/branch_closed.png - rc/branch_open-on.png - rc/transparent.png - rc/right_arrow_disabled.png - rc/sizegrip.png - rc/close.png - rc/close-hover.png - rc/close-pressed.png - rc/down_arrow.png - rc/Vmovetoolbar.png - rc/left_arrow.png - rc/stylesheet-branch-more.png - rc/up_arrow.png - rc/right_arrow.png - rc/left_arrow_disabled.png - rc/Hsepartoolbar.png - rc/branch_open.png - rc/Vsepartoolbar.png - rc/down_arrow_disabled.png - rc/undock.png - rc/checkbox_checked_disabled.png - rc/checkbox_checked_focus.png - rc/checkbox_checked.png - rc/checkbox_indeterminate.png - rc/checkbox_indeterminate_focus.png - rc/checkbox_unchecked_disabled.png - rc/checkbox_unchecked_focus.png - rc/checkbox_unchecked.png - rc/radio_checked_disabled.png - rc/radio_checked_focus.png - rc/radio_checked.png - rc/radio_unchecked_disabled.png - rc/radio_unchecked_focus.png - rc/radio_unchecked.png - - - style.qss - + + dark.qss + diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss b/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss similarity index 95% rename from dist/qt_themes/qdarkstyle_midnight_blue/style.qss rename to dist/qt_themes/qdarkstyle_midnight_blue/dark.qss index eb0889b139..a90ac5d5e0 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss +++ b/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss @@ -2779,41 +2779,10 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed { border-radius: 6px; } -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { - image: url(:/overlay/osk_button_B_dark.png); - image-position: right; - qproperty-icon: url(:/overlay/osk_button_backspace_dark.png); - qproperty-iconSize: 36px; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { - image: url(:/overlay/osk_button_Y_dark.png); - image-position: right; -} - QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { color: rgba(44, 44, 44, 1); - image: url(:/overlay/osk_button_plus_dark.png); - image-position: right; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift { - image: url(:/overlay/osk_button_shift_lock_off.png); - image-position: left; - qproperty-icon: url(:/overlay/osk_button_shift_dark.png); - qproperty-iconSize: 36px; -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift { - image: url(:/overlay/osk_button_shift_lock_off.png); - image-position: left; - qproperty-icon: url(:/overlay/osk_button_shift_on_dark.png); - qproperty-iconSize: 36px; } QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket, @@ -2828,47 +2797,6 @@ QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel { color: #ccc; } -QDialog#QtSoftwareKeyboardDialog QWidget#button_L, -QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num { - image: url(:/overlay/button_L_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num { - image: url(:/overlay/arrow_left_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_R, -QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num { - image: url(:/overlay/button_R_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num { - image: url(:/overlay/arrow_right_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick, -QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift { - image: url(:/overlay/button_press_stick_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_X, -QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num { - image: url(:/overlay/button_X_dark.png); -} - -QDialog#QtSoftwareKeyboardDialog QWidget#button_A, -QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift, -QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num { - image: url(:/overlay/button_A_dark.png); -} - QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled, @@ -2899,20 +2827,3 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled { color: rgba(144, 144, 144, 1); } - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled { - image: url(:/overlay/osk_button_plus_dark_disabled.png); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { - image: url(:/overlay/osk_button_B_dark_disabled.png); -} - -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled { - image: url(:/overlay/osk_button_Y_dark_disabled.png); -} diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons.qrc b/dist/qt_themes/qdarkstyle_midnight_blue/icons.qrc new file mode 100644 index 0000000000..1a071adda6 --- /dev/null +++ b/dist/qt_themes/qdarkstyle_midnight_blue/icons.qrc @@ -0,0 +1,224 @@ + + + + + icons/index.theme + + + icons/index.theme + + + + rc/arrow_down.png + rc/arrow_down@2x.png + rc/arrow_down_disabled.png + rc/arrow_down_disabled@2x.png + rc/arrow_down_focus.png + rc/arrow_down_focus@2x.png + rc/arrow_down_pressed.png + rc/arrow_down_pressed@2x.png + rc/arrow_left.png + rc/arrow_left@2x.png + rc/arrow_left_disabled.png + rc/arrow_left_disabled@2x.png + rc/arrow_left_focus.png + rc/arrow_left_focus@2x.png + rc/arrow_left_pressed.png + rc/arrow_left_pressed@2x.png + rc/arrow_right.png + rc/arrow_right@2x.png + rc/arrow_right_disabled.png + rc/arrow_right_disabled@2x.png + rc/arrow_right_focus.png + rc/arrow_right_focus@2x.png + rc/arrow_right_pressed.png + rc/arrow_right_pressed@2x.png + rc/arrow_up.png + rc/arrow_up@2x.png + rc/arrow_up_disabled.png + rc/arrow_up_disabled@2x.png + rc/arrow_up_focus.png + rc/arrow_up_focus@2x.png + rc/arrow_up_pressed.png + rc/arrow_up_pressed@2x.png + rc/base_icon.png + rc/base_icon@2x.png + rc/base_icon_disabled.png + rc/base_icon_disabled@2x.png + rc/base_icon_focus.png + rc/base_icon_focus@2x.png + rc/base_icon_pressed.png + rc/base_icon_pressed@2x.png + rc/branch_closed.png + rc/branch_closed@2x.png + rc/branch_closed_disabled.png + rc/branch_closed_disabled@2x.png + rc/branch_closed_focus.png + rc/branch_closed_focus@2x.png + rc/branch_closed_pressed.png + rc/branch_closed_pressed@2x.png + rc/branch_end.png + rc/branch_end@2x.png + rc/branch_end_disabled.png + rc/branch_end_disabled@2x.png + rc/branch_end_focus.png + rc/branch_end_focus@2x.png + rc/branch_end_pressed.png + rc/branch_end_pressed@2x.png + rc/branch_line.png + rc/branch_line@2x.png + rc/branch_line_disabled.png + rc/branch_line_disabled@2x.png + rc/branch_line_focus.png + rc/branch_line_focus@2x.png + rc/branch_line_pressed.png + rc/branch_line_pressed@2x.png + rc/branch_more.png + rc/branch_more@2x.png + rc/branch_more_disabled.png + rc/branch_more_disabled@2x.png + rc/branch_more_focus.png + rc/branch_more_focus@2x.png + rc/branch_more_pressed.png + rc/branch_more_pressed@2x.png + rc/branch_open.png + rc/branch_open@2x.png + rc/branch_open_disabled.png + rc/branch_open_disabled@2x.png + rc/branch_open_focus.png + rc/branch_open_focus@2x.png + rc/branch_open_pressed.png + rc/branch_open_pressed@2x.png + rc/checkbox_checked.png + rc/checkbox_checked@2x.png + rc/checkbox_checked_disabled.png + rc/checkbox_checked_disabled@2x.png + rc/checkbox_checked_focus.png + rc/checkbox_checked_focus@2x.png + rc/checkbox_checked_pressed.png + rc/checkbox_checked_pressed@2x.png + rc/checkbox_indeterminate.png + rc/checkbox_indeterminate@2x.png + rc/checkbox_indeterminate_disabled.png + rc/checkbox_indeterminate_disabled@2x.png + rc/checkbox_indeterminate_focus.png + rc/checkbox_indeterminate_focus@2x.png + rc/checkbox_indeterminate_pressed.png + rc/checkbox_indeterminate_pressed@2x.png + rc/checkbox_unchecked.png + rc/checkbox_unchecked@2x.png + rc/checkbox_unchecked_disabled.png + rc/checkbox_unchecked_disabled@2x.png + rc/checkbox_unchecked_focus.png + rc/checkbox_unchecked_focus@2x.png + rc/checkbox_unchecked_pressed.png + rc/checkbox_unchecked_pressed@2x.png + rc/line_horizontal.png + rc/line_horizontal@2x.png + rc/line_horizontal_disabled.png + rc/line_horizontal_disabled@2x.png + rc/line_horizontal_focus.png + rc/line_horizontal_focus@2x.png + rc/line_horizontal_pressed.png + rc/line_horizontal_pressed@2x.png + rc/line_vertical.png + rc/line_vertical@2x.png + rc/line_vertical_disabled.png + rc/line_vertical_disabled@2x.png + rc/line_vertical_focus.png + rc/line_vertical_focus@2x.png + rc/line_vertical_pressed.png + rc/line_vertical_pressed@2x.png + rc/radio_checked.png + rc/radio_checked@2x.png + rc/radio_checked_disabled.png + rc/radio_checked_disabled@2x.png + rc/radio_checked_focus.png + rc/radio_checked_focus@2x.png + rc/radio_checked_pressed.png + rc/radio_checked_pressed@2x.png + rc/radio_unchecked.png + rc/radio_unchecked@2x.png + rc/radio_unchecked_disabled.png + rc/radio_unchecked_disabled@2x.png + rc/radio_unchecked_focus.png + rc/radio_unchecked_focus@2x.png + rc/radio_unchecked_pressed.png + rc/radio_unchecked_pressed@2x.png + rc/toolbar_move_horizontal.png + rc/toolbar_move_horizontal@2x.png + rc/toolbar_move_horizontal_disabled.png + rc/toolbar_move_horizontal_disabled@2x.png + rc/toolbar_move_horizontal_focus.png + rc/toolbar_move_horizontal_focus@2x.png + rc/toolbar_move_horizontal_pressed.png + rc/toolbar_move_horizontal_pressed@2x.png + rc/toolbar_move_vertical.png + rc/toolbar_move_vertical@2x.png + rc/toolbar_move_vertical_disabled.png + rc/toolbar_move_vertical_disabled@2x.png + rc/toolbar_move_vertical_focus.png + rc/toolbar_move_vertical_focus@2x.png + rc/toolbar_move_vertical_pressed.png + rc/toolbar_move_vertical_pressed@2x.png + rc/toolbar_separator_horizontal.png + rc/toolbar_separator_horizontal@2x.png + rc/toolbar_separator_horizontal_disabled.png + rc/toolbar_separator_horizontal_disabled@2x.png + rc/toolbar_separator_horizontal_focus.png + rc/toolbar_separator_horizontal_focus@2x.png + rc/toolbar_separator_horizontal_pressed.png + rc/toolbar_separator_horizontal_pressed@2x.png + rc/toolbar_separator_vertical.png + rc/toolbar_separator_vertical@2x.png + rc/toolbar_separator_vertical_disabled.png + rc/toolbar_separator_vertical_disabled@2x.png + rc/toolbar_separator_vertical_focus.png + rc/toolbar_separator_vertical_focus@2x.png + rc/toolbar_separator_vertical_pressed.png + rc/toolbar_separator_vertical_pressed@2x.png + rc/transparent.png + rc/transparent@2x.png + rc/transparent_disabled.png + rc/transparent_disabled@2x.png + rc/transparent_focus.png + rc/transparent_focus@2x.png + rc/transparent_pressed.png + rc/transparent_pressed@2x.png + rc/window_close.png + rc/window_close@2x.png + rc/window_close_disabled.png + rc/window_close_disabled@2x.png + rc/window_close_focus.png + rc/window_close_focus@2x.png + rc/window_close_pressed.png + rc/window_close_pressed@2x.png + rc/window_grip.png + rc/window_grip@2x.png + rc/window_grip_disabled.png + rc/window_grip_disabled@2x.png + rc/window_grip_focus.png + rc/window_grip_focus@2x.png + rc/window_grip_pressed.png + rc/window_grip_pressed@2x.png + rc/window_minimize.png + rc/window_minimize@2x.png + rc/window_minimize_disabled.png + rc/window_minimize_disabled@2x.png + rc/window_minimize_focus.png + rc/window_minimize_focus@2x.png + rc/window_minimize_pressed.png + rc/window_minimize_pressed@2x.png + rc/window_undock.png + rc/window_undock@2x.png + rc/window_undock_disabled.png + rc/window_undock_disabled@2x.png + rc/window_undock_focus.png + rc/window_undock_focus@2x.png + rc/window_undock_pressed.png + rc/window_undock_pressed@2x.png + + diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme b/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme index 20f9f6d633..34c449f19a 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme +++ b/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme @@ -1,14 +1,4 @@ [Icon Theme] Name=qdarkstyle_midnight_blue -Comment=dark theme -Inherits=colorful -Directories=16x16,48x48,256x256 - -[16x16] -Size=16 - -[48x48] -Size=48 - -[256x256] -Size=256 +Comment=Dark theme (Midnight Blue style) +Inherits=default_dark diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc index dc3d7fecbd..0cdaefa035 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc +++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc @@ -1,228 +1,5 @@ - - icons/index.theme - ../qdarkstyle/icons/16x16/lock.png - ../qdarkstyle/icons/16x16/view-refresh.png - ../qdarkstyle/icons/48x48/bad_folder.png - ../qdarkstyle/icons/48x48/chip.png - ../qdarkstyle/icons/48x48/folder.png - ../qdarkstyle/icons/48x48/no_avatar.png - ../qdarkstyle/icons/48x48/list-add.png - ../qdarkstyle/icons/48x48/sd_card.png - ../qdarkstyle/icons/48x48/star.png - ../qdarkstyle/icons/256x256/plus_folder.png - - - rc/arrow_down.png - rc/arrow_down@2x.png - rc/arrow_down_disabled.png - rc/arrow_down_disabled@2x.png - rc/arrow_down_focus.png - rc/arrow_down_focus@2x.png - rc/arrow_down_pressed.png - rc/arrow_down_pressed@2x.png - rc/arrow_left.png - rc/arrow_left@2x.png - rc/arrow_left_disabled.png - rc/arrow_left_disabled@2x.png - rc/arrow_left_focus.png - rc/arrow_left_focus@2x.png - rc/arrow_left_pressed.png - rc/arrow_left_pressed@2x.png - rc/arrow_right.png - rc/arrow_right@2x.png - rc/arrow_right_disabled.png - rc/arrow_right_disabled@2x.png - rc/arrow_right_focus.png - rc/arrow_right_focus@2x.png - rc/arrow_right_pressed.png - rc/arrow_right_pressed@2x.png - rc/arrow_up.png - rc/arrow_up@2x.png - rc/arrow_up_disabled.png - rc/arrow_up_disabled@2x.png - rc/arrow_up_focus.png - rc/arrow_up_focus@2x.png - rc/arrow_up_pressed.png - rc/arrow_up_pressed@2x.png - rc/base_icon.png - rc/base_icon@2x.png - rc/base_icon_disabled.png - rc/base_icon_disabled@2x.png - rc/base_icon_focus.png - rc/base_icon_focus@2x.png - rc/base_icon_pressed.png - rc/base_icon_pressed@2x.png - rc/branch_closed.png - rc/branch_closed@2x.png - rc/branch_closed_disabled.png - rc/branch_closed_disabled@2x.png - rc/branch_closed_focus.png - rc/branch_closed_focus@2x.png - rc/branch_closed_pressed.png - rc/branch_closed_pressed@2x.png - rc/branch_end.png - rc/branch_end@2x.png - rc/branch_end_disabled.png - rc/branch_end_disabled@2x.png - rc/branch_end_focus.png - rc/branch_end_focus@2x.png - rc/branch_end_pressed.png - rc/branch_end_pressed@2x.png - rc/branch_line.png - rc/branch_line@2x.png - rc/branch_line_disabled.png - rc/branch_line_disabled@2x.png - rc/branch_line_focus.png - rc/branch_line_focus@2x.png - rc/branch_line_pressed.png - rc/branch_line_pressed@2x.png - rc/branch_more.png - rc/branch_more@2x.png - rc/branch_more_disabled.png - rc/branch_more_disabled@2x.png - rc/branch_more_focus.png - rc/branch_more_focus@2x.png - rc/branch_more_pressed.png - rc/branch_more_pressed@2x.png - rc/branch_open.png - rc/branch_open@2x.png - rc/branch_open_disabled.png - rc/branch_open_disabled@2x.png - rc/branch_open_focus.png - rc/branch_open_focus@2x.png - rc/branch_open_pressed.png - rc/branch_open_pressed@2x.png - rc/checkbox_checked.png - rc/checkbox_checked@2x.png - rc/checkbox_checked_disabled.png - rc/checkbox_checked_disabled@2x.png - rc/checkbox_checked_focus.png - rc/checkbox_checked_focus@2x.png - rc/checkbox_checked_pressed.png - rc/checkbox_checked_pressed@2x.png - rc/checkbox_indeterminate.png - rc/checkbox_indeterminate@2x.png - rc/checkbox_indeterminate_disabled.png - rc/checkbox_indeterminate_disabled@2x.png - rc/checkbox_indeterminate_focus.png - rc/checkbox_indeterminate_focus@2x.png - rc/checkbox_indeterminate_pressed.png - rc/checkbox_indeterminate_pressed@2x.png - rc/checkbox_unchecked.png - rc/checkbox_unchecked@2x.png - rc/checkbox_unchecked_disabled.png - rc/checkbox_unchecked_disabled@2x.png - rc/checkbox_unchecked_focus.png - rc/checkbox_unchecked_focus@2x.png - rc/checkbox_unchecked_pressed.png - rc/checkbox_unchecked_pressed@2x.png - rc/line_horizontal.png - rc/line_horizontal@2x.png - rc/line_horizontal_disabled.png - rc/line_horizontal_disabled@2x.png - rc/line_horizontal_focus.png - rc/line_horizontal_focus@2x.png - rc/line_horizontal_pressed.png - rc/line_horizontal_pressed@2x.png - rc/line_vertical.png - rc/line_vertical@2x.png - rc/line_vertical_disabled.png - rc/line_vertical_disabled@2x.png - rc/line_vertical_focus.png - rc/line_vertical_focus@2x.png - rc/line_vertical_pressed.png - rc/line_vertical_pressed@2x.png - rc/radio_checked.png - rc/radio_checked@2x.png - rc/radio_checked_disabled.png - rc/radio_checked_disabled@2x.png - rc/radio_checked_focus.png - rc/radio_checked_focus@2x.png - rc/radio_checked_pressed.png - rc/radio_checked_pressed@2x.png - rc/radio_unchecked.png - rc/radio_unchecked@2x.png - rc/radio_unchecked_disabled.png - rc/radio_unchecked_disabled@2x.png - rc/radio_unchecked_focus.png - rc/radio_unchecked_focus@2x.png - rc/radio_unchecked_pressed.png - rc/radio_unchecked_pressed@2x.png - rc/toolbar_move_horizontal.png - rc/toolbar_move_horizontal@2x.png - rc/toolbar_move_horizontal_disabled.png - rc/toolbar_move_horizontal_disabled@2x.png - rc/toolbar_move_horizontal_focus.png - rc/toolbar_move_horizontal_focus@2x.png - rc/toolbar_move_horizontal_pressed.png - rc/toolbar_move_horizontal_pressed@2x.png - rc/toolbar_move_vertical.png - rc/toolbar_move_vertical@2x.png - rc/toolbar_move_vertical_disabled.png - rc/toolbar_move_vertical_disabled@2x.png - rc/toolbar_move_vertical_focus.png - rc/toolbar_move_vertical_focus@2x.png - rc/toolbar_move_vertical_pressed.png - rc/toolbar_move_vertical_pressed@2x.png - rc/toolbar_separator_horizontal.png - rc/toolbar_separator_horizontal@2x.png - rc/toolbar_separator_horizontal_disabled.png - rc/toolbar_separator_horizontal_disabled@2x.png - rc/toolbar_separator_horizontal_focus.png - rc/toolbar_separator_horizontal_focus@2x.png - rc/toolbar_separator_horizontal_pressed.png - rc/toolbar_separator_horizontal_pressed@2x.png - rc/toolbar_separator_vertical.png - rc/toolbar_separator_vertical@2x.png - rc/toolbar_separator_vertical_disabled.png - rc/toolbar_separator_vertical_disabled@2x.png - rc/toolbar_separator_vertical_focus.png - rc/toolbar_separator_vertical_focus@2x.png - rc/toolbar_separator_vertical_pressed.png - rc/toolbar_separator_vertical_pressed@2x.png - rc/transparent.png - rc/transparent@2x.png - rc/transparent_disabled.png - rc/transparent_disabled@2x.png - rc/transparent_focus.png - rc/transparent_focus@2x.png - rc/transparent_pressed.png - rc/transparent_pressed@2x.png - rc/window_close.png - rc/window_close@2x.png - rc/window_close_disabled.png - rc/window_close_disabled@2x.png - rc/window_close_focus.png - rc/window_close_focus@2x.png - rc/window_close_pressed.png - rc/window_close_pressed@2x.png - rc/window_grip.png - rc/window_grip@2x.png - rc/window_grip_disabled.png - rc/window_grip_disabled@2x.png - rc/window_grip_focus.png - rc/window_grip_focus@2x.png - rc/window_grip_pressed.png - rc/window_grip_pressed@2x.png - rc/window_minimize.png - rc/window_minimize@2x.png - rc/window_minimize_disabled.png - rc/window_minimize_disabled@2x.png - rc/window_minimize_focus.png - rc/window_minimize_focus@2x.png - rc/window_minimize_pressed.png - rc/window_minimize_pressed@2x.png - rc/window_undock.png - rc/window_undock@2x.png - rc/window_undock_disabled.png - rc/window_undock_disabled@2x.png - rc/window_undock_focus.png - rc/window_undock_focus@2x.png - rc/window_undock_pressed.png - rc/window_undock_pressed@2x.png - - - style.qss - + + dark.qss + diff --git a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc new file mode 100644 index 0000000000..60b95db02a --- /dev/null +++ b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc @@ -0,0 +1,33 @@ + + + + + + + icons/index.theme + ../monochrome_dark/icons/16x16/lock.png + ../monochrome_dark/icons/48x48/bad_folder.png + ../monochrome_dark/icons/48x48/chip.png + ../monochrome_dark/icons/48x48/folder.png + ../monochrome_dark/icons/48x48/list-add.png + ../monochrome_dark/icons/48x48/sd_card.png + ../monochrome_dark/icons/48x48/star.png + ../monochrome_dark/icons/256x256/plus_folder.png + + + + icons/index.theme + ../monochrome_dark/icons/16x16/lock.png + ../monochrome_dark/icons/48x48/bad_folder.png + ../monochrome_dark/icons/48x48/chip.png + ../monochrome_dark/icons/48x48/folder.png + ../monochrome_dark/icons/48x48/list-add.png + ../monochrome_dark/icons/48x48/no_avatar.png + ../monochrome_dark/icons/48x48/sd_card.png + ../monochrome_dark/icons/48x48/star.png + ../monochrome_dark/icons/256x256/plus_folder.png + + diff --git a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons/index.theme b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons/index.theme new file mode 100644 index 0000000000..d6ed7d55ec --- /dev/null +++ b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons/index.theme @@ -0,0 +1,14 @@ +[Icon Theme] +Name=qdarkstyle_midnight_blue_monochrome +Comment=Monochrome dark theme (Midnight Blue style) +Inherits=qdarkstyle_midnight_blue +Directories=16x16,48x48,256x256 + +[16x16] +Size=16 + +[48x48] +Size=48 + +[256x256] +Size=256 diff --git a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/style.qrc b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/style.qrc new file mode 100644 index 0000000000..eeb5f34cbb --- /dev/null +++ b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/style.qrc @@ -0,0 +1,8 @@ + + + ../qdarkstyle_midnight_blue/dark.qss + + + ../qdarkstyle/dark.qss + + diff --git a/dist/qt_themes/qdarkstyle_monochrome/icons.qrc b/dist/qt_themes/qdarkstyle_monochrome/icons.qrc new file mode 100644 index 0000000000..355fe22beb --- /dev/null +++ b/dist/qt_themes/qdarkstyle_monochrome/icons.qrc @@ -0,0 +1,33 @@ + + + + + + + icons/index.theme + ../monochrome_dark/icons/16x16/lock.png + ../monochrome_dark/icons/48x48/bad_folder.png + ../monochrome_dark/icons/48x48/chip.png + ../monochrome_dark/icons/48x48/folder.png + ../monochrome_dark/icons/48x48/list-add.png + ../monochrome_dark/icons/48x48/sd_card.png + ../monochrome_dark/icons/48x48/star.png + ../monochrome_dark/icons/256x256/plus_folder.png + + + + icons/index.theme + ../monochrome_dark/icons/16x16/lock.png + ../monochrome_dark/icons/48x48/bad_folder.png + ../monochrome_dark/icons/48x48/chip.png + ../monochrome_dark/icons/48x48/folder.png + ../monochrome_dark/icons/48x48/list-add.png + ../monochrome_dark/icons/48x48/no_avatar.png + ../monochrome_dark/icons/48x48/sd_card.png + ../monochrome_dark/icons/48x48/star.png + ../monochrome_dark/icons/256x256/plus_folder.png + + diff --git a/dist/qt_themes/qdarkstyle_monochrome/icons/index.theme b/dist/qt_themes/qdarkstyle_monochrome/icons/index.theme new file mode 100644 index 0000000000..a8fd60ba29 --- /dev/null +++ b/dist/qt_themes/qdarkstyle_monochrome/icons/index.theme @@ -0,0 +1,14 @@ +[Icon Theme] +Name=qdarkstyle_monochrome +Comment=Monochrome dark theme (Mine Shaft style) +Inherits=qdarkstyle +Directories=16x16,48x48,256x256 + +[16x16] +Size=16 + +[48x48] +Size=48 + +[256x256] +Size=256 diff --git a/dist/qt_themes/qdarkstyle_monochrome/style.qrc b/dist/qt_themes/qdarkstyle_monochrome/style.qrc new file mode 100644 index 0000000000..76f7767ca8 --- /dev/null +++ b/dist/qt_themes/qdarkstyle_monochrome/style.qrc @@ -0,0 +1,8 @@ + + + ../qdarkstyle/dark.qss + + + ../qdarkstyle/dark.qss + + diff --git a/src/suyu/applets/qt_software_keyboard.cpp b/src/suyu/applets/qt_software_keyboard.cpp index ca7169e2a2..3a88656a17 100644 --- a/src/suyu/applets/qt_software_keyboard.cpp +++ b/src/suyu/applets/qt_software_keyboard.cpp @@ -372,6 +372,14 @@ QtSoftwareKeyboardDialog::~QtSoftwareKeyboardDialog() { StopInputThread(); } +QString QtSoftwareKeyboardDialog::theme() { + if (GMainWindow::CheckDarkMode()) { + return QStringLiteral("_dark"); + } else { + return QString{}; + } +} + void QtSoftwareKeyboardDialog::ShowNormalKeyboard(QPoint pos, QSize size) { if (isVisible()) { return; @@ -382,6 +390,7 @@ void QtSoftwareKeyboardDialog::ShowNormalKeyboard(QPoint pos, QSize size) { SetKeyboardType(); SetPasswordMode(); SetControllerImage(); + SetButtonImages(); DisableKeyboardButtons(); SetBackspaceOkEnabled(); @@ -449,6 +458,7 @@ void QtSoftwareKeyboardDialog::ShowInlineKeyboard( SetKeyboardType(); SetControllerImage(); + SetButtonImages(); DisableKeyboardButtons(); SetBackspaceOkEnabled(); @@ -822,70 +832,146 @@ void QtSoftwareKeyboardDialog::SetControllerImage() { const auto controller_type = handheld->IsConnected() ? handheld->GetNpadStyleIndex() : player_1->GetNpadStyleIndex(); - const QString theme = [] { - // Use dark icons if current OS mode is dark, or the theme contains "dark", or "midnight" in - // its name - if (GMainWindow::CheckDarkMode() || QIcon::themeName().contains(QStringLiteral("dark")) || - QIcon::themeName().contains(QStringLiteral("midnight"))) { - return QStringLiteral("_dark"); - } else { - return QString{}; - } - }(); - switch (controller_type) { case Core::HID::NpadStyleIndex::Fullkey: case Core::HID::NpadStyleIndex::GameCube: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_pro%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_pro.png);").arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_pro%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_pro.png);").arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_pro%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_pro.png);").arg(theme())); break; case Core::HID::NpadStyleIndex::JoyconDual: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_dual_joycon%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_dual_joycon.png);").arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_dual_joycon%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_dual_joycon.png);").arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_dual_joycon%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_dual_joycon.png);").arg(theme())); break; case Core::HID::NpadStyleIndex::JoyconLeft: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_left%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_left.png);") + .arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_left%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_left.png);") + .arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_left%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_left.png);") + .arg(theme())); break; case Core::HID::NpadStyleIndex::JoyconRight: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_right%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_right.png);") + .arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_right%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_right.png);") + .arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_right%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_right.png);") + .arg(theme())); break; case Core::HID::NpadStyleIndex::Handheld: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_handheld%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_handheld.png);").arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_handheld%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_handheld.png);").arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_handheld%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_handheld.png);").arg(theme())); break; default: break; } } +void QtSoftwareKeyboardDialog::SetButtonImages() { + QString button_backspace_stylesheet = + QStringLiteral("QPushButton {" + " image: url(:/overlay%1/osk_button_B.png);" + " image-position: right;" + " qproperty-icon: url(:/overlay%1/osk_button_backspace.png); }" + "QPushButton:disabled { image: url(:/overlay%1/osk_button_B_disabled.png);}") + .arg(theme()); + ui->button_backspace->setStyleSheet(button_backspace_stylesheet); + ui->button_backspace_shift->setStyleSheet(button_backspace_stylesheet); + ui->button_backspace_shift->setIconSize(ui->button_backspace->iconSize()); + ui->button_backspace_num->setStyleSheet(button_backspace_stylesheet); + + QString button_space_stylesheet = + QStringLiteral("QPushButton {" + " image: url(:/overlay%1/osk_button_Y.png);" + " image-position: right;" + " qproperty-icon: url(:/overlay%1/osk_button_space.png); }" + "QPushButton:disabled { image: url(:/overlay%1/osk_button_Y_disabled.png);}") + .arg(theme()); + ui->button_space->setStyleSheet(button_space_stylesheet); + ui->button_space_shift->setStyleSheet(button_space_stylesheet); + + QString button_ok_stylesheet = + QStringLiteral( + "QPushButton { image: url(:/overlay%1/osk_button_plus.png); }" + "QPushButton:disabled { image: url(:/overlay%1/osk_button_plus_disabled.png); }") + .arg(theme()); + ui->button_ok->setStyleSheet(button_ok_stylesheet); + ui->button_ok_shift->setStyleSheet(button_ok_stylesheet); + ui->button_ok_num->setStyleSheet(button_ok_stylesheet); + + QString button_shift_stylesheet = + QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);" + "image-position: left;" + "qproperty-icon: url(:/overlay%1/osk_button_shift.png);") + .arg(theme()); + ui->button_shift->setStyleSheet(button_shift_stylesheet); + + QString button_shift_shift_stylesheet = + QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);" + "image-position: left;" + "qproperty-icon: url(:/overlay%1/osk_button_shift_on.png);") + .arg(theme()); + ui->button_shift_shift->setStyleSheet(button_shift_shift_stylesheet); + ui->button_shift_shift->setIconSize(ui->button_shift->iconSize()); + + QString L_stylesheet = QStringLiteral("image: url(:/overlay%1/button_L.png);").arg(theme()); + ui->button_L->setStyleSheet(L_stylesheet); + ui->button_L_shift->setStyleSheet(L_stylesheet); + ui->button_L_num->setStyleSheet(L_stylesheet); + + QString R_stylesheet = QStringLiteral("image: url(:/overlay%1/button_R.png);").arg(theme()); + ui->button_R->setStyleSheet(R_stylesheet); + ui->button_R_shift->setStyleSheet(R_stylesheet); + ui->button_R_num->setStyleSheet(R_stylesheet); + + QString arrow_left_stylesheet = + QStringLiteral("image: url(:/overlay%1/arrow_left.png);").arg(theme()); + ui->arrow_left->setStyleSheet(arrow_left_stylesheet); + ui->arrow_left_shift->setStyleSheet(arrow_left_stylesheet); + ui->arrow_left_num->setStyleSheet(arrow_left_stylesheet); + + QString arrow_right_stylesheet = + QStringLiteral("image: url(:/overlay%1/arrow_right.png);").arg(theme()); + ui->arrow_right->setStyleSheet(arrow_right_stylesheet); + ui->arrow_right_shift->setStyleSheet(arrow_right_stylesheet); + ui->arrow_right_num->setStyleSheet(arrow_right_stylesheet); + + QString button_press_stick_stylesheet = + QStringLiteral("image: url(:/overlay%1/button_press_stick.png);").arg(theme()); + ui->button_press_stick->setStyleSheet(button_press_stick_stylesheet); + ui->button_press_stick_shift->setStyleSheet(button_press_stick_stylesheet); + + QString button_X_stylesheet = + QStringLiteral("image: url(:/overlay%1/button_X.png);").arg(theme()); + ui->button_X->setStyleSheet(button_X_stylesheet); + ui->button_X_shift->setStyleSheet(button_X_stylesheet); + ui->button_X_num->setStyleSheet(button_X_stylesheet); + + QString button_A_stylesheet = + QStringLiteral("image: url(:/overlay%1/button_A.png);").arg(theme()); + ui->button_A->setStyleSheet(button_A_stylesheet); + ui->button_A_shift->setStyleSheet(button_A_stylesheet); + ui->button_A_num->setStyleSheet(button_A_stylesheet); +} + void QtSoftwareKeyboardDialog::DisableKeyboardButtons() { switch (bottom_osk_index) { case BottomOSKIndex::LowerCase: @@ -1052,10 +1138,8 @@ void QtSoftwareKeyboardDialog::ChangeBottomOSKIndex() { ui->bottomOSK->setCurrentIndex(static_cast(bottom_osk_index)); ui->button_shift_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);" - "\nimage-position: left;")); + QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);")); - ui->button_shift_shift->setIconSize(ui->button_shift->iconSize()); ui->button_backspace_shift->setIconSize(ui->button_backspace->iconSize()); break; case BottomOSKIndex::UpperCase: @@ -1066,9 +1150,6 @@ void QtSoftwareKeyboardDialog::ChangeBottomOSKIndex() { QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);" "\nimage-position: left;")); - ui->button_shift_shift->setIconSize(ui->button_shift->iconSize()); - ui->button_backspace_shift->setIconSize(ui->button_backspace->iconSize()); - ui->label_shift_shift->setText(QStringLiteral("Caps Lock")); bottom_osk_index = BottomOSKIndex::LowerCase; @@ -1080,9 +1161,6 @@ void QtSoftwareKeyboardDialog::ChangeBottomOSKIndex() { QStringLiteral("image: url(:/overlay/osk_button_shift_lock_on.png);" "\nimage-position: left;")); - ui->button_shift_shift->setIconSize(ui->button_shift->iconSize()); - ui->button_backspace_shift->setIconSize(ui->button_backspace->iconSize()); - ui->label_shift_shift->setText(QStringLiteral("Caps Lock Off")); } break; diff --git a/src/suyu/applets/qt_software_keyboard.h b/src/suyu/applets/qt_software_keyboard.h index 7e2fdf09ea..fda6ac623d 100644 --- a/src/suyu/applets/qt_software_keyboard.h +++ b/src/suyu/applets/qt_software_keyboard.h @@ -80,6 +80,12 @@ private: NumberPad, }; + /** + * Get the current theme suffix + * @return an empty string for light theme, "_dark" for dark theme + */ + QString theme(); + /** * Moves and resizes the window to a specified position and size. * @@ -109,6 +115,9 @@ private: /// Sets the controller image at the bottom left of the software keyboard. void SetControllerImage(); + /// Sets the controller image at the bottom left of the software keyboard. + void SetButtonImages(); + /// Disables buttons based on initialize_parameters. void DisableKeyboardButtons(); diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index e6d14717cf..b687e2500d 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -9,7 +9,6 @@ #include #include #include -#include #include #include "core/hle/service/am/applet_manager.h" @@ -297,12 +296,11 @@ GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulk statusBar()->hide(); startup_icon_theme = QIcon::themeName(); - // fallback can only be set once, colorful theme icons are okay on both light/dark - QIcon::setFallbackThemeName(QStringLiteral("colorful")); + // fallback can only be set once, default theme icons are okay on both light/dark + QIcon::setFallbackThemeName(QStringLiteral("default")); QIcon::setFallbackSearchPaths(QStringList(QStringLiteral(":/icons"))); default_theme_paths = QIcon::themeSearchPaths(); - UpdateUITheme(); SetDiscordEnabled(UISettings::values.enable_discord_presence.GetValue()); discord_rpc->Update(); @@ -3612,8 +3610,6 @@ void GMainWindow::OnConfigure() { multiplayer_state->UpdateCredentials(); } - emit UpdateThemedIcons(); - const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false); if (reload || Settings::values.language_index.GetValue() != old_language_index) { game_list->PopulateAsync(UISettings::values.game_dirs); @@ -5030,9 +5026,9 @@ bool GMainWindow::CheckDarkMode() { // Using the freedesktop specifications for checking dark mode LOG_INFO(Frontend, "Retrieving theme from freedesktop color-scheme..."); gdbus_arguments << QStringLiteral("--dest=org.freedesktop.portal.Desktop") - << QStringLiteral("--object-path /org/freedesktop/portal/desktop") - << QStringLiteral("--method org.freedesktop.portal.Settings.Read " - "org.freedesktop.appearance color-scheme"); + << QStringLiteral("--object-path /org/freedesktop/portal/desktop") + << QStringLiteral("--method org.freedesktop.portal.Settings.Read") + << QStringLiteral("org.freedesktop.appearance color-scheme"); process.start(QStringLiteral("gdbus call --session"), gdbus_arguments); process.waitForFinished(1000); QByteArray dbus_output = process.readAllStandardOutput(); @@ -5096,7 +5092,8 @@ void GMainWindow::changeEvent(QEvent* event) { UpdateUITheme(); } - } else QWidget::changeEvent(event); + } + QWidget::changeEvent(event); } void GMainWindow::LoadTranslation() { diff --git a/src/suyu/main.h b/src/suyu/main.h index d0f1bd96e6..f9a5057d83 100644 --- a/src/suyu/main.h +++ b/src/suyu/main.h @@ -167,7 +167,6 @@ class GMainWindow : public QMainWindow { public: void filterBarSetChecked(bool state); static bool CheckDarkMode(); - void UpdateUITheme(); explicit GMainWindow(std::unique_ptr config_, bool has_broken_vulkan); ~GMainWindow() override; diff --git a/src/suyu/uisettings.cpp b/src/suyu/uisettings.cpp index 8d65905104..7cf32ddd0e 100644 --- a/src/suyu/uisettings.cpp +++ b/src/suyu/uisettings.cpp @@ -23,12 +23,12 @@ namespace FS = Common::FS; namespace UISettings { const Themes included_themes{{ - {"Default", ":/default/"}, - {"Default Colorful", ":/colorful/"}, - {"Dark", ":/qdarkstyle/"}, - {"Dark Colorful", ":/colorful_dark/"}, - {"Midnight Blue", ":/qdarkstyle_midnight_blue/"}, - {"Midnight Blue Colorful", ":/colorful_midnight_blue/"}, + {"Default", ":/default"}, + {"Default monochrome", ":/monochrome"}, + {"Mine Shaft", ":/qdarkstyle"}, + {"Mine Shaft monochrome", ":/qdarkstyle_monochrome"}, + {"Midnight Blue", ":/qdarkstyle_midnight_blue"}, + {"Midnight Blue monochrome", ":/qdarkstyle_midnight_blue_monochrome"}, }}; Values values = {}; diff --git a/src/suyu/uisettings.h b/src/suyu/uisettings.h index 6bb903efa7..75571acde8 100644 --- a/src/suyu/uisettings.h +++ b/src/suyu/uisettings.h @@ -48,7 +48,7 @@ struct Shortcut { ContextualShortcut shortcut; }; -static constexpr std::string_view default_theme{"colorful"}; +static constexpr std::string_view default_theme{":/default"}; using Themes = std::array, 6>; extern const Themes included_themes; From c00c425b488a09324ce5373345a597ad9abde66e Mon Sep 17 00:00:00 2001 From: flodavid Date: Mon, 12 Feb 2024 04:01:25 +0100 Subject: [PATCH 06/28] Add dark mode configuration setting in UI tab - Allows to choose "Auto", "Always On" or "Always Off" - Dark mode options are only shown if the style does not support theme - If Auto is chosen, value is retrieved from OS - On Windows, the application needs a restart to apply the settings - Use the default dark palette for Windows, like on Linux --- src/common/settings.cpp | 1 + src/common/settings.h | 1 + src/common/settings_enums.h | 2 + src/suyu/configuration/configure_ui.cpp | 67 +++++++++ src/suyu/configuration/configure_ui.h | 1 + src/suyu/configuration/configure_ui.ui | 14 ++ src/suyu/configuration/qt_config.cpp | 10 +- src/suyu/main.cpp | 192 +++++++++++++++--------- src/suyu/startup_checks.cpp | 4 - src/suyu/uisettings.h | 3 + 10 files changed, 221 insertions(+), 74 deletions(-) diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 948c557674..3339d5b4f0 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -67,6 +67,7 @@ SWITCHABLE(u8, true); // Used in UISettings // TODO see if we can move this to uisettings.cpp SWITCHABLE(ConfirmStop, true); +SWITCHABLE(DarkModeState, true); #undef SETTING #undef SWITCHABLE diff --git a/src/common/settings.h b/src/common/settings.h index 829759c94b..77788befe7 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -90,6 +90,7 @@ SWITCHABLE(u8, true); // Used in UISettings // TODO see if we can move this to uisettings.h SWITCHABLE(ConfirmStop, true); +SWITCHABLE(DarkModeState, true); #undef SETTING #undef SWITCHABLE diff --git a/src/common/settings_enums.h b/src/common/settings_enums.h index fabae6d687..777f5b1b0a 100644 --- a/src/common/settings_enums.h +++ b/src/common/settings_enums.h @@ -155,6 +155,8 @@ ENUM(ConsoleMode, Handheld, Docked); ENUM(AppletMode, HLE, LLE); +ENUM(DarkModeState, Off, On, Auto); + template inline std::string CanonicalizeEnum(Type id) { const auto group = EnumMetadata::Canonicalizations(); diff --git a/src/suyu/configuration/configure_ui.cpp b/src/suyu/configuration/configure_ui.cpp index 046b34721e..589c035589 100644 --- a/src/suyu/configuration/configure_ui.cpp +++ b/src/suyu/configuration/configure_ui.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include "common/common_types.h" #include "common/fs/path_util.h" @@ -29,6 +30,8 @@ #include "suyu/uisettings.h" #include "ui_configure_ui.h" +using Settings::DarkModeState; + namespace { constexpr std::array default_game_icon_sizes{ std::make_pair(0, QT_TRANSLATE_NOOP("ConfigureUI", "None")), @@ -153,6 +156,9 @@ ConfigureUi::ConfigureUi(Core::System& system_, QWidget* parent) &ConfigureUi::RequestGameListUpdate); connect(ui->row_2_text_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, &ConfigureUi::RequestGameListUpdate); + // Update available dark mode options depending on selected style + connect(ui->theme_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, + &ConfigureUi::UpdateDarkModeOptions); // Update text ComboBoxes after user interaction. connect(ui->row_1_text_combobox, QOverload::of(&QComboBox::activated), @@ -185,6 +191,8 @@ ConfigureUi::~ConfigureUi() = default; void ConfigureUi::ApplyConfiguration() { UISettings::values.theme = ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString(); + UISettings::values.dark_mode_state = + static_cast(ui->dark_mode_combobox->currentData().toUInt()); UISettings::values.show_add_ons = ui->show_add_ons->isChecked(); UISettings::values.show_compat = ui->show_compat->isChecked(); UISettings::values.show_size = ui->show_size->isChecked(); @@ -206,12 +214,71 @@ void ConfigureUi::ApplyConfiguration() { system.ApplySettings(); } +void ConfigureUi::UpdateDarkModeOptions() { + ui->dark_mode_combobox->clear(); + + QString selected_theme = ui->theme_combobox->currentData().toString(); + + /* Dark mode option are added according to the modes the current style supports */ + bool has_common_style = QFile::exists(selected_theme + QStringLiteral("/style.qss")); + bool has_light_style = QFile::exists(selected_theme + QStringLiteral("/light.qss")); + bool has_dark_style = QFile::exists(selected_theme + QStringLiteral("/dark.qss")); +#ifdef _WIN32 + // Indicate which option needs a restart to be applied, depending on current environment + // variable + QByteArray current_qt_qpa = qgetenv("QT_QPA_PLATFORM"); + if (current_qt_qpa.contains("darkmode=2")) { + if (has_common_style || (has_dark_style && has_light_style)) { + ui->dark_mode_combobox->addItem(tr("Auto"), QVariant::fromValue(DarkModeState::Auto)); + } + if (has_common_style || has_dark_style) { + ui->dark_mode_combobox->addItem(tr("Always On") + + QStringLiteral(" (%1)").arg(tr("Needs restart")), + QVariant::fromValue(DarkModeState::On)); + } + if (has_common_style || has_light_style) { + ui->dark_mode_combobox->addItem(tr("Always Off") + + QStringLiteral(" (%1)").arg(tr("Needs restart")), + QVariant::fromValue(DarkModeState::Off)); + } + } else { + if (has_common_style || (has_dark_style && has_light_style)) { + ui->dark_mode_combobox->addItem(tr("Auto") + + QStringLiteral(" (%1)").arg(tr("Needs restart")), + QVariant::fromValue(DarkModeState::Auto)); + } + if (has_common_style || has_dark_style) { + ui->dark_mode_combobox->addItem(tr("Always On"), + QVariant::fromValue(DarkModeState::On)); + } + if (has_common_style || has_light_style) { + ui->dark_mode_combobox->addItem(tr("Always Off"), + QVariant::fromValue(DarkModeState::Off)); + } + } +#else + if (has_common_style || (has_dark_style && has_light_style)) { + ui->dark_mode_combobox->addItem(tr("Auto"), QVariant::fromValue(DarkModeState::Auto)); + } + if (has_common_style || has_dark_style) { + ui->dark_mode_combobox->addItem(tr("Always On"), QVariant::fromValue(DarkModeState::On)); + } + if (has_common_style || has_light_style) { + ui->dark_mode_combobox->addItem(tr("Always Off"), QVariant::fromValue(DarkModeState::Off)); + } +#endif +} + void ConfigureUi::RequestGameListUpdate() { UISettings::values.is_game_list_reload_pending.exchange(true); } void ConfigureUi::SetConfiguration() { ui->theme_combobox->setCurrentIndex(ui->theme_combobox->findData(UISettings::values.theme)); + // Dark mode options are populated after the theme is selected, to get the current configuration + UpdateDarkModeOptions(); + ui->dark_mode_combobox->setCurrentIndex( + ui->dark_mode_combobox->findData(QVariant::fromValue(UISettings::values.dark_mode_state))); ui->language_combobox->setCurrentIndex(ui->language_combobox->findData( QString::fromStdString(UISettings::values.language.GetValue()))); ui->show_add_ons->setChecked(UISettings::values.show_add_ons.GetValue()); diff --git a/src/suyu/configuration/configure_ui.h b/src/suyu/configuration/configure_ui.h index 2a2563a131..a52ad7cc74 100644 --- a/src/suyu/configuration/configure_ui.h +++ b/src/suyu/configuration/configure_ui.h @@ -34,6 +34,7 @@ signals: void LanguageChanged(const QString& locale); private: + void UpdateDarkModeOptions(); void RequestGameListUpdate(); void SetConfiguration(); diff --git a/src/suyu/configuration/configure_ui.ui b/src/suyu/configuration/configure_ui.ui index b8e6483814..cdd46005fd 100644 --- a/src/suyu/configuration/configure_ui.ui +++ b/src/suyu/configuration/configure_ui.ui @@ -63,6 +63,20 @@ + + + + + + Dark Mode: + + + + + + + + diff --git a/src/suyu/configuration/qt_config.cpp b/src/suyu/configuration/qt_config.cpp index 2868db4ebb..2ed14ee2be 100644 --- a/src/suyu/configuration/qt_config.cpp +++ b/src/suyu/configuration/qt_config.cpp @@ -260,8 +260,10 @@ void QtConfig::ReadShortcutValues() { void QtConfig::ReadUIValues() { BeginGroup(Settings::TranslateCategory(Settings::Category::Ui)); - UISettings::values.theme = QString::fromStdString( - ReadStringSetting(std::string("theme"), std::string(UISettings::default_theme))); + UISettings::values.theme = + QString::fromStdString(ReadStringSetting("theme", std::string(UISettings::default_theme))); + UISettings::values.dark_mode_state = static_cast( + ReadIntegerSetting("dark_mode_state", static_cast(DarkModeState::Auto))); ReadUIGamelistValues(); ReadUILayoutValues(); @@ -467,8 +469,10 @@ void QtConfig::SaveUIValues() { WriteCategory(Settings::Category::Ui); WriteCategory(Settings::Category::UiGeneral); - WriteStringSetting(std::string("theme"), UISettings::values.theme.toStdString(), + WriteStringSetting("theme", UISettings::values.theme.toStdString(), std::make_optional(std::string(UISettings::default_theme))); + WriteIntegerSetting("dark_mode_state", static_cast(UISettings::values.dark_mode_state), + std::make_optional(static_cast(DarkModeState::Auto))); SaveUIGamelistValues(); SaveUILayoutValues(); diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index b687e2500d..13089859f2 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -3536,6 +3536,7 @@ void GMainWindow::ResetWindowSize1080() { void GMainWindow::OnConfigure() { const QString old_theme = UISettings::values.theme; + DarkModeState old_dark_mode_state = UISettings::values.dark_mode_state; const bool old_discord_presence = UISettings::values.enable_discord_presence.GetValue(); const auto old_language_index = Settings::values.language_index.GetValue(); #ifdef __unix__ @@ -3594,7 +3595,8 @@ void GMainWindow::OnConfigure() { } InitializeHotkeys(); - if (UISettings::values.theme != old_theme) { + if (UISettings::values.theme != old_theme || + UISettings::values.dark_mode_state != old_dark_mode_state) { UpdateUITheme(); } if (UISettings::values.enable_discord_presence.GetValue() != old_discord_presence) { @@ -4791,13 +4793,11 @@ void GMainWindow::filterBarSetChecked(bool state) { } void GMainWindow::UpdateUITheme() { - LOG_DEBUG(Frontend, "Updating UI"); - QString default_theme = QString::fromStdString(UISettings::default_theme.data()); + const QString default_theme = QString::fromStdString(UISettings::default_theme.data()); QString current_theme = UISettings::values.theme; if (current_theme.isEmpty()) { current_theme = default_theme; } - const bool current_dark_mode = CheckDarkMode(); UpdateIcons(current_theme); @@ -4860,7 +4860,7 @@ bool GMainWindow::TryLoadStylesheet(const QString& theme_uri) { style_path = theme_uri + QStringLiteral("/light.qss"); } if (!QFile::exists(style_path)) { - LOG_INFO(Frontend, "Themed (light/dark) stylesheet could not be found, using default one"); + LOG_DEBUG(Frontend, "No themed (light/dark) stylesheet, using default one"); // Use common stylesheet if themed one does not exist style_path = theme_uri + QStringLiteral("/style.qss"); } @@ -4871,7 +4871,7 @@ bool GMainWindow::TryLoadStylesheet(const QString& theme_uri) { // Update the color palette before applying the stylesheet UpdateThemePalette(); - LOG_INFO(Frontend, "Loading stylesheet in: {}", theme_uri.toStdString()); + LOG_DEBUG(Frontend, "Loading stylesheet in: {}", theme_uri.toStdString()); QTextStream ts_theme(&style_file); qApp->setStyleSheet(ts_theme.readAll()); setStyleSheet(ts_theme.readAll()); @@ -4903,12 +4903,34 @@ void GMainWindow::UpdateThemePalette() { QPalette themePalette(qApp->palette()); #ifdef _WIN32 QColor dark(25, 25, 25); - QColor darkGray(100, 100, 100); - QColor gray(150, 150, 150); - QColor light(230, 230, 230); - // By default, revert fusion style set for Windows dark theme - QString style; + QString style_name; if (CheckDarkMode()) { + // We check that the dark mode state is "On" and force a dark palette + if (UISettings::values.dark_mode_state == DarkModeState::On) { + // Set Default Windows Dark palette on Windows platforms to force Dark mode + themePalette.setColor(QPalette::Window, Qt::black); + themePalette.setColor(QPalette::WindowText, Qt::white); + themePalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(127, 127, 127)); + themePalette.setColor(QPalette::Base, Qt::black); + themePalette.setColor(QPalette::AlternateBase, dark); + themePalette.setColor(QPalette::ToolTipBase, Qt::white); + themePalette.setColor(QPalette::ToolTipText, Qt::black); + themePalette.setColor(QPalette::Text, Qt::white); + themePalette.setColor(QPalette::Disabled, QPalette::Text, QColor(127, 127, 127)); + themePalette.setColor(QPalette::Dark, QColor(128, 128, 128)); + themePalette.setColor(QPalette::Shadow, Qt::white); + themePalette.setColor(QPalette::Button, Qt::black); + themePalette.setColor(QPalette::ButtonText, Qt::white); + themePalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(127, 127, 127)); + themePalette.setColor(QPalette::BrightText, QColor(192, 192, 192)); + themePalette.setColor(QPalette::Link, QColor(0, 140, 200)); + themePalette.setColor(QPalette::Highlight, QColor(24, 70, 93)); + themePalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(0, 85, 255)); + themePalette.setColor(QPalette::HighlightedText, QColor(239, 240, 241)); + themePalette.setColor(QPalette::Disabled, QPalette::HighlightedText, + QColor(239, 240, 241)); + } + // AlternateBase is kept at rgb(233, 231, 227) or rgb(245, 245, 245) on Windows dark // palette, fix this. Sometimes, it even is rgb(0, 0, 0), but uses a very light gray for // alternate rows, do not know why @@ -4919,22 +4941,23 @@ void GMainWindow::UpdateThemePalette() { alternate_base_modified = true; } // Use fusion theme, since its close to windowsvista, but works well with a dark palette - style = QStringLiteral("fusion"); + style_name = QStringLiteral("fusion"); } else { // Reset AlternateBase if it has been modified if (alternate_base_modified) { themePalette.setColor(QPalette::AlternateBase, QColor(245, 245, 245)); alternate_base_modified = false; } + // Reset light palette + themePalette = this->style()->standardPalette(); // Reset Windows theme to the default - style = QStringLiteral("windowsvista"); + style_name = QStringLiteral("windowsvista"); } - LOG_DEBUG(Frontend, "Using style: {}", style.toStdString()); - qApp->setStyle(style); + LOG_DEBUG(Frontend, "Using style: {}", style_name.toStdString()); + qApp->setStyle(style_name); #else if (CheckDarkMode()) { // Set Dark palette on non Windows platforms (that may not have a dark palette) - LOG_INFO(Frontend, "Using custom dark palette"); themePalette.setColor(QPalette::Window, QColor(53, 53, 53)); themePalette.setColor(QPalette::WindowText, Qt::white); themePalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(127, 127, 127)); @@ -4956,8 +4979,7 @@ void GMainWindow::UpdateThemePalette() { themePalette.setColor(QPalette::HighlightedText, Qt::white); themePalette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(127, 127, 127)); } else { - LOG_INFO(Frontend, "Using standard palette"); - // Reset light palette on non Windows platforms + // Reset light palette themePalette = this->style()->standardPalette(); } #endif @@ -5018,61 +5040,72 @@ bool GMainWindow::ListenColorSchemeChange() { #endif bool GMainWindow::CheckDarkMode() { - const QPalette current_palette(qApp->palette()); + bool is_dark_mode_auto; +#ifdef _WIN32 + // Dark mode cannot be changed after the app started on Windows + is_dark_mode_auto = qgetenv("QT_QPA_PLATFORM").contains("darkmode=2"); +#else + is_dark_mode_auto = UISettings::values.dark_mode_state == DarkModeState::Auto; +#endif + if (!is_dark_mode_auto) { + return UISettings::values.dark_mode_state == DarkModeState::On; + } else { + const QPalette current_palette(qApp->palette()); #ifdef __unix__ - QProcess process; - QStringList gdbus_arguments; + QProcess process; - // Using the freedesktop specifications for checking dark mode - LOG_INFO(Frontend, "Retrieving theme from freedesktop color-scheme..."); - gdbus_arguments << QStringLiteral("--dest=org.freedesktop.portal.Desktop") - << QStringLiteral("--object-path /org/freedesktop/portal/desktop") - << QStringLiteral("--method org.freedesktop.portal.Settings.Read") - << QStringLiteral("org.freedesktop.appearance color-scheme"); - process.start(QStringLiteral("gdbus call --session"), gdbus_arguments); - process.waitForFinished(1000); - QByteArray dbus_output = process.readAllStandardOutput(); + // Using the freedesktop specifications for checking dark mode + LOG_DEBUG(Frontend, "Retrieving theme from freedesktop color-scheme..."); + QStringList gdbus_arguments; + gdbus_arguments << QStringLiteral("--dest=org.freedesktop.portal.Desktop") + << QStringLiteral("--object-path /org/freedesktop/portal/desktop") + << QStringLiteral("--method org.freedesktop.portal.Settings.Read") + << QStringLiteral("org.freedesktop.appearance color-scheme"); + process.start(QStringLiteral("gdbus call --session"), gdbus_arguments); + process.waitForFinished(1000); + QByteArray dbus_output = process.readAllStandardOutput(); - if (!dbus_output.isEmpty()) { - const int systemColorSchema = QString::fromUtf8(dbus_output).trimmed().right(1).toInt(); - return systemColorSchema == 1; - } + if (!dbus_output.isEmpty()) { + const int systemColorSchema = QString::fromUtf8(dbus_output).trimmed().right(1).toInt(); + return systemColorSchema == 1; + } - // Try alternative for Gnome if the previous one failed - QStringList gsettings_arguments; - gsettings_arguments << QStringLiteral("get") - << QStringLiteral("org.gnome.desktop.interface") - << QStringLiteral("color-scheme"); - - LOG_DEBUG(Frontend, "failed, retrieving theme from gsettings color-scheme..."); - process.start(QStringLiteral("gsettings"), gsettings_arguments); - process.waitForFinished(1000); - QByteArray gsettings_output = process.readAllStandardOutput(); - - // Try older gtk-theme method if the previous one failed - if (gsettings_output.isEmpty()) { - LOG_INFO(Frontend, "failed, retrieving theme from gtk-theme..."); - gsettings_arguments.takeLast(); - gsettings_arguments << QStringLiteral("gtk-theme"); + // Try alternative for Gnome if the previous one failed + QStringList gsettings_arguments; + gsettings_arguments << QStringLiteral("get") + << QStringLiteral("org.gnome.desktop.interface") + << QStringLiteral("color-scheme"); + LOG_DEBUG(Frontend, "failed, retrieving theme from gsettings color-scheme..."); process.start(QStringLiteral("gsettings"), gsettings_arguments); process.waitForFinished(1000); - gsettings_output = process.readAllStandardOutput(); - } + QByteArray gsettings_output = process.readAllStandardOutput(); - // Interpret gsettings value if it succeeded - if (!gsettings_output.isEmpty()) { - QString systeme_theme = QString::fromUtf8(gsettings_output); - LOG_DEBUG(Frontend, "Gsettings output: {}", systeme_theme.toStdString()); - return systeme_theme.contains(QStringLiteral("dark"), Qt::CaseInsensitive); - } - LOG_DEBUG(Frontend, "failed, retrieving theme from palette"); + // Try older gtk-theme method if the previous one failed + if (gsettings_output.isEmpty()) { + LOG_DEBUG(Frontend, "failed, retrieving theme from gtk-theme..."); + gsettings_arguments.takeLast(); + gsettings_arguments << QStringLiteral("gtk-theme"); + + process.start(QStringLiteral("gsettings"), gsettings_arguments); + process.waitForFinished(1000); + gsettings_output = process.readAllStandardOutput(); + } + + // Interpret gsettings value if it succeeded + if (!gsettings_output.isEmpty()) { + QString systeme_theme = QString::fromUtf8(gsettings_output); + LOG_DEBUG(Frontend, "Gsettings output: {}", systeme_theme.toStdString()); + return systeme_theme.contains(QStringLiteral("dark"), Qt::CaseInsensitive); + } + LOG_DEBUG(Frontend, "failed, retrieving theme from palette"); #endif - // Use default method based on palette swap by OS. - // It is the only method on Windows with Qt 5. - // Windows needs QT_QPA_PLATFORM env variable set to windows:darkmode=2 to force palette change - return (current_palette.color(QPalette::WindowText).lightness() > - current_palette.color(QPalette::Window).lightness()); + // Use default method based on palette swap by OS. It is the only method on Windows with + // Qt 5. Windows needs QT_QPA_PLATFORM env variable set to windows:darkmode=2 to force + // palette change + return (current_palette.color(QPalette::WindowText).lightness() > + current_palette.color(QPalette::Window).lightness()); + } } void GMainWindow::changeEvent(QEvent* event) { @@ -5080,9 +5113,9 @@ void GMainWindow::changeEvent(QEvent* event) { // UpdateUITheme is a decent work around if (event->type() == QEvent::PaletteChange || event->type() == QEvent::ApplicationPaletteChange) { - LOG_INFO(Frontend, - "Window color palette changed by event: {} (QEvent::PaletteChange is: {})", - event->type(), QEvent::PaletteChange); + LOG_DEBUG(Frontend, + "Window color palette changed by event: {} (QEvent::PaletteChange is: {})", + event->type(), QEvent::PaletteChange); const QPalette test_palette(qApp->palette()); // Keeping eye on QPalette::Window to avoid looping. QPalette::Text might be useful too const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window); @@ -5274,6 +5307,31 @@ int main(int argc, char* argv[]) { QCoreApplication::setApplicationName(QStringLiteral("suyu")); #ifdef _WIN32 + QByteArray current_qt_qpa = qgetenv("QT_QPA_PLATFORM"); + // Follow dark mode setting, if the "-platform" launch option is not set. + // Otherwise, just follow dark mode for the window decoration (title bar). + if (!current_qt_qpa.contains(":darkmode=")) { + if (UISettings::values.dark_mode_state == DarkModeState::Auto) { + // When setting is Auto, force adapting window decoration and stylesheet palette to use + // Windows theme. Default is darkmode:0, which always uses light palette + if (current_qt_qpa.isEmpty()) { + // Set the value + qputenv("QT_QPA_PLATFORM", QByteArray("windows:darkmode=2")); + } else { + // Concatenate to the existing value + qputenv("QT_QPA_PLATFORM", current_qt_qpa + ",darkmode=2"); + } + } else { + // When setting is no Auto, adapt window decoration to the palette used + if (current_qt_qpa.isEmpty()) { + // Set the value + qputenv("QT_QPA_PLATFORM", QByteArray("windows:darkmode=1")); + } else { + // Concatenate to the existing value + qputenv("QT_QPA_PLATFORM", current_qt_qpa + ",darkmode=1"); + } + } + } // Increases the maximum open file limit to 8192 _setmaxstdio(8192); #endif diff --git a/src/suyu/startup_checks.cpp b/src/suyu/startup_checks.cpp index 32011f6d5c..07e8bcb5d8 100644 --- a/src/suyu/startup_checks.cpp +++ b/src/suyu/startup_checks.cpp @@ -6,7 +6,6 @@ #ifdef _WIN32 #include #include -#include #include #include #elif defined(SUYU_UNIX) @@ -38,9 +37,6 @@ void CheckVulkan() { bool CheckEnvVars(bool* is_child) { #ifdef _WIN32 - // Force adapting theme to follow Windows dark mode - qputenv("QT_QPA_PLATFORM", QByteArray("windows:darkmode=2")); - // Check environment variable to see if we are the child char variable_contents[8]; const DWORD startup_check_var = diff --git a/src/suyu/uisettings.h b/src/suyu/uisettings.h index 75571acde8..ded6a42244 100644 --- a/src/suyu/uisettings.h +++ b/src/suyu/uisettings.h @@ -18,6 +18,7 @@ using Settings::Category; using Settings::ConfirmStop; +using Settings::DarkModeState; using Settings::Setting; using Settings::SwitchableSetting; @@ -144,6 +145,7 @@ struct Values { Setting language{linkage, {}, "language", Category::Paths}; QString theme; + DarkModeState dark_mode_state; // Shortcut name std::vector shortcuts; @@ -261,3 +263,4 @@ Q_DECLARE_METATYPE(Settings::RendererBackend); Q_DECLARE_METATYPE(Settings::ShaderBackend); Q_DECLARE_METATYPE(Settings::AstcRecompression); Q_DECLARE_METATYPE(Settings::AstcDecodeMode); +Q_DECLARE_METATYPE(Settings::DarkModeState); From b28acaf7c967c72cda103f48482656affa832dee Mon Sep 17 00:00:00 2001 From: flodavid Date: Fri, 23 Feb 2024 16:37:41 +0100 Subject: [PATCH 07/28] Fix qdarkstyle and midnight blue sliders being cropped - Allow Threshold sliders in control configuration to be up to 40px tall, instead of 15 --- dist/qt_themes/qdarkstyle/dark.qss | 4 ++ .../qdarkstyle_midnight_blue/dark.qss | 4 ++ .../configuration/configure_input_player.ui | 72 +++++++++---------- 3 files changed, 44 insertions(+), 36 deletions(-) diff --git a/dist/qt_themes/qdarkstyle/dark.qss b/dist/qt_themes/qdarkstyle/dark.qss index 09397f89f5..95e575c42f 100644 --- a/dist/qt_themes/qdarkstyle/dark.qss +++ b/dist/qt_themes/qdarkstyle/dark.qss @@ -944,6 +944,10 @@ QListView::indicator:indeterminate:pressed { image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png); } +QSlider:horizontal { + height: 20px; +} + QSlider::groove:horizontal { border: 1px solid #565a5e; height: 4px; diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss b/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss index a90ac5d5e0..3086b90ade 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss +++ b/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss @@ -1296,6 +1296,10 @@ QSlider:focus { border: none; } +QSlider:horizontal { + height: 20px; +} + QSlider::groove:horizontal { background: #32414B; border: 1px solid #32414B; diff --git a/src/suyu/configuration/configure_input_player.ui b/src/suyu/configuration/configure_input_player.ui index 5beb1b6bfc..761015cd94 100644 --- a/src/suyu/configuration/configure_input_player.ui +++ b/src/suyu/configuration/configure_input_player.ui @@ -1430,12 +1430,12 @@ - - - 0 - 0 - - + + + 0 + 0 + + ZL @@ -1481,20 +1481,20 @@ - - - - 70 - 15 - - - - 100 - - - Qt::Horizontal - - + + + + 70 + 40 + + + + 100 + + + Qt::Horizontal + + @@ -1927,22 +1927,22 @@ - - - - - 70 - 15 - - - - 100 - - - Qt::Horizontal - - - + + + + + 70 + 40 + + + + 100 + + + Qt::Horizontal + + + From 323ea0cdfd58458af2a6264cf58c4b9bb87b585f Mon Sep 17 00:00:00 2001 From: flodavid Date: Thu, 11 Apr 2024 10:19:20 -0700 Subject: [PATCH 08/28] WIP: fix macOS style when OS dark mode is active --- src/suyu/main.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index 13089859f2..300eb0819a 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -4851,6 +4851,7 @@ void GMainWindow::UpdateIcons(const QString& theme_path) { } bool GMainWindow::TryLoadStylesheet(const QString& theme_uri) { + LOG_DEBUG(Frontend, "TryLoadStylesheet()"); QString style_path; // Use themed stylesheet if it exists @@ -4900,6 +4901,7 @@ static void AdjustLinkColor() { } void GMainWindow::UpdateThemePalette() { + LOG_DEBUG(Frontend, "UpdateThemePalette()"); QPalette themePalette(qApp->palette()); #ifdef _WIN32 QColor dark(25, 25, 25); @@ -4955,6 +4957,33 @@ void GMainWindow::UpdateThemePalette() { } LOG_DEBUG(Frontend, "Using style: {}", style_name.toStdString()); qApp->setStyle(style_name); +#elif defined(__APPLE__) + // Force the usage of the light palette in light mode + if (CheckDarkMode()) { + // Reset dark palette + themePalette = this->style()->standardPalette(); + } else { + themePalette.setColor(QPalette::Window, QColor(236, 236, 236)); + themePalette.setColor(QPalette::WindowText, Qt::black); + themePalette.setColor(QPalette::Disabled, QPalette::WindowText, Qt::black); + themePalette.setColor(QPalette::Base, Qt::white); + themePalette.setColor(QPalette::AlternateBase, QColor(245, 245, 245)); + themePalette.setColor(QPalette::ToolTipBase, Qt::white); + themePalette.setColor(QPalette::ToolTipText, Qt::black); + themePalette.setColor(QPalette::Text, Qt::black); + themePalette.setColor(QPalette::Disabled, QPalette::Text, Qt::black); + themePalette.setColor(QPalette::Dark, QColor(191, 191, 191)); + themePalette.setColor(QPalette::Shadow, Qt::black); + themePalette.setColor(QPalette::Button, QColor(236, 236, 236)); + themePalette.setColor(QPalette::ButtonText, Qt::black); + themePalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(147, 147, 147)); + themePalette.setColor(QPalette::BrightText, Qt::white); + themePalette.setColor(QPalette::Link, QColor(0, 140, 200)); + themePalette.setColor(QPalette::Highlight, QColor(179, 215, 255)); + themePalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(220, 220, 220)); + themePalette.setColor(QPalette::HighlightedText, Qt::black); + themePalette.setColor(QPalette::Disabled, QPalette::HighlightedText, Qt::black); + } #else if (CheckDarkMode()) { // Set Dark palette on non Windows platforms (that may not have a dark palette) From 138d67b3078939cdeceb76e14fab5101ab384c8b Mon Sep 17 00:00:00 2001 From: Exverge Date: Sun, 31 Mar 2024 20:08:49 -0400 Subject: [PATCH 09/28] Refactor android to dev.suyu.suyu_emu --- .ci/scripts/linux/upload.sh | 2 +- CMakeLists.txt | 8 +- ...suyu.desktop => dev.suyu_emu.suyu.desktop} | 2 +- ...nfo.xml => dev.suyu_emu.suyu.metainfo.xml} | 4 +- ...uyu_emu.suyu.xml => dev.suyu_emu.suyu.xml} | 8 +- src/android/app/build.gradle.kts | 4 +- src/android/app/src/main/AndroidManifest.xml | 8 +- .../suyu/suyu_emu/NativeLibrary.kt | 18 ++--- .../suyu/suyu_emu/SuyuApplication.kt | 12 +-- .../suyu_emu/activities/EmulationActivity.kt | 36 ++++----- .../suyu_emu/adapters/AbstractDiffAdapter.kt | 4 +- .../suyu_emu/adapters/AbstractListAdapter.kt | 4 +- .../adapters/AbstractSingleSelectionList.kt | 6 +- .../suyu/suyu_emu/adapters/AddonAdapter.kt | 10 +-- .../suyu/suyu_emu/adapters/AppletAdapter.kt | 20 ++--- .../adapters/CabinetLauncherDialogAdapter.kt | 22 ++--- .../suyu/suyu_emu/adapters/DriverAdapter.kt | 18 ++--- .../suyu/suyu_emu/adapters/FolderAdapter.kt | 14 ++-- .../suyu/suyu_emu/adapters/GameAdapter.kt | 20 ++--- .../adapters/GamePropertiesAdapter.kt | 20 ++--- .../suyu_emu/adapters/HomeSettingAdapter.kt | 18 ++--- .../suyu_emu/adapters/InstallableAdapter.kt | 10 +-- .../suyu/suyu_emu/adapters/LicenseAdapter.kt | 12 +-- .../suyu/suyu_emu/adapters/SetupAdapter.kt | 18 ++--- .../applets/keyboard/SoftwareKeyboard.kt | 8 +- .../keyboard/ui/KeyboardDialogFragment.kt | 12 +-- .../DiskShaderCacheProgress.kt | 12 +-- .../suyu_emu/features/DocumentProvider.kt | 10 +-- .../suyu_emu/features/input/NativeInput.kt | 16 ++-- .../features/input/SuyuInputDevice.kt | 8 +- .../suyu_emu/features/input/SuyuVibrator.kt | 4 +- .../features/input/model/AnalogDirection.kt | 2 +- .../features/input/model/ButtonName.kt | 2 +- .../features/input/model/InputType.kt | 2 +- .../features/input/model/NativeAnalog.kt | 2 +- .../features/input/model/NativeButton.kt | 2 +- .../features/input/model/NativeTrigger.kt | 2 +- .../features/input/model/NpadStyleIndex.kt | 4 +- .../features/input/model/PlayerInput.kt | 2 +- .../settings/model/AbstractBooleanSetting.kt | 2 +- .../settings/model/AbstractByteSetting.kt | 2 +- .../settings/model/AbstractFloatSetting.kt | 2 +- .../settings/model/AbstractIntSetting.kt | 2 +- .../settings/model/AbstractLongSetting.kt | 2 +- .../settings/model/AbstractSetting.kt | 4 +- .../settings/model/AbstractShortSetting.kt | 2 +- .../settings/model/AbstractStringSetting.kt | 2 +- .../features/settings/model/BooleanSetting.kt | 4 +- .../features/settings/model/ByteSetting.kt | 4 +- .../features/settings/model/FloatSetting.kt | 4 +- .../features/settings/model/IntSetting.kt | 4 +- .../features/settings/model/LongSetting.kt | 4 +- .../features/settings/model/Settings.kt | 6 +- .../features/settings/model/ShortSetting.kt | 4 +- .../features/settings/model/StringSetting.kt | 4 +- .../settings/model/view/AnalogInputSetting.kt | 12 +-- .../settings/model/view/ButtonInputSetting.kt | 10 +-- .../settings/model/view/DateTimeSetting.kt | 4 +- .../settings/model/view/HeaderSetting.kt | 2 +- .../model/view/InputProfileSetting.kt | 8 +- .../settings/model/view/InputSetting.kt | 14 ++-- .../model/view/IntSingleChoiceSetting.kt | 4 +- .../model/view/ModifierInputSetting.kt | 10 +-- .../settings/model/view/RunnableSetting.kt | 2 +- .../settings/model/view/SettingsItem.kt | 30 +++---- .../model/view/SingleChoiceSetting.kt | 6 +- .../settings/model/view/SliderSetting.kt | 12 +-- .../settings/model/view/StringInputSetting.kt | 4 +- .../model/view/StringSingleChoiceSetting.kt | 4 +- .../settings/model/view/SubmenuSetting.kt | 4 +- .../settings/model/view/SwitchSetting.kt | 8 +- .../settings/ui/InputDialogFragment.kt | 24 +++--- .../settings/ui/InputProfileAdapter.kt | 12 +-- .../settings/ui/InputProfileDialogFragment.kt | 12 +-- .../ui/NewInputProfileDialogFragment.kt | 8 +- .../features/settings/ui/SettingsActivity.kt | 16 ++-- .../features/settings/ui/SettingsAdapter.kt | 26 +++--- .../settings/ui/SettingsDialogFragment.kt | 32 ++++---- .../features/settings/ui/SettingsFragment.kt | 16 ++-- .../settings/ui/SettingsFragmentPresenter.kt | 44 +++++----- .../settings/ui/SettingsSearchFragment.kt | 16 ++-- .../features/settings/ui/SettingsViewModel.kt | 14 ++-- .../ui/viewholder/DateTimeViewHolder.kt | 12 +-- .../ui/viewholder/HeaderViewHolder.kt | 8 +- .../ui/viewholder/InputProfileViewHolder.kt | 14 ++-- .../settings/ui/viewholder/InputViewHolder.kt | 20 ++--- .../ui/viewholder/RunnableViewHolder.kt | 12 +-- .../ui/viewholder/SettingViewHolder.kt | 10 +-- .../ui/viewholder/SingleChoiceViewHolder.kt | 16 ++-- .../ui/viewholder/SliderViewHolder.kt | 14 ++-- .../ui/viewholder/StringInputViewHolder.kt | 12 +-- .../ui/viewholder/SubmenuViewHolder.kt | 12 +-- .../ui/viewholder/SwitchSettingViewHolder.kt | 12 +-- .../features/settings/utils/SettingsFile.kt | 10 +-- .../suyu/suyu_emu/fragments/AboutFragment.kt | 12 +-- .../fragments/AddGameFolderDialogFragment.kt | 12 +-- .../suyu/suyu_emu/fragments/AddonsFragment.kt | 21 +++-- .../fragments/AppletLauncherFragment.kt | 16 ++-- .../CabinetLauncherDialogFragment.kt | 8 +- .../ContentTypeSelectionDialogFragment.kt | 10 +-- .../fragments/CoreErrorDialogFragment.kt | 6 +- .../fragments/DriverManagerFragment.kt | 27 +++---- .../fragments/DriversLoadingDialogFragment.kt | 10 +-- .../suyu_emu/fragments/EarlyAccessFragment.kt | 10 +-- .../suyu_emu/fragments/EmulationFragment.kt | 40 +++++----- .../GameFolderPropertiesDialogFragment.kt | 14 ++-- .../suyu_emu/fragments/GameFoldersFragment.kt | 19 +++-- .../suyu_emu/fragments/GameInfoFragment.kt | 18 ++--- .../fragments/GamePropertiesFragment.kt | 44 +++++----- .../fragments/HomeSettingsFragment.kt | 35 ++++---- .../suyu_emu/fragments/InstallableFragment.kt | 29 ++++--- .../fragments/LaunchGameDialogFragment.kt | 10 +-- .../LicenseBottomSheetDialogFragment.kt | 8 +- .../suyu_emu/fragments/LicensesFragment.kt | 14 ++-- .../fragments/MessageDialogFragment.kt | 8 +- .../PermissionDeniedDialogFragment.kt | 4 +- .../fragments/ProgressDialogFragment.kt | 12 +-- .../fragments/ResetSettingsDialogFragment.kt | 6 +- .../suyu/suyu_emu/fragments/SearchFragment.kt | 22 ++--- .../suyu/suyu_emu/fragments/SetupFragment.kt | 35 ++++---- .../fragments/SetupWarningDialogFragment.kt | 4 +- .../layout/AutofitGridLayoutManager.kt | 4 +- .../suyu/suyu_emu/model/AddonViewModel.kt | 6 +- .../suyu/suyu_emu/model/Applet.kt | 4 +- .../suyu/suyu_emu/model/Driver.kt | 4 +- .../suyu/suyu_emu/model/DriverViewModel.kt | 18 ++--- .../suyu/suyu_emu/model/EmulationViewModel.kt | 2 +- .../{org => dev}/suyu/suyu_emu/model/Game.kt | 14 ++-- .../suyu/suyu_emu/model/GameDir.kt | 2 +- .../suyu/suyu_emu/model/GameProperties.kt | 2 +- .../suyu_emu/model/GameVerificationResult.kt | 2 +- .../suyu/suyu_emu/model/GamesViewModel.kt | 10 +-- .../suyu/suyu_emu/model/HomeSetting.kt | 2 +- .../suyu/suyu_emu/model/HomeViewModel.kt | 2 +- .../suyu/suyu_emu/model/InstallResult.kt | 2 +- .../suyu/suyu_emu/model/Installable.kt | 2 +- .../suyu/suyu_emu/model/License.kt | 2 +- .../suyu_emu/model/MessageDialogViewModel.kt | 2 +- .../suyu_emu/model/MinimalDocumentFile.kt | 2 +- .../{org => dev}/suyu/suyu_emu/model/Patch.kt | 2 +- .../suyu/suyu_emu/model/PatchType.kt | 2 +- .../suyu/suyu_emu/model/SelectableItem.kt | 2 +- .../suyu/suyu_emu/model/SetupPage.kt | 2 +- .../suyu/suyu_emu/model/TaskViewModel.kt | 2 +- .../suyu/suyu_emu/overlay/InputOverlay.kt | 24 +++--- .../overlay/InputOverlayDrawableButton.kt | 8 +- .../overlay/InputOverlayDrawableDpad.kt | 6 +- .../overlay/InputOverlayDrawableJoystick.kt | 10 +-- .../suyu_emu/overlay/model/OverlayControl.kt | 6 +- .../overlay/model/OverlayControlData.kt | 2 +- .../overlay/model/OverlayControlDefault.kt | 2 +- .../suyu_emu/overlay/model/OverlayLayout.kt | 2 +- .../suyu/suyu_emu/ui/GamesFragment.kt | 20 ++--- .../suyu/suyu_emu/ui/main/MainActivity.kt | 36 ++++----- .../suyu/suyu_emu/ui/main/ThemeProvider.kt | 2 +- .../suyu/suyu_emu/utils/AddonUtil.kt | 2 +- .../suyu_emu/utils/DirectoryInitialization.kt | 20 ++--- .../suyu/suyu_emu/utils/DocumentsTree.kt | 4 +- .../suyu/suyu_emu/utils/FileUtil.kt | 8 +- .../suyu/suyu_emu/utils/GameHelper.kt | 12 +-- .../suyu/suyu_emu/utils/GameIconUtils.kt | 8 +- .../suyu/suyu_emu/utils/GameMetadata.kt | 2 +- .../suyu/suyu_emu/utils/GpuDriverHelper.kt | 8 +- .../suyu/suyu_emu/utils/GpuDriverMetadata.kt | 2 +- .../suyu/suyu_emu/utils/InputHandler.kt | 8 +- .../suyu/suyu_emu/utils/InsetsHelper.kt | 2 +- .../suyu/suyu_emu/utils/LifecycleUtils.kt | 2 +- .../{org => dev}/suyu/suyu_emu/utils/Log.kt | 2 +- .../suyu/suyu_emu/utils/MemoryUtil.kt | 6 +- .../suyu/suyu_emu/utils/NativeConfig.kt | 8 +- .../suyu/suyu_emu/utils/NfcReader.kt | 4 +- .../suyu/suyu_emu/utils/ParamPackage.kt | 2 +- .../suyu/suyu_emu/utils/PreferenceUtil.kt | 2 +- .../suyu/suyu_emu/utils/SerializableHelper.kt | 2 +- .../suyu/suyu_emu/utils/ThemeHelper.kt | 10 +-- .../suyu/suyu_emu/utils/ViewUtils.kt | 2 +- .../suyu_emu/viewholder/AbstractViewHolder.kt | 6 +- .../suyu_emu/views/FixedRatioSurfaceView.kt | 2 +- .../app/src/main/jni/game_metadata.cpp | 16 ++-- src/android/app/src/main/jni/native.cpp | 80 +++++++++---------- .../app/src/main/jni/native_config.cpp | 78 +++++++++--------- src/android/app/src/main/jni/native_input.cpp | 78 +++++++++--------- src/android/app/src/main/jni/native_log.cpp | 10 +-- .../main/res/layout/fragment_emulation.xml | 6 +- .../res/navigation/emulation_navigation.xml | 10 +-- .../main/res/navigation/home_navigation.xml | 48 +++++------ .../res/navigation/settings_navigation.xml | 8 +- .../app/src/main/res/values-ar/strings.xml | 10 +-- .../app/src/main/res/values-ckb/strings.xml | 16 ++-- .../app/src/main/res/values-cs/strings.xml | 8 +- .../app/src/main/res/values-de/strings.xml | 16 ++-- .../app/src/main/res/values-es/strings.xml | 20 ++--- .../app/src/main/res/values-fa/strings.xml | 16 ++-- .../app/src/main/res/values-fr/strings.xml | 20 ++--- .../app/src/main/res/values-he/strings.xml | 20 ++--- .../app/src/main/res/values-hu/strings.xml | 18 ++--- .../app/src/main/res/values-id/strings.xml | 18 ++--- .../app/src/main/res/values-it/strings.xml | 20 ++--- .../app/src/main/res/values-ja/strings.xml | 16 ++-- .../app/src/main/res/values-ko/strings.xml | 20 ++--- .../app/src/main/res/values-nb/strings.xml | 16 ++-- .../app/src/main/res/values-pl/strings.xml | 16 ++-- .../src/main/res/values-pt-rBR/strings.xml | 20 ++--- .../src/main/res/values-pt-rPT/strings.xml | 16 ++-- .../app/src/main/res/values-ru/strings.xml | 20 ++--- .../app/src/main/res/values-uk/strings.xml | 14 ++-- .../app/src/main/res/values-vi/strings.xml | 16 ++-- .../src/main/res/values-zh-rCN/strings.xml | 20 ++--- .../src/main/res/values-zh-rTW/strings.xml | 20 ++--- .../app/src/main/res/values/strings.xml | 20 ++--- .../android/applets/software_keyboard.cpp | 10 +-- src/common/android/id_cache.cpp | 18 ++--- src/suyu/about_dialog.cpp | 2 +- src/suyu/main.cpp | 2 +- 214 files changed, 1244 insertions(+), 1250 deletions(-) rename dist/{org.suyu_emu.suyu.desktop => dev.suyu_emu.suyu.desktop} (95%) rename dist/{org.suyu_emu.suyu.metainfo.xml => dev.suyu_emu.suyu.metainfo.xml} (96%) rename dist/{org.suyu_emu.suyu.xml => dev.suyu_emu.suyu.xml} (88%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/NativeLibrary.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/SuyuApplication.kt (86%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/activities/EmulationActivity.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/AbstractDiffAdapter.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/AbstractListAdapter.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/AbstractSingleSelectionList.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/AddonAdapter.kt (84%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/AppletAdapter.kt (84%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/CabinetLauncherDialogAdapter.kt (79%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/DriverAdapter.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/FolderAdapter.kt (80%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/GameAdapter.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/GamePropertiesAdapter.kt (88%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/HomeSettingAdapter.kt (87%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/InstallableAdapter.kt (83%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/LicenseAdapter.kt (81%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/adapters/SetupAdapter.kt (86%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/applets/keyboard/ui/KeyboardDialogFragment.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress.kt (84%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/DocumentProvider.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/NativeInput.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/SuyuInputDevice.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/SuyuVibrator.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/model/AnalogDirection.kt (86%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/model/ButtonName.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/model/InputType.kt (87%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/model/NativeAnalog.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/model/NativeButton.kt (93%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/model/NativeTrigger.kt (85%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/model/NpadStyleIndex.kt (91%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/input/model/PlayerInput.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/AbstractBooleanSetting.kt (83%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/AbstractByteSetting.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/AbstractFloatSetting.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/AbstractIntSetting.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/AbstractLongSetting.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/AbstractSetting.kt (88%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/AbstractShortSetting.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/AbstractStringSetting.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/BooleanSetting.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/ByteSetting.kt (88%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/FloatSetting.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/IntSetting.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/LongSetting.kt (88%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/Settings.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/ShortSetting.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/StringSetting.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/AnalogInputSetting.kt (72%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/ButtonInputSetting.kt (75%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/DateTimeSetting.kt (84%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/HeaderSetting.kt (85%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/InputProfileSetting.kt (85%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/InputSetting.kt (93%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/IntSingleChoiceSetting.kt (90%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/ModifierInputSetting.kt (78%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/RunnableSetting.kt (91%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/SettingsItem.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/SingleChoiceSetting.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/SliderSetting.kt (78%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/StringInputSetting.kt (86%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/StringSingleChoiceSetting.kt (90%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/SubmenuSetting.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/model/view/SwitchSetting.kt (79%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/InputDialogFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/InputProfileAdapter.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/InputProfileDialogFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/NewInputProfileDialogFragment.kt (93%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/SettingsActivity.kt (93%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/SettingsAdapter.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/SettingsDialogFragment.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/SettingsFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/SettingsFragmentPresenter.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/SettingsSearchFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/SettingsViewModel.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt (82%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/HeaderViewHolder.kt (70%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt (72%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/InputViewHolder.kt (76%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt (79%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/SettingViewHolder.kt (84%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt (85%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/SliderViewHolder.kt (79%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/StringInputViewHolder.kt (79%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt (78%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt (81%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/features/settings/utils/SettingsFile.kt (77%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/AboutFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/AddGameFolderDialogFragment.kt (88%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/AddonsFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/AppletLauncherFragment.kt (91%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/CabinetLauncherDialogFragment.kt (86%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/ContentTypeSelectionDialogFragment.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/CoreErrorDialogFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/DriverManagerFragment.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/DriversLoadingDialogFragment.kt (87%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/EarlyAccessFragment.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/EmulationFragment.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/GameFolderPropertiesDialogFragment.kt (88%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/GameFoldersFragment.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/GameInfoFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/GamePropertiesFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/HomeSettingsFragment.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/InstallableFragment.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/LaunchGameDialogFragment.kt (90%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/LicenseBottomSheetDialogFragment.kt (90%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/LicensesFragment.kt (93%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/MessageDialogFragment.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/PermissionDeniedDialogFragment.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/ProgressDialogFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/ResetSettingsDialogFragment.kt (88%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/SearchFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/SetupFragment.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/fragments/SetupWarningDialogFragment.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/layout/AutofitGridLayoutManager.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/AddonViewModel.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/Applet.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/Driver.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/DriverViewModel.kt (93%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/EmulationViewModel.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/Game.kt (91%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/GameDir.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/GameProperties.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/GameVerificationResult.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/GamesViewModel.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/HomeSetting.kt (93%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/HomeViewModel.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/InstallResult.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/Installable.kt (90%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/License.kt (91%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/MessageDialogViewModel.kt (91%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/MinimalDocumentFile.kt (91%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/Patch.kt (90%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/PatchType.kt (91%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/SelectableItem.kt (89%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/SetupPage.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/model/TaskViewModel.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/overlay/InputOverlay.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/overlay/InputOverlayDrawableButton.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/overlay/InputOverlayDrawableDpad.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/overlay/InputOverlayDrawableJoystick.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/overlay/model/OverlayControl.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/overlay/model/OverlayControlData.kt (93%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/overlay/model/OverlayControlDefault.kt (90%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/overlay/model/OverlayLayout.kt (84%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/ui/GamesFragment.kt (92%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/ui/main/MainActivity.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/ui/main/ThemeProvider.kt (88%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/AddonUtil.kt (85%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/DirectoryInitialization.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/DocumentsTree.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/FileUtil.kt (99%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/GameHelper.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/GameIconUtils.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/GameMetadata.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/GpuDriverHelper.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/GpuDriverMetadata.kt (99%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/InputHandler.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/InsetsHelper.kt (95%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/LifecycleUtils.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/Log.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/MemoryUtil.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/NativeConfig.kt (96%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/NfcReader.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/ParamPackage.kt (99%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/PreferenceUtil.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/SerializableHelper.kt (97%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/ThemeHelper.kt (94%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/utils/ViewUtils.kt (98%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/viewholder/AbstractViewHolder.kt (80%) rename src/android/app/src/main/java/{org => dev}/suyu/suyu_emu/views/FixedRatioSurfaceView.kt (98%) diff --git a/.ci/scripts/linux/upload.sh b/.ci/scripts/linux/upload.sh index 392106bcd2..0e383fd059 100755 --- a/.ci/scripts/linux/upload.sh +++ b/.ci/scripts/linux/upload.sh @@ -37,7 +37,7 @@ fi # Don't let AppImageLauncher ask to integrate EA if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then - echo "X-AppImage-Integrate=false" >> AppDir/org.suyu_emu.suyu.desktop + echo "X-AppImage-Integrate=false" >> AppDir/dev.suyu_emu.suyu.desktop fi if [ "${RELEASE_NAME}" = "mainline" ]; then diff --git a/CMakeLists.txt b/CMakeLists.txt index 9406dd64a1..cbeb2ee689 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -732,14 +732,14 @@ endif() # https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html # https://www.freedesktop.org/software/appstream/docs/ if(ENABLE_QT AND UNIX AND NOT APPLE) - install(FILES "dist/org.suyu_emu.suyu.desktop" + install(FILES "dist/dev.suyu_emu.suyu.desktop" DESTINATION "share/applications") install(FILES "dist/suyu.svg" DESTINATION "share/icons/hicolor/scalable/apps" - RENAME "org.suyu_emu.suyu.svg") - install(FILES "dist/org.suyu_emu.suyu.xml" + RENAME "dev.suyu_emu.suyu.svg") + install(FILES "dist/dev.suyu_emu.suyu.xml" DESTINATION "share/mime/packages") - install(FILES "dist/org.suyu_emu.suyu.metainfo.xml" + install(FILES "dist/dev.suyu_emu.suyu.metainfo.xml" DESTINATION "share/metainfo") endif() diff --git a/dist/org.suyu_emu.suyu.desktop b/dist/dev.suyu_emu.suyu.desktop similarity index 95% rename from dist/org.suyu_emu.suyu.desktop rename to dist/dev.suyu_emu.suyu.desktop index 26bc6dd6f1..215c9d884a 100644 --- a/dist/org.suyu_emu.suyu.desktop +++ b/dist/dev.suyu_emu.suyu.desktop @@ -8,7 +8,7 @@ Type=Application Name=suyu GenericName=Switch Emulator Comment=Nintendo Switch video game console emulator -Icon=org.suyu_emu.suyu +Icon=dev.suyu_emu.suyu TryExec=suyu Exec=suyu %f Categories=Game;Emulator;Qt; diff --git a/dist/org.suyu_emu.suyu.metainfo.xml b/dist/dev.suyu_emu.suyu.metainfo.xml similarity index 96% rename from dist/org.suyu_emu.suyu.metainfo.xml rename to dist/dev.suyu_emu.suyu.metainfo.xml index aeb2fecfbe..7677919f77 100644 --- a/dist/org.suyu_emu.suyu.metainfo.xml +++ b/dist/dev.suyu_emu.suyu.metainfo.xml @@ -7,7 +7,7 @@ SPDX-License-Identifier: CC0-1.0 --> - org.suyu_emu.suyu + dev.suyu_emu.suyu CC0-1.0 suyu Nintendo Switch emulator @@ -34,7 +34,7 @@ SPDX-License-Identifier: CC0-1.0 https://community.citra-emu.org/ https://gitlab.com/suyu-emu/suyu https://suyu-emu.org/wiki/contributing/ - org.suyu_emu.suyu.desktop + dev.suyu_emu.suyu.desktop suyu suyu-cmd diff --git a/dist/org.suyu_emu.suyu.xml b/dist/dev.suyu_emu.suyu.xml similarity index 88% rename from dist/org.suyu_emu.suyu.xml rename to dist/dev.suyu_emu.suyu.xml index 9fafef671b..7e1414ce17 100644 --- a/dist/org.suyu_emu.suyu.xml +++ b/dist/dev.suyu_emu.suyu.xml @@ -10,7 +10,7 @@ SPDX-License-Identifier: GPL-2.0-or-later Nintendo Switch homebrew executable NRO - + @@ -18,7 +18,7 @@ SPDX-License-Identifier: GPL-2.0-or-later Nintendo Switch homebrew executable NSO - + @@ -26,7 +26,7 @@ SPDX-License-Identifier: GPL-2.0-or-later Nintendo Switch Package NSP - + @@ -34,7 +34,7 @@ SPDX-License-Identifier: GPL-2.0-or-later Nintendo Switch Card Image XCI - + diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts index 78f8cc3488..9312d48c33 100644 --- a/src/android/app/build.gradle.kts +++ b/src/android/app/build.gradle.kts @@ -25,7 +25,7 @@ val autoVersion = (((System.currentTimeMillis() / 1000) - 1451606400) / 10).toIn @Suppress("UnstableApiUsage") android { - namespace = "org.suyu.suyu_emu" + namespace = "dev.suyu.suyu_emu" compileSdkVersion = "android-34" ndkVersion = "26.1.10909125" @@ -54,7 +54,7 @@ android { defaultConfig { // TODO If this is ever modified, change application_id in strings.xml - applicationId = "org.suyu.suyu_emu" + applicationId = "dev.suyu.suyu_emu" minSdk = 30 targetSdk = 34 versionName = getGitVersion() diff --git a/src/android/app/src/main/AndroidManifest.xml b/src/android/app/src/main/AndroidManifest.xml index 02d08c00be..5f893cd986 100644 --- a/src/android/app/src/main/AndroidManifest.xml +++ b/src/android/app/src/main/AndroidManifest.xml @@ -17,7 +17,7 @@ SPDX-License-Identifier: GPL-3.0-or-later @@ -48,12 +48,12 @@ SPDX-License-Identifier: GPL-3.0-or-later () { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/AppletAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/AppletAdapter.kt similarity index 84% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/AppletAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/AppletAdapter.kt index 73c43a6d2c..c6d373f7a5 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/AppletAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/AppletAdapter.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.view.LayoutInflater import android.view.ViewGroup @@ -9,15 +9,15 @@ import android.widget.Toast import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.FragmentActivity import androidx.navigation.findNavController -import org.suyu.suyu_emu.HomeNavigationDirections -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.databinding.CardSimpleOutlinedBinding -import org.suyu.suyu_emu.model.Applet -import org.suyu.suyu_emu.model.AppletInfo -import org.suyu.suyu_emu.model.Game -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.HomeNavigationDirections +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.databinding.CardSimpleOutlinedBinding +import dev.suyu.suyu_emu.model.Applet +import dev.suyu.suyu_emu.model.AppletInfo +import dev.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class AppletAdapter(val activity: FragmentActivity, applets: List) : AbstractListAdapter(applets) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/CabinetLauncherDialogAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/CabinetLauncherDialogAdapter.kt similarity index 79% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/CabinetLauncherDialogAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/CabinetLauncherDialogAdapter.kt index 188b3ae464..d7125d8603 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/CabinetLauncherDialogAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/CabinetLauncherDialogAdapter.kt @@ -1,23 +1,23 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.view.LayoutInflater import android.view.ViewGroup import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController -import org.suyu.suyu_emu.HomeNavigationDirections -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.databinding.DialogListItemBinding -import org.suyu.suyu_emu.model.CabinetMode -import org.suyu.suyu_emu.adapters.CabinetLauncherDialogAdapter.CabinetModeViewHolder -import org.suyu.suyu_emu.model.AppletInfo -import org.suyu.suyu_emu.model.Game -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.HomeNavigationDirections +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.databinding.DialogListItemBinding +import dev.suyu.suyu_emu.model.CabinetMode +import dev.suyu.suyu_emu.adapters.CabinetLauncherDialogAdapter.CabinetModeViewHolder +import dev.suyu.suyu_emu.model.AppletInfo +import dev.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class CabinetLauncherDialogAdapter(val fragment: Fragment) : AbstractListAdapter( diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/DriverAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/DriverAdapter.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/DriverAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/DriverAdapter.kt index 4c8e53abbd..58c8555750 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/DriverAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/DriverAdapter.kt @@ -1,18 +1,18 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.view.LayoutInflater import android.view.ViewGroup -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.CardDriverOptionBinding -import org.suyu.suyu_emu.features.settings.model.StringSetting -import org.suyu.suyu_emu.model.Driver -import org.suyu.suyu_emu.model.DriverViewModel -import org.suyu.suyu_emu.utils.ViewUtils.marquee -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.CardDriverOptionBinding +import dev.suyu.suyu_emu.features.settings.model.StringSetting +import dev.suyu.suyu_emu.model.Driver +import dev.suyu.suyu_emu.model.DriverViewModel +import dev.suyu.suyu_emu.utils.ViewUtils.marquee +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class DriverAdapter(private val driverViewModel: DriverViewModel) : AbstractSingleSelectionList( diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/FolderAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/FolderAdapter.kt similarity index 80% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/FolderAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/FolderAdapter.kt index dfe332586d..ce73151938 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/FolderAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/FolderAdapter.kt @@ -1,18 +1,18 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.net.Uri import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.FragmentActivity -import org.suyu.suyu_emu.databinding.CardFolderBinding -import org.suyu.suyu_emu.fragments.GameFolderPropertiesDialogFragment -import org.suyu.suyu_emu.model.GameDir -import org.suyu.suyu_emu.model.GamesViewModel -import org.suyu.suyu_emu.utils.ViewUtils.marquee -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.databinding.CardFolderBinding +import dev.suyu.suyu_emu.fragments.GameFolderPropertiesDialogFragment +import dev.suyu.suyu_emu.model.GameDir +import dev.suyu.suyu_emu.model.GamesViewModel +import dev.suyu.suyu_emu.utils.ViewUtils.marquee +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesViewModel) : AbstractDiffAdapter() { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/GameAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/GameAdapter.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/GameAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/GameAdapter.kt index 6a87c8852c..7cca8b9aec 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/GameAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/GameAdapter.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.net.Uri import android.view.LayoutInflater @@ -19,15 +19,15 @@ import androidx.preference.PreferenceManager import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.suyu.suyu_emu.HomeNavigationDirections -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.databinding.CardGameBinding -import org.suyu.suyu_emu.model.Game -import org.suyu.suyu_emu.model.GamesViewModel -import org.suyu.suyu_emu.utils.GameIconUtils -import org.suyu.suyu_emu.utils.ViewUtils.marquee -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.HomeNavigationDirections +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.databinding.CardGameBinding +import dev.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.model.GamesViewModel +import dev.suyu.suyu_emu.utils.GameIconUtils +import dev.suyu.suyu_emu.utils.ViewUtils.marquee +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class GameAdapter(private val activity: AppCompatActivity) : AbstractDiffAdapter(exact = false) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/GamePropertiesAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/GamePropertiesAdapter.kt similarity index 88% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/GamePropertiesAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/GamePropertiesAdapter.kt index 1d3916b43f..6cc783d2c2 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/GamePropertiesAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/GamePropertiesAdapter.kt @@ -1,21 +1,21 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.view.LayoutInflater import android.view.ViewGroup import androidx.core.content.res.ResourcesCompat import androidx.lifecycle.LifecycleOwner -import org.suyu.suyu_emu.databinding.CardInstallableIconBinding -import org.suyu.suyu_emu.databinding.CardSimpleOutlinedBinding -import org.suyu.suyu_emu.model.GameProperty -import org.suyu.suyu_emu.model.InstallableProperty -import org.suyu.suyu_emu.model.SubmenuProperty -import org.suyu.suyu_emu.utils.ViewUtils.marquee -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.utils.collect -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.databinding.CardInstallableIconBinding +import dev.suyu.suyu_emu.databinding.CardSimpleOutlinedBinding +import dev.suyu.suyu_emu.model.GameProperty +import dev.suyu.suyu_emu.model.InstallableProperty +import dev.suyu.suyu_emu.model.SubmenuProperty +import dev.suyu.suyu_emu.utils.ViewUtils.marquee +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class GamePropertiesAdapter( private val viewLifecycle: LifecycleOwner, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/HomeSettingAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/HomeSettingAdapter.kt similarity index 87% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/HomeSettingAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/HomeSettingAdapter.kt index 973e0b457d..8ecc0e6f90 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/HomeSettingAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/HomeSettingAdapter.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.view.LayoutInflater import android.view.ViewGroup @@ -9,14 +9,14 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat import androidx.lifecycle.LifecycleOwner -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.CardHomeOptionBinding -import org.suyu.suyu_emu.fragments.MessageDialogFragment -import org.suyu.suyu_emu.model.HomeSetting -import org.suyu.suyu_emu.utils.ViewUtils.marquee -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.utils.collect -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.CardHomeOptionBinding +import dev.suyu.suyu_emu.fragments.MessageDialogFragment +import dev.suyu.suyu_emu.model.HomeSetting +import dev.suyu.suyu_emu.utils.ViewUtils.marquee +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class HomeSettingAdapter( private val activity: AppCompatActivity, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/InstallableAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/InstallableAdapter.kt similarity index 83% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/InstallableAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/InstallableAdapter.kt index fbd420aaae..e4bef9e2b6 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/InstallableAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/InstallableAdapter.kt @@ -1,14 +1,14 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.view.LayoutInflater import android.view.ViewGroup -import org.suyu.suyu_emu.databinding.CardInstallableBinding -import org.suyu.suyu_emu.model.Installable -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.databinding.CardInstallableBinding +import dev.suyu.suyu_emu.model.Installable +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class InstallableAdapter(installables: List) : AbstractListAdapter(installables) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/LicenseAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/LicenseAdapter.kt similarity index 81% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/LicenseAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/LicenseAdapter.kt index 5358cd6067..dec98c8032 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/LicenseAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/LicenseAdapter.kt @@ -1,16 +1,16 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.fragments.LicenseBottomSheetDialogFragment -import org.suyu.suyu_emu.model.License -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.fragments.LicenseBottomSheetDialogFragment +import dev.suyu.suyu_emu.model.License +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class LicenseAdapter(private val activity: AppCompatActivity, licenses: List) : AbstractListAdapter(licenses) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/SetupAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/SetupAdapter.kt similarity index 86% rename from src/android/app/src/main/java/org/suyu/suyu_emu/adapters/SetupAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/SetupAdapter.kt index 2dcd5cfc64..134de7cfc3 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/adapters/SetupAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/adapters/SetupAdapter.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.adapters +package dev.suyu.suyu_emu.adapters import android.text.Html import android.view.LayoutInflater @@ -10,14 +10,14 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.res.ResourcesCompat import androidx.lifecycle.ViewModelProvider import com.google.android.material.button.MaterialButton -import org.suyu.suyu_emu.databinding.PageSetupBinding -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.model.SetupCallback -import org.suyu.suyu_emu.model.SetupPage -import org.suyu.suyu_emu.model.StepState -import org.suyu.suyu_emu.utils.ViewUtils -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.databinding.PageSetupBinding +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.model.SetupCallback +import dev.suyu.suyu_emu.model.SetupPage +import dev.suyu.suyu_emu.model.StepState +import dev.suyu.suyu_emu.utils.ViewUtils +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder class SetupAdapter(val activity: AppCompatActivity, pages: List) : AbstractListAdapter(pages) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard.kt similarity index 95% rename from src/android/app/src/main/java/org/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard.kt index 8558858d9f..8831c0d439 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.applets.keyboard +package dev.suyu.suyu_emu.applets.keyboard import android.content.Context import android.os.Handler @@ -13,9 +13,9 @@ import android.view.inputmethod.InputMethodManager import androidx.annotation.Keep import androidx.core.view.ViewCompat import java.io.Serializable -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.applets.keyboard.ui.KeyboardDialogFragment +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.applets.keyboard.ui.KeyboardDialogFragment @Keep object SoftwareKeyboard { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/applets/keyboard/ui/KeyboardDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/applets/keyboard/ui/KeyboardDialogFragment.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/applets/keyboard/ui/KeyboardDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/applets/keyboard/ui/KeyboardDialogFragment.kt index b80d9e0d04..c6ea6a8f67 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/applets/keyboard/ui/KeyboardDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/applets/keyboard/ui/KeyboardDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.applets.keyboard.ui +package dev.suyu.suyu_emu.applets.keyboard.ui import android.app.Dialog import android.content.DialogInterface @@ -10,11 +10,11 @@ import android.text.InputFilter import android.text.InputType import androidx.fragment.app.DialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.applets.keyboard.SoftwareKeyboard -import org.suyu.suyu_emu.applets.keyboard.SoftwareKeyboard.KeyboardConfig -import org.suyu.suyu_emu.databinding.DialogEditTextBinding -import org.suyu.suyu_emu.utils.SerializableHelper.serializable +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.applets.keyboard.SoftwareKeyboard +import dev.suyu.suyu_emu.applets.keyboard.SoftwareKeyboard.KeyboardConfig +import dev.suyu.suyu_emu.databinding.DialogEditTextBinding +import dev.suyu.suyu_emu.utils.SerializableHelper.serializable class KeyboardDialogFragment : DialogFragment() { private lateinit var binding: DialogEditTextBinding diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress.kt similarity index 84% rename from src/android/app/src/main/java/org/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress.kt index 80df698230..48dd975538 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress.kt @@ -1,15 +1,15 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.disk_shader_cache +package dev.suyu.suyu_emu.disk_shader_cache import androidx.annotation.Keep import androidx.lifecycle.ViewModelProvider -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.activities.EmulationActivity -import org.suyu.suyu_emu.model.EmulationViewModel -import org.suyu.suyu_emu.utils.Log +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.activities.EmulationActivity +import dev.suyu.suyu_emu.model.EmulationViewModel +import dev.suyu.suyu_emu.utils.Log @Keep object DiskShaderCacheProgress { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/DocumentProvider.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/DocumentProvider.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/DocumentProvider.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/DocumentProvider.kt index 3e434cdd66..9d77f36d54 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/DocumentProvider.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/DocumentProvider.kt @@ -4,7 +4,7 @@ // SPDX-License-Identifier: MPL-2.0 // Copyright © 2023 Skyline Team and Contributors (https://github.com/skyline-emu/) -package org.suyu.suyu_emu.features +package dev.suyu.suyu_emu.features import android.database.Cursor import android.database.MatrixCursor @@ -14,10 +14,10 @@ import android.provider.DocumentsContract import android.provider.DocumentsProvider import android.webkit.MimeTypeMap import java.io.* -import org.suyu.suyu_emu.BuildConfig -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.getPublicFilesDir +import dev.suyu.suyu_emu.BuildConfig +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.getPublicFilesDir class DocumentProvider : DocumentsProvider() { private val baseDirectory: File diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/NativeInput.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/NativeInput.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/NativeInput.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/NativeInput.kt index 9639a614ac..f9485c3642 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/NativeInput.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/NativeInput.kt @@ -2,15 +2,15 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input +package dev.suyu.suyu_emu.features.input -import org.suyu.suyu_emu.features.input.model.NativeButton -import org.suyu.suyu_emu.features.input.model.NativeAnalog -import org.suyu.suyu_emu.features.input.model.InputType -import org.suyu.suyu_emu.features.input.model.ButtonName -import org.suyu.suyu_emu.features.input.model.NpadStyleIndex -import org.suyu.suyu_emu.utils.NativeConfig -import org.suyu.suyu_emu.utils.ParamPackage +import dev.suyu.suyu_emu.features.input.model.NativeButton +import dev.suyu.suyu_emu.features.input.model.NativeAnalog +import dev.suyu.suyu_emu.features.input.model.InputType +import dev.suyu.suyu_emu.features.input.model.ButtonName +import dev.suyu.suyu_emu.features.input.model.NpadStyleIndex +import dev.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.ParamPackage import android.view.InputDevice object NativeInput { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/SuyuInputDevice.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/SuyuInputDevice.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/SuyuInputDevice.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/SuyuInputDevice.kt index 4e7fc4adf0..f04ebb5253 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/SuyuInputDevice.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/SuyuInputDevice.kt @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input +package dev.suyu.suyu_emu.features.input import android.view.InputDevice import androidx.annotation.Keep -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.utils.InputHandler.getGUID +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.utils.InputHandler.getGUID @Keep interface SuyuInputDevice { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/SuyuVibrator.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/SuyuVibrator.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/SuyuVibrator.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/SuyuVibrator.kt index 33cf4f5788..b1e3dad1a6 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/SuyuVibrator.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/SuyuVibrator.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input +package dev.suyu.suyu_emu.features.input import android.content.Context import android.os.Build @@ -13,7 +13,7 @@ import android.os.VibratorManager import android.view.InputDevice import androidx.annotation.Keep import androidx.annotation.RequiresApi -import org.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.SuyuApplication @Keep @Suppress("DEPRECATION") diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/AnalogDirection.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/AnalogDirection.kt similarity index 86% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/AnalogDirection.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/AnalogDirection.kt index ff4762c7d4..f2cf59a23c 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/AnalogDirection.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/AnalogDirection.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input.model +package dev.suyu.suyu_emu.features.input.model enum class AnalogDirection(val int: Int, val param: String) { Up(0, "up"), diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/ButtonName.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/ButtonName.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/ButtonName.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/ButtonName.kt index c33e986cdb..ccbb555bd3 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/ButtonName.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/ButtonName.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input.model +package dev.suyu.suyu_emu.features.input.model // Loosely matches the enum in common/input.h enum class ButtonName(val int: Int) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/InputType.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/InputType.kt similarity index 87% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/InputType.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/InputType.kt index 6d441f180a..1b93341e0d 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/InputType.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/InputType.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input.model +package dev.suyu.suyu_emu.features.input.model // Must match the corresponding enum in input_common/main.h enum class InputType(val int: Int) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NativeAnalog.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NativeAnalog.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NativeAnalog.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NativeAnalog.kt index cbddbadcc8..7d8cced220 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NativeAnalog.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NativeAnalog.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input.model +package dev.suyu.suyu_emu.features.input.model // Must match enum in src/common/settings_input.h enum class NativeAnalog(val int: Int) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NativeButton.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NativeButton.kt similarity index 93% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NativeButton.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NativeButton.kt index c290cea7ca..29ad0b7b97 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NativeButton.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NativeButton.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input.model +package dev.suyu.suyu_emu.features.input.model // Must match enum in src/common/settings_input.h enum class NativeButton(val int: Int) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NativeTrigger.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NativeTrigger.kt similarity index 85% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NativeTrigger.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NativeTrigger.kt index ac6583b28f..8ce026c19b 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NativeTrigger.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NativeTrigger.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input.model +package dev.suyu.suyu_emu.features.input.model // Must match enum in src/common/settings_input.h enum class NativeTrigger(val int: Int) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NpadStyleIndex.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NpadStyleIndex.kt similarity index 91% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NpadStyleIndex.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NpadStyleIndex.kt index 7bad46d728..a884de8de3 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/NpadStyleIndex.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/NpadStyleIndex.kt @@ -2,10 +2,10 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input.model +package dev.suyu.suyu_emu.features.input.model import androidx.annotation.StringRes -import org.suyu.suyu_emu.R +import dev.suyu.suyu_emu.R // Must match enum in src/core/hid/hid_types.h enum class NpadStyleIndex(val int: Int, @StringRes val nameId: Int = 0) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/PlayerInput.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/PlayerInput.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/PlayerInput.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/PlayerInput.kt index 35e600dbd0..d6c9178984 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/input/model/PlayerInput.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/input/model/PlayerInput.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.input.model +package dev.suyu.suyu_emu.features.input.model import androidx.annotation.Keep diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractBooleanSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractBooleanSetting.kt similarity index 83% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractBooleanSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractBooleanSetting.kt index 8266e3dbd1..4066805d12 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractBooleanSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractBooleanSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model interface AbstractBooleanSetting : AbstractSetting { fun getBoolean(needsGlobal: Boolean = false): Boolean diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractByteSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractByteSetting.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractByteSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractByteSetting.kt index 6ef8255341..d8cd03f295 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractByteSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractByteSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model interface AbstractByteSetting : AbstractSetting { fun getByte(needsGlobal: Boolean = false): Byte diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractFloatSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractFloatSetting.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractFloatSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractFloatSetting.kt index 5437a65ade..bd95009db8 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractFloatSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractFloatSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model interface AbstractFloatSetting : AbstractSetting { fun getFloat(needsGlobal: Boolean = false): Float diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractIntSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractIntSetting.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractIntSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractIntSetting.kt index 1d979d153d..c9269cde37 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractIntSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractIntSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model interface AbstractIntSetting : AbstractSetting { fun getInt(needsGlobal: Boolean = false): Int diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractLongSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractLongSetting.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractLongSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractLongSetting.kt index 22e94c10b8..b74a150c12 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractLongSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractLongSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model interface AbstractLongSetting : AbstractSetting { fun getLong(needsGlobal: Boolean = false): Long diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractSetting.kt similarity index 88% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractSetting.kt index f4cf067e65..41bbf62d46 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractSetting.kt @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.NativeConfig interface AbstractSetting { val key: String diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractShortSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractShortSetting.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractShortSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractShortSetting.kt index 4488802269..e8c3bcf9ab 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractShortSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractShortSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model interface AbstractShortSetting : AbstractSetting { fun getShort(needsGlobal: Boolean = false): Short diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractStringSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractStringSetting.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractStringSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractStringSetting.kt index 3afb1bc3a1..5820192b74 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/AbstractStringSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/AbstractStringSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model interface AbstractStringSetting : AbstractSetting { fun getString(needsGlobal: Boolean = false): String diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/BooleanSetting.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/BooleanSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/BooleanSetting.kt index 2e36e82b9a..2958f02ca1 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/BooleanSetting.kt @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.NativeConfig enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { AUDIO_MUTED("audio_muted"), diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/ByteSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/ByteSetting.kt similarity index 88% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/ByteSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/ByteSetting.kt index 9a3f966697..fe6f84a0f6 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/ByteSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/ByteSetting.kt @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.NativeConfig enum class ByteSetting(override val key: String) : AbstractByteSetting { AUDIO_VOLUME("volume"); diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/FloatSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/FloatSetting.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/FloatSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/FloatSetting.kt index 6d266cb5c8..a6d744d68b 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/FloatSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/FloatSetting.kt @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.NativeConfig enum class FloatSetting(override val key: String) : AbstractFloatSetting { // No float settings currently exist diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/IntSetting.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/IntSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/IntSetting.kt index bf62df3c28..4e9f0a00c4 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/IntSetting.kt @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.NativeConfig enum class IntSetting(override val key: String) : AbstractIntSetting { CPU_BACKEND("cpu_backend"), diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/LongSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/LongSetting.kt similarity index 88% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/LongSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/LongSetting.kt index 01f2e580ae..e6bc2116eb 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/LongSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/LongSetting.kt @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.NativeConfig enum class LongSetting(override val key: String) : AbstractLongSetting { CUSTOM_RTC("custom_rtc"); diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/Settings.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/Settings.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/Settings.kt index 2352c3824f..b4cfca4c77 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/Settings.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/Settings.kt @@ -1,10 +1,10 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication object Settings { enum class MenuTag(val titleId: Int = 0) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/ShortSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/ShortSetting.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/ShortSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/ShortSetting.kt index 45614501c3..2525e6d63a 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/ShortSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/ShortSetting.kt @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.NativeConfig enum class ShortSetting(override val key: String) : AbstractShortSetting { RENDERER_SPEED_LIMIT("speed_limit"); diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/StringSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/StringSetting.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/StringSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/StringSetting.kt index 3f40fedcce..61a169ae8a 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/StringSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/StringSetting.kt @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model +package dev.suyu.suyu_emu.features.settings.model -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.NativeConfig enum class StringSetting(override val key: String) : AbstractStringSetting { DRIVER_PATH("driver_path"), diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/AnalogInputSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/AnalogInputSetting.kt similarity index 72% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/AnalogInputSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/AnalogInputSetting.kt index 78103ba858..bea116f229 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/AnalogInputSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/AnalogInputSetting.kt @@ -2,14 +2,14 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.model.AnalogDirection -import org.suyu.suyu_emu.features.input.model.InputType -import org.suyu.suyu_emu.features.input.model.NativeAnalog -import org.suyu.suyu_emu.utils.ParamPackage +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.model.AnalogDirection +import dev.suyu.suyu_emu.features.input.model.InputType +import dev.suyu.suyu_emu.features.input.model.NativeAnalog +import dev.suyu.suyu_emu.utils.ParamPackage class AnalogInputSetting( override val playerIndex: Int, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/ButtonInputSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/ButtonInputSetting.kt similarity index 75% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/ButtonInputSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/ButtonInputSetting.kt index e586cedbb0..6279ef7b92 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/ButtonInputSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/ButtonInputSetting.kt @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.utils.ParamPackage -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.model.InputType -import org.suyu.suyu_emu.features.input.model.NativeButton +import dev.suyu.suyu_emu.utils.ParamPackage +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.model.InputType +import dev.suyu.suyu_emu.features.input.model.NativeButton class ButtonInputSetting( override val playerIndex: Int, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/DateTimeSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/DateTimeSetting.kt similarity index 84% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/DateTimeSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/DateTimeSetting.kt index 7ed6a721af..72fe741c0e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/DateTimeSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/DateTimeSetting.kt @@ -1,10 +1,10 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.settings.model.AbstractLongSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractLongSetting class DateTimeSetting( private val longSetting: AbstractLongSetting, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/HeaderSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/HeaderSetting.kt similarity index 85% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/HeaderSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/HeaderSetting.kt index da9b34e9be..df6bdfb129 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/HeaderSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/HeaderSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/InputProfileSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/InputProfileSetting.kt similarity index 85% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/InputProfileSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/InputProfileSetting.kt index 461588354a..708e0ae40f 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/InputProfileSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/InputProfileSetting.kt @@ -2,11 +2,11 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.utils.NativeConfig class InputProfileSetting(private val playerIndex: Int) : SettingsItem(emptySetting, R.string.profile, "", 0, "") { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/InputSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/InputSetting.kt similarity index 93% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/InputSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/InputSetting.kt index ac54cda377..417e8f2655 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/InputSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/InputSetting.kt @@ -2,15 +2,15 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.model.ButtonName -import org.suyu.suyu_emu.features.input.model.InputType -import org.suyu.suyu_emu.utils.ParamPackage +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.model.ButtonName +import dev.suyu.suyu_emu.features.input.model.InputType +import dev.suyu.suyu_emu.utils.ParamPackage sealed class InputSetting( @StringRes titleId: Int, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/IntSingleChoiceSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/IntSingleChoiceSetting.kt similarity index 90% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/IntSingleChoiceSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/IntSingleChoiceSetting.kt index ba43799254..f61a60be15 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/IntSingleChoiceSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/IntSingleChoiceSetting.kt @@ -1,10 +1,10 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.settings.model.AbstractIntSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractIntSetting class IntSingleChoiceSetting( private val intSetting: AbstractIntSetting, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/ModifierInputSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/ModifierInputSetting.kt similarity index 78% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/ModifierInputSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/ModifierInputSetting.kt index 4d1e2c6699..611160286e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/ModifierInputSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/ModifierInputSetting.kt @@ -2,13 +2,13 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.model.InputType -import org.suyu.suyu_emu.features.input.model.NativeAnalog -import org.suyu.suyu_emu.utils.ParamPackage +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.model.InputType +import dev.suyu.suyu_emu.features.input.model.NativeAnalog +import dev.suyu.suyu_emu.utils.ParamPackage class ModifierInputSetting( override val playerIndex: Int, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/RunnableSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/RunnableSetting.kt similarity index 91% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/RunnableSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/RunnableSetting.kt index b48e0ee4d1..8a7f88ebb5 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/RunnableSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/RunnableSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.DrawableRes import androidx.annotation.StringRes diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SettingsItem.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SettingsItem.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SettingsItem.kt index f59f4ebf53..ea59f5ff63 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SettingsItem.kt @@ -1,23 +1,23 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.model.NpadStyleIndex -import org.suyu.suyu_emu.features.settings.model.AbstractBooleanSetting -import org.suyu.suyu_emu.features.settings.model.AbstractSetting -import org.suyu.suyu_emu.features.settings.model.BooleanSetting -import org.suyu.suyu_emu.features.settings.model.ByteSetting -import org.suyu.suyu_emu.features.settings.model.IntSetting -import org.suyu.suyu_emu.features.settings.model.LongSetting -import org.suyu.suyu_emu.features.settings.model.ShortSetting -import org.suyu.suyu_emu.features.settings.model.StringSetting -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.model.NpadStyleIndex +import dev.suyu.suyu_emu.features.settings.model.AbstractBooleanSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractSetting +import dev.suyu.suyu_emu.features.settings.model.BooleanSetting +import dev.suyu.suyu_emu.features.settings.model.ByteSetting +import dev.suyu.suyu_emu.features.settings.model.IntSetting +import dev.suyu.suyu_emu.features.settings.model.LongSetting +import dev.suyu.suyu_emu.features.settings.model.ShortSetting +import dev.suyu.suyu_emu.features.settings.model.StringSetting +import dev.suyu.suyu_emu.utils.NativeConfig /** * ViewModel abstraction for an Item in the RecyclerView powering SettingsFragments. diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SingleChoiceSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SingleChoiceSetting.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SingleChoiceSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SingleChoiceSetting.kt index 4d0edda0ff..70fc58941f 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SingleChoiceSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SingleChoiceSetting.kt @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.ArrayRes import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.settings.model.AbstractIntSetting -import org.suyu.suyu_emu.features.settings.model.AbstractSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractIntSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractSetting class SingleChoiceSetting( setting: AbstractSetting, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SliderSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SliderSetting.kt similarity index 78% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SliderSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SliderSetting.kt index 45471a64e8..1ad5caeb7e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SliderSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SliderSetting.kt @@ -1,14 +1,14 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.settings.model.AbstractByteSetting -import org.suyu.suyu_emu.features.settings.model.AbstractFloatSetting -import org.suyu.suyu_emu.features.settings.model.AbstractIntSetting -import org.suyu.suyu_emu.features.settings.model.AbstractSetting -import org.suyu.suyu_emu.features.settings.model.AbstractShortSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractByteSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractFloatSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractIntSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractShortSetting import kotlin.math.roundToInt class SliderSetting( diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/StringInputSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/StringInputSetting.kt similarity index 86% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/StringInputSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/StringInputSetting.kt index f2dbeb2912..82c36b622d 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/StringInputSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/StringInputSetting.kt @@ -2,10 +2,10 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.settings.model.AbstractStringSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractStringSetting class StringInputSetting( setting: AbstractStringSetting, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/StringSingleChoiceSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/StringSingleChoiceSetting.kt similarity index 90% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/StringSingleChoiceSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/StringSingleChoiceSetting.kt index 2a35a1b425..f3556eb415 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/StringSingleChoiceSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/StringSingleChoiceSetting.kt @@ -1,10 +1,10 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.settings.model.AbstractStringSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractStringSetting class StringSingleChoiceSetting( private val stringSetting: AbstractStringSetting, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SubmenuSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SubmenuSetting.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SubmenuSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SubmenuSetting.kt index e381af10a3..c88a6014c1 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SubmenuSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SubmenuSetting.kt @@ -1,11 +1,11 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.settings.model.Settings +import dev.suyu.suyu_emu.features.settings.model.Settings class SubmenuSetting( @StringRes titleId: Int = 0, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SwitchSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SwitchSetting.kt similarity index 79% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SwitchSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SwitchSetting.kt index f7d4b73f91..afa83ccfc0 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/model/view/SwitchSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/model/view/SwitchSetting.kt @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.model.view +package dev.suyu.suyu_emu.features.settings.model.view import androidx.annotation.StringRes -import org.suyu.suyu_emu.features.settings.model.AbstractBooleanSetting -import org.suyu.suyu_emu.features.settings.model.AbstractIntSetting -import org.suyu.suyu_emu.features.settings.model.AbstractSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractBooleanSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractIntSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractSetting class SwitchSetting( setting: AbstractSetting, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/InputDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/InputDialogFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/InputDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/InputDialogFragment.kt index af7767af51..904fdeef15 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/InputDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/InputDialogFragment.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.app.Dialog import android.graphics.drawable.Animatable2 @@ -18,17 +18,17 @@ import android.view.ViewGroup import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.DialogMappingBinding -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.model.NativeAnalog -import org.suyu.suyu_emu.features.input.model.NativeButton -import org.suyu.suyu_emu.features.settings.model.view.AnalogInputSetting -import org.suyu.suyu_emu.features.settings.model.view.ButtonInputSetting -import org.suyu.suyu_emu.features.settings.model.view.InputSetting -import org.suyu.suyu_emu.features.settings.model.view.ModifierInputSetting -import org.suyu.suyu_emu.utils.InputHandler -import org.suyu.suyu_emu.utils.ParamPackage +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.DialogMappingBinding +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.model.NativeAnalog +import dev.suyu.suyu_emu.features.input.model.NativeButton +import dev.suyu.suyu_emu.features.settings.model.view.AnalogInputSetting +import dev.suyu.suyu_emu.features.settings.model.view.ButtonInputSetting +import dev.suyu.suyu_emu.features.settings.model.view.InputSetting +import dev.suyu.suyu_emu.features.settings.model.view.ModifierInputSetting +import dev.suyu.suyu_emu.utils.InputHandler +import dev.suyu.suyu_emu.utils.ParamPackage class InputDialogFragment : DialogFragment() { private var inputAccepted = false diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/InputProfileAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/InputProfileAdapter.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/InputProfileAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/InputProfileAdapter.kt index 693cb77cbb..2b4dd0f98e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/InputProfileAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/InputProfileAdapter.kt @@ -2,16 +2,16 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.adapters.AbstractListAdapter -import org.suyu.suyu_emu.databinding.ListItemInputProfileBinding -import org.suyu.suyu_emu.viewholder.AbstractViewHolder -import org.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.adapters.AbstractListAdapter +import dev.suyu.suyu_emu.databinding.ListItemInputProfileBinding +import dev.suyu.suyu_emu.viewholder.AbstractViewHolder +import dev.suyu.suyu_emu.R class InputProfileAdapter(options: List) : AbstractListAdapter>(options) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/InputProfileDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/InputProfileDialogFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/InputProfileDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/InputProfileDialogFragment.kt index 55acee9eda..aa37d86817 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/InputProfileDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/InputProfileDialogFragment.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.app.Dialog import android.os.Bundle @@ -14,11 +14,11 @@ import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.DialogInputProfilesBinding -import org.suyu.suyu_emu.features.settings.model.view.InputProfileSetting -import org.suyu.suyu_emu.fragments.MessageDialogFragment -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.DialogInputProfilesBinding +import dev.suyu.suyu_emu.features.settings.model.view.InputProfileSetting +import dev.suyu.suyu_emu.fragments.MessageDialogFragment +import dev.suyu.suyu_emu.utils.collect class InputProfileDialogFragment : DialogFragment() { private var position = 0 diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/NewInputProfileDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/NewInputProfileDialogFragment.kt similarity index 93% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/NewInputProfileDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/NewInputProfileDialogFragment.kt index e683caf190..abf02cf804 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/NewInputProfileDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/NewInputProfileDialogFragment.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.app.Dialog import android.os.Bundle @@ -10,9 +10,9 @@ import android.widget.Toast import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.databinding.DialogEditTextBinding -import org.suyu.suyu_emu.features.settings.model.view.InputProfileSetting -import org.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.DialogEditTextBinding +import dev.suyu.suyu_emu.features.settings.model.view.InputProfileSetting +import dev.suyu.suyu_emu.R class NewInputProfileDialogFragment : DialogFragment() { private var position = 0 diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsActivity.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsActivity.kt similarity index 93% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsActivity.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsActivity.kt index aaa621a1da..aa33a4afd6 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsActivity.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsActivity.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.os.Bundle import android.view.View @@ -16,14 +16,14 @@ import androidx.core.view.WindowInsetsCompat import androidx.navigation.fragment.NavHostFragment import androidx.navigation.navArgs import com.google.android.material.color.MaterialColors -import org.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.NativeLibrary import java.io.IOException -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.ActivitySettingsBinding -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.settings.utils.SettingsFile -import org.suyu.suyu_emu.fragments.ResetSettingsDialogFragment -import org.suyu.suyu_emu.utils.* +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.ActivitySettingsBinding +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.settings.utils.SettingsFile +import dev.suyu.suyu_emu.fragments.ResetSettingsDialogFragment +import dev.suyu.suyu_emu.utils.* class SettingsActivity : AppCompatActivity() { private lateinit var binding: ActivitySettingsBinding diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsAdapter.kt similarity index 95% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsAdapter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsAdapter.kt index 6693e16096..e72eb6a67e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsAdapter.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.content.Context import android.icu.util.Calendar @@ -20,18 +20,18 @@ import androidx.recyclerview.widget.ListAdapter import com.google.android.material.datepicker.MaterialDatePicker import com.google.android.material.timepicker.MaterialTimePicker import com.google.android.material.timepicker.TimeFormat -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SettingsNavigationDirections -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.databinding.ListItemSettingInputBinding -import org.suyu.suyu_emu.databinding.ListItemSettingSwitchBinding -import org.suyu.suyu_emu.databinding.ListItemSettingsHeaderBinding -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.model.AnalogDirection -import org.suyu.suyu_emu.features.settings.model.AbstractIntSetting -import org.suyu.suyu_emu.features.settings.model.view.* -import org.suyu.suyu_emu.features.settings.ui.viewholder.* -import org.suyu.suyu_emu.utils.ParamPackage +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SettingsNavigationDirections +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.databinding.ListItemSettingInputBinding +import dev.suyu.suyu_emu.databinding.ListItemSettingSwitchBinding +import dev.suyu.suyu_emu.databinding.ListItemSettingsHeaderBinding +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.model.AnalogDirection +import dev.suyu.suyu_emu.features.settings.model.AbstractIntSetting +import dev.suyu.suyu_emu.features.settings.model.view.* +import dev.suyu.suyu_emu.features.settings.ui.viewholder.* +import dev.suyu.suyu_emu.utils.ParamPackage class SettingsAdapter( private val fragment: Fragment, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsDialogFragment.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsDialogFragment.kt index 8d22dc1d55..11b46e9338 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.app.Dialog import android.content.DialogInterface @@ -13,21 +13,21 @@ import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.slider.Slider -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.DialogEditTextBinding -import org.suyu.suyu_emu.databinding.DialogSliderBinding -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.model.AnalogDirection -import org.suyu.suyu_emu.features.settings.model.view.AnalogInputSetting -import org.suyu.suyu_emu.features.settings.model.view.ButtonInputSetting -import org.suyu.suyu_emu.features.settings.model.view.IntSingleChoiceSetting -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.model.view.SingleChoiceSetting -import org.suyu.suyu_emu.features.settings.model.view.SliderSetting -import org.suyu.suyu_emu.features.settings.model.view.StringInputSetting -import org.suyu.suyu_emu.features.settings.model.view.StringSingleChoiceSetting -import org.suyu.suyu_emu.utils.ParamPackage -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.DialogEditTextBinding +import dev.suyu.suyu_emu.databinding.DialogSliderBinding +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.model.AnalogDirection +import dev.suyu.suyu_emu.features.settings.model.view.AnalogInputSetting +import dev.suyu.suyu_emu.features.settings.model.view.ButtonInputSetting +import dev.suyu.suyu_emu.features.settings.model.view.IntSingleChoiceSetting +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.model.view.SingleChoiceSetting +import dev.suyu.suyu_emu.features.settings.model.view.SliderSetting +import dev.suyu.suyu_emu.features.settings.model.view.StringInputSetting +import dev.suyu.suyu_emu.features.settings.model.view.StringSingleChoiceSetting +import dev.suyu.suyu_emu.utils.ParamPackage +import dev.suyu.suyu_emu.utils.collect class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener { private var type = 0 diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsFragment.kt index 8e7896780a..4e53f925ac 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.annotation.SuppressLint import android.os.Bundle @@ -17,13 +17,13 @@ import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.transition.MaterialSharedAxis -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.FragmentSettingsBinding -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.settings.model.Settings -import org.suyu.suyu_emu.fragments.MessageDialogFragment -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.FragmentSettingsBinding +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.settings.model.Settings +import dev.suyu.suyu_emu.fragments.MessageDialogFragment +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.utils.collect class SettingsFragment : Fragment() { private lateinit var presenter: SettingsFragmentPresenter diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsFragmentPresenter.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsFragmentPresenter.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 876725a35e..0b22a5c063 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -1,32 +1,32 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.annotation.SuppressLint import android.os.Build import android.widget.Toast -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.model.AnalogDirection -import org.suyu.suyu_emu.features.input.model.NativeAnalog -import org.suyu.suyu_emu.features.input.model.NativeButton -import org.suyu.suyu_emu.features.input.model.NpadStyleIndex -import org.suyu.suyu_emu.features.settings.model.AbstractBooleanSetting -import org.suyu.suyu_emu.features.settings.model.AbstractIntSetting -import org.suyu.suyu_emu.features.settings.model.BooleanSetting -import org.suyu.suyu_emu.features.settings.model.ByteSetting -import org.suyu.suyu_emu.features.settings.model.IntSetting -import org.suyu.suyu_emu.features.settings.model.LongSetting -import org.suyu.suyu_emu.features.settings.model.Settings -import org.suyu.suyu_emu.features.settings.model.Settings.MenuTag -import org.suyu.suyu_emu.features.settings.model.ShortSetting -import org.suyu.suyu_emu.features.settings.model.StringSetting -import org.suyu.suyu_emu.features.settings.model.view.* -import org.suyu.suyu_emu.utils.InputHandler -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.model.AnalogDirection +import dev.suyu.suyu_emu.features.input.model.NativeAnalog +import dev.suyu.suyu_emu.features.input.model.NativeButton +import dev.suyu.suyu_emu.features.input.model.NpadStyleIndex +import dev.suyu.suyu_emu.features.settings.model.AbstractBooleanSetting +import dev.suyu.suyu_emu.features.settings.model.AbstractIntSetting +import dev.suyu.suyu_emu.features.settings.model.BooleanSetting +import dev.suyu.suyu_emu.features.settings.model.ByteSetting +import dev.suyu.suyu_emu.features.settings.model.IntSetting +import dev.suyu.suyu_emu.features.settings.model.LongSetting +import dev.suyu.suyu_emu.features.settings.model.Settings +import dev.suyu.suyu_emu.features.settings.model.Settings.MenuTag +import dev.suyu.suyu_emu.features.settings.model.ShortSetting +import dev.suyu.suyu_emu.features.settings.model.StringSetting +import dev.suyu.suyu_emu.features.settings.model.view.* +import dev.suyu.suyu_emu.utils.InputHandler +import dev.suyu.suyu_emu.utils.NativeConfig class SettingsFragmentPresenter( private val settingsViewModel: SettingsViewModel, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsSearchFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsSearchFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsSearchFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsSearchFragment.kt index bab4765b5a..2cd10632bd 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsSearchFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsSearchFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import android.content.Context import android.os.Bundle @@ -19,13 +19,13 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.divider.MaterialDividerItemDecoration import com.google.android.material.transition.MaterialSharedAxis import info.debatty.java.stringsimilarity.Cosine -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.FragmentSettingsSearchBinding -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.utils.NativeConfig -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.FragmentSettingsSearchBinding +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.utils.collect class SettingsSearchFragment : Fragment() { private var _binding: FragmentSettingsSearchBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsViewModel.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsViewModel.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsViewModel.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsViewModel.kt index e99dec076d..7f2faa336f 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/SettingsViewModel.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/SettingsViewModel.kt @@ -1,18 +1,18 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui +package dev.suyu.suyu_emu.features.settings.ui import androidx.lifecycle.ViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.model.Game -import org.suyu.suyu_emu.utils.InputHandler -import org.suyu.suyu_emu.utils.ParamPackage +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.utils.InputHandler +import dev.suyu.suyu_emu.utils.ParamPackage class SettingsViewModel : ViewModel() { var game: Game? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt similarity index 82% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt index a996f044f9..1581fea850 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View import java.time.Instant @@ -9,11 +9,11 @@ import java.time.ZoneId import java.time.ZonedDateTime import java.time.format.DateTimeFormatter import java.time.format.FormatStyle -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.features.settings.model.view.DateTimeSetting -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.features.settings.model.view.DateTimeSetting +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/HeaderViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/HeaderViewHolder.kt similarity index 70% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/HeaderViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/HeaderViewHolder.kt index 7b9c8303d4..8768a387dd 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/HeaderViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/HeaderViewHolder.kt @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View -import org.suyu.suyu_emu.databinding.ListItemSettingsHeaderBinding -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.databinding.ListItemSettingsHeaderBinding +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter class HeaderViewHolder(val binding: ListItemSettingsHeaderBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt similarity index 72% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt index 72c27b668a..ea5ea262cc 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt @@ -2,15 +2,15 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.features.settings.model.view.InputProfileSetting -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.features.settings.model.view.InputProfileSetting +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible class InputProfileViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/InputViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/InputViewHolder.kt similarity index 76% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/InputViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/InputViewHolder.kt index d66e4e7581..9260a90c36 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/InputViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/InputViewHolder.kt @@ -2,18 +2,18 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View -import org.suyu.suyu_emu.databinding.ListItemSettingInputBinding -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.settings.model.view.AnalogInputSetting -import org.suyu.suyu_emu.features.settings.model.view.ButtonInputSetting -import org.suyu.suyu_emu.features.settings.model.view.InputSetting -import org.suyu.suyu_emu.features.settings.model.view.ModifierInputSetting -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.databinding.ListItemSettingInputBinding +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.settings.model.view.AnalogInputSetting +import dev.suyu.suyu_emu.features.settings.model.view.ButtonInputSetting +import dev.suyu.suyu_emu.features.settings.model.view.InputSetting +import dev.suyu.suyu_emu.features.settings.model.view.ModifierInputSetting +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible class InputViewHolder(val binding: ListItemSettingInputBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt similarity index 79% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt index f210925fd2..886ea6adce 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt @@ -1,15 +1,15 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View import androidx.core.content.res.ResourcesCompat -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.features.settings.model.view.RunnableSetting -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.features.settings.model.view.RunnableSetting +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SettingViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SettingViewHolder.kt similarity index 84% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SettingViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SettingViewHolder.kt index 93b0967462..c0d467ef92 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SettingViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SettingViewHolder.kt @@ -1,14 +1,14 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View import androidx.recyclerview.widget.RecyclerView -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.databinding.ListItemSettingSwitchBinding -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.databinding.ListItemSettingSwitchBinding +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter abstract class SettingViewHolder(itemView: View, protected val adapter: SettingsAdapter) : RecyclerView.ViewHolder(itemView), View.OnClickListener, View.OnLongClickListener { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt similarity index 85% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt index f8b891c94a..450424503e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt @@ -1,16 +1,16 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.features.settings.model.view.IntSingleChoiceSetting -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.model.view.SingleChoiceSetting -import org.suyu.suyu_emu.features.settings.model.view.StringSingleChoiceSetting -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.features.settings.model.view.IntSingleChoiceSetting +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.model.view.SingleChoiceSetting +import dev.suyu.suyu_emu.features.settings.model.view.StringSingleChoiceSetting +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SliderViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SliderViewHolder.kt similarity index 79% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SliderViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SliderViewHolder.kt index 160dc33b75..3d9ef7caf7 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SliderViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SliderViewHolder.kt @@ -1,15 +1,15 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.model.view.SliderSetting -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.model.view.SliderSetting +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/StringInputViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/StringInputViewHolder.kt similarity index 79% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/StringInputViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/StringInputViewHolder.kt index 3acc7248cd..63ce59a84b 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/StringInputViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/StringInputViewHolder.kt @@ -2,14 +2,14 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.model.view.StringInputSetting -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.model.view.StringInputSetting +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible class StringInputViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt similarity index 78% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt index 3701f0f46e..38102d672e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt @@ -1,15 +1,15 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View import androidx.core.content.res.ResourcesCompat -import org.suyu.suyu_emu.databinding.ListItemSettingBinding -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.model.view.SubmenuSetting -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.databinding.ListItemSettingBinding +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.model.view.SubmenuSetting +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt similarity index 81% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt index 93e50f381b..4b45251298 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt @@ -1,15 +1,15 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.ui.viewholder +package dev.suyu.suyu_emu.features.settings.ui.viewholder import android.view.View import android.widget.CompoundButton -import org.suyu.suyu_emu.databinding.ListItemSettingSwitchBinding -import org.suyu.suyu_emu.features.settings.model.view.SettingsItem -import org.suyu.suyu_emu.features.settings.model.view.SwitchSetting -import org.suyu.suyu_emu.features.settings.ui.SettingsAdapter -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.databinding.ListItemSettingSwitchBinding +import dev.suyu.suyu_emu.features.settings.model.view.SettingsItem +import dev.suyu.suyu_emu.features.settings.model.view.SwitchSetting +import dev.suyu.suyu_emu.features.settings.ui.SettingsAdapter +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/utils/SettingsFile.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/utils/SettingsFile.kt similarity index 77% rename from src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/utils/SettingsFile.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/utils/SettingsFile.kt index 3c05c2c219..3532cdef87 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/features/settings/utils/SettingsFile.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/features/settings/utils/SettingsFile.kt @@ -1,14 +1,14 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.features.settings.utils +package dev.suyu.suyu_emu.features.settings.utils import android.net.Uri -import org.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.model.Game import java.io.* -import org.suyu.suyu_emu.utils.DirectoryInitialization -import org.suyu.suyu_emu.utils.FileUtil -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.DirectoryInitialization +import dev.suyu.suyu_emu.utils.FileUtil +import dev.suyu.suyu_emu.utils.NativeConfig /** * Contains static methods for interacting with .ini files in which settings are stored. diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AboutFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AboutFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AboutFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AboutFragment.kt index 66b4fd5604..5902a997aa 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AboutFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AboutFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.content.ClipData import android.content.ClipboardManager @@ -21,11 +21,11 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import com.google.android.material.transition.MaterialSharedAxis -import org.suyu.suyu_emu.BuildConfig -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.FragmentAboutBinding -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.BuildConfig +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.FragmentAboutBinding +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins class AboutFragment : Fragment() { private var _binding: FragmentAboutBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AddGameFolderDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AddGameFolderDialogFragment.kt similarity index 88% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AddGameFolderDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AddGameFolderDialogFragment.kt index bfc06a31c9..6e75e5d139 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AddGameFolderDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AddGameFolderDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.content.DialogInterface @@ -10,11 +10,11 @@ import android.os.Bundle import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.DialogAddFolderBinding -import org.suyu.suyu_emu.model.GameDir -import org.suyu.suyu_emu.model.GamesViewModel -import org.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.DialogAddFolderBinding +import dev.suyu.suyu_emu.model.GameDir +import dev.suyu.suyu_emu.model.GamesViewModel +import dev.suyu.suyu_emu.model.HomeViewModel class AddGameFolderDialogFragment : DialogFragment() { private val homeViewModel: HomeViewModel by activityViewModels() diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AddonsFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AddonsFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AddonsFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AddonsFragment.kt index 825b0869de..7d2b9a2f27 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AddonsFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AddonsFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.content.Intent import android.os.Bundle @@ -19,16 +19,15 @@ import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.transition.MaterialSharedAxis -import kotlinx.coroutines.launch -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.adapters.AddonAdapter -import org.suyu.suyu_emu.databinding.FragmentAddonsBinding -import org.suyu.suyu_emu.model.AddonViewModel -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.utils.AddonUtil -import org.suyu.suyu_emu.utils.FileUtil.copyFilesTo -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.adapters.AddonAdapter +import dev.suyu.suyu_emu.databinding.FragmentAddonsBinding +import dev.suyu.suyu_emu.model.AddonViewModel +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.utils.AddonUtil +import dev.suyu.suyu_emu.utils.FileUtil.copyFilesTo +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.utils.collect import java.io.File class AddonsFragment : Fragment() { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AppletLauncherFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AppletLauncherFragment.kt similarity index 91% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AppletLauncherFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AppletLauncherFragment.kt index 138e5074af..622ef144a0 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/AppletLauncherFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/AppletLauncherFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.os.Bundle import android.view.LayoutInflater @@ -15,13 +15,13 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.transition.MaterialSharedAxis -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.adapters.AppletAdapter -import org.suyu.suyu_emu.databinding.FragmentAppletLauncherBinding -import org.suyu.suyu_emu.model.Applet -import org.suyu.suyu_emu.model.AppletInfo -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.adapters.AppletAdapter +import dev.suyu.suyu_emu.databinding.FragmentAppletLauncherBinding +import dev.suyu.suyu_emu.model.Applet +import dev.suyu.suyu_emu.model.AppletInfo +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins class AppletLauncherFragment : Fragment() { private var _binding: FragmentAppletLauncherBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/CabinetLauncherDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/CabinetLauncherDialogFragment.kt similarity index 86% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/CabinetLauncherDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/CabinetLauncherDialogFragment.kt index dce2c8ca1f..8be5d21ea0 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/CabinetLauncherDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/CabinetLauncherDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.os.Bundle @@ -11,9 +11,9 @@ import android.view.ViewGroup import androidx.fragment.app.DialogFragment import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.adapters.CabinetLauncherDialogAdapter -import org.suyu.suyu_emu.databinding.DialogListBinding +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.adapters.CabinetLauncherDialogAdapter +import dev.suyu.suyu_emu.databinding.DialogListBinding class CabinetLauncherDialogFragment : DialogFragment() { private lateinit var binding: DialogListBinding diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/ContentTypeSelectionDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/ContentTypeSelectionDialogFragment.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/ContentTypeSelectionDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/ContentTypeSelectionDialogFragment.kt index 5bbf751a3a..a11e058a73 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/ContentTypeSelectionDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/ContentTypeSelectionDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.content.DialogInterface @@ -10,10 +10,10 @@ import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import androidx.preference.PreferenceManager import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.model.AddonViewModel -import org.suyu.suyu_emu.ui.main.MainActivity +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.model.AddonViewModel +import dev.suyu.suyu_emu.ui.main.MainActivity class ContentTypeSelectionDialogFragment : DialogFragment() { private val addonViewModel: AddonViewModel by activityViewModels() diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/CoreErrorDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/CoreErrorDialogFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/CoreErrorDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/CoreErrorDialogFragment.kt index 16f3e8b08f..bcba2b9750 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/CoreErrorDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/CoreErrorDialogFragment.kt @@ -2,15 +2,15 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.content.DialogInterface import android.os.Bundle import androidx.fragment.app.DialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R class CoreErrorDialogFragment : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/DriverManagerFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/DriverManagerFragment.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/DriverManagerFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/DriverManagerFragment.kt index 812037563b..1645400b41 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/DriverManagerFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/DriverManagerFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.os.Bundle import android.view.LayoutInflater @@ -18,20 +18,19 @@ import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.transition.MaterialSharedAxis import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.adapters.DriverAdapter -import org.suyu.suyu_emu.databinding.FragmentDriverManagerBinding -import org.suyu.suyu_emu.features.settings.model.StringSetting -import org.suyu.suyu_emu.model.Driver.Companion.toDriver -import org.suyu.suyu_emu.model.DriverViewModel -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.utils.FileUtil -import org.suyu.suyu_emu.utils.GpuDriverHelper -import org.suyu.suyu_emu.utils.NativeConfig -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.adapters.DriverAdapter +import dev.suyu.suyu_emu.databinding.FragmentDriverManagerBinding +import dev.suyu.suyu_emu.features.settings.model.StringSetting +import dev.suyu.suyu_emu.model.Driver.Companion.toDriver +import dev.suyu.suyu_emu.model.DriverViewModel +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.utils.FileUtil +import dev.suyu.suyu_emu.utils.GpuDriverHelper +import dev.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.utils.collect import java.io.File import java.io.IOException diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/DriversLoadingDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/DriversLoadingDialogFragment.kt similarity index 87% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/DriversLoadingDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/DriversLoadingDialogFragment.kt index 993eb015d7..6f97d5a4eb 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/DriversLoadingDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/DriversLoadingDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.os.Bundle @@ -11,10 +11,10 @@ import android.view.ViewGroup import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.DialogProgressBarBinding -import org.suyu.suyu_emu.model.DriverViewModel -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.DialogProgressBarBinding +import dev.suyu.suyu_emu.model.DriverViewModel +import dev.suyu.suyu_emu.utils.collect class DriversLoadingDialogFragment : DialogFragment() { private val driverViewModel: DriverViewModel by activityViewModels() diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/EarlyAccessFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/EarlyAccessFragment.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/EarlyAccessFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/EarlyAccessFragment.kt index 7eebf77159..28215693b6 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/EarlyAccessFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/EarlyAccessFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.content.Intent import android.net.Uri @@ -16,10 +16,10 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import com.google.android.material.transition.MaterialSharedAxis -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.FragmentEarlyAccessBinding -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.FragmentEarlyAccessBinding +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins class EarlyAccessFragment : Fragment() { private var _binding: FragmentEarlyAccessBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/EmulationFragment.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/EmulationFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/EmulationFragment.kt index 62fbcaf629..79a7078e53 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/EmulationFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.annotation.SuppressLint import android.app.AlertDialog @@ -39,25 +39,25 @@ import androidx.window.layout.WindowInfoTracker import androidx.window.layout.WindowLayoutInfo import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.slider.Slider -import org.suyu.suyu_emu.HomeNavigationDirections -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.activities.EmulationActivity -import org.suyu.suyu_emu.databinding.DialogOverlayAdjustBinding -import org.suyu.suyu_emu.databinding.FragmentEmulationBinding -import org.suyu.suyu_emu.features.settings.model.BooleanSetting -import org.suyu.suyu_emu.features.settings.model.IntSetting -import org.suyu.suyu_emu.features.settings.model.Settings -import org.suyu.suyu_emu.features.settings.model.Settings.EmulationOrientation -import org.suyu.suyu_emu.features.settings.model.Settings.EmulationVerticalAlignment -import org.suyu.suyu_emu.features.settings.utils.SettingsFile -import org.suyu.suyu_emu.model.DriverViewModel -import org.suyu.suyu_emu.model.Game -import org.suyu.suyu_emu.model.EmulationViewModel -import org.suyu.suyu_emu.overlay.model.OverlayControl -import org.suyu.suyu_emu.overlay.model.OverlayLayout -import org.suyu.suyu_emu.utils.* -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.HomeNavigationDirections +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.activities.EmulationActivity +import dev.suyu.suyu_emu.databinding.DialogOverlayAdjustBinding +import dev.suyu.suyu_emu.databinding.FragmentEmulationBinding +import dev.suyu.suyu_emu.features.settings.model.BooleanSetting +import dev.suyu.suyu_emu.features.settings.model.IntSetting +import dev.suyu.suyu_emu.features.settings.model.Settings +import dev.suyu.suyu_emu.features.settings.model.Settings.EmulationOrientation +import dev.suyu.suyu_emu.features.settings.model.Settings.EmulationVerticalAlignment +import dev.suyu.suyu_emu.features.settings.utils.SettingsFile +import dev.suyu.suyu_emu.model.DriverViewModel +import dev.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.model.EmulationViewModel +import dev.suyu.suyu_emu.overlay.model.OverlayControl +import dev.suyu.suyu_emu.overlay.model.OverlayLayout +import dev.suyu.suyu_emu.utils.* +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible import java.lang.NullPointerException class EmulationFragment : Fragment(), SurfaceHolder.Callback { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GameFolderPropertiesDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GameFolderPropertiesDialogFragment.kt similarity index 88% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GameFolderPropertiesDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GameFolderPropertiesDialogFragment.kt index e65f0f5e6c..f40c4daaae 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GameFolderPropertiesDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GameFolderPropertiesDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.content.DialogInterface @@ -9,12 +9,12 @@ import android.os.Bundle import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.DialogFolderPropertiesBinding -import org.suyu.suyu_emu.model.GameDir -import org.suyu.suyu_emu.model.GamesViewModel -import org.suyu.suyu_emu.utils.NativeConfig -import org.suyu.suyu_emu.utils.SerializableHelper.parcelable +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.DialogFolderPropertiesBinding +import dev.suyu.suyu_emu.model.GameDir +import dev.suyu.suyu_emu.model.GamesViewModel +import dev.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.SerializableHelper.parcelable class GameFolderPropertiesDialogFragment : DialogFragment() { private val gamesViewModel: GamesViewModel by activityViewModels() diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GameFoldersFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GameFoldersFragment.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GameFoldersFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GameFoldersFragment.kt index 7b9ccce0a1..198afc26a1 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GameFoldersFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GameFoldersFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.content.Intent import android.os.Bundle @@ -16,15 +16,14 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.transition.MaterialSharedAxis -import kotlinx.coroutines.launch -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.adapters.FolderAdapter -import org.suyu.suyu_emu.databinding.FragmentFoldersBinding -import org.suyu.suyu_emu.model.GamesViewModel -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.ui.main.MainActivity -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.adapters.FolderAdapter +import dev.suyu.suyu_emu.databinding.FragmentFoldersBinding +import dev.suyu.suyu_emu.model.GamesViewModel +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.ui.main.MainActivity +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.utils.collect class GameFoldersFragment : Fragment() { private var _binding: FragmentFoldersBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GameInfoFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GameInfoFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GameInfoFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GameInfoFragment.kt index 16901fead4..743389016f 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GameInfoFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GameInfoFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.content.ClipData import android.content.ClipboardManager @@ -21,14 +21,14 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs import com.google.android.material.transition.MaterialSharedAxis -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.FragmentGameInfoBinding -import org.suyu.suyu_emu.model.GameVerificationResult -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.utils.GameMetadata -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.FragmentGameInfoBinding +import dev.suyu.suyu_emu.model.GameVerificationResult +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.utils.GameMetadata +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins class GameInfoFragment : Fragment() { private var _binding: FragmentGameInfoBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GamePropertiesFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GamePropertiesFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GamePropertiesFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GamePropertiesFragment.kt index e56b186d06..751aa29a3f 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/GamePropertiesFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/GamePropertiesFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.content.pm.ShortcutInfo import android.content.pm.ShortcutManager @@ -24,27 +24,27 @@ import com.google.android.material.transition.MaterialSharedAxis import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.suyu.suyu_emu.HomeNavigationDirections -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.adapters.GamePropertiesAdapter -import org.suyu.suyu_emu.databinding.FragmentGamePropertiesBinding -import org.suyu.suyu_emu.features.settings.model.Settings -import org.suyu.suyu_emu.model.DriverViewModel -import org.suyu.suyu_emu.model.GameProperty -import org.suyu.suyu_emu.model.GamesViewModel -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.model.InstallableProperty -import org.suyu.suyu_emu.model.SubmenuProperty -import org.suyu.suyu_emu.model.TaskState -import org.suyu.suyu_emu.utils.DirectoryInitialization -import org.suyu.suyu_emu.utils.FileUtil -import org.suyu.suyu_emu.utils.GameIconUtils -import org.suyu.suyu_emu.utils.GpuDriverHelper -import org.suyu.suyu_emu.utils.MemoryUtil -import org.suyu.suyu_emu.utils.ViewUtils.marquee -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.HomeNavigationDirections +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.adapters.GamePropertiesAdapter +import dev.suyu.suyu_emu.databinding.FragmentGamePropertiesBinding +import dev.suyu.suyu_emu.features.settings.model.Settings +import dev.suyu.suyu_emu.model.DriverViewModel +import dev.suyu.suyu_emu.model.GameProperty +import dev.suyu.suyu_emu.model.GamesViewModel +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.model.InstallableProperty +import dev.suyu.suyu_emu.model.SubmenuProperty +import dev.suyu.suyu_emu.model.TaskState +import dev.suyu.suyu_emu.utils.DirectoryInitialization +import dev.suyu.suyu_emu.utils.FileUtil +import dev.suyu.suyu_emu.utils.GameIconUtils +import dev.suyu.suyu_emu.utils.GpuDriverHelper +import dev.suyu.suyu_emu.utils.MemoryUtil +import dev.suyu.suyu_emu.utils.ViewUtils.marquee +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.utils.collect import java.io.BufferedOutputStream import java.io.File diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/HomeSettingsFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/HomeSettingsFragment.kt similarity index 95% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/HomeSettingsFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/HomeSettingsFragment.kt index 790ca7a54b..6b80f7ee79 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/HomeSettingsFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/HomeSettingsFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.Manifest import android.content.ActivityNotFoundException @@ -27,23 +27,22 @@ import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.transition.MaterialSharedAxis -import org.suyu.suyu_emu.BuildConfig -import org.suyu.suyu_emu.HomeNavigationDirections -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.adapters.HomeSettingAdapter -import org.suyu.suyu_emu.databinding.FragmentHomeSettingsBinding -import org.suyu.suyu_emu.features.DocumentProvider -import org.suyu.suyu_emu.features.settings.model.Settings -import org.suyu.suyu_emu.model.DriverViewModel -import org.suyu.suyu_emu.model.HomeSetting -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.ui.main.MainActivity -import org.suyu.suyu_emu.utils.FileUtil -import org.suyu.suyu_emu.utils.GpuDriverHelper -import org.suyu.suyu_emu.utils.Log -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.HomeNavigationDirections +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.adapters.HomeSettingAdapter +import dev.suyu.suyu_emu.databinding.FragmentHomeSettingsBinding +import dev.suyu.suyu_emu.features.DocumentProvider +import dev.suyu.suyu_emu.features.settings.model.Settings +import dev.suyu.suyu_emu.model.DriverViewModel +import dev.suyu.suyu_emu.model.HomeSetting +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.ui.main.MainActivity +import dev.suyu.suyu_emu.utils.FileUtil +import dev.suyu.suyu_emu.utils.GpuDriverHelper +import dev.suyu.suyu_emu.utils.Log +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins class HomeSettingsFragment : Fragment() { private var _binding: FragmentHomeSettingsBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/InstallableFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/InstallableFragment.kt similarity index 95% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/InstallableFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/InstallableFragment.kt index 4a4dd11f4f..659811e33d 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/InstallableFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/InstallableFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.os.Bundle import android.view.LayoutInflater @@ -18,21 +18,20 @@ import androidx.navigation.findNavController import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.transition.MaterialSharedAxis import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.adapters.InstallableAdapter -import org.suyu.suyu_emu.databinding.FragmentInstallablesBinding -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.model.Installable -import org.suyu.suyu_emu.model.TaskState -import org.suyu.suyu_emu.ui.main.MainActivity -import org.suyu.suyu_emu.utils.DirectoryInitialization -import org.suyu.suyu_emu.utils.FileUtil -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.adapters.InstallableAdapter +import dev.suyu.suyu_emu.databinding.FragmentInstallablesBinding +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.model.Installable +import dev.suyu.suyu_emu.model.TaskState +import dev.suyu.suyu_emu.ui.main.MainActivity +import dev.suyu.suyu_emu.utils.DirectoryInitialization +import dev.suyu.suyu_emu.utils.FileUtil +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.utils.collect import java.io.BufferedOutputStream import java.io.File import java.math.BigInteger diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/LaunchGameDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/LaunchGameDialogFragment.kt similarity index 90% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/LaunchGameDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/LaunchGameDialogFragment.kt index 4cc4f62407..bd78b3480c 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/LaunchGameDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/LaunchGameDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.content.DialogInterface @@ -9,10 +9,10 @@ import android.os.Bundle import androidx.fragment.app.DialogFragment import androidx.navigation.fragment.findNavController import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.HomeNavigationDirections -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.model.Game -import org.suyu.suyu_emu.utils.SerializableHelper.parcelable +import dev.suyu.suyu_emu.HomeNavigationDirections +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.utils.SerializableHelper.parcelable class LaunchGameDialogFragment : DialogFragment() { private var selectedItem = 1 diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/LicenseBottomSheetDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/LicenseBottomSheetDialogFragment.kt similarity index 90% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/LicenseBottomSheetDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/LicenseBottomSheetDialogFragment.kt index 76e34b62da..f473acb881 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/LicenseBottomSheetDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/LicenseBottomSheetDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.os.Bundle import android.view.LayoutInflater @@ -9,9 +9,9 @@ import android.view.View import android.view.ViewGroup import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import org.suyu.suyu_emu.databinding.DialogLicenseBinding -import org.suyu.suyu_emu.model.License -import org.suyu.suyu_emu.utils.SerializableHelper.parcelable +import dev.suyu.suyu_emu.databinding.DialogLicenseBinding +import dev.suyu.suyu_emu.model.License +import dev.suyu.suyu_emu.utils.SerializableHelper.parcelable class LicenseBottomSheetDialogFragment : BottomSheetDialogFragment() { private var _binding: DialogLicenseBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/LicensesFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/LicensesFragment.kt similarity index 93% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/LicensesFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/LicensesFragment.kt index b5709d624e..71bdec1ea0 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/LicensesFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/LicensesFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.os.Bundle import android.view.LayoutInflater @@ -16,12 +16,12 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.transition.MaterialSharedAxis -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.adapters.LicenseAdapter -import org.suyu.suyu_emu.databinding.FragmentLicensesBinding -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.model.License -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.adapters.LicenseAdapter +import dev.suyu.suyu_emu.databinding.FragmentLicensesBinding +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.model.License +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins class LicensesFragment : Fragment() { private var _binding: FragmentLicensesBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/MessageDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/MessageDialogFragment.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/MessageDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/MessageDialogFragment.kt index ed80521354..75414251e1 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/MessageDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/MessageDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.content.Intent @@ -13,9 +13,9 @@ import androidx.fragment.app.FragmentActivity import androidx.fragment.app.activityViewModels import androidx.lifecycle.ViewModelProvider import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.model.MessageDialogViewModel -import org.suyu.suyu_emu.utils.Log +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.model.MessageDialogViewModel +import dev.suyu.suyu_emu.utils.Log class MessageDialogFragment : DialogFragment() { private val messageDialogViewModel: MessageDialogViewModel by activityViewModels() diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/PermissionDeniedDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/PermissionDeniedDialogFragment.kt similarity index 95% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/PermissionDeniedDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/PermissionDeniedDialogFragment.kt index c384584b19..02e91db633 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/PermissionDeniedDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/PermissionDeniedDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.content.DialogInterface @@ -11,7 +11,7 @@ import android.os.Bundle import android.provider.Settings import androidx.fragment.app.DialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R +import dev.suyu.suyu_emu.R class PermissionDeniedDialogFragment : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/ProgressDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/ProgressDialogFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/ProgressDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/ProgressDialogFragment.kt index c1221f383c..db6a7c4e82 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/ProgressDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/ProgressDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.os.Bundle @@ -15,11 +15,11 @@ import androidx.fragment.app.FragmentActivity import androidx.fragment.app.activityViewModels import androidx.lifecycle.ViewModelProvider import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.DialogProgressBarBinding -import org.suyu.suyu_emu.model.TaskViewModel -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.DialogProgressBarBinding +import dev.suyu.suyu_emu.model.TaskViewModel +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.utils.collect class ProgressDialogFragment : DialogFragment() { private val taskViewModel: TaskViewModel by activityViewModels() diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/ResetSettingsDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/ResetSettingsDialogFragment.kt similarity index 88% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/ResetSettingsDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/ResetSettingsDialogFragment.kt index 24f9f6a10a..ff96b1f8d5 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/ResetSettingsDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/ResetSettingsDialogFragment.kt @@ -1,14 +1,14 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.os.Bundle import androidx.fragment.app.DialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.features.settings.ui.SettingsActivity +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.features.settings.ui.SettingsActivity class ResetSettingsDialogFragment : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/SearchFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/SearchFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/SearchFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/SearchFragment.kt index 54155bdc43..7216fc641e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/SearchFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/SearchFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.content.Context import android.content.SharedPreferences @@ -21,16 +21,16 @@ import androidx.preference.PreferenceManager import info.debatty.java.stringsimilarity.Jaccard import info.debatty.java.stringsimilarity.JaroWinkler import java.util.Locale -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.adapters.GameAdapter -import org.suyu.suyu_emu.databinding.FragmentSearchBinding -import org.suyu.suyu_emu.layout.AutofitGridLayoutManager -import org.suyu.suyu_emu.model.Game -import org.suyu.suyu_emu.model.GamesViewModel -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.adapters.GameAdapter +import dev.suyu.suyu_emu.databinding.FragmentSearchBinding +import dev.suyu.suyu_emu.layout.AutofitGridLayoutManager +import dev.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.model.GamesViewModel +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.utils.collect class SearchFragment : Fragment() { private var _binding: FragmentSearchBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/SetupFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/SetupFragment.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/SetupFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/SetupFragment.kt index fdbdb20b65..3c2ccf4bcd 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/SetupFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/SetupFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.Manifest import android.content.Intent @@ -26,24 +26,23 @@ import androidx.navigation.findNavController import androidx.preference.PreferenceManager import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback import com.google.android.material.transition.MaterialFadeThrough -import kotlinx.coroutines.launch -import org.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.NativeLibrary import java.io.File -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.adapters.SetupAdapter -import org.suyu.suyu_emu.databinding.FragmentSetupBinding -import org.suyu.suyu_emu.features.settings.model.Settings -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.model.SetupCallback -import org.suyu.suyu_emu.model.SetupPage -import org.suyu.suyu_emu.model.StepState -import org.suyu.suyu_emu.ui.main.MainActivity -import org.suyu.suyu_emu.utils.DirectoryInitialization -import org.suyu.suyu_emu.utils.NativeConfig -import org.suyu.suyu_emu.utils.ViewUtils -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.adapters.SetupAdapter +import dev.suyu.suyu_emu.databinding.FragmentSetupBinding +import dev.suyu.suyu_emu.features.settings.model.Settings +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.model.SetupCallback +import dev.suyu.suyu_emu.model.SetupPage +import dev.suyu.suyu_emu.model.StepState +import dev.suyu.suyu_emu.ui.main.MainActivity +import dev.suyu.suyu_emu.utils.DirectoryInitialization +import dev.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.utils.ViewUtils +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.utils.collect class SetupFragment : Fragment() { private var _binding: FragmentSetupBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/SetupWarningDialogFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/SetupWarningDialogFragment.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/fragments/SetupWarningDialogFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/SetupWarningDialogFragment.kt index a508ebfd33..70556f57a6 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/fragments/SetupWarningDialogFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/fragments/SetupWarningDialogFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.fragments +package dev.suyu.suyu_emu.fragments import android.app.Dialog import android.content.DialogInterface @@ -10,7 +10,7 @@ import android.net.Uri import android.os.Bundle import androidx.fragment.app.DialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.suyu.suyu_emu.R +import dev.suyu.suyu_emu.R class SetupWarningDialogFragment : DialogFragment() { private var titleId: Int = 0 diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/layout/AutofitGridLayoutManager.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/layout/AutofitGridLayoutManager.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/layout/AutofitGridLayoutManager.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/layout/AutofitGridLayoutManager.kt index 6d37cf4f8b..b5bad73c03 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/layout/AutofitGridLayoutManager.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/layout/AutofitGridLayoutManager.kt @@ -1,13 +1,13 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.layout +package dev.suyu.suyu_emu.layout import android.content.Context import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.Recycler -import org.suyu.suyu_emu.R +import dev.suyu.suyu_emu.R /** * Cut down version of the solution provided here diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/AddonViewModel.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/AddonViewModel.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/AddonViewModel.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/AddonViewModel.kt index e67611631e..184668475c 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/AddonViewModel.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/AddonViewModel.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -10,8 +10,8 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.utils.NativeConfig import java.util.concurrent.atomic.AtomicBoolean class AddonViewModel : ViewModel() { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Applet.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Applet.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/Applet.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/Applet.kt index af22fd0bc4..37f50588df 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Applet.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Applet.kt @@ -1,11 +1,11 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import org.suyu.suyu_emu.R +import dev.suyu.suyu_emu.R data class Applet( @StringRes val titleId: Int, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Driver.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Driver.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/Driver.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/Driver.kt index cf1f72bcc1..a866ceb6b8 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Driver.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Driver.kt @@ -2,9 +2,9 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model -import org.suyu.suyu_emu.utils.GpuDriverMetadata +import dev.suyu.suyu_emu.utils.GpuDriverMetadata data class Driver( override var selected: Boolean, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/DriverViewModel.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/DriverViewModel.kt similarity index 93% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/DriverViewModel.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/DriverViewModel.kt index 7009d453ae..7d4f59c493 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/DriverViewModel.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/DriverViewModel.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -14,14 +14,14 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.features.settings.model.StringSetting -import org.suyu.suyu_emu.features.settings.utils.SettingsFile -import org.suyu.suyu_emu.model.Driver.Companion.toDriver -import org.suyu.suyu_emu.utils.GpuDriverHelper -import org.suyu.suyu_emu.utils.GpuDriverMetadata -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.features.settings.model.StringSetting +import dev.suyu.suyu_emu.features.settings.utils.SettingsFile +import dev.suyu.suyu_emu.model.Driver.Companion.toDriver +import dev.suyu.suyu_emu.utils.GpuDriverHelper +import dev.suyu.suyu_emu.utils.GpuDriverMetadata +import dev.suyu.suyu_emu.utils.NativeConfig import java.io.File class DriverViewModel : ViewModel() { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/EmulationViewModel.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/EmulationViewModel.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/EmulationViewModel.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/EmulationViewModel.kt index 3d6e744e93..3a0124b8b0 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/EmulationViewModel.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/EmulationViewModel.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import androidx.lifecycle.ViewModel import kotlinx.coroutines.flow.MutableStateFlow diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Game.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Game.kt similarity index 91% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/Game.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/Game.kt index 039ce3d302..b186df68ab 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Game.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Game.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import android.content.Intent import android.net.Uri @@ -9,12 +9,12 @@ import android.os.Parcelable import java.util.HashSet import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.activities.EmulationActivity -import org.suyu.suyu_emu.utils.DirectoryInitialization -import org.suyu.suyu_emu.utils.FileUtil +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.activities.EmulationActivity +import dev.suyu.suyu_emu.utils.DirectoryInitialization +import dev.suyu.suyu_emu.utils.FileUtil import java.time.LocalDateTime import java.time.format.DateTimeFormatter diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/GameDir.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/GameDir.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/GameDir.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/GameDir.kt index b3f7a8d14a..881b6c992e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/GameDir.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/GameDir.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import android.os.Parcelable import kotlinx.parcelize.Parcelize diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/GameProperties.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/GameProperties.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/GameProperties.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/GameProperties.kt index abeee8f73b..c052f4aaae 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/GameProperties.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/GameProperties.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import androidx.annotation.DrawableRes import androidx.annotation.StringRes diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/GameVerificationResult.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/GameVerificationResult.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/GameVerificationResult.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/GameVerificationResult.kt index 61c6014469..4964e16209 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/GameVerificationResult.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/GameVerificationResult.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model enum class GameVerificationResult(val int: Int) { Success(0), diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/GamesViewModel.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/GamesViewModel.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/GamesViewModel.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/GamesViewModel.kt index f5a1e55256..58105ae341 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/GamesViewModel.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/GamesViewModel.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import android.net.Uri import androidx.documentfile.provider.DocumentFile @@ -17,10 +17,10 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.utils.GameHelper -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.utils.GameHelper +import dev.suyu.suyu_emu.utils.NativeConfig import java.util.concurrent.atomic.AtomicBoolean class GamesViewModel : ViewModel() { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/HomeSetting.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/HomeSetting.kt similarity index 93% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/HomeSetting.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/HomeSetting.kt index 114e4a89ad..6097181df2 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/HomeSetting.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/HomeSetting.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/HomeViewModel.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/HomeViewModel.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/HomeViewModel.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/HomeViewModel.kt index 6cfbb725c8..d0e9a44149 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/HomeViewModel.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/HomeViewModel.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import android.net.Uri import androidx.lifecycle.ViewModel diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/InstallResult.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/InstallResult.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/InstallResult.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/InstallResult.kt index 110da0f32b..40668f192d 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/InstallResult.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/InstallResult.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model enum class InstallResult(val int: Int) { Success(0), diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Installable.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Installable.kt similarity index 90% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/Installable.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/Installable.kt index 6b15d54afe..632121f191 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Installable.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Installable.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import androidx.annotation.StringRes diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/License.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/License.kt similarity index 91% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/License.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/License.kt index 735b07ee65..e10a68f668 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/License.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/License.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import android.os.Parcelable import kotlinx.parcelize.Parcelize diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/MessageDialogViewModel.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/MessageDialogViewModel.kt similarity index 91% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/MessageDialogViewModel.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/MessageDialogViewModel.kt index 1f51bb3a06..02474352c5 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/MessageDialogViewModel.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/MessageDialogViewModel.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import androidx.lifecycle.ViewModel diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/MinimalDocumentFile.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/MinimalDocumentFile.kt similarity index 91% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/MinimalDocumentFile.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/MinimalDocumentFile.kt index 176c6f3b71..f6580c8e2a 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/MinimalDocumentFile.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/MinimalDocumentFile.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import android.net.Uri import android.provider.DocumentsContract diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Patch.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Patch.kt similarity index 90% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/Patch.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/Patch.kt index 6e9d09d1be..aa105c3401 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/Patch.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/Patch.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import androidx.annotation.Keep diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/PatchType.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/PatchType.kt similarity index 91% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/PatchType.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/PatchType.kt index 1880f876ec..b48cc843dd 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/PatchType.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/PatchType.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model enum class PatchType(val int: Int) { Update(0), diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/SelectableItem.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/SelectableItem.kt similarity index 89% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/SelectableItem.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/SelectableItem.kt index b8209e3f1d..a98315c653 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/SelectableItem.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/SelectableItem.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model interface SelectableItem { var selected: Boolean diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/SetupPage.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/SetupPage.kt similarity index 95% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/SetupPage.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/SetupPage.kt index 0316009d6c..4766b1870a 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/SetupPage.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/SetupPage.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model data class SetupPage( val iconId: Int, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/model/TaskViewModel.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/TaskViewModel.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/model/TaskViewModel.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/model/TaskViewModel.kt index e4d635ff4f..b3f9daaf98 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/model/TaskViewModel.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/model/TaskViewModel.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.model +package dev.suyu.suyu_emu.model import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlay.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlay.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlay.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlay.kt index 76e33bef37..dd5d906b53 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlay.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlay.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.overlay +package dev.suyu.suyu_emu.overlay import android.app.Activity import android.content.Context @@ -24,17 +24,17 @@ import androidx.core.content.ContextCompat import androidx.window.layout.WindowMetricsCalculator import kotlin.math.max import kotlin.math.min -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.features.input.model.NativeAnalog -import org.suyu.suyu_emu.features.input.model.NativeButton -import org.suyu.suyu_emu.features.input.model.NpadStyleIndex -import org.suyu.suyu_emu.features.settings.model.BooleanSetting -import org.suyu.suyu_emu.features.settings.model.IntSetting -import org.suyu.suyu_emu.overlay.model.OverlayControl -import org.suyu.suyu_emu.overlay.model.OverlayControlData -import org.suyu.suyu_emu.overlay.model.OverlayLayout -import org.suyu.suyu_emu.utils.NativeConfig +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.features.input.model.NativeAnalog +import dev.suyu.suyu_emu.features.input.model.NativeButton +import dev.suyu.suyu_emu.features.input.model.NpadStyleIndex +import dev.suyu.suyu_emu.features.settings.model.BooleanSetting +import dev.suyu.suyu_emu.features.settings.model.IntSetting +import dev.suyu.suyu_emu.overlay.model.OverlayControl +import dev.suyu.suyu_emu.overlay.model.OverlayControlData +import dev.suyu.suyu_emu.overlay.model.OverlayLayout +import dev.suyu.suyu_emu.utils.NativeConfig /** * Draws the interactive input overlay on top of the diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlayDrawableButton.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlayDrawableButton.kt similarity index 95% rename from src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlayDrawableButton.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlayDrawableButton.kt index 0ba7205e58..3d94061bb5 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlayDrawableButton.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlayDrawableButton.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.overlay +package dev.suyu.suyu_emu.overlay import android.content.res.Resources import android.graphics.Bitmap @@ -9,9 +9,9 @@ import android.graphics.Canvas import android.graphics.Rect import android.graphics.drawable.BitmapDrawable import android.view.MotionEvent -import org.suyu.suyu_emu.features.input.NativeInput.ButtonState -import org.suyu.suyu_emu.features.input.model.NativeButton -import org.suyu.suyu_emu.overlay.model.OverlayControlData +import dev.suyu.suyu_emu.features.input.NativeInput.ButtonState +import dev.suyu.suyu_emu.features.input.model.NativeButton +import dev.suyu.suyu_emu.overlay.model.OverlayControlData /** * Custom [BitmapDrawable] that is capable diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlayDrawableDpad.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlayDrawableDpad.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlayDrawableDpad.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlayDrawableDpad.kt index 6f24f5c1da..35d1f70f5e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlayDrawableDpad.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlayDrawableDpad.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.overlay +package dev.suyu.suyu_emu.overlay import android.content.res.Resources import android.graphics.Bitmap @@ -9,8 +9,8 @@ import android.graphics.Canvas import android.graphics.Rect import android.graphics.drawable.BitmapDrawable import android.view.MotionEvent -import org.suyu.suyu_emu.features.input.NativeInput.ButtonState -import org.suyu.suyu_emu.features.input.model.NativeButton +import dev.suyu.suyu_emu.features.input.NativeInput.ButtonState +import dev.suyu.suyu_emu.features.input.model.NativeButton /** * Custom [BitmapDrawable] that is capable diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlayDrawableJoystick.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlayDrawableJoystick.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlayDrawableJoystick.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlayDrawableJoystick.kt index e6f8b5d21a..8afa134ae4 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/InputOverlayDrawableJoystick.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/InputOverlayDrawableJoystick.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.overlay +package dev.suyu.suyu_emu.overlay import android.content.res.Resources import android.graphics.Bitmap @@ -13,10 +13,10 @@ import kotlin.math.atan2 import kotlin.math.cos import kotlin.math.sin import kotlin.math.sqrt -import org.suyu.suyu_emu.features.input.NativeInput.ButtonState -import org.suyu.suyu_emu.features.input.model.NativeAnalog -import org.suyu.suyu_emu.features.input.model.NativeButton -import org.suyu.suyu_emu.features.settings.model.BooleanSetting +import dev.suyu.suyu_emu.features.input.NativeInput.ButtonState +import dev.suyu.suyu_emu.features.input.model.NativeAnalog +import dev.suyu.suyu_emu.features.input.model.NativeButton +import dev.suyu.suyu_emu.features.settings.model.BooleanSetting /** * Custom [BitmapDrawable] that is capable diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayControl.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayControl.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayControl.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayControl.kt index 605f63ff79..a9e32675e8 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayControl.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayControl.kt @@ -1,11 +1,11 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.overlay.model +package dev.suyu.suyu_emu.overlay.model import androidx.annotation.IntegerRes -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication enum class OverlayControl( val id: String, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayControlData.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayControlData.kt similarity index 93% rename from src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayControlData.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayControlData.kt index 7559bcfe2d..2a4267da2e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayControlData.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayControlData.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.overlay.model +package dev.suyu.suyu_emu.overlay.model data class OverlayControlData( val id: String, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayControlDefault.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayControlDefault.kt similarity index 90% rename from src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayControlDefault.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayControlDefault.kt index 0df2e4ff8b..74ca6edec4 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayControlDefault.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayControlDefault.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.overlay.model +package dev.suyu.suyu_emu.overlay.model import androidx.annotation.IntegerRes diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayLayout.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayLayout.kt similarity index 84% rename from src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayLayout.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayLayout.kt index 1eb0105352..f8595593d9 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/overlay/model/OverlayLayout.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/overlay/model/OverlayLayout.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.overlay.model +package dev.suyu.suyu_emu.overlay.model enum class OverlayLayout(val id: String) { Landscape("Landscape"), diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/ui/GamesFragment.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/ui/GamesFragment.kt similarity index 92% rename from src/android/app/src/main/java/org/suyu/suyu_emu/ui/GamesFragment.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/ui/GamesFragment.kt index b37aa23850..39b1ef8b77 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/ui/GamesFragment.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/ui/GamesFragment.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.ui +package dev.suyu.suyu_emu.ui import android.os.Bundle import android.view.LayoutInflater @@ -14,15 +14,15 @@ import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import com.google.android.material.color.MaterialColors -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.adapters.GameAdapter -import org.suyu.suyu_emu.databinding.FragmentGamesBinding -import org.suyu.suyu_emu.layout.AutofitGridLayoutManager -import org.suyu.suyu_emu.model.GamesViewModel -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.utils.ViewUtils.setVisible -import org.suyu.suyu_emu.utils.ViewUtils.updateMargins -import org.suyu.suyu_emu.utils.collect +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.adapters.GameAdapter +import dev.suyu.suyu_emu.databinding.FragmentGamesBinding +import dev.suyu.suyu_emu.layout.AutofitGridLayoutManager +import dev.suyu.suyu_emu.model.GamesViewModel +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.utils.ViewUtils.updateMargins +import dev.suyu.suyu_emu.utils.collect class GamesFragment : Fragment() { private var _binding: FragmentGamesBinding? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/ui/main/MainActivity.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/ui/main/MainActivity.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/ui/main/MainActivity.kt index ea5ba39a32..c994a3510d 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/ui/main/MainActivity.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.ui.main +package dev.suyu.suyu_emu.ui.main import android.content.Intent import android.net.Uri @@ -27,23 +27,23 @@ import com.google.android.material.color.MaterialColors import com.google.android.material.navigation.NavigationBarView import java.io.File import java.io.FilenameFilter -import org.suyu.suyu_emu.HomeNavigationDirections -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.databinding.ActivityMainBinding -import org.suyu.suyu_emu.features.settings.model.Settings -import org.suyu.suyu_emu.fragments.AddGameFolderDialogFragment -import org.suyu.suyu_emu.fragments.ProgressDialogFragment -import org.suyu.suyu_emu.fragments.MessageDialogFragment -import org.suyu.suyu_emu.model.AddonViewModel -import org.suyu.suyu_emu.model.DriverViewModel -import org.suyu.suyu_emu.model.GamesViewModel -import org.suyu.suyu_emu.model.HomeViewModel -import org.suyu.suyu_emu.model.InstallResult -import org.suyu.suyu_emu.model.TaskState -import org.suyu.suyu_emu.model.TaskViewModel -import org.suyu.suyu_emu.utils.* -import org.suyu.suyu_emu.utils.ViewUtils.setVisible +import dev.suyu.suyu_emu.HomeNavigationDirections +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.databinding.ActivityMainBinding +import dev.suyu.suyu_emu.features.settings.model.Settings +import dev.suyu.suyu_emu.fragments.AddGameFolderDialogFragment +import dev.suyu.suyu_emu.fragments.ProgressDialogFragment +import dev.suyu.suyu_emu.fragments.MessageDialogFragment +import dev.suyu.suyu_emu.model.AddonViewModel +import dev.suyu.suyu_emu.model.DriverViewModel +import dev.suyu.suyu_emu.model.GamesViewModel +import dev.suyu.suyu_emu.model.HomeViewModel +import dev.suyu.suyu_emu.model.InstallResult +import dev.suyu.suyu_emu.model.TaskState +import dev.suyu.suyu_emu.model.TaskViewModel +import dev.suyu.suyu_emu.utils.* +import dev.suyu.suyu_emu.utils.ViewUtils.setVisible import java.io.BufferedInputStream import java.io.BufferedOutputStream import java.util.zip.ZipEntry diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/ui/main/ThemeProvider.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/ui/main/ThemeProvider.kt similarity index 88% rename from src/android/app/src/main/java/org/suyu/suyu_emu/ui/main/ThemeProvider.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/ui/main/ThemeProvider.kt index 3ba6c5cd16..c9c7f87636 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/ui/main/ThemeProvider.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/ui/main/ThemeProvider.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.ui.main +package dev.suyu.suyu_emu.ui.main interface ThemeProvider { /** diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/AddonUtil.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/AddonUtil.kt similarity index 85% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/AddonUtil.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/AddonUtil.kt index adc4228bc0..c1d93ba585 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/AddonUtil.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/AddonUtil.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils object AddonUtil { val validAddonDirectories = listOf("cheats", "exefs", "romfs") diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/DirectoryInitialization.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/DirectoryInitialization.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/DirectoryInitialization.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/DirectoryInitialization.kt index 451757fea3..dd0257a0e5 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/DirectoryInitialization.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/DirectoryInitialization.kt @@ -1,19 +1,19 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import androidx.preference.PreferenceManager import java.io.IOException -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.features.settings.model.BooleanSetting -import org.suyu.suyu_emu.features.settings.model.IntSetting -import org.suyu.suyu_emu.features.settings.model.Settings -import org.suyu.suyu_emu.overlay.model.OverlayControlData -import org.suyu.suyu_emu.overlay.model.OverlayControl -import org.suyu.suyu_emu.overlay.model.OverlayLayout -import org.suyu.suyu_emu.utils.PreferenceUtil.migratePreference +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.features.settings.model.BooleanSetting +import dev.suyu.suyu_emu.features.settings.model.IntSetting +import dev.suyu.suyu_emu.features.settings.model.Settings +import dev.suyu.suyu_emu.overlay.model.OverlayControlData +import dev.suyu.suyu_emu.overlay.model.OverlayControl +import dev.suyu.suyu_emu.overlay.model.OverlayLayout +import dev.suyu.suyu_emu.utils.PreferenceUtil.migratePreference object DirectoryInitialization { private var userPath: String? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/DocumentsTree.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/DocumentsTree.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/DocumentsTree.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/DocumentsTree.kt index 8269cbc238..fab217f538 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/DocumentsTree.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/DocumentsTree.kt @@ -1,13 +1,13 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.net.Uri import androidx.documentfile.provider.DocumentFile import java.io.File import java.util.* -import org.suyu.suyu_emu.model.MinimalDocumentFile +import dev.suyu.suyu_emu.model.MinimalDocumentFile class DocumentsTree { private var root: DocumentsNode? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/FileUtil.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/FileUtil.kt similarity index 99% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/FileUtil.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/FileUtil.kt index 61a40992a8..8f10ab6711 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/FileUtil.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/FileUtil.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.database.Cursor import android.net.Uri @@ -14,9 +14,9 @@ import java.io.InputStream import java.net.URLDecoder import java.util.zip.ZipEntry import java.util.zip.ZipInputStream -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.model.MinimalDocumentFile -import org.suyu.suyu_emu.model.TaskState +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.model.MinimalDocumentFile +import dev.suyu.suyu_emu.model.TaskState import java.io.BufferedOutputStream import java.io.OutputStream import java.lang.NullPointerException diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GameHelper.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GameHelper.kt similarity index 95% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/GameHelper.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GameHelper.kt index 4800c5cb4e..a413a44cd8 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GameHelper.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GameHelper.kt @@ -1,18 +1,18 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.content.SharedPreferences import android.net.Uri import androidx.preference.PreferenceManager import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.model.Game -import org.suyu.suyu_emu.model.GameDir -import org.suyu.suyu_emu.model.MinimalDocumentFile +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.model.GameDir +import dev.suyu.suyu_emu.model.MinimalDocumentFile object GameHelper { private const val KEY_OLD_GAME_PATH = "game_path" diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GameIconUtils.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GameIconUtils.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/GameIconUtils.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GameIconUtils.kt index 692030c218..f941e9eb60 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GameIconUtils.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GameIconUtils.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.graphics.Bitmap import android.graphics.BitmapFactory @@ -21,9 +21,9 @@ import coil.key.Keyer import coil.memory.MemoryCache import coil.request.ImageRequest import coil.request.Options -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.model.Game +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.model.Game class GameIconFetcher( private val game: Game, diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GameMetadata.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GameMetadata.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/GameMetadata.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GameMetadata.kt index d8f278e902..9847f81cc1 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GameMetadata.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GameMetadata.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils object GameMetadata { external fun getIsValid(path: String): Boolean diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GpuDriverHelper.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GpuDriverHelper.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/GpuDriverHelper.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GpuDriverHelper.kt index 28486d32de..2d7bc81553 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GpuDriverHelper.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GpuDriverHelper.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.graphics.SurfaceTexture import android.net.Uri @@ -9,9 +9,9 @@ import android.os.Build import android.view.Surface import java.io.File import java.io.IOException -import org.suyu.suyu_emu.NativeLibrary -import org.suyu.suyu_emu.SuyuApplication -import org.suyu.suyu_emu.features.settings.model.StringSetting +import dev.suyu.suyu_emu.NativeLibrary +import dev.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.features.settings.model.StringSetting import java.io.FileNotFoundException import java.util.zip.ZipException import java.util.zip.ZipFile diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GpuDriverMetadata.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GpuDriverMetadata.kt similarity index 99% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/GpuDriverMetadata.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GpuDriverMetadata.kt index c12e49d2cd..5b992ef1ce 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/GpuDriverMetadata.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/GpuDriverMetadata.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import java.io.IOException import org.json.JSONException diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/InputHandler.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/InputHandler.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/InputHandler.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/InputHandler.kt index 90afcea9aa..394f6b8e24 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/InputHandler.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/InputHandler.kt @@ -1,14 +1,14 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.view.InputDevice import android.view.KeyEvent import android.view.MotionEvent -import org.suyu.suyu_emu.features.input.NativeInput -import org.suyu.suyu_emu.features.input.SuyuInputOverlayDevice -import org.suyu.suyu_emu.features.input.SuyuPhysicalDevice +import dev.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.SuyuInputOverlayDevice +import dev.suyu.suyu_emu.features.input.SuyuPhysicalDevice object InputHandler { var androidControllers = mapOf() diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/InsetsHelper.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/InsetsHelper.kt similarity index 95% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/InsetsHelper.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/InsetsHelper.kt index d5621f42cc..e2eb325742 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/InsetsHelper.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/InsetsHelper.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.annotation.SuppressLint import android.content.Context diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/LifecycleUtils.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/LifecycleUtils.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/LifecycleUtils.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/LifecycleUtils.kt index e1b73c11d6..4cb1910f67 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/LifecycleUtils.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/LifecycleUtils.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/Log.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/Log.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/Log.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/Log.kt index 794f03629d..703f17361e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/Log.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/Log.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.os.Build diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/MemoryUtil.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/MemoryUtil.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/MemoryUtil.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/MemoryUtil.kt index 3617b0dc54..abc08c7d4e 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/MemoryUtil.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/MemoryUtil.kt @@ -1,13 +1,13 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.app.ActivityManager import android.content.Context import android.os.Build -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.SuyuApplication +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.SuyuApplication import java.util.Locale import kotlin.math.ceil diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/NativeConfig.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/NativeConfig.kt similarity index 96% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/NativeConfig.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/NativeConfig.kt index 248b02515c..fac09e9e16 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/NativeConfig.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/NativeConfig.kt @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils -import org.suyu.suyu_emu.model.GameDir -import org.suyu.suyu_emu.overlay.model.OverlayControlData +import dev.suyu.suyu_emu.model.GameDir +import dev.suyu.suyu_emu.overlay.model.OverlayControlData -import org.suyu.suyu_emu.features.input.model.PlayerInput +import dev.suyu.suyu_emu.features.input.model.PlayerInput object NativeConfig { /** diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/NfcReader.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/NfcReader.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/NfcReader.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/NfcReader.kt index 2a8045202c..b32f246498 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/NfcReader.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/NfcReader.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.app.Activity import android.app.PendingIntent @@ -14,7 +14,7 @@ import android.os.Build import android.os.Handler import android.os.Looper import java.io.IOException -import org.suyu.suyu_emu.features.input.NativeInput +import dev.suyu.suyu_emu.features.input.NativeInput class NfcReader(private val activity: Activity) { private var nfcAdapter: NfcAdapter? = null diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/ParamPackage.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/ParamPackage.kt similarity index 99% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/ParamPackage.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/ParamPackage.kt index 98a906c8e3..30ff051910 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/ParamPackage.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/ParamPackage.kt @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils // Kotlin version of src/common/param_package.h class ParamPackage(serialized: String = "") { diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/PreferenceUtil.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/PreferenceUtil.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/PreferenceUtil.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/PreferenceUtil.kt index ad8fd59211..1c16b3b401 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/PreferenceUtil.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/PreferenceUtil.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.content.SharedPreferences diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/SerializableHelper.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/SerializableHelper.kt similarity index 97% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/SerializableHelper.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/SerializableHelper.kt index 71438c2866..d75a47beea 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/SerializableHelper.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/SerializableHelper.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.content.Intent import android.os.Build diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/ThemeHelper.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/ThemeHelper.kt similarity index 94% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/ThemeHelper.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/ThemeHelper.kt index 2c0b3ea2ed..eaff5893c5 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/ThemeHelper.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/ThemeHelper.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.content.res.Configuration import android.graphics.Color @@ -12,10 +12,10 @@ import androidx.appcompat.app.AppCompatDelegate import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsControllerCompat import kotlin.math.roundToInt -import org.suyu.suyu_emu.R -import org.suyu.suyu_emu.features.settings.model.BooleanSetting -import org.suyu.suyu_emu.features.settings.model.IntSetting -import org.suyu.suyu_emu.ui.main.ThemeProvider +import dev.suyu.suyu_emu.R +import dev.suyu.suyu_emu.features.settings.model.BooleanSetting +import dev.suyu.suyu_emu.features.settings.model.IntSetting +import dev.suyu.suyu_emu.ui.main.ThemeProvider object ThemeHelper { const val SYSTEM_BAR_ALPHA = 0.9f diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/ViewUtils.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/ViewUtils.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/utils/ViewUtils.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/utils/ViewUtils.kt index b81e146673..94bf0d890f 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/utils/ViewUtils.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/utils/ViewUtils.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.utils +package dev.suyu.suyu_emu.utils import android.text.TextUtils import android.view.View diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/viewholder/AbstractViewHolder.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/viewholder/AbstractViewHolder.kt similarity index 80% rename from src/android/app/src/main/java/org/suyu/suyu_emu/viewholder/AbstractViewHolder.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/viewholder/AbstractViewHolder.kt index ee149eae7d..c1991d609a 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/viewholder/AbstractViewHolder.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/viewholder/AbstractViewHolder.kt @@ -2,12 +2,12 @@ // SPDX-FileCopyrightText: 2024 suyu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.viewholder +package dev.suyu.suyu_emu.viewholder import androidx.recyclerview.widget.RecyclerView import androidx.viewbinding.ViewBinding -import org.suyu.suyu_emu.adapters.AbstractDiffAdapter -import org.suyu.suyu_emu.adapters.AbstractListAdapter +import dev.suyu.suyu_emu.adapters.AbstractDiffAdapter +import dev.suyu.suyu_emu.adapters.AbstractListAdapter /** * [RecyclerView.ViewHolder] meant to work together with a [AbstractDiffAdapter] or a diff --git a/src/android/app/src/main/java/org/suyu/suyu_emu/views/FixedRatioSurfaceView.kt b/src/android/app/src/main/java/dev/suyu/suyu_emu/views/FixedRatioSurfaceView.kt similarity index 98% rename from src/android/app/src/main/java/org/suyu/suyu_emu/views/FixedRatioSurfaceView.kt rename to src/android/app/src/main/java/dev/suyu/suyu_emu/views/FixedRatioSurfaceView.kt index 7d4708ce12..181ddca032 100644 --- a/src/android/app/src/main/java/org/suyu/suyu_emu/views/FixedRatioSurfaceView.kt +++ b/src/android/app/src/main/java/dev/suyu/suyu_emu/views/FixedRatioSurfaceView.kt @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -package org.suyu.suyu_emu.views +package dev.suyu.suyu_emu.views import android.content.Context import android.util.AttributeSet diff --git a/src/android/app/src/main/jni/game_metadata.cpp b/src/android/app/src/main/jni/game_metadata.cpp index 489f862978..52d29ce3ff 100644 --- a/src/android/app/src/main/jni/game_metadata.cpp +++ b/src/android/app/src/main/jni/game_metadata.cpp @@ -75,7 +75,7 @@ RomMetadata GetRomMetadata(const std::string& path, bool reload = false) { extern "C" { -jboolean Java_org_suyu_suyu_1emu_utils_GameMetadata_getIsValid(JNIEnv* env, jobject obj, +jboolean Java_dev_suyu_suyu_1emu_utils_GameMetadata_getIsValid(JNIEnv* env, jobject obj, jstring jpath) { const auto file = EmulationSession::GetInstance().System().GetFilesystem()->OpenFile( Common::Android::GetJString(env, jpath), FileSys::OpenMode::Read); @@ -101,31 +101,31 @@ jboolean Java_org_suyu_suyu_1emu_utils_GameMetadata_getIsValid(JNIEnv* env, jobj return true; } -jstring Java_org_suyu_suyu_1emu_utils_GameMetadata_getTitle(JNIEnv* env, jobject obj, +jstring Java_dev_suyu_suyu_1emu_utils_GameMetadata_getTitle(JNIEnv* env, jobject obj, jstring jpath) { return Common::Android::ToJString( env, GetRomMetadata(Common::Android::GetJString(env, jpath)).title); } -jstring Java_org_suyu_suyu_1emu_utils_GameMetadata_getProgramId(JNIEnv* env, jobject obj, +jstring Java_dev_suyu_suyu_1emu_utils_GameMetadata_getProgramId(JNIEnv* env, jobject obj, jstring jpath) { return Common::Android::ToJString( env, std::to_string(GetRomMetadata(Common::Android::GetJString(env, jpath)).programId)); } -jstring Java_org_suyu_suyu_1emu_utils_GameMetadata_getDeveloper(JNIEnv* env, jobject obj, +jstring Java_dev_suyu_suyu_1emu_utils_GameMetadata_getDeveloper(JNIEnv* env, jobject obj, jstring jpath) { return Common::Android::ToJString( env, GetRomMetadata(Common::Android::GetJString(env, jpath)).developer); } -jstring Java_org_suyu_suyu_1emu_utils_GameMetadata_getVersion(JNIEnv* env, jobject obj, +jstring Java_dev_suyu_suyu_1emu_utils_GameMetadata_getVersion(JNIEnv* env, jobject obj, jstring jpath, jboolean jreload) { return Common::Android::ToJString( env, GetRomMetadata(Common::Android::GetJString(env, jpath), jreload).version); } -jbyteArray Java_org_suyu_suyu_1emu_utils_GameMetadata_getIcon(JNIEnv* env, jobject obj, +jbyteArray Java_dev_suyu_suyu_1emu_utils_GameMetadata_getIcon(JNIEnv* env, jobject obj, jstring jpath) { auto icon_data = GetRomMetadata(Common::Android::GetJString(env, jpath)).icon; jbyteArray icon = env->NewByteArray(static_cast(icon_data.size())); @@ -134,13 +134,13 @@ jbyteArray Java_org_suyu_suyu_1emu_utils_GameMetadata_getIcon(JNIEnv* env, jobje return icon; } -jboolean Java_org_suyu_suyu_1emu_utils_GameMetadata_getIsHomebrew(JNIEnv* env, jobject obj, +jboolean Java_dev_suyu_suyu_1emu_utils_GameMetadata_getIsHomebrew(JNIEnv* env, jobject obj, jstring jpath) { return static_cast( GetRomMetadata(Common::Android::GetJString(env, jpath)).isHomebrew); } -void Java_org_suyu_suyu_1emu_utils_GameMetadata_resetMetadata(JNIEnv* env, jobject obj) { +void Java_dev_suyu_suyu_1emu_utils_GameMetadata_resetMetadata(JNIEnv* env, jobject obj) { m_rom_metadata_cache.clear(); } diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index 35ca93a78d..be8e36dbe3 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -435,24 +435,24 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath, extern "C" { -void Java_org_suyu_suyu_1emu_NativeLibrary_surfaceChanged(JNIEnv* env, jobject instance, +void Java_dev_suyu_suyu_1emu_NativeLibrary_surfaceChanged(JNIEnv* env, jobject instance, [[maybe_unused]] jobject surf) { EmulationSession::GetInstance().SetNativeWindow(ANativeWindow_fromSurface(env, surf)); EmulationSession::GetInstance().SurfaceChanged(); } -void Java_org_suyu_suyu_1emu_NativeLibrary_surfaceDestroyed(JNIEnv* env, jobject instance) { +void Java_dev_suyu_suyu_1emu_NativeLibrary_surfaceDestroyed(JNIEnv* env, jobject instance) { ANativeWindow_release(EmulationSession::GetInstance().NativeWindow()); EmulationSession::GetInstance().SetNativeWindow(nullptr); EmulationSession::GetInstance().SurfaceChanged(); } -void Java_org_suyu_suyu_1emu_NativeLibrary_setAppDirectory(JNIEnv* env, jobject instance, +void Java_dev_suyu_suyu_1emu_NativeLibrary_setAppDirectory(JNIEnv* env, jobject instance, [[maybe_unused]] jstring j_directory) { Common::FS::SetAppDirectory(Common::Android::GetJString(env, j_directory)); } -int Java_org_suyu_suyu_1emu_NativeLibrary_installFileToNand(JNIEnv* env, jobject instance, +int Java_dev_suyu_suyu_1emu_NativeLibrary_installFileToNand(JNIEnv* env, jobject instance, jstring j_file, jobject jcallback) { auto jlambdaClass = env->GetObjectClass(jcallback); auto jlambdaInvokeMethod = env->GetMethodID( @@ -470,7 +470,7 @@ int Java_org_suyu_suyu_1emu_NativeLibrary_installFileToNand(JNIEnv* env, jobject Common::Android::GetJString(env, j_file), callback)); } -jboolean Java_org_suyu_suyu_1emu_NativeLibrary_doesUpdateMatchProgram(JNIEnv* env, jobject jobj, +jboolean Java_dev_suyu_suyu_1emu_NativeLibrary_doesUpdateMatchProgram(JNIEnv* env, jobject jobj, jstring jprogramId, jstring jupdatePath) { u64 program_id = EmulationSession::GetProgramId(env, jprogramId); @@ -491,7 +491,7 @@ jboolean Java_org_suyu_suyu_1emu_NativeLibrary_doesUpdateMatchProgram(JNIEnv* en return false; } -void JNICALL Java_org_suyu_suyu_1emu_NativeLibrary_initializeGpuDriver(JNIEnv* env, jclass clazz, +void JNICALL Java_dev_suyu_suyu_1emu_NativeLibrary_initializeGpuDriver(JNIEnv* env, jclass clazz, jstring hook_lib_dir, jstring custom_driver_dir, jstring custom_driver_name, @@ -513,7 +513,7 @@ void JNICALL Java_org_suyu_suyu_1emu_NativeLibrary_initializeGpuDriver(JNIEnv* e return android_get_device_api_level() >= 28 && CheckKgslPresent(); } -jboolean JNICALL Java_org_suyu_suyu_1emu_utils_GpuDriverHelper_supportsCustomDriverLoading( +jboolean JNICALL Java_dev_suyu_suyu_1emu_utils_GpuDriverHelper_supportsCustomDriverLoading( JNIEnv* env, jobject instance) { #ifdef ARCHITECTURE_arm64 // If the KGSL device exists custom drivers can be loaded using adrenotools @@ -523,7 +523,7 @@ jboolean JNICALL Java_org_suyu_suyu_1emu_utils_GpuDriverHelper_supportsCustomDri #endif } -jobjectArray Java_org_suyu_suyu_1emu_utils_GpuDriverHelper_getSystemDriverInfo( +jobjectArray Java_dev_suyu_suyu_1emu_utils_GpuDriverHelper_getSystemDriverInfo( JNIEnv* env, jobject j_obj, jobject j_surf, jstring j_hook_lib_dir) { const char* file_redirect_dir_{}; int featureFlags{}; @@ -555,32 +555,32 @@ jobjectArray Java_org_suyu_suyu_1emu_utils_GpuDriverHelper_getSystemDriverInfo( return j_driver_info; } -jboolean Java_org_suyu_suyu_1emu_NativeLibrary_reloadKeys(JNIEnv* env, jclass clazz) { +jboolean Java_dev_suyu_suyu_1emu_NativeLibrary_reloadKeys(JNIEnv* env, jclass clazz) { Core::Crypto::KeyManager::Instance().ReloadKeys(); return static_cast(Core::Crypto::KeyManager::Instance().AreKeysLoaded()); } -void Java_org_suyu_suyu_1emu_NativeLibrary_unpauseEmulation(JNIEnv* env, jclass clazz) { +void Java_dev_suyu_suyu_1emu_NativeLibrary_unpauseEmulation(JNIEnv* env, jclass clazz) { EmulationSession::GetInstance().UnPauseEmulation(); } -void Java_org_suyu_suyu_1emu_NativeLibrary_pauseEmulation(JNIEnv* env, jclass clazz) { +void Java_dev_suyu_suyu_1emu_NativeLibrary_pauseEmulation(JNIEnv* env, jclass clazz) { EmulationSession::GetInstance().PauseEmulation(); } -void Java_org_suyu_suyu_1emu_NativeLibrary_stopEmulation(JNIEnv* env, jclass clazz) { +void Java_dev_suyu_suyu_1emu_NativeLibrary_stopEmulation(JNIEnv* env, jclass clazz) { EmulationSession::GetInstance().HaltEmulation(); } -jboolean Java_org_suyu_suyu_1emu_NativeLibrary_isRunning(JNIEnv* env, jclass clazz) { +jboolean Java_dev_suyu_suyu_1emu_NativeLibrary_isRunning(JNIEnv* env, jclass clazz) { return static_cast(EmulationSession::GetInstance().IsRunning()); } -jboolean Java_org_suyu_suyu_1emu_NativeLibrary_isPaused(JNIEnv* env, jclass clazz) { +jboolean Java_dev_suyu_suyu_1emu_NativeLibrary_isPaused(JNIEnv* env, jclass clazz) { return static_cast(EmulationSession::GetInstance().IsPaused()); } -void Java_org_suyu_suyu_1emu_NativeLibrary_initializeSystem(JNIEnv* env, jclass clazz, +void Java_dev_suyu_suyu_1emu_NativeLibrary_initializeSystem(JNIEnv* env, jclass clazz, jboolean reload) { // Initialize the emulated system. if (!reload) { @@ -589,7 +589,7 @@ void Java_org_suyu_suyu_1emu_NativeLibrary_initializeSystem(JNIEnv* env, jclass EmulationSession::GetInstance().InitializeSystem(reload); } -jdoubleArray Java_org_suyu_suyu_1emu_NativeLibrary_getPerfStats(JNIEnv* env, jclass clazz) { +jdoubleArray Java_dev_suyu_suyu_1emu_NativeLibrary_getPerfStats(JNIEnv* env, jclass clazz) { jdoubleArray j_stats = env->NewDoubleArray(4); if (EmulationSession::GetInstance().IsRunning()) { @@ -605,7 +605,7 @@ jdoubleArray Java_org_suyu_suyu_1emu_NativeLibrary_getPerfStats(JNIEnv* env, jcl return j_stats; } -jstring Java_org_suyu_suyu_1emu_NativeLibrary_getCpuBackend(JNIEnv* env, jclass clazz) { +jstring Java_dev_suyu_suyu_1emu_NativeLibrary_getCpuBackend(JNIEnv* env, jclass clazz) { if (Settings::IsNceEnabled()) { return Common::Android::ToJString(env, "NCE"); } @@ -613,21 +613,21 @@ jstring Java_org_suyu_suyu_1emu_NativeLibrary_getCpuBackend(JNIEnv* env, jclass return Common::Android::ToJString(env, "JIT"); } -jstring Java_org_suyu_suyu_1emu_NativeLibrary_getGpuDriver(JNIEnv* env, jobject jobj) { +jstring Java_dev_suyu_suyu_1emu_NativeLibrary_getGpuDriver(JNIEnv* env, jobject jobj) { return Common::Android::ToJString( env, EmulationSession::GetInstance().System().GPU().Renderer().GetDeviceVendor()); } -void Java_org_suyu_suyu_1emu_NativeLibrary_applySettings(JNIEnv* env, jobject jobj) { +void Java_dev_suyu_suyu_1emu_NativeLibrary_applySettings(JNIEnv* env, jobject jobj) { EmulationSession::GetInstance().System().ApplySettings(); EmulationSession::GetInstance().System().HIDCore().ReloadInputDevices(); } -void Java_org_suyu_suyu_1emu_NativeLibrary_logSettings(JNIEnv* env, jobject jobj) { +void Java_dev_suyu_suyu_1emu_NativeLibrary_logSettings(JNIEnv* env, jobject jobj) { Settings::LogSettings(); } -void Java_org_suyu_suyu_1emu_NativeLibrary_run(JNIEnv* env, jobject jobj, jstring j_path, +void Java_dev_suyu_suyu_1emu_NativeLibrary_run(JNIEnv* env, jobject jobj, jstring j_path, jint j_program_index, jboolean j_frontend_initiated) { const std::string path = Common::Android::GetJString(env, j_path); @@ -641,23 +641,23 @@ void Java_org_suyu_suyu_1emu_NativeLibrary_run(JNIEnv* env, jobject jobj, jstrin } } -void Java_org_suyu_suyu_1emu_NativeLibrary_logDeviceInfo(JNIEnv* env, jclass clazz) { +void Java_dev_suyu_suyu_1emu_NativeLibrary_logDeviceInfo(JNIEnv* env, jclass clazz) { LOG_INFO(Frontend, "suyu Version: {}-{}", Common::g_scm_branch, Common::g_scm_desc); LOG_INFO(Frontend, "Host OS: Android API level {}", android_get_device_api_level()); } -void Java_org_suyu_suyu_1emu_NativeLibrary_submitInlineKeyboardText(JNIEnv* env, jclass clazz, +void Java_dev_suyu_suyu_1emu_NativeLibrary_submitInlineKeyboardText(JNIEnv* env, jclass clazz, jstring j_text) { const std::u16string input = Common::UTF8ToUTF16(Common::Android::GetJString(env, j_text)); EmulationSession::GetInstance().SoftwareKeyboard()->SubmitInlineKeyboardText(input); } -void Java_org_suyu_suyu_1emu_NativeLibrary_submitInlineKeyboardInput(JNIEnv* env, jclass clazz, +void Java_dev_suyu_suyu_1emu_NativeLibrary_submitInlineKeyboardInput(JNIEnv* env, jclass clazz, jint j_key_code) { EmulationSession::GetInstance().SoftwareKeyboard()->SubmitInlineKeyboardInput(j_key_code); } -void Java_org_suyu_suyu_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv* env, +void Java_dev_suyu_suyu_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv* env, jobject instance) { const auto nand_dir = Common::FS::GetSuyuPath(Common::FS::SuyuPath::NANDDir); auto vfs_nand_dir = EmulationSession::GetInstance().System().GetFilesystem()->OpenDirectory( @@ -677,7 +677,7 @@ void Java_org_suyu_suyu_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv* } } -jstring Java_org_suyu_suyu_1emu_NativeLibrary_getAppletLaunchPath(JNIEnv* env, jclass clazz, +jstring Java_dev_suyu_suyu_1emu_NativeLibrary_getAppletLaunchPath(JNIEnv* env, jclass clazz, jlong jid) { auto bis_system = EmulationSession::GetInstance().System().GetFileSystemController().GetSystemNANDContents(); @@ -694,18 +694,18 @@ jstring Java_org_suyu_suyu_1emu_NativeLibrary_getAppletLaunchPath(JNIEnv* env, j return Common::Android::ToJString(env, applet_nca->GetFullPath()); } -void Java_org_suyu_suyu_1emu_NativeLibrary_setCurrentAppletId(JNIEnv* env, jclass clazz, +void Java_dev_suyu_suyu_1emu_NativeLibrary_setCurrentAppletId(JNIEnv* env, jclass clazz, jint jappletId) { EmulationSession::GetInstance().SetAppletId(jappletId); } -void Java_org_suyu_suyu_1emu_NativeLibrary_setCabinetMode(JNIEnv* env, jclass clazz, +void Java_dev_suyu_suyu_1emu_NativeLibrary_setCabinetMode(JNIEnv* env, jclass clazz, jint jcabinetMode) { EmulationSession::GetInstance().System().GetFrontendAppletHolder().SetCabinetMode( static_cast(jcabinetMode)); } -jboolean Java_org_suyu_suyu_1emu_NativeLibrary_isFirmwareAvailable(JNIEnv* env, jclass clazz) { +jboolean Java_dev_suyu_suyu_1emu_NativeLibrary_isFirmwareAvailable(JNIEnv* env, jclass clazz) { auto bis_system = EmulationSession::GetInstance().System().GetFileSystemController().GetSystemNANDContents(); if (!bis_system) { @@ -721,7 +721,7 @@ jboolean Java_org_suyu_suyu_1emu_NativeLibrary_isFirmwareAvailable(JNIEnv* env, return true; } -jobjectArray Java_org_suyu_suyu_1emu_NativeLibrary_getPatchesForFile(JNIEnv* env, jobject jobj, +jobjectArray Java_dev_suyu_suyu_1emu_NativeLibrary_getPatchesForFile(JNIEnv* env, jobject jobj, jstring jpath, jstring jprogramId) { const auto path = Common::Android::GetJString(env, jpath); @@ -757,27 +757,27 @@ jobjectArray Java_org_suyu_suyu_1emu_NativeLibrary_getPatchesForFile(JNIEnv* env return jpatchArray; } -void Java_org_suyu_suyu_1emu_NativeLibrary_removeUpdate(JNIEnv* env, jobject jobj, +void Java_dev_suyu_suyu_1emu_NativeLibrary_removeUpdate(JNIEnv* env, jobject jobj, jstring jprogramId) { auto program_id = EmulationSession::GetProgramId(env, jprogramId); ContentManager::RemoveUpdate(EmulationSession::GetInstance().System().GetFileSystemController(), program_id); } -void Java_org_suyu_suyu_1emu_NativeLibrary_removeDLC(JNIEnv* env, jobject jobj, +void Java_dev_suyu_suyu_1emu_NativeLibrary_removeDLC(JNIEnv* env, jobject jobj, jstring jprogramId) { auto program_id = EmulationSession::GetProgramId(env, jprogramId); ContentManager::RemoveAllDLC(EmulationSession::GetInstance().System(), program_id); } -void Java_org_suyu_suyu_1emu_NativeLibrary_removeMod(JNIEnv* env, jobject jobj, jstring jprogramId, +void Java_dev_suyu_suyu_1emu_NativeLibrary_removeMod(JNIEnv* env, jobject jobj, jstring jprogramId, jstring jname) { auto program_id = EmulationSession::GetProgramId(env, jprogramId); ContentManager::RemoveMod(EmulationSession::GetInstance().System().GetFileSystemController(), program_id, Common::Android::GetJString(env, jname)); } -jobjectArray Java_org_suyu_suyu_1emu_NativeLibrary_verifyInstalledContents(JNIEnv* env, +jobjectArray Java_dev_suyu_suyu_1emu_NativeLibrary_verifyInstalledContents(JNIEnv* env, jobject jobj, jobject jcallback) { auto jlambdaClass = env->GetObjectClass(jcallback); @@ -801,7 +801,7 @@ jobjectArray Java_org_suyu_suyu_1emu_NativeLibrary_verifyInstalledContents(JNIEn return jresult; } -jint Java_org_suyu_suyu_1emu_NativeLibrary_verifyGameContents(JNIEnv* env, jobject jobj, +jint Java_dev_suyu_suyu_1emu_NativeLibrary_verifyGameContents(JNIEnv* env, jobject jobj, jstring jpath, jobject jcallback) { auto jlambdaClass = env->GetObjectClass(jcallback); auto jlambdaInvokeMethod = env->GetMethodID( @@ -817,7 +817,7 @@ jint Java_org_suyu_suyu_1emu_NativeLibrary_verifyGameContents(JNIEnv* env, jobje session.System(), Common::Android::GetJString(env, jpath), callback)); } -jstring Java_org_suyu_suyu_1emu_NativeLibrary_getSavePath(JNIEnv* env, jobject jobj, +jstring Java_dev_suyu_suyu_1emu_NativeLibrary_getSavePath(JNIEnv* env, jobject jobj, jstring jprogramId) { auto program_id = EmulationSession::GetProgramId(env, jprogramId); if (program_id == 0) { @@ -841,7 +841,7 @@ jstring Java_org_suyu_suyu_1emu_NativeLibrary_getSavePath(JNIEnv* env, jobject j return Common::Android::ToJString(env, user_save_data_path); } -jstring Java_org_suyu_suyu_1emu_NativeLibrary_getDefaultProfileSaveDataRoot(JNIEnv* env, +jstring Java_dev_suyu_suyu_1emu_NativeLibrary_getDefaultProfileSaveDataRoot(JNIEnv* env, jobject jobj, jboolean jfuture) { Service::Account::ProfileManager manager; @@ -854,17 +854,17 @@ jstring Java_org_suyu_suyu_1emu_NativeLibrary_getDefaultProfileSaveDataRoot(JNIE return Common::Android::ToJString(env, user_save_data_root); } -void Java_org_suyu_suyu_1emu_NativeLibrary_addFileToFilesystemProvider(JNIEnv* env, jobject jobj, +void Java_dev_suyu_suyu_1emu_NativeLibrary_addFileToFilesystemProvider(JNIEnv* env, jobject jobj, jstring jpath) { EmulationSession::GetInstance().ConfigureFilesystemProvider( Common::Android::GetJString(env, jpath)); } -void Java_org_suyu_suyu_1emu_NativeLibrary_clearFilesystemProvider(JNIEnv* env, jobject jobj) { +void Java_dev_suyu_suyu_1emu_NativeLibrary_clearFilesystemProvider(JNIEnv* env, jobject jobj) { EmulationSession::GetInstance().GetContentProvider()->ClearAllEntries(); } -jboolean Java_org_suyu_suyu_1emu_NativeLibrary_areKeysPresent(JNIEnv* env, jobject jobj) { +jboolean Java_dev_suyu_suyu_1emu_NativeLibrary_areKeysPresent(JNIEnv* env, jobject jobj) { auto& system = EmulationSession::GetInstance().System(); system.GetFileSystemController().CreateFactories(*system.GetFilesystem()); return ContentManager::AreKeysPresent(); diff --git a/src/android/app/src/main/jni/native_config.cpp b/src/android/app/src/main/jni/native_config.cpp index 88282657f1..cad322297b 100644 --- a/src/android/app/src/main/jni/native_config.cpp +++ b/src/android/app/src/main/jni/native_config.cpp @@ -34,23 +34,23 @@ Settings::Setting* getSetting(JNIEnv* env, jstring jkey) { extern "C" { -void Java_org_suyu_suyu_1emu_utils_NativeConfig_initializeGlobalConfig(JNIEnv* env, jobject obj) { +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_initializeGlobalConfig(JNIEnv* env, jobject obj) { global_config = std::make_unique(); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_unloadGlobalConfig(JNIEnv* env, jobject obj) { +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_unloadGlobalConfig(JNIEnv* env, jobject obj) { global_config.reset(); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_reloadGlobalConfig(JNIEnv* env, jobject obj) { +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_reloadGlobalConfig(JNIEnv* env, jobject obj) { global_config->AndroidConfig::ReloadAllValues(); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_saveGlobalConfig(JNIEnv* env, jobject obj) { +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_saveGlobalConfig(JNIEnv* env, jobject obj) { global_config->AndroidConfig::SaveAllValues(); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_initializePerGameConfig(JNIEnv* env, jobject obj, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_initializePerGameConfig(JNIEnv* env, jobject obj, jstring jprogramId, jstring jfileName) { auto program_id = EmulationSession::GetProgramId(env, jprogramId); @@ -60,20 +60,20 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_initializePerGameConfig(JNIEnv* std::make_unique(config_file_name, Config::ConfigType::PerGameConfig); } -jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_isPerGameConfigLoaded(JNIEnv* env, +jboolean Java_dev_suyu_suyu_1emu_utils_NativeConfig_isPerGameConfigLoaded(JNIEnv* env, jobject obj) { return per_game_config != nullptr; } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_savePerGameConfig(JNIEnv* env, jobject obj) { +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_savePerGameConfig(JNIEnv* env, jobject obj) { per_game_config->AndroidConfig::SaveAllValues(); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_unloadPerGameConfig(JNIEnv* env, jobject obj) { +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_unloadPerGameConfig(JNIEnv* env, jobject obj) { per_game_config.reset(); } -jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_getBoolean(JNIEnv* env, jobject obj, +jboolean Java_dev_suyu_suyu_1emu_utils_NativeConfig_getBoolean(JNIEnv* env, jobject obj, jstring jkey, jboolean needGlobal) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -82,7 +82,7 @@ jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_getBoolean(JNIEnv* env, jobj return setting->GetValue(static_cast(needGlobal)); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setBoolean(JNIEnv* env, jobject obj, jstring jkey, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setBoolean(JNIEnv* env, jobject obj, jstring jkey, jboolean value) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -91,7 +91,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setBoolean(JNIEnv* env, jobject setting->SetValue(static_cast(value)); } -jbyte Java_org_suyu_suyu_1emu_utils_NativeConfig_getByte(JNIEnv* env, jobject obj, jstring jkey, +jbyte Java_dev_suyu_suyu_1emu_utils_NativeConfig_getByte(JNIEnv* env, jobject obj, jstring jkey, jboolean needGlobal) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -100,7 +100,7 @@ jbyte Java_org_suyu_suyu_1emu_utils_NativeConfig_getByte(JNIEnv* env, jobject ob return setting->GetValue(static_cast(needGlobal)); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setByte(JNIEnv* env, jobject obj, jstring jkey, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setByte(JNIEnv* env, jobject obj, jstring jkey, jbyte value) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -109,7 +109,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setByte(JNIEnv* env, jobject obj setting->SetValue(value); } -jshort Java_org_suyu_suyu_1emu_utils_NativeConfig_getShort(JNIEnv* env, jobject obj, jstring jkey, +jshort Java_dev_suyu_suyu_1emu_utils_NativeConfig_getShort(JNIEnv* env, jobject obj, jstring jkey, jboolean needGlobal) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -118,7 +118,7 @@ jshort Java_org_suyu_suyu_1emu_utils_NativeConfig_getShort(JNIEnv* env, jobject return setting->GetValue(static_cast(needGlobal)); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setShort(JNIEnv* env, jobject obj, jstring jkey, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setShort(JNIEnv* env, jobject obj, jstring jkey, jshort value) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -127,7 +127,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setShort(JNIEnv* env, jobject ob setting->SetValue(value); } -jint Java_org_suyu_suyu_1emu_utils_NativeConfig_getInt(JNIEnv* env, jobject obj, jstring jkey, +jint Java_dev_suyu_suyu_1emu_utils_NativeConfig_getInt(JNIEnv* env, jobject obj, jstring jkey, jboolean needGlobal) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -136,7 +136,7 @@ jint Java_org_suyu_suyu_1emu_utils_NativeConfig_getInt(JNIEnv* env, jobject obj, return setting->GetValue(needGlobal); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setInt(JNIEnv* env, jobject obj, jstring jkey, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setInt(JNIEnv* env, jobject obj, jstring jkey, jint value) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -145,7 +145,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setInt(JNIEnv* env, jobject obj, setting->SetValue(value); } -jfloat Java_org_suyu_suyu_1emu_utils_NativeConfig_getFloat(JNIEnv* env, jobject obj, jstring jkey, +jfloat Java_dev_suyu_suyu_1emu_utils_NativeConfig_getFloat(JNIEnv* env, jobject obj, jstring jkey, jboolean needGlobal) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -154,7 +154,7 @@ jfloat Java_org_suyu_suyu_1emu_utils_NativeConfig_getFloat(JNIEnv* env, jobject return setting->GetValue(static_cast(needGlobal)); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setFloat(JNIEnv* env, jobject obj, jstring jkey, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setFloat(JNIEnv* env, jobject obj, jstring jkey, jfloat value) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -163,7 +163,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setFloat(JNIEnv* env, jobject ob setting->SetValue(value); } -jlong Java_org_suyu_suyu_1emu_utils_NativeConfig_getLong(JNIEnv* env, jobject obj, jstring jkey, +jlong Java_dev_suyu_suyu_1emu_utils_NativeConfig_getLong(JNIEnv* env, jobject obj, jstring jkey, jboolean needGlobal) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -172,7 +172,7 @@ jlong Java_org_suyu_suyu_1emu_utils_NativeConfig_getLong(JNIEnv* env, jobject ob return setting->GetValue(static_cast(needGlobal)); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setLong(JNIEnv* env, jobject obj, jstring jkey, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setLong(JNIEnv* env, jobject obj, jstring jkey, jlong value) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -181,7 +181,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setLong(JNIEnv* env, jobject obj setting->SetValue(value); } -jstring Java_org_suyu_suyu_1emu_utils_NativeConfig_getString(JNIEnv* env, jobject obj, jstring jkey, +jstring Java_dev_suyu_suyu_1emu_utils_NativeConfig_getString(JNIEnv* env, jobject obj, jstring jkey, jboolean needGlobal) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -190,7 +190,7 @@ jstring Java_org_suyu_suyu_1emu_utils_NativeConfig_getString(JNIEnv* env, jobjec return Common::Android::ToJString(env, setting->GetValue(static_cast(needGlobal))); } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setString(JNIEnv* env, jobject obj, jstring jkey, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setString(JNIEnv* env, jobject obj, jstring jkey, jstring value) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -200,7 +200,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setString(JNIEnv* env, jobject o setting->SetValue(Common::Android::GetJString(env, value)); } -jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_getIsRuntimeModifiable(JNIEnv* env, jobject obj, +jboolean Java_dev_suyu_suyu_1emu_utils_NativeConfig_getIsRuntimeModifiable(JNIEnv* env, jobject obj, jstring jkey) { auto setting = getSetting(env, jkey); if (setting != nullptr) { @@ -209,7 +209,7 @@ jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_getIsRuntimeModifiable(JNIEn return true; } -jstring Java_org_suyu_suyu_1emu_utils_NativeConfig_getPairedSettingKey(JNIEnv* env, jobject obj, +jstring Java_dev_suyu_suyu_1emu_utils_NativeConfig_getPairedSettingKey(JNIEnv* env, jobject obj, jstring jkey) { auto setting = getSetting(env, jkey); if (setting == nullptr) { @@ -222,7 +222,7 @@ jstring Java_org_suyu_suyu_1emu_utils_NativeConfig_getPairedSettingKey(JNIEnv* e return Common::Android::ToJString(env, setting->PairedSetting()->GetLabel()); } -jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_getIsSwitchable(JNIEnv* env, jobject obj, +jboolean Java_dev_suyu_suyu_1emu_utils_NativeConfig_getIsSwitchable(JNIEnv* env, jobject obj, jstring jkey) { auto setting = getSetting(env, jkey); if (setting != nullptr) { @@ -231,7 +231,7 @@ jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_getIsSwitchable(JNIEnv* env, return false; } -jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_usingGlobal(JNIEnv* env, jobject obj, +jboolean Java_dev_suyu_suyu_1emu_utils_NativeConfig_usingGlobal(JNIEnv* env, jobject obj, jstring jkey) { auto setting = getSetting(env, jkey); if (setting != nullptr) { @@ -240,7 +240,7 @@ jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_usingGlobal(JNIEnv* env, job return true; } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setGlobal(JNIEnv* env, jobject obj, jstring jkey, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setGlobal(JNIEnv* env, jobject obj, jstring jkey, jboolean global) { auto setting = getSetting(env, jkey); if (setting != nullptr) { @@ -248,7 +248,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setGlobal(JNIEnv* env, jobject o } } -jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_getIsSaveable(JNIEnv* env, jobject obj, +jboolean Java_dev_suyu_suyu_1emu_utils_NativeConfig_getIsSaveable(JNIEnv* env, jobject obj, jstring jkey) { auto setting = getSetting(env, jkey); if (setting != nullptr) { @@ -257,7 +257,7 @@ jboolean Java_org_suyu_suyu_1emu_utils_NativeConfig_getIsSaveable(JNIEnv* env, j return false; } -jstring Java_org_suyu_suyu_1emu_utils_NativeConfig_getDefaultToString(JNIEnv* env, jobject obj, +jstring Java_dev_suyu_suyu_1emu_utils_NativeConfig_getDefaultToString(JNIEnv* env, jobject obj, jstring jkey) { auto setting = getSetting(env, jkey); if (setting != nullptr) { @@ -266,7 +266,7 @@ jstring Java_org_suyu_suyu_1emu_utils_NativeConfig_getDefaultToString(JNIEnv* en return Common::Android::ToJString(env, ""); } -jobjectArray Java_org_suyu_suyu_1emu_utils_NativeConfig_getGameDirs(JNIEnv* env, jobject obj) { +jobjectArray Java_dev_suyu_suyu_1emu_utils_NativeConfig_getGameDirs(JNIEnv* env, jobject obj) { jclass gameDirClass = Common::Android::GetGameDirClass(); jmethodID gameDirConstructor = Common::Android::GetGameDirConstructor(); jobjectArray jgameDirArray = @@ -281,7 +281,7 @@ jobjectArray Java_org_suyu_suyu_1emu_utils_NativeConfig_getGameDirs(JNIEnv* env, return jgameDirArray; } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setGameDirs(JNIEnv* env, jobject obj, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setGameDirs(JNIEnv* env, jobject obj, jobjectArray gameDirs) { AndroidSettings::values.game_dirs.clear(); int size = env->GetArrayLength(gameDirs); @@ -304,7 +304,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setGameDirs(JNIEnv* env, jobject } } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_addGameDir(JNIEnv* env, jobject obj, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_addGameDir(JNIEnv* env, jobject obj, jobject gameDir) { jclass gameDirClass = Common::Android::GetGameDirClass(); jfieldID uriStringField = env->GetFieldID(gameDirClass, "uriString", "Ljava/lang/String;"); @@ -317,7 +317,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_addGameDir(JNIEnv* env, jobject AndroidSettings::GameDir{uriString, static_cast(jdeepScanBoolean)}); } -jobjectArray Java_org_suyu_suyu_1emu_utils_NativeConfig_getDisabledAddons(JNIEnv* env, jobject obj, +jobjectArray Java_dev_suyu_suyu_1emu_utils_NativeConfig_getDisabledAddons(JNIEnv* env, jobject obj, jstring jprogramId) { auto program_id = EmulationSession::GetProgramId(env, jprogramId); auto& disabledAddons = Settings::values.disabled_addons[program_id]; @@ -331,7 +331,7 @@ jobjectArray Java_org_suyu_suyu_1emu_utils_NativeConfig_getDisabledAddons(JNIEnv return jdisabledAddonsArray; } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setDisabledAddons(JNIEnv* env, jobject obj, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setDisabledAddons(JNIEnv* env, jobject obj, jstring jprogramId, jobjectArray jdisabledAddons) { auto program_id = EmulationSession::GetProgramId(env, jprogramId); @@ -345,7 +345,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setDisabledAddons(JNIEnv* env, j Settings::values.disabled_addons[program_id] = disabled_addons; } -jobjectArray Java_org_suyu_suyu_1emu_utils_NativeConfig_getOverlayControlData(JNIEnv* env, +jobjectArray Java_dev_suyu_suyu_1emu_utils_NativeConfig_getOverlayControlData(JNIEnv* env, jobject obj) { jobjectArray joverlayControlDataArray = env->NewObjectArray(AndroidSettings::values.overlay_control_data.size(), @@ -375,7 +375,7 @@ jobjectArray Java_org_suyu_suyu_1emu_utils_NativeConfig_getOverlayControlData(JN return joverlayControlDataArray; } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setOverlayControlData( +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setOverlayControlData( JNIEnv* env, jobject obj, jobjectArray joverlayControlDataArray) { AndroidSettings::values.overlay_control_data.clear(); int size = env->GetArrayLength(joverlayControlDataArray); @@ -424,7 +424,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setOverlayControlData( } } -jobjectArray Java_org_suyu_suyu_1emu_utils_NativeConfig_getInputSettings(JNIEnv* env, jobject obj, +jobjectArray Java_dev_suyu_suyu_1emu_utils_NativeConfig_getInputSettings(JNIEnv* env, jobject obj, jboolean j_global) { Settings::values.players.SetGlobal(static_cast(j_global)); auto& players = Settings::values.players.GetValue(); @@ -474,7 +474,7 @@ jobjectArray Java_org_suyu_suyu_1emu_utils_NativeConfig_getInputSettings(JNIEnv* return j_input_settings; } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_setInputSettings(JNIEnv* env, jobject obj, +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_setInputSettings(JNIEnv* env, jobject obj, jobjectArray j_value, jboolean j_global) { auto& players = Settings::values.players.GetValue(static_cast(j_global)); @@ -530,7 +530,7 @@ void Java_org_suyu_suyu_1emu_utils_NativeConfig_setInputSettings(JNIEnv* env, jo } } -void Java_org_suyu_suyu_1emu_utils_NativeConfig_saveControlPlayerValues(JNIEnv* env, jobject obj) { +void Java_dev_suyu_suyu_1emu_utils_NativeConfig_saveControlPlayerValues(JNIEnv* env, jobject obj) { Settings::values.players.SetGlobal(false); // Clear all controls from the config in case the user reverted back to globals diff --git a/src/android/app/src/main/jni/native_input.cpp b/src/android/app/src/main/jni/native_input.cpp index 5f83c3fe1b..d3523eb30d 100644 --- a/src/android/app/src/main/jni/native_input.cpp +++ b/src/android/app/src/main/jni/native_input.cpp @@ -186,24 +186,24 @@ void ConnectController(size_t player_index, bool connected) { extern "C" { -jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_isHandheldOnly(JNIEnv* env, +jboolean Java_dev_suyu_suyu_1emu_features_input_NativeInput_isHandheldOnly(JNIEnv* env, jobject j_obj) { return IsHandheldOnly(); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onGamePadButtonEvent( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onGamePadButtonEvent( JNIEnv* env, jobject j_obj, jstring j_guid, jint j_port, jint j_button_id, jint j_action) { EmulationSession::GetInstance().GetInputSubsystem().GetAndroid()->SetButtonState( Common::Android::GetJString(env, j_guid), j_port, j_button_id, j_action != 0); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onGamePadAxisEvent( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onGamePadAxisEvent( JNIEnv* env, jobject j_obj, jstring j_guid, jint j_port, jint j_stick_id, jfloat j_value) { EmulationSession::GetInstance().GetInputSubsystem().GetAndroid()->SetAxisPosition( Common::Android::GetJString(env, j_guid), j_port, j_stick_id, j_value); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onGamePadMotionEvent( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onGamePadMotionEvent( JNIEnv* env, jobject j_obj, jstring j_guid, jint j_port, jlong j_delta_timestamp, jfloat j_x_gyro, jfloat j_y_gyro, jfloat j_z_gyro, jfloat j_x_accel, jfloat j_y_accel, jfloat j_z_accel) { @@ -212,7 +212,7 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_onGamePadMotionEvent( j_z_gyro, j_x_accel, j_y_accel, j_z_accel); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onReadNfcTag(JNIEnv* env, jobject j_obj, +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onReadNfcTag(JNIEnv* env, jobject j_obj, jbyteArray j_data) { jboolean isCopy{false}; std::span data(reinterpret_cast(env->GetByteArrayElements(j_data, &isCopy)), @@ -223,13 +223,13 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_onReadNfcTag(JNIEnv* env } } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onRemoveNfcTag(JNIEnv* env, jobject j_obj) { +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onRemoveNfcTag(JNIEnv* env, jobject j_obj) { if (EmulationSession::GetInstance().IsRunning()) { EmulationSession::GetInstance().GetInputSubsystem().GetVirtualAmiibo()->CloseAmiibo(); } } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onTouchPressed(JNIEnv* env, jobject j_obj, +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onTouchPressed(JNIEnv* env, jobject j_obj, jint j_id, jfloat j_x_axis, jfloat j_y_axis) { if (EmulationSession::GetInstance().IsRunning()) { @@ -237,7 +237,7 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_onTouchPressed(JNIEnv* e } } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onTouchMoved(JNIEnv* env, jobject j_obj, +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onTouchMoved(JNIEnv* env, jobject j_obj, jint j_id, jfloat j_x_axis, jfloat j_y_axis) { if (EmulationSession::GetInstance().IsRunning()) { @@ -245,14 +245,14 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_onTouchMoved(JNIEnv* env } } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onTouchReleased(JNIEnv* env, jobject j_obj, +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onTouchReleased(JNIEnv* env, jobject j_obj, jint j_id) { if (EmulationSession::GetInstance().IsRunning()) { EmulationSession::GetInstance().Window().OnTouchReleased(j_id); } } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onOverlayButtonEventImpl( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onOverlayButtonEventImpl( JNIEnv* env, jobject j_obj, jint j_port, jint j_button_id, jint j_action) { if (EmulationSession::GetInstance().IsRunning()) { EmulationSession::GetInstance().GetInputSubsystem().GetVirtualGamepad()->SetButtonState( @@ -260,7 +260,7 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_onOverlayButtonEventImpl } } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onOverlayJoystickEventImpl( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onOverlayJoystickEventImpl( JNIEnv* env, jobject j_obj, jint j_port, jint j_stick_id, jfloat j_x_axis, jfloat j_y_axis) { if (EmulationSession::GetInstance().IsRunning()) { EmulationSession::GetInstance().GetInputSubsystem().GetVirtualGamepad()->SetStickPosition( @@ -268,7 +268,7 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_onOverlayJoystickEventIm } } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_onDeviceMotionEvent( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_onDeviceMotionEvent( JNIEnv* env, jobject j_obj, jint j_port, jlong j_delta_timestamp, jfloat j_x_gyro, jfloat j_y_gyro, jfloat j_z_gyro, jfloat j_x_accel, jfloat j_y_accel, jfloat j_z_accel) { if (EmulationSession::GetInstance().IsRunning()) { @@ -278,18 +278,18 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_onDeviceMotionEvent( } } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_reloadInputDevices(JNIEnv* env, +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_reloadInputDevices(JNIEnv* env, jobject j_obj) { EmulationSession::GetInstance().System().HIDCore().ReloadInputDevices(); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_registerController(JNIEnv* env, +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_registerController(JNIEnv* env, jobject j_obj, jobject j_device) { EmulationSession::GetInstance().GetInputSubsystem().GetAndroid()->RegisterController(j_device); } -jobjectArray Java_org_suyu_suyu_1emu_features_input_NativeInput_getInputDevices(JNIEnv* env, +jobjectArray Java_dev_suyu_suyu_1emu_features_input_NativeInput_getInputDevices(JNIEnv* env, jobject j_obj) { auto devices = EmulationSession::GetInstance().GetInputSubsystem().GetInputDevices(); jobjectArray jdevices = env->NewObjectArray(devices.size(), Common::Android::GetStringClass(), @@ -301,7 +301,7 @@ jobjectArray Java_org_suyu_suyu_1emu_features_input_NativeInput_getInputDevices( return jdevices; } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_loadInputProfiles(JNIEnv* env, +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_loadInputProfiles(JNIEnv* env, jobject j_obj) { map_profiles.clear(); const auto input_profile_loc = @@ -327,7 +327,7 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_loadInputProfiles(JNIEnv } } -jobjectArray Java_org_suyu_suyu_1emu_features_input_NativeInput_getInputProfileNames( +jobjectArray Java_dev_suyu_suyu_1emu_features_input_NativeInput_getInputProfileNames( JNIEnv* env, jobject j_obj) { std::vector profile_names; profile_names.reserve(map_profiles.size()); @@ -357,14 +357,14 @@ jobjectArray Java_org_suyu_suyu_1emu_features_input_NativeInput_getInputProfileN return j_profile_names; } -jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_isProfileNameValid(JNIEnv* env, +jboolean Java_dev_suyu_suyu_1emu_features_input_NativeInput_isProfileNameValid(JNIEnv* env, jobject j_obj, jstring j_name) { return Common::Android::GetJString(env, j_name).find_first_of("<>:;\"/\\|,.!?*") == std::string::npos; } -jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_createProfile(JNIEnv* env, +jboolean Java_dev_suyu_suyu_1emu_features_input_NativeInput_createProfile(JNIEnv* env, jobject j_obj, jstring j_name, jint j_player_index) { @@ -380,7 +380,7 @@ jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_createProfile(JNIEnv return SaveProfile(profile_name, j_player_index); } -jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_deleteProfile(JNIEnv* env, +jboolean Java_dev_suyu_suyu_1emu_features_input_NativeInput_deleteProfile(JNIEnv* env, jobject j_obj, jstring j_name, jint j_player_index) { @@ -398,21 +398,21 @@ jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_deleteProfile(JNIEnv return !ProfileExistsInMap(profile_name) && !ProfileExistsInFilesystem(profile_name); } -jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_loadProfile(JNIEnv* env, jobject j_obj, +jboolean Java_dev_suyu_suyu_1emu_features_input_NativeInput_loadProfile(JNIEnv* env, jobject j_obj, jstring j_name, jint j_player_index) { auto profile_name = Common::Android::GetJString(env, j_name); return LoadProfile(profile_name, j_player_index); } -jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_saveProfile(JNIEnv* env, jobject j_obj, +jboolean Java_dev_suyu_suyu_1emu_features_input_NativeInput_saveProfile(JNIEnv* env, jobject j_obj, jstring j_name, jint j_player_index) { auto profile_name = Common::Android::GetJString(env, j_name); return SaveProfile(profile_name, j_player_index); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_loadPerGameConfiguration( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_loadPerGameConfiguration( JNIEnv* env, jobject j_obj, jint j_player_index, jint j_selected_index, jstring j_selected_profile_name) { static constexpr size_t HANDHELD_INDEX = 8; @@ -460,23 +460,23 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_loadPerGameConfiguration handheld_controller->ReloadFromSettings(); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_beginMapping(JNIEnv* env, jobject j_obj, +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_beginMapping(JNIEnv* env, jobject j_obj, jint jtype) { EmulationSession::GetInstance().GetInputSubsystem().BeginMapping( static_cast(jtype)); } -jstring Java_org_suyu_suyu_1emu_features_input_NativeInput_getNextInput(JNIEnv* env, +jstring Java_dev_suyu_suyu_1emu_features_input_NativeInput_getNextInput(JNIEnv* env, jobject j_obj) { return Common::Android::ToJString( env, EmulationSession::GetInstance().GetInputSubsystem().GetNextInput().Serialize()); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_stopMapping(JNIEnv* env, jobject j_obj) { +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_stopMapping(JNIEnv* env, jobject j_obj) { EmulationSession::GetInstance().GetInputSubsystem().StopMapping(); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_updateMappingsWithDefaultImpl( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_updateMappingsWithDefaultImpl( JNIEnv* env, jobject j_obj, jint j_player_index, jstring j_device_params, jstring j_display_name) { auto& input_subsystem = EmulationSession::GetInstance().GetInputSubsystem(); @@ -516,7 +516,7 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_updateMappingsWithDefaul } } -jstring Java_org_suyu_suyu_1emu_features_input_NativeInput_getButtonParamImpl(JNIEnv* env, +jstring Java_dev_suyu_suyu_1emu_features_input_NativeInput_getButtonParamImpl(JNIEnv* env, jobject j_obj, jint j_player_index, jint j_button) { @@ -528,7 +528,7 @@ jstring Java_org_suyu_suyu_1emu_features_input_NativeInput_getButtonParamImpl(JN .Serialize()); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_setButtonParamImpl( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_setButtonParamImpl( JNIEnv* env, jobject j_obj, jint j_player_index, jint j_button_id, jstring j_param) { ApplyControllerConfig(j_player_index, [&](Core::HID::EmulatedController* controller) { controller->SetButtonParam(j_button_id, @@ -536,7 +536,7 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_setButtonParamImpl( }); } -jstring Java_org_suyu_suyu_1emu_features_input_NativeInput_getStickParamImpl(JNIEnv* env, +jstring Java_dev_suyu_suyu_1emu_features_input_NativeInput_getStickParamImpl(JNIEnv* env, jobject j_obj, jint j_player_index, jint j_stick) { @@ -548,7 +548,7 @@ jstring Java_org_suyu_suyu_1emu_features_input_NativeInput_getStickParamImpl(JNI .Serialize()); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_setStickParamImpl( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_setStickParamImpl( JNIEnv* env, jobject j_obj, jint j_player_index, jint j_stick_id, jstring j_param) { ApplyControllerConfig(j_player_index, [&](Core::HID::EmulatedController* controller) { controller->SetStickParam(j_stick_id, @@ -556,14 +556,14 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_setStickParamImpl( }); } -jint Java_org_suyu_suyu_1emu_features_input_NativeInput_getButtonNameImpl(JNIEnv* env, +jint Java_dev_suyu_suyu_1emu_features_input_NativeInput_getButtonNameImpl(JNIEnv* env, jobject j_obj, jstring j_param) { return static_cast(EmulationSession::GetInstance().GetInputSubsystem().GetButtonName( Common::ParamPackage(Common::Android::GetJString(env, j_param)))); } -jintArray Java_org_suyu_suyu_1emu_features_input_NativeInput_getSupportedStyleTagsImpl( +jintArray Java_dev_suyu_suyu_1emu_features_input_NativeInput_getSupportedStyleTagsImpl( JNIEnv* env, jobject j_obj, jint j_player_index) { auto supported_styles = GetSupportedStyles(j_player_index); jintArray j_supported_indexes = env->NewIntArray(supported_styles.size()); @@ -572,7 +572,7 @@ jintArray Java_org_suyu_suyu_1emu_features_input_NativeInput_getSupportedStyleTa return j_supported_indexes; } -jint Java_org_suyu_suyu_1emu_features_input_NativeInput_getStyleIndexImpl(JNIEnv* env, +jint Java_dev_suyu_suyu_1emu_features_input_NativeInput_getStyleIndexImpl(JNIEnv* env, jobject j_obj, jint j_player_index) { return static_cast(EmulationSession::GetInstance() @@ -582,7 +582,7 @@ jint Java_org_suyu_suyu_1emu_features_input_NativeInput_getStyleIndexImpl(JNIEnv ->GetNpadStyleIndex(true)); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_setStyleIndexImpl(JNIEnv* env, +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_setStyleIndexImpl(JNIEnv* env, jobject j_obj, jint j_player_index, jint j_style_index) { @@ -599,14 +599,14 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_setStyleIndexImpl(JNIEnv } } -jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_isControllerImpl(JNIEnv* env, +jboolean Java_dev_suyu_suyu_1emu_features_input_NativeInput_isControllerImpl(JNIEnv* env, jobject j_obj, jstring jparams) { return static_cast(EmulationSession::GetInstance().GetInputSubsystem().IsController( Common::ParamPackage(Common::Android::GetJString(env, jparams)))); } -jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_getIsConnected(JNIEnv* env, +jboolean Java_dev_suyu_suyu_1emu_features_input_NativeInput_getIsConnected(JNIEnv* env, jobject j_obj, jint j_player_index) { auto& hid_core = EmulationSession::GetInstance().System().HIDCore(); @@ -618,7 +618,7 @@ jboolean Java_org_suyu_suyu_1emu_features_input_NativeInput_getIsConnected(JNIEn return controller->IsConnected(true); } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_connectControllersImpl( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_connectControllersImpl( JNIEnv* env, jobject j_obj, jbooleanArray j_connected) { jboolean isCopy = false; auto j_connected_array_size = env->GetArrayLength(j_connected); @@ -628,7 +628,7 @@ void Java_org_suyu_suyu_1emu_features_input_NativeInput_connectControllersImpl( } } -void Java_org_suyu_suyu_1emu_features_input_NativeInput_resetControllerMappings( +void Java_dev_suyu_suyu_1emu_features_input_NativeInput_resetControllerMappings( JNIEnv* env, jobject j_obj, jint j_player_index) { // Clear all previous mappings for (int button_id = 0; button_id < Settings::NativeButton::NumButtons; ++button_id) { diff --git a/src/android/app/src/main/jni/native_log.cpp b/src/android/app/src/main/jni/native_log.cpp index e1f74d4701..29a33119e6 100644 --- a/src/android/app/src/main/jni/native_log.cpp +++ b/src/android/app/src/main/jni/native_log.cpp @@ -7,23 +7,23 @@ extern "C" { -void Java_org_suyu_suyu_1emu_utils_Log_debug(JNIEnv* env, jobject obj, jstring jmessage) { +void Java_dev_suyu_suyu_1emu_utils_Log_debug(JNIEnv* env, jobject obj, jstring jmessage) { LOG_DEBUG(Frontend, "{}", Common::Android::GetJString(env, jmessage)); } -void Java_org_suyu_suyu_1emu_utils_Log_warning(JNIEnv* env, jobject obj, jstring jmessage) { +void Java_dev_suyu_suyu_1emu_utils_Log_warning(JNIEnv* env, jobject obj, jstring jmessage) { LOG_WARNING(Frontend, "{}", Common::Android::GetJString(env, jmessage)); } -void Java_org_suyu_suyu_1emu_utils_Log_info(JNIEnv* env, jobject obj, jstring jmessage) { +void Java_dev_suyu_suyu_1emu_utils_Log_info(JNIEnv* env, jobject obj, jstring jmessage) { LOG_INFO(Frontend, "{}", Common::Android::GetJString(env, jmessage)); } -void Java_org_suyu_suyu_1emu_utils_Log_error(JNIEnv* env, jobject obj, jstring jmessage) { +void Java_dev_suyu_suyu_1emu_utils_Log_error(JNIEnv* env, jobject obj, jstring jmessage) { LOG_ERROR(Frontend, "{}", Common::Android::GetJString(env, jmessage)); } -void Java_org_suyu_suyu_1emu_utils_Log_critical(JNIEnv* env, jobject obj, jstring jmessage) { +void Java_dev_suyu_suyu_1emu_utils_Log_critical(JNIEnv* env, jobject obj, jstring jmessage) { LOG_CRITICAL(Frontend, "{}", Common::Android::GetJString(env, jmessage)); } diff --git a/src/android/app/src/main/res/layout/fragment_emulation.xml b/src/android/app/src/main/res/layout/fragment_emulation.xml index fb56b3c9d8..e43e9fe208 100644 --- a/src/android/app/src/main/res/layout/fragment_emulation.xml +++ b/src/android/app/src/main/res/layout/fragment_emulation.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" android:keepScreenOn="true" android:defaultFocusHighlightEnabled="false" - tools:context="org.suyu.suyu_emu.fragments.EmulationFragment" + tools:context="dev.suyu.suyu_emu.fragments.EmulationFragment" tools:openDrawer="start"> - - + app:argType="dev.suyu.suyu_emu.features.settings.model.Settings$MenuTag" /> + app:argType="dev.suyu.suyu_emu.features.settings.model.Settings$MenuTag" /> + app:argType="dev.suyu.suyu_emu.model.Game" /> @@ -157,19 +157,19 @@ app:destination="@id/perGamePropertiesFragment" /> + app:argType="dev.suyu.suyu_emu.model.Game" /> + app:argType="dev.suyu.suyu_emu.model.Game" /> diff --git a/src/android/app/src/main/res/navigation/settings_navigation.xml b/src/android/app/src/main/res/navigation/settings_navigation.xml index 94ba7b61a6..31993fb171 100644 --- a/src/android/app/src/main/res/navigation/settings_navigation.xml +++ b/src/android/app/src/main/res/navigation/settings_navigation.xml @@ -6,14 +6,14 @@ + app:argType="dev.suyu.suyu_emu.features.settings.model.Settings$MenuTag" /> diff --git a/src/android/app/src/main/res/values-ar/strings.xml b/src/android/app/src/main/res/values-ar/strings.xml index 2eacae1d5c..6717a3527a 100644 --- a/src/android/app/src/main/res/values-ar/strings.xml +++ b/src/android/app/src/main/res/values-ar/strings.xml @@ -34,7 +34,7 @@ يسمح لـ يوزو بملء قائمة الألعاب تخطي تحديد مجلد الألعاب؟ لن يتم عرض الألعاب في قائمة الألعاب إذا لم يتم تحديد مجلد - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games البحث عن ألعاب إعدادات البحث تم تحديد مجلد الألعاب @@ -42,7 +42,7 @@ مطلوب لفك تشفير ألعاب البيع بالتجزئة تخطي إضافة المفاتيح؟ مطلوب مفاتيح صالحة لمحاكاة ألعاب البيع بالتجزئة. ستعمل تطبيقات البيرة المنزلية فقط إذا تابعت - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction الإشعارات امنح إذن الإشعار باستخدام الزر أدناه منح الإذن @@ -63,7 +63,7 @@ وحاول مرة أخر keys تحقق من أن ملف المفاتيح له امتداد وحاول مرة أخر bin تحقق من أن ملف المفاتيح له امتداد مفاتيح التشفير غير صالحة - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys الملف المحدد غير صحيح أو تالف. يرجى إعادة المفاتيح الخاصة بك GPU مدير برنامج تشغيل GPU تثبيت برنامج تشغيل @@ -107,7 +107,7 @@ لا يُسمح بتثبيت الألعاب الأساسية لتجنب التعارضات المحتملة. %1$d تم التثبيت بنجاح %1$d تمت الكتابة فوقه بنجاح - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates برامج التشغيل المخصصة غير مدعومة تحميل برنامج التشغيل المخصص غير معتمد حاليًا لهذا الجهاز.\nحدد هذا الخيار مرة أخرى في المستقبل لمعرفة ما إذا تمت إضافة الدعم! إدارة بيانات يوزو @@ -150,7 +150,7 @@ تم استيراد بيانات المستخدم بنجاح تم إلغاء التصدير https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu diff --git a/src/android/app/src/main/res/values-ckb/strings.xml b/src/android/app/src/main/res/values-ckb/strings.xml index bb630f934a..510b33bcad 100644 --- a/src/android/app/src/main/res/values-ckb/strings.xml +++ b/src/android/app/src/main/res/values-ckb/strings.xml @@ -1,7 +1,7 @@ - ئەم نەرمەکاڵایە یارییەکانی کۆنسۆلی نینتێندۆ سویچ کارپێدەکات. هیچ ناونیشانێکی یاری و کلیلی تێدا نییە..<br /><br />پێش ئەوەی دەست پێ بکەیت، تکایە شوێنی فایلی prod.keys ]]> دیاریبکە لە نێو کۆگای ئامێرەکەت.<br /><br />زیاتر فێربە]]> + ئەم نەرمەکاڵایە یارییەکانی کۆنسۆلی نینتێندۆ سویچ کارپێدەکات. هیچ ناونیشانێکی یاری و کلیلی تێدا نییە..<br /><br />پێش ئەوەی دەست پێ بکەیت، تکایە شوێنی فایلی prod.keys ]]> دیاریبکە لە نێو کۆگای ئامێرەکەت.<br /><br />زیاتر فێربە]]> ئاگاداری و هەڵەکان ئاگادارکردنەوەکان پیشان دەدات کاتێک شتێک بە هەڵەدا دەچێت. مۆڵەتی ئاگادارکردنەوە نەدراوە! @@ -32,14 +32,14 @@ ڕێگە بە یوزو دەدات بۆ پڕکردنەوەی لیستی یارییەکان هەڵبژاردنی فۆڵدەری یارییەکان تێپەڕدەکەیت؟ یارییەکان لە لیستی یارییەکاندا پیشان نادرێن ئەگەر فۆڵدەرێک هەڵنەبژێردرێت. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games گەڕان بەدوای یارییەکاندا ناونیشانی یارییەکان هەڵبژێردرا دابمەزرێنە prod.keys پێویستە بۆ کۆدکردنەوەى یارییە تاکەکەسییەکان زیادکردنی کلیلەکان تێپەڕدەکەیت؟ کلیلی دروست پێویستە بۆ وەرگرتنی یارییەکانی تاکەکەسی. تەنها ئەپەکانی homebrew کاردەکەن ئەگەر بەردەوام بیت. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction ئاگادارکردنەوەکان بە دوگمەی خوارەوە مۆڵەتی ئاگادارکردنەوەکە بدە. مۆڵەت بدە @@ -60,7 +60,7 @@ دڵنیابەوە کە فایلی کلیلەکانت درێژکراوەی .keys ی هەیە و دووبارە هەوڵبدەرەوە. دڵنیابە کە فایلی کلیلەکانت درێژکراوەی .bin ی هەیە و دووبارە هەوڵبدەرەوە. کلیلی کۆدکردنی نادروستە - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys فایلە هەڵبژێردراوەکە هەڵەیە یان تێکچووە. تکایە دووبارە کلیلەکانت دەربێنەوە. دامەزراندنی وەگەڕخەری GPU دامەزراندنی وەگەڕخەری بەدیل بۆ ئەوەی بە ئەگەرێکی زۆرەوە کارایی باشتر یان وردبینی هەبێت @@ -94,8 +94,8 @@ هیچ فایلێکی لۆگ نەدۆزراوە دامەزراندنی ناوەڕۆکی یاری دامەزراندنی نوێکاری یارییەکان یان DLC - https://suyu-emu.org/help/quickstart/#dumping-installed-updates - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-decryption-keys گایا ڕاستەقینە نییە @@ -107,7 +107,7 @@ ئەو پڕۆژانەی کە یوزوی بۆ ئەندرۆید ڕەخساند بونیات https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -246,7 +246,7 @@ وەشان ڕۆمەکەت کۆدکراوە - prod.keys فایلەکەت بۆ ئەوەی بتوانرێت یارییەکان کۆد بکرێنەوە.]]> + prod.keys فایلەکەت بۆ ئەوەی بتوانرێت یارییەکان کۆد بکرێنەوە.]]> هەڵەیەک لە دەستپێکردنی ناوەکی ڤیدیۆکەدا ڕوویدا ئەمەش بەزۆری بەهۆی وەگەڕخەرێکی ناتەبای GPU ەوەیە. دامەزراندنی وەگەڕخەری GPU ی تایبەتمەندکراو لەوانەیە ئەم کێشەیە چارەسەر بکات. ناتوانرێت ڕۆم باربکرێت diff --git a/src/android/app/src/main/res/values-cs/strings.xml b/src/android/app/src/main/res/values-cs/strings.xml index 6d09b552cd..4318d89afd 100644 --- a/src/android/app/src/main/res/values-cs/strings.xml +++ b/src/android/app/src/main/res/values-cs/strings.xml @@ -26,10 +26,10 @@ Hledat a filtrovat hry Vybrat složku s hrami Spravovat složky s hrami - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Instalovat prod.keys Přeskočit přidávání klíčů? - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Oznámení Udělit oprávnění Přeskočit udělení oprávnění k oznámení? @@ -47,7 +47,7 @@ Klíče úspěšně nainstalovány Chyba při čtení šifrovacích klíčů Neplatné šifrovací klíče - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Správce ovladače GPU Instalovat GPU ovladač Pokročilé nastavení @@ -97,7 +97,7 @@ Uživatelská data byla úspěšně importována. Export zrušen https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu https://play.google.com/store/apps/details?id=org.suyu.suyu_emu.ea diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index 8a69115433..b74c08c6ce 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -1,7 +1,7 @@ - Diese Software kann Spiele für die Nintendo Switch abspielen. Keine Spiele oder Spielekeys sind enthalten.<br /><br />Bevor du beginnst, bitte halte deine prod.keys ]]> auf deinem Gerät bereit. .<br /><br />Mehr Infos]]> + Diese Software kann Spiele für die Nintendo Switch abspielen. Keine Spiele oder Spielekeys sind enthalten.<br /><br />Bevor du beginnst, bitte halte deine prod.keys ]]> auf deinem Gerät bereit. .<br /><br />Mehr Infos]]> Hinweise und Fehler Zeigt Benachrichtigungen an, wenn etwas schief läuft. Berechtigung für Benachrichtigungen nicht erlaubt! @@ -35,7 +35,7 @@ Erlaubt suyu die Spieleliste zu füllen Auswahl des Spieleverzeichnisses überspringen? Spiele werden in der Spieleliste nicht angezeigt, wenn kein Ordner ausgewählt ist. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Spiele suchen Einstellungen suchen Spieleverzeichnis ausgewählt @@ -43,7 +43,7 @@ Zum Entschlüsseln von Spielen benötigt Hinzufügen der Schlüssel überspringen? Für die Emulation von Spielen sind gültige Schlüssel erforderlich. Wenn du fortfährst, funktionieren nur Homebrew-Anwendungen. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Benachrichtigungen Erteile mit dem Knopf unten die Berechtigung, Benachrichtigungen zu senden. Berechtigung erteilen @@ -63,7 +63,7 @@ Überprüfen Sie, ob Ihre Schlüsseldatei die Erweiterung \".keys\" hat, und versuchen Sie es erneut. Überprüfen Sie, ob Ihre Schlüsseldatei die Erweiterung \".bin\" hat, und versuchen Sie es erneut. Ungültige Schlüssel - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Die ausgewählte Datei ist falsch oder beschädigt. Bitte kopieren Sie Ihre Schlüssel erneut. GPU-Treiber Verwaltung GPU-Treiber installieren @@ -108,12 +108,12 @@ Wirklich fortfahren? %1$d Installationsfehler %1$d erfolgreich installiert %1$d erfolgreich überschrieben - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates suyu-Daten Verwalten Speicherdaten teilen Spiele-Ordner Spiele-Ordner hinzufügen - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Firmware nicht installiert @@ -132,7 +132,7 @@ Wirklich fortfahren? Nutzerdaten erfolgreich importiert Export abgebrochen https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -319,7 +319,7 @@ Wirklich fortfahren? Integritätsüberprüfung konnte nicht durchgeführt werden Das ROM ist verschlüsselt - prod.keys Datei installiert ist, damit Spiele entschlüsselt werden können.]]> + prod.keys Datei installiert ist, damit Spiele entschlüsselt werden können.]]> Bei der Initialisierung des Videokerns ist ein Fehler aufgetreten Dies wird normalerweise durch einen inkompatiblen GPU-Treiber verursacht. Die Installation eines passenden GPU-Treibers kann dieses Problem beheben. ROM konnte nicht geladen werden diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index ebe05df24a..7262bff489 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -1,7 +1,7 @@ - Este software ejecuta juegos para la videoconsola Nintendo Switch. Los videojuegos o claves no vienen incluidos.<br /><br />Antes de empezar, por favor, localice el archivo prod.keys ]]>en el almacenamiento de su dispositivo..<br /><br />Saber más]]> + Este software ejecuta juegos para la videoconsola Nintendo Switch. Los videojuegos o claves no vienen incluidos.<br /><br />Antes de empezar, por favor, localice el archivo prod.keys ]]>en el almacenamiento de su dispositivo..<br /><br />Saber más]]> Avisos y errores Mostrar notificaciones cuándo algo vaya mal. ¡Permisos de notificación no concedidos! @@ -35,7 +35,7 @@ Permite que suyu llene la lista de juegos ¿Omitir la selección de la carpeta de juegos? No se mostrará ningún juego si no se ha seleccionado una carpeta de juegos. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Buscar juegos Buscar configuración Directorio de juegos seleccionado @@ -43,7 +43,7 @@ Requerido para descifrar juegos ¿Omitir agregar claves? Se requieren claves válidas para emular juegos. Solo las aplicaciones homebrew funcionarán si continúas. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Notificaciones Otorga el permiso de notificación con el botón de abajo. Conceder permiso @@ -64,7 +64,7 @@ Compruebe que el archivo de claves tenga una extensión .keys y pruebe otra vez. Compruebe que el archivo de claves tenga una extensión .bin y pruebe otra vez. Claves de cifrado no válidas - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys El archivo seleccionado es incorrecto o está corrupto. Vuelva a redumpear sus claves. Explorador de drivers de GPU Instalar driver de GPU @@ -114,7 +114,7 @@ Contenido(s) de juego instalado/s con éxito %1$d instalado con éxito %1$d sobreescrito con éxito - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates Drivers personalizados no soportados En estos momentos, la carga de drivers personalizados no está disponible para este dispositivo..\n¡Comprueba esta opción en el futuro para ver si ya está añadido el soporte a ese dispositivo! Administrar datos de suyu @@ -141,14 +141,14 @@ Comprueba todo el contenido instalado por si hubiese alguno corrupto Faltan las claves de encriptación El firmware y los juegos no se pueden desencriptar - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Ejecutador de applet Ejecutar applets de sistema usando el firmware instalado Firmware no instalado Applet no disponible - prod.keys y el firmware estén instalados e inténtelo de nuevo.]]> + prod.keys y el firmware estén instalados e inténtelo de nuevo.]]> Álbum Ver las imágenes que están en la carpeta \"screenshots\" del usuario con el visor de fotos del sistema Editor de Mii @@ -181,7 +181,7 @@ Exportación cancelada Asegúrese de que las carpetas de datos de usuario estén en la raíz de la carpeta del zip y contengan un archivo config en config/config.ini e inténtelo de nuevo. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -410,8 +410,8 @@ Su ROM está encriptada - cartuchos de juegos o títulos instalados.]]> - prod.keys está instalado, para que los juegos sean descifrados.]]> + cartuchos de juegos o títulos instalados.]]> + prod.keys está instalado, para que los juegos sean descifrados.]]> Ocurrió un error al inicializar el núcleo de video, posiblemente debido a una incompatibilidad con el driver seleccionado Esto suele deberse a un driver de GPU incompatible. La instalación de un controlador de GPU personalizado puede resolver este problema. No se pudo cargar la ROM diff --git a/src/android/app/src/main/res/values-fa/strings.xml b/src/android/app/src/main/res/values-fa/strings.xml index 8112b8a853..884e9e4334 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -35,7 +35,7 @@ به suyu اجازه می دهد تا لیست باز‌ی‌ها را پر کند از انتخاب پوشه بازی رد می‌شوید؟ اگر پوشه‌ای انتخاب نشده باشد، بازی‌ها در لیست بازی‌ها نمایش داده نمی‌شوند. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games جستجو در بازی‌ها جستجو در تنظیمات پوشه بازی‌ها انتخاب شد @@ -43,7 +43,7 @@ برای رمزگشایی بازی‌های فروشگاهی مورد نیاز است افزودن کلیدها را رد می‌کنید؟ کلیدهای معتبر برای شبیه‌سازی بازی‌های فروشگاهی مورد نیاز است. اگر ادامه دهید، فقط برنامه‌های سیستم ریزکامپیوتری کار خواهند کرد. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction اعلان‌ها مجوز اعلان را با دکمه زیر اعطا کنید. اجازه بدهید @@ -64,7 +64,7 @@ بررسی کنید که فایل کلیدهای شما دارای پسوند keys. باشد و دوباره امتحان کنید. بررسی کنید که فایل کلیدهای شما دارای پسوند bin. باشد و دوباره امتحان کنید. کلیدهای رمزگذاری نامعتبر - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys فایل انتخابی نادرست یا خراب است. لطفا کلیدهای خود را دوباره استخراج کنید. مدیریت درایور پردازنده گرافیکی نصب درایور پردازنده گرافیکی @@ -114,7 +114,7 @@ محتوا(های) بازی با موفقیت نصب شد %1$dبا موفقیت نصب شد %1$dبا موفقیت بازنویسی شد - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates درایورهای سفارشی پشتیبانی نمی‌شوند بارگیری درایور سفارشی در حال حاضر برای این دستگاه پشتیبانی نمی‌شود.\nاین گزینه را دوباره در آینده بررسی کنید تا ببینید آیا پشتیبانی اضافه شده است یا خیر! مدیریت داده‌های suyu @@ -139,14 +139,14 @@ تمام محتوای نصب شده را از نظر خرابی بررسی می‌کند کلیدهای رمزگذاری وجود ندارند ثابت‌افزار و بازی‌های فروشگاهی قابل رمزگشایی نیستند - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys اجراکننده برنامک برنامک‌های سیستم را با استفاده از ثابت‌افزار نصب شده راه اندازی کنید ثابت‌افزار نصب نیست برنامک در دسترس نیست - prod.keys و ثابت‌افزار شما نصب شده است و دوباره امتحان کنید.]]> + prod.keys و ثابت‌افزار شما نصب شده است و دوباره امتحان کنید.]]> آلبوم تصاویر ذخیره شده در پوشه اسکرین شات‌های کاربر را با نمایشگر عکس سیستم مشاهده کنید ویرایش Mii @@ -179,7 +179,7 @@ صدور لغو شد مطمئن شوید که پوشه‌های داده کاربر در ریشه پوشه zip و حاوی یک فایل پیکربندی در config/config.ini هستند سپس دوباره امتحان کنید. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -410,7 +410,7 @@ رام شما رمزگذاری شده است - کارتیج‌های بازی یا عناوین نصب شده خود را استخراج کنید.]]> + کارتیج‌های بازی یا عناوین نصب شده خود را استخراج کنید.]]> در راه‌اندازی اولیه هسته ویدیو خطایی رخ داد این مورد معمولاً توسط یک درایور گرافیکی ناسازگار ایجاد می‌شود. نصب درایور گرافیکی سفارشی ممکن است این مشکل را حل کند. diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index f98ea6a35f..34bfd2cb79 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -1,7 +1,7 @@ - Ce logiciel exécutera des jeux pour la console de jeu Nintendo Switch. Aucun jeux ou clés n\'est inclus.<br /><br />Avant de commencer, veuillez localiser votre fichier prod.keys ]]> sur le stockage de votre appareil.<br /><br />En savoir plus]]> + Ce logiciel exécutera des jeux pour la console de jeu Nintendo Switch. Aucun jeux ou clés n\'est inclus.<br /><br />Avant de commencer, veuillez localiser votre fichier prod.keys ]]> sur le stockage de votre appareil.<br /><br />En savoir plus]]> Avis et erreurs Affiche des notifications en cas de problème. Permission de notification non accordée ! @@ -35,7 +35,7 @@ Permet à suyu de remplir la liste des jeux Ne pas sélectionner le dossier des jeux ? Les jeux ne seront pas affichés dans la liste des jeux si aucun dossier n\'est sélectionné. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Rechercher des jeux Rechercher un paramètre Répertoire de jeux sélectionné @@ -43,7 +43,7 @@ Nécessaire pour décrypter les jeux commerciaux. Sauter l\'ajout des clés ? Des clés valides sont nécessaires pour émuler des jeux commerciaux. Seules les applications homebrew fonctionneront si vous continuez. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Notifications Accorder la permission de notification avec le bouton ci-dessous. Accorder la permission @@ -64,7 +64,7 @@ Vérifiez que votre fichier de clés a une extension .keys et réessayez. Vérifiez que votre fichier de clés a une extension .bin et réessayez. Clés de chiffrement invalides - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Le fichier sélectionné est incorrect ou corrompu. Veuillez dumper à nouveau vos clés. Gestionnaire de pilotes du GPU Installer le pilote du GPU @@ -114,7 +114,7 @@ Contenu du jeu installé avec succès %1$d installé avec succès %1$d écrasé avec succès - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates Pilotes personnalisés non supporté Le chargement des pilotes personnalisés ne sont pas actuellement pris en charge pour ce périphérique. Vérifiez à nouveau cette option à l\'avenir pour voir si la prise en charge a été ajoutée ! Gérer les données de suyu @@ -141,14 +141,14 @@ Vérifie l\'intégrité des contenus installés Les clés de chiffrement sont manquantes. Le firmware et les jeux commerciaux ne peuvent pas être déchiffrés - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Lanceur d\'applets Lancer des applets système en utilisant le firmware installé Firmware non installé Applet non disponible - prod.keys et le firmware sont installés et essayez à nouveau.]]> + prod.keys et le firmware sont installés et essayez à nouveau.]]> Album Afficher les images stockées dans le dossier de captures d\'écran de l\'utilisateur avec le visualiseur de photos système. Éditeur Mii @@ -181,7 +181,7 @@ Exportation annulée Assurez-vous que les dossiers de données utilisateur se trouvent à la racine du dossier ZIP et contiennent un fichier de configuration à config/config.ini, puis réessayez. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -460,8 +460,8 @@ Votre ROM est cryptée - cartouches de jeu ou de vos titres installés.]]> - prod.keys est installé pour que les jeux puissent être déchiffrés.]]> + cartouches de jeu ou de vos titres installés.]]> + prod.keys est installé pour que les jeux puissent être déchiffrés.]]> Une erreur s\'est produite lors de l\'initialisation du noyau vidéo Cela est généralement dû à un pilote GPU incompatible. L\'installation d\'un pilote GPU personnalisé peut résoudre ce problème. Impossible de charger la ROM diff --git a/src/android/app/src/main/res/values-he/strings.xml b/src/android/app/src/main/res/values-he/strings.xml index f1087d6131..ee8be05463 100644 --- a/src/android/app/src/main/res/values-he/strings.xml +++ b/src/android/app/src/main/res/values-he/strings.xml @@ -1,7 +1,7 @@ - התוכנה תריץ משחקים לקונסולת ה Nintendo Switch. אף משחק או קבצים בעלי זכויות יוצרים נכללים.<br /><br /> לפני שאת/ה מתחיל בבקשה מצא את קובץ prod.keys]]> על המכשיר.<br /><br />קרא עוד]]> + התוכנה תריץ משחקים לקונסולת ה Nintendo Switch. אף משחק או קבצים בעלי זכויות יוצרים נכללים.<br /><br /> לפני שאת/ה מתחיל בבקשה מצא את קובץ prod.keys]]> על המכשיר.<br /><br />קרא עוד]]> התראות ותקלות מציג התראות כאשר משהו הולך לא כשורה. הרשאות התראות לא ניתנה! @@ -35,7 +35,7 @@ אפשר ל suyu לאכלס את רשימת המשחקים לדלג על בחירת תיקיית המשחקים? משחקים לא יוצגו ברשימת המשחקים אם לנבחרה תיקיית משחקים. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games חפש משחקים חפש בהגדרות ספריית משחקים נבחרה @@ -43,7 +43,7 @@ הכרחי בכדי לפענח משחקים לדלג על הוספת מפתחות? מפתחות חוקיים הכרחיים כדי לשחק במשחקים. רק אפליקציות פירטיות יפעלו אם תמשיך. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction התראות תן גישה להתראות עם הכפתור למטה. תן הרשאה @@ -64,7 +64,7 @@ ודא שלקובץ המפתחות שלך יש סיומת של key. ונסה/י שוב. ודא/י שלקובץ המפתחות שלך יש סיומת של bin. ונסה/י שוב. מפתחות הצפנה לא חוקיים - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys קבוץ שנבחר מושחת או לא נכון. בבקשה הוצא מחדש את המפתחות שלך. מנהל הדרייברים של המעבד הגרפי התקן דרייבר למעבד הגרפי @@ -114,7 +114,7 @@ תוכן (או תכני) המשחק הותקנו בהצלחה %1$d הותקן בהצלחה %1$d נדרס/נכתב מעל בהצלחה - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates דרייברים מותאמים אישית לא נתמכים הטענת דרייבים מותאמים אישית לא נתמך כרגע על מכשיר זה. \nבבקשה בדוק אופציה זו בעתיד בכדי לראות אם נוספה תמיכה! נהל את המידע של suyu @@ -126,14 +126,14 @@ הוסף תיקיית משחקים התיקייה הזו נוספה כבר! מאפייני תיקיית משחקים - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys משגר Applet מערכת שיגור Applet משתמשת בתוכנה המותקנת ה Firmware לא מותקן Applet לא זמין - prod.keysו firmwareשלך מותקנים ונסה שוב.]]> + prod.keysו firmwareשלך מותקנים ונסה שוב.]]> אלבום צפה בתמונות השמורות בתיקיית צילומי המסך של המשתמש בעזרת מציג התמונות של המערכת עורך Mii @@ -166,7 +166,7 @@ ייצוא בוטל ודא שנתוני המשתמש נמצאים בשורש קובץ ה zip ושהוא מכיל קובץ סידור ב config/config.ini ונסה שוב. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -325,8 +325,8 @@ אימות התקינות הצליח! המשחק שלך מוצפן - כרטיסי המשחקאו הכותרות המותקנות שלך.]]> - prod.keys מותקן כך שניתן יהיה לפענח משחקים.]]> + כרטיסי המשחקאו הכותרות המותקנות שלך.]]> + prod.keys מותקן כך שניתן יהיה לפענח משחקים.]]> התרחשה בעיה באתחול של ליבת הווידאו זה בדרך כלל נגרם על ידי דרייבר לא מתאים עבור המעבד הגרפי. התקנת דרייבר אשר מתאים למעבד הגרפי יכול לפתור את הבעיה הזו. אין אפשרות לטעון את המשחק diff --git a/src/android/app/src/main/res/values-hu/strings.xml b/src/android/app/src/main/res/values-hu/strings.xml index 098d65f9fa..61d44a91fe 100644 --- a/src/android/app/src/main/res/values-hu/strings.xml +++ b/src/android/app/src/main/res/values-hu/strings.xml @@ -1,7 +1,7 @@ - Ez a szoftver Nintendo Switch játékkonzolhoz készült játékokat futtat. Nem tartalmaz játékokat vagy kulcsokat. .<br /><br />Mielőtt hozzákezdenél, kérjük, válaszd ki a prod.keys]]> fájl helyét a készülék tárhelyén<br /><br />Tudj meg többet]]> + Ez a szoftver Nintendo Switch játékkonzolhoz készült játékokat futtat. Nem tartalmaz játékokat vagy kulcsokat. .<br /><br />Mielőtt hozzákezdenél, kérjük, válaszd ki a prod.keys]]> fájl helyét a készülék tárhelyén<br /><br />Tudj meg többet]]> Megjegyzések és hibák Értesítések megjelenítése, ha valami rosszul sül el. Nincs engedély az értesítés megjelenítéséhez! @@ -34,7 +34,7 @@ Játékmappák kezelése Kihagyod a játékok mappa kiválasztását? A játékok nem jelennek meg a Játékok listában, ha egy mappa nincs kijelölve. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Játékok keresése Beállítások keresése Játékok könyvtár kiválasztva @@ -42,7 +42,7 @@ Kiskereskedelmi játékok dekódolásához szükséges Kihagyod a kulcsok hozzáadását? A kiskereskedelmi játékok emulálásához érvényes kulcsokra van szükség. Csak a homebrew alkalmazások fognak működni, ha folytatod. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Értesítések Értesítési engedélyek megadása az alábbi gombbal. Engedély megadása @@ -63,7 +63,7 @@ Győződj meg róla, hogy a titkosító fájlod .keys kiterjesztéssel rendelkezik, majd próbáld újra. Győződj meg róla, hogy a titkosító fájlod .bin kiterjesztéssel rendelkezik, majd próbáld újra. Érvénytelen titkosítókulcsok - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys A kiválasztott fájl helytelen, vagy sérült. Állíts össze egy új kulcsot. GPU illesztőprogram-kezelő GPU illesztőprogram telepítése @@ -112,7 +112,7 @@ Játéktartalom sikeresen telepítve %1$d sikeresen telepítve %1$d sikeresen felülírva - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates Egyéni illesztőprogramok nem támogatottak Egyéni illesztőprogram telepítése jelenleg nem támogatott ezen az eszközön.\nNézz vissza később, hátha hozzáadtuk a támogatását! suyu adatok kezelése @@ -137,14 +137,14 @@ A telepített tartalom épségét ellenőrzi Hiányzó titkosítókulcsok A Firmware és a kiskereskedelmi (retail) játékok nem dekódolhatók - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Applet indító Rendszer appletek indítása a telepített firmware-rel Firmware nincs telepítve Applet nem elérhető - prod.keys fájl és a firmware telepítve van, majd próbáld újra.]]> + prod.keys fájl és a firmware telepítve van, majd próbáld újra.]]> Album Képernyőképek megtekintése a rendszer fényképnézegetőjével Mii szerkesztés @@ -176,7 +176,7 @@ Exportálás megszakítva Ellenőrizd, hogy a felhasználói adatok mappái a zip mappa gyökerében vannak, és tartalmaznak egy konfig fájlt a config/config.ini címen, majd próbáld meg újra. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -448,7 +448,7 @@ ROM titkosítva - prod.keys fájl telepítve van, hogy a játékok visszafejthetők legyenek.]]> + prod.keys fájl telepítve van, hogy a játékok visszafejthetők legyenek.]]> Hiba lépett fel a videómag inicializása során Ezt általában egy nem kompatibilis GPU illesztő okozza. Egyéni GPU illesztőprogram telepítése megoldhatja a problémát. Nem sikerült betölteni a ROM-ot diff --git a/src/android/app/src/main/res/values-id/strings.xml b/src/android/app/src/main/res/values-id/strings.xml index c8437b45c1..b80ceb837b 100644 --- a/src/android/app/src/main/res/values-id/strings.xml +++ b/src/android/app/src/main/res/values-id/strings.xml @@ -1,7 +1,7 @@ - Perangkat lunak ini akan menjalankan game untuk konsol game Nintendo Switch. Tidak ada judul game atau kunci yang disertakan.<br /><br />Sebelum memulai, harap cari file prod.keys ]]> di penyimpanan perangkat anda. <br /><br /> Selengkapnya ]]> + Perangkat lunak ini akan menjalankan game untuk konsol game Nintendo Switch. Tidak ada judul game atau kunci yang disertakan.<br /><br />Sebelum memulai, harap cari file prod.keys ]]> di penyimpanan perangkat anda. <br /><br /> Selengkapnya ]]> Pemberitahuan dan error Menampilkan pemberitahuan ketika terjadi kesalahan. Izin notifikasi tidak diberikan! @@ -35,7 +35,7 @@ Izinkan suyu mengisi daftar game Lewati pemilihan folder game? Game tidak akan muncul di list jika tidak ada folder yang dipilih. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Cari permainan Cari pengaturan Direktori game sudah terpilih @@ -43,7 +43,7 @@ Diperlukan untuk mendekripsi game retail Lewati penginstalan keys? Perlu keys yang valid untuk meng-emulate game retail. Hanya homebrew apps yang akan berfungsi jika kamu melanjutkan. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Notifikasi Berikan izin notifikasi dengan tombol di bawah ini. Berikan izin @@ -64,7 +64,7 @@ Pastikan file keys anda memiliki format .keys dan coba lagi. Pastikan file keys anda memiliki format .bin dan coba lagi. Keys enkripsi tidak valid - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys File yang dipilih salah atau rusak. Silakan masukkan kembali kunci Anda. Manajer driver GPU Install driver GPU @@ -114,7 +114,7 @@ Konten(-konten) game sudah berhasil terinstal. %1$d telah berhasil terinstal %1$d telah berhasil ditimpa. - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates Driver kustom tidak didukung Driver kustom saat ini tidak dapat digunakan pada perangkat ini. \nCek opsi ini lain waktu untuk mengetahui apakah dapat digunakan! Kelola data Suyu. @@ -137,7 +137,7 @@ Memeriksa semua konten yang terinstal dari kerusakan Kunci enkripsi hilang Firmware dan game retail tidak dapat didekripsi - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Luncurkan applet @@ -177,7 +177,7 @@ Ekspor Dibatalkan Pastikan folder data pengguna berada di akar folder zip dan berisi file konfigurasi di config/config.ini dan coba lagi. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -402,8 +402,8 @@ ROM-mu ter-enkripsi - kartu permainan atau judul yang terinstal.]]> - prod.keys diinstal sehingga game dapat didekripsi.]]> + kartu permainan atau judul yang terinstal.]]> + prod.keys diinstal sehingga game dapat didekripsi.]]> Terjadi kesalahan ketika menginisialisasi inti video. Hal ini biasanya disebabkan oleh driver GPU yang tidak kompatibel. Menginstal driver GPU khusus dapat mengatasi masalah ini Tidak Dapat Memuat ROM diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index 10552f1504..7a923d2fc3 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -1,7 +1,7 @@ - Questo software permette di giocare ai giochi della console Nintendo Switch. Nessun gioco o chiave è inclusa.<br /><br />Prima di iniziare, perfavore individua il file prod.keys ]]> nella memoria del tuo dispositivo.<br /><br />Scopri di più]]> + Questo software permette di giocare ai giochi della console Nintendo Switch. Nessun gioco o chiave è inclusa.<br /><br />Prima di iniziare, perfavore individua il file prod.keys ]]> nella memoria del tuo dispositivo.<br /><br />Scopri di più]]> Avvisi ed errori Mostra le notifiche quando qualcosa va storto. Autorizzazione di notifica non concessa! @@ -35,7 +35,7 @@ Consente a suyu di popolare l\'elenco dei giochi Saltare la selezione della cartella dei giochi? I giochi non saranno mostrati nella lista dei giochi se una cartella non è selezionata. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Cerca giochi Cerca impostazione Cartella dei giochi selezionata @@ -43,7 +43,7 @@ Necessario per decrittografare i giochi Saltare l\'aggiunta delle chiavi? Sono necessarie delle chiavi valide per emulare i giochi. Se continui, funzioneranno solo le app homebrew. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Notifiche Concedi l\'autorizzazione alle notifiche con il pulsante in basso. Concedere l\'autorizzazione @@ -64,7 +64,7 @@ Controlla che le tue chiavi abbiano l\'estensione .keys e prova di nuovo. Controlla che le tue chiavi abbiano l\'estensione .bin e prova di nuovo Chiavi di crittografia non valide - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Il file selezionato è incorretto o corrotto. Per favore riesegui il dump delle tue chiavi. Gestore driver GPU Installa i driver GPU @@ -114,7 +114,7 @@ Contenuto/i di gioco installato/i con successo. %1$dinstallato con successo. %1$dsovrascritto con successo - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates I driver personalizzati non sono supportati. I driver personalizzati non sono attualmente supportati su questo dispositivo.\n Ricontrolla in futuro. Gestisci i dati di Suyu @@ -129,14 +129,14 @@ Nessun salvataggio trovato Verifica i contenuti installati Verifica l\'integrità di tutti i contenuti installati. - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Avvia applet Avvia applet di sistema usando il firmware installato Firmware non installato Applet non disponibile - prod.keys e il firmware siano installati e riprova.]]> + prod.keys e il firmware siano installati e riprova.]]> Album Visualizza le immagini salvate nella cartella screenshots dell\'utente con il visualizzatore immagini di sistema Modifica Mii @@ -169,7 +169,7 @@ Esportazione annullata Assicurati che la cartella dei Dati dell\'utente stiano nella radice del file.zip e che sia presente una cartella config in config/config.ini, poi, riprova. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -364,8 +364,8 @@ L\'integrità dei contenuti non è stata validata La tua ROM è criptata - dump delle tue cartucce di giocooppure dei titoli già installati.]]> - prod.keys sia installato in modo che i giochi possano essere decrittati.]]> + dump delle tue cartucce di giocooppure dei titoli già installati.]]> + prod.keys sia installato in modo che i giochi possano essere decrittati.]]> È stato riscontrato un errore nell\'inizializzazione del core video Questo è causato solitamente dal driver incompatibile di una GPU. L\'installazione di driver GPU personalizzati potrebbe risolvere questo problema. Impossibile caricare la ROM diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index 21e2070e31..5294298faa 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -1,7 +1,7 @@ - このソフトウェアでは、Nintendo Switchのゲームを実行できます。 ゲームソフトやキーは含まれません。<br /><br />事前に、 prod.keys ]]> ファイルをストレージに配置しておいてください。<br /><br />詳細]]> + このソフトウェアでは、Nintendo Switchのゲームを実行できます。 ゲームソフトやキーは含まれません。<br /><br />事前に、 prod.keys ]]> ファイルをストレージに配置しておいてください。<br /><br />詳細]]> 通知とエラー 問題の発生時に通知を表示します。 通知が許可されていません! @@ -34,7 +34,7 @@ ゲームをsuyuのゲームリストに追加します ゲームフォルダの選択をスキップしますか? フォルダを選択しないと、ゲームがリストに表示されません。 - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games ゲームを検索 設定を検索 フォルダを選択しました @@ -42,7 +42,7 @@ 製品版ゲームの復号化に必要です キーの追加をスキップしますか? 製品版ゲームのエミュレーションには、有効なキーが必要です。続行すると自作アプリしか機能しません。 - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction 通知 下のボタンで通知を許可してください。 許可 @@ -63,7 +63,7 @@ キーの拡張子が.keysであることを確認し、再度お試しください。 キーの拡張子が.binであることを確認し、再度お試しください。 暗号化キーが無効 - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys ファイルが間違っているか破損しています。キーを再ダンプしてください。 GPUドライバーの管理 GPUドライバー @@ -107,11 +107,11 @@ ゲームコンテンツのインストールに成功しました %1$d のインストールに成功しました %1$d の上書きに成功しました - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates カスタムドライバはサポートされていません suyu データを管理 セーブファイルを共有 - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys ファームウェア未インストール アルバム @@ -133,7 +133,7 @@ ユーザデータのインポートに成功しました エクスポートをキャンセルしました https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -299,7 +299,7 @@ 整合性の確認に失敗しました! ROMが暗号化されています - prod.keys ファイルがインストールされていることを確認してください。]]> + prod.keys ファイルがインストールされていることを確認してください。]]> ビデオコアの初期化中にエラーが発生しました これは通常、互換性のないGPUドライバーが原因で発生します。 カスタムGPUドライバーをインストールすると、問題が解決する可能性があります。 ROMの読み込みに失敗しました diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index a2d2bb9511..4a32020520 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -1,7 +1,7 @@ - 이 소프트웨어는 Nintendo Switch 게임을 실행합니다. 게임 타이틀이나 키는 포함되어 있지 않습니다.<br /><br />시작하기 전에 장치 저장소에서 prod.keys ]]> 파일을 찾아주세요.<br /><br />자세히 알아보기]]> + 이 소프트웨어는 Nintendo Switch 게임을 실행합니다. 게임 타이틀이나 키는 포함되어 있지 않습니다.<br /><br />시작하기 전에 장치 저장소에서 prod.keys ]]> 파일을 찾아주세요.<br /><br />자세히 알아보기]]> 알림 및 오류 문제가 발생하면 알림을 표시합니다. 알림 권한이 부여되지 않았습니다! @@ -35,7 +35,7 @@ suyu에 게임 목록 추가하기 게임 폴더 선택을 건너뛰겠습니까? 폴더를 선택하지 않으면 게임 목록에 게임이 표시되지 않습니다. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games 게임 검색 검색 설정 게임 디렉터리를 설정했습니다. @@ -43,7 +43,7 @@ 패키지 게임 암호 해독에 필요 키 추가를 건너뛰겠습니까? 패키지 게임을 에뮬레이트하려면 유효한 키 값이 필요합니다. 이 단계를 건너뛰면 홈브류 게임만 실행할 수 있습니다. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction 알림 아래 버튼으로 알림 권한을 부여합니다. 알림 켜기 @@ -64,7 +64,7 @@ 키 파일의 확장자가 .keys인지 확인하고 다시 시도하세요. 키 파일의 확장자가 .bin인지 확인하고 다시 시도하세요. 암호화 키가 올바르지 않음 - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys 선택한 파일이 잘못되었거나 손상되었습니다. 키를 다시 덤프하세요. GPU 드라이버 관리자 GPU 드라이버 설치 @@ -114,7 +114,7 @@ 게임 콘텐츠 설치됨 %1$d개를 설치했습니다. %1$d개를 덮어씌웠습니다. - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates 사용자 지정 드라이버는 지원하지 않습니다. 이 장치의 사용자 지정 드라이버 로딩은 현재 지원하지 않습니다.\n나중에 이 옵션을 확인하면 지원이 추가되었는지 확인할 수 있습니다. suyu 데이터 관리 @@ -137,14 +137,14 @@ 전체 설치된 콘텐츠의 손상을 확인합니다. 암호화 키를 찾을 수 없음 펌웨어 및 패키지 게임을 해독할 수 없음 - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys 애플릿 런처 설치된 펌웨어를 사용해 시스템 애플릿을 실행합니다. 펌웨어가 설치되지 않았습니다. 애플릿을 사용할 수 없음 - prod.keys 파일과 펌웨어가 설치되었는지 확인하고 다시 시도하세요.]]> + prod.keys 파일과 펌웨어가 설치되었는지 확인하고 다시 시도하세요.]]> 앨범 시스템 사진 뷰어로 유저 스크린샷 폴더에 저장된 이미지를 확인합니다. Mii 편집 @@ -177,7 +177,7 @@ 내보내기 취소됨 유저 데이터 폴더가 ZIP 폴더의 루트 디렉토리에 위치하고 config/config.ini 구성 파일이 있는지 확인하고 다시 시도하세요. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -403,8 +403,8 @@ 롬 파일이 암호화되어있음 - 게임 카트리지 또는 설치된 타이틀을 다시 덤프하세요.]]> - prod.keys 파일이 설치되어 있는지 확인하세요.]]> + 게임 카트리지 또는 설치된 타이틀을 다시 덤프하세요.]]> + prod.keys 파일이 설치되어 있는지 확인하세요.]]> 비디오 코어를 초기화하는 동안 오류 발생 일반적으로 이 문제는 호환되지 않는 GPU 드라이버로 인해 발생합니다. 사용자 지정 GPU 드라이버를 설치하면 이 문제가 해결될 수 있습니다. 롬 파일을 불러올 수 없음 diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index 9ce92d899f..c9ba29339b 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -1,7 +1,7 @@ - Denne programvaren vil kjøre spill for Nintendo Switch-spillkonsollen. Ingen spilltitler eller nøkler er inkludert.<br /><br />Før du begynner, må du finne prod.keys ]]> filen din på enhetslagringen.<br /><br />Lær mer]]> + Denne programvaren vil kjøre spill for Nintendo Switch-spillkonsollen. Ingen spilltitler eller nøkler er inkludert.<br /><br />Før du begynner, må du finne prod.keys ]]> filen din på enhetslagringen.<br /><br />Lær mer]]> Merknader og feil Viser varsler når noe går galt. Varslingstillatelse ikke gitt! @@ -32,14 +32,14 @@ Gjør det mulig for suyu å fylle ut spillelisten. Hoppe over valg av spillmappe? Spill vises ikke i Spill-listen hvis en mappe ikke er valgt. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Søk i spill| Spillkatalogen er valgt Installer prod.keys Nødvendig for å dekryptere spill Hoppe over å legge til nøkler? Gyldige nøkler er påkrevd for å emulere spill. Bare hjemmebryggede apper vil fungere hvis du fortsetter. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Varsler Gi varslingstillatelse med knappen nedenfor. Gi tillatelse @@ -60,7 +60,7 @@ Kontroller at nøkkelfilen har filtypen .keys, og prøv igjen. Kontroller at nøkkelfilen har filtypen .bin, og prøv igjen. Ugyldige krypteringsnøkler - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Den valgte filen er feil eller ødelagt. Vennligst dump nøklene på nytt. Installer GPU-driver Installer alternative drivere for potensielt bedre ytelse eller nøyaktighet. @@ -94,8 +94,8 @@ Ingen loggfil funnet Installer spillinnhold Installer spilloppdateringer eller DLC - https://suyu-emu.org/help/quickstart/#dumping-installed-updates - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-decryption-keys Gaia er ikke ekte @@ -107,7 +107,7 @@ Prosjekter som gjør suyu for Android mulig Bygg https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -257,7 +257,7 @@ Integritetsverifisering mislyktes! ROM-en din er kryptert - prod.keys filen er installert slik at spillene kan dekrypteres.]]> + prod.keys filen er installert slik at spillene kan dekrypteres.]]> Det oppstod en feil ved initialisering av videokjernen Dette skyldes vanligvis en inkompatibel GPU-driver. Installering av en tilpasset GPU-driver kan løse problemet. Kunne ikke laste inn ROM diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index 02587fd8b1..fedb52c0da 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -1,7 +1,7 @@ - To oprogramowanie umożliwia uruchomienie gier z konsoli Nintendo Switch. Nie zawiera gier ani wymaganych kluczy.<br /><br />Zanim zaczniesz, wybierz plik kluczy prod.keys ]]> z katalogu w pamięci masowej.<br /><br />Dowiedz się więcej]]> + To oprogramowanie umożliwia uruchomienie gier z konsoli Nintendo Switch. Nie zawiera gier ani wymaganych kluczy.<br /><br />Zanim zaczniesz, wybierz plik kluczy prod.keys ]]> z katalogu w pamięci masowej.<br /><br />Dowiedz się więcej]]> Powiadomienia błędy Pokaż powiadomienie gdy coś pójdzie źle Nie zezwolono na powiadomienia! @@ -32,14 +32,14 @@ Pozwala suyu wygenerować listę gier Pominąć wybór folderu z grami? Aby pokazać listę gier wybierz katalog zawierający gry. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Szukaj gier Wybrano katalog gier Instaluj klucze prod.keys Wymagane aby poprawnie odczytać sklepowe gry Pominąć dodawanie kluczy? Poprawne klucze są wymagane aby emulować sklepowe gry. Jeśli przejdziesz dalej, jedynie homebrew będą działać. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Powiadomienia Nadaj uprawnienia dostępu do powiadomień. Nadaj uprawnienia @@ -60,7 +60,7 @@ Upewnij się że twoje klucze mają rozszerzenie .keys i spróbuj ponownie. Upewnij się że twoje klucze mają rozszerzenie .bin i spróbuj ponownie. Niepoprawne klucze - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Wybrany plik jest niepoprawny lub uszkodzony. Zrzuć ponownie swoje klucze. Zainstaluj sterownik GPU Użyj alternatywnych sterowników aby potencjalnie zwiększyć wydajność i naprawić błędy @@ -94,8 +94,8 @@ Nie znaleziono plików logów Zainstaluj zawartość gry Zainstaluj aktualizację gry lub dodatek DLC - https://suyu-emu.org/help/quickstart/#dumping-installed-updates - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-decryption-keys Gaia isn\'t real @@ -107,7 +107,7 @@ Projekty dzięki którym suyu mógł zostać stworzony Wersja https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -255,7 +255,7 @@ Dodatki Twój ROM jest zakodowany - prod.keys jest zainstalowany aby gry mogły zostać odczytane.]]> + prod.keys jest zainstalowany aby gry mogły zostać odczytane.]]> Błąd inicjacji podsystemu graficznego Zazwyczaj spowodowane niekompatybilnym sterownikiem GPU, instalacja niestandardowego sterownika może rozwiązać ten problem. Nie można wczytać pliku ROM diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index 3b3bf806b7..2abc99fb9f 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -1,7 +1,7 @@ - Este software executa jogos do console Nintendo Switch. Não estão inclusos nem jogos ou chaves.<br /><br />Antes de começar, por favor localize o arquivo prod.keys ]]> no armazenamento de seu dispositivo.<br /><br />Saiba mais]]> + Este software executa jogos do console Nintendo Switch. Não estão inclusos nem jogos ou chaves.<br /><br />Antes de começar, por favor localize o arquivo prod.keys ]]> no armazenamento de seu dispositivo.<br /><br />Saiba mais]]> Notificações e erros Mostra notificações quando algo dá errado. Acesso às notificações não concedido! @@ -35,7 +35,7 @@ Permite que o Suyu preencha a lista de jogos Ignorar a seleção da pasta de jogos? Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Procurar jogos Procurar nas configurações Pasta de jogos selecionada @@ -43,7 +43,7 @@ Necessárias para desencriptar jogos comerciais Ignorar a adição de chaves? São necessárias chaves válidas para emular jogos comerciais. Somente aplicativos homebrew funcionarão se você continuar. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Notificações Conceda a permissão de notificação com o botão abaixo. Conceder permissão @@ -64,7 +64,7 @@ Verifique se seu arquivo de chaves possui a extensão .keys e tente novamente. Verifique se seu arquivo de chaves possui a extensão .bin e tente novamente. Chaves de encriptação inválidas - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys O arquivo selecionado está incorreto ou corrompido. Por favor extraia suas chaves novamente. Gerenciador de driver de GPU Instalar driver para GPU @@ -114,7 +114,7 @@ Conteúdo(s) de jogo instalado(s) com sucesso %1$d instalado com sucesso %1$d substituído com sucesso - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates Drivers personalizados não suportados Carregamento de drivers personalizados não suportado para este dispositivo no momento.\nVerifique essa opção novamente no futuro para ver se o suporte foi adicionado! Administrar dados do suyu @@ -141,14 +141,14 @@ Verifica todo o conteúdo instalado em busca de dados corrompidos Faltando chaves de encriptação O firmware e jogos comerciais não poderão ser decriptados - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Launcher de miniaplicativos Execute miniaplicativos do sistema usando o firmware instalado Firmware não instalado Miniaplicativo não disponível - prod.keys e o firmware estão instalados e tente novamente.]]> + prod.keys e o firmware estão instalados e tente novamente.]]> Álbum Visualize imagens armazenadas na pasta de capturas de telas do usuário com o visualizador de imagens do sistema Editor de Mii @@ -181,7 +181,7 @@ Exportação cancelada Verifique se as pastas de dados do usuário estão na raiz da pasta zip, se possuem um arquivo de configuração em config/config.ini e tente novamente. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -461,8 +461,8 @@ uma tentativa de mapeamento automático Sua ROM está encriptada - cartuchos de jogos ou títulos instalados.]]> - prod.keys está instalado para que os jogos possam ser decriptados.]]> + cartuchos de jogos ou títulos instalados.]]> + prod.keys está instalado para que os jogos possam ser decriptados.]]> Ocorreu um erro ao iniciar o núcleo de vídeo. Isto é normalmente causado por um driver de GPU incompatível. Instalar um driver de GPU personalizado pode resolver este problema. Impossível carregar a ROM diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 75ca1330cc..e326cdd400 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -35,7 +35,7 @@ Permite que o Suyu preencha a lista de jogos Ignorar a seleção da pasta de jogos? Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Procurar jogos Procurar nas definições Pasta de Jogos selecionada @@ -43,7 +43,7 @@ Necessário para desencriptar jogos comerciais Ignorar a adição de chaves? São necessárias chaves válidas para emular jogos comerciais. Somente aplicativos homebrew funcionarão se você continuar. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Notificações Conceda a permissão de notificação com o botão abaixo. Conceda permissão @@ -64,7 +64,7 @@ Verifique se seu arquivo keys possui a extensão .keys e tente novamente. Verifique se seu arquivo keys possui a extensão .bin e tente novamente. Chaves de encriptação inválidas - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys O ficheiro selecionado está corrompido. Por favor recarrega as tuas chaves. Gerenciador de driver de GPU Instala driver para GPU @@ -114,7 +114,7 @@ Conteúdo(s) de jogo instalados com sucesso %1$d instalado com sucesso %1$d substituída com êxito - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates Drivers personalizados não suportados Carrea«gamento de drivers personalizados não é suportado pr este dispositivo. \nCheck verifica esta opção de futuro para confirmar se o suporte foi adicionado! Administrar dados suyu @@ -141,7 +141,7 @@ Verifica todo o conteúdo instalado em busca de dados corrompidos Faltando chaves de encriptação O firmware e jogos comerciais não poderão ser decriptados - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Launcher de miniaplicativos @@ -181,7 +181,7 @@ Exportação cancelada Verifiqua se as pastas de dados do utilizados estão na raiz da pasta zip e contêm um arquivo de configuração em config/config.ini e tenta novamente. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -461,8 +461,8 @@ uma tentativa de mapeamento automático A tua ROM está encriptada - cartucho de jogo or títulos instalados.]]> - prod.keys está instalado para que os jogos possam ser desencriptados.]]> + cartucho de jogo or títulos instalados.]]> + prod.keys está instalado para que os jogos possam ser desencriptados.]]> Ocorreu um erro ao iniciar o núcleo de vídeo. Isto é normalmente causado por um driver de GPU incompatível. Instalar um driver GPU pode resolver este problema. Impossível carregar a tua ROM diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index 0190726def..c78667db11 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -1,7 +1,7 @@ - Это программное обеспечение позволяет запускать игры для игровой консоли Nintendo Switch. Мы не предоставляем сами игры или ключи.<br /><br />Перед началом работы найдите файл prod.keys ]]> в хранилище устройства..<br /><br />Узнать больше]]> + Это программное обеспечение позволяет запускать игры для игровой консоли Nintendo Switch. Мы не предоставляем сами игры или ключи.<br /><br />Перед началом работы найдите файл prod.keys ]]> в хранилище устройства..<br /><br />Узнать больше]]> Уведомления и ошибки Показывать уведомления, когда что-то пошло не так Вы не предоставили разрешение на уведомления! @@ -35,7 +35,7 @@ Позволяет suyu заполнить список игр Пропустить выбор папки с играми? Игры не будут отображаться в списке Игры, если папка не выбрана. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Найти игры Настройки поиска Выбрана папка с играми @@ -43,7 +43,7 @@ Требуется для расшифровки розничных игр Пропустить добавление ключей? Для эмуляции розничных игр требуются действительные ключи. Если вы продолжите, будут работать только homebrew приложения. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Уведомления Предоставьте разрешение уведомлений с помощью кнопки ниже. Предоставить разрешение @@ -64,7 +64,7 @@ Убедитесь, что файл ключей имеет расширение .keys, и повторите попытку. Убедитесь, что файл ключей имеет расширение .bin, и повторите попытку. Неверные ключи шифрования - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Выбранный файл неверен или поврежден. Пожалуйста, пере-дампите ваши ключи. Менеджер драйверов ГП Установить драйвер ГП @@ -114,7 +114,7 @@ Игровой контент успешно установлен %1$d Успешно установлено %1$d Успешно перезаписано - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates Пользовательские драйверы не поддерживаются Загрузка пользовательского драйвера в настоящее время не поддерживается для этого устройства.\nПроверьте этот параметр еще раз в будущем чтобы узнать была ли добавлена ​​поддержка!   @@ -144,14 +144,14 @@ Проверяет весь установленный контент на наличие повреждений Отсутствуют ключи шифрования Прошивка и розничные игры не могут быть расшифрованы - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Запуск апплета Запуск системных апплетов на установленной прошивке Прошивка не установлена Апплет недоступен - prod.keys и firmware установлены и попробуйте еще раз.]]> + prod.keys и firmware установлены и попробуйте еще раз.]]> Альбом Просмотрите изображения, сохраненные в папке скриншотов пользователя, с помощью системного просмотрщика фотографий. Mii редактор @@ -184,7 +184,7 @@ Экспорт отменен Убедитесь что папки пользовательских данных находятся в корне zip-папки и содержат файл конфигурации config/config.ini и повторите попытку. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -463,8 +463,8 @@ Ваш ROM зашифрованный - или установленные игры.]]> - prod.keys установлен, чтобы игры можно было расшифровать.]]> + или установленные игры.]]> + prod.keys установлен, чтобы игры можно было расшифровать.]]> Произошла ошибка при инициализации видеоядра. Обычно это вызвано несовместимым драйвером ГП. Установка пользовательского драйвера ГП может решить эту проблему. Не удалось запустить ROM diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index 4b212d8bc0..9b8c71ccfd 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -1,7 +1,7 @@ - Це програмне забезпечення дозволяє запускати ігри для ігрової консолі Nintendo Switch. Ми не надаємо самі ігри або ключі.<br /><br />Перед початком роботи знайдіть ваш файл prod.keys ]]> у сховищі пристрою.<br /><br />Дізнатися більше]]> + Це програмне забезпечення дозволяє запускати ігри для ігрової консолі Nintendo Switch. Ми не надаємо самі ігри або ключі.<br /><br />Перед початком роботи знайдіть ваш файл prod.keys ]]> у сховищі пристрою.<br /><br />Дізнатися більше]]> Сповіщення та помилки Показувати сповіщення, коли щось пішло не так Ви не надали дозвіл сповіщень! @@ -32,14 +32,14 @@ Дозволяє suyu заповнити список ігор Пропустити вибір папки з іграми? Ігри не відображатимуться у списку Ігри, якщо папку не вибрано. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Знайти ігри Вибрано папку з іграми Встановити prod.keys Потрібно для розшифровки роздрібних ігор Пропустити додавання ключів? Для емуляції роздрібних ігор потрібні дійсні ключі. Якщо ви продовжите, працюватимуть тільки homebrew додатки. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Сповіщення Надайте дозвіл сповіщень за допомогою кнопки нижче. Надати дозвіл @@ -59,7 +59,7 @@ Помилка під час зчитування ключів шифрування Переконайтеся, що файл ключів має розширення .keys, і повторіть спробу. Невірні ключі шифрування - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Обраний файл невірний або пошкоджений. Будь ласка, пере-дампіть ваші ключі. Встановити драйвер ГП Встановіть альтернативні драйвери для потенційно кращої продуктивності та/або точності @@ -81,7 +81,7 @@ Назва першої вкладеної папки має бути ідентифікатором гри. Імпорт Експорт - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Gaia не існує @@ -92,7 +92,7 @@ https://github.com/suyu-emu/suyu/graphs/contributors Збірка https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -214,7 +214,7 @@ Доповнення Ваш ROM зашифрований - prod.keys встановлено, щоб ігри можна було розшифрувати.]]> + prod.keys встановлено, щоб ігри можна було розшифрувати.]]> Сталася помилка під час ініціалізації відеоядра. Зазвичай це спричинено несумісним драйвером ГП. Встановлення користувацького драйвера ГП може вирішити цю проблему. Не вдалося запустити ROM diff --git a/src/android/app/src/main/res/values-vi/strings.xml b/src/android/app/src/main/res/values-vi/strings.xml index 6355582cb0..4c0446fc96 100644 --- a/src/android/app/src/main/res/values-vi/strings.xml +++ b/src/android/app/src/main/res/values-vi/strings.xml @@ -1,7 +1,7 @@ - Phần mềm này sẽ chạy trò chơi cho máy chơi game Nintendo Switch. Không có game titles hoặc keys được bao gồm.<br /><br />Trước khi bạn bắt đầu, hãy tìm file prod.keys ]]> trên bộ nhớ thiết bị của bạn.<br /><br />Tìm hiểu thêm]]> + Phần mềm này sẽ chạy trò chơi cho máy chơi game Nintendo Switch. Không có game titles hoặc keys được bao gồm.<br /><br />Trước khi bạn bắt đầu, hãy tìm file prod.keys ]]> trên bộ nhớ thiết bị của bạn.<br /><br />Tìm hiểu thêm]]> Thông báo và lỗi Hiển thị thông báo khi có sự cố xảy ra Ứng dụng không được cấp quyền thông báo! @@ -32,14 +32,14 @@ Cho phép suyu thêm các trò chơi vào danh sách Bỏ qua lựa chọn thư mục trò chơi? Trò chơi sẽ không hiển thị trong danh sách nếu một thư mục không được chọn - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Tìm kiếm games Thư mục trò chơi đã được chọn Cài prod.keys Yêu cầu để giải mã các game bán lẻ Bỏ qua thêm chìa khóa? Cần có chìa khóa hợp lệ để giả lập trò chơi. Chỉ có các ứng dụng homebrew có thể vận hành nếu bạn tiếp tục - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Thông báo Ấn vào nút bên dưới để cấp quyền ứng dụng gửi thông báo Cấp quyền @@ -60,7 +60,7 @@ Xác minh rằng tệp keys của bạn có đuôi .keys và thử lại. Xác minh rằng tệp keys của bạn có đuôi .bin và thử lại. Keys mã hoá không hợp lệ - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Chọn file sai hoặc bị hỏng. Hãy xuất chìa khóa khác Cài đặt driver GPU Cài đặt driver thay thế để có thể có hiệu suất tốt và chính xác hơn @@ -94,8 +94,8 @@ Không tìm thấy tệp log Cài đặt nội dung game Cài đặt cập nhật game hoặc DLC - https://suyu-emu.org/help/quickstart/#dumping-installed-updates - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-decryption-keys Gaia không có thật @@ -107,7 +107,7 @@ Các dự án làm cho suyu trên Android trở thành điều có thể Dựng https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -259,7 +259,7 @@ Kiểm tra tính toàn vẹn thất bại! ROM của bạn đã bị mã hoá - prod.keys đã được cài đặt để game có thể được giải mã.]]> + prod.keys đã được cài đặt để game có thể được giải mã.]]> Đã xảy ra lỗi khi khởi tạo lõi video Việc này thường do driver GPU không tương thích. Cài đặt một driver GPU tùy chỉnh có thể giải quyết vấn đề này. Không thể tải ROM diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index 3ad450e1c9..1cecb2bbf8 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -1,7 +1,7 @@ - 此软件可以运行 Nintendo Switch 游戏,但不包含任何游戏和密钥文件。<br /><br />在开始前,请找到放置于设备存储中的 prod.keys ]]> 文件。<br /><br />了解更多]]> + 此软件可以运行 Nintendo Switch 游戏,但不包含任何游戏和密钥文件。<br /><br />在开始前,请找到放置于设备存储中的 prod.keys ]]> 文件。<br /><br />了解更多]]> 通知及错误提醒 当发生错误时显示通知。 未授予通知权限! @@ -35,7 +35,7 @@ 允许 suyu 更新游戏列表 跳过选择游戏文件夹? 如果未选择游戏文件夹,游戏将不会显示在游戏列表中。 - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games 搜索游戏 搜索设置 已选择游戏文件夹 @@ -43,7 +43,7 @@ 需要密钥文件来解密游戏 跳过添加密钥文件? 对于商业游戏,需要有效的密钥文件才能运行。如果没有密钥文件,将只能运行自制软件。 - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction 通知 使用下方的按钮授予通知权限。 授予权限 @@ -64,7 +64,7 @@ 请确保您的密钥文件扩展名为 .keys 并重试。 请确保您的密钥文件扩展名为 .bin 并重试。 无效的加密密钥 - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys 选择的密钥文件不正确或已损坏。请重新转储密钥文件。 GPU 驱动管理器 安装 GPU 驱动 @@ -114,7 +114,7 @@ 游戏附加内容已成功安装 %1$d 个包安装成功 %1$d 个包覆盖安装成功 - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates 不支持自定义驱动 此设备不支持自定义驱动。\n请之后再访问此项,查看是否已为此设备添加支持。 管理 suyu 数据 @@ -137,14 +137,14 @@ 检查所有安装的内容是否有损坏 密钥缺失 无法解密固件和商业游戏 - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys 小程序启动器 使用已安装的固件启动系统小程序 未安装固件 小程序不可用 - prod.keys 文件和固件已安装,然后再试一次。]]> + prod.keys 文件和固件已安装,然后再试一次。]]> 相册 查看存储在用户屏幕截图文件夹中的图像 Mii edit @@ -177,7 +177,7 @@ 已取消导出数据 请确保用户数据文件夹位于 zip 压缩包的根目录,并在 config/config.ini 路径中包含配置文件,然后重试。 https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -456,8 +456,8 @@ 您的 ROM 已加密 - 游戏卡带或已安装的游戏。]]> - prod.keys 文件已安装,使得游戏可以被解密。]]> + 游戏卡带或已安装的游戏。]]> + prod.keys 文件已安装,使得游戏可以被解密。]]> 初始化视频核心时发生错误 这通常由不兼容的 GPU 驱动程序造成,安装自定义 GPU 驱动程序可能解决此问题。 无法载入 ROM diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index 06e23d4c4e..4b2926a95f 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -1,7 +1,7 @@ - 此軟體可以執行 Nintendo Switch 主機遊戲,但不包含任何遊戲和金鑰。<br /><br />在您開始前,請找到放置於您的裝置儲存空間的 prod.keys ]]> 檔案。<br /><br />深入瞭解]]> + 此軟體可以執行 Nintendo Switch 主機遊戲,但不包含任何遊戲和金鑰。<br /><br />在您開始前,請找到放置於您的裝置儲存空間的 prod.keys ]]> 檔案。<br /><br />深入瞭解]]> 通知和錯誤 發生錯誤時顯示通知。 未授予通知權限! @@ -35,7 +35,7 @@ 允許 suyu 填入遊戲清單 跳過選取遊戲資料夾? 如果資料夾未選取,遊戲將不會顯示在遊戲清單。 - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games 搜尋遊戲 搜尋設定 遊戲目錄已選取 @@ -43,7 +43,7 @@ 需要解密零售遊戲 跳過新增金鑰? 模擬零售遊戲需要有效的金鑰,若要繼續,將僅有自製遊戲應用程式可以運作。 - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction 通知 使用下方的按鈕授予通知權限。 授予權限 @@ -64,7 +64,7 @@ 驗證您的金鑰檔案是否具有 .keys 副檔名並再試一次。 驗證您的金鑰檔案是否具有 .bin 副檔名並再試一次。 無效的加密金鑰 - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys 選取的檔案不正確或已損毀,請重新傾印您的金鑰。 GPU 驅動程式管理員 安裝 GPU 驅動程式 @@ -114,7 +114,7 @@ 遊戲內容已成功安裝 %1$d 安裝成功 %1$d 覆寫成功 - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates 不支援自訂的驅動程式 此裝置不支援自訂的驅動程式。\n請以後再來查看是否已新增支援! 管理 suyu 資料 @@ -137,14 +137,14 @@ 检查所有安装的内容是否有损坏 密钥缺失 无法解密固件和商业游戏 - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys 小程式啟動器 使用已安裝的韌體啟動系統小程式 未安裝韌體 無法使用小程式 - prod.keys 檔案和韌體已安裝,然後再試一次。]]> + prod.keys 檔案和韌體已安裝,然後再試一次。]]> 相簿 使用系統相片檢視器查看儲存在使用者螢幕截圖資料夾中的影像 Mii 編輯 @@ -177,7 +177,7 @@ 匯出已取消 請確保使用者資料夾位於 zip 壓縮檔的根目錄,並在 config/config.ini 路徑中包含組態檔案,並再試一次。 https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -456,8 +456,8 @@ 您的 ROM 已加密 - 遊戲卡匣或已安裝的遊戲。]]> - prod.keys 檔案已安裝,讓遊戲可以解密。]]> + 遊戲卡匣或已安裝的遊戲。]]> + prod.keys 檔案已安裝,讓遊戲可以解密。]]> 初始化視訊核心時發生錯誤 這經常由不相容的 GPU 驅動程式造成,安裝自訂 GPU 驅動程式可能會解決此問題。 無法載入 ROM diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 5331f2b419..da9c9d2cf8 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -3,7 +3,7 @@ suyu - This software will run games for the Nintendo Switch game console. No game titles or keys are included.<br /><br />Before you begin, please locate your prod.keys ]]> file on your device storage.<br /><br />Learn more]]> + This software will run games for the Nintendo Switch game console. No game titles or keys are included.<br /><br />Before you begin, please locate your prod.keys ]]> file on your device storage.<br /><br />Learn more]]> Notices and errors noticesAndErrors Shows notifications when something goes wrong. @@ -38,7 +38,7 @@ Allows suyu to populate the games list Skip selecting games folder? Games won\'t be displayed in the Games list if a folder isn\'t selected. - https://suyu-emu.org/help/quickstart/#dumping-games + https://suyu.dev/help/quickstart/#dumping-games Search games Search settings Games directory selected @@ -46,7 +46,7 @@ Required to decrypt retail games Skip adding keys? Valid keys are required to emulate retail games. Only homebrew apps will function if you continue. - https://suyu-emu.org/help/quickstart/#guide-introduction + https://suyu.dev/help/quickstart/#guide-introduction Notifications Grant the notification permission with the button below. Grant permission @@ -67,7 +67,7 @@ Verify your keys file has a .keys extension and try again. Verify your keys file has a .bin extension and try again. Invalid encryption keys - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys The selected file is incorrect or corrupt. Please redump your keys. GPU driver manager Install GPU driver @@ -117,7 +117,7 @@ Game content(s) installed successfully %1$d installed successfully %1$d overwritten successfully - https://suyu-emu.org/help/quickstart/#dumping-installed-updates + https://suyu.dev/help/quickstart/#dumping-installed-updates Custom drivers not supported Custom driver loading isn\'t currently supported for this device.\nCheck this option again in the future to see if support was added! Manage suyu data @@ -142,7 +142,7 @@ Checks all installed content for corruption Encryption keys are missing Firmware and retail games cannot be decrypted - https://suyu-emu.org/help/quickstart/#dumping-decryption-keys + https://suyu.dev/help/quickstart/#dumping-decryption-keys Qlaunch @@ -151,7 +151,7 @@ Launch system applets using installed firmware Firmware not installed Applet not available - prod.keys file and firmware are installed and try again.]]> + prod.keys file and firmware are installed and try again.]]> Album See images stored in the user screenshots folder with the system photo viewer Mii edit @@ -184,7 +184,7 @@ Export cancelled Make sure the user data folders are at the root of the zip folder and contain a config file at config/config.ini and try again. https://discord.gg/suyu - https://suyu-emu.org/ + https://suyu.dev/ https://github.com/suyu-emu @@ -463,8 +463,8 @@ Your ROM is encrypted - game cartidges or installed titles.]]> - prod.keys file is installed so that games can be decrypted.]]> + game cartidges or installed titles.]]> + prod.keys file is installed so that games can be decrypted.]]> An error occurred initializing the video core This is usually caused by an incompatible GPU driver. Installing a custom GPU driver may resolve this problem. Unable to load ROM diff --git a/src/common/android/applets/software_keyboard.cpp b/src/common/android/applets/software_keyboard.cpp index 2f0c58227a..8a49ff0442 100644 --- a/src/common/android/applets/software_keyboard.cpp +++ b/src/common/android/applets/software_keyboard.cpp @@ -253,19 +253,19 @@ void AndroidKeyboard::SubmitNormalText(const ResultData& data) const { void InitJNI(JNIEnv* env) { s_software_keyboard_class = reinterpret_cast( - env->NewGlobalRef(env->FindClass("org/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard"))); + env->NewGlobalRef(env->FindClass("dev/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard"))); s_keyboard_config_class = reinterpret_cast(env->NewGlobalRef( - env->FindClass("org/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard$KeyboardConfig"))); + env->FindClass("dev/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard$KeyboardConfig"))); s_keyboard_data_class = reinterpret_cast(env->NewGlobalRef( - env->FindClass("org/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard$KeyboardData"))); + env->FindClass("dev/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard$KeyboardData"))); s_swkbd_execute_normal = env->GetStaticMethodID( s_software_keyboard_class, "executeNormal", - "(Lorg/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard$KeyboardConfig;)Lorg/suyu/suyu_emu/" + "(Ldev/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard$KeyboardConfig;)Ldev/suyu/suyu_emu/" "applets/keyboard/SoftwareKeyboard$KeyboardData;"); s_swkbd_execute_inline = env->GetStaticMethodID( s_software_keyboard_class, "executeInline", - "(Lorg/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard$KeyboardConfig;)V"); + "(Ldev/suyu/suyu_emu/applets/keyboard/SoftwareKeyboard$KeyboardConfig;)V"); } void CleanupJNI(JNIEnv* env) { diff --git a/src/common/android/id_cache.cpp b/src/common/android/id_cache.cpp index 40faea9fa0..c4ef648ae5 100644 --- a/src/common/android/id_cache.cpp +++ b/src/common/android/id_cache.cpp @@ -400,14 +400,14 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { return JNI_ERR; // Initialize Java classes - const jclass native_library_class = env->FindClass("org/suyu/suyu_emu/NativeLibrary"); + const jclass native_library_class = env->FindClass("dev/suyu/suyu_emu/NativeLibrary"); s_native_library_class = reinterpret_cast(env->NewGlobalRef(native_library_class)); s_disk_cache_progress_class = reinterpret_cast(env->NewGlobalRef( - env->FindClass("org/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress"))); + env->FindClass("dev/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress"))); s_load_callback_stage_class = reinterpret_cast(env->NewGlobalRef(env->FindClass( - "org/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress$LoadCallbackStage"))); + "dev/suyu/suyu_emu/disk_shader_cache/DiskShaderCacheProgress$LoadCallbackStage"))); - const jclass game_dir_class = env->FindClass("org/suyu/suyu_emu/model/GameDir"); + const jclass game_dir_class = env->FindClass("dev/suyu/suyu_emu/model/GameDir"); s_game_dir_class = reinterpret_cast(env->NewGlobalRef(game_dir_class)); s_game_dir_constructor = env->GetMethodID(game_dir_class, "", "(Ljava/lang/String;Z)V"); env->DeleteLocalRef(game_dir_class); @@ -424,7 +424,7 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { s_on_program_changed = env->GetStaticMethodID(s_native_library_class, "onProgramChanged", "(I)V"); - const jclass game_class = env->FindClass("org/suyu/suyu_emu/model/Game"); + const jclass game_class = env->FindClass("dev/suyu/suyu_emu/model/Game"); s_game_class = reinterpret_cast(env->NewGlobalRef(game_class)); s_game_constructor = env->GetMethodID(game_class, "", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/" @@ -450,7 +450,7 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { env->DeleteLocalRef(pair_class); const jclass overlay_control_data_class = - env->FindClass("org/suyu/suyu_emu/overlay/model/OverlayControlData"); + env->FindClass("dev/suyu/suyu_emu/overlay/model/OverlayControlData"); s_overlay_control_data_class = reinterpret_cast(env->NewGlobalRef(overlay_control_data_class)); s_overlay_control_data_constructor = @@ -468,7 +468,7 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { env->GetFieldID(overlay_control_data_class, "foldablePosition", "Lkotlin/Pair;"); env->DeleteLocalRef(overlay_control_data_class); - const jclass patch_class = env->FindClass("org/suyu/suyu_emu/model/Patch"); + const jclass patch_class = env->FindClass("dev/suyu/suyu_emu/model/Patch"); s_patch_class = reinterpret_cast(env->NewGlobalRef(patch_class)); s_patch_constructor = env->GetMethodID( patch_class, "", @@ -500,7 +500,7 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { env->DeleteLocalRef(boolean_class); const jclass player_input_class = - env->FindClass("org/suyu/suyu_emu/features/input/model/PlayerInput"); + env->FindClass("dev/suyu/suyu_emu/features/input/model/PlayerInput"); s_player_input_class = reinterpret_cast(env->NewGlobalRef(player_input_class)); s_player_input_constructor = env->GetMethodID( player_input_class, "", @@ -531,7 +531,7 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { env->DeleteLocalRef(player_input_class); const jclass suyu_input_device_interface = - env->FindClass("org/suyu/suyu_emu/features/input/SuyuInputDevice"); + env->FindClass("dev/suyu/suyu_emu/features/input/SuyuInputDevice"); s_suyu_input_device_interface = reinterpret_cast(env->NewGlobalRef(suyu_input_device_interface)); s_suyu_input_device_get_name = diff --git a/src/suyu/about_dialog.cpp b/src/suyu/about_dialog.cpp index 40c99f91b7..d5f05b4a2a 100644 --- a/src/suyu/about_dialog.cpp +++ b/src/suyu/about_dialog.cpp @@ -20,7 +20,7 @@ AboutDialog::AboutDialog(QWidget* parent) ui->setupUi(this); // Try and request the icon from Qt theme (Linux?) - const QIcon suyu_logo = QIcon::fromTheme(QStringLiteral("org.suyu_emu.suyu")); + const QIcon suyu_logo = QIcon::fromTheme(QStringLiteral("dev.suyu_emu.suyu")); if (!suyu_logo.isNull()) { ui->labelLogo->setPixmap(suyu_logo.pixmap(200)); } diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index 300eb0819a..97c49da134 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -5382,7 +5382,7 @@ int main(int argc, char* argv[]) { // Fix the Wayland appId. This needs to match the name of the .desktop file without the .desktop // suffix. - QGuiApplication::setDesktopFileName(QStringLiteral("org.suyu_emu.suyu")); + QGuiApplication::setDesktopFileName(QStringLiteral("dev.suyu_emu.suyu")); #endif SetHighDPIAttributes(); From 02fc0460315e4014435a22ceaed109c16ef17931 Mon Sep 17 00:00:00 2001 From: Hustler One Date: Mon, 25 Mar 2024 21:12:28 +0100 Subject: [PATCH 10/28] All relevant changes in commit 51862e862dd353e746913c989a6fce87ecbc7a5c have been --- src/common/settings.h | 1 + src/suyu/game_list.cpp | 10 ++ src/suyu/game_list.h | 7 ++ src/suyu/main.cpp | 251 +++++++++++++++++++++++++++++++++++++++++ src/suyu/main.h | 2 + 5 files changed, 271 insertions(+) diff --git a/src/common/settings.h b/src/common/settings.h index 77788befe7..7f61804052 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later // Modified by palfaiate on <2024/03/07> +// Reverted palfaiate's changes on <2024/03/25> -Nine-Ball #pragma once diff --git a/src/suyu/game_list.cpp b/src/suyu/game_list.cpp index bda0d489bf..28a9d9c970 100644 --- a/src/suyu/game_list.cpp +++ b/src/suyu/game_list.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later // Modified by palfaiate on <2024/03/07> +// Reverted palfaiate's changes on <2024/03/25> -Nine-Ball #include #include @@ -580,6 +581,9 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri remove_menu->addSeparator(); QAction* remove_shader_cache = remove_menu->addAction(tr("Remove All Pipeline Caches")); QAction* remove_all_content = remove_menu->addAction(tr("Remove All Installed Contents")); + QAction* dump_romfs_menu = context_menu.addMenu(tr("Dump RomFS")); + QAction* dump_romfs = dump_romfs_menu->addAction(tr("Dump RomFS")); + QAction* dump_romfs_sdmc = dump_romfs_menu->addAction(tr("Dump RomFS to SDMC")); QAction* verify_integrity = context_menu.addAction(tr("Verify Integrity")); QAction* copy_tid = context_menu.addAction(tr("Copy Title ID to Clipboard")); QAction* navigate_to_gamedb_entry = context_menu.addAction(tr("Navigate to GameDB entry")); @@ -647,6 +651,12 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri connect(remove_cache_storage, &QAction::triggered, [this, program_id, path] { emit RemoveFileRequested(program_id, GameListRemoveTarget::CacheStorage, path); }); + connect(dump_romfs, &QAction::triggered, [this, program_id, path]() { + emit DumpRomFSRequested(program_id, path, DumpRomFSTarget::Normal); + }); + connect(dump_romfs_sdmc, &QAction::triggered, [this, program_id, path]() { + emit DumpRomFSRequested(program_id, path, DumpRomFSTarget::SDMC); + }); connect(verify_integrity, &QAction::triggered, [this, path]() { emit VerifyIntegrityRequested(path); }); connect(copy_tid, &QAction::triggered, diff --git a/src/suyu/game_list.h b/src/suyu/game_list.h index 7568e1b6e0..684a7ba2d9 100644 --- a/src/suyu/game_list.h +++ b/src/suyu/game_list.h @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later // Modified by palfaiate on <2024/03/07> +// Reverted palfaiate's changes on <2024/03/25> -Nine-Ball #pragma once @@ -52,6 +53,11 @@ enum class GameListRemoveTarget { CacheStorage, }; +enum class DumpRomFSTarget { + Normal, + SDMC, +}; + enum class GameListShortcutTarget { Desktop, Applications, @@ -113,6 +119,7 @@ signals: void RemoveFileRequested(u64 program_id, GameListRemoveTarget target, const std::string& game_path); void RemovePlayTimeRequested(u64 program_id); + void DumpRomFSRequested(u64 program_id, const std::string& game_path, DumpRomFSTarget target); void VerifyIntegrityRequested(const std::string& game_path); void CopyTIDRequested(u64 program_id); void CreateShortcut(u64 program_id, const std::string& game_path, diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index 97c49da134..9195bd0aae 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later // Modified by palfaiate on <2024/03/07> +// Reverted palfaiate's changes on <2024/03/25> -Nine-Ball #include #include @@ -59,6 +60,18 @@ #include "suyu/multiplayer/state.h" #include "suyu/util/controller_navigation.h" +// These are wrappers to avoid the calls to CreateDirectory and CreateFile because of the Windows +static FileSys::VirtualDir VfsFilesystemCreateDirectoryWrapper( + const FileSys::VirtualFilesystem& vfs, const std::string& path, FileSys::OpenMode mode) { + return vfs->CreateDirectory(path, mode); +} + +// Overloaded function, also removed by palafiate +static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::VirtualDir& dir, const std::string& path) { + return dir->CreateFile(path); +} + + #include #include @@ -1458,6 +1471,7 @@ void GMainWindow::ConnectWidgetEvents() { connect(game_list, &GameList::RemoveFileRequested, this, &GMainWindow::OnGameListRemoveFile); connect(game_list, &GameList::RemovePlayTimeRequested, this, &GMainWindow::OnGameListRemovePlayTimeData); + connect(game_list, &GameList::DumpRomFSRequested, this, &GMainWindow::OnGameListDumpRomFS); connect(game_list, &GameList::VerifyIntegrityRequested, this, &GMainWindow::OnGameListVerifyIntegrity); connect(game_list, &GameList::CopyTIDRequested, this, &GMainWindow::OnGameListCopyTID); @@ -2362,6 +2376,68 @@ void GMainWindow::OnTransferableShaderCacheOpenFile(u64 program_id) { QDesktopServices::openUrl(QUrl::fromLocalFile(qt_shader_cache_path)); } +static bool RomFSRawCopy(size_t total_size, size_t& read_size, QProgressDialog& dialog, + const FileSys::VirtualDir& src, const FileSys::VirtualDir& dest, + bool full) { + if (src == nullptr || dest == nullptr || !src->IsReadable() || !dest->IsWritable()) + return false; + if (dialog.wasCanceled()) + return false; + + std::vector buffer(CopyBufferSize); + auto last_timestamp = std::chrono::steady_clock::now(); + + const auto QtRawCopy = [&](const FileSys::VirtualFile& src_file, + const FileSys::VirtualFile& dest_file) { + if (src_file == nullptr || dest_file == nullptr) { + return false; + } + if (!dest_file->Resize(src_file->GetSize())) { + return false; + } + + for (std::size_t i = 0; i < src_file->GetSize(); i += buffer.size()) { + if (dialog.wasCanceled()) { + dest_file->Resize(0); + return false; + } + + using namespace std::literals::chrono_literals; + const auto new_timestamp = std::chrono::steady_clock::now(); + + if ((new_timestamp - last_timestamp) > 33ms) { + last_timestamp = new_timestamp; + dialog.setValue( + static_cast(std::min(read_size, total_size) * 100 / total_size)); + QCoreApplication::processEvents(); + } + + const auto read = src_file->Read(buffer.data(), buffer.size(), i); + dest_file->Write(buffer.data(), read, i); + + read_size += read; + } + + return true; + }; + + if (full) { + for (const auto& file : src->GetFiles()) { + const auto out = VfsDirectoryCreateFileWrapper(dest, file->GetName()); + if (!QtRawCopy(file, out)) + return false; + } + } + + for (const auto& dir : src->GetSubdirectories()) { + const auto out = dest->CreateSubdirectory(dir->GetName()); + if (!RomFSRawCopy(total_size, read_size, dialog, dir, out, full)) + return false; + } + + return true; +} + QString GMainWindow::GetGameListErrorRemoving(InstalledEntryType type) const { switch (type) { case InstalledEntryType::Game: @@ -2603,6 +2679,121 @@ void GMainWindow::RemoveCacheStorage(u64 program_id) { Common::FS::RemoveDirRecursively(path); } +void GMainWindow::OnGameListDumpRomFS(u64 program_id, const std::string& game_path, + DumpRomFSTarget target) { + const auto failed = [this] { + QMessageBox::warning(this, tr("RomFS Extraction Failed!"), + tr("There was an error copying the RomFS files or the user " + "cancelled the operation.")); + }; + + const auto loader = + Loader::GetLoader(*system, vfs->OpenFile(game_path, FileSys::OpenMode::Read)); + if (loader == nullptr) { + failed(); + return; + } + + FileSys::VirtualFile packed_update_raw{}; + loader->ReadUpdateRaw(packed_update_raw); + + const auto& installed = system->GetContentProvider(); + + u64 title_id{}; + u8 raw_type{}; + if (!SelectRomFSDumpTarget(installed, program_id, &title_id, &raw_type)) { + failed(); + return; + } + + const auto type = static_cast(raw_type); + const auto base_nca = installed.GetEntry(title_id, type); + if (!base_nca) { + failed(); + return; + } + + const FileSys::NCA update_nca{packed_update_raw, nullptr}; + if (type != FileSys::ContentRecordType::Program || + update_nca.GetStatus() != Loader::ResultStatus::ErrorMissingBKTRBaseRomFS || + update_nca.GetTitleId() != FileSys::GetUpdateTitleID(title_id)) { + packed_update_raw = {}; + } + + const auto base_romfs = base_nca->GetRomFS(); + const auto dump_dir = + target == DumpRomFSTarget::Normal + ? Common::FS::GetSuyuPath(Common::FS::SuyuPath::DumpDir) + : Common::FS::GetSuyuPath(Common::FS::SuyuPath::SDMCDir) / "atmosphere" / "contents"; + const auto romfs_dir = fmt::format("{:016X}/romfs", title_id); + + const auto path = Common::FS::PathToUTF8String(dump_dir / romfs_dir); + + const FileSys::PatchManager pm{title_id, system->GetFileSystemController(), installed}; + auto romfs = pm.PatchRomFS(base_nca.get(), base_romfs, type, packed_update_raw, false); + + const auto out = VfsFilesystemCreateDirectoryWrapper(vfs, path, FileSys::OpenMode::ReadWrite); + + if (out == nullptr) { + failed(); + vfs->DeleteDirectory(path); + return; + } + + bool ok = false; + const QStringList selections{tr("Full"), tr("Skeleton")}; + const auto res = QInputDialog::getItem( + this, tr("Select RomFS Dump Mode"), + tr("Please select the how you would like the RomFS dumped.
Full will copy all of the " + "files into the new directory while
skeleton will only create the directory " + "structure."), + selections, 0, false, &ok); + if (!ok) { + failed(); + vfs->DeleteDirectory(path); + return; + } + + const auto extracted = FileSys::ExtractRomFS(romfs); + if (extracted == nullptr) { + failed(); + return; + } + + const auto full = res == selections.constFirst(); + + // The expected required space is the size of the RomFS + 1 GiB + const auto minimum_free_space = romfs->GetSize() + 0x40000000; + + if (full && Common::FS::GetFreeSpaceSize(path) < minimum_free_space) { + QMessageBox::warning(this, tr("RomFS Extraction Failed!"), + tr("There is not enough free space at %1 to extract the RomFS. Please " + "free up space or select a different dump directory at " + "Emulation > Configure > System > Filesystem > Dump Root") + .arg(QString::fromStdString(path))); + return; + } + + QProgressDialog progress(tr("Extracting RomFS..."), tr("Cancel"), 0, 100, this); + progress.setWindowModality(Qt::WindowModal); + progress.setMinimumDuration(100); + progress.setAutoClose(false); + progress.setAutoReset(false); + + size_t read_size = 0; + + if (RomFSRawCopy(romfs->GetSize(), read_size, progress, extracted, out, full)) { + progress.close(); + QMessageBox::information(this, tr("RomFS Extraction Succeeded!"), + tr("The operation completed successfully.")); + QDesktopServices::openUrl(QUrl::fromLocalFile(QString::fromStdString(path))); + } else { + progress.close(); + failed(); + vfs->DeleteDirectory(path); + } +} + void GMainWindow::OnGameListVerifyIntegrity(const std::string& game_path) { const auto NotImplemented = [this] { QMessageBox::warning(this, tr("Integrity verification couldn't be performed!"), @@ -4673,6 +4864,66 @@ void GMainWindow::SetFirmwareVersion() { firmware_label->setToolTip(QString::fromStdString(display_title)); } +bool GMainWindow::SelectRomFSDumpTarget(const FileSys::ContentProvider& installed, u64 program_id, + u64* selected_title_id, u8* selected_content_record_type) { + using ContentInfo = std::tuple; + boost::container::flat_set available_title_ids; + + const auto RetrieveEntries = [&](FileSys::TitleType title_type, + FileSys::ContentRecordType record_type) { + const auto entries = installed.ListEntriesFilter(title_type, record_type); + for (const auto& entry : entries) { + if (FileSys::GetBaseTitleID(entry.title_id) == program_id && + installed.GetEntry(entry)->GetStatus() == Loader::ResultStatus::Success) { + available_title_ids.insert({entry.title_id, title_type, record_type}); + } + } + }; + + RetrieveEntries(FileSys::TitleType::Application, FileSys::ContentRecordType::Program); + RetrieveEntries(FileSys::TitleType::Application, FileSys::ContentRecordType::HtmlDocument); + RetrieveEntries(FileSys::TitleType::Application, FileSys::ContentRecordType::LegalInformation); + RetrieveEntries(FileSys::TitleType::AOC, FileSys::ContentRecordType::Data); + + if (available_title_ids.empty()) { + return false; + } + + size_t title_index = 0; + + if (available_title_ids.size() > 1) { + QStringList list; + for (auto& [title_id, title_type, record_type] : available_title_ids) { + const auto hex_title_id = QString::fromStdString(fmt::format("{:X}", title_id)); + if (record_type == FileSys::ContentRecordType::Program) { + list.push_back(QStringLiteral("Program [%1]").arg(hex_title_id)); + } else if (record_type == FileSys::ContentRecordType::HtmlDocument) { + list.push_back(QStringLiteral("HTML document [%1]").arg(hex_title_id)); + } else if (record_type == FileSys::ContentRecordType::LegalInformation) { + list.push_back(QStringLiteral("Legal information [%1]").arg(hex_title_id)); + } else { + list.push_back( + QStringLiteral("DLC %1 [%2]").arg(title_id & 0x7FF).arg(hex_title_id)); + } + } + + bool ok; + const auto res = QInputDialog::getItem( + this, tr("Select RomFS Dump Target"), + tr("Please select which RomFS you would like to dump."), list, 0, false, &ok); + if (!ok) { + return false; + } + + title_index = list.indexOf(res); + } + + const auto& [title_id, title_type, record_type] = *available_title_ids.nth(title_index); + *selected_title_id = title_id; + *selected_content_record_type = static_cast(record_type); + return true; +} + bool GMainWindow::ConfirmClose() { if (emu_thread == nullptr || UISettings::values.confirm_before_stopping.GetValue() == ConfirmStop::Ask_Never) { diff --git a/src/suyu/main.h b/src/suyu/main.h index f9a5057d83..e17c8c0607 100644 --- a/src/suyu/main.h +++ b/src/suyu/main.h @@ -50,6 +50,7 @@ class WaitTreeWidget; enum class GameListOpenTarget; enum class GameListRemoveTarget; enum class GameListShortcutTarget; +enum class DumpRomFSTarget; enum class InstalledEntryType; class GameListPlaceholder; @@ -378,6 +379,7 @@ private slots: void OnGameListRemoveFile(u64 program_id, GameListRemoveTarget target, const std::string& game_path); void OnGameListRemovePlayTimeData(u64 program_id); + void OnGameListDumpRomFS(u64 program_id, const std::string& game_path, DumpRomFSTarget target); void OnGameListVerifyIntegrity(const std::string& game_path); void OnGameListCopyTID(u64 program_id); void OnGameListNavigateToGamedbEntry(u64 program_id, From e1b77dd8987d30f01e3625ce60c4c6e637b9a5cd Mon Sep 17 00:00:00 2001 From: BoomMicrophone Date: Tue, 26 Mar 2024 15:57:41 +0100 Subject: [PATCH 11/28] nullglob globstar gobble up those nuts shoutout to gpg for not working Signed-off-by: BoomMicrophone --- src/suyu/game_list.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/suyu/game_list.h b/src/suyu/game_list.h index 684a7ba2d9..4adb6403ef 100644 --- a/src/suyu/game_list.h +++ b/src/suyu/game_list.h @@ -56,7 +56,7 @@ enum class GameListRemoveTarget { enum class DumpRomFSTarget { Normal, SDMC, -}; +}; enum class GameListShortcutTarget { Desktop, From f44fafdd88886fc7521a0c02ece5a84c726fe3c0 Mon Sep 17 00:00:00 2001 From: BoomMicrophone Date: Tue, 26 Mar 2024 16:10:33 +0100 Subject: [PATCH 12/28] Woah guys this is so compliant! Signed-off-by: BoomMicrophone --- src/suyu/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index 9195bd0aae..084883caa0 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -67,11 +67,11 @@ static FileSys::VirtualDir VfsFilesystemCreateDirectoryWrapper( } // Overloaded function, also removed by palafiate -static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::VirtualDir& dir, const std::string& path) { +static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::VirtualDir& dir, + const std::string& path) { return dir->CreateFile(path); } - #include #include From 6f26709e42fc535332cbe38c695256a7af1c2db5 Mon Sep 17 00:00:00 2001 From: BoomMicrophone Date: Tue, 26 Mar 2024 16:34:22 +0100 Subject: [PATCH 13/28] fix epic fail (I am relying on actions to do the compiling for me until i get nix) --- src/suyu/game_list.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/suyu/game_list.cpp b/src/suyu/game_list.cpp index 28a9d9c970..132ff30b0c 100644 --- a/src/suyu/game_list.cpp +++ b/src/suyu/game_list.cpp @@ -581,7 +581,7 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri remove_menu->addSeparator(); QAction* remove_shader_cache = remove_menu->addAction(tr("Remove All Pipeline Caches")); QAction* remove_all_content = remove_menu->addAction(tr("Remove All Installed Contents")); - QAction* dump_romfs_menu = context_menu.addMenu(tr("Dump RomFS")); + QMenu* dump_romfs_menu = context_menu.addMenu(tr("Dump RomFS")); QAction* dump_romfs = dump_romfs_menu->addAction(tr("Dump RomFS")); QAction* dump_romfs_sdmc = dump_romfs_menu->addAction(tr("Dump RomFS to SDMC")); QAction* verify_integrity = context_menu.addAction(tr("Verify Integrity")); From dca166ca9c5abccb661d1ab140746f81d142c6e5 Mon Sep 17 00:00:00 2001 From: BoomMicrophone Date: Sun, 31 Mar 2024 21:41:43 +0200 Subject: [PATCH 14/28] remove comment gpg timeout so i gotta coooooommit :D --- src/suyu/main.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index 084883caa0..42a5a6587c 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -1,9 +1,6 @@ // SPDX-FileCopyrightText: 2014 Citra Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -// Modified by palfaiate on <2024/03/07> -// Reverted palfaiate's changes on <2024/03/25> -Nine-Ball - #include #include #include From 1f517bbe1eb10bdcfec380a682fc31d15c82921f Mon Sep 17 00:00:00 2001 From: BoomMicrophone Date: Sun, 31 Mar 2024 21:42:11 +0200 Subject: [PATCH 15/28] remove comment gotta coooooommit :D --- src/common/settings.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/common/settings.h b/src/common/settings.h index 7f61804052..4e993ea622 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -1,9 +1,6 @@ // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -// Modified by palfaiate on <2024/03/07> -// Reverted palfaiate's changes on <2024/03/25> -Nine-Ball - #pragma once #include From 806b300969b321d2949b1adf9d7a16bb06997a21 Mon Sep 17 00:00:00 2001 From: zqpvr01 Date: Thu, 11 Apr 2024 03:41:07 +0200 Subject: [PATCH 16/28] Remove discord --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 703b475e78..65d887ed06 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ It is written in C++ with portability in mind, and we're actively working on bui

- Discord | + Matrix | Status | Development | Downloads | @@ -77,7 +77,7 @@ We have official builds [here.](https://git.suyu.dev/suyu/suyu/releases) If any ## Support -If you have any questions, don't hesitate to ask us on [Discord](https://discord.gg/suyu). We don't bite! +If you have any questions, don't hesitate to ask us on [Matrix](https://chat.suyu.dev). We don't bite! ## License From d2c09f531b4fed92b4cf46a4b7d86fce0c8b8c71 Mon Sep 17 00:00:00 2001 From: zqpvr01 Date: Thu, 11 Apr 2024 03:42:30 +0200 Subject: [PATCH 17/28] Remove discord (2) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 65d887ed06..6abd4264d8 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ SPDX-License-Identifier: GPL-3.0-or-later **Note**: We do not support or condone piracy in any form. In order to use suyu, you'll need keys from your real Switch system, and games which you have legally obtained and paid for. We do not intend to make money or profit from this project. -We're in need of developers. Please join our Discord server below if you want to contribute! +We're in need of developers. Please join our Matrix below if you want to contribute! This repo is based on Yuzu EA 4176.


From ba40a4516df6fcdc26d2b3c6055895ce5655068e Mon Sep 17 00:00:00 2001 From: zqpvr01 Date: Thu, 11 Apr 2024 03:44:08 +0200 Subject: [PATCH 18/28] Remove discord (3) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6abd4264d8..fc456c50f5 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ We currently have builds over at the [Releases](https://git.suyu.dev/suyu/suyu/r This project is completely free and open source, and anyone can contribute to help improve suyu. -Most of the development happens on GitLab. For development discussion, please join us on [Discord](https://discord.gg/suyu). +Most of the development happens on GitLab. For development discussion, please join us on [Matrix](https://chat.suyu.dev). If you want to contribute, please take a look at the [Contributor's Guide](https://git.suyu.dev/suyu/suyu/wiki/Contributing) and [Developer Information](https://git.suyu.dev/suyu/suyu/wiki/Developer-Information). You can also contact any of the developers on Discord to learn more about the current state of suyu. From 02465291241c9e03dab02dce255d9de94ccad359 Mon Sep 17 00:00:00 2001 From: administrator Date: Fri, 12 Apr 2024 15:15:29 +0200 Subject: [PATCH 19/28] Change Matrix to chat --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fc456c50f5..5baba68ea9 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ SPDX-License-Identifier: GPL-3.0-or-later **Note**: We do not support or condone piracy in any form. In order to use suyu, you'll need keys from your real Switch system, and games which you have legally obtained and paid for. We do not intend to make money or profit from this project. -We're in need of developers. Please join our Matrix below if you want to contribute! +We're in need of developers. Please join our chat below if you want to contribute! This repo is based on Yuzu EA 4176.
@@ -25,7 +25,7 @@ It is written in C++ with portability in mind, and we're actively working on bui

- Matrix | + Chat | Status | Development | Downloads | @@ -48,7 +48,7 @@ We currently have builds over at the [Releases](https://git.suyu.dev/suyu/suyu/r This project is completely free and open source, and anyone can contribute to help improve suyu. -Most of the development happens on GitLab. For development discussion, please join us on [Matrix](https://chat.suyu.dev). +Most of the development happens on GitLab. For development discussion, please join us in our [Chat](https://chat.suyu.dev). If you want to contribute, please take a look at the [Contributor's Guide](https://git.suyu.dev/suyu/suyu/wiki/Contributing) and [Developer Information](https://git.suyu.dev/suyu/suyu/wiki/Developer-Information). You can also contact any of the developers on Discord to learn more about the current state of suyu. @@ -77,7 +77,7 @@ We have official builds [here.](https://git.suyu.dev/suyu/suyu/releases) If any ## Support -If you have any questions, don't hesitate to ask us on [Matrix](https://chat.suyu.dev). We don't bite! +If you have any questions, don't hesitate to ask us in our [chat](https://chat.suyu.dev). We don't bite! ## License From 4b1c30ec49af8504bf606c548a42a55735077682 Mon Sep 17 00:00:00 2001 From: administrator Date: Wed, 17 Apr 2024 02:13:24 +0200 Subject: [PATCH 20/28] Replace Discord with suyu chat in issue template Fixes https://git.suyu.dev/suyu/suyu/issues/139 --- .forgejo/ISSUE_TEMPLATE/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.forgejo/ISSUE_TEMPLATE/config.yml b/.forgejo/ISSUE_TEMPLATE/config.yml index 0be63fdb7a..1a365db1a9 100644 --- a/.forgejo/ISSUE_TEMPLATE/config.yml +++ b/.forgejo/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - - name: suyu Discord - url: https://discord.com/invite/suyu - about: If you are experiencing an issue with suyu, and you need tech support, or if you have a general question, try asking in the official suyu Discord linked here. Piracy is not allowed. + - name: suyu chat + url: https://chat.suyu.dev/ + about: If you are experiencing an issue with suyu, and you need tech support, or if you have a general question, try asking in the official suyu chat linked here. Piracy is not allowed. From 91dd8ba6f0ce4e44c9ddbb7981a887ec7aaa8556 Mon Sep 17 00:00:00 2001 From: administrator Date: Wed, 17 Apr 2024 02:14:41 +0200 Subject: [PATCH 21/28] Replace Discord with suyu chat in issue template --- .gitea/ISSUE_TEMPLATE/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitea/ISSUE_TEMPLATE/config.yml b/.gitea/ISSUE_TEMPLATE/config.yml index 0be63fdb7a..1a365db1a9 100644 --- a/.gitea/ISSUE_TEMPLATE/config.yml +++ b/.gitea/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - - name: suyu Discord - url: https://discord.com/invite/suyu - about: If you are experiencing an issue with suyu, and you need tech support, or if you have a general question, try asking in the official suyu Discord linked here. Piracy is not allowed. + - name: suyu chat + url: https://chat.suyu.dev/ + about: If you are experiencing an issue with suyu, and you need tech support, or if you have a general question, try asking in the official suyu chat linked here. Piracy is not allowed. From 35afff5c317b2186def271bddceb465f081cf256 Mon Sep 17 00:00:00 2001 From: chaphidoesstuff Date: Wed, 17 Apr 2024 17:50:32 +0200 Subject: [PATCH 22/28] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5baba68ea9..793e49bedc 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ SPDX-License-Identifier: GPL-3.0-or-later We're in need of developers. Please join our chat below if you want to contribute! This repo is based on Yuzu EA 4176. +Support the original suyu developer team [here](https://discord.gg/ajz5hdrZ) +


From 84bd6264ea4b739132aa432e5e0f50c4b7b0fe72 Mon Sep 17 00:00:00 2001 From: chaphidoesstuff Date: Wed, 17 Apr 2024 18:21:27 +0200 Subject: [PATCH 23/28] Added info --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 793e49bedc..f73d68719a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ SPDX-License-Identifier: GPL-3.0-or-later **Note**: We do not support or condone piracy in any form. In order to use suyu, you'll need keys from your real Switch system, and games which you have legally obtained and paid for. We do not intend to make money or profit from this project. We're in need of developers. Please join our chat below if you want to contribute! -This repo is based on Yuzu EA 4176. +This repo was based on Yuzu EA 4176 but the code is being rewritten from the ground up for legal and performance reasons. Support the original suyu developer team [here](https://discord.gg/ajz5hdrZ) From e795daf66c07d619ca7fa6e974768fbdb54f325b Mon Sep 17 00:00:00 2001 From: chaphidoesstuff Date: Wed, 17 Apr 2024 18:31:46 +0200 Subject: [PATCH 24/28] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f73d68719a..8b9c5880c9 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,9 @@ Support the original suyu developer team [here](https://discord.gg/ajz5hdrZ)

-

suyu is the continuation of the world's most popular, open-source, Nintendo Switch emulator, yuzu. +

suyu was the continuation of the world's most popular, open-source, Nintendo Switch emulator, yuzu.
-It is written in C++ with portability in mind, and we're actively working on builds for Windows, Linux and Android. +It is written in C++ (C# possibly required soon) with portability in mind, and we're actively working on builds for Windows, Linux and Android along with a custom OS called [suyuos](https://git.suyu.dev/suyu/suyu-os).

From 2ac178617c412ab0bf8a14901d940339921e6d7c Mon Sep 17 00:00:00 2001 From: chaphidoesstuff Date: Wed, 17 Apr 2024 23:20:04 +0200 Subject: [PATCH 25/28] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8b9c5880c9..0ca84ac492 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,10 @@ Support the original suyu developer team [here](https://discord.gg/ajz5hdrZ)
-

suyu was the continuation of the world's most popular, open-source, Nintendo Switch emulator, yuzu. +

suyu was the continuation of the world's most popular, open-source, Nintendo Switch emulator, yuzu, but is now something greater.
-It is written in C++ (C# possibly required soon) with portability in mind, and we're actively working on builds for Windows, Linux and Android along with a custom OS called [suyuos](https://git.suyu.dev/suyu/suyu-os). +It is written in C++ (C# possibly required soon) with portability in mind, and we're actively working on builds for Windows, Linux and Android along with a custom OS called suyuos (https://git.suyu.dev/suyu/suyu-os) . +

From 5ebba7bdea4f3a539050e22feaaea8e1e7a1245c Mon Sep 17 00:00:00 2001 From: chaphidoesstuff Date: Wed, 17 Apr 2024 23:27:12 +0200 Subject: [PATCH 26/28] Added Ios release --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0ca84ac492..c50f5dc2eb 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ You can also contact any of the developers on Discord to learn more about the cu * __Linux__: [Releases](https://git.suyu.dev/suyu/suyu/releases) * __macOS__: [Releases](https://git.suyu.dev/suyu/suyu/releases) * __Android__: [Releases](https://git.suyu.dev/suyu/suyu/releases) +*__IOS (Sudachi redirect)__: [Releases](https://github.com/emuPlace/Sudachi/releases) If you want daily builds then [Click here](https://git.suyu.dev/suyu/suyu/actions) If you don't know how to download the daily builds then [Click here](https://git.suyu.dev/suyu/suyu/raw/branch/dev/img/daily-builds.png) From 01e4c367f8d1ba2a44713b9b78b6ec924d42d7d6 Mon Sep 17 00:00:00 2001 From: chaphidoesstuff Date: Wed, 17 Apr 2024 23:28:26 +0200 Subject: [PATCH 27/28] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c50f5dc2eb..3a5c1dd674 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ You can also contact any of the developers on Discord to learn more about the cu * __Linux__: [Releases](https://git.suyu.dev/suyu/suyu/releases) * __macOS__: [Releases](https://git.suyu.dev/suyu/suyu/releases) * __Android__: [Releases](https://git.suyu.dev/suyu/suyu/releases) -*__IOS (Sudachi redirect)__: [Releases](https://github.com/emuPlace/Sudachi/releases) +* __IOS (Sudachi redirect)__: [Releases](https://github.com/emuPlace/Sudachi/releases) If you want daily builds then [Click here](https://git.suyu.dev/suyu/suyu/actions) If you don't know how to download the daily builds then [Click here](https://git.suyu.dev/suyu/suyu/raw/branch/dev/img/daily-builds.png) From beb4ef9ac7110c9ef43a32df98ced7501c6fc7d1 Mon Sep 17 00:00:00 2001 From: Crimson Hawk Date: Thu, 18 Apr 2024 11:41:41 +0800 Subject: [PATCH 28/28] Undo some changes to readme --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3a5c1dd674..c976ef850a 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,9 @@ Support the original suyu developer team [here](https://discord.gg/ajz5hdrZ)
-

suyu was the continuation of the world's most popular, open-source, Nintendo Switch emulator, yuzu, but is now something greater. +

suyu is the continuation of the world's most popular, open-source, Nintendo Switch emulator.
-It is written in C++ (C# possibly required soon) with portability in mind, and we're actively working on builds for Windows, Linux and Android along with a custom OS called suyuos (https://git.suyu.dev/suyu/suyu-os) . +It is written in C++ (C# possibly required soon) with portability in mind, we actively work on builds for Windows, Linux and Android, along with a WIP custom OS called suyuOS (https://git.suyu.dev/suyu/suyu-os) .

@@ -62,7 +62,6 @@ You can also contact any of the developers on Discord to learn more about the cu * __Linux__: [Releases](https://git.suyu.dev/suyu/suyu/releases) * __macOS__: [Releases](https://git.suyu.dev/suyu/suyu/releases) * __Android__: [Releases](https://git.suyu.dev/suyu/suyu/releases) -* __IOS (Sudachi redirect)__: [Releases](https://github.com/emuPlace/Sudachi/releases) If you want daily builds then [Click here](https://git.suyu.dev/suyu/suyu/actions) If you don't know how to download the daily builds then [Click here](https://git.suyu.dev/suyu/suyu/raw/branch/dev/img/daily-builds.png)