PM-3349 PM-3350 MAUI Migration Initial
|
@ -1,471 +1,107 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 16
|
# Visual Studio Version 16
|
||||||
VisualStudioVersion = 16.0.29009.5
|
VisualStudioVersion = 25.0.1706.4
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Android", "src\Android\Android.csproj", "{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "App", "src\App\App.csproj", "{971FDF07-E288-4239-B47A-E9E7E912193B}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "App", "src\App\App.csproj", "{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "src\Core\Core.csproj", "{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}"
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "src\Core\Core.csproj", "{4B8A8C41-9820-4341-974C-41E65B7F4366}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Playground", "test\Playground\Playground.csproj", "{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D10CA4A9-F866-40E1-B658-F69051236C71}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{8904C536-C67D-420F-9971-51B26574C3AA}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "store", "store", "{92470CBD-9047-4C3C-8EA3-D972D6622D84}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "google", "google", "{2E399654-26A2-46F6-B9CA-1B496A3F370A}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{76690DFB-B7F4-4781-83E4-113FDC450AFE}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
.editorconfig = .editorconfig
|
|
||||||
.gitignore = .gitignore
|
|
||||||
.github\workflows\build.yml = .github\workflows\build.yml
|
|
||||||
CONTRIBUTING.md = CONTRIBUTING.md
|
|
||||||
crowdin.yml = crowdin.yml
|
|
||||||
README.md = README.md
|
|
||||||
SECURITY.md = SECURITY.md
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Publisher", "store\google\Publisher\Publisher.csproj", "{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}"
|
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.Core", "src\iOS.Core\iOS.Core.csproj", "{E71F3053-056C-4381-9638-048ED73BDFF6}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.Core", "src\iOS.Core\iOS.Core.csproj", "{E71F3053-056C-4381-9638-048ED73BDFF6}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS", "src\iOS\iOS.csproj", "{599E0201-420A-4C3E-A7BA-5349F72E0B15}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.Extension", "src\iOS.Extension\iOS.Extension.csproj", "{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "test\Common\Common.csproj", "{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Test", "test\Core.Test\Core.Test.csproj", "{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.ShareExtension", "src\iOS.ShareExtension\iOS.ShareExtension.csproj", "{F8C3F648-EA5A-4719-8005-85D1690B1655}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.Autofill", "src\iOS.Autofill\iOS.Autofill.csproj", "{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
Release|Any CPU = Release|Any CPU
|
||||||
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
FDroid|Any CPU = FDroid|Any CPU
|
||||||
|
Debug|iPhone = Debug|iPhone
|
||||||
|
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||||
|
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||||
AppStore|Any CPU = AppStore|Any CPU
|
AppStore|Any CPU = AppStore|Any CPU
|
||||||
AppStore|iPhone = AppStore|iPhone
|
AppStore|iPhone = AppStore|iPhone
|
||||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||||
Debug|iPhone = Debug|iPhone
|
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
||||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
||||||
FDroid|Any CPU = FDroid|Any CPU
|
|
||||||
FDroid|iPhone = FDroid|iPhone
|
|
||||||
FDroid|iPhoneSimulator = FDroid|iPhoneSimulator
|
|
||||||
Release|Any CPU = Release|Any CPU
|
|
||||||
Release|iPhone = Release|iPhone
|
|
||||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.FDroid|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.FDroid|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.AppStore|iPhone.Build.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.AppStore|iPhone.Deploy.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Debug|iPhone.Build.0 = Debug|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Debug|iPhone.Deploy.0 = Debug|Any CPU
|
{971FDF07-E288-4239-B47A-E9E7E912193B}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.FDroid|Any CPU.ActiveCfg = FDroid|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.FDroid|Any CPU.Build.0 = FDroid|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.FDroid|Any CPU.ActiveCfg = FDroid|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.FDroid|Any CPU.Deploy.0 = FDroid|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.FDroid|Any CPU.Build.0 = FDroid|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.FDroid|iPhone.ActiveCfg = FDroid|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.FDroid|iPhone.Build.0 = FDroid|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.FDroid|iPhone.Deploy.0 = FDroid|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.FDroid|iPhoneSimulator.ActiveCfg = FDroid|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.FDroid|iPhoneSimulator.Build.0 = FDroid|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.FDroid|iPhoneSimulator.Deploy.0 = FDroid|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Release|Any CPU.Build.0 = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Release|iPhone.ActiveCfg = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Release|iPhone.Build.0 = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Release|iPhone.Deploy.0 = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
|
{11DBC05E-F8B4-49ED-AAC9-96D92336D21C}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.FDroid|Any CPU.ActiveCfg = FDroid|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.FDroid|Any CPU.Build.0 = FDroid|Any CPU
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|iPhone.Build.0 = Debug|iPhone
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.AppStore|iPhone.Build.0 = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.AppStore|iPhone.Deploy.0 = Release|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Debug|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Debug|iPhone.Deploy.0 = Debug|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.FDroid|Any CPU.ActiveCfg = FDroid|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.FDroid|Any CPU.Build.0 = FDroid|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.FDroid|iPhone.ActiveCfg = FDroid|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.FDroid|iPhone.Build.0 = FDroid|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.FDroid|iPhoneSimulator.ActiveCfg = FDroid|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.FDroid|iPhoneSimulator.Build.0 = FDroid|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Release|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Release|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Release|iPhone.Deploy.0 = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.AppStore|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Debug|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.FDroid|Any CPU.ActiveCfg = FDroid|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.FDroid|Any CPU.Build.0 = FDroid|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.FDroid|iPhone.ActiveCfg = FDroid|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.FDroid|iPhone.Build.0 = FDroid|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.FDroid|iPhoneSimulator.ActiveCfg = FDroid|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.FDroid|iPhoneSimulator.Build.0 = FDroid|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Release|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Release|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Debug|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.FDroid|Any CPU.ActiveCfg = FDroid|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.FDroid|Any CPU.Build.0 = FDroid|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.FDroid|iPhone.ActiveCfg = FDroid|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.FDroid|iPhone.Build.0 = FDroid|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.FDroid|iPhoneSimulator.ActiveCfg = FDroid|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.FDroid|iPhoneSimulator.Build.0 = FDroid|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Release|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Release|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Debug|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.FDroid|Any CPU.ActiveCfg = FDroid|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.FDroid|Any CPU.Build.0 = FDroid|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.FDroid|iPhone.ActiveCfg = FDroid|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.FDroid|iPhone.Build.0 = FDroid|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.FDroid|iPhoneSimulator.ActiveCfg = FDroid|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.FDroid|iPhoneSimulator.Build.0 = FDroid|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Release|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Release|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|Any CPU.Build.0 = Ad-Hoc|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|Any CPU.ActiveCfg = AppStore|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|Any CPU.ActiveCfg = AppStore|Any CPU
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|Any CPU.Build.0 = AppStore|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|Any CPU.Build.0 = AppStore|Any CPU
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|Any CPU
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|Any CPU.Build.0 = Ad-Hoc|Any CPU
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|iPhone.Build.0 = Debug|iPhone
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
{E71F3053-056C-4381-9638-048ED73BDFF6}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.FDroid|Any CPU.ActiveCfg = FDroid|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.FDroid|Any CPU.Build.0 = FDroid|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.FDroid|iPhone.ActiveCfg = FDroid|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.FDroid|iPhone.Build.0 = FDroid|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.FDroid|iPhoneSimulator.ActiveCfg = FDroid|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.FDroid|iPhoneSimulator.Build.0 = FDroid|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Debug|Any CPU.ActiveCfg = Debug|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Debug|iPhone.Build.0 = Debug|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Debug|iPhone.Deploy.0 = Debug|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.FDroid|Any CPU.ActiveCfg = FDroid|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.FDroid|iPhone.ActiveCfg = FDroid|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.FDroid|iPhone.Build.0 = FDroid|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.FDroid|iPhoneSimulator.ActiveCfg = FDroid|iPhoneSimulator
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.FDroid|iPhoneSimulator.Build.0 = FDroid|iPhoneSimulator
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Release|Any CPU.ActiveCfg = Release|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Release|iPhone.ActiveCfg = Release|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Release|iPhone.Build.0 = Release|iPhone
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Ad-Hoc|Any CPU.Build.0 = Ad-Hoc|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.AppStore|Any CPU.Build.0 = AppStore|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Debug|Any CPU.ActiveCfg = Debug|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Debug|iPhone.Build.0 = Debug|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Debug|iPhone.Deploy.0 = Debug|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.FDroid|Any CPU.ActiveCfg = Release|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.FDroid|Any CPU.Build.0 = Release|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.FDroid|iPhone.ActiveCfg = Release|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.FDroid|iPhone.Build.0 = Release|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.FDroid|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.FDroid|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Release|Any CPU.ActiveCfg = Release|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Release|iPhone.ActiveCfg = Release|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Release|iPhone.Build.0 = Release|iPhone
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.AppStore|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Debug|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.FDroid|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.FDroid|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.FDroid|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.FDroid|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.FDroid|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.FDroid|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Release|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Release|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.AppStore|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Debug|iPhone.Build.0 = Debug|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.FDroid|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.FDroid|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.FDroid|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.FDroid|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.FDroid|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.FDroid|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Release|iPhone.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Release|iPhone.Build.0 = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|Any CPU.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|Any CPU.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|iPhone.ActiveCfg = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|iPhone.Build.0 = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|Any CPU.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|Any CPU.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|iPhone.ActiveCfg = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|iPhone.Build.0 = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.AppStore|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|iPhone.Build.0 = Debug|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|Any CPU.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|Any CPU.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|iPhone.ActiveCfg = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|iPhone.Build.0 = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.FDroid|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|Any CPU.ActiveCfg = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|Any CPU.Build.0 = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|iPhone.ActiveCfg = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|iPhone.Build.0 = Release|iPhone
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|Any CPU.Build.0 = Ad-Hoc|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|Any CPU.Build.0 = AppStore|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|Any CPU.ActiveCfg = Debug|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhone.Build.0 = Debug|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhone.Deploy.0 = Debug|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|Any CPU.ActiveCfg = Release|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|Any CPU.Build.0 = Release|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhone.ActiveCfg = Release|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhone.Build.0 = Release|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.FDroid|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|Any CPU.ActiveCfg = Release|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhone.ActiveCfg = Release|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhone.Build.0 = Release|iPhone
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
|
||||||
{304400AF-F0ED-40FA-B102-EA3C3EC43E4F} = {D10CA4A9-F866-40E1-B658-F69051236C71}
|
|
||||||
{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C} = {D10CA4A9-F866-40E1-B658-F69051236C71}
|
|
||||||
{4B8A8C41-9820-4341-974C-41E65B7F4366} = {D10CA4A9-F866-40E1-B658-F69051236C71}
|
|
||||||
{9C8DA5A8-904D-466F-B9B0-1A4AB5A9AFC3} = {8904C536-C67D-420F-9971-51B26574C3AA}
|
|
||||||
{2E399654-26A2-46F6-B9CA-1B496A3F370A} = {92470CBD-9047-4C3C-8EA3-D972D6622D84}
|
|
||||||
{256F9E44-0AF5-4D97-A2F9-DA26080C0A5D} = {2E399654-26A2-46F6-B9CA-1B496A3F370A}
|
|
||||||
{E71F3053-056C-4381-9638-048ED73BDFF6} = {D10CA4A9-F866-40E1-B658-F69051236C71}
|
|
||||||
{599E0201-420A-4C3E-A7BA-5349F72E0B15} = {D10CA4A9-F866-40E1-B658-F69051236C71}
|
|
||||||
{324BE76C-38FA-4F11-8BB1-95C7B3B1B545} = {D10CA4A9-F866-40E1-B658-F69051236C71}
|
|
||||||
{4085B0A5-12A9-4993-B8B8-4ACE72E62E39} = {8904C536-C67D-420F-9971-51B26574C3AA}
|
|
||||||
{8AE548D9-A567-4E97-995E-93EC7DB0FDE0} = {8904C536-C67D-420F-9971-51B26574C3AA}
|
|
||||||
{F8C3F648-EA5A-4719-8005-85D1690B1655} = {D10CA4A9-F866-40E1-B658-F69051236C71}
|
|
||||||
{8A3ECD75-3EC8-4CB3-B3A2-A73A724C279A} = {D10CA4A9-F866-40E1-B658-F69051236C71}
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {7D436EA3-8B7E-45D2-8D14-0730BD2E0410}
|
SolutionGuid = {4368352B-5E2E-4F0B-949A-208A3E79E713}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
@ -1,327 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProjectGuid>{304400AF-F0ED-40FA-B102-EA3C3EC43E4F}</ProjectGuid>
|
|
||||||
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
|
||||||
<TemplateGuid>{c9e5eea5-ca05-42a1-839b-61506e0a37df}</TemplateGuid>
|
|
||||||
<OutputType>Library</OutputType>
|
|
||||||
<RootNamespace>Bit.Droid</RootNamespace>
|
|
||||||
<AssemblyName>BitwardenAndroid</AssemblyName>
|
|
||||||
<AndroidApplication>True</AndroidApplication>
|
|
||||||
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
|
|
||||||
<AndroidResgenClass>Resource</AndroidResgenClass>
|
|
||||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
|
||||||
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
|
|
||||||
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
|
|
||||||
<TargetFrameworkVersion>v13.0</TargetFrameworkVersion>
|
|
||||||
<AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
|
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>portable</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>bin\Debug</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>3</WarningLevel>
|
|
||||||
<AndroidSupportedAbis />
|
|
||||||
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugSymbols>false</DebugSymbols>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release</OutputPath>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<AndroidManagedSymbols>true</AndroidManagedSymbols>
|
|
||||||
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
|
|
||||||
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
|
|
||||||
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
|
|
||||||
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
|
|
||||||
<AndroidEnableProfiledAot>true</AndroidEnableProfiledAot>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'FDroid|AnyCPU'">
|
|
||||||
<DebugSymbols>false</DebugSymbols>
|
|
||||||
<OutputPath>bin\FDroid\</OutputPath>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
|
||||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
<DefineConstants>FDROID</DefineConstants>
|
|
||||||
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
|
|
||||||
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
|
|
||||||
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
|
|
||||||
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
|
|
||||||
<AndroidEnableProfiledAot>true</AndroidEnableProfiledAot>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="Mono.Android" />
|
|
||||||
<Reference Include="Mono.Android.Export" />
|
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Core" />
|
|
||||||
<Reference Include="System.Xml.Linq" />
|
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
<Reference Include="System.Net.Http" Condition="'$(Configuration)'=='FDroid'" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Plugin.CurrentActivity">
|
|
||||||
<Version>2.1.0.4</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Portable.BouncyCastle">
|
|
||||||
<Version>1.9.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.6.1.3" />
|
|
||||||
<PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.18" />
|
|
||||||
<PackageReference Include="Xamarin.AndroidX.CardView" Version="1.0.0.21" />
|
|
||||||
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.10.1.2" />
|
|
||||||
<PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.4.0.2" />
|
|
||||||
<PackageReference Include="Xamarin.Essentials">
|
|
||||||
<Version>1.8.0</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Xamarin.Firebase.Messaging">
|
|
||||||
<Version>123.1.2.2</Version>
|
|
||||||
</PackageReference>
|
|
||||||
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.9.0.2" />
|
|
||||||
<PackageReference Include="Xamarin.Google.Dagger" Version="2.46.1.2" />
|
|
||||||
<PackageReference Include="Xamarin.GooglePlayServices.SafetyNet">
|
|
||||||
<Version>118.0.1.5</Version>
|
|
||||||
</PackageReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="Accessibility\AccessibilityActivity.cs" />
|
|
||||||
<Compile Include="Accessibility\AccessibilityHelpers.cs" />
|
|
||||||
<Compile Include="Accessibility\Credentials.cs" />
|
|
||||||
<Compile Include="Accessibility\AccessibilityService.cs" />
|
|
||||||
<Compile Include="Accessibility\Browser.cs" />
|
|
||||||
<Compile Include="Accessibility\NodeList.cs" />
|
|
||||||
<Compile Include="Accessibility\KnownUsernameField.cs" />
|
|
||||||
<Compile Include="Autofill\AutofillConstants.cs" />
|
|
||||||
<Compile Include="Autofill\AutofillHelpers.cs" />
|
|
||||||
<Compile Include="Autofill\AutofillService.cs" />
|
|
||||||
<Compile Include="Autofill\AutofillExternalSelectionActivity.cs" />
|
|
||||||
<Compile Include="Autofill\Field.cs" />
|
|
||||||
<Compile Include="Autofill\FieldCollection.cs" />
|
|
||||||
<Compile Include="Autofill\FilledItem.cs" />
|
|
||||||
<Compile Include="Autofill\Parser.cs" />
|
|
||||||
<Compile Include="Autofill\SavedItem.cs" />
|
|
||||||
<Compile Include="Effects\FabShadowEffect.cs" />
|
|
||||||
<Compile Include="Effects\FixedSizeEffect.cs" />
|
|
||||||
<Compile Include="Effects\TabBarEffect.cs" />
|
|
||||||
<Compile Include="Push\FirebaseMessagingService.cs" />
|
|
||||||
<Compile Include="Receivers\ClearClipboardAlarmReceiver.cs" />
|
|
||||||
<Compile Include="Receivers\RestrictionsChangedReceiver.cs" />
|
|
||||||
<Compile Include="Receivers\EventUploadReceiver.cs" />
|
|
||||||
<Compile Include="Receivers\PackageReplacedReceiver.cs" />
|
|
||||||
<Compile Include="Renderers\ExtendedGridRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\ExtendedDatePickerRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\CustomTabbedRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\ExtendedStackLayoutRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\ExtendedStepperRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\CustomSwitchRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\ExtendedTimePickerRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\ExtendedSliderRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\CustomEditorRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\CustomPickerRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\CustomEntryRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\CustomSearchBarRenderer.cs" />
|
|
||||||
<Compile Include="Renderers\HybridWebViewRenderer.cs" />
|
|
||||||
<Compile Include="Services\AndroidPushNotificationService.cs" />
|
|
||||||
<Compile Include="Services\AndroidLogService.cs" />
|
|
||||||
<Compile Include="MainApplication.cs" />
|
|
||||||
<Compile Include="MainActivity.cs" />
|
|
||||||
<Compile Include="Resources\Resource.designer.cs" />
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<Compile Include="Services\BiometricService.cs" />
|
|
||||||
<Compile Include="Services\CryptoPrimitiveService.cs" />
|
|
||||||
<Compile Include="Services\DeviceActionService.cs" />
|
|
||||||
<Compile Include="Services\LocalizeService.cs" />
|
|
||||||
<Compile Include="Tiles\AutofillTileService.cs" />
|
|
||||||
<Compile Include="Tiles\GeneratorTileService.cs" />
|
|
||||||
<Compile Include="Tiles\MyVaultTileService.cs" />
|
|
||||||
<Compile Include="Utilities\AndroidHelpers.cs" />
|
|
||||||
<Compile Include="Utilities\ThemeHelpers.cs" />
|
|
||||||
<Compile Include="WebAuthCallbackActivity.cs" />
|
|
||||||
<Compile Include="Renderers\SelectableLabelRenderer.cs" />
|
|
||||||
<Compile Include="Services\ClipboardService.cs" />
|
|
||||||
<Compile Include="Utilities\IntentExtensions.cs" />
|
|
||||||
<Compile Include="Renderers\CustomPageRenderer.cs" />
|
|
||||||
<Compile Include="Effects\NoEmojiKeyboardEffect.cs" />
|
|
||||||
<Compile Include="Receivers\NotificationDismissReceiver.cs" />
|
|
||||||
<Compile Include="Services\FileService.cs" />
|
|
||||||
<Compile Include="Services\AutofillHandler.cs" />
|
|
||||||
<Compile Include="Constants.cs" />
|
|
||||||
<Compile Include="Effects\RemoveFontPaddingEffect.cs" />
|
|
||||||
<Compile Include="Services\WatchDeviceService.cs" />
|
|
||||||
<Compile Include="Renderers\CustomLabelRenderer.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidAsset Include="Assets\bwi-font.ttf" />
|
|
||||||
<AndroidAsset Include="Assets\RobotoMono_Regular.ttf" />
|
|
||||||
<AndroidAsset Include="Assets\MaterialIcons_Regular.ttf" />
|
|
||||||
<None Include="8bit.keystore.enc" />
|
|
||||||
<GoogleServicesJson Include="google-services.json" />
|
|
||||||
<GoogleServicesJson Include="google-services.json.enc" />
|
|
||||||
<None Include="fdroid-keystore.jks.enc" />
|
|
||||||
<AndroidNativeLibrary Include="lib\arm64-v8a\libargon2.so" />
|
|
||||||
<AndroidNativeLibrary Include="lib\armeabi-v7a\libargon2.so" />
|
|
||||||
<AndroidNativeLibrary Include="lib\x86\libargon2.so" />
|
|
||||||
<AndroidNativeLibrary Include="lib\x86_64\libargon2.so" />
|
|
||||||
<None Include="Properties\AndroidManifest.xml" />
|
|
||||||
<None Include="upload-keystore.jks.enc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-hdpi\logo_legacy.png" />
|
|
||||||
<AndroidResource Include="Resources\drawable-hdpi\logo_white_legacy.png" />
|
|
||||||
<AndroidResource Include="Resources\drawable-xhdpi\logo_legacy.png" />
|
|
||||||
<AndroidResource Include="Resources\drawable-xhdpi\logo_white_legacy.png" />
|
|
||||||
<AndroidResource Include="Resources\drawable-xxhdpi\logo_legacy.png" />
|
|
||||||
<AndroidResource Include="Resources\drawable-xxhdpi\logo_white_legacy.png" />
|
|
||||||
<AndroidResource Include="Resources\drawable\card.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\cog_environment.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\cog_settings.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\icon.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\ic_launcher_foreground.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\ic_launcher_monochrome.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\ic_warning.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\id.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\info.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\list_item_bg.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\lock.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\login.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\logo.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\logo_white.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\send.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\pencil.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\plus.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\generate.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\search.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\shield.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable-v23\splash_screen.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable-v23\splash_screen_dark.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\switch_thumb.xml" />
|
|
||||||
<AndroidResource Include="Resources\layout\progress_dialog_layout.xml" />
|
|
||||||
<AndroidResource Include="Resources\layout\Tabbar.axml" />
|
|
||||||
<AndroidResource Include="Resources\layout\Toolbar.axml" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-anydpi-v26\ic_launcher.xml" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-anydpi-v26\ic_launcher_round.xml" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-hdpi\ic_launcher.png" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-hdpi\ic_launcher_round.png" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-mdpi\ic_launcher.png" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-mdpi\ic_launcher_round.png" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-xhdpi\ic_launcher.png" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-xhdpi\ic_launcher_round.png" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-xxhdpi\ic_launcher.png" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-xxhdpi\ic_launcher_round.png" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-xxxhdpi\ic_launcher.png" />
|
|
||||||
<AndroidResource Include="Resources\mipmap-xxxhdpi\ic_launcher_round.png" />
|
|
||||||
<AndroidResource Include="Resources\values-night\styles.xml" />
|
|
||||||
<AndroidResource Include="Resources\values\styles.xml" />
|
|
||||||
<AndroidResource Include="Resources\values\colors.xml" />
|
|
||||||
<AndroidResource Include="Resources\values\manifest.xml" />
|
|
||||||
<AndroidResource Include="Resources\values-v30\manifest.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable-v26\splash_screen_round.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\logo_rounded.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable-night-v26\splash_screen_round.xml" />
|
|
||||||
<AndroidResource Include="Resources\drawable\ic_notification.xml">
|
|
||||||
<SubType></SubType>
|
|
||||||
<Generator></Generator>
|
|
||||||
</AndroidResource>
|
|
||||||
<AndroidResource Include="Resources\layout\validatable_input_dialog_layout.xml">
|
|
||||||
<SubType></SubType>
|
|
||||||
<Generator></Generator>
|
|
||||||
</AndroidResource>
|
|
||||||
<AndroidResource Include="Resources\drawable\empty_uris_placeholder.xml">
|
|
||||||
<SubType></SubType>
|
|
||||||
<Generator></Generator>
|
|
||||||
</AndroidResource>
|
|
||||||
<AndroidResource Include="Resources\drawable\empty_uris_placeholder_dark.xml">
|
|
||||||
<SubType></SubType>
|
|
||||||
<Generator></Generator>
|
|
||||||
</AndroidResource>
|
|
||||||
<AndroidResource Include="Resources\drawable\empty_login_requests.xml">
|
|
||||||
<SubType></SubType>
|
|
||||||
<Generator></Generator>
|
|
||||||
</AndroidResource>
|
|
||||||
<AndroidResource Include="Resources\drawable\empty_login_requests_dark.xml">
|
|
||||||
<SubType></SubType>
|
|
||||||
<Generator></Generator>
|
|
||||||
</AndroidResource>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable\splash_screen.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\App\App.csproj">
|
|
||||||
<Project>{EE44C6A1-2A85-45FE-8D9B-BF1D5F88809C}</Project>
|
|
||||||
<Name>App</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\Core\Core.csproj">
|
|
||||||
<Project>{4b8a8c41-9820-4341-974c-41e65b7f4366}</Project>
|
|
||||||
<Name>Core</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\xml\accessibilityservice.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\xml\autofillservice.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\xml\filepaths.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\xml\network_security_config.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\values\strings.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\values\ic_launcher_background.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\layout\autofill_listitem.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-hdpi\yubikey.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xhdpi\yubikey.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xxhdpi\yubikey.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable\slider_thumb.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable\splash_screen_dark.xml">
|
|
||||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</AndroidResource>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\values\dimens.xml">
|
|
||||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</AndroidResource>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\xml\app_restrictions.xml">
|
|
||||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</AndroidResource>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Resources\values-v30\" />
|
|
||||||
<Folder Include="Resources\drawable-v26\" />
|
|
||||||
<Folder Include="Resources\drawable-night-v26\" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
|
|
||||||
</Project>
|
|
|
@ -1,30 +0,0 @@
|
||||||
using Android.Graphics.Drawables;
|
|
||||||
using Bit.Droid.Effects;
|
|
||||||
using Bit.Droid.Utilities;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportEffect(typeof(FabShadowEffect), "FabShadowEffect")]
|
|
||||||
namespace Bit.Droid.Effects
|
|
||||||
{
|
|
||||||
public class FabShadowEffect : PlatformEffect
|
|
||||||
{
|
|
||||||
protected override void OnAttached ()
|
|
||||||
{
|
|
||||||
if (Control is Android.Widget.Button button)
|
|
||||||
{
|
|
||||||
var gd = new GradientDrawable();
|
|
||||||
gd.SetColor(ThemeHelpers.FabColor);
|
|
||||||
gd.SetCornerRadius(100);
|
|
||||||
|
|
||||||
button.SetBackground(gd);
|
|
||||||
button.Elevation = 6;
|
|
||||||
button.TranslationZ = 20;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnDetached ()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
using Android.Widget;
|
|
||||||
using Bit.Droid.Effects;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportEffect(typeof(FixedSizeEffect), "FixedSizeEffect")]
|
|
||||||
namespace Bit.Droid.Effects
|
|
||||||
{
|
|
||||||
public class FixedSizeEffect : PlatformEffect
|
|
||||||
{
|
|
||||||
protected override void OnAttached()
|
|
||||||
{
|
|
||||||
if (Element is Label label && Control is TextView textView)
|
|
||||||
{
|
|
||||||
textView.SetTextSize(Android.Util.ComplexUnitType.Pt, (float)label.FontSize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnDetached()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
using Android.Widget;
|
|
||||||
using Bit.Droid.Effects;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportEffect(typeof(RemoveFontPaddingEffect), nameof(RemoveFontPaddingEffect))]
|
|
||||||
namespace Bit.Droid.Effects
|
|
||||||
{
|
|
||||||
public class RemoveFontPaddingEffect : PlatformEffect
|
|
||||||
{
|
|
||||||
protected override void OnAttached()
|
|
||||||
{
|
|
||||||
if (Control is TextView textView)
|
|
||||||
{
|
|
||||||
textView.SetIncludeFontPadding(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnDetached()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
using Android.Views;
|
|
||||||
using Bit.Droid.Effects;
|
|
||||||
using Google.Android.Material.BottomNavigation;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ResolutionGroupName("Bitwarden")]
|
|
||||||
[assembly: ExportEffect(typeof(TabBarEffect), "TabBarEffect")]
|
|
||||||
namespace Bit.Droid.Effects
|
|
||||||
{
|
|
||||||
public class TabBarEffect : PlatformEffect
|
|
||||||
{
|
|
||||||
protected override void OnAttached()
|
|
||||||
{
|
|
||||||
if (!(Container.GetChildAt(0) is ViewGroup layout))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!(layout.GetChildAt(1) is BottomNavigationView bottomNavigationView))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
bottomNavigationView.LabelVisibilityMode = LabelVisibilityMode.LabelVisibilityLabeled;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnDetached()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
using System.Reflection;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
|
||||||
// set of attributes. Change these attribute values to modify the information
|
|
||||||
// associated with an assembly.
|
|
||||||
[assembly: AssemblyTitle("BitwardenAndroid")]
|
|
||||||
[assembly: AssemblyDescription("")]
|
|
||||||
[assembly: AssemblyConfiguration("")]
|
|
||||||
[assembly: AssemblyCompany("Bitwarden Inc.")]
|
|
||||||
[assembly: AssemblyProduct("Bitwarden")]
|
|
||||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
|
||||||
[assembly: AssemblyTrademark("")]
|
|
||||||
[assembly: AssemblyCulture("")]
|
|
||||||
[assembly: ComVisible(false)]
|
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
|
||||||
//
|
|
||||||
// Major Version
|
|
||||||
// Minor Version
|
|
||||||
// Build Number
|
|
||||||
// Revision
|
|
||||||
//
|
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
|
||||||
// by using the '*' as shown below:
|
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
|
@ -1,69 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using Android.Content;
|
|
||||||
using Android.Content.Res;
|
|
||||||
using Android.Views.InputMethods;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Bit.Droid.Utilities;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(Editor), typeof(CustomEditorRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class CustomEditorRenderer : EditorRenderer
|
|
||||||
{
|
|
||||||
public CustomEditorRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
// Workaround for issue described here:
|
|
||||||
// https://github.com/xamarin/Xamarin.Forms/issues/8291#issuecomment-617456651
|
|
||||||
protected override void OnAttachedToWindow()
|
|
||||||
{
|
|
||||||
base.OnAttachedToWindow();
|
|
||||||
EditText.Enabled = false;
|
|
||||||
EditText.Enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
UpdateBorderColor();
|
|
||||||
if (Control != null && e.NewElement != null)
|
|
||||||
{
|
|
||||||
Control.SetPadding(Control.PaddingLeft, Control.PaddingTop - 10, Control.PaddingRight,
|
|
||||||
Control.PaddingBottom + 20);
|
|
||||||
Control.ImeOptions = Control.ImeOptions | (ImeAction)ImeFlags.NoPersonalizedLearning |
|
|
||||||
(ImeAction)ImeFlags.NoExtractUi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
|
|
||||||
if (e.PropertyName == Entry.TextColorProperty.PropertyName)
|
|
||||||
{
|
|
||||||
UpdateBorderColor();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateBorderColor()
|
|
||||||
{
|
|
||||||
if (Control != null)
|
|
||||||
{
|
|
||||||
var states = new[]
|
|
||||||
{
|
|
||||||
new[] { Android.Resource.Attribute.StateFocused }, // focused
|
|
||||||
new[] { -Android.Resource.Attribute.StateFocused }, // unfocused
|
|
||||||
};
|
|
||||||
var colors = new int[]
|
|
||||||
{
|
|
||||||
ThemeHelpers.PrimaryColor,
|
|
||||||
ThemeHelpers.MutedColor
|
|
||||||
};
|
|
||||||
Control.BackgroundTintList = new ColorStateList(states, colors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,107 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using Android.Content;
|
|
||||||
using Android.Content.Res;
|
|
||||||
using Android.Graphics;
|
|
||||||
using Android.Text;
|
|
||||||
using Android.Views.InputMethods;
|
|
||||||
using Android.Widget;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Bit.Droid.Utilities;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(Entry), typeof(CustomEntryRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class CustomEntryRenderer : EntryRenderer
|
|
||||||
{
|
|
||||||
public CustomEntryRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
UpdateBorderColor();
|
|
||||||
if (Control != null && e.NewElement != null)
|
|
||||||
{
|
|
||||||
Control.SetPadding(Control.PaddingLeft, Control.PaddingTop - 10, Control.PaddingRight,
|
|
||||||
Control.PaddingBottom + 20);
|
|
||||||
Control.ImeOptions = Control.ImeOptions | (ImeAction)ImeFlags.NoPersonalizedLearning |
|
|
||||||
(ImeAction)ImeFlags.NoExtractUi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Workaround for bug preventing long-press -> copy/paste on Android 11
|
|
||||||
// See https://issuetracker.google.com/issues/37095917
|
|
||||||
protected override void OnAttachedToWindow()
|
|
||||||
{
|
|
||||||
base.OnAttachedToWindow();
|
|
||||||
Control.Enabled = false;
|
|
||||||
Control.Enabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Workaround for failure to disable text prediction on non-password fields
|
|
||||||
// see https://github.com/xamarin/Xamarin.Forms/issues/10857
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
|
|
||||||
// Check if changed property is "IsPassword", otherwise ignore
|
|
||||||
if (e.PropertyName == Entry.IsPasswordProperty.PropertyName)
|
|
||||||
{
|
|
||||||
// Check if field type is text, otherwise ignore (numeric passwords, etc.)
|
|
||||||
EditText.InputType = Element.Keyboard.ToInputType();
|
|
||||||
bool isText = (EditText.InputType & InputTypes.ClassText) == InputTypes.ClassText,
|
|
||||||
isNumber = (EditText.InputType & InputTypes.ClassNumber) == InputTypes.ClassNumber;
|
|
||||||
if (isText || isNumber)
|
|
||||||
{
|
|
||||||
if (Element.IsPassword)
|
|
||||||
{
|
|
||||||
// Element is a password field, set inputType to TextVariationPassword which disables
|
|
||||||
// predictive text by default
|
|
||||||
EditText.InputType = EditText.InputType |
|
|
||||||
(isText ? InputTypes.TextVariationPassword : InputTypes.NumberVariationPassword);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Element is not a password field, set inputType to TextVariationVisiblePassword to
|
|
||||||
// disable predictive text while still displaying the content.
|
|
||||||
EditText.InputType = EditText.InputType |
|
|
||||||
(isText ? InputTypes.TextVariationVisiblePassword : InputTypes.NumberVariationNormal);
|
|
||||||
}
|
|
||||||
|
|
||||||
// The workaround above forces a reset of the style properties, so we need to re-apply the font.
|
|
||||||
// see https://xamarin.github.io/bugzilla-archives/33/33666/bug.html
|
|
||||||
var typeface = Typeface.CreateFromAsset(Context.Assets, "RobotoMono_Regular.ttf");
|
|
||||||
if (Control is TextView label)
|
|
||||||
{
|
|
||||||
label.Typeface = typeface;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (e.PropertyName == Entry.TextColorProperty.PropertyName)
|
|
||||||
{
|
|
||||||
UpdateBorderColor();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateBorderColor()
|
|
||||||
{
|
|
||||||
if (Control != null)
|
|
||||||
{
|
|
||||||
var states = new[]
|
|
||||||
{
|
|
||||||
new[] { Android.Resource.Attribute.StateFocused }, // focused
|
|
||||||
new[] { -Android.Resource.Attribute.StateFocused }, // unfocused
|
|
||||||
};
|
|
||||||
var colors = new int[]
|
|
||||||
{
|
|
||||||
ThemeHelpers.PrimaryColor,
|
|
||||||
ThemeHelpers.MutedColor
|
|
||||||
};
|
|
||||||
Control.BackgroundTintList = new ColorStateList(states, colors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using Android.Content;
|
|
||||||
using Android.OS;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(CustomLabel), typeof(CustomLabelRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class CustomLabelRenderer : LabelRenderer
|
|
||||||
{
|
|
||||||
public CustomLabelRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
|
|
||||||
if (Control != null && e.NewElement is CustomLabel label)
|
|
||||||
{
|
|
||||||
if (label.FontWeight.HasValue && Build.VERSION.SdkInt >= BuildVersionCodes.P)
|
|
||||||
{
|
|
||||||
Control.Typeface = Android.Graphics.Typeface.Create(null, label.FontWeight.Value, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
var label = sender as CustomLabel;
|
|
||||||
switch (e.PropertyName)
|
|
||||||
{
|
|
||||||
case nameof(CustomLabel.AutomationId):
|
|
||||||
Control.ContentDescription = label.AutomationId;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
using System;
|
|
||||||
using Android.App;
|
|
||||||
using Android.Content;
|
|
||||||
using AndroidX.AppCompat.Widget;
|
|
||||||
using Bit.App.Resources;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(ContentPage), typeof(CustomPageRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class CustomPageRenderer : PageRenderer
|
|
||||||
{
|
|
||||||
public CustomPageRenderer(Context context) : base(context)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
|
|
||||||
Activity context = (Activity)this.Context;
|
|
||||||
var toolbar = context.FindViewById<Toolbar>(Resource.Id.toolbar);
|
|
||||||
if(toolbar != null)
|
|
||||||
{
|
|
||||||
toolbar.NavigationContentDescription = AppResources.TapToGoBack;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using Android.Content;
|
|
||||||
using Android.Content.Res;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Bit.Droid.Utilities;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(Picker), typeof(CustomPickerRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class CustomPickerRenderer : PickerRenderer
|
|
||||||
{
|
|
||||||
public CustomPickerRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
UpdateBorderColor();
|
|
||||||
if (Control != null && e.NewElement != null)
|
|
||||||
{
|
|
||||||
Control.SetPadding(Control.PaddingLeft, Control.PaddingTop - 10, Control.PaddingRight,
|
|
||||||
Control.PaddingBottom + 20);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
|
|
||||||
if (e.PropertyName == Picker.TextColorProperty.PropertyName)
|
|
||||||
{
|
|
||||||
UpdateBorderColor();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateBorderColor()
|
|
||||||
{
|
|
||||||
if (Control != null)
|
|
||||||
{
|
|
||||||
var states = new[]
|
|
||||||
{
|
|
||||||
new[] { Android.Resource.Attribute.StateFocused }, // focused
|
|
||||||
new[] { -Android.Resource.Attribute.StateFocused }, // unfocused
|
|
||||||
};
|
|
||||||
var colors = new int[]
|
|
||||||
{
|
|
||||||
ThemeHelpers.PrimaryColor,
|
|
||||||
ThemeHelpers.MutedColor
|
|
||||||
};
|
|
||||||
Control.BackgroundTintList = new ColorStateList(states, colors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
using Android.Content;
|
|
||||||
using Android.Views.InputMethods;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(SearchBar), typeof(CustomSearchBarRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class CustomSearchBarRenderer : SearchBarRenderer
|
|
||||||
{
|
|
||||||
public CustomSearchBarRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
if (Control != null && e.NewElement != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var magId = Resources.GetIdentifier("android:id/search_mag_icon", null, null);
|
|
||||||
var magImage = (Android.Widget.ImageView)Control.FindViewById(magId);
|
|
||||||
magImage.LayoutParameters = new Android.Widget.LinearLayout.LayoutParams(0, 0);
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
Control.SetImeOptions(Control.ImeOptions | (ImeAction)ImeFlags.NoPersonalizedLearning |
|
|
||||||
(ImeAction)ImeFlags.NoExtractUi);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using Android.Content;
|
|
||||||
using Android.Content.Res;
|
|
||||||
using Android.Graphics.Drawables;
|
|
||||||
using Android.OS;
|
|
||||||
using AndroidX.Core.Content.Resources;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Bit.Droid.Utilities;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(Switch), typeof(CustomSwitchRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class CustomSwitchRenderer : SwitchRenderer
|
|
||||||
{
|
|
||||||
public CustomSwitchRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{}
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<Switch> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
UpdateColors();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
|
|
||||||
if (e.PropertyName == Switch.OnColorProperty.PropertyName)
|
|
||||||
{
|
|
||||||
UpdateColors();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateColors()
|
|
||||||
{
|
|
||||||
if (Build.VERSION.SdkInt <= BuildVersionCodes.LollipopMr1)
|
|
||||||
{
|
|
||||||
// Android 5.x doesn't support ThumbTintList, and using SwitchCompat on every version after 5.x
|
|
||||||
// doesn't apply tinting the way we want. Let 5.x to do its own thing here.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Control != null)
|
|
||||||
{
|
|
||||||
Control.SetHintTextColor(ThemeHelpers.MutedColor);
|
|
||||||
var t = ResourcesCompat.GetDrawable(Resources, Resource.Drawable.switch_thumb, null);
|
|
||||||
if (t is GradientDrawable thumb)
|
|
||||||
{
|
|
||||||
Control.ThumbDrawable = thumb;
|
|
||||||
}
|
|
||||||
var thumbStates = new[]
|
|
||||||
{
|
|
||||||
new[] { Android.Resource.Attribute.StateChecked }, // checked
|
|
||||||
new[] { -Android.Resource.Attribute.StateChecked }, // unchecked
|
|
||||||
};
|
|
||||||
var thumbColors = new int[]
|
|
||||||
{
|
|
||||||
ThemeHelpers.SwitchOnColor,
|
|
||||||
ThemeHelpers.SwitchThumbColor
|
|
||||||
};
|
|
||||||
Control.ThumbTintList = new ColorStateList(thumbStates, thumbColors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
using Android.Content;
|
|
||||||
using Android.Views;
|
|
||||||
using Bit.App.Pages;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Google.Android.Material.BottomNavigation;
|
|
||||||
using Google.Android.Material.Navigation;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
using Xamarin.Forms.Platform.Android.AppCompat;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(TabbedPage), typeof(CustomTabbedRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class CustomTabbedRenderer : TabbedPageRenderer, NavigationBarView.IOnItemReselectedListener
|
|
||||||
{
|
|
||||||
private TabbedPage _page;
|
|
||||||
|
|
||||||
public CustomTabbedRenderer(Context context) : base(context) { }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
if (e.NewElement != null)
|
|
||||||
{
|
|
||||||
_page = e.NewElement;
|
|
||||||
GetBottomNavigationView()?.SetOnItemReselectedListener(this);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_page = e.OldElement;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private BottomNavigationView GetBottomNavigationView()
|
|
||||||
{
|
|
||||||
for (var i = 0; i < ViewGroup.ChildCount; i++)
|
|
||||||
{
|
|
||||||
var childView = ViewGroup.GetChildAt(i);
|
|
||||||
if (childView is ViewGroup viewGroup)
|
|
||||||
{
|
|
||||||
for (var j = 0; j < viewGroup.ChildCount; j++)
|
|
||||||
{
|
|
||||||
var childRelativeLayoutView = viewGroup.GetChildAt(j);
|
|
||||||
if (childRelativeLayoutView is BottomNavigationView bottomNavigationView)
|
|
||||||
{
|
|
||||||
return bottomNavigationView;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OnNavigationItemReselected(IMenuItem item)
|
|
||||||
{
|
|
||||||
if (_page?.CurrentPage?.Navigation != null && _page.CurrentPage.Navigation.NavigationStack.Count > 0)
|
|
||||||
{
|
|
||||||
if (_page is TabsPage tabsPage)
|
|
||||||
{
|
|
||||||
tabsPage.OnPageReselected();
|
|
||||||
}
|
|
||||||
Device.BeginInvokeOnMainThread(async () => await _page.CurrentPage.Navigation.PopToRootAsync());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using Android.Content;
|
|
||||||
using Android.Views;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(ExtendedDatePicker), typeof(ExtendedDatePickerRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class ExtendedDatePickerRenderer : DatePickerRenderer
|
|
||||||
{
|
|
||||||
public ExtendedDatePickerRenderer(Context context)
|
|
||||||
: base(context) { }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
if (Control != null && Element is ExtendedDatePicker element)
|
|
||||||
{
|
|
||||||
// center text
|
|
||||||
Control.Gravity = GravityFlags.CenterHorizontal;
|
|
||||||
|
|
||||||
// use placeholder until NullableDate set
|
|
||||||
if (!element.NullableDate.HasValue)
|
|
||||||
{
|
|
||||||
Control.Text = element.PlaceHolder;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.PropertyName == DatePicker.DateProperty.PropertyName ||
|
|
||||||
e.PropertyName == DatePicker.FormatProperty.PropertyName)
|
|
||||||
{
|
|
||||||
if (Control != null && Element is ExtendedDatePicker element)
|
|
||||||
{
|
|
||||||
if (Element.Format == element.PlaceHolder)
|
|
||||||
{
|
|
||||||
Control.Text = element.PlaceHolder;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
using Android.Content;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(ExtendedGrid), typeof(ExtendedGridRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class ExtendedGridRenderer : ViewRenderer
|
|
||||||
{
|
|
||||||
public ExtendedGridRenderer(Context context) : base(context) { }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<View> elementChangedEvent)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(elementChangedEvent);
|
|
||||||
if (elementChangedEvent.NewElement != null)
|
|
||||||
{
|
|
||||||
SetBackgroundResource(Resource.Drawable.list_item_bg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using Android.Content;
|
|
||||||
using Android.Graphics.Drawables;
|
|
||||||
using AndroidX.Core.Content.Resources;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(ExtendedSlider), typeof(ExtendedSliderRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class ExtendedSliderRenderer : SliderRenderer
|
|
||||||
{
|
|
||||||
public ExtendedSliderRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{}
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
UpdateColor();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
|
|
||||||
if (e.PropertyName == ExtendedSlider.ThumbBorderColorProperty.PropertyName)
|
|
||||||
{
|
|
||||||
UpdateColor();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateColor()
|
|
||||||
{
|
|
||||||
if (Control != null && Element is ExtendedSlider view)
|
|
||||||
{
|
|
||||||
var t = ResourcesCompat.GetDrawable(Resources, Resource.Drawable.slider_thumb, null);
|
|
||||||
if (t is GradientDrawable thumb)
|
|
||||||
{
|
|
||||||
if (view.ThumbColor == Color.Default)
|
|
||||||
{
|
|
||||||
thumb.SetColor(Color.White.ToAndroid());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
thumb.SetColor(view.ThumbColor.ToAndroid());
|
|
||||||
}
|
|
||||||
thumb.SetStroke(3, view.ThumbBorderColor.ToAndroid());
|
|
||||||
Control.SetThumb(thumb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
using Android.Content;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(ExtendedStackLayout), typeof(ExtendedStackLayoutRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class ExtendedStackLayoutRenderer : ViewRenderer
|
|
||||||
{
|
|
||||||
public ExtendedStackLayoutRenderer(Context context) : base(context) { }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<View> elementChangedEvent)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(elementChangedEvent);
|
|
||||||
if (elementChangedEvent.NewElement != null)
|
|
||||||
{
|
|
||||||
SetBackgroundResource(Resource.Drawable.list_item_bg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using Android.Content;
|
|
||||||
using Android.Graphics;
|
|
||||||
using Android.OS;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(ExtendedStepper), typeof(ExtendedStepperRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class ExtendedStepperRenderer : StepperRenderer
|
|
||||||
{
|
|
||||||
public ExtendedStepperRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{}
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<Stepper> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
UpdateBgColor();
|
|
||||||
UpdateFgColor();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
|
|
||||||
if (e.PropertyName == ExtendedStepper.StepperBackgroundColorProperty.PropertyName)
|
|
||||||
{
|
|
||||||
UpdateBgColor();
|
|
||||||
}
|
|
||||||
else if (e.PropertyName == ExtendedStepper.StepperForegroundColorProperty.PropertyName)
|
|
||||||
{
|
|
||||||
UpdateFgColor();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateBgColor()
|
|
||||||
{
|
|
||||||
if (Control != null && Element is ExtendedStepper view)
|
|
||||||
{
|
|
||||||
if (Build.VERSION.SdkInt >= BuildVersionCodes.Q)
|
|
||||||
{
|
|
||||||
Control.GetChildAt(0)?.Background?.SetColorFilter(
|
|
||||||
new BlendModeColorFilter(view.StepperBackgroundColor.ToAndroid(), BlendMode.Multiply));
|
|
||||||
Control.GetChildAt(1)?.Background?.SetColorFilter(
|
|
||||||
new BlendModeColorFilter(view.StepperBackgroundColor.ToAndroid(), BlendMode.Multiply));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Control.GetChildAt(0)?.Background?.SetColorFilter(
|
|
||||||
view.StepperBackgroundColor.ToAndroid(), PorterDuff.Mode.Multiply);
|
|
||||||
Control.GetChildAt(1)?.Background?.SetColorFilter(
|
|
||||||
view.StepperBackgroundColor.ToAndroid(), PorterDuff.Mode.Multiply);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateFgColor()
|
|
||||||
{
|
|
||||||
if (Control != null && Element is ExtendedStepper view)
|
|
||||||
{
|
|
||||||
var btn0 = Control.GetChildAt(0) as Android.Widget.Button;
|
|
||||||
btn0?.SetTextColor(view.StepperForegroundColor.ToAndroid());
|
|
||||||
var btn1 = Control.GetChildAt(1) as Android.Widget.Button;
|
|
||||||
btn1?.SetTextColor(view.StepperForegroundColor.ToAndroid());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
using System.ComponentModel;
|
|
||||||
using Android.Content;
|
|
||||||
using Android.Views;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(ExtendedTimePicker), typeof(ExtendedTimePickerRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class ExtendedTimePickerRenderer : TimePickerRenderer
|
|
||||||
{
|
|
||||||
public ExtendedTimePickerRenderer(Context context)
|
|
||||||
: base(context) { }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<TimePicker> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
if (Control != null && Element is ExtendedTimePicker element)
|
|
||||||
{
|
|
||||||
// center text
|
|
||||||
Control.Gravity = GravityFlags.CenterHorizontal;
|
|
||||||
|
|
||||||
// use placeholder until NullableTime set
|
|
||||||
if (!element.NullableTime.HasValue)
|
|
||||||
{
|
|
||||||
Control.Text = element.PlaceHolder;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.PropertyName == TimePicker.TimeProperty.PropertyName ||
|
|
||||||
e.PropertyName == TimePicker.FormatProperty.PropertyName)
|
|
||||||
{
|
|
||||||
if (Control != null && Element is ExtendedTimePicker element)
|
|
||||||
{
|
|
||||||
if (Element.Format == element.PlaceHolder)
|
|
||||||
{
|
|
||||||
Control.Text = element.PlaceHolder;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,98 +0,0 @@
|
||||||
using System;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
using Android.Webkit;
|
|
||||||
using AWebkit = Android.Webkit;
|
|
||||||
using Java.Interop;
|
|
||||||
using Android.Content;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(HybridWebView), typeof(HybridWebViewRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class HybridWebViewRenderer : ViewRenderer<HybridWebView, AWebkit.WebView>
|
|
||||||
{
|
|
||||||
private const string JSFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}";
|
|
||||||
|
|
||||||
private readonly Context _context;
|
|
||||||
|
|
||||||
public HybridWebViewRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{
|
|
||||||
_context = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
|
|
||||||
if (Control == null)
|
|
||||||
{
|
|
||||||
var webView = new AWebkit.WebView(_context);
|
|
||||||
webView.Settings.JavaScriptEnabled = true;
|
|
||||||
webView.SetWebViewClient(new JSWebViewClient(string.Format("javascript: {0}", JSFunction)));
|
|
||||||
SetNativeControl(webView);
|
|
||||||
}
|
|
||||||
if (e.OldElement != null)
|
|
||||||
{
|
|
||||||
Control.RemoveJavascriptInterface("jsBridge");
|
|
||||||
var hybridWebView = e.OldElement as HybridWebView;
|
|
||||||
hybridWebView.Cleanup();
|
|
||||||
}
|
|
||||||
if (e.NewElement != null)
|
|
||||||
{
|
|
||||||
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
|
|
||||||
Control.LoadUrl(Element.Uri);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
if (e.PropertyName == HybridWebView.UriProperty.PropertyName)
|
|
||||||
{
|
|
||||||
Control.LoadUrl(Element.Uri);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class JSBridge : Java.Lang.Object
|
|
||||||
{
|
|
||||||
private readonly WeakReference<HybridWebViewRenderer> _hybridWebViewRenderer;
|
|
||||||
|
|
||||||
public JSBridge(HybridWebViewRenderer hybridRenderer)
|
|
||||||
{
|
|
||||||
_hybridWebViewRenderer = new WeakReference<HybridWebViewRenderer>(hybridRenderer);
|
|
||||||
}
|
|
||||||
|
|
||||||
[JavascriptInterface]
|
|
||||||
[Export("invokeAction")]
|
|
||||||
public void InvokeAction(string data)
|
|
||||||
{
|
|
||||||
if (_hybridWebViewRenderer != null &&
|
|
||||||
_hybridWebViewRenderer.TryGetTarget(out HybridWebViewRenderer hybridRenderer))
|
|
||||||
{
|
|
||||||
hybridRenderer.Element.InvokeAction(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class JSWebViewClient : WebViewClient
|
|
||||||
{
|
|
||||||
private readonly string _javascript;
|
|
||||||
|
|
||||||
public JSWebViewClient(string javascript)
|
|
||||||
{
|
|
||||||
_javascript = javascript;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnPageFinished(AWebkit.WebView view, string url)
|
|
||||||
{
|
|
||||||
base.OnPageFinished(view, url);
|
|
||||||
view.EvaluateJavascript(_javascript, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
using System;
|
|
||||||
using Android.Content;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(SelectableLabel), typeof(SelectableLabelRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class SelectableLabelRenderer : LabelRenderer
|
|
||||||
{
|
|
||||||
public SelectableLabelRenderer(Context context) : base(context) { }
|
|
||||||
|
|
||||||
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
|
|
||||||
{
|
|
||||||
base.OnElementChanged(e);
|
|
||||||
|
|
||||||
if (Control != null)
|
|
||||||
{
|
|
||||||
Control.SetTextIsSelectable(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,441 +1,221 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.1</TargetFramework>
|
<TargetFrameworks>net8.0-android;net8.0-ios</TargetFrameworks>
|
||||||
|
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks>
|
||||||
|
<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
|
||||||
|
<!-- <TargetFrameworks>$(TargetFrameworks);net8.0-tizen</TargetFrameworks> -->
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
<RootNamespace>Bit.App</RootNamespace>
|
<RootNamespace>Bit.App</RootNamespace>
|
||||||
<AssemblyName>BitwardenApp</AssemblyName>
|
<UseMaui>true</UseMaui>
|
||||||
<Configurations>Debug;Release;FDroid</Configurations>
|
<SingleProject>true</SingleProject>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
|
||||||
|
<!-- Display name -->
|
||||||
|
<ApplicationTitle>Bitwarden</ApplicationTitle>
|
||||||
|
|
||||||
|
<!-- App Identifier -->
|
||||||
|
<ApplicationId Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">com.8bit.bitwarden</ApplicationId>
|
||||||
|
<ApplicationId Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">com.x8bit.bitwarden</ApplicationId>
|
||||||
|
<ApplicationIdGuid>ccf4766c-a36c-4647-900c-0ea7d323ccc6</ApplicationIdGuid>
|
||||||
|
|
||||||
|
<!-- Versions -->
|
||||||
|
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
|
||||||
|
<ApplicationVersion>1</ApplicationVersion>
|
||||||
|
|
||||||
|
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion>
|
||||||
|
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
|
||||||
|
|
||||||
|
<ForceSimulatorX64ArchitectureInIDE>true</ForceSimulatorX64ArchitectureInIDE>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<!--<PropertyGroup Condition="$(TargetFramework.Contains('-ios'))">
|
||||||
<DebugType>pdbonly</DebugType>
|
<RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<RuntimeIdentifier>iossimulator-x64</RuntimeIdentifier>
|
||||||
</PropertyGroup>
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
|
</PropertyGroup>-->
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-ios|AnyCPU'">
|
||||||
|
<CreatePackage>false</CreatePackage>
|
||||||
|
<RuntimeIdentifier>iossimulator-arm64</RuntimeIdentifier>
|
||||||
|
<CodesignProvision>Automatic</CodesignProvision>
|
||||||
|
<CodesignKey>iPhone Developer</CodesignKey>
|
||||||
|
<CodesignEntitlements>Platforms\iOS\Entitlements.plist</CodesignEntitlements>
|
||||||
|
<MtouchInterpreter>all</MtouchInterpreter>
|
||||||
|
<MtouchLink>None</MtouchLink>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-ios|AnyCPU'">
|
||||||
|
<CreatePackage>false</CreatePackage>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
|
||||||
|
<PackageReference Include="CsvHelper" Version="30.0.1" />
|
||||||
|
<PackageReference Include="LiteDB" Version="5.0.17" />
|
||||||
|
<PackageReference Include="MessagePack" Version="2.5.124" />
|
||||||
|
<PackageReference Include="MessagePack.MSBuild.Tasks" Version="2.5.124">
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<!-- <PackageReference Include="Microsoft.AppCenter.Crashes" Version="5.0.2" /> -->
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
|
<PackageReference Include="zxcvbn-core" Version="7.0.92" />
|
||||||
|
<PackageReference Include="CommunityToolkit.Maui" Version="5.2.0" />
|
||||||
<PackageReference Include="Plugin.Fingerprint" Version="2.1.5" />
|
<PackageReference Include="Plugin.Fingerprint" Version="2.1.5" />
|
||||||
<PackageReference Include="SkiaSharp.Views.Forms" Version="2.88.3" />
|
<PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="2.88.4-preview.84" />
|
||||||
<PackageReference Include="Xamarin.CommunityToolkit" Version="2.0.6" />
|
<PackageReference Include="SkiaSharp.Views.Maui.Controls.Compatibility" Version="2.88.4-preview.84" />
|
||||||
<PackageReference Include="Xamarin.Essentials" Version="1.8.0" />
|
<PackageReference Include="ZXing.Net.Maui" Version="0.3.0-preview.1" />
|
||||||
<PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.4.11.982" />
|
<PackageReference Include="FFImageLoadingCompat.Maui" Version="0.1.1" />
|
||||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2612" />
|
<PackageReference Include="ZXing.Net.Maui.Controls" Version="0.3.0-preview.1" />
|
||||||
<PackageReference Include="ZXing.Net.Mobile" Version="2.4.1" />
|
<PackageReference Include="AsyncAwaitBestPractices.MVVM" Version="6.0.6" />
|
||||||
<PackageReference Include="ZXing.Net.Mobile.Forms" Version="2.4.1" />
|
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" />
|
||||||
<PackageReference Include="MessagePack" Version="2.4.59" />
|
<PackageReference Include="PCLCrypto" Version="2.0.147" />
|
||||||
|
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<!--<ItemGroup>
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-mdpi\ic_launcher.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-mdpi\ic_launcher_round.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-xxhdpi\ic_launcher.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-xxhdpi\ic_launcher_round.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-xxxhdpi\ic_launcher.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-xxxhdpi\ic_launcher_round.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-hdpi\ic_launcher.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-hdpi\ic_launcher_round.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\drawable-xhdpi\logo_legacy.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\drawable-xhdpi\yubikey.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\drawable-xhdpi\logo_white_legacy.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\drawable-xxhdpi\logo_legacy.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\drawable-xxhdpi\yubikey.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\drawable-xxhdpi\logo_white_legacy.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\drawable-hdpi\logo_legacy.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\drawable-hdpi\yubikey.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\drawable-hdpi\logo_white_legacy.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-xhdpi\ic_launcher.png" />
|
||||||
|
<None Remove="Platforms\Android\Resources\mipmap-xhdpi\ic_launcher_round.png" />
|
||||||
|
<None Remove="Effects\" />
|
||||||
|
<None Remove="Resources\" />
|
||||||
|
<None Remove="Resources\Splash\splash.svg" />
|
||||||
|
<None Remove="Resources\Splash\" />
|
||||||
|
<None Remove="Platforms\Android\Accessibility\" />
|
||||||
|
<None Remove="Platforms\Android\Autofill\" />
|
||||||
|
<None Remove="Platforms\Android\Push\" />
|
||||||
|
<None Remove="Platforms\Android\Receivers\" />
|
||||||
|
<None Remove="Platforms\Android\Services\" />
|
||||||
|
<None Remove="Platforms\Android\Tiles\" />
|
||||||
|
<None Remove="Platforms\Android\Utilities\" />
|
||||||
|
<None Remove="Platforms\Android\google-services.json" />
|
||||||
|
<None Remove="Platforms\Android\google-services.json.enc" />
|
||||||
|
</ItemGroup>-->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Folder Include="Effects\" />
|
||||||
|
<Folder Include="Resources\" />
|
||||||
|
<Folder Include="Resources\AppIcon\" />
|
||||||
|
<Folder Include="Resources\Splash\" />
|
||||||
|
<Folder Include="Platforms\Android\Accessibility\" />
|
||||||
|
<Folder Include="Platforms\Android\Autofill\" />
|
||||||
|
<Folder Include="Platforms\Android\Push\" />
|
||||||
|
<Folder Include="Platforms\Android\Receivers\" />
|
||||||
|
<Folder Include="Platforms\Android\Services\" />
|
||||||
|
<Folder Include="Platforms\Android\Tiles\" />
|
||||||
|
<Folder Include="Platforms\Android\Utilities\" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0-android'">
|
||||||
|
<PackageReference Include="Xamarin.GooglePlayServices.SafetyNet" Version="118.0.1.5" />
|
||||||
|
<PackageReference Include="Plugin.CurrentActivity" Version="2.1.0.4" />
|
||||||
|
<PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.18" />
|
||||||
|
<PackageReference Include="Xamarin.Firebase.Messaging" Version="123.1.2.2" />
|
||||||
|
<PackageReference Include="Xamarin.AndroidX.Activity.Ktx" Version="1.7.2.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-mdpi\ic_launcher.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-mdpi\ic_launcher_round.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xxhdpi\ic_launcher.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xxhdpi\ic_launcher_round.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xxxhdpi\ic_launcher.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xxxhdpi\ic_launcher_round.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-hdpi\ic_launcher.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-hdpi\ic_launcher_round.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-mdpi\ic_launcher.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-mdpi\ic_launcher_round.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-hdpi\ic_launcher.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-hdpi\ic_launcher_round.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xxxhdpi\ic_launcher.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xxxhdpi\ic_launcher_round.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xxhdpi\ic_launcher.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xxhdpi\ic_launcher_round.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\drawable-xhdpi\logo_legacy.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\drawable-xhdpi\yubikey.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\drawable-xhdpi\logo_white_legacy.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\drawable-xxhdpi\logo_legacy.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\drawable-xxhdpi\yubikey.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\drawable-xxhdpi\logo_white_legacy.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\drawable-hdpi\logo_legacy.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\drawable-hdpi\yubikey.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\drawable-hdpi\logo_white_legacy.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xhdpi\ic_launcher.png" />
|
||||||
|
<BundleResource Include="Platforms\Android\Resources\mipmap-xhdpi\ic_launcher_round.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\iOS.Core\iOS.Core.csproj" Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'" />
|
||||||
<ProjectReference Include="..\Core\Core.csproj" />
|
<ProjectReference Include="..\Core\Core.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Update="Pages\Accounts\EnvironmentPage.xaml.cs">
|
<!-- App Icon -->
|
||||||
<DependentUpon>EnvironmentPage.xaml</DependentUpon>
|
<MauiIcon Include="Resources\AppIcon\appicon.svg" ForegroundFile="Resources\AppIcon\appiconfg.svg" Color="#512BD4" />
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Accounts\HintPage.xaml.cs">
|
<MauiSplashScreen Include="Resources\Splash\splash.svg">
|
||||||
<DependentUpon>HintPage.xaml</DependentUpon>
|
<Color>#175DDC</Color>
|
||||||
</Compile>
|
<BaseSize>128,128</BaseSize>
|
||||||
<Compile Update="Pages\Accounts\LockPage.xaml.cs">
|
</MauiSplashScreen>
|
||||||
<DependentUpon>LockPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Accounts\TwoFactorPage.xaml.cs">
|
|
||||||
<DependentUpon>TwoFactorPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Accounts\RegisterPage.xaml.cs">
|
|
||||||
<DependentUpon>RegisterPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Accounts\LoginPage.xaml.cs">
|
|
||||||
<DependentUpon>LoginPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Generator\GeneratorPage.xaml.cs">
|
|
||||||
<DependentUpon>GeneratorPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Generator\GeneratorHistoryPage.xaml.cs">
|
|
||||||
<DependentUpon>GeneratorHistoryPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Settings\AutofillPage.xaml.cs">
|
|
||||||
<DependentUpon>AutofillPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Settings\ExtensionPage.xaml.cs">
|
|
||||||
<DependentUpon>ExtensionPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Settings\FolderAddEditPage.xaml.cs">
|
|
||||||
<DependentUpon>FolderAddEditPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Settings\FoldersPage.xaml.cs">
|
|
||||||
<DependentUpon>FoldersPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Settings\ExportVaultPage.xaml.cs">
|
|
||||||
<DependentUpon>ExportVaultPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\AttachmentsPage.xaml.cs">
|
|
||||||
<DependentUpon>AttachmentsPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\AutofillCiphersPage.xaml.cs">
|
|
||||||
<DependentUpon>AutofillCiphersPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\CollectionsPage.xaml.cs">
|
|
||||||
<DependentUpon>CollectionsPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\ScanPage.xaml.cs">
|
|
||||||
<DependentUpon>ScanPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\SharePage.xaml.cs">
|
|
||||||
<DependentUpon>SharePage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\CiphersPage.xaml.cs">
|
|
||||||
<DependentUpon>CiphersPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\PasswordHistoryPage.xaml.cs">
|
|
||||||
<DependentUpon>PasswordHistoryPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\CipherDetailsPage.xaml.cs">
|
|
||||||
<DependentUpon>CipherDetailsPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\CipherAddEditPage.xaml.cs">
|
|
||||||
<DependentUpon>CipherAddEditPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Settings\SettingsPage\SettingsPage.xaml.cs">
|
|
||||||
<DependentUpon>SettingsPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Vault\GroupingsPage\GroupingsPage.xaml.cs">
|
|
||||||
<DependentUpon>GroupingsPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Accounts\LoginSsoPage.xaml.cs">
|
|
||||||
<DependentUpon>LoginSsoPage.xaml</DependentUpon>
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Accounts\SetPasswordPage.xaml.cs">
|
|
||||||
<DependentUpon>ResetMasterPasswordPage.xaml</DependentUpon>
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Send\SendGroupingsPage\SendGroupingsPage.xaml.cs">
|
|
||||||
<DependentUpon>SendGroupingsPage.xaml</DependentUpon>
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Remove="Pages\Accounts\AccountsPopupPage.xaml.cs" />
|
|
||||||
<Compile Update="Pages\Accounts\LoginPasswordlessPage.xaml.cs">
|
|
||||||
<DependentUpon>LoginPasswordlessPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Pages\Accounts\LoginPasswordlessRequestPage.xaml.cs">
|
|
||||||
<DependentUpon>LoginPasswordlessRequestPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Resources\" />
|
<MauiImage Include="Resources\cog_settings.svg">
|
||||||
<Folder Include="Behaviors\" />
|
<BaseSize>24,24</BaseSize>
|
||||||
<Folder Include="Lists\" />
|
</MauiImage>
|
||||||
<Folder Include="Lists\ItemLayouts\" />
|
<MauiImage Include="Resources\ext_act.png" />
|
||||||
<Folder Include="Lists\DataTemplateSelectors\" />
|
<MauiImage Include="Resources\ext_more.png" />
|
||||||
<Folder Include="Lists\ItemLayouts\CustomFields\" />
|
<MauiImage Include="Resources\ext_use.png" />
|
||||||
<Folder Include="Lists\ItemViewModels\" />
|
<MauiImage Include="Resources\generate.svg">
|
||||||
<Folder Include="Lists\ItemViewModels\CustomFields\" />
|
<BaseSize>24,24</BaseSize>
|
||||||
<Folder Include="Controls\AccountSwitchingOverlay\" />
|
</MauiImage>
|
||||||
<Folder Include="Utilities\AccountManagement\" />
|
<MauiImage Include="Resources\info.svg">
|
||||||
<Folder Include="Controls\DateTime\" />
|
<BaseSize>24,24</BaseSize>
|
||||||
<Folder Include="Controls\IconLabelButton\" />
|
</MauiImage>
|
||||||
<Folder Include="Controls\PasswordStrengthProgressBar\" />
|
<MauiImage Include="Resources\lock.svg">
|
||||||
<Folder Include="Utilities\Automation\" />
|
<BaseSize>24,24</BaseSize>
|
||||||
<Folder Include="Utilities\Prompts\" />
|
</MauiImage>
|
||||||
<Folder Include="Controls\Settings\" />
|
<MauiImage Include="Resources\login.svg">
|
||||||
|
<BaseSize>24,24</BaseSize>
|
||||||
|
</MauiImage>
|
||||||
|
<MauiImage Include="Resources\logo_white.png" />
|
||||||
|
<MauiImage Include="Resources\logo.png" />
|
||||||
|
<MauiImage Include="Resources\more_vert.svg">
|
||||||
|
<BaseSize>24,24</BaseSize>
|
||||||
|
</MauiImage>
|
||||||
|
<MauiImage Include="Resources\more.svg">
|
||||||
|
<BaseSize>24,24</BaseSize>
|
||||||
|
</MauiImage>
|
||||||
|
<MauiImage Include="Resources\plus.svg">
|
||||||
|
<BaseSize>24,24</BaseSize>
|
||||||
|
</MauiImage>
|
||||||
|
<MauiImage Include="Resources\search.svg">
|
||||||
|
<BaseSize>24,24</BaseSize>
|
||||||
|
</MauiImage>
|
||||||
|
<MauiImage Include="Resources\send.svg">
|
||||||
|
<BaseSize>24,24</BaseSize>
|
||||||
|
</MauiImage>
|
||||||
|
<MauiImage Include="Resources\yubikey.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<!--<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
|
||||||
|
<ProjectReference Include="..\iOS.Autofill\iOS.Autofill.csproj">
|
||||||
|
<IsAppExtension>true</IsAppExtension>
|
||||||
|
<IsWatchApp>false</IsWatchApp>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>-->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Remove="Pages\Accounts\AccountsPopupPage.xaml" />
|
<GoogleServicesJson Include="Platforms\Android\google-services.json" />
|
||||||
</ItemGroup>
|
<GoogleServicesJson Include="Platforms\Android\google-services.json.enc" />
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Update="Styles\Black.xaml.cs">
|
|
||||||
<DependentUpon>Black.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Styles\Nord.xaml.cs">
|
|
||||||
<DependentUpon>Nord.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Styles\Variables.xaml.cs">
|
|
||||||
<DependentUpon>Variables.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Styles\Light.xaml.cs">
|
|
||||||
<DependentUpon>Light.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Styles\Dark.xaml.cs">
|
|
||||||
<DependentUpon>Dark.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Styles\iOS.xaml.cs">
|
|
||||||
<DependentUpon>iOS.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Styles\Android.xaml.cs">
|
|
||||||
<DependentUpon>Android.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Update="Resources\AppResources.cs.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.cs.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.da.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.da.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.de.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.de.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.Designer.cs">
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DependentUpon>AppResources.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.es.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.es.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.fi.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.fi.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.fr.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.fr.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.hi.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.hi.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.hr.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.hr.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.hu.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.hu.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.id.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.id.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.it.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.it.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.ja.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.ja.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.nl.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.nl.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.pl.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.pl.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.pt-BR.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.pt-BR.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.pt-PT.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.pt-PT.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.ro.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.ro.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.ru.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.ru.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.sk.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.sk.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.sv.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.sv.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.th.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.th.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.tr.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.tr.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.uk.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.uk.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.vi.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.vi.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.zh-Hans.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.zh-Hans.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
<Compile Update="Resources\AppResources.zh-Hant.Designer.cs">
|
|
||||||
<DependentUpon>AppResources.zh-Hant.resx</DependentUpon>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
</Compile>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.cs.resx">
|
|
||||||
<LastGenOutput>AppResources.cs.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.da.resx">
|
|
||||||
<LastGenOutput>AppResources.da.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.de.resx">
|
|
||||||
<LastGenOutput>AppResources.de.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.es.resx">
|
|
||||||
<LastGenOutput>AppResources.es.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.fi.resx">
|
|
||||||
<LastGenOutput>AppResources.fi.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.fr.resx">
|
|
||||||
<LastGenOutput>AppResources.fr.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.hi.resx">
|
|
||||||
<LastGenOutput>AppResources.hi.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.hr.resx">
|
|
||||||
<LastGenOutput>AppResources.hr.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.hu.resx">
|
|
||||||
<LastGenOutput>AppResources.hu.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.id.resx">
|
|
||||||
<LastGenOutput>AppResources.id.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.it.resx">
|
|
||||||
<LastGenOutput>AppResources.it.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.ja.resx">
|
|
||||||
<LastGenOutput>AppResources.ja.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.nl.resx">
|
|
||||||
<LastGenOutput>AppResources.nl.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.pl.resx">
|
|
||||||
<LastGenOutput>AppResources.pl.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.pt-BR.resx">
|
|
||||||
<LastGenOutput>AppResources.pt-BR.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.pt-PT.resx">
|
|
||||||
<LastGenOutput>AppResources.pt-PT.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.resx">
|
|
||||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>AppResources.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.ro.resx">
|
|
||||||
<LastGenOutput>AppResources.ro.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.ru.resx">
|
|
||||||
<LastGenOutput>AppResources.ru.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.sk.resx">
|
|
||||||
<LastGenOutput>AppResources.sk.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.sv.resx">
|
|
||||||
<LastGenOutput>AppResources.sv.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.th.resx">
|
|
||||||
<LastGenOutput>AppResources.th.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.tr.resx">
|
|
||||||
<LastGenOutput>AppResources.tr.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.uk.resx">
|
|
||||||
<LastGenOutput>AppResources.uk.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.vi.resx">
|
|
||||||
<LastGenOutput>AppResources.vi.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.zh-Hans.resx">
|
|
||||||
<LastGenOutput>AppResources.zh-Hans.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
<EmbeddedResource Update="Resources\AppResources.zh-Hant.resx">
|
|
||||||
<LastGenOutput>AppResources.zh-Hant.Designer.cs</LastGenOutput>
|
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
|
||||||
</EmbeddedResource>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<None Remove="Behaviors\" />
|
|
||||||
<None Remove="Xamarin.CommunityToolkit" />
|
|
||||||
<None Remove="Lists\" />
|
|
||||||
<None Remove="Lists\DataTemplates\" />
|
|
||||||
<None Remove="Lists\DataTemplateSelectors\" />
|
|
||||||
<None Remove="Lists\DataTemplates\CustomFields\" />
|
|
||||||
<None Remove="Lists\ItemViewModels\" />
|
|
||||||
<None Remove="Lists\ItemViewModels\CustomFields\" />
|
|
||||||
<None Remove="Controls\AccountSwitchingOverlay\" />
|
|
||||||
<None Remove="Utilities\AccountManagement\" />
|
|
||||||
<None Remove="Controls\DateTime\" />
|
|
||||||
<None Remove="Controls\IconLabelButton\" />
|
|
||||||
<None Remove="MessagePack" />
|
|
||||||
<None Remove="MessagePack.MSBuild.Tasks" />
|
|
||||||
<None Remove="Controls\PasswordStrengthProgressBar\" />
|
|
||||||
<None Remove="Utilities\Automation\" />
|
|
||||||
<None Remove="Utilities\Prompts\" />
|
|
||||||
<None Remove="Controls\Settings\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
using System.Linq;
|
|
||||||
using Xamarin.CommunityToolkit.Converters;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Controls
|
|
||||||
{
|
|
||||||
public class ExtendedCollectionView : CollectionView
|
|
||||||
{
|
|
||||||
public string ExtraDataForLogging { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SelectionChangedEventArgsConverter : BaseNullableConverterOneWay<SelectionChangedEventArgs, object>
|
|
||||||
{
|
|
||||||
public override object? ConvertFrom(SelectionChangedEventArgs? value)
|
|
||||||
{
|
|
||||||
return value?.CurrentSelection.FirstOrDefault();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
using Bit.App.Utilities;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Controls
|
|
||||||
{
|
|
||||||
public class ExtendedSearchBar : SearchBar
|
|
||||||
{
|
|
||||||
public ExtendedSearchBar()
|
|
||||||
{
|
|
||||||
if (Device.RuntimePlatform == Device.iOS)
|
|
||||||
{
|
|
||||||
if (ThemeManager.UsingLightTheme)
|
|
||||||
{
|
|
||||||
TextColor = Color.Black;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +1,34 @@
|
||||||
using Xamarin.Forms;
|
using Microsoft.Maui.Controls;
|
||||||
|
using Microsoft.Maui;
|
||||||
|
using Microsoft.Maui.Controls.Platform;
|
||||||
|
|
||||||
|
#if ANDROID
|
||||||
|
using Android.Graphics.Drawables;
|
||||||
|
using Bit.App.Droid.Utilities;
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace Bit.App.Effects
|
namespace Bit.App.Effects
|
||||||
{
|
{
|
||||||
public class FabShadowEffect : RoutingEffect
|
#if ANDROID
|
||||||
|
public class FabShadowPlatformEffect : PlatformEffect
|
||||||
{
|
{
|
||||||
public FabShadowEffect()
|
protected override void OnAttached()
|
||||||
: base("Bitwarden.FabShadowEffect")
|
{
|
||||||
{ }
|
if (Control is Android.Widget.Button button)
|
||||||
|
{
|
||||||
|
var gd = new GradientDrawable();
|
||||||
|
gd.SetColor(ThemeHelpers.FabColor);
|
||||||
|
gd.SetCornerRadius(100);
|
||||||
|
|
||||||
|
button.SetBackground(gd);
|
||||||
|
button.Elevation = 6;
|
||||||
|
button.TranslationZ = 20;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnDetached()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Effects
|
|
||||||
{
|
|
||||||
public class FixedSizeEffect : RoutingEffect
|
|
||||||
{
|
|
||||||
public FixedSizeEffect()
|
|
||||||
: base("Bitwarden.FixedSizeEffect")
|
|
||||||
{ }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
using System;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Effects
|
|
||||||
{
|
|
||||||
public class NoEmojiKeyboardEffect : RoutingEffect
|
|
||||||
{
|
|
||||||
public NoEmojiKeyboardEffect()
|
|
||||||
: base("Bitwarden.NoEmojiKeyboardEffect")
|
|
||||||
{ }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
using System;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Effects
|
|
||||||
{
|
|
||||||
public class RemoveFontPaddingEffect : RoutingEffect
|
|
||||||
{
|
|
||||||
public RemoveFontPaddingEffect()
|
|
||||||
: base("Bitwarden.RemoveFontPaddingEffect")
|
|
||||||
{ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Effects
|
|
||||||
{
|
|
||||||
public enum ScrollContentInsetAdjustmentBehavior
|
|
||||||
{
|
|
||||||
Automatic,
|
|
||||||
ScrollableAxes,
|
|
||||||
Never,
|
|
||||||
Always
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ScrollViewContentInsetAdjustmentBehaviorEffect : RoutingEffect
|
|
||||||
{
|
|
||||||
public static readonly BindableProperty ContentInsetAdjustmentBehaviorProperty =
|
|
||||||
BindableProperty.CreateAttached("ContentInsetAdjustmentBehavior", typeof(ScrollContentInsetAdjustmentBehavior), typeof(ScrollViewContentInsetAdjustmentBehaviorEffect), ScrollContentInsetAdjustmentBehavior.Automatic);
|
|
||||||
|
|
||||||
public static ScrollContentInsetAdjustmentBehavior GetContentInsetAdjustmentBehavior(BindableObject view)
|
|
||||||
{
|
|
||||||
return (ScrollContentInsetAdjustmentBehavior)view.GetValue(ContentInsetAdjustmentBehaviorProperty);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void SetContentInsetAdjustmentBehavior(BindableObject view, ScrollContentInsetAdjustmentBehavior value)
|
|
||||||
{
|
|
||||||
view.SetValue(ContentInsetAdjustmentBehaviorProperty, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ScrollViewContentInsetAdjustmentBehaviorEffect()
|
|
||||||
: base($"Bitwarden.{nameof(ScrollViewContentInsetAdjustmentBehaviorEffect)}")
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Effects
|
|
||||||
{
|
|
||||||
public class TabBarEffect : RoutingEffect
|
|
||||||
{
|
|
||||||
public TabBarEffect()
|
|
||||||
: base("Bitwarden.TabBarEffect")
|
|
||||||
{ }
|
|
||||||
}
|
|
||||||
}
|
|
47
src/App/MauiProgram.cs
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
namespace Bit.App
|
||||||
|
{
|
||||||
|
public class MauiProgram
|
||||||
|
{
|
||||||
|
public static MauiApp CreateMauiApp()
|
||||||
|
{
|
||||||
|
return Core.MauiProgram.ConfigureMauiAppBuilder(
|
||||||
|
effects =>
|
||||||
|
{
|
||||||
|
#if ANDROID
|
||||||
|
effects.Add<Effects.FabShadowEffect, Effects.FabShadowPlatformEffect>();
|
||||||
|
#else
|
||||||
|
effects.Add<Effects.NoEmojiKeyboardEffect, Bit.iOS.Core.Effects.NoEmojiKeyboardEffect>();
|
||||||
|
effects.Add<Effects.ScrollEnabledEffect, Effects.ScrollEnabledPlatformEffect>();
|
||||||
|
effects.Add<Effects.ScrollViewContentInsetAdjustmentBehaviorEffect, Bit.App.Effects.ScrollViewContentInsetAdjustmentBehaviorPlatformEffect>();
|
||||||
|
#endif
|
||||||
|
},
|
||||||
|
handlers =>
|
||||||
|
{
|
||||||
|
#if ANDROID
|
||||||
|
Bit.App.Handlers.EntryHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.EditorHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.LabelHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.PickerHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.SearchBarHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.SwitchHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.DatePickerHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.SliderHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.StepperHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.TimePickerHandlerMappings.Setup();
|
||||||
|
Bit.App.Handlers.ButtonHandlerMappings.Setup();
|
||||||
|
#else
|
||||||
|
iOS.Core.Handlers.ButtonHandlerMappings.Setup();
|
||||||
|
iOS.Core.Handlers.DatePickerHandlerMappings.Setup();
|
||||||
|
iOS.Core.Handlers.EditorHandlerMappings.Setup();
|
||||||
|
iOS.Core.Handlers.EntryHandlerMappings.Setup();
|
||||||
|
//iOS.Core.Handlers.LabelHandlerMappings.Setup();
|
||||||
|
iOS.Core.Handlers.PickerHandlerMappings.Setup();
|
||||||
|
iOS.Core.Handlers.SearchBarHandlerMappings.Setup();
|
||||||
|
iOS.Core.Handlers.StepperHandlerMappings.Setup();
|
||||||
|
iOS.Core.Handlers.TimePickerHandlerMappings.Setup();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
).Build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,7 +6,7 @@ using Android.Views;
|
||||||
using System;
|
using System;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Bit.Droid.Utilities;
|
using Bit.App.Droid.Utilities;
|
||||||
|
|
||||||
namespace Bit.Droid.Accessibility
|
namespace Bit.Droid.Accessibility
|
||||||
{
|
{
|
|
@ -10,8 +10,13 @@ using Android.Runtime;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Views.Accessibility;
|
using Android.Views.Accessibility;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using Bit.App.Resources;
|
using Bit.Core.Resources.Localization;
|
||||||
using Bit.Core;
|
using Bit.Core;
|
||||||
|
using Application = Android.App.Application;
|
||||||
|
using View = Android.Views.View;
|
||||||
|
using Resource = Bit.Core.Resource;
|
||||||
|
using Point = Android.Graphics.Point;
|
||||||
|
using Rect = Android.Graphics.Rect;
|
||||||
|
|
||||||
namespace Bit.Droid.Accessibility
|
namespace Bit.Droid.Accessibility
|
||||||
{
|
{
|
||||||
|
@ -704,7 +709,7 @@ namespace Bit.Droid.Accessibility
|
||||||
public static LinearLayout GetOverlayView(Context context)
|
public static LinearLayout GetOverlayView(Context context)
|
||||||
{
|
{
|
||||||
var inflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService);
|
var inflater = (LayoutInflater)context.GetSystemService(Context.LayoutInflaterService);
|
||||||
var view = (LinearLayout)inflater.Inflate(Resource.Layout.autofill_listitem, null);
|
var view = (LinearLayout)inflater.Inflate(Bit.Core.Resource.Layout.autofill_listitem, null);
|
||||||
var text1 = (TextView)view.FindViewById(Resource.Id.text1);
|
var text1 = (TextView)view.FindViewById(Resource.Id.text1);
|
||||||
var text2 = (TextView)view.FindViewById(Resource.Id.text2);
|
var text2 = (TextView)view.FindViewById(Resource.Id.text2);
|
||||||
var icon = (ImageView)view.FindViewById(Resource.Id.icon);
|
var icon = (ImageView)view.FindViewById(Resource.Id.icon);
|
|
@ -9,9 +9,10 @@ using Android.Runtime;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Views.Accessibility;
|
using Android.Views.Accessibility;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using Bit.App.Resources;
|
using Bit.Core.Resources.Localization;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
|
using View = Android.Views.View;
|
||||||
|
|
||||||
namespace Bit.Droid.Accessibility
|
namespace Bit.Droid.Accessibility
|
||||||
{
|
{
|
|
@ -4,14 +4,14 @@ using Android.Content.PM;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Bit.Droid.Utilities;
|
using Bit.App.Droid.Utilities;
|
||||||
|
|
||||||
namespace Bit.Droid.Autofill
|
namespace Bit.Droid.Autofill
|
||||||
{
|
{
|
||||||
[Activity(
|
[Activity(
|
||||||
NoHistory = true,
|
NoHistory = true,
|
||||||
LaunchMode = LaunchMode.SingleTop)]
|
LaunchMode = LaunchMode.SingleTop)]
|
||||||
public class AutofillExternalSelectionActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity
|
public class AutofillExternalSelectionActivity : MauiAppCompatActivity
|
||||||
{
|
{
|
||||||
protected override void OnCreate(Bundle bundle)
|
protected override void OnCreate(Bundle bundle)
|
||||||
{
|
{
|
|
@ -12,15 +12,17 @@ using Android.Graphics.Drawables;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using Android.Widget.Inline;
|
using Android.Widget.Inline;
|
||||||
using Bit.App.Resources;
|
using Bit.Core.Resources.Localization;
|
||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Android.Views.Autofill;
|
using Android.Views.Autofill;
|
||||||
using AndroidX.AutoFill.Inline;
|
using AndroidX.AutoFill.Inline;
|
||||||
using AndroidX.AutoFill.Inline.V1;
|
using AndroidX.AutoFill.Inline.V1;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using SaveFlags = Android.Service.Autofill.SaveFlags;
|
using SaveFlags = Android.Service.Autofill.SaveFlags;
|
||||||
using Bit.Droid.Utilities;
|
using Bit.App.Droid.Utilities;
|
||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
|
using Resource = Bit.Core.Resource;
|
||||||
|
using BlendMode = Android.Graphics.BlendMode;
|
||||||
|
|
||||||
namespace Bit.Droid.Autofill
|
namespace Bit.Droid.Autofill
|
||||||
{
|
{
|
|
@ -6,6 +6,7 @@ using Android.Views.Autofill;
|
||||||
using static Android.App.Assist.AssistStructure;
|
using static Android.App.Assist.AssistStructure;
|
||||||
using Android.Text;
|
using Android.Text;
|
||||||
using static Android.Views.ViewStructure;
|
using static Android.Views.ViewStructure;
|
||||||
|
using View = Android.Views.View;
|
||||||
|
|
||||||
namespace Bit.Droid.Autofill
|
namespace Bit.Droid.Autofill
|
||||||
{
|
{
|
|
@ -4,6 +4,7 @@ using Android.Views.Autofill;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Android.Text;
|
using Android.Text;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
|
using View = Android.Views.View;
|
||||||
|
|
||||||
namespace Bit.Droid.Autofill
|
namespace Bit.Droid.Autofill
|
||||||
{
|
{
|
|
@ -4,6 +4,7 @@ using System.Linq;
|
||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Bit.Core.Models.View;
|
using Bit.Core.Models.View;
|
||||||
|
using Resource = Bit.Core.Resource;
|
||||||
|
|
||||||
namespace Bit.Droid.Autofill
|
namespace Bit.Droid.Autofill
|
||||||
{
|
{
|
14
src/App/Platforms/Android/Handlers/ButtonHandlerMappings.cs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class ButtonHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
Microsoft.Maui.Handlers.ButtonHandler.Mapper.AppendToMapping("CustomButtonHandler", (handler, button) =>
|
||||||
|
{
|
||||||
|
// WORKAROUND applied from https://github.com/dotnet/maui/issues/2918
|
||||||
|
handler.PlatformView.StateListAnimator = null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
using Android.Views;
|
||||||
|
using Bit.App.Controls;
|
||||||
|
using Microsoft.Maui.Handlers;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class DatePickerHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
DatePickerHandler.Mapper.AppendToMapping("CustomDatePickerHandler", (handler, datePicker) =>
|
||||||
|
{
|
||||||
|
if (datePicker is ExtendedDatePicker extDatePicker)
|
||||||
|
{
|
||||||
|
// center text
|
||||||
|
handler.PlatformView.Gravity = GravityFlags.CenterHorizontal;
|
||||||
|
|
||||||
|
// use placeholder until NullableDate set
|
||||||
|
if (!extDatePicker.NullableDate.HasValue)
|
||||||
|
{
|
||||||
|
handler.PlatformView.Text = extDatePicker.PlaceHolder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
DatePickerHandler.Mapper.AppendToMapping(nameof(IDatePicker.Date), UpdateTextPlaceholderOnFormatLikePlacholder);
|
||||||
|
|
||||||
|
DatePickerHandler.Mapper.AppendToMapping(nameof(IDatePicker.Format), UpdateTextPlaceholderOnFormatLikePlacholder);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void UpdateTextPlaceholderOnFormatLikePlacholder(IDatePickerHandler handler, IDatePicker datePicker)
|
||||||
|
{
|
||||||
|
if (datePicker is ExtendedDatePicker extDatePicker && extDatePicker.Format == extDatePicker.PlaceHolder)
|
||||||
|
{
|
||||||
|
handler.PlatformView.Text = extDatePicker.PlaceHolder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
24
src/App/Platforms/Android/Handlers/EditorHandlerMappings.cs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
using Android.Views.InputMethods;
|
||||||
|
using Bit.App.Droid.Utilities;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class EditorHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
Microsoft.Maui.Handlers.EditorHandler.Mapper.AppendToMapping("CustomEditorHandler", (handler, editor) =>
|
||||||
|
{
|
||||||
|
handler.PlatformView.SetPadding(handler.PlatformView.PaddingLeft, handler.PlatformView.PaddingTop - 10, handler.PlatformView.PaddingRight,
|
||||||
|
handler.PlatformView.PaddingBottom + 20);
|
||||||
|
handler.PlatformView.ImeOptions = handler.PlatformView.ImeOptions | (ImeAction)ImeFlags.NoPersonalizedLearning |
|
||||||
|
(ImeAction)ImeFlags.NoExtractUi;
|
||||||
|
});
|
||||||
|
|
||||||
|
Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping(nameof(IEditor.TextColor), (handler, editor) =>
|
||||||
|
{
|
||||||
|
handler.PlatformView.BackgroundTintList = ThemeHelpers.GetStateFocusedColors();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
63
src/App/Platforms/Android/Handlers/EntryHandlerMappings.cs
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
using Android.Graphics;
|
||||||
|
using Android.Text;
|
||||||
|
using Android.Views.InputMethods;
|
||||||
|
using Android.Widget;
|
||||||
|
using Bit.App.Droid.Utilities;
|
||||||
|
using Microsoft.Maui.Platform;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class EntryHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping("CustomEntryHandler", (handler, entry) =>
|
||||||
|
{
|
||||||
|
handler.PlatformView.SetPadding(handler.PlatformView.PaddingLeft, handler.PlatformView.PaddingTop - 10, handler.PlatformView.PaddingRight,
|
||||||
|
handler.PlatformView.PaddingBottom + 20);
|
||||||
|
handler.PlatformView.ImeOptions = handler.PlatformView.ImeOptions | (ImeAction)ImeFlags.NoPersonalizedLearning |
|
||||||
|
(ImeAction)ImeFlags.NoExtractUi;
|
||||||
|
});
|
||||||
|
|
||||||
|
Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping(nameof(IEntry.TextColor), (handler, entry) =>
|
||||||
|
{
|
||||||
|
handler.PlatformView.BackgroundTintList = ThemeHelpers.GetStateFocusedColors();
|
||||||
|
});
|
||||||
|
|
||||||
|
Microsoft.Maui.Handlers.EntryHandler.Mapper.AppendToMapping(nameof(IEntry.IsPassword), (handler, entry) =>
|
||||||
|
{
|
||||||
|
// Check if field type is text, otherwise ignore (numeric passwords, etc.)
|
||||||
|
handler.PlatformView.InputType = entry.Keyboard.ToInputType();
|
||||||
|
bool isText = (handler.PlatformView.InputType & InputTypes.ClassText) == InputTypes.ClassText,
|
||||||
|
isNumber = (handler.PlatformView.InputType & InputTypes.ClassNumber) == InputTypes.ClassNumber;
|
||||||
|
if (!isText && !isNumber)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entry.IsPassword)
|
||||||
|
{
|
||||||
|
// Element is a password field, set inputType to TextVariationPassword which disables
|
||||||
|
// predictive text by default
|
||||||
|
handler.PlatformView.InputType = handler.PlatformView.InputType |
|
||||||
|
(isText ? InputTypes.TextVariationPassword : InputTypes.NumberVariationPassword);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Element is not a password field, set inputType to TextVariationVisiblePassword to
|
||||||
|
// disable predictive text while still displaying the content.
|
||||||
|
handler.PlatformView.InputType = handler.PlatformView.InputType |
|
||||||
|
(isText ? InputTypes.TextVariationVisiblePassword : InputTypes.NumberVariationNormal);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The workaround above forces a reset of the style properties, so we need to re-apply the font.
|
||||||
|
// see https://xamarin.github.io/bugzilla-archives/33/33666/bug.html
|
||||||
|
var typeface = Typeface.CreateFromAsset(handler.PlatformView.Context.Assets, "RobotoMono_Regular.ttf");
|
||||||
|
if (handler.PlatformView is TextView label)
|
||||||
|
{
|
||||||
|
label.Typeface = typeface;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
src/App/Platforms/Android/Handlers/LabelHandlerMappings.cs
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
using Android.OS;
|
||||||
|
using Bit.App.Controls;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class LabelHandlerMappings
|
||||||
|
{
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "<Pending>")]
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
Microsoft.Maui.Handlers.LabelHandler.Mapper.AppendToMapping("CustomLabelHandler", (handler, label) =>
|
||||||
|
{
|
||||||
|
if (label is CustomLabel customLabel && customLabel.FontWeight.HasValue && Build.VERSION.SdkInt >= BuildVersionCodes.P)
|
||||||
|
{
|
||||||
|
handler.PlatformView.Typeface = Android.Graphics.Typeface.Create(null, customLabel.FontWeight.Value, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (label is SelectableLabel)
|
||||||
|
{
|
||||||
|
handler.PlatformView.SetTextIsSelectable(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Microsoft.Maui.Handlers.LabelHandler.Mapper.AppendToMapping(nameof(ILabel.AutomationId), (handler, label) =>
|
||||||
|
{
|
||||||
|
handler.PlatformView.ContentDescription = label.AutomationId;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
21
src/App/Platforms/Android/Handlers/PickerHandlerMappings.cs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
using Bit.App.Droid.Utilities;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class PickerHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
Microsoft.Maui.Handlers.PickerHandler.Mapper.AppendToMapping("CustomPickerHandler", (handler, picker) =>
|
||||||
|
{
|
||||||
|
handler.PlatformView.SetPadding(handler.PlatformView.PaddingLeft, handler.PlatformView.PaddingTop - 10,
|
||||||
|
handler.PlatformView.PaddingRight, handler.PlatformView.PaddingBottom + 20);
|
||||||
|
});
|
||||||
|
|
||||||
|
Microsoft.Maui.Handlers.PickerHandler.Mapper.AppendToMapping(nameof(IPicker.TextColor), (handler, picker) =>
|
||||||
|
{
|
||||||
|
handler.PlatformView.BackgroundTintList = ThemeHelpers.GetStateFocusedColors();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
using Android.Views.InputMethods;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class SearchBarHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
Microsoft.Maui.Handlers.SearchBarHandler.Mapper.AppendToMapping("CustomSearchBarHandler", (handler, searchBar) =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var magId = handler.PlatformView.Resources.GetIdentifier("android:id/search_mag_icon", null, null);
|
||||||
|
var magImage = (Android.Widget.ImageView)handler.PlatformView.FindViewById(magId);
|
||||||
|
magImage.LayoutParameters = new Android.Widget.LinearLayout.LayoutParams(0, 0);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
// TODO: [MAUI-Migration] [Check]
|
||||||
|
handler.PlatformView.ImeOptions = handler.PlatformView.ImeOptions | (int)ImeFlags.NoPersonalizedLearning |
|
||||||
|
(int)ImeFlags.NoExtractUi;
|
||||||
|
//Control.SetImeOptions(Control.ImeOptions | (ImeAction)ImeFlags.NoPersonalizedLearning |
|
||||||
|
// (ImeAction)ImeFlags.NoExtractUi);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
src/App/Platforms/Android/Handlers/SliderHandlerMappings.cs
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
using Android.Graphics.Drawables;
|
||||||
|
using AndroidX.Core.Content.Resources;
|
||||||
|
using Bit.App.Controls;
|
||||||
|
using Microsoft.Maui.Controls.Compatibility.Platform.Android;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class SliderHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
Microsoft.Maui.Handlers.SliderHandler.Mapper.AppendToMapping(nameof(ExtendedSlider.ThumbBorderColor), (handler, slider) =>
|
||||||
|
{
|
||||||
|
var t = ResourcesCompat.GetDrawable(handler.PlatformView.Resources, Resource.Drawable.slider_thumb, null);
|
||||||
|
if (t is GradientDrawable thumb && slider is ExtendedSlider extSlider)
|
||||||
|
{
|
||||||
|
// TODO: [MAUI-Migration]
|
||||||
|
//if (view.ThumbColor == Colors.Default)
|
||||||
|
//{
|
||||||
|
// thumb.SetColor(Colors.White.ToAndroid());
|
||||||
|
//}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
thumb.SetColor(extSlider.ThumbColor.ToAndroid());
|
||||||
|
//}
|
||||||
|
thumb.SetStroke(3, extSlider.ThumbBorderColor.ToAndroid());
|
||||||
|
handler.PlatformView.SetThumb(thumb);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
45
src/App/Platforms/Android/Handlers/StepperHandlerMappings.cs
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
using Android.Graphics;
|
||||||
|
using Android.OS;
|
||||||
|
using Bit.App.Controls;
|
||||||
|
using Microsoft.Maui.Controls.Compatibility.Platform.Android;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class StepperHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
Microsoft.Maui.Handlers.StepperHandler.Mapper.AppendToMapping(nameof(ExtendedStepper.StepperBackgroundColor), (handler, stepper) =>
|
||||||
|
{
|
||||||
|
if (stepper is ExtendedStepper extStepper)
|
||||||
|
{
|
||||||
|
if (Build.VERSION.SdkInt >= BuildVersionCodes.Q)
|
||||||
|
{
|
||||||
|
handler.PlatformView.GetChildAt(0)?.Background?.SetColorFilter(
|
||||||
|
new BlendModeColorFilter(extStepper.StepperBackgroundColor.ToAndroid(), Android.Graphics.BlendMode.Multiply));
|
||||||
|
handler.PlatformView.GetChildAt(1)?.Background?.SetColorFilter(
|
||||||
|
new BlendModeColorFilter(extStepper.StepperBackgroundColor.ToAndroid(), Android.Graphics.BlendMode.Multiply));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
handler.PlatformView.GetChildAt(0)?.Background?.SetColorFilter(
|
||||||
|
extStepper.StepperBackgroundColor.ToAndroid(), PorterDuff.Mode.Multiply);
|
||||||
|
handler.PlatformView.GetChildAt(1)?.Background?.SetColorFilter(
|
||||||
|
extStepper.StepperBackgroundColor.ToAndroid(), PorterDuff.Mode.Multiply);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Microsoft.Maui.Handlers.StepperHandler.Mapper.AppendToMapping(nameof(ExtendedStepper.StepperForegroundColor), (handler, stepper) =>
|
||||||
|
{
|
||||||
|
if (stepper is ExtendedStepper extStepper)
|
||||||
|
{
|
||||||
|
var btn0 = handler.PlatformView.GetChildAt(0) as Android.Widget.Button;
|
||||||
|
btn0?.SetTextColor(extStepper.StepperForegroundColor.ToAndroid());
|
||||||
|
var btn1 = handler.PlatformView.GetChildAt(1) as Android.Widget.Button;
|
||||||
|
btn1?.SetTextColor(extStepper.StepperForegroundColor.ToAndroid());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
42
src/App/Platforms/Android/Handlers/SwitchHandlerMappings.cs
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
using Android.Content.Res;
|
||||||
|
using Android.Graphics.Drawables;
|
||||||
|
using Android.OS;
|
||||||
|
using AndroidX.Core.Content.Resources;
|
||||||
|
using Bit.App.Droid.Utilities;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class SwitchHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
if (Build.VERSION.SdkInt <= BuildVersionCodes.LollipopMr1)
|
||||||
|
{
|
||||||
|
// Android 5.x doesn't support ThumbTintList, and using SwitchCompat on every version after 5.x
|
||||||
|
// doesn't apply tinting the way we want. Let 5.x to do its own thing here.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Microsoft.Maui.Handlers.SwitchHandler.Mapper.AppendToMapping(nameof(ISwitch.ThumbColor), (handler, mauiSwitch) =>
|
||||||
|
{
|
||||||
|
handler.PlatformView.SetHintTextColor(ThemeHelpers.MutedColor);
|
||||||
|
var t = ResourcesCompat.GetDrawable(handler.PlatformView.Resources, Resource.Drawable.switch_thumb, null);
|
||||||
|
if (t is GradientDrawable thumb)
|
||||||
|
{
|
||||||
|
handler.PlatformView.ThumbDrawable = thumb;
|
||||||
|
}
|
||||||
|
var thumbStates = new[]
|
||||||
|
{
|
||||||
|
new[] { Android.Resource.Attribute.StateChecked }, // checked
|
||||||
|
new[] { -Android.Resource.Attribute.StateChecked }, // unchecked
|
||||||
|
};
|
||||||
|
var thumbColors = new int[]
|
||||||
|
{
|
||||||
|
ThemeHelpers.SwitchOnColor,
|
||||||
|
ThemeHelpers.SwitchThumbColor
|
||||||
|
};
|
||||||
|
handler.PlatformView.ThumbTintList = new ColorStateList(thumbStates, thumbColors);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
using Android.Views;
|
||||||
|
using Bit.App.Controls;
|
||||||
|
using Microsoft.Maui.Handlers;
|
||||||
|
|
||||||
|
namespace Bit.App.Handlers
|
||||||
|
{
|
||||||
|
public class TimePickerHandlerMappings
|
||||||
|
{
|
||||||
|
public static void Setup()
|
||||||
|
{
|
||||||
|
TimePickerHandler.Mapper.AppendToMapping("CustomTimePickerHandler", (handler, timePicker) =>
|
||||||
|
{
|
||||||
|
if (timePicker is ExtendedTimePicker extTimePicker)
|
||||||
|
{
|
||||||
|
// center text
|
||||||
|
handler.PlatformView.Gravity = GravityFlags.CenterHorizontal;
|
||||||
|
|
||||||
|
// use placeholder until NullableTime set
|
||||||
|
if (!extTimePicker.NullableTime.HasValue)
|
||||||
|
{
|
||||||
|
handler.PlatformView.Text = extTimePicker.PlaceHolder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
TimePickerHandler.Mapper.AppendToMapping(nameof(ITimePicker.Time), UpdateTextPlaceholderOnFormatLikePlacholder);
|
||||||
|
|
||||||
|
TimePickerHandler.Mapper.AppendToMapping(nameof(ITimePicker.Format), UpdateTextPlaceholderOnFormatLikePlacholder);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void UpdateTextPlaceholderOnFormatLikePlacholder(ITimePickerHandler handler, ITimePicker timePicker)
|
||||||
|
{
|
||||||
|
if (timePicker is ExtendedTimePicker extDatePicker && extDatePicker.Format == extDatePicker.PlaceHolder)
|
||||||
|
{
|
||||||
|
handler.PlatformView.Text = extDatePicker.PlaceHolder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,7 +12,7 @@ using Android.Runtime;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
using Bit.App.Models;
|
using Bit.App.Models;
|
||||||
using Bit.App.Resources;
|
using Bit.Core.Resources.Localization;
|
||||||
using Bit.App.Utilities;
|
using Bit.App.Utilities;
|
||||||
using Bit.Core;
|
using Bit.Core;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
|
@ -20,11 +20,9 @@ using Bit.Core.Enums;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Bit.Droid.Autofill;
|
using Bit.Droid.Autofill;
|
||||||
using Bit.Droid.Receivers;
|
using Bit.Droid.Receivers;
|
||||||
using Bit.Droid.Utilities;
|
using Bit.App.Droid.Utilities;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using Xamarin.Essentials;
|
|
||||||
using ZXing.Net.Mobile.Android;
|
|
||||||
using FileProvider = AndroidX.Core.Content.FileProvider;
|
using FileProvider = AndroidX.Core.Content.FileProvider;
|
||||||
|
|
||||||
namespace Bit.Droid
|
namespace Bit.Droid
|
||||||
|
@ -34,7 +32,7 @@ namespace Bit.Droid
|
||||||
// LaunchMode defined in values/manifest.xml for Android 10- and values-v30/manifest.xml for Android 11+
|
// LaunchMode defined in values/manifest.xml for Android 10- and values-v30/manifest.xml for Android 11+
|
||||||
// See https://github.com/bitwarden/mobile/pull/1673 for details
|
// See https://github.com/bitwarden/mobile/pull/1673 for details
|
||||||
[Register("com.x8bit.bitwarden.MainActivity")]
|
[Register("com.x8bit.bitwarden.MainActivity")]
|
||||||
public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity
|
public class MainActivity : MauiAppCompatActivity
|
||||||
{
|
{
|
||||||
private IDeviceActionService _deviceActionService;
|
private IDeviceActionService _deviceActionService;
|
||||||
private IFileService _fileService;
|
private IFileService _fileService;
|
||||||
|
@ -70,8 +68,8 @@ namespace Bit.Droid
|
||||||
_pushNotificationListenerService = ServiceContainer.Resolve<IPushNotificationListenerService>();
|
_pushNotificationListenerService = ServiceContainer.Resolve<IPushNotificationListenerService>();
|
||||||
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
||||||
|
|
||||||
TabLayoutResource = Resource.Layout.Tabbar;
|
//TabLayoutResource = Resource.Layout.Tabbar;
|
||||||
ToolbarResource = Resource.Layout.Toolbar;
|
//ToolbarResource = Resource.Layout.Toolbar;
|
||||||
|
|
||||||
// this needs to be called here before base.OnCreate(...)
|
// this needs to be called here before base.OnCreate(...)
|
||||||
Intent?.Validate();
|
Intent?.Validate();
|
||||||
|
@ -91,11 +89,8 @@ namespace Bit.Droid
|
||||||
toplayout.FilterTouchesWhenObscured = true;
|
toplayout.FilterTouchesWhenObscured = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
|
|
||||||
Xamarin.Forms.Forms.Init(this, savedInstanceState);
|
|
||||||
_appOptions = GetOptions();
|
_appOptions = GetOptions();
|
||||||
CreateNotificationChannel();
|
CreateNotificationChannel();
|
||||||
LoadApplication(new App.App(_appOptions));
|
|
||||||
DisableAndroidFontScale();
|
DisableAndroidFontScale();
|
||||||
|
|
||||||
_broadcasterService.Subscribe(_activityKey, (message) =>
|
_broadcasterService.Subscribe(_activityKey, (message) =>
|
||||||
|
@ -110,7 +105,7 @@ namespace Bit.Droid
|
||||||
}
|
}
|
||||||
else if (message.Command == "finishMainActivity")
|
else if (message.Command == "finishMainActivity")
|
||||||
{
|
{
|
||||||
Xamarin.Forms.Device.BeginInvokeOnMainThread(() => Finish());
|
MainThread.BeginInvokeOnMainThread(() => Finish());
|
||||||
}
|
}
|
||||||
else if (message.Command == "listenYubiKeyOTP")
|
else if (message.Command == "listenYubiKeyOTP")
|
||||||
{
|
{
|
||||||
|
@ -118,7 +113,7 @@ namespace Bit.Droid
|
||||||
}
|
}
|
||||||
else if (message.Command is ThemeManager.UPDATED_THEME_MESSAGE_KEY)
|
else if (message.Command is ThemeManager.UPDATED_THEME_MESSAGE_KEY)
|
||||||
{
|
{
|
||||||
Xamarin.Forms.Device.BeginInvokeOnMainThread(() => AppearanceAdjustments());
|
MainThread.BeginInvokeOnMainThread(() => AppearanceAdjustments());
|
||||||
}
|
}
|
||||||
else if (message.Command == "exit")
|
else if (message.Command == "exit")
|
||||||
{
|
{
|
||||||
|
@ -136,7 +131,7 @@ namespace Bit.Droid
|
||||||
protected override void OnResume()
|
protected override void OnResume()
|
||||||
{
|
{
|
||||||
base.OnResume();
|
base.OnResume();
|
||||||
Xamarin.Essentials.Platform.OnResume();
|
//Xamarin.Essentials.Platform.OnResume();
|
||||||
AppearanceAdjustments();
|
AppearanceAdjustments();
|
||||||
|
|
||||||
ThemeManager.UpdateThemeOnPagesAsync();
|
ThemeManager.UpdateThemeOnPagesAsync();
|
||||||
|
@ -224,8 +219,9 @@ namespace Bit.Droid
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
//Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
|
//PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
}
|
}
|
||||||
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
}
|
}
|
|
@ -25,6 +25,7 @@ using Bit.Core.Enums;
|
||||||
#if !FDROID
|
#if !FDROID
|
||||||
using Android.Gms.Security;
|
using Android.Gms.Security;
|
||||||
#endif
|
#endif
|
||||||
|
using DeviceType = Bit.Core.Enums.DeviceType;
|
||||||
|
|
||||||
namespace Bit.Droid
|
namespace Bit.Droid
|
||||||
{
|
{
|
||||||
|
@ -37,7 +38,7 @@ namespace Bit.Droid
|
||||||
#if FDROID
|
#if FDROID
|
||||||
public class MainApplication : Application
|
public class MainApplication : Application
|
||||||
#else
|
#else
|
||||||
public class MainApplication : Application, ProviderInstaller.IProviderInstallListener
|
public class MainApplication : MauiApplication, ProviderInstaller.IProviderInstallListener
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
public MainApplication(IntPtr handle, JniHandleOwnership transer)
|
public MainApplication(IntPtr handle, JniHandleOwnership transer)
|
||||||
|
@ -94,6 +95,8 @@ namespace Bit.Droid
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override MauiApp CreateMauiApp() => App.MauiProgram.CreateMauiApp();
|
||||||
|
|
||||||
public override void OnCreate()
|
public override void OnCreate()
|
||||||
{
|
{
|
||||||
base.OnCreate();
|
base.OnCreate();
|
||||||
|
@ -122,21 +125,29 @@ namespace Bit.Droid
|
||||||
ServiceContainer.Register("logger", logger);
|
ServiceContainer.Register("logger", logger);
|
||||||
|
|
||||||
// Note: This might cause a race condition. Investigate more.
|
// Note: This might cause a race condition. Investigate more.
|
||||||
Task.Run(() =>
|
//Task.Run(() =>
|
||||||
{
|
//{
|
||||||
FFImageLoading.Forms.Platform.CachedImageRenderer.Init(true);
|
// FFImageLoading.Forms.Platform.CachedImageRenderer.Init(true);
|
||||||
FFImageLoading.ImageService.Instance.Initialize(new FFImageLoading.Config.Configuration
|
// FFImageLoading.ImageService.Instance.Initialize(new FFImageLoading.Config.Configuration
|
||||||
{
|
// {
|
||||||
FadeAnimationEnabled = false,
|
// FadeAnimationEnabled = false,
|
||||||
FadeAnimationForCachedImages = false,
|
// FadeAnimationForCachedImages = false,
|
||||||
HttpClient = new HttpClient(new AndroidClientHandler() { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate })
|
// HttpClient = new HttpClient(new AndroidClientHandler() { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate })
|
||||||
});
|
// });
|
||||||
ZXing.Net.Mobile.Forms.Android.Platform.Init();
|
// ZXing.Net.Mobile.Forms.Android.Platform.Init();
|
||||||
});
|
//});
|
||||||
CrossFingerprint.SetCurrentActivityResolver(() => CrossCurrentActivity.Current.Activity);
|
CrossFingerprint.SetCurrentActivityResolver(() => CrossCurrentActivity.Current.Activity);
|
||||||
|
|
||||||
var preferencesStorage = new PreferencesStorageService(null);
|
var preferencesStorage = new PreferencesStorageService(null);
|
||||||
var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
|
var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
|
||||||
|
|
||||||
|
// TODO: [MAUI-Migration] [Critical] HACK in MAUI the Personal folder adds a \Documents at the end that shouldn't be there
|
||||||
|
var lastPartDocumentsPathIndex = documentsPath.IndexOf("Documents") - 1;
|
||||||
|
if (lastPartDocumentsPathIndex >= 0)
|
||||||
|
{
|
||||||
|
documentsPath = documentsPath.Substring(0, lastPartDocumentsPathIndex);
|
||||||
|
}
|
||||||
|
|
||||||
var liteDbStorage = new LiteDbStorageService(Path.Combine(documentsPath, "bitwarden.db"));
|
var liteDbStorage = new LiteDbStorageService(Path.Combine(documentsPath, "bitwarden.db"));
|
||||||
var localizeService = new LocalizeService();
|
var localizeService = new LocalizeService();
|
||||||
var broadcasterService = new BroadcasterService(logger);
|
var broadcasterService = new BroadcasterService(logger);
|
||||||
|
@ -148,7 +159,7 @@ namespace Bit.Droid
|
||||||
var storageMediatorService = new StorageMediatorService(mobileStorageService, secureStorageService, preferencesStorage);
|
var storageMediatorService = new StorageMediatorService(mobileStorageService, secureStorageService, preferencesStorage);
|
||||||
var stateService = new StateService(mobileStorageService, secureStorageService, storageMediatorService, messagingService);
|
var stateService = new StateService(mobileStorageService, secureStorageService, storageMediatorService, messagingService);
|
||||||
var stateMigrationService =
|
var stateMigrationService =
|
||||||
new StateMigrationService(DeviceType.Android, liteDbStorage, preferencesStorage, secureStorageService);
|
new StateMigrationService(Bit.Core.Enums.DeviceType.Android, liteDbStorage, preferencesStorage, secureStorageService);
|
||||||
var clipboardService = new ClipboardService(stateService);
|
var clipboardService = new ClipboardService(stateService);
|
||||||
var deviceActionService = new DeviceActionService(stateService, messagingService);
|
var deviceActionService = new DeviceActionService(stateService, messagingService);
|
||||||
var fileService = new FileService(stateService, broadcasterService);
|
var fileService = new FileService(stateService, broadcasterService);
|
|
@ -8,7 +8,6 @@ using Bit.Core.Utilities;
|
||||||
using Firebase.Messaging;
|
using Firebase.Messaging;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.Droid.Push
|
namespace Bit.Droid.Push
|
||||||
{
|
{
|
|
@ -4,7 +4,7 @@ using Android.Content;
|
||||||
using Bit.App.Utilities;
|
using Bit.App.Utilities;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Bit.Droid.Utilities;
|
using Bit.App.Droid.Utilities;
|
||||||
|
|
||||||
namespace Bit.Droid.Receivers
|
namespace Bit.Droid.Receivers
|
||||||
{
|
{
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 187 KiB After Width: | Height: | Size: 187 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 381 KiB After Width: | Height: | Size: 381 KiB |