Version 3.0.312.
537
LastenradBayern/LastenradBayern.sln
Normal file
|
@ -0,0 +1,537 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.32014.148
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TINKLib", "..\TINKLib\TINKLib.csproj", "{B77F4222-0860-4494-A07C-EE8E09FA9983}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestTINKLib", "..\TestTINKLib\TestTINKLib.csproj", "{730A31A5-6736-43CC-8F84-8FDA5093E283}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockItShared", "..\LockItShared\LockItShared.csproj", "{3589ED1D-E734-429D-976F-1BEA4371DF14}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockItBLE", "..\LockItBLE\LockItBLE.csproj", "{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestLockItShared", "..\TestLockItShared\TestLockItShared.csproj", "{7E25F58E-62E3-48D7-8115-E33DA67C511E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestShareeLib", "..\TestShareeLib\TestShareeLib.csproj", "{38F340AD-EC12-4BB2-8633-AC5B55C32B77}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestLockItBLE", "..\TestLockItBLE\TestLockItBLE.csproj", "{2581E9AD-4F56-431A-AB87-1B6D80D546AA}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "LastenradBayern", "TINK\LastenradBayern.shproj", "{8D4F2CDD-32C6-4AA1-A9E1-7B27BDCEB3A5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LastenradBayern.iOS", "TINK.iOS\LastenradBayern.iOS.csproj", "{3A0EF953-1501-4155-B0A0-265EB5FB2975}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestFramework", "..\TestFramework\TestFramework.csproj", "{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestSharee", "..\TestSharee\TestSharee.csproj", "{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||
TINK\LastenradBayern.projitems*{3a0ef953-1501-4155-b0a0-265eb5fb2975}*SharedItemsImports = 4
|
||||
TINK\LastenradBayern.projitems*{8d4f2cdd-32c6-4aa1-a9e1-7b27bdceb3a5}*SharedItemsImports = 13
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
Ad-Hoc|ARM = Ad-Hoc|ARM
|
||||
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
||||
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
||||
Ad-Hoc|x64 = Ad-Hoc|x64
|
||||
Ad-Hoc|x86 = Ad-Hoc|x86
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
AppStore|ARM = AppStore|ARM
|
||||
AppStore|iPhone = AppStore|iPhone
|
||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||
AppStore|x64 = AppStore|x64
|
||||
AppStore|x86 = AppStore|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x64.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x86.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x64.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x64.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x64.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x86.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x86.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x64.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.AppStore|Any CPU.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.AppStore|ARM.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.AppStore|x64.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.AppStore|x86.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Debug|iPhone.Build.0 = Debug|iPhone
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Release|iPhone.ActiveCfg = Release|iPhone
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Release|iPhone.Build.0 = Release|iPhone
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Release|x64.ActiveCfg = Release|iPhoneSimulator
|
||||
{3A0EF953-1501-4155-B0A0-265EB5FB2975}.Release|x86.ActiveCfg = Release|iPhoneSimulator
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {C6529CD7-C3F7-4E80-89B5-002E2B8E3EB5}
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
Policies = $0
|
||||
$0.DotNetNamingPolicy = $1
|
||||
$1.DirectoryNamespaceAssociation = PrefixedHierarchical
|
||||
version = 3.0
|
||||
EndGlobalSection
|
||||
EndGlobal
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.2 KiB |
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.LastenradBayern" android:versionName="3.0.299" android:versionCode="299">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.LastenradBayern" android:versionName="3.0.312" android:versionCode="312">
|
||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
|
||||
<!-- Google Maps related permissions -->
|
||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace TINK.Droid
|
|||
{
|
||||
|
||||
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.2.4.160")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.3.0.26")]
|
||||
public partial class Resource
|
||||
{
|
||||
|
||||
|
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 19 KiB |
|
@ -10,5 +10,9 @@
|
|||
<array>
|
||||
<string>applinks:sharee.bike</string>
|
||||
</array>
|
||||
<key>application-identifier</key>
|
||||
<string>LXJD6URCHR.com.TeilRad.LastenradBayern</string>
|
||||
<key>com.apple.developer.team-identifier</key>
|
||||
<string>LXJD6URCHR</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -53,8 +53,8 @@
|
|||
<key>CFBundleDisplayName</key>
|
||||
<string>LastenradBayern</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>299</string>
|
||||
<string>312</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>3.0.299</string>
|
||||
<string>3.0.312</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -1479,7 +1479,7 @@
|
|||
<ImageAsset Include="Media.xcassets\sharee_no_background.imageset\Contents.json">
|
||||
<Visible>false</Visible>
|
||||
</ImageAsset>
|
||||
<ImageAsset Include="Media.xcassets\sharee_no_background.imageset\LastenradBayern-iOS-abgerundet.pdf">
|
||||
<ImageAsset Include="Media.xcassets\sharee_no_background.imageset\sharee_no_background.pdf">
|
||||
<Visible>false</Visible>
|
||||
</ImageAsset>
|
||||
</ItemGroup>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"images": [
|
||||
{
|
||||
"filename": "LastenradBayern-iOS-abgerundet.pdf",
|
||||
"filename": "sharee_no_background.pdf",
|
||||
"idiom": "universal"
|
||||
},
|
||||
{
|
||||
|
@ -48,11 +48,13 @@
|
|||
"idiom": "ipad"
|
||||
},
|
||||
{
|
||||
"idiom": "watch"
|
||||
"idiom": "watch",
|
||||
"screen-width": ">183"
|
||||
},
|
||||
{
|
||||
"scale": "2x",
|
||||
"idiom": "watch"
|
||||
"idiom": "watch",
|
||||
"screen-width": ">183"
|
||||
},
|
||||
{
|
||||
"screenWidth": "{130,145}",
|
||||
|
@ -221,7 +223,8 @@
|
|||
}
|
||||
],
|
||||
"scale": "2x",
|
||||
"idiom": "watch"
|
||||
"idiom": "watch",
|
||||
"screen-width": ">145"
|
||||
},
|
||||
{
|
||||
"screenWidth": "{130,145}",
|
||||
|
@ -438,7 +441,8 @@
|
|||
}
|
||||
],
|
||||
"scale": "2x",
|
||||
"idiom": "watch"
|
||||
"idiom": "watch",
|
||||
"screen-width": ">145"
|
||||
},
|
||||
{
|
||||
"screenWidth": "{130,145}",
|
||||
|
|
BIN
LastenradBayern/TINK.iOS/Media.xcassets/sharee_no_background.imageset/sharee_no_background.pdf
vendored
Normal file
|
@ -18,7 +18,7 @@
|
|||
<Compile Include="$(MSBuildThisFileDirectory)ViewModel\RootFlyout\RootPageViewModel.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)View\Account\AccountPage.xaml.cs">
|
||||
<SubType>Code</SubType>
|
||||
<DependentUpon>%(Filename)</DependentUpon>
|
||||
<DependentUpon>AccountPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)View\Bike\BCBike.xaml.cs">
|
||||
<DependentUpon>BCBike.xaml</DependentUpon>
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||
mc:Ignorable="d"
|
||||
x:Class="TINK.View.Account.AccountPage">
|
||||
x:Class="TINK.View.Account.AccountPage"
|
||||
Title="{x:Static resources:AppResources.MarkingAccount}">
|
||||
<ContentPage.Content>
|
||||
<Frame>
|
||||
<StackLayout>
|
||||
|
|
|
@ -13,16 +13,19 @@
|
|||
</ContentView.Resources>
|
||||
<StackLayout
|
||||
Padding="10">
|
||||
<!-- Name of the bike -->
|
||||
<Label
|
||||
FontAttributes="Bold"
|
||||
FontSize="Large"
|
||||
HorizontalTextAlignment="Center"
|
||||
Text="{Binding Name}"/>
|
||||
<!-- Id of the bike -->
|
||||
<Label
|
||||
FontAttributes="Bold"
|
||||
HorizontalTextAlignment="Center"
|
||||
IsVisible="{Binding DisplayId, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding DisplayId}"/>
|
||||
<!-- Rental state -->
|
||||
<Label
|
||||
Text="{Binding StateText}"
|
||||
TextColor="{Binding StateColor}"/>
|
||||
|
@ -40,9 +43,12 @@
|
|||
IsVisible="{Binding IsLockitButtonVisible}"
|
||||
IsEnabled="{Binding IsIdle}"
|
||||
Command="{Binding OnLockitButtonClicked}"/>
|
||||
<!-- Rental description (tarif name, options and rental info -->
|
||||
<Grid
|
||||
RowSpacing="0"
|
||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
|
||||
<Grid.RowDefinitions>
|
||||
<!-- start tarif- entries -->
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
|
@ -50,64 +56,149 @@
|
|||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<!-- start rental info -->
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<!-- Operator AGB -->
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<!-- start tarif- entries (should be a CollectionView) -->
|
||||
<Label
|
||||
Text=
|
||||
"{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
||||
Text= "{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="0"
|
||||
FontAttributes="Bold"/>
|
||||
<Label
|
||||
Text=
|
||||
"{Binding TariffDescription.Header}"
|
||||
Text="{Binding TariffDescription.Header}"
|
||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="2"
|
||||
FontAttributes="Bold"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFreeTimePerSession}"
|
||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry1.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry1.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="1"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.FreeTimePerSession}"
|
||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry1.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry1.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFeeEuroPerHour}"
|
||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry2.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry2.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="2"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.FeeEuroPerHour}"
|
||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry2.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry2.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionMaxFeeEuroPerDay}"
|
||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry3.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry3.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="3"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.MaxFeeEuroPerDay}"
|
||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry3.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry3.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionAboEuroPerMonth}"
|
||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry4.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry4.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="4"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.AboEuroPerMonth}"
|
||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry4.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry4.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry5.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry5.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="5"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry5.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry5.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry6.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry6.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="6"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry6.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry6.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry7.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry7.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="7"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry7.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry7.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry8.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry8.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="8"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry8.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry8.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="8"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry9.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry9.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="9"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry9.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry9.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="9"
|
||||
Grid.Column="1"/>
|
||||
<!-- start tarif- entries (should be a CollectionView) -->
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry1}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry1, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="10"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry2}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry2, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="11"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry3}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry3, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="12"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry4}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry4, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="13"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry5}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry5, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="14"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<!-- AGB entry -->
|
||||
<Label
|
||||
TextType="Html"
|
||||
Text="{Binding TariffDescription.OperatorAgb}"
|
||||
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="5"
|
||||
Grid.ColumnSpan="3">
|
||||
Grid.ColumnSpan="2"
|
||||
Grid.Row="15">
|
||||
<Label.GestureRecognizers>
|
||||
<TapGestureRecognizer Command="{Binding ShowAgbTappedCommand}"/>
|
||||
</Label.GestureRecognizers>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||
x:Class="TINK.View.Contact.ContactPage"
|
||||
Title="{x:Static resources:AppResources.MarkingContactPageTitle}">
|
||||
Title="{x:Static resources:AppResources.MarkingFeedbackAndContact}">
|
||||
<ContentPage.Resources>
|
||||
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="StringNotNullOrEmpty_Converter"/>
|
||||
<conv:BoolInverterConverter x:Key="BoolInvert_Converter"/>
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||
x:Class="TINK.View.Contact.FeesAndBikesPage">
|
||||
x:Class="TINK.View.Contact.FeesAndBikesPage"
|
||||
Title="{x:Static resources:AppResources.MarkingFeesAndBikes}">
|
||||
<!--Pages can be added as references or inline-->
|
||||
<ContentPage Title="{x:Static resources:AppResources.MarkingTabFees}">
|
||||
<ContentPage.Content>
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||
x:Class="TINK.View.FindBike.FindBikePage"
|
||||
xmlns:local_bike="clr-namespace:TINK.View.Bike">
|
||||
xmlns:local_bike="clr-namespace:TINK.View.Bike"
|
||||
Title="{x:Static resources:AppResources.MarkingFindBike}">
|
||||
<ContentPage.Resources>
|
||||
<ResourceDictionary>
|
||||
<local_bike:BikeViewCellTemplateSelector x:Key="bikeTemplateSelector"/>
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="TINK.View.Info.InfoPage"
|
||||
x:Name="TabbedInfoPage">
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||
x:Class="TINK.View.Info.InfoPage"
|
||||
x:Name="TabbedInfoPage"
|
||||
Title="{x:Static resources:AppResources.MarkingAbout}">
|
||||
<!--Pages can be added as references or inline-->
|
||||
<ContentPage Title="App">
|
||||
<ContentPage.Content>
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||
x:Class="TINK.View.Login.LoginPage">
|
||||
x:Class="TINK.View.Login.LoginPage"
|
||||
Title="{x:Static resources:AppResources.MarkingLogin}">
|
||||
<ScrollView>
|
||||
<Frame>
|
||||
<StackLayout x:Name="LoginPageView">
|
||||
|
|
|
@ -4,15 +4,24 @@
|
|||
BackgroundColor="#009bda"
|
||||
x:Class="TINK.View.RootShell.FlyoutHeader">
|
||||
|
||||
<Grid Padding="0">
|
||||
<Grid Padding="20">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="200" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="55" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="363" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Image
|
||||
Aspect="AspectFit"
|
||||
Grid.Row="0"
|
||||
HeightRequest="100"
|
||||
Aspect="AspectFit"
|
||||
HorizontalOptions="StartAndExpand"
|
||||
Source="sharee_no_background.png"/>
|
||||
<Label
|
||||
Grid.Row="1"
|
||||
Text="Gefördert durch 
Bayerisches Staatsministerium für 
Wohnen, Bau und Verkehr"
|
||||
TextColor="White"
|
||||
FontSize="Small"/>
|
||||
</Grid>
|
||||
</ContentView>
|
|
@ -1,33 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Text;
|
||||
using Xamarin.Forms;
|
||||
using TINK.Model.User.Account;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace TINK.View.Settings
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Translates user permissions into visibility state.
|
||||
/// Used for container which holds a bunch of GUI elemets which migth all/ partly/ none be visible
|
||||
/// If all childs are invisible frame must be invisible as well. As soon as one child is visible frame must be visible as well.
|
||||
/// </summary>
|
||||
public class AnyPermissionToVisibleConverter : IValueConverter
|
||||
{
|
||||
/// <summary> Converts permission value into visible state.</summary>
|
||||
/// <param name="value">Permission value from view model used to derive whether object is visible or not.</param>
|
||||
/// <returns>Boolean value indicating whether object is visible or not.</returns>
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return ((Permissions)(value)) != Permissions.None;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return Permissions.None;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
using System;
|
||||
using System.Globalization;
|
||||
using Xamarin.Forms;
|
||||
using TINK.Model.User.Account;
|
||||
|
||||
namespace TINK.View.Settings
|
||||
{
|
||||
/// <summary> Translates user permissions into visibility state. </summary>
|
||||
public class PermissionToVisibleConverter : BindableObject, IValueConverter
|
||||
{
|
||||
static readonly BindableProperty VisibleFlagProperty =
|
||||
BindableProperty.Create(nameof(VisibleFlag), typeof(Permissions), typeof(BindableObject));
|
||||
|
||||
/// <summary> Property set from XAML determinig for which permission value object is visible.</summary>
|
||||
public Permissions VisibleFlag
|
||||
{
|
||||
get => (Permissions)GetValue(VisibleFlagProperty);
|
||||
set => SetValue(VisibleFlagProperty, value);
|
||||
}
|
||||
|
||||
/// <summary> Converts permission value into visible state.</summary>
|
||||
/// <param name="value">Permission value from view model used to derive whether object is visible or not.</param>
|
||||
/// <returns>Boolean value indicating whether object is visible or not.</returns>
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return ((Permissions)value).HasFlag(VisibleFlag);
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return Permissions.None;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,7 +4,8 @@
|
|||
x:Class="TINK.View.Settings.SettingsPage"
|
||||
xmlns:conv="clr-namespace:TINK.View.Settings;assembly=TINKLib"
|
||||
xmlns:account="clr-namespace:TINK.Model.User.Account;assembly=TINKLib"
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib">
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||
Title="{x:Static resources:AppResources.MarkingSettings}">
|
||||
|
||||
<ContentPage.Resources>
|
||||
<conv:BackendPermissionsToVisibleConverter x:Key="Frame_Converter"/>
|
||||
|
|
537
Meinkonrad/MeinKonrad.sln
Normal file
|
@ -0,0 +1,537 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.32014.148
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TINKLib", "..\TINKLib\TINKLib.csproj", "{B77F4222-0860-4494-A07C-EE8E09FA9983}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestTINKLib", "..\TestTINKLib\TestTINKLib.csproj", "{730A31A5-6736-43CC-8F84-8FDA5093E283}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockItShared", "..\LockItShared\LockItShared.csproj", "{3589ED1D-E734-429D-976F-1BEA4371DF14}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockItBLE", "..\LockItBLE\LockItBLE.csproj", "{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestLockItShared", "..\TestLockItShared\TestLockItShared.csproj", "{7E25F58E-62E3-48D7-8115-E33DA67C511E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestShareeLib", "..\TestShareeLib\TestShareeLib.csproj", "{38F340AD-EC12-4BB2-8633-AC5B55C32B77}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestLockItBLE", "..\TestLockItBLE\TestLockItBLE.csproj", "{2581E9AD-4F56-431A-AB87-1B6D80D546AA}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Meinkonrad", "TINK\Meinkonrad.shproj", "{5CF95CB1-AD37-4DBA-8B9D-651CFB9EB903}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Meinkonrad.iOS", "TINK.iOS\Meinkonrad.iOS.csproj", "{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestFramework", "..\TestFramework\TestFramework.csproj", "{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestSharee", "..\TestSharee\TestSharee.csproj", "{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
Ad-Hoc|ARM = Ad-Hoc|ARM
|
||||
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
||||
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
||||
Ad-Hoc|x64 = Ad-Hoc|x64
|
||||
Ad-Hoc|x86 = Ad-Hoc|x86
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
AppStore|ARM = AppStore|ARM
|
||||
AppStore|iPhone = AppStore|iPhone
|
||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||
AppStore|x64 = AppStore|x64
|
||||
AppStore|x86 = AppStore|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x64.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x86.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x64.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x64.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x64.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x86.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x86.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x64.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.AppStore|Any CPU.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.AppStore|ARM.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.AppStore|x64.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.AppStore|x86.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Debug|iPhone.Build.0 = Debug|iPhone
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|Any CPU.ActiveCfg = Debug|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|iPhone.ActiveCfg = Release|iPhone
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|iPhone.Build.0 = Release|iPhone
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|x64.ActiveCfg = Release|iPhoneSimulator
|
||||
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|x86.ActiveCfg = Release|iPhoneSimulator
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {C6529CD7-C3F7-4E80-89B5-002E2B8E3EB5}
|
||||
EndGlobalSection
|
||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||
TINK\Meinkonrad.projitems*{5cf95cb1-ad37-4dba-8b9d-651cfb9eb903}*SharedItemsImports = 13
|
||||
TINK\Meinkonrad.projitems*{cf1b848a-d1df-40ab-ba6f-b1e1746a1161}*SharedItemsImports = 4
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
Policies = $0
|
||||
$0.DotNetNamingPolicy = $1
|
||||
$1.DirectoryNamespaceAssociation = PrefixedHierarchical
|
||||
version = 3.0
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.Meinkonrad" android:versionName="3.0.299" android:versionCode="299">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.Meinkonrad" android:versionName="3.0.312" android:versionCode="312">
|
||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
|
||||
<!-- Google Maps related permissions -->
|
||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace TINK.Droid
|
|||
{
|
||||
|
||||
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.2.4.160")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.3.0.26")]
|
||||
public partial class Resource
|
||||
{
|
||||
|
||||
|
|
|
@ -53,8 +53,8 @@
|
|||
<key>CFBundleDisplayName</key>
|
||||
<string>Mein konrad</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>299</string>
|
||||
<string>312</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>3.0.299</string>
|
||||
<string>3.0.312</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
<MtouchArch>i386, x86_64</MtouchArch>
|
||||
<MtouchLink>None</MtouchLink>
|
||||
<MtouchDebug>true</MtouchDebug>
|
||||
<CodesignProvision>VS: com.TeilRad.Meinkonrad Development</CodesignProvision>
|
||||
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
|
||||
<CodesignProvision>Automatic</CodesignProvision>
|
||||
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
|
||||
<DebugType>none</DebugType>
|
||||
|
|
|
@ -13,16 +13,19 @@
|
|||
</ContentView.Resources>
|
||||
<StackLayout
|
||||
Padding="10">
|
||||
<!-- Name of the bike -->
|
||||
<Label
|
||||
FontAttributes="Bold"
|
||||
FontSize="Large"
|
||||
HorizontalTextAlignment="Center"
|
||||
Text="{Binding Name}"/>
|
||||
<!-- Id of the bike -->
|
||||
<Label
|
||||
FontAttributes="Bold"
|
||||
HorizontalTextAlignment="Center"
|
||||
IsVisible="{Binding DisplayId, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding DisplayId}"/>
|
||||
<!-- Rental state -->
|
||||
<Label
|
||||
Text="{Binding StateText}"
|
||||
TextColor="{Binding StateColor}"/>
|
||||
|
@ -40,9 +43,12 @@
|
|||
IsVisible="{Binding IsLockitButtonVisible}"
|
||||
IsEnabled="{Binding IsIdle}"
|
||||
Command="{Binding OnLockitButtonClicked}"/>
|
||||
<!-- Rental description (tarif name, options and rental info -->
|
||||
<Grid
|
||||
RowSpacing="0"
|
||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
|
||||
<Grid.RowDefinitions>
|
||||
<!-- start tarif- entries -->
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
|
@ -50,64 +56,149 @@
|
|||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<!-- start rental info -->
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<!-- Operator AGB -->
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<!-- start tarif- entries (should be a CollectionView) -->
|
||||
<Label
|
||||
Text=
|
||||
"{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
||||
Text= "{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="0"
|
||||
FontAttributes="Bold"/>
|
||||
<Label
|
||||
Text=
|
||||
"{Binding TariffDescription.Header}"
|
||||
Text="{Binding TariffDescription.Header}"
|
||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="2"
|
||||
FontAttributes="Bold"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFreeTimePerSession}"
|
||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry1.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry1.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="1"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.FreeTimePerSession}"
|
||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry1.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry1.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFeeEuroPerHour}"
|
||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry2.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry2.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="2"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.FeeEuroPerHour}"
|
||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry2.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry2.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionMaxFeeEuroPerDay}"
|
||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry3.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry3.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="3"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.MaxFeeEuroPerDay}"
|
||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry3.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry3.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionAboEuroPerMonth}"
|
||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry4.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry4.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="4"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.AboEuroPerMonth}"
|
||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry4.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry4.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry5.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry5.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="5"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry5.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry5.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry6.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry6.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="6"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry6.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry6.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry7.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry7.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="7"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry7.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry7.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry8.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry8.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="8"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry8.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry8.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="8"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry9.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry9.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="9"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry9.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry9.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="9"
|
||||
Grid.Column="1"/>
|
||||
<!-- start tarif- entries (should be a CollectionView) -->
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry1}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry1, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="10"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry2}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry2, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="11"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry3}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry3, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="12"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry4}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry4, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="13"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry5}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry5, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="14"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<!-- AGB entry -->
|
||||
<Label
|
||||
TextType="Html"
|
||||
Text="{Binding TariffDescription.OperatorAgb}"
|
||||
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="5"
|
||||
Grid.ColumnSpan="3">
|
||||
Grid.ColumnSpan="2"
|
||||
Grid.Row="15">
|
||||
<Label.GestureRecognizers>
|
||||
<TapGestureRecognizer Command="{Binding ShowAgbTappedCommand}"/>
|
||||
</Label.GestureRecognizers>
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Text;
|
||||
using Xamarin.Forms;
|
||||
using TINK.Model.User.Account;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace TINK.View.Settings
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Translates user permissions into visibility state.
|
||||
/// Used for container which holds a bunch of GUI elemets which migth all/ partly/ none be visible
|
||||
/// If all childs are invisible frame must be invisible as well. As soon as one child is visible frame must be visible as well.
|
||||
/// </summary>
|
||||
public class AnyPermissionToVisibleConverter : IValueConverter
|
||||
{
|
||||
/// <summary> Converts permission value into visible state.</summary>
|
||||
/// <param name="value">Permission value from view model used to derive whether object is visible or not.</param>
|
||||
/// <returns>Boolean value indicating whether object is visible or not.</returns>
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return ((Permissions)(value)) != Permissions.None;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return Permissions.None;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
using System;
|
||||
using System.Globalization;
|
||||
using Xamarin.Forms;
|
||||
using TINK.Model.User.Account;
|
||||
|
||||
namespace TINK.View.Settings
|
||||
{
|
||||
/// <summary> Translates user permissions into visibility state. </summary>
|
||||
public class PermissionToVisibleConverter : BindableObject, IValueConverter
|
||||
{
|
||||
static readonly BindableProperty VisibleFlagProperty =
|
||||
BindableProperty.Create(nameof(VisibleFlag), typeof(Permissions), typeof(BindableObject));
|
||||
|
||||
/// <summary> Property set from XAML determinig for which permission value object is visible.</summary>
|
||||
public Permissions VisibleFlag
|
||||
{
|
||||
get => (Permissions)GetValue(VisibleFlagProperty);
|
||||
set => SetValue(VisibleFlagProperty, value);
|
||||
}
|
||||
|
||||
/// <summary> Converts permission value into visible state.</summary>
|
||||
/// <param name="value">Permission value from view model used to derive whether object is visible or not.</param>
|
||||
/// <returns>Boolean value indicating whether object is visible or not.</returns>
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return ((Permissions)value).HasFlag(VisibleFlag);
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return Permissions.None;
|
||||
}
|
||||
}
|
||||
}
|
75
Set-GMapsApiKey.ps1
Normal file
|
@ -0,0 +1,75 @@
|
|||
[cmdletbinding()]
|
||||
|
||||
Param(
|
||||
[string]$appName,
|
||||
[string]$droidApiKey,
|
||||
[string]$iOsApiKey)
|
||||
|
||||
# Sets a text to a given value.
|
||||
function Update-Text()
|
||||
{
|
||||
param (
|
||||
[string]$TargetFileName,
|
||||
[String] $FindText,
|
||||
[String] $ReplaceText
|
||||
)
|
||||
|
||||
if (-not(Test-Path -Path $TargetFileName)) {
|
||||
Write-Host "File to update `"" + $TargetFileName + "`" not found!"
|
||||
return 1
|
||||
}
|
||||
|
||||
((Get-Content -path $TargetFileName -Raw) -replace $FindText, $ReplaceText) | Set-Content -Path $TargetFileName -Encoding utf8 -NoNewline
|
||||
return 0
|
||||
}
|
||||
|
||||
# Sets google maps api keys in all files for a single app to a given value.
|
||||
function Set-GMapsApiKey()
|
||||
{
|
||||
param(
|
||||
[String] $ProjectName,
|
||||
[String] $DroidApiKey,
|
||||
[String] $iOsApiKey
|
||||
)
|
||||
|
||||
if ($DroidApiKey.Length -le 2)
|
||||
{
|
||||
Write-Host "Droid api key must not be of lenght <= 2"
|
||||
return -1
|
||||
}
|
||||
|
||||
if ($iOsApiKey.Length -le 2)
|
||||
{
|
||||
Write-Host "iOs api key must not be of lenght <= 2"
|
||||
return -1
|
||||
}
|
||||
|
||||
$fileName = Convert-Path ('.\' + $ProjectName + '\TINK.Android\Properties\AndroidManifest.xml')
|
||||
$retVal = Update-Text $fileName "API_KEY`" android:value=`".*`"" "API_KEY`" android:value=`"$DroidApiKey`""
|
||||
if ($retVal -ne 0)
|
||||
{
|
||||
return $retVal
|
||||
}
|
||||
Write-Host "File `"$fileName`" updated sucessfully (.."$DroidApiKey.Substring($DroidApiKey.Length - 2, 2)")."
|
||||
|
||||
$fileName = Convert-Path ('.\' + $ProjectName + '\TINK.Android\Properties\AssemblyInfo.cs')
|
||||
$retVal = Update-Text $fileName "API_KEY`", Value = `".*`"" "API_KEY`", Value = `"$DroidApiKey`""
|
||||
if ($retVal -ne 0)
|
||||
{
|
||||
return $retVal
|
||||
}
|
||||
Write-Host "File `"$fileName`" updated sucessfully (.."$DroidApiKey.Substring($DroidApiKey.Length - 2, 2)")."
|
||||
|
||||
$fileName = Convert-Path ('.\' + $ProjectName + '\TINK.iOS\AppDelegate.cs')
|
||||
$retVal = Update-Text $fileName "FormsGoogleMaps\.Init\(.*\)" "FormsGoogleMaps.Init(`"$iOsApiKey`")"
|
||||
if ($retVal -ne 0)
|
||||
{
|
||||
return $retVal
|
||||
}
|
||||
Write-Host "File `"$fileName`" updated sucessfully (.."$iOsApiKey.Substring($iOsApiKey.Length - 2, 2)")."
|
||||
return 0
|
||||
}
|
||||
|
||||
return Set-GMapsApiKey $appName $droidApiKey $iOsApiKey
|
||||
|
||||
|
46
Set-MerchantId.ps1
Normal file
|
@ -0,0 +1,46 @@
|
|||
[cmdletbinding()]
|
||||
|
||||
Param($appName, $merchantId)
|
||||
|
||||
# Sets a text to a given value.
|
||||
function Update-Text()
|
||||
{
|
||||
param(
|
||||
[String] $TargetFileName,
|
||||
[String] $FindText,
|
||||
[String] $ReplaceText)
|
||||
|
||||
if (-not(Test-Path -Path $TargetFileName)) {
|
||||
Write-Host "File " + $TargetFileName + " not found!"
|
||||
return -1
|
||||
}
|
||||
|
||||
((Get-Content -path $TargetFileName -Raw) -replace $FindText, $ReplaceText) | Set-Content -Path $TargetFileName -Encoding utf8 -NoNewline
|
||||
return 0
|
||||
}
|
||||
|
||||
# Sets merchant-id for a single app to a given value.
|
||||
function Set-MerchantId()
|
||||
{
|
||||
param(
|
||||
[String] $ProjectName,
|
||||
[String] $MerchantId)
|
||||
|
||||
if ($MerchantId.Length -le 2)
|
||||
{
|
||||
Write-Host "Merchant id api key must not be of lenght <= 2"
|
||||
return -1
|
||||
}
|
||||
$fileName = Convert-Path ('.\' + $ProjectName + '\TINK\App.xaml.cs')
|
||||
|
||||
$retVal = Update-Text $fileName "const string MERCHANTID = `".*`"" "const string MERCHANTID = `"$MerchantId`""
|
||||
if ($retVal -ne 0)
|
||||
{
|
||||
return $retVal
|
||||
}
|
||||
Write-Host "File `"$fileName`" updated sucessfully (.."$MerchantId.Substring($MerchantId.Length - 2, 2)")."
|
||||
return 0
|
||||
}
|
||||
|
||||
return Set-MerchantId $appName $merchantId
|
||||
|
538
TINK/ShareeBike.sln
Normal file
|
@ -0,0 +1,538 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.32014.148
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "TINK", "TINK\TINK.shproj", "{5297504F-603F-4E1A-98AA-57C4A0D9D833}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TINK.iOS", "TINK.iOS\TINK.iOS.csproj", "{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TINKLib", "..\TINKLib\TINKLib.csproj", "{B77F4222-0860-4494-A07C-EE8E09FA9983}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestTINKLib", "..\TestTINKLib\TestTINKLib.csproj", "{730A31A5-6736-43CC-8F84-8FDA5093E283}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockItShared", "..\LockItShared\LockItShared.csproj", "{3589ED1D-E734-429D-976F-1BEA4371DF14}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockItBLE", "..\LockItBLE\LockItBLE.csproj", "{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestLockItShared", "..\TestLockItShared\TestLockItShared.csproj", "{7E25F58E-62E3-48D7-8115-E33DA67C511E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestShareeLib", "..\TestShareeLib\TestShareeLib.csproj", "{38F340AD-EC12-4BB2-8633-AC5B55C32B77}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestLockItBLE", "..\TestLockItBLE\TestLockItBLE.csproj", "{2581E9AD-4F56-431A-AB87-1B6D80D546AA}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestFramework", "..\TestFramework\TestFramework.csproj", "{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestSharee", "..\TestSharee\TestSharee.csproj", "{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||
TINK\TINK.projitems*{5297504f-603f-4e1a-98aa-57c4a0d9d833}*SharedItemsImports = 13
|
||||
TINK\TINK.projitems*{f2d8208f-a8bf-4403-b0ae-2a1d270e4dc9}*SharedItemsImports = 4
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
Ad-Hoc|ARM = Ad-Hoc|ARM
|
||||
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
||||
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
||||
Ad-Hoc|x64 = Ad-Hoc|x64
|
||||
Ad-Hoc|x86 = Ad-Hoc|x86
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
AppStore|ARM = AppStore|ARM
|
||||
AppStore|iPhone = AppStore|iPhone
|
||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||
AppStore|x64 = AppStore|x64
|
||||
AppStore|x86 = AppStore|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.AppStore|ARM.ActiveCfg = AppStore|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.AppStore|x64.ActiveCfg = AppStore|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.AppStore|x86.ActiveCfg = AppStore|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Debug|Any CPU.ActiveCfg = Debug|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Debug|ARM.ActiveCfg = Debug|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Debug|iPhone.Build.0 = Debug|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Debug|iPhone.Deploy.0 = Debug|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Debug|x64.ActiveCfg = Debug|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Debug|x86.ActiveCfg = Debug|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Release|Any CPU.ActiveCfg = Release|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Release|ARM.ActiveCfg = Release|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Release|iPhone.ActiveCfg = Release|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Release|iPhone.Build.0 = Release|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Release|x64.ActiveCfg = Release|iPhone
|
||||
{F2D8208F-A8BF-4403-B0AE-2A1D270E4DC9}.Release|x86.ActiveCfg = Release|iPhone
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x64.Build.0 = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{B77F4222-0860-4494-A07C-EE8E09FA9983}.Release|x86.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x64.Build.0 = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{730A31A5-6736-43CC-8F84-8FDA5093E283}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x64.Build.0 = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3589ED1D-E734-429D-976F-1BEA4371DF14}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x64.Build.0 = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BDE9CE26-15CF-47DA-A4F6-B6956D02D0FC}.Release|x86.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{7E25F58E-62E3-48D7-8115-E33DA67C511E}.Release|x86.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x64.Build.0 = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{38F340AD-EC12-4BB2-8633-AC5B55C32B77}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2581E9AD-4F56-431A-AB87-1B6D80D546AA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {C6529CD7-C3F7-4E80-89B5-002E2B8E3EB5}
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
Policies = $0
|
||||
$0.DotNetNamingPolicy = $1
|
||||
$1.DirectoryNamespaceAssociation = PrefixedHierarchical
|
||||
version = 3.0
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.hauffware.sharee" android:versionName="3.0.299" android:versionCode="299">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.hauffware.sharee" android:versionName="3.0.312" android:versionCode="312">
|
||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
|
||||
<!-- Google Maps related permissions -->
|
||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
||||
|
|
45
TINK/TINK.Android/Resources/Resource.Designer.cs
generated
|
@ -14,7 +14,7 @@ namespace TINK.Droid
|
|||
{
|
||||
|
||||
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.2.4.160")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.3.0.26")]
|
||||
public partial class Resource
|
||||
{
|
||||
|
||||
|
@ -26708,6 +26708,9 @@ namespace TINK.Droid
|
|||
// aapt resource value: 0x7F0D001F
|
||||
public const int bottomsheet_action_expand_halfway = 2131558431;
|
||||
|
||||
// aapt resource value: 0x7F0D001F
|
||||
public const int bottomsheet_action_expand_halfway = 2131558431;
|
||||
|
||||
// aapt resource value: 0x7F0D001E
|
||||
public const int bottom_sheet_behavior = 2131558430;
|
||||
|
||||
|
@ -26828,8 +26831,8 @@ namespace TINK.Droid
|
|||
// aapt resource value: 0x7F0D0046
|
||||
public const int google_storage_bucket = 2131558470;
|
||||
|
||||
// aapt resource value: 0x7F0E003E
|
||||
public const int fab_transformation_scrim_behavior = 2131623998;
|
||||
// aapt resource value: 0x7F0D0001
|
||||
public const int Hello = 2131558401;
|
||||
|
||||
// aapt resource value: 0x7F0D0047
|
||||
public const int hide_bottom_view_on_scroll_behavior = 2131558471;
|
||||
|
@ -27510,32 +27513,32 @@ namespace TINK.Droid
|
|||
// aapt resource value: 0x7F0E0081
|
||||
public const int Base_V14_ThemeOverlay_MaterialComponents_MaterialAlertDialog = 2131624065;
|
||||
|
||||
// aapt resource value: 0x7F0F0081
|
||||
public const int Base_V14_ThemeOverlay_MaterialComponents_MaterialAlertDialog = 2131689601;
|
||||
// aapt resource value: 0x7F0E0075
|
||||
public const int Base_V14_Theme_MaterialComponents = 2131624053;
|
||||
|
||||
// aapt resource value: 0x7F0F0075
|
||||
public const int Base_V14_Theme_MaterialComponents = 2131689589;
|
||||
// aapt resource value: 0x7F0E0076
|
||||
public const int Base_V14_Theme_MaterialComponents_Bridge = 2131624054;
|
||||
|
||||
// aapt resource value: 0x7F0F0076
|
||||
public const int Base_V14_Theme_MaterialComponents_Bridge = 2131689590;
|
||||
// aapt resource value: 0x7F0E0077
|
||||
public const int Base_V14_Theme_MaterialComponents_Dialog = 2131624055;
|
||||
|
||||
// aapt resource value: 0x7F0F0077
|
||||
public const int Base_V14_Theme_MaterialComponents_Dialog = 2131689591;
|
||||
// aapt resource value: 0x7F0E0078
|
||||
public const int Base_V14_Theme_MaterialComponents_Dialog_Bridge = 2131624056;
|
||||
|
||||
// aapt resource value: 0x7F0F0078
|
||||
public const int Base_V14_Theme_MaterialComponents_Dialog_Bridge = 2131689592;
|
||||
// aapt resource value: 0x7F0E0079
|
||||
public const int Base_V14_Theme_MaterialComponents_Light = 2131624057;
|
||||
|
||||
// aapt resource value: 0x7F0F0079
|
||||
public const int Base_V14_Theme_MaterialComponents_Light = 2131689593;
|
||||
// aapt resource value: 0x7F0E007A
|
||||
public const int Base_V14_Theme_MaterialComponents_Light_Bridge = 2131624058;
|
||||
|
||||
// aapt resource value: 0x7F0F007A
|
||||
public const int Base_V14_Theme_MaterialComponents_Light_Bridge = 2131689594;
|
||||
// aapt resource value: 0x7F0E007B
|
||||
public const int Base_V14_Theme_MaterialComponents_Light_DarkActionBar_Bridge = 2131624059;
|
||||
|
||||
// aapt resource value: 0x7F0F007B
|
||||
public const int Base_V14_Theme_MaterialComponents_Light_DarkActionBar_Bridge = 2131689595;
|
||||
// aapt resource value: 0x7F0E007C
|
||||
public const int Base_V14_Theme_MaterialComponents_Light_Dialog = 2131624060;
|
||||
|
||||
// aapt resource value: 0x7F0F007C
|
||||
public const int Base_V14_Theme_MaterialComponents_Light_Dialog = 2131689596;
|
||||
// aapt resource value: 0x7F0E007D
|
||||
public const int Base_V14_Theme_MaterialComponents_Light_Dialog_Bridge = 2131624061;
|
||||
|
||||
// aapt resource value: 0x7F0E008A
|
||||
public const int Base_V21_ThemeOverlay_AppCompat_Dialog = 2131624074;
|
||||
|
|
|
@ -45,6 +45,9 @@
|
|||
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
|
||||
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
|
||||
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
||||
<AndroidPackageFormat>aab</AndroidPackageFormat>
|
||||
<AndroidUseAapt2>true</AndroidUseAapt2>
|
||||
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
|
@ -62,6 +65,9 @@
|
|||
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
|
||||
<MandroidI18n />
|
||||
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
||||
<AndroidPackageFormat>aab</AndroidPackageFormat>
|
||||
<AndroidUseAapt2>true</AndroidUseAapt2>
|
||||
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||
|
|
|
@ -32,11 +32,11 @@ namespace TINK.iOS
|
|||
};
|
||||
LoadApplication (new TINK.App ());
|
||||
|
||||
// Required for initialization of Maps, see https://developer.xamarin.com/guides/xamarin-forms/user-interface/map/
|
||||
Xamarin.FormsGoogleMaps.Init("000000000000000000000000000000000000000");
|
||||
// Required for initialization of Maps, see https://developer.xamarin.com/guides/xamarin-forms/user-interface/map/
|
||||
Xamarin.FormsGoogleMaps.Init("000000000000000000000000000000000000000");
|
||||
|
||||
// Required for initialization of binding package, see https://github.com/nuitsjp/Xamarin.Forms.GoogleMaps.Bindings.
|
||||
Xamarin.FormsGoogleMapsBindings.Init();
|
||||
// Required for initialization of binding package, see https://github.com/nuitsjp/Xamarin.Forms.GoogleMaps.Bindings.
|
||||
Xamarin.FormsGoogleMapsBindings.Init();
|
||||
|
||||
return base.FinishedLaunching (app, options);
|
||||
}
|
||||
|
|
|
@ -53,8 +53,8 @@
|
|||
<key>CFBundleDisplayName</key>
|
||||
<string>sharee.bike</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>299</string>
|
||||
<string>312</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>3.0.299</string>
|
||||
<string>3.0.312</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -13,16 +13,19 @@
|
|||
</ContentView.Resources>
|
||||
<StackLayout
|
||||
Padding="10">
|
||||
<!-- Name of the bike -->
|
||||
<Label
|
||||
FontAttributes="Bold"
|
||||
FontSize="Large"
|
||||
HorizontalTextAlignment="Center"
|
||||
Text="{Binding Name}"/>
|
||||
<!-- Id of the bike -->
|
||||
<Label
|
||||
FontAttributes="Bold"
|
||||
HorizontalTextAlignment="Center"
|
||||
IsVisible="{Binding DisplayId, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding DisplayId}"/>
|
||||
<!-- Rental state -->
|
||||
<Label
|
||||
Text="{Binding StateText}"
|
||||
TextColor="{Binding StateColor}"/>
|
||||
|
@ -40,9 +43,12 @@
|
|||
IsVisible="{Binding IsLockitButtonVisible}"
|
||||
IsEnabled="{Binding IsIdle}"
|
||||
Command="{Binding OnLockitButtonClicked}"/>
|
||||
<!-- Rental description (tarif name, options and rental info -->
|
||||
<Grid
|
||||
RowSpacing="0"
|
||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
|
||||
<Grid.RowDefinitions>
|
||||
<!-- start tarif- entries -->
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
|
@ -50,64 +56,149 @@
|
|||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<!-- start rental info -->
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<!-- Operator AGB -->
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<!-- start tarif- entries (should be a CollectionView) -->
|
||||
<Label
|
||||
Text=
|
||||
"{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
||||
Text= "{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="0"
|
||||
FontAttributes="Bold"/>
|
||||
<Label
|
||||
Text=
|
||||
"{Binding TariffDescription.Header}"
|
||||
Text="{Binding TariffDescription.Header}"
|
||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="2"
|
||||
FontAttributes="Bold"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFreeTimePerSession}"
|
||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry1.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry1.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="1"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.FreeTimePerSession}"
|
||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry1.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry1.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFeeEuroPerHour}"
|
||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry2.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry2.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="2"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.FeeEuroPerHour}"
|
||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry2.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry2.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionMaxFeeEuroPerDay}"
|
||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry3.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry3.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="3"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.MaxFeeEuroPerDay}"
|
||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry3.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry3.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionAboEuroPerMonth}"
|
||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
||||
Text= "{Binding TariffDescription.TarifEntry4.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry4.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="4"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.AboEuroPerMonth}"
|
||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
||||
Text="{Binding TariffDescription.TarifEntry4.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry4.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="4"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry5.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry5.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="5"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry5.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry5.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry6.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry6.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="6"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry6.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry6.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="6"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry7.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry7.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="7"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry7.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry7.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="7"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry8.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry8.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="8"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry8.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry8.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="8"
|
||||
Grid.Column="1"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.TarifEntry9.Description}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry9.Description, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="9"/>
|
||||
<Label
|
||||
Text="{Binding TariffDescription.TarifEntry9.Value}"
|
||||
IsVisible="{Binding TariffDescription.TarifEntry9.Value, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="9"
|
||||
Grid.Column="1"/>
|
||||
<!-- start tarif- entries (should be a CollectionView) -->
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry1}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry1, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="10"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry2}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry2, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="11"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry3}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry3, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="12"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry4}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry4, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="13"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<Label
|
||||
Text= "{Binding TariffDescription.InfoEntry5}"
|
||||
IsVisible="{Binding TariffDescription.InfoEntry5, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="14"
|
||||
Grid.ColumnSpan="2"/>
|
||||
<!-- AGB entry -->
|
||||
<Label
|
||||
TextType="Html"
|
||||
Text="{Binding TariffDescription.OperatorAgb}"
|
||||
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
|
||||
Grid.Row="5"
|
||||
Grid.ColumnSpan="3">
|
||||
Grid.ColumnSpan="2"
|
||||
Grid.Row="15">
|
||||
<Label.GestureRecognizers>
|
||||
<TapGestureRecognizer Command="{Binding ShowAgbTappedCommand}"/>
|
||||
</Label.GestureRecognizers>
|
||||
|
|
|
@ -30,7 +30,7 @@ namespace TINK.Model.Bike.BC
|
|||
string description = null,
|
||||
string stationId = null,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null)
|
||||
RentalDescription tariffDescription = null)
|
||||
{
|
||||
Bike = new Bike(id, lockModel, wheelType, typeOfBike, description);
|
||||
|
||||
|
@ -69,7 +69,7 @@ namespace TINK.Model.Bike.BC
|
|||
LockModel lockModel,
|
||||
string stationId,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||
IEnumerable<string> group = null,
|
||||
WheelType? wheelType = null,
|
||||
|
@ -111,7 +111,7 @@ namespace TINK.Model.Bike.BC
|
|||
string description,
|
||||
string stationId,
|
||||
Uri operatorUri,
|
||||
TariffDescription tariffDescription,
|
||||
RentalDescription tariffDescription,
|
||||
DateTime requestedAt,
|
||||
string mailAddress,
|
||||
string code,
|
||||
|
@ -157,7 +157,7 @@ namespace TINK.Model.Bike.BC
|
|||
string description,
|
||||
string currentStationId,
|
||||
Uri operatorUri,
|
||||
TariffDescription tariffDescription,
|
||||
RentalDescription tariffDescription,
|
||||
DateTime bookedAt,
|
||||
string mailAddress,
|
||||
string code) : this(
|
||||
|
@ -190,7 +190,7 @@ namespace TINK.Model.Bike.BC
|
|||
public string StationId { get; }
|
||||
|
||||
/// <summary> Holds description about the tarif. </summary>
|
||||
public TariffDescription TariffDescription { get; }
|
||||
public RentalDescription TariffDescription { get; }
|
||||
|
||||
|
||||
/// Holds the rent state of the bike.
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace TINK.Model.Bike.BC
|
|||
string stationId = null,
|
||||
string stationName = null,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
Func<DateTime> dateTimeProvider = null,
|
||||
IStateInfo stateInfo = null)
|
||||
{
|
||||
|
@ -82,7 +82,7 @@ namespace TINK.Model.Bike.BC
|
|||
|
||||
/// <summary> Holds description about the tarif. </summary>
|
||||
[DataMember]
|
||||
public TariffDescription TariffDescription { get; private set; }
|
||||
public RentalDescription TariffDescription { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Holds the rent state of the bike.
|
||||
|
|
|
@ -48,7 +48,7 @@ namespace TINK.Model.Bike.BC
|
|||
Uri OperatorUri { get; }
|
||||
|
||||
/// <summary> Holds description about the tarif. </summary>
|
||||
TariffDescription TariffDescription { get; }
|
||||
RentalDescription TariffDescription { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Holds the rent state of the bike.
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace TINK.Model.Bike.BluetoothLock
|
|||
Guid lockGuid,
|
||||
string currentStationId,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||
IEnumerable<string> group = null,
|
||||
WheelType? wheelType = null,
|
||||
|
@ -69,7 +69,7 @@ namespace TINK.Model.Bike.BluetoothLock
|
|||
string mailAddress,
|
||||
string currentStationId,
|
||||
Uri operatorUri,
|
||||
TariffDescription tariffDescription,
|
||||
RentalDescription tariffDescription,
|
||||
Func<DateTime> dateTimeProvider,
|
||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||
IEnumerable<string> group = null,
|
||||
|
@ -118,7 +118,7 @@ namespace TINK.Model.Bike.BluetoothLock
|
|||
string mailAddress,
|
||||
string currentStationId,
|
||||
Uri operatorUri,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||
IEnumerable<string> group = null,
|
||||
WheelType? wheelType = null,
|
||||
|
|
|
@ -22,7 +22,7 @@ namespace TINK.Model.Bike.CopriLock
|
|||
string currentStationId,
|
||||
LockInfo lockInfo,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||
IEnumerable<string> group = null,
|
||||
WheelType? wheelType = null,
|
||||
|
@ -62,7 +62,7 @@ namespace TINK.Model.Bike.CopriLock
|
|||
string currentStationId,
|
||||
LockInfo lockInfo,
|
||||
Uri operatorUri,
|
||||
TariffDescription tariffDescription,
|
||||
RentalDescription tariffDescription,
|
||||
Func<DateTime> dateTimeProvider,
|
||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||
IEnumerable<string> group = null,
|
||||
|
@ -105,7 +105,7 @@ namespace TINK.Model.Bike.CopriLock
|
|||
string currentStationId,
|
||||
LockInfo lockInfo,
|
||||
Uri operatorUri,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||
IEnumerable<string> group = null,
|
||||
WheelType? wheelType = null,
|
||||
|
|
47
TINKLib/Model/Bikes/Bike/RentalDescription.cs
Normal file
|
@ -0,0 +1,47 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace TINK.Model.Bikes.Bike
|
||||
{
|
||||
/// <summary>
|
||||
/// Successor of TarifDescription- object.
|
||||
/// Manages tariff- and rental info.
|
||||
/// </summary>
|
||||
public class RentalDescription
|
||||
{
|
||||
/// <summary>
|
||||
/// The different elements of a tariff (example: "Max Gebühr", )
|
||||
/// </summary>
|
||||
public class TariffElement
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes the tariff element. To be displayed to user (example of elements: "Gratis Mietzeit", "Mietgebühr", "Max Gebühr").
|
||||
/// </summary>
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Holds the tariff element value. To be displayed to user (example: "9.00 € / Tag").
|
||||
/// </summary>
|
||||
public string Value { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class InfoElement
|
||||
{
|
||||
public string Key { get; set; }
|
||||
public string Value { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Name of the tariff.
|
||||
/// </summary>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Number of the tariff.
|
||||
/// </summary>
|
||||
public int? Id { get; set; }
|
||||
|
||||
public Dictionary<string, TariffElement> TariffEntries { get; set; } = new Dictionary<string, TariffElement>();
|
||||
|
||||
public Dictionary<string, InfoElement> InfoEntries { get; set; } = new Dictionary<string, InfoElement>();
|
||||
}
|
||||
}
|
|
@ -18,6 +18,7 @@ using Xamarin.Forms;
|
|||
using System.Linq;
|
||||
using TINK.Model.MiniSurvey;
|
||||
using TINK.Services.CopriApi;
|
||||
using TINK.MultilingualResources;
|
||||
|
||||
namespace TINK.Model.Connector
|
||||
{
|
||||
|
@ -347,7 +348,7 @@ namespace TINK.Model.Connector
|
|||
new Bikes.Bike.CopriLock.LockInfo.Builder { State = bikeInfo.GetCopriLockingState()}.Build(),
|
||||
bikeInfo.GetOperatorUri(),
|
||||
#if !NOTARIFFDESCRIPTION
|
||||
Create(bikeInfo.tariff_description),
|
||||
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||
#else
|
||||
Create((TINK.Repository.Response.TariffDescription) null),
|
||||
#endif
|
||||
|
@ -365,7 +366,7 @@ namespace TINK.Model.Connector
|
|||
bikeInfo.station,
|
||||
bikeInfo.GetOperatorUri(),
|
||||
#if !NOTARIFFDESCRIPTION
|
||||
Create(bikeInfo.tariff_description),
|
||||
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||
#else
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
#endif
|
||||
|
@ -438,9 +439,9 @@ namespace TINK.Model.Connector
|
|||
bikeInfo.station,
|
||||
bikeInfo.GetOperatorUri(),
|
||||
#if !NOTARIFFDESCRIPTION
|
||||
Create(bikeInfo.tariff_description),
|
||||
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||
#else
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
#endif
|
||||
dateTimeProvider,
|
||||
bikeInfo.GetIsDemo(),
|
||||
|
@ -458,7 +459,7 @@ namespace TINK.Model.Connector
|
|||
new Bikes.Bike.CopriLock.LockInfo.Builder { State = bikeInfo.GetCopriLockingState() }.Build(),
|
||||
bikeInfo.GetOperatorUri(),
|
||||
#if !NOTARIFFDESCRIPTION
|
||||
Create(bikeInfo.tariff_description),
|
||||
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||
#else
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
#endif
|
||||
|
@ -497,11 +498,11 @@ namespace TINK.Model.Connector
|
|||
bikeInfo.station,
|
||||
bikeInfo.GetOperatorUri(),
|
||||
#if !NOTARIFFDESCRIPTION
|
||||
Create(bikeInfo.tariff_description),
|
||||
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||
#else
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
#endif
|
||||
bikeInfo.GetIsDemo(),
|
||||
bikeInfo.GetIsDemo(),
|
||||
bikeInfo.GetGroup(),
|
||||
bikeInfo.GetWheelType(),
|
||||
bikeInfo.GetTypeOfBike(),
|
||||
|
@ -519,11 +520,11 @@ namespace TINK.Model.Connector
|
|||
bikeInfo.station,
|
||||
bikeInfo.GetOperatorUri(),
|
||||
#if !NOTARIFFDESCRIPTION
|
||||
Create(bikeInfo.tariff_description),
|
||||
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||
#else
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
#endif
|
||||
bikeInfo.GetFrom(),
|
||||
bikeInfo.GetFrom(),
|
||||
mailAddress,
|
||||
bikeInfo.timeCode);
|
||||
default:
|
||||
|
@ -535,9 +536,9 @@ namespace TINK.Model.Connector
|
|||
new Bikes.Bike.CopriLock.LockInfo.Builder { State = bikeInfo.GetCopriLockingState() }.Build(),
|
||||
bikeInfo.GetOperatorUri(),
|
||||
#if !NOTARIFFDESCRIPTION
|
||||
Create(bikeInfo.tariff_description),
|
||||
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||
#else
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
Create((TINK.Repository.Response.TariffDescription)null),
|
||||
#endif
|
||||
bikeInfo.GetIsDemo(),
|
||||
bikeInfo.GetGroup(),
|
||||
|
@ -559,28 +560,130 @@ namespace TINK.Model.Connector
|
|||
}
|
||||
}
|
||||
|
||||
public static Bikes.Bike.TariffDescription Create(this TariffDescription tariffDesciption)
|
||||
/// <summary>
|
||||
/// Creates rental description object from JSON- tarif description object.
|
||||
/// </summary>
|
||||
/// <param name="tariffDesciption">Source JSON object.</param>
|
||||
/// <returns>Tariff description object.</returns>
|
||||
public static Bikes.Bike.RentalDescription Create(this TariffDescription tariffDesciption)
|
||||
{
|
||||
return new Bikes.Bike.TariffDescription
|
||||
var bike = new Bikes.Bike.RentalDescription
|
||||
{
|
||||
Name = tariffDesciption?.name,
|
||||
#if USCSHARP9
|
||||
Number = int.TryParse(tariffDesciption?.number, out int number) ? number : null,
|
||||
#else
|
||||
Number = int.TryParse(tariffDesciption?.number, out int number) ? number : (int?)null,
|
||||
Id = int.TryParse(tariffDesciption?.number, out int number) ? number : (int?)null,
|
||||
#endif
|
||||
FreeTimePerSession = double.TryParse(tariffDesciption?.free_hours, NumberStyles.Any, CultureInfo.InvariantCulture, out double freeHours) ? TimeSpan.FromHours(freeHours) : TimeSpan.Zero,
|
||||
FeeEuroPerHour = double.TryParse(tariffDesciption?.eur_per_hour, NumberStyles.Any, CultureInfo.InvariantCulture, out double euroPerHour) ? euroPerHour : double.NaN,
|
||||
AboEuroPerMonth = double.TryParse(tariffDesciption?.abo_eur_per_month, NumberStyles.Any, CultureInfo.InvariantCulture, out double aboEuroPerMonth) ? aboEuroPerMonth : double.NaN,
|
||||
MaxFeeEuroPerDay = double.TryParse(tariffDesciption?.max_eur_per_day, NumberStyles.Any, CultureInfo.InvariantCulture, out double maxEuroPerDay) ? maxEuroPerDay : double.NaN,
|
||||
OperatorAgb = tariffDesciption?.operator_agb,
|
||||
TrackingInfo = tariffDesciption?.track_info
|
||||
};
|
||||
|
||||
if (!string.IsNullOrEmpty(tariffDesciption?.free_hours)
|
||||
&& double.TryParse(tariffDesciption?.free_hours, NumberStyles.Any, CultureInfo.InvariantCulture, out double freeHours))
|
||||
{
|
||||
// Free time. Unit hours,format floating point number.
|
||||
bike.TariffEntries.Add("1", new Bikes.Bike.RentalDescription.TariffElement {
|
||||
Description = AppResources.MessageBikesManagementTariffDescriptionFreeTimePerSession,
|
||||
Value =string.Format("{0} {1}", freeHours.ToString("0.00"), AppResources.MessageBikesManagementTariffDescriptionHour)
|
||||
});
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(tariffDesciption?.eur_per_hour)
|
||||
&& double.TryParse(tariffDesciption?.eur_per_hour, NumberStyles.Any, CultureInfo.InvariantCulture, out double euroPerHour))
|
||||
{
|
||||
// Euro per hour. Format floating point.
|
||||
bike.TariffEntries.Add("2", new Bikes.Bike.RentalDescription.TariffElement {
|
||||
Description = AppResources.MessageBikesManagementTariffDescriptionFeeEuroPerHour,
|
||||
Value = string.Format("{0} {1}", euroPerHour.ToString("0.00"), AppResources.MessageBikesManagementTariffDescriptionEuroPerHour)
|
||||
});
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(tariffDesciption?.max_eur_per_day)
|
||||
&& double.TryParse(tariffDesciption.max_eur_per_day, NumberStyles.Any, CultureInfo.InvariantCulture, out double maxEuroPerDay))
|
||||
{
|
||||
// Max euro per day. Format floating point.
|
||||
bike.TariffEntries.Add("3", new Bikes.Bike.RentalDescription.TariffElement {
|
||||
Description = AppResources.MessageBikesManagementTariffDescriptionMaxFeeEuroPerDay,
|
||||
Value = string.Format("{0} {1}", maxEuroPerDay.ToString("0.00"), AppResources.MessageBikesManagementMaxFeeEuroPerDay)
|
||||
});
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(tariffDesciption?.abo_eur_per_month)
|
||||
&& double.TryParse(tariffDesciption.abo_eur_per_month, NumberStyles.Any, CultureInfo.InvariantCulture, out double aboEuroPerMonth))
|
||||
{
|
||||
// Abo per month
|
||||
bike.TariffEntries.Add("4", new Bikes.Bike.RentalDescription.TariffElement {
|
||||
Description = AppResources.MessageBikesManagementTariffDescriptionAboEuroPerMonth,
|
||||
Value = string.Format("{0} {1}", aboEuroPerMonth.ToString("0.00"), AppResources.MessageBikesManagementTariffDescriptionEuroPerMonth)
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(tariffDesciption?.operator_agb ?? string.Empty))
|
||||
{
|
||||
bike.InfoEntries.Add("1", new Bikes.Bike.RentalDescription.InfoElement { Key = "AGB", Value = tariffDesciption.operator_agb });
|
||||
}
|
||||
|
||||
return bike;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates rental description object from JSON- tarif description object.
|
||||
/// </summary>
|
||||
/// <param name="rentalDesciption">Source JSON object.</param>
|
||||
/// <returns>Tariff description object.</returns>
|
||||
|
||||
public static Bikes.Bike.RentalDescription Create(this RentalDescription rentalDesciption)
|
||||
{
|
||||
Bikes.Bike.RentalDescription.TariffElement CreateTarifEntry(string[] elementValue)
|
||||
{
|
||||
return new Bikes.Bike.RentalDescription.TariffElement
|
||||
{
|
||||
Description = elementValue != null && elementValue.Length > 0 ? elementValue[0] : string.Empty,
|
||||
Value = elementValue != null && elementValue.Length > 1 ? elementValue[1] : string.Empty,
|
||||
};
|
||||
}
|
||||
|
||||
Bikes.Bike.RentalDescription.InfoElement CreateInfoElement(string[] elementValue)
|
||||
{
|
||||
return new Bikes.Bike.RentalDescription.InfoElement
|
||||
{
|
||||
Key = elementValue != null && elementValue.Length > 0 ? elementValue[0] : string.Empty,
|
||||
Value = elementValue != null && elementValue.Length > 1 ? elementValue[1] : string.Empty,
|
||||
};
|
||||
}
|
||||
|
||||
// Read tariff elements.
|
||||
var tarifEntries = rentalDesciption?.tarif_elements != null
|
||||
? rentalDesciption.tarif_elements.Select(x => new
|
||||
{
|
||||
Key = x.Key,
|
||||
Value = CreateTarifEntry(x.Value)
|
||||
}).ToLookup(x => x.Key, x => x.Value).ToDictionary(x => x.Key, x => x.First())
|
||||
: new Dictionary<string, Bikes.Bike.RentalDescription.TariffElement>();
|
||||
|
||||
// Read info elements.
|
||||
var InfoEntries = rentalDesciption?.rental_info != null
|
||||
? rentalDesciption.rental_info.Select(x => new
|
||||
{
|
||||
Key = x.Key,
|
||||
Value = CreateInfoElement(x.Value)
|
||||
}).ToLookup(x => x.Key, x => x.Value).ToDictionary(x => x.Key, x => x.First())
|
||||
: new Dictionary<string, Bikes.Bike.RentalDescription.InfoElement>();
|
||||
|
||||
var bike = new Bikes.Bike.RentalDescription
|
||||
{
|
||||
Name = rentalDesciption?.name ?? string.Empty,
|
||||
Id = int.TryParse(rentalDesciption?.id ?? string.Empty, out int number) ? number : (int?)null,
|
||||
TariffEntries = tarifEntries,
|
||||
InfoEntries = InfoEntries
|
||||
};
|
||||
|
||||
return bike;
|
||||
}
|
||||
|
||||
/// <summary> Creates a booking finished object from response.</summary>
|
||||
/// <param name="response">Response to create survey object from.</param>
|
||||
public static BookingFinishedModel Create(this DoReturnResponse response)
|
||||
public static BookingFinishedModel Create(this DoReturnResponse response)
|
||||
{
|
||||
var bookingFinished = new BookingFinishedModel
|
||||
{
|
||||
|
|
|
@ -526,7 +526,19 @@ namespace TINK.Model
|
|||
{
|
||||
new Version(3, 0, 299),
|
||||
AppResources.ChangeLog3_0_299
|
||||
}
|
||||
},
|
||||
{
|
||||
new Version(3, 0, 300),
|
||||
AppResources.ChangeLog3_0_231 // Minor improvements.
|
||||
},
|
||||
{
|
||||
new Version(3, 0, 311),
|
||||
AppResources.ChangeLog3_0_301
|
||||
},
|
||||
{
|
||||
new Version(3, 0, 312),
|
||||
AppResources.ChangeLog3_0_312
|
||||
},
|
||||
};
|
||||
|
||||
/// <summary> Manges the whats new information.</summary>
|
||||
|
|
|
@ -151,7 +151,7 @@ namespace TINK.MultilingualResources {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Open lock & continue renting.
|
||||
/// Looks up a localized string similar to Open lock.
|
||||
/// </summary>
|
||||
public static string ActionOpenAndPause {
|
||||
get {
|
||||
|
@ -1063,6 +1063,28 @@ namespace TINK.MultilingualResources {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Extended tariffs supported..
|
||||
/// </summary>
|
||||
public static string ChangeLog3_0_301 {
|
||||
get {
|
||||
return ResourceManager.GetString("ChangeLog3_0_301", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to For Lastenrad Bayern users
|
||||
///- missing titles added to several pages
|
||||
///- new station markers availabe
|
||||
///- layout of Wort-Bild-Marke amended
|
||||
///.
|
||||
/// </summary>
|
||||
public static string ChangeLog3_0_312 {
|
||||
get {
|
||||
return ResourceManager.GetString("ChangeLog3_0_312", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Lock of rented bike cannot be be connected right now..
|
||||
/// </summary>
|
||||
|
@ -1587,7 +1609,7 @@ namespace TINK.MultilingualResources {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Please open a bike station page to to contact the bike sharing operator..
|
||||
/// Looks up a localized string similar to Contact operator?.
|
||||
/// </summary>
|
||||
public static string MarkingContactNoStationInfoAvailableNoButton {
|
||||
get {
|
||||
|
@ -1993,6 +2015,15 @@ namespace TINK.MultilingualResources {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to €/month.
|
||||
/// </summary>
|
||||
public static string MessageBikesManagementTariffDescriptionEuroPerMonth {
|
||||
get {
|
||||
return ResourceManager.GetString("MessageBikesManagementTariffDescriptionEuroPerMonth", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Rental fees.
|
||||
/// </summary>
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<value>Schloss öffnen & Rad mieten</value>
|
||||
</data>
|
||||
<data name="ActionOpenAndPause" xml:space="preserve">
|
||||
<value>Schloss öffnen & Miete fortsetzen</value>
|
||||
<value>Schloss öffnen</value>
|
||||
</data>
|
||||
<data name="ActionRequest" xml:space="preserve">
|
||||
<value>Rad reservieren</value>
|
||||
|
@ -612,7 +612,7 @@ Layout Anzeige Radnamen und nummern verbessert.</value>
|
|||
<value>Bitte Anmelden um Fahrräder zu reservieren! <font color="blue"><u>Hier</u></font> tippen, um auf Anmeldeseite zu wechseln.</value>
|
||||
</data>
|
||||
<data name="MarkingContactNoStationInfoAvailableNoButton" xml:space="preserve">
|
||||
<value>Bitte eine Fahrradstationsseite öffen, um den Betreiber zu kontaktieren.</value>
|
||||
<value>Betreiber kontaktieren?</value>
|
||||
</data>
|
||||
<data name="ChangeLog3_0_241" xml:space="preserve">
|
||||
<value>Auf der Kontaktseite werden Kontaktinformationen betreiberspezifisch angezeigt.</value>
|
||||
|
@ -901,6 +901,16 @@ Kleinere Fehlerbehebungen.
|
|||
<value>Neue Wort-Bild-Marke in das Menü der Lastenrad Bayern App integriert.</value>
|
||||
</data>
|
||||
<data name="ChangeLog3_0_299" xml:space="preserve">
|
||||
<value>Fehlerbehebung: Bluetooth-Schlossanstereuerung funktioniert wieder unter Android 12.</value>
|
||||
<value>Fehlerbehebung: Bluetooth-Schlossansteuerung funktioniert wieder unter Android 12.</value>
|
||||
</data>
|
||||
<data name="ChangeLog3_0_301" xml:space="preserve">
|
||||
<value>Unterstützung erweiterte Tarife.</value>
|
||||
</data>
|
||||
<data name="ChangeLog3_0_312" xml:space="preserve">
|
||||
<value>Für Lastenrad Bayern
|
||||
- fehlende Titeltexte werden angezeigt
|
||||
- neue Stationsmarker verfügbar
|
||||
- layout der Wort-Bild-Marke verbessert
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
|
@ -136,7 +136,7 @@
|
|||
<value>Open lock & rent bike</value>
|
||||
</data>
|
||||
<data name="ActionOpenAndPause" xml:space="preserve">
|
||||
<value>Open lock & continue renting</value>
|
||||
<value>Open lock</value>
|
||||
</data>
|
||||
<data name="ActionRequest" xml:space="preserve">
|
||||
<value>Reserve bike</value>
|
||||
|
@ -708,7 +708,7 @@ Layout of bike names and id display improved.</value>
|
|||
<value>Find bike by id functionality added.</value>
|
||||
</data>
|
||||
<data name="MarkingContactNoStationInfoAvailableNoButton" xml:space="preserve">
|
||||
<value>Please open a bike station page to to contact the bike sharing operator.</value>
|
||||
<value>Contact operator?</value>
|
||||
</data>
|
||||
<data name="MarkingContactSupport" xml:space="preserve">
|
||||
<value><font color="blue"><u>Contact</u></font> {0}.</value>
|
||||
|
@ -995,4 +995,17 @@ Minor bugfixes.</value>
|
|||
<data name="ChangeLog3_0_299" xml:space="preserve">
|
||||
<value>Bugfix: Bluetooth lock control works again on Android 12.</value>
|
||||
</data>
|
||||
<data name="ChangeLog3_0_301" xml:space="preserve">
|
||||
<value>Extended tariffs supported.</value>
|
||||
</data>
|
||||
<data name="MessageBikesManagementTariffDescriptionEuroPerMonth" xml:space="preserve">
|
||||
<value>€/month</value>
|
||||
</data>
|
||||
<data name="ChangeLog3_0_312" xml:space="preserve">
|
||||
<value>For Lastenrad Bayern users
|
||||
- missing titles added to several pages
|
||||
- new station markers availabe
|
||||
- layout of Wort-Bild-Marke amended
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
|
@ -31,8 +31,8 @@
|
|||
<target state="final">Schloss öffnen & Rad mieten</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ActionOpenAndPause" translate="yes" xml:space="preserve">
|
||||
<source>Open lock & continue renting</source>
|
||||
<target state="final">Schloss öffnen & Miete fortsetzen</target>
|
||||
<source>Open lock</source>
|
||||
<target state="final">Schloss öffnen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ActionRequest" translate="yes" xml:space="preserve">
|
||||
<source>Reserve bike</source>
|
||||
|
@ -818,8 +818,8 @@ Layout Anzeige Radnamen und nummern verbessert.</target>
|
|||
<target state="translated">Bitte Anmelden um Fahrräder zu reservieren! <bpt id="1"><font color="blue"></bpt><bpt id="2"><u></bpt>Hier<ept id="2"></u></ept><ept id="1"></font></ept> tippen, um auf Anmeldeseite zu wechseln.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="MarkingContactNoStationInfoAvailableNoButton" translate="yes" xml:space="preserve">
|
||||
<source>Please open a bike station page to to contact the bike sharing operator.</source>
|
||||
<target state="translated">Bitte eine Fahrradstationsseite öffen, um den Betreiber zu kontaktieren.</target>
|
||||
<source>Contact operator?</source>
|
||||
<target state="translated">Betreiber kontaktieren?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ChangeLog3_0_241" translate="yes" xml:space="preserve">
|
||||
<source>Bike sharing system operator specific support info displayed on contact page.</source>
|
||||
|
@ -1227,7 +1227,27 @@ Kleinere Fehlerbehebungen.
|
|||
</trans-unit>
|
||||
<trans-unit id="ChangeLog3_0_299" translate="yes" xml:space="preserve">
|
||||
<source>Bugfix: Bluetooth lock control works again on Android 12.</source>
|
||||
<target state="translated">Fehlerbehebung: Bluetooth-Schlossanstereuerung funktioniert wieder unter Android 12.</target>
|
||||
<target state="translated">Fehlerbehebung: Bluetooth-Schlossansteuerung funktioniert wieder unter Android 12.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ChangeLog3_0_301" translate="yes" xml:space="preserve">
|
||||
<source>Extended tariffs supported.</source>
|
||||
<target state="translated">Unterstützung erweiterte Tarife.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="MessageBikesManagementTariffDescriptionEuroPerMonth" translate="yes" xml:space="preserve">
|
||||
<source>€/month</source>
|
||||
<target state="new">€/month</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ChangeLog3_0_312" translate="yes" xml:space="preserve">
|
||||
<source>For Lastenrad Bayern users
|
||||
- missing titles added to several pages
|
||||
- new station markers availabe
|
||||
- layout of Wort-Bild-Marke amended
|
||||
</source>
|
||||
<target state="translated">Für Lastenrad Bayern
|
||||
- fehlende Titeltexte werden angezeigt
|
||||
- neue Stationsmarker verfügbar
|
||||
- layout der Wort-Bild-Marke verbessert
|
||||
</target>
|
||||
</trans-unit>
|
||||
</group>
|
||||
</body>
|
||||
|
|
|
@ -60,8 +60,13 @@ namespace TINK.Repository.Response
|
|||
|
||||
#if !NOTARIFFDESCRIPTION
|
||||
/// <summary> Holds the tariff information for a bike. </summary>
|
||||
/// <remarks> This member is obsolete. Use <cref="rental_description"> instead.</cref></remarks>
|
||||
[DataMember]
|
||||
public TariffDescription tariff_description { get; private set; }
|
||||
|
||||
/// <summary> Holds the rental information for a bike. </summary>
|
||||
[DataMember]
|
||||
public RentalDescription rental_description { get; private set; }
|
||||
#endif
|
||||
/// <summary> Loading state of motor battery in % ]0..100[. </summary>
|
||||
[DataMember]
|
||||
|
|
39
TINKLib/Repository/Response/RentalDescription.cs
Normal file
|
@ -0,0 +1,39 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace TINK.Repository.Response
|
||||
{
|
||||
/// <summary>
|
||||
/// Successor of TarifDescription- object.
|
||||
/// Manages tariff- and rental info.
|
||||
/// </summary>
|
||||
[DataContract]
|
||||
public class RentalDescription
|
||||
{
|
||||
/// <summary>
|
||||
/// Name of the tariff.
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public string name { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id of the tariff.
|
||||
/// </summary>
|
||||
[DataMember]
|
||||
public string id { get; private set; }
|
||||
|
||||
/// <summary> Holds tariff entires to show to user.</summary>
|
||||
[DataMember]
|
||||
public Dictionary<
|
||||
string /* Key of tariff object for sorting purposes*/,
|
||||
string[] /* Holds two Elements: first element is the description of the element (example: "Max Gebühr"), second is the value (example: "9.00 € / Tag")*/>
|
||||
tarif_elements { get; private set; }
|
||||
|
||||
/// <summary> Holds tariff entires to show to user.</summary>
|
||||
[DataMember]
|
||||
public Dictionary<
|
||||
string /* Key of info object for sorting purposes*/,
|
||||
string[] /* Holds two Elements: first element is the key of the element (example: "Tracking"), second is the value (example: "Ich stimme der Speicherung (Tracking) meiner Fahrstrecke ....")*/>
|
||||
rental_info { get; private set; }
|
||||
}
|
||||
}
|
|
@ -349,7 +349,6 @@ namespace TINK.ViewModel.Account
|
|||
|
||||
|
||||
m_oViewUpdateManager = new PollingUpdateTaskManager(
|
||||
() => GetType().Name,
|
||||
() =>
|
||||
{
|
||||
TinkApp.PostAction(
|
||||
|
|
|
@ -14,7 +14,6 @@ using TINK.MultilingualResources;
|
|||
using TINK.View;
|
||||
using TINK.Model.User;
|
||||
using TINK.Model.Device;
|
||||
using TINK.Model.User.Account;
|
||||
|
||||
namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||
{
|
||||
|
|
|
@ -1,684 +0,0 @@
|
|||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.Model.Connector;
|
||||
using TINK.Model.Bike.BluetoothLock;
|
||||
using TINK.Model.State;
|
||||
using TINK.View;
|
||||
using TINK.Services.Geolocation;
|
||||
using TINK.Services.BluetoothLock;
|
||||
using Serilog;
|
||||
using TINK.Repository.Exception;
|
||||
using TINK.Services.BluetoothLock.Exception;
|
||||
using Xamarin.Essentials;
|
||||
using TINK.MultilingualResources;
|
||||
using TINK.Model.Bikes.Bike.BluetoothLock;
|
||||
using TINK.Model.User;
|
||||
using TINK.Repository.Request;
|
||||
using TINK.Model.Device;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using TINK.Model;
|
||||
|
||||
namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||
{
|
||||
public class BookedOpen : Base, IRequestHandler
|
||||
{
|
||||
/// <param name="bikesViewModel">View model to be used for progress report and unlocking/ locking view.</param>
|
||||
public BookedOpen(
|
||||
IBikeInfoMutable selectedBike,
|
||||
Func<bool> isConnectedDelegate,
|
||||
Func<bool, IConnector> connectorFactory,
|
||||
IGeolocation geolocation,
|
||||
ILocksService lockService,
|
||||
Func<IPollingUpdateTaskManager> viewUpdateManager,
|
||||
ISmartDevice smartDevice,
|
||||
IViewService viewService,
|
||||
IBikesViewModel bikesViewModel,
|
||||
IUser activeUser) : base(
|
||||
selectedBike,
|
||||
AppResources.ActionCloseAndReturn, // Copri button text: "Schloss schließen & Miete beenden"
|
||||
true, // Show button to allow user to return bike.
|
||||
isConnectedDelegate,
|
||||
connectorFactory,
|
||||
geolocation,
|
||||
lockService,
|
||||
viewUpdateManager,
|
||||
smartDevice,
|
||||
viewService,
|
||||
bikesViewModel,
|
||||
activeUser)
|
||||
{
|
||||
LockitButtonText = AppResources.ActionClose; // BT button text "Schließen".
|
||||
IsLockitButtonVisible = true; // Show button to allow user to lock bike.
|
||||
}
|
||||
|
||||
/// <summary> Gets the bike state. </summary>
|
||||
public override InUseStateEnum State => InUseStateEnum.Disposable;
|
||||
|
||||
/// <summary> Close lock and return bike.</summary>
|
||||
public async Task<IRequestHandler> HandleRequestOption1() => await CloseLockAndReturnBike();
|
||||
|
||||
/// <summary> Close lock in order to pause ride and update COPRI lock state.</summary>
|
||||
public async Task<IRequestHandler> HandleRequestOption2() => await CloseLock();
|
||||
|
||||
/// <summary> Close lock and return bike.</summary>
|
||||
public async Task<IRequestHandler> CloseLockAndReturnBike()
|
||||
{
|
||||
// Prevent concurrent interaction
|
||||
BikesViewModel.IsIdle = false;
|
||||
|
||||
// Start getting geolocation.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationStart;
|
||||
var ctsLocation = new CancellationTokenSource();
|
||||
Task<Location> currentLocationTask = null;
|
||||
var timeStamp = DateTime.Now;
|
||||
try
|
||||
{
|
||||
currentLocationTask = Geolocation.GetAsync(ctsLocation.Token, timeStamp);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedOpen>().Information("Returning bike {Bike} is not possible. Start query location failed. {Exception}", SelectedBike, ex);
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.MessageErrorQueryLocationStartTitle,
|
||||
$"{AppResources.MessageErrorQueryLocationMessage}\r\n{ex.Message}",
|
||||
AppResources.MessageAnswerOk);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically(); // Restart polling again.
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true; // Unlock GUI
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
// Ask whether to really return bike?
|
||||
var l_oResult = await ViewService.DisplayAlert(
|
||||
string.Empty,
|
||||
string.Format(AppResources.QuestionCloseLockAndReturnBike, SelectedBike.GetFullDisplayName()),
|
||||
AppResources.MessageAnswerYes,
|
||||
AppResources.MessageAnswerNo);
|
||||
|
||||
if (l_oResult == false)
|
||||
{
|
||||
// User aborted closing and returning bike process
|
||||
Log.ForContext<BookedOpen>().Information("User selected booked bike {l_oId} in order to close and return but action was canceled.", SelectedBike.Id);
|
||||
|
||||
// Cancel getting geolocation.
|
||||
ctsLocation.Cancel();
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedOpen>().Information("Canceling query location failed on abort returning opened bike failed. {Exception}", SelectedBike, ex);
|
||||
}
|
||||
|
||||
BikesViewModel.IsIdle = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
// Unlock bike.
|
||||
Log.ForContext<BookedOpen>().Information("Request to return bike {bike} detected.", SelectedBike);
|
||||
|
||||
// Stop polling before returning bike.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextOneMomentPlease;
|
||||
await ViewUpdateManager().StopUpdatePeridically();
|
||||
|
||||
// Notify COPRI about start reaturning bike
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartReturningBike;
|
||||
IsConnected = IsConnectedDelegate();
|
||||
|
||||
try
|
||||
{
|
||||
await ConnectorFactory(IsConnected).Command.StartReturningBike(
|
||||
SelectedBike);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
if (exception is WebConnectFailureException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedOpen>().Information("User selected booked bike {bike} but returing failed (Copri server not reachable).", SelectedBike);
|
||||
|
||||
await ViewService.DisplayAdvancedAlert(
|
||||
AppResources.ErrorReturnBikeNoWebTitle,
|
||||
string.Format("{0}\r\n{1}", AppResources.ErrorReturnBikeNoWebMessage, WebConnectFailureException.GetHintToPossibleExceptionsReasons),
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Error("User selected booked bike {bike} but returning failed. {@l_oException}", SelectedBike.Id, exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorReturnBikeTitle,
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
// Close lock
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextClosingLock;
|
||||
try
|
||||
{
|
||||
SelectedBike.LockInfo.State = (await LockService[SelectedBike.LockInfo.Id].CloseAsync())?.GetLockingState() ?? LockingState.UnknownDisconnected;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
|
||||
SelectedBike.LockInfo.State = exception is StateAwareException stateAwareException
|
||||
? stateAwareException.State
|
||||
: LockingState.UnknownDisconnected;
|
||||
|
||||
// Signal cts to cancel getting geolocation.
|
||||
ctsLocation.Cancel();
|
||||
Task updateLockingStateTask = Task.CompletedTask;
|
||||
try
|
||||
{
|
||||
updateLockingStateTask = ConnectorFactory(IsConnected).Command.UpdateLockingStateAsync(
|
||||
SelectedBike);
|
||||
}
|
||||
catch (Exception innerExceptionStartUpdateLockingState)
|
||||
{
|
||||
// No location information available/ updating state failed.
|
||||
Log.ForContext<BookedOpen>().Information("Start update locking state failed on lock operating error. {Exception}", SelectedBike, innerExceptionStartUpdateLockingState);
|
||||
}
|
||||
|
||||
// Signal cts to cancel getting geolocation.
|
||||
ctsLocation.Cancel();
|
||||
|
||||
if (exception is OutOfReachException)
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Debug("Lock can not be closed. Lock is out of reach. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockOutOfReachMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CounldntCloseMovingException)
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Debug("Lock can not be closed. Lock is out of reach. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockMovingMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntCloseBoldBlockedException)
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Debug("Lock can not be closed. Lock is out of reach. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockBoldBlockedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Error("Lock can not be closed. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
|
||||
// Wait until cancel getting geolocation has completed.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAll(new List<Task> { currentLocationTask ?? Task.CompletedTask, updateLockingStateTask });
|
||||
}
|
||||
catch (Exception innerExWhenAll)
|
||||
{
|
||||
// No location information available/ updating state failed.
|
||||
Log.ForContext<BookedOpen>().Information("Canceling query location/ updating lock state failed on closing lock error. {Exception}", SelectedBike, innerExWhenAll);
|
||||
}
|
||||
|
||||
// Wait until cancel getting geolocation has completed.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedOpen>().Information("Canceling query location failed on closing lock error. {Exception}", SelectedBike, ex);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically(); // Restart polling again.
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true; // Unlock GUI
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
if (SelectedBike.LockInfo.State != LockingState.Closed)
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Error($"Lock can not be closed. Invalid locking state state {SelectedBike.LockInfo.State} detected.");
|
||||
|
||||
// Signal cts to cancel getting geolocation.
|
||||
ctsLocation.Cancel();
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
|
||||
|
||||
// Signal cts to cancel getting geolocation.
|
||||
ctsLocation.Cancel();
|
||||
Task updateLockingStateTask = Task.CompletedTask;
|
||||
try
|
||||
{
|
||||
updateLockingStateTask = ConnectorFactory(IsConnected).Command.UpdateLockingStateAsync(
|
||||
SelectedBike);
|
||||
}
|
||||
catch (Exception innerExceptionStartUpdateLockingState)
|
||||
{
|
||||
// No location information available/ updating state failed.
|
||||
Log.ForContext<BookedOpen>().Information("Start update locking state failed on unexpected state. {Exception}", SelectedBike, innerExceptionStartUpdateLockingState);
|
||||
}
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
SelectedBike.LockInfo.State == LockingState.Open
|
||||
? AppResources.ErrorCloseLockStillOpenMessage
|
||||
: string.Format(AppResources.ErrorCloseLockUnexpectedStateMessage, SelectedBike.LockInfo.State),
|
||||
AppResources.MessageAnswerOk);
|
||||
|
||||
// Wait until cancel getting geolocation has completed.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAll(new List<Task> { currentLocationTask ?? Task.CompletedTask, updateLockingStateTask});
|
||||
}
|
||||
catch (Exception innerExWhenAll)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedOpen>().Information("Canceling query location/ updating lock state failed failed on unexpected lock state failed. {Exception}", SelectedBike, innerExWhenAll);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically(); // Restart polling again.
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true; // Unlock GUI
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocation;
|
||||
Location currentLocation = null;
|
||||
try
|
||||
{
|
||||
var task = await Task.WhenAny(new List<Task> { currentLocationTask });
|
||||
currentLocation = currentLocationTask.Result;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedOpen>().Information("Returning bike {Bike} is not possible. Query location failed. {Exception}", SelectedBike, ex);
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
await ViewService.DisplayAdvancedAlert(
|
||||
AppResources.MessageErrorQueryLocationTitle,
|
||||
AppResources.MessageErrorQueryLocationMessage,
|
||||
ex.GetErrorMessage(),
|
||||
AppResources.MessageAnswerOk);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically(); // Restart polling again.
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true; // Unlock GUI
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
// Lock list to avoid multiple taps while copri action is pending.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextReturningBike;
|
||||
|
||||
IsConnected = IsConnectedDelegate();
|
||||
|
||||
var feedBackUri = SelectedBike?.OperatorUri;
|
||||
BookingFinishedModel bookingFinished;
|
||||
try
|
||||
{
|
||||
bookingFinished = await ConnectorFactory(IsConnected).Command.DoReturn(
|
||||
SelectedBike,
|
||||
currentLocation != null
|
||||
? new LocationDto.Builder
|
||||
{
|
||||
Latitude = currentLocation.Latitude,
|
||||
Longitude = currentLocation.Longitude,
|
||||
Accuracy = currentLocation.Accuracy ?? double.NaN,
|
||||
Age = timeStamp.Subtract(currentLocation.Timestamp.DateTime),
|
||||
}.Build()
|
||||
: null,
|
||||
SmartDevice);
|
||||
// If canceling bike succedes remove bike because it is not ready to be booked again
|
||||
IsRemoveBikeRequired = true;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
if (exception is WebConnectFailureException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedOpen>().Information("User selected booked bike {bike} but returing failed (Copri server not reachable).", SelectedBike);
|
||||
|
||||
await ViewService.DisplayAdvancedAlert(
|
||||
AppResources.ErrorReturnBikeNoWebTitle,
|
||||
string.Format("{0}\r\n{1}", AppResources.ErrorReturnBikeNoWebMessage, WebConnectFailureException.GetHintToPossibleExceptionsReasons),
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is NotAtStationException notAtStationException)
|
||||
{
|
||||
// COPRI returned an error.
|
||||
Log.ForContext<BookedOpen>().Information("User selected booked bike {bike} but returing failed. COPRI returned an error.", SelectedBike);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorReturnBikeTitle,
|
||||
string.Format(AppResources.ErrorReturnBikeNotAtStationMessage, notAtStationException.StationNr, notAtStationException.Distance),
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is NoGPSDataException)
|
||||
{
|
||||
// COPRI returned an error.
|
||||
Log.ForContext<BookedOpen>().Information("User selected booked bike {bike} but returing failed. COPRI returned an no GPS- data error.", SelectedBike);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorReturnBikeTitle,
|
||||
string.Format(AppResources.ErrorReturnBikeLockOpenNoGPSMessage),
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is ResponseException copriException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedOpen>().Information("User selected booked bike {bike} but returing failed. COPRI returned an error.", SelectedBike);
|
||||
|
||||
await ViewService.DisplayAdvancedAlert(
|
||||
"Statusfehler beim Zurückgeben des Rads!",
|
||||
copriException.Message,
|
||||
copriException.Response,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Error("User selected booked bike {bike} but returning failed. {@l_oException}", SelectedBike.Id, exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorReturnBikeTitle,
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
Log.ForContext<BookedOpen>().Information("User returned bike {bike} successfully.", SelectedBike);
|
||||
|
||||
// Disconnect lock.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextDisconnectingLock;
|
||||
try
|
||||
{
|
||||
SelectedBike.LockInfo.State = await LockService.DisconnectAsync(SelectedBike.LockInfo.Id, SelectedBike.LockInfo.Guid);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Error("Lock can not be disconnected. {Exception}", exception);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorDisconnect;
|
||||
}
|
||||
|
||||
#if !USERFEEDBACKDLG_OFF
|
||||
// Do get Feedback
|
||||
var feedback = await ViewService.DisplayUserFeedbackPopup(bookingFinished?.Co2Saving);
|
||||
|
||||
try
|
||||
{
|
||||
await ConnectorFactory(IsConnected).Command.DoSubmitFeedback(
|
||||
new UserFeedbackDto { BikeId = SelectedBike.Id, IsBikeBroken = feedback.IsBikeBroken, Message = feedback.Message },
|
||||
feedBackUri);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
|
||||
if (exception is ResponseException copriException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedOpen>().Information("Submitting feedback for bike {bike} failed. COPRI returned an error.", SelectedBike);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Error("Submitting feedback for bike {bike} failed. {@l_oException}", SelectedBike.Id, exception);
|
||||
}
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorReturnSubmitFeedbackTitle,
|
||||
AppResources.ErrorReturnSubmitFeedbackMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (bookingFinished != null && bookingFinished.MiniSurvey.Questions.Count > 0)
|
||||
{
|
||||
await ViewService.PushModalAsync(ViewTypes.MiniSurvey);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
/// <summary> Close lock in order to pause ride and update COPRI lock state.</summary>
|
||||
public async Task<IRequestHandler> CloseLock()
|
||||
{
|
||||
// Unlock bike.
|
||||
BikesViewModel.IsIdle = false;
|
||||
Log.ForContext<BookedOpen>().Information("User request to lock bike {bike} in order to pause ride.", SelectedBike);
|
||||
|
||||
// Start getting geolocation.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationStart;
|
||||
var ctsLocation = new CancellationTokenSource();
|
||||
Task<Location> currentLocationTask = null;
|
||||
var timeStamp = DateTime.Now;
|
||||
try
|
||||
{
|
||||
currentLocationTask = Geolocation.GetAsync(ctsLocation.Token, timeStamp);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedOpen>().Information("Closing lock of bike {Bike} is not possible. Starting query location failed. {Exception}", SelectedBike, ex);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorQueryLocationQuery;
|
||||
}
|
||||
|
||||
// Stop polling before returning bike.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextOneMomentPlease;
|
||||
await ViewUpdateManager().StopUpdatePeridically();
|
||||
|
||||
// Close lock
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextClosingLock;
|
||||
try
|
||||
{
|
||||
SelectedBike.LockInfo.State = (await LockService[SelectedBike.LockInfo.Id].CloseAsync())?.GetLockingState() ?? LockingState.UnknownDisconnected;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
|
||||
// Signal cts to cancel getting geolocation.
|
||||
ctsLocation.Cancel();
|
||||
|
||||
if (exception is OutOfReachException)
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Debug("Lock can not be closed. {Exception}", exception);
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockOutOfReachMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CounldntCloseMovingException)
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Debug("Lock can not be closed. Lock is out of reach. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockMovingMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntCloseBoldBlockedException)
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Debug("Lock can not be closed. Lock is out of reach. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockBoldBlockedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Error("Lock can not be closed. {Exception}", exception);
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
|
||||
SelectedBike.LockInfo.State = exception is StateAwareException stateAwareException
|
||||
? stateAwareException.State
|
||||
: LockingState.UnknownDisconnected;
|
||||
|
||||
// Wait until cancel getting geolocation has completed.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedOpen>().Information("Canceling query location failed on closing lock error. {Exception}", SelectedBike, ex);
|
||||
}
|
||||
|
||||
// Wait until cancel getting geolocation has completed.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedOpen>().Information("Canceling query location failed on closing lock error. {Exception}", SelectedBike, ex);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
// Get geoposition.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocation;
|
||||
Location currentLocation = null;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask });
|
||||
currentLocation = currentLocationTask.Result;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedOpen>().Information("Getting geolocation when closing lock of bike {Bike} failed. {Exception}", SelectedBike, ex);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorQueryLocationWhenAny;
|
||||
}
|
||||
|
||||
// Lock list to avoid multiple taps while copri action is pending.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdatingLockingState;
|
||||
|
||||
IsConnected = IsConnectedDelegate();
|
||||
|
||||
try
|
||||
{
|
||||
await ConnectorFactory(IsConnected).Command.UpdateLockingStateAsync(
|
||||
SelectedBike,
|
||||
currentLocation != null
|
||||
? new LocationDto.Builder
|
||||
{
|
||||
Latitude = currentLocation.Latitude,
|
||||
Longitude = currentLocation.Longitude,
|
||||
Accuracy = currentLocation.Accuracy ?? double.NaN,
|
||||
Age = timeStamp.Subtract(currentLocation.Timestamp.DateTime),
|
||||
}.Build()
|
||||
: null);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
if (exception is WebConnectFailureException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedOpen>().Information("User locked bike {bike} in order to pause ride but updating failed (Copri server not reachable).", SelectedBike);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorNoWebUpdateingLockstate;
|
||||
}
|
||||
else if (exception is ResponseException copriException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedOpen>().Information("User locked bike {bike} in order to pause ride but updating failed. Message: {Message} Details: {Details}", SelectedBike, copriException.Message, copriException.Response);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorStatusUpdateingLockstate;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedOpen>().Error("User locked bike {bike} in order to pause ride but updating failed. {@l_oException}", SelectedBike.Id, exception);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorConnectionUpdateingLockstate;
|
||||
}
|
||||
}
|
||||
|
||||
Log.ForContext<BookedOpen>().Information("User paused ride using {bike} successfully.", SelectedBike);
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,386 +0,0 @@
|
|||
using Serilog;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.Model.Bike.BluetoothLock;
|
||||
using TINK.Model.Connector;
|
||||
using TINK.Model.State;
|
||||
using TINK.View;
|
||||
using TINK.Repository.Exception;
|
||||
using TINK.Services.Geolocation;
|
||||
using TINK.Services.BluetoothLock;
|
||||
using TINK.Services.BluetoothLock.Exception;
|
||||
using TINK.MultilingualResources;
|
||||
using TINK.Model.Bikes.Bike.BluetoothLock;
|
||||
using TINK.Model.User;
|
||||
using Xamarin.Essentials;
|
||||
using TINK.Repository.Request;
|
||||
using TINK.Model.Device;
|
||||
using System.Threading;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||
{
|
||||
public class BookedUnknown : Base, IRequestHandler
|
||||
{
|
||||
/// <param name="smartDevice">Provides info about the smart device (phone, tablet, ...).</param>
|
||||
/// <param name="bikesViewModel">View model to be used for progress report and unlocking/ locking view.</param>
|
||||
public BookedUnknown(
|
||||
IBikeInfoMutable selectedBike,
|
||||
Func<bool> isConnectedDelegate,
|
||||
Func<bool, IConnector> connectorFactory,
|
||||
IGeolocation geolocation,
|
||||
ILocksService lockService,
|
||||
Func<IPollingUpdateTaskManager> viewUpdateManager,
|
||||
ISmartDevice smartDevice,
|
||||
IViewService viewService,
|
||||
IBikesViewModel bikesViewModel,
|
||||
IUser activeUser) : base(
|
||||
selectedBike,
|
||||
AppResources.ActionOpenAndPause, // Schloss öffnen und Miete fortsetzen.
|
||||
true, // Show button to enabled returning of bike.
|
||||
isConnectedDelegate,
|
||||
connectorFactory,
|
||||
geolocation,
|
||||
lockService,
|
||||
viewUpdateManager,
|
||||
smartDevice,
|
||||
viewService,
|
||||
bikesViewModel,
|
||||
activeUser)
|
||||
{
|
||||
LockitButtonText = AppResources.ActionClose; // BT button text "Schließen".;
|
||||
IsLockitButtonVisible = true; // Show button to enable opening lock in case user took a pause and does not want to return the bike.
|
||||
}
|
||||
|
||||
/// <summary> Gets the bike state. </summary>
|
||||
public override InUseStateEnum State => InUseStateEnum.Booked;
|
||||
|
||||
/// <summary> Open bike and update COPRI lock state. </summary>
|
||||
public async Task<IRequestHandler> HandleRequestOption1() => await OpenLock();
|
||||
|
||||
/// <summary> Close lock in order to pause ride and update COPRI lock state.</summary>
|
||||
public async Task<IRequestHandler> HandleRequestOption2() => await CloseLock();
|
||||
|
||||
|
||||
/// <summary> Open bike and update COPRI lock state. </summary>
|
||||
public async Task<IRequestHandler> OpenLock()
|
||||
{
|
||||
// Unlock bike.
|
||||
Log.ForContext<BookedUnknown>().Information("User request to unlock bike {bike}.", SelectedBike);
|
||||
|
||||
// Stop polling before returning bike.
|
||||
BikesViewModel.IsIdle = false;
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextOneMomentPlease;
|
||||
await ViewUpdateManager().StopUpdatePeridically();
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextOpeningLock;
|
||||
try
|
||||
{
|
||||
SelectedBike.LockInfo.State = (await LockService[SelectedBike.LockInfo.Id].OpenAsync())?.GetLockingState() ?? LockingState.UnknownDisconnected;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
|
||||
if (exception is OutOfReachException)
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Debug("Lock can not be opened. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockTitle,
|
||||
AppResources.ErrorOpenLockOutOfReachMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntOpenBoldIsBlockedException)
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Debug("Lock can not be opened. Bold is blocked. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockTitle,
|
||||
AppResources.ErrorOpenLockBoldBlockedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntOpenBoldWasBlockedException)
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Debug("Lock can not be opened. Bold was or is blocked. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockStillOpenTitle,
|
||||
AppResources.ErrorOpenLockBoldWasBlockedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntOpenInconsistentStateExecption inconsistentState
|
||||
&& inconsistentState.State == LockingState.Closed)
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Debug("Lock can not be opened. lock reports state closed. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockTitle,
|
||||
AppResources.ErrorOpenLockStillClosedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Error("Lock can not be opened. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockTitle,
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
|
||||
// When bold is blocked lock is still closed even if exception occurres.
|
||||
// In all other cases state is supposed to be unknown. Example: Lock is out of reach and no more bluetooth connected.
|
||||
SelectedBike.LockInfo.State = exception is StateAwareException stateAwareException
|
||||
? stateAwareException.State
|
||||
: LockingState.UnknownDisconnected;
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextReadingChargingLevel;
|
||||
try
|
||||
{
|
||||
SelectedBike.LockInfo.BatteryPercentage = await LockService[SelectedBike.LockInfo.Id].GetBatteryPercentageAsync();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
if (exception is OutOfReachException)
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Error("Akkustate can not be read. {Exception}", exception);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
|
||||
}
|
||||
}
|
||||
|
||||
// Lock list to avoid multiple taps while copri action is pending.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdatingLockingState;
|
||||
|
||||
IsConnected = IsConnectedDelegate();
|
||||
|
||||
try
|
||||
{
|
||||
await ConnectorFactory(IsConnected).Command.UpdateLockingStateAsync(SelectedBike);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
if (exception is WebConnectFailureException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedUnknown>().Information("User locked bike {bike} in order to pause ride but updating failed (Copri server not reachable).", SelectedBike);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorNoWebUpdateingLockstate;
|
||||
}
|
||||
else if (exception is ResponseException copriException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedUnknown>().Information("User locked bike {bike} in order to pause ride but updating failed. {response}.", SelectedBike, copriException.Response);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorStatusUpdateingLockstate;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Error("User locked bike {bike} in order to pause ride but updating failed . {@l_oException}", SelectedBike.Id, exception);
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorConnectionUpdateingLockstate;
|
||||
}
|
||||
}
|
||||
|
||||
Log.ForContext<BookedUnknown>().Information("User paused ride using {bike} successfully.", SelectedBike);
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
/// <summary> Close lock in order to pause ride and update COPRI lock state.</summary>
|
||||
public async Task<IRequestHandler> CloseLock()
|
||||
{
|
||||
// Unlock bike.
|
||||
BikesViewModel.IsIdle = false;
|
||||
|
||||
Log.ForContext<BookedUnknown>().Information("User request to lock bike {bike} in order to pause ride.", SelectedBike);
|
||||
|
||||
// Start getting geolocation.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationStart;
|
||||
var ctsLocation = new CancellationTokenSource();
|
||||
Task<Location> currentLocationTask = null;
|
||||
var timeStamp = DateTime.Now;
|
||||
try
|
||||
{
|
||||
currentLocationTask = Geolocation.GetAsync(ctsLocation.Token, timeStamp);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedUnknown>().Information("Returning bike {Bike} is not possible. Start query location failed. {Exception}", SelectedBike, ex);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorQueryLocationQuery;
|
||||
}
|
||||
|
||||
// Stop polling before returning bike.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextOneMomentPlease;
|
||||
await ViewUpdateManager().StopUpdatePeridically();
|
||||
|
||||
// Close lock
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextClosingLock;
|
||||
try
|
||||
{
|
||||
SelectedBike.LockInfo.State = (await LockService[SelectedBike.LockInfo.Id].CloseAsync())?.GetLockingState() ?? LockingState.UnknownDisconnected;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
|
||||
// Signal cts to cancel getting geolocation.
|
||||
ctsLocation.Cancel();
|
||||
|
||||
if (exception is OutOfReachException)
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Debug("Lock can not be closed. {Exception}", exception);
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockOutOfReachMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CounldntCloseMovingException)
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Debug("Lock can not be closed. Lock is out of reach. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockMovingMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntCloseBoldBlockedException)
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Debug("Lock can not be closed. Lock is out of reach. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockBoldBlockedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Error("Lock can not be closed. {Exception}", exception);
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
|
||||
SelectedBike.LockInfo.State = exception is StateAwareException stateAwareException
|
||||
? stateAwareException.State
|
||||
: LockingState.UnknownDisconnected;
|
||||
|
||||
// Wait until cancel getting geolocation has completed.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedUnknown>().Information("Canceling query location failed on unexpected lock state failed. {Exception}", SelectedBike, ex);
|
||||
}
|
||||
|
||||
// Wait until cancel getting geolocation has completed.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedUnknown>().Information("Canceling query location failed on unexpected lock state failed. {Exception}", SelectedBike, ex);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
// Get geoposition.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocation;
|
||||
Location currentLocation = null;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
currentLocation = currentLocationTask?.Result ?? null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<BookedUnknown>().Information("Get geolocation failed when closing lock of bike {Bike} with unknown state. {Exception}", SelectedBike, ex);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorQueryLocationWhenAny;
|
||||
}
|
||||
|
||||
// Lock list to avoid multiple taps while copri action is pending.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdatingLockingState;
|
||||
|
||||
IsConnected = IsConnectedDelegate();
|
||||
|
||||
try
|
||||
{
|
||||
await ConnectorFactory(IsConnected).Command.UpdateLockingStateAsync(
|
||||
SelectedBike,
|
||||
currentLocation != null
|
||||
? new LocationDto.Builder
|
||||
{
|
||||
Latitude = currentLocation.Latitude,
|
||||
Longitude = currentLocation.Longitude,
|
||||
Accuracy = currentLocation.Accuracy ?? double.NaN,
|
||||
Age = timeStamp.Subtract(currentLocation.Timestamp.DateTime),
|
||||
}.Build()
|
||||
: null);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
if (exception is WebConnectFailureException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedUnknown>().Information("User locked bike {bike} in order to pause ride but updating failed (Copri server not reachable).", SelectedBike);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorNoWebUpdateingLockstate;
|
||||
}
|
||||
else if (exception is ResponseException copriException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<BookedUnknown>().Information("User locked bike {bike} in order to pause ride but updating failed. Message: {Message} Details: {Details}", SelectedBike, copriException.Message, copriException.Response);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorStatusUpdateingLockstate;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<BookedUnknown>().Error("User locked bike {bike} in order to pause ride but updating failed. {@l_oException}", SelectedBike.Id, exception);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorConnectionUpdateingLockstate;
|
||||
}
|
||||
}
|
||||
|
||||
Log.ForContext<BookedUnknown>().Information("User paused ride using {bike} successfully.", SelectedBike);
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,386 +0,0 @@
|
|||
using Serilog;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.Model.Bike.BluetoothLock;
|
||||
using TINK.Model.Connector;
|
||||
using TINK.Model.State;
|
||||
using TINK.View;
|
||||
using TINK.Repository.Exception;
|
||||
using TINK.Services.Geolocation;
|
||||
using TINK.Services.BluetoothLock;
|
||||
using TINK.Services.BluetoothLock.Exception;
|
||||
using TINK.MultilingualResources;
|
||||
using TINK.Model.Bikes.Bike.BluetoothLock;
|
||||
using TINK.Model.User;
|
||||
using Xamarin.Essentials;
|
||||
using TINK.Repository.Request;
|
||||
using TINK.Model.Device;
|
||||
using System.Threading;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||
{
|
||||
public class ReservedUnknown : Base, IRequestHandler
|
||||
{
|
||||
/// <param name="smartDevice">Provides info about the smart device (phone, tablet, ...)</param>
|
||||
/// <param name="bikesViewModel">View model to be used for progress report and unlocking/ locking view.</param>
|
||||
public ReservedUnknown(
|
||||
IBikeInfoMutable selectedBike,
|
||||
Func<bool> isConnectedDelegate,
|
||||
Func<bool, IConnector> connectorFactory,
|
||||
IGeolocation geolocation,
|
||||
ILocksService lockService,
|
||||
Func<IPollingUpdateTaskManager> viewUpdateManager,
|
||||
ISmartDevice smartDevice,
|
||||
IViewService viewService,
|
||||
IBikesViewModel bikesViewModel,
|
||||
IUser activeUser) : base(
|
||||
selectedBike,
|
||||
AppResources.ActionOpenAndBook, // BT button text "Schloss öffnen und Rad mieten."
|
||||
false, // Show button to enabled returning of bike.
|
||||
isConnectedDelegate,
|
||||
connectorFactory,
|
||||
geolocation,
|
||||
lockService,
|
||||
viewUpdateManager,
|
||||
smartDevice,
|
||||
viewService,
|
||||
bikesViewModel,
|
||||
activeUser)
|
||||
{
|
||||
LockitButtonText = AppResources.ActionClose; // BT button text "Schließen"
|
||||
IsLockitButtonVisible = true; // Show button to enable opening lock in case user took a pause and does not want to return the bike.
|
||||
}
|
||||
|
||||
/// <summary> Gets the bike state. </summary>
|
||||
public override InUseStateEnum State => InUseStateEnum.Reserved;
|
||||
|
||||
/// <summary> Open bike and update COPRI lock state. </summary>
|
||||
public async Task<IRequestHandler> HandleRequestOption1() => await OpenLock();
|
||||
|
||||
/// <summary> Open bike and update COPRI lock state. </summary>
|
||||
public async Task<IRequestHandler> OpenLock()
|
||||
{
|
||||
// Unlock bike.
|
||||
Log.ForContext<ReservedUnknown>().Information("User request to unlock bike {bike}.", SelectedBike);
|
||||
|
||||
// Stop polling before returning bike.
|
||||
BikesViewModel.IsIdle = false;
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextOneMomentPlease;
|
||||
await ViewUpdateManager().StopUpdatePeridically();
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextOpeningLock;
|
||||
try
|
||||
{
|
||||
SelectedBike.LockInfo.State = (await LockService[SelectedBike.LockInfo.Id].OpenAsync())?.GetLockingState() ?? LockingState.UnknownDisconnected;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
|
||||
if (exception is OutOfReachException)
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Debug("Lock can not be opened. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockTitle,
|
||||
AppResources.ErrorOpenLockOutOfReachMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntOpenBoldIsBlockedException)
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Debug("Lock can not be opened. Bold is blocked. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockTitle,
|
||||
AppResources.ErrorOpenLockBoldBlockedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntOpenBoldWasBlockedException)
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Debug("Lock can not be opened. Bold was or is blocked. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockStillOpenTitle,
|
||||
AppResources.ErrorOpenLockBoldWasBlockedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntOpenInconsistentStateExecption inconsistentState
|
||||
&& inconsistentState.State == LockingState.Closed)
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Debug("Lock can not be opened. lock reports state closed. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockTitle,
|
||||
AppResources.ErrorOpenLockStillClosedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Error("Lock can not be opened. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorOpenLockTitle,
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
|
||||
// When bold is blocked lock is still closed even if exception occurres.
|
||||
// In all other cases state is supposed to be unknown. Example: Lock is out of reach and no more bluetooth connected.
|
||||
SelectedBike.LockInfo.State = exception is StateAwareException stateAwareException
|
||||
? stateAwareException.State
|
||||
: LockingState.UnknownDisconnected;
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextReadingChargingLevel;
|
||||
try
|
||||
{
|
||||
SelectedBike.LockInfo.BatteryPercentage = await LockService[SelectedBike.LockInfo.Id].GetBatteryPercentageAsync();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
if (exception is OutOfReachException)
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Debug("Akkustate can not be read, bike out of range. {Exception}", exception);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelOutOfReach;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Error("Akkustate can not be read. {Exception}", exception);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorReadingChargingLevelGeneral;
|
||||
}
|
||||
}
|
||||
|
||||
// Lock list to avoid multiple taps while copri action is pending.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdatingLockingState;
|
||||
|
||||
IsConnected = IsConnectedDelegate();
|
||||
|
||||
try
|
||||
{
|
||||
await ConnectorFactory(IsConnected).Command.UpdateLockingStateAsync(SelectedBike);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
if (exception is WebConnectFailureException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<ReservedUnknown>().Information("User locked bike {bike} in order to pause ride but updating failed (Copri server not reachable).", SelectedBike);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorNoWebUpdateingLockstate;
|
||||
}
|
||||
else if (exception is ResponseException copriException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<ReservedUnknown>().Information("User locked bike {bike} in order to pause ride but updating failed. {response}.", SelectedBike, copriException.Response);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorStatusUpdateingLockstate;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Error("User locked bike {bike} in order to pause ride but updating failed . {@l_oException}", SelectedBike.Id, exception);
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorConnectionUpdateingLockstate;
|
||||
}
|
||||
}
|
||||
|
||||
Log.ForContext<ReservedUnknown>().Information("User paused ride using {bike} successfully.", SelectedBike);
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
/// <summary> Close lock in order to pause ride and update COPRI lock state.</summary>
|
||||
public async Task<IRequestHandler> HandleRequestOption2() => await CloseLock();
|
||||
|
||||
|
||||
/// <summary> Close lock in order to pause ride and update COPRI lock state.</summary>
|
||||
public async Task<IRequestHandler> CloseLock()
|
||||
{
|
||||
// Unlock bike.
|
||||
BikesViewModel.IsIdle = false;
|
||||
|
||||
Log.ForContext<ReservedUnknown>().Information("User request to lock bike {bike} in order to pause ride.", SelectedBike);
|
||||
|
||||
// Start getting geolocation.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationStart;
|
||||
var ctsLocation = new CancellationTokenSource();
|
||||
Task<Location> currentLocationTask = null;
|
||||
var timeStamp = DateTime.Now;
|
||||
try
|
||||
{
|
||||
currentLocationTask = Geolocation.GetAsync(ctsLocation.Token, timeStamp);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<ReservedUnknown>().Information("Returning bike {Bike} is not possible. Start query location failed. {Exception}", SelectedBike, ex);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorQueryLocationQuery;
|
||||
}
|
||||
|
||||
// Stop polling before returning bike.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextOneMomentPlease;
|
||||
await ViewUpdateManager().StopUpdatePeridically();
|
||||
|
||||
// Close lock
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextClosingLock;
|
||||
try
|
||||
{
|
||||
SelectedBike.LockInfo.State = (await LockService[SelectedBike.LockInfo.Id].CloseAsync())?.GetLockingState() ?? LockingState.UnknownDisconnected;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
|
||||
// Signal cts to cancel getting geolocation.
|
||||
ctsLocation.Cancel();
|
||||
|
||||
if (exception is OutOfReachException)
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Debug("Lock can not be closed. {Exception}", exception);
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockOutOfReachMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CounldntCloseMovingException)
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Debug("Lock can not be closed. Lock is out of reach. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockMovingMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else if (exception is CouldntCloseBoldBlockedException)
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Debug("Lock can not be closed. Lock is out of reach. {Exception}", exception);
|
||||
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
AppResources.ErrorCloseLockBoldBlockedMessage,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Error("Lock can not be closed. {Exception}", exception);
|
||||
await ViewService.DisplayAlert(
|
||||
AppResources.ErrorCloseLockTitle,
|
||||
exception.Message,
|
||||
AppResources.MessageAnswerOk);
|
||||
}
|
||||
|
||||
SelectedBike.LockInfo.State = exception is StateAwareException stateAwareException
|
||||
? stateAwareException.State
|
||||
: LockingState.UnknownDisconnected;
|
||||
|
||||
// Wait until cancel getting geolocation has completed.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<ReservedUnknown>().Information("Canceling query location failed on closing lock error. {Exception}", SelectedBike, ex);
|
||||
}
|
||||
|
||||
// Wait until cancel getting geolocation has completed.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocationCancelWait;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<ReservedUnknown>().Information("Canceling query location failed on closing lock error. {Exception}", SelectedBike, ex);
|
||||
}
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
|
||||
// Get geoposition.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextQueryLocation;
|
||||
Location currentLocation = null;
|
||||
try
|
||||
{
|
||||
await Task.WhenAny(new List<Task> { currentLocationTask ?? Task.CompletedTask });
|
||||
currentLocation = currentLocationTask?.Result ?? null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// No location information available.
|
||||
Log.ForContext<ReservedUnknown>().Information("Returning bike {Bike} is not possible. {Exception}", SelectedBike, ex);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorQueryLocationWhenAny;
|
||||
}
|
||||
|
||||
// Lock list to avoid multiple taps while copri action is pending.
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdatingLockingState;
|
||||
|
||||
IsConnected = IsConnectedDelegate();
|
||||
|
||||
try
|
||||
{
|
||||
await ConnectorFactory(IsConnected).Command.UpdateLockingStateAsync(
|
||||
SelectedBike,
|
||||
currentLocation != null
|
||||
? new LocationDto.Builder
|
||||
{
|
||||
Latitude = currentLocation.Latitude,
|
||||
Longitude = currentLocation.Longitude,
|
||||
Accuracy = currentLocation.Accuracy ?? double.NaN,
|
||||
Age = timeStamp.Subtract(currentLocation.Timestamp.DateTime),
|
||||
}.Build()
|
||||
: null);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
if (exception is WebConnectFailureException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<ReservedUnknown>().Information("User locked bike {bike} in order to pause ride but updating failed (Copri server not reachable).", SelectedBike);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorNoWebUpdateingLockstate;
|
||||
}
|
||||
else if (exception is ResponseException copriException)
|
||||
{
|
||||
// Copri server is not reachable.
|
||||
Log.ForContext<ReservedUnknown>().Information("User locked bike {bike} in order to pause ride but updating failed. Message: {Message} Details: {Details}", SelectedBike, copriException.Message, copriException.Response);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorStatusUpdateingLockstate;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<ReservedUnknown>().Error("User locked bike {bike} in order to pause ride but updating failed. {@l_oException}", SelectedBike.Id, exception);
|
||||
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextErrorConnectionUpdateingLockstate;
|
||||
}
|
||||
}
|
||||
|
||||
Log.ForContext<ReservedUnknown>().Information("User paused ride using {bike} successfully.", SelectedBike);
|
||||
BikesViewModel.ActionText = AppResources.ActivityTextStartingUpdater;
|
||||
await ViewUpdateManager().StartUpdateAyncPeridically();
|
||||
BikesViewModel.ActionText = string.Empty;
|
||||
BikesViewModel.IsIdle = true;
|
||||
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using TINK.Model.Bikes.Bike;
|
||||
using TINK.MultilingualResources;
|
||||
|
||||
namespace TINK.ViewModel.Bikes.Bike
|
||||
{
|
||||
|
@ -9,64 +9,59 @@ namespace TINK.ViewModel.Bikes.Bike
|
|||
/// </summary>
|
||||
public class TariffDescriptionViewModel
|
||||
{
|
||||
private TariffDescription Tariff { get; }
|
||||
private const string AGBKEY = "AGB";
|
||||
|
||||
public TariffDescriptionViewModel(TariffDescription tariff)
|
||||
public TariffDescriptionViewModel(RentalDescription tariff)
|
||||
{
|
||||
Tariff = tariff;
|
||||
}
|
||||
Name = tariff?.Name ?? string.Empty;
|
||||
|
||||
public string Header
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(FeeEuroPerHour)
|
||||
&& string.IsNullOrEmpty(AboEuroPerMonth)
|
||||
&& string.IsNullOrEmpty(FreeTimePerSession)
|
||||
&& string.IsNullOrEmpty(MaxFeeEuroPerDay))
|
||||
// No tariff description details available.
|
||||
return string.Empty;
|
||||
TariffEntries = tariff != null && tariff?.TariffEntries != null
|
||||
? new ObservableCollection<RentalDescription.TariffElement>(tariff.TariffEntries.OrderBy(x => x.Key).Select(x => x.Value))
|
||||
: new ObservableCollection<RentalDescription.TariffElement>();
|
||||
|
||||
// Up to version MessageBikesManagementTariffDescriptionTariffHeaderNameId
|
||||
return Tariff?.Name ?? "-";
|
||||
}
|
||||
InfoEntries = tariff != null && tariff?.InfoEntries != null
|
||||
? new ObservableCollection<string>(tariff.InfoEntries.OrderBy(x => x.Key).Where(x => x.Value.Key != AGBKEY).Select(x => x.Value.Value))
|
||||
: new ObservableCollection<string>();
|
||||
|
||||
OperatorAgb = tariff?.InfoEntries != null
|
||||
&& tariff.InfoEntries.Select(x => x.Value.Key).Contains(AGBKEY)
|
||||
? tariff?.InfoEntries.FirstOrDefault(x => x.Value.Key == AGBKEY).Value.Value
|
||||
: string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Costs per hour in euro.
|
||||
/// Holds the name of the tariff.
|
||||
/// </summary>
|
||||
public string FeeEuroPerHour
|
||||
=> !double.IsNaN(Tariff.FeeEuroPerHour)
|
||||
? string.Format("{0} {1}", Tariff.FeeEuroPerHour.ToString("0.00"), AppResources.MessageBikesManagementTariffDescriptionEuroPerHour)
|
||||
: string.Empty;
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Costs of the abo per month.
|
||||
/// Holds the tariff entries to display.
|
||||
/// </summary>
|
||||
public string AboEuroPerMonth
|
||||
=> !double.IsNaN(Tariff.AboEuroPerMonth)
|
||||
? string.Format("{0} {1}", Tariff.AboEuroPerMonth.ToString("0.00"), AppResources.MessageBikesManagementTariffDescriptionEuroPerHour)
|
||||
: string.Empty;
|
||||
public ObservableCollection<RentalDescription.TariffElement> TariffEntries { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Free use time.
|
||||
/// Holds the info entries to display.
|
||||
/// </summary>
|
||||
public string FreeTimePerSession
|
||||
=> Tariff.FreeTimePerSession != TimeSpan.Zero
|
||||
? string.Format("{0} {1}", Tariff.FreeTimePerSession.TotalHours, AppResources.MessageBikesManagementTariffDescriptionHour)
|
||||
: string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Max costs per day in euro.
|
||||
/// </summary>
|
||||
public string MaxFeeEuroPerDay
|
||||
=> !double.IsNaN(Tariff.FeeEuroPerHour)
|
||||
? string.Format("{0} {1}", Tariff.MaxFeeEuroPerDay.ToString("0.00"), AppResources.MessageBikesManagementMaxFeeEuroPerDay)
|
||||
: string.Empty;
|
||||
public ObservableCollection<string> InfoEntries { get; private set; }
|
||||
|
||||
/// <summary> Info about operator agb as HTML (i.g. text and hyperlink). </summary>
|
||||
public string OperatorAgb => !string.IsNullOrEmpty(Tariff?.OperatorAgb)
|
||||
? Tariff.OperatorAgb
|
||||
: string.Empty;
|
||||
public string OperatorAgb { get; set; }
|
||||
|
||||
public RentalDescription.TariffElement TarifEntry1 => TariffEntries.Count > 0 ? TariffEntries[0] : new RentalDescription.TariffElement();
|
||||
public RentalDescription.TariffElement TarifEntry2 => TariffEntries.Count > 1 ? TariffEntries[1] : new RentalDescription.TariffElement();
|
||||
public RentalDescription.TariffElement TarifEntry3 => TariffEntries.Count > 2 ? TariffEntries[2] : new RentalDescription.TariffElement();
|
||||
public RentalDescription.TariffElement TarifEntry4 => TariffEntries.Count > 3 ? TariffEntries[3] : new RentalDescription.TariffElement();
|
||||
|
||||
public RentalDescription.TariffElement TarifEntry5 => TariffEntries.Count > 4 ? TariffEntries[4] : new RentalDescription.TariffElement();
|
||||
public RentalDescription.TariffElement TarifEntry6 => TariffEntries.Count > 5 ? TariffEntries[5] : new RentalDescription.TariffElement();
|
||||
public RentalDescription.TariffElement TarifEntry7 => TariffEntries.Count > 6 ? TariffEntries[6] : new RentalDescription.TariffElement();
|
||||
public RentalDescription.TariffElement TarifEntry8 => TariffEntries.Count > 7 ? TariffEntries[7] : new RentalDescription.TariffElement();
|
||||
public RentalDescription.TariffElement TarifEntry9 => TariffEntries.Count > 8 ? TariffEntries[8] : new RentalDescription.TariffElement();
|
||||
|
||||
public string InfoEntry1 => InfoEntries.Count > 0 ? InfoEntries[0] : string.Empty;
|
||||
public string InfoEntry2 => InfoEntries.Count > 1 ? InfoEntries[1] : string.Empty;
|
||||
public string InfoEntry3 => InfoEntries.Count > 2 ? InfoEntries[2] : string.Empty;
|
||||
public string InfoEntry4 => InfoEntries.Count > 3 ? InfoEntries[3] : string.Empty;
|
||||
public string InfoEntry5 => InfoEntries.Count > 4 ? InfoEntries[4] : string.Empty;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -449,7 +449,7 @@ namespace TINK.ViewModel.Bikes
|
|||
/// <param name="updateAction"> Update fuction passed as argument by child class.</param>
|
||||
protected async Task OnAppearing(Action updateAction)
|
||||
{
|
||||
m_oViewUpdateManager = new PollingUpdateTaskManager(() => GetType().Name, updateAction);
|
||||
m_oViewUpdateManager = new PollingUpdateTaskManager(updateAction);
|
||||
|
||||
try
|
||||
{
|
||||
|
|
|
@ -556,7 +556,6 @@ namespace TINK.ViewModel.Map
|
|||
{
|
||||
// Start task which periodically updates pins.
|
||||
return new PollingUpdateTaskManager(
|
||||
() => GetType().Name,
|
||||
() =>
|
||||
{
|
||||
try
|
||||
|
|
|
@ -7,64 +7,59 @@ using TINK.Repository.Exception;
|
|||
|
||||
namespace TINK.ViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Object to periodically actuate an action.
|
||||
/// </summary>
|
||||
public class PollingUpdateTask
|
||||
{
|
||||
/// <summary>Name of child class provider. </summary>
|
||||
private readonly Func<String> m_oGetChildName;
|
||||
|
||||
/// <summary> Object to control canelling. </summary>
|
||||
private readonly CancellationTokenSource m_oCanellationTokenSource;
|
||||
private CancellationTokenSource CanellationTokenSource { get; }
|
||||
|
||||
/// <summary> Task to perform update. </summary>
|
||||
private readonly Task m_oUpdateTask;
|
||||
private Task UpdateTask { get; }
|
||||
|
||||
/// <summary> Action which performs an update.</summary>
|
||||
private readonly Action m_oUpdateAction;
|
||||
private Action UpdateAction { get; }
|
||||
|
||||
/// <summary> Obects which does a periodic update. </summary>
|
||||
/// <param name="p_oGetChildName">Name of the child class. For logging purposes.</param>
|
||||
/// <param name="p_oUpdateAction">Update action to perform.</param>
|
||||
/// <param name="p_oPolling"> Holds whether to poll or not and the periode leght is polling is on. </param>
|
||||
/// <param name="updateAction">Update action to perform.</param>
|
||||
/// <param name="polling"> Holds whether to poll or not and the periode leght is polling is on. </param>
|
||||
public PollingUpdateTask(
|
||||
Func<String> p_oGetChildName,
|
||||
Action p_oUpdateAction,
|
||||
TimeSpan? p_oPolling)
|
||||
Action updateAction,
|
||||
TimeSpan? polling)
|
||||
{
|
||||
m_oGetChildName = p_oGetChildName
|
||||
?? throw new ArgumentException($"Can not construct {GetType().Name}- obect. Argument {nameof(p_oGetChildName)} must not be null.");
|
||||
UpdateAction = updateAction
|
||||
?? throw new ArgumentException($"Can not construct {GetType().Name}- obect. Argument {nameof(updateAction)} must not be null.");
|
||||
|
||||
m_oUpdateAction = p_oUpdateAction
|
||||
?? throw new ArgumentException($"Can not construct {GetType().Name}- obect. Argument {nameof(p_oUpdateAction)} must not be null.");
|
||||
|
||||
if (!p_oPolling.HasValue)
|
||||
if (!polling.HasValue)
|
||||
{
|
||||
// Automatic update is switched off.
|
||||
Log.ForContext<PollingUpdateTask>().Debug($"Automatic update is off, context {GetType().Name} at {DateTime.Now}.");
|
||||
return;
|
||||
}
|
||||
|
||||
var l_iUpdatePeriodeSet = p_oPolling.Value;
|
||||
var updatePeriodeSet = polling.Value;
|
||||
|
||||
m_oCanellationTokenSource = new CancellationTokenSource();
|
||||
CanellationTokenSource = new CancellationTokenSource();
|
||||
|
||||
int l_iCycleIndex = 2;
|
||||
m_oUpdateTask = Task.Run(
|
||||
int cycleIndex = 2;
|
||||
UpdateTask = Task.Run(
|
||||
async () =>
|
||||
{
|
||||
while (!m_oCanellationTokenSource.IsCancellationRequested)
|
||||
while (!CanellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
await Task.Delay(l_iUpdatePeriodeSet, m_oCanellationTokenSource.Token);
|
||||
await Task.Delay(updatePeriodeSet, CanellationTokenSource.Token);
|
||||
{
|
||||
// N. update cycle
|
||||
Log.ForContext<PollingUpdateTask>().Information($"Actuating {l_iCycleIndex} update cycle, context {GetType().Name} at {DateTime.Now}.");
|
||||
Log.ForContext<PollingUpdateTask>().Information($"Actuating {cycleIndex} update cycle, context {GetType().Name} at {DateTime.Now}.");
|
||||
|
||||
m_oUpdateAction();
|
||||
UpdateAction();
|
||||
|
||||
l_iCycleIndex = l_iCycleIndex < int.MaxValue ? ++l_iCycleIndex : 0;
|
||||
cycleIndex = cycleIndex < int.MaxValue ? ++cycleIndex : 0;
|
||||
}
|
||||
}
|
||||
},
|
||||
m_oCanellationTokenSource.Token);
|
||||
CanellationTokenSource.Token);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -73,51 +68,57 @@ namespace TINK.ViewModel
|
|||
/// </summary>
|
||||
public async Task Terminate()
|
||||
{
|
||||
if (UpdateTask == null)
|
||||
{
|
||||
// Nothing to do if no task was created.
|
||||
return;
|
||||
}
|
||||
|
||||
// Cancel update task;
|
||||
if (m_oCanellationTokenSource == null)
|
||||
if (CanellationTokenSource == null)
|
||||
{
|
||||
throw new Exception($"Can not terminate periodical update task, context {GetType().Name} at {DateTime.Now}. No task running.");
|
||||
}
|
||||
|
||||
Log.Information($"Request to terminate update cycle, context {GetType().Name} at {DateTime.Now}.");
|
||||
m_oCanellationTokenSource.Cancel();
|
||||
CanellationTokenSource.Cancel();
|
||||
|
||||
try
|
||||
{
|
||||
await m_oUpdateTask;
|
||||
await UpdateTask;
|
||||
}
|
||||
catch (TaskCanceledException)
|
||||
{
|
||||
// Polling update was canceled.
|
||||
// Nothing to notice/ worry about.
|
||||
}
|
||||
catch (Exception l_oException)
|
||||
catch (Exception exception)
|
||||
{
|
||||
// An error occurred updating pin.
|
||||
var l_oAggregateException = l_oException as AggregateException;
|
||||
if (l_oAggregateException == null)
|
||||
var aggregateException = exception as AggregateException;
|
||||
if (aggregateException == null)
|
||||
{
|
||||
// Unexpected exception detected. Exception should alyways be of type AggregateException
|
||||
Log.Error("An/ several errors occurred on update task. {@Exceptions}.", l_oException);
|
||||
Log.Error("An/ several errors occurred on update task. {@Exceptions}.", exception);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (l_oAggregateException.InnerExceptions.Count == 1
|
||||
&& l_oAggregateException.InnerExceptions[0].GetType() == typeof(TaskCanceledException))
|
||||
if (aggregateException.InnerExceptions.Count == 1
|
||||
&& aggregateException.InnerExceptions[0].GetType() == typeof(TaskCanceledException))
|
||||
{
|
||||
// Polling update was canceled.
|
||||
// Nothing to notice/ worry about.
|
||||
}
|
||||
else if (l_oAggregateException.InnerExceptions.Count() > 0 &&
|
||||
l_oAggregateException.InnerExceptions.First(x => !x.GetIsConnectFailureException()) == null) // There is no exception which is not of type connect failure.
|
||||
else if (aggregateException.InnerExceptions.Count() > 0 &&
|
||||
aggregateException.InnerExceptions.First(x => !x.GetIsConnectFailureException()) == null) // There is no exception which is not of type connect failure.
|
||||
{
|
||||
// All exceptions were caused by communication error
|
||||
Log.Information("An/ several web related connect failure exceptions occurred on update task. {@Exceptions}.", l_oException);
|
||||
Log.Information("An/ several web related connect failure exceptions occurred on update task. {@Exceptions}.", exception);
|
||||
}
|
||||
else
|
||||
{
|
||||
// All exceptions were caused by communication errors.
|
||||
Log.Error("An/ several exceptions occurred on update task. {@Exception}.", l_oException);
|
||||
Log.Error("An/ several exceptions occurred on update task. {@Exception}.", exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,14 +10,11 @@ namespace TINK.ViewModel
|
|||
/// </summary>
|
||||
public class PollingUpdateTaskManager : IPollingUpdateTaskManager
|
||||
{
|
||||
/// <summary>Name of child class provider. </summary>
|
||||
private readonly Func<string> m_oGetChildName;
|
||||
|
||||
/// <summary> Action which performs an update.</summary>
|
||||
private Action m_oUpdateAction;
|
||||
private Action UpdateAction { get; }
|
||||
|
||||
/// <summary> Reference on the current polling task</summary>
|
||||
private PollingUpdateTask m_oPollingUpdateTask;
|
||||
private PollingUpdateTask UpdateTask { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets polling parameters.
|
||||
|
@ -30,16 +27,12 @@ namespace TINK.ViewModel
|
|||
|
||||
/// <summary>Constructs a update manager object. </summary>
|
||||
/// <param name="p_oGetChildName">Name of the child class. For logging purposes.</param>
|
||||
/// <param name="p_oUpdateAction"></param>
|
||||
/// <param name="updateAction"></param>
|
||||
public PollingUpdateTaskManager(
|
||||
Func<String> p_oGetChildName,
|
||||
Action p_oUpdateAction)
|
||||
Action updateAction)
|
||||
{
|
||||
m_oGetChildName = p_oGetChildName ?? throw new ArgumentException(
|
||||
$"Can not construct {GetType().Name}- obect. Argument {nameof(p_oGetChildName)} must not be null.");
|
||||
|
||||
m_oUpdateAction = p_oUpdateAction ?? throw new ArgumentException(
|
||||
$"Can not construct {GetType().Name}- obect. Argument {nameof(p_oUpdateAction)} must not be null.");
|
||||
UpdateAction = updateAction ?? throw new ArgumentException(
|
||||
$"Can not construct {GetType().Name}- obect. Argument {nameof(updateAction)} must not be null.");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -49,13 +42,13 @@ namespace TINK.ViewModel
|
|||
/// <param name="pollingParameters">Parametes holding polling periode, if null last parameters are used if available.</param>
|
||||
public async Task StartUpdateAyncPeridically(PollingParameters pollingParameters = null)
|
||||
{
|
||||
if (m_oPollingUpdateTask != null)
|
||||
if (UpdateTask != null)
|
||||
{
|
||||
Log.Error($"Call to stop periodic update task missed in context {GetType().Name} at {DateTime.Now}.");
|
||||
|
||||
// Call of StopUpdatePeriodically missed.
|
||||
// Terminate running polling update task before starting a new one
|
||||
await m_oPollingUpdateTask.Terminate();
|
||||
await UpdateTask.Terminate();
|
||||
}
|
||||
|
||||
if (pollingParameters != null)
|
||||
|
@ -79,9 +72,8 @@ namespace TINK.ViewModel
|
|||
return;
|
||||
}
|
||||
|
||||
m_oPollingUpdateTask = new PollingUpdateTask(
|
||||
m_oGetChildName,
|
||||
m_oUpdateAction,
|
||||
UpdateTask = new PollingUpdateTask(
|
||||
UpdateAction,
|
||||
PollingParameters.Periode);
|
||||
}
|
||||
|
||||
|
@ -91,15 +83,15 @@ namespace TINK.ViewModel
|
|||
/// </summary>
|
||||
public async Task StopUpdatePeridically()
|
||||
{
|
||||
if (m_oPollingUpdateTask == null)
|
||||
if (UpdateTask == null)
|
||||
{
|
||||
// Nothing to do if there is no update task pending.
|
||||
return;
|
||||
}
|
||||
|
||||
await m_oPollingUpdateTask.Terminate();
|
||||
await UpdateTask.Terminate();
|
||||
|
||||
m_oPollingUpdateTask = null;
|
||||
UpdateTask = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace TestTINKLib
|
|||
string stationId = null,
|
||||
string stationName = null,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
Func<DateTime> dateTimeProvider = null,
|
||||
IStateInfo stateInfo = null) : base(id, lockType, isDemo, group, wheelType, typeOfBike, description, stationId, stationName, operatorUri, tariffDescription, dateTimeProvider, stateInfo)
|
||||
{
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace TestTINKLib
|
|||
string stationId = null,
|
||||
string stationName = null,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
Func<DateTime> dateTimeProvider = null,
|
||||
IStateInfo stateInfo = null) : base(id, lockType, isDemo, group, wheelType, typeOfBike, description, stationId, stationName, operatorUri, tariffDescription, dateTimeProvider, stateInfo)
|
||||
{
|
||||
|
|
|
@ -346,9 +346,13 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
Assert.That(btBikeReserved.WheelType, Is.Null);
|
||||
Assert.AreEqual(DateTime.Parse("2021-07-04 17:46:36.237404+02"), btBikeReserved.State.From); // Sommer/ Winterzeit!
|
||||
Assert.That(btBikeReserved.State.Code, Is.EqualTo(string.Empty), "Not needed for bt bikes.");
|
||||
Assert.That(btBikeReserved.TariffDescription.FeeEuroPerHour, Is.EqualTo(3));
|
||||
Assert.That(btBikeReserved.TariffDescription.MaxFeeEuroPerDay, Is.EqualTo(10));
|
||||
Assert.That(btBikeReserved.TariffDescription.Number, Is.EqualTo(5494));
|
||||
Assert.That(
|
||||
btBikeReserved.TariffDescription.TariffEntries["2"].Value, // FeeEuroPerHour
|
||||
Is.EqualTo("3.00 €/hour"));
|
||||
Assert.That(
|
||||
btBikeReserved.TariffDescription.TariffEntries["3"].Value, // MaxFeeEuroPerDay
|
||||
Is.EqualTo("10.00 €/day"));
|
||||
Assert.That(btBikeReserved.TariffDescription.Id, Is.EqualTo(5494));
|
||||
Assert.That(btBikeReserved.TariffDescription.Name, Is.EqualTo("Tester Basic"));
|
||||
Assert.That(btBikeReserved.StationId, Is.EqualTo("FR_103"));
|
||||
Assert.That(btBikeReserved.LockInfo.Id, Is.EqualTo(2302373));
|
||||
|
@ -367,9 +371,13 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
Assert.That(btBikeRented.WheelType, Is.Null);
|
||||
Assert.AreEqual(DateTime.Parse("2020-10-12 08:38:30.401679+02"), btBikeRented.State.From); // Sommer/ Winterzeit!
|
||||
Assert.AreEqual(string.Empty, btBikeRented.State.Code, "Not needed for bt bikes.");
|
||||
Assert.That(btBikeRented.TariffDescription.FeeEuroPerHour, Is.EqualTo(2.5));
|
||||
Assert.That(btBikeRented.TariffDescription.MaxFeeEuroPerDay, Is.EqualTo(10));
|
||||
Assert.That(btBikeRented.TariffDescription.Number, Is.EqualTo(5494));
|
||||
Assert.That(
|
||||
btBikeRented.TariffDescription.TariffEntries["2"].Value, // FeeEuroPerHour
|
||||
Is.EqualTo("2.50 €/hour"));
|
||||
Assert.That(
|
||||
btBikeRented.TariffDescription.TariffEntries["3"].Value, // MaxFeeEuroPerDay
|
||||
Is.EqualTo("10.00 €/day"));
|
||||
Assert.That(btBikeRented.TariffDescription.Id, Is.EqualTo(5494));
|
||||
Assert.That(btBikeRented.TariffDescription.Name, Is.EqualTo("Tester Basic"));
|
||||
Assert.That(btBikeRented.StationId, Is.EqualTo("103"));
|
||||
Assert.That(btBikeRented.LockInfo.Id, Is.EqualTo(2200537));
|
||||
|
@ -860,20 +868,20 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
Is.EqualTo("Tester Basic"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().Number,
|
||||
tariffDescription.Create().Id,
|
||||
Is.EqualTo(5494));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FreeTimePerSession,
|
||||
Is.EqualTo(TimeSpan.FromMinutes(90)));
|
||||
tariffDescription.Create().TariffEntries["1"].Value, // Free time per session
|
||||
Is.EqualTo("1.50 hour(s)/day")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FeeEuroPerHour,
|
||||
Is.EqualTo(10.5));
|
||||
tariffDescription.Create().TariffEntries["2"].Value, // FeeEuroPerHour
|
||||
Is.EqualTo("10.50 €/hour")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().AboEuroPerMonth,
|
||||
Is.EqualTo(920.99));
|
||||
tariffDescription.Create().TariffEntries["4"].Value, // Abo euro per month
|
||||
Is.EqualTo("920.99 €/month"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -906,7 +914,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().Number,
|
||||
tariffDescription.Create().Id,
|
||||
Is.EqualTo(5494));
|
||||
}
|
||||
|
||||
|
@ -923,8 +931,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FreeTimePerSession,
|
||||
Is.EqualTo(TimeSpan.FromMinutes(90)));
|
||||
tariffDescription.Create().TariffEntries["1"].Value, // Free time per session
|
||||
Is.EqualTo("1.50 hour(s)/day")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -940,8 +948,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FeeEuroPerHour,
|
||||
Is.EqualTo(10.5));
|
||||
tariffDescription.Create().TariffEntries["2"].Value, // FeeEuroPerHour
|
||||
Is.EqualTo("10.50 €/hour")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -957,8 +965,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().AboEuroPerMonth,
|
||||
Is.EqualTo(920.99));
|
||||
tariffDescription.Create().TariffEntries["4"].Value, // Abo euro per month
|
||||
Is.EqualTo("920.99 €/month"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -979,7 +987,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().Number,
|
||||
tariffDescription.Create().Id,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
|
@ -990,8 +998,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FreeTimePerSession,
|
||||
Is.EqualTo(TimeSpan.Zero));
|
||||
tariffDescription.Create().TariffEntries.ContainsKey("1"), // Free time per session
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -1001,8 +1009,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().FeeEuroPerHour,
|
||||
Is.NaN);
|
||||
tariffDescription.Create().TariffEntries.ContainsKey("2"), // FeeEuroPerHour
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -1012,8 +1020,8 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
@"{}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.Create().AboEuroPerMonth,
|
||||
Is.NaN);
|
||||
tariffDescription.Create().TariffEntries.ContainsKey("4"), // Abo euro per month
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -1028,7 +1036,7 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
public void TestCreateTariffDescription_Number_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TariffDescription)null).Number,
|
||||
BikeInfoFactory.Create((TariffDescription)null).Id,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
|
@ -1036,24 +1044,24 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
public void TestCreateTariffDescription_FreeTimePerSession_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TariffDescription)null).FreeTimePerSession,
|
||||
Is.EqualTo(TimeSpan.Zero));
|
||||
BikeInfoFactory.Create((TariffDescription)null).TariffEntries.ContainsKey("1"), // Free time per session
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateTariffDescription_FeeEuroPerHour_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TariffDescription)null).FeeEuroPerHour,
|
||||
Is.NaN);
|
||||
BikeInfoFactory.Create((TariffDescription)null).TariffEntries.ContainsKey("2"), // FeeEuroPerHour
|
||||
Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateTariffDescription_AboEuroPerMonth_Null()
|
||||
{
|
||||
Assert.That(
|
||||
BikeInfoFactory.Create((TariffDescription)null).AboEuroPerMonth,
|
||||
Is.NaN);
|
||||
BikeInfoFactory.Create((TariffDescription)null).TariffEntries.ContainsKey("4"), // Abo euro per month
|
||||
Is.False);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -1301,5 +1309,192 @@ namespace TestTINKLib.Fixtures.Connector
|
|||
bookingFinished.MiniSurvey.Questions.Count,
|
||||
Is.EqualTo(0));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionEmpyJson()
|
||||
{
|
||||
var response = JsonConvert.DeserializeObject<RentalDescription>(@"");
|
||||
|
||||
Assert.That(
|
||||
response.Create().Name,
|
||||
Is.Empty);
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries.Count,
|
||||
Is.EqualTo(0));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries.Count,
|
||||
Is.EqualTo(0));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescription()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"": ""1"",
|
||||
""tarif_elements"" : {
|
||||
""6"": [
|
||||
""Gratis Mietzeit"",
|
||||
""30 Min / Tag""
|
||||
],
|
||||
""1"": [
|
||||
""Mietgebühr"",
|
||||
""2,00 € / 1 Std""
|
||||
],
|
||||
""4"": [
|
||||
""Max. Gebühr"",
|
||||
""40.00 € / Tag""
|
||||
]
|
||||
},
|
||||
""name"": ""REN E-Bike"",
|
||||
""rental_info"" : {
|
||||
""9"" : [
|
||||
""AGB"",
|
||||
""Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt""
|
||||
],
|
||||
""8"" : [
|
||||
""Tracking"",
|
||||
""Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().Name,
|
||||
Is.EqualTo("REN E-Bike"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().Id,
|
||||
Is.EqualTo(1));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries.Count,
|
||||
Is.EqualTo(3));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries.Count,
|
||||
Is.EqualTo(2));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["1"].Description,
|
||||
Is.EqualTo("Mietgebühr"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["1"].Value,
|
||||
Is.EqualTo("2,00 € / 1 Std"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["4"].Description,
|
||||
Is.EqualTo("Max. Gebühr"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["4"].Value,
|
||||
Is.EqualTo("40.00 € / Tag"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["6"].Description,
|
||||
Is.EqualTo("Gratis Mietzeit"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries["6"].Value,
|
||||
Is.EqualTo("30 Min / Tag"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries["8"].Key,
|
||||
Is.EqualTo("Tracking"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries["8"].Value,
|
||||
Is.EqualTo("Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries["9"].Key,
|
||||
Is.EqualTo("AGB"));
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries["9"].Value,
|
||||
Is.EqualTo("Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt"));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionDupeTarifElements()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"": ""1"",
|
||||
""tarif_elements"" : {
|
||||
""6"": [
|
||||
""Gratis Mietzeit"",
|
||||
""30 Min / Tag""
|
||||
],
|
||||
""6"": [
|
||||
""Mietgebühr"",
|
||||
""2,00 € / 1 Std""
|
||||
],
|
||||
""4"": [
|
||||
""Max. Gebühr"",
|
||||
""40.00 € / Tag""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries.Count,
|
||||
Is.EqualTo(2));
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionDupeInfoElements()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""rental_info"" : {
|
||||
""9"" : [
|
||||
""AGB"",
|
||||
""Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt""
|
||||
],
|
||||
""9"" : [
|
||||
""Tracking"",
|
||||
""Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries.Count,
|
||||
Is.EqualTo(1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionsNoTariffElements()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""rental_info"" : {
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().TariffEntries,
|
||||
Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCreateRentalDescriptionsNoInfoElements()
|
||||
{
|
||||
var response = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""rental_info"" : {
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
response.Create().InfoEntries,
|
||||
Is.Not.Null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
192
TestShareeLib/Repository/Response/TestRentalDescription.cs
Normal file
|
@ -0,0 +1,192 @@
|
|||
using NUnit.Framework;
|
||||
using System.Linq;
|
||||
using TINK.Repository.Response;
|
||||
|
||||
namespace TestShareeLib.Repository.Response
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestRentalDescription
|
||||
{
|
||||
[Test]
|
||||
public void TestDeserialize()
|
||||
{
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"": ""1"",
|
||||
""tarif_elements"" : {
|
||||
""6"": [
|
||||
""Gratis Mietzeit"",
|
||||
""30 Min / Tag""
|
||||
],
|
||||
""1"": [
|
||||
""Mietgebühr"",
|
||||
""2,00 € / 1 Std""
|
||||
],
|
||||
""4"": [
|
||||
""Max. Gebühr"",
|
||||
""40.00 € / Tag""
|
||||
]
|
||||
},
|
||||
""name"": ""REN E-Bike"",
|
||||
""rental_info"" : {
|
||||
""9"" : [
|
||||
""AGB"",
|
||||
""Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt""
|
||||
],
|
||||
""8"" : [
|
||||
""Tracking"",
|
||||
""Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.id,
|
||||
Is.EqualTo("1"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.name,
|
||||
Is.EqualTo("REN E-Bike"));
|
||||
|
||||
var tariffEntires = tariffDescription.tarif_elements.OrderBy(x => x.Key).Select(x => x.Value).ToList();
|
||||
Assert.That(
|
||||
tariffEntires.Count,
|
||||
Is.EqualTo(3));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[0][0],
|
||||
Is.EqualTo("Mietgebühr"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[0][1],
|
||||
Is.EqualTo("2,00 € / 1 Std"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[1][0],
|
||||
Is.EqualTo("Max. Gebühr"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[1][1],
|
||||
Is.EqualTo("40.00 € / Tag"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[2][0],
|
||||
Is.EqualTo("Gratis Mietzeit"));
|
||||
|
||||
Assert.That(
|
||||
tariffEntires[2][1],
|
||||
Is.EqualTo("30 Min / Tag"));
|
||||
|
||||
var rentalInfo = tariffDescription.rental_info.OrderBy(x => x.Key).Select(x => x.Value).ToList();
|
||||
Assert.That(
|
||||
rentalInfo.Count,
|
||||
Is.EqualTo(2));
|
||||
|
||||
Assert.That(
|
||||
rentalInfo[0][0],
|
||||
Is.EqualTo("Tracking"));
|
||||
|
||||
Assert.That(
|
||||
rentalInfo[0][1],
|
||||
Is.EqualTo("Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!"));
|
||||
|
||||
Assert.That(
|
||||
rentalInfo[1][0],
|
||||
Is.EqualTo("AGB"));
|
||||
|
||||
Assert.That(
|
||||
rentalInfo[1][1],
|
||||
Is.EqualTo("Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that missing elements are initialized correctly.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestDeserialize_Missing()
|
||||
{
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"" : ""5494"",
|
||||
""name"" : ""Tester Basic""
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.id,
|
||||
Is.EqualTo("5494"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.name,
|
||||
Is.EqualTo("Tester Basic"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.tarif_elements,
|
||||
Is.Null);
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.rental_info,
|
||||
Is.Null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that unknown elemts in JSON to not lead to firing of exceptions.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void TestDeserialize_NewElement()
|
||||
{
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"" : ""5494"",
|
||||
""name"" : ""Tester Basic"",
|
||||
""FancyNewElement"" : ""Yeah""
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.id,
|
||||
Is.EqualTo("5494"));
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.name,
|
||||
Is.EqualTo("Tester Basic"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDeserializeDuplicateKey()
|
||||
{
|
||||
var tariffDescription = JsonConvertRethrow.DeserializeObject<RentalDescription>(
|
||||
@"{
|
||||
""id"": ""1"",
|
||||
""tarif_elements"" : {
|
||||
""6"": [
|
||||
""Gratis Mietzeit"",
|
||||
""30 Min / Tag""
|
||||
],
|
||||
""6"": [
|
||||
""Mietgebühr"",
|
||||
""2,00 € / 1 Std""
|
||||
],
|
||||
""4"": [
|
||||
""Max. Gebühr"",
|
||||
""40.00 € / Tag""
|
||||
]
|
||||
},
|
||||
""name"": ""REN E-Bike"",
|
||||
""rental_info"" : {
|
||||
""9"" : [
|
||||
""AGB"",
|
||||
""Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt""
|
||||
],
|
||||
""8"" : [
|
||||
""Tracking"",
|
||||
""Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!""
|
||||
]
|
||||
}
|
||||
}");
|
||||
|
||||
Assert.That(
|
||||
tariffDescription.tarif_elements.Count,
|
||||
Is.EqualTo(2),
|
||||
"Dupliate elements are supposed to be ignored.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -663,7 +663,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -740,7 +740,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -813,7 +813,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -889,7 +889,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -965,7 +965,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1039,7 +1039,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1098,7 +1098,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1280,7 +1280,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1342,7 +1342,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1405,7 +1405,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
Substitute.For<IUser>());
|
||||
|
||||
// Verify prerequisites.
|
||||
Assert.AreEqual("Open lock & continue renting", handler.ButtonText);
|
||||
Assert.AreEqual("Open lock", handler.ButtonText);
|
||||
Assert.IsTrue(handler.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", handler.LockitButtonText);
|
||||
Assert.IsTrue(handler.IsLockitButtonVisible);
|
||||
|
@ -227,7 +227,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
});
|
||||
|
||||
// Verify state "Booked Unknown" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
@ -289,7 +289,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -347,7 +347,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
});
|
||||
|
||||
// Verify state "Booked Disconnected" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
@ -793,7 +793,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -975,7 +975,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1037,7 +1037,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -1100,7 +1100,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -229,7 +229,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
});
|
||||
|
||||
// Verify state "Booked Unknown" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
@ -291,7 +291,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -349,7 +349,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
});
|
||||
|
||||
// Verify state "Booked Disconnected" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
@ -666,7 +666,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -845,7 +845,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -907,7 +907,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -970,7 +970,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,80 @@
|
|||
using NUnit.Framework;
|
||||
using TINK.Model.Bikes.Bike;
|
||||
using TINK.ViewModel.Bikes.Bike;
|
||||
|
||||
namespace TestShareeLib.ViewModel.Bikes.Bike
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestTariffDescriptionViewModel
|
||||
{
|
||||
[Test]
|
||||
public void TestCtor()
|
||||
{
|
||||
var model = new RentalDescription
|
||||
{
|
||||
Name = "Fancy Tarif",
|
||||
Id = 47,
|
||||
TariffEntries = new System.Collections.Generic.Dictionary<string, RentalDescription.TariffElement>
|
||||
{
|
||||
{ "23", new RentalDescription.TariffElement { Value = "Max Gebühr", Description = "9.00 € / Tag"} },
|
||||
{ "24", new RentalDescription.TariffElement { Value = "Gratis Mietzeit", Description = "30 Min / Tag"} },
|
||||
},
|
||||
InfoEntries = new System.Collections.Generic.Dictionary<string, RentalDescription.InfoElement>
|
||||
{
|
||||
{ "15", new RentalDescription.InfoElement { Key = "Tracking", Value = "Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!" } },
|
||||
{ "22", new RentalDescription.InfoElement { Key = "AGB", Value ="Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt"} }
|
||||
}
|
||||
};
|
||||
|
||||
var viewModel = new TariffDescriptionViewModel(model);
|
||||
|
||||
Assert.That(
|
||||
viewModel.Name,
|
||||
Is.EqualTo("Fancy Tarif"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TariffEntries.Count,
|
||||
Is.EqualTo(2));
|
||||
|
||||
Assert.That(
|
||||
viewModel.InfoEntries.Count,
|
||||
Is.EqualTo(1));
|
||||
|
||||
Assert.That(
|
||||
viewModel.OperatorAgb,
|
||||
Is.EqualTo("Mit der Mietrad Anmietung wird folgender Betreiber <a href='$varenv->{wwwhost}/site/agb.html' target='_blank'>AGB</a> zugestimmt"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry1.Value,
|
||||
Is.EqualTo("Max Gebühr"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry1.Description,
|
||||
Is.EqualTo("9.00 € / Tag"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry2.Value,
|
||||
Is.EqualTo("Gratis Mietzeit"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry2.Description,
|
||||
Is.EqualTo("30 Min / Tag"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry3.Value,
|
||||
Is.Empty);
|
||||
|
||||
Assert.That(
|
||||
viewModel.TarifEntry3.Description,
|
||||
Is.Empty);
|
||||
|
||||
Assert.That(
|
||||
viewModel.InfoEntry1,
|
||||
Is.EqualTo("Ich stimme der Speicherung (Tracking) meiner Fahrstrecke zwecks wissenschaftlicher Auswertung und Berechnung der CO2-Einsparung zu!"));
|
||||
|
||||
Assert.That(
|
||||
viewModel.InfoEntry2,
|
||||
Is.Empty);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -290,7 +290,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
|||
Assert.AreEqual("Available.", bike1315.StateText);
|
||||
Assert.AreEqual("Available.", bike1543.StateText);
|
||||
Assert.AreEqual("Close lock", bike1545.LockitButtonText);
|
||||
Assert.AreEqual("Open lock & continue renting", bike1537.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", bike1537.LockitButtonText);
|
||||
Assert.AreEqual("DisposableDisconnected", bike1315.LockitButtonText);
|
||||
Assert.AreEqual("DisposableDisconnected", bike1543.LockitButtonText);
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ namespace UITest.Fixtures.ObjectTests
|
|||
[Test]
|
||||
public async Task TestStopUpdatePeriodiallyRepeated()
|
||||
{
|
||||
var l_oManger = new PollingUpdateTaskManager(() => "Test", () => Task.Delay(1000));
|
||||
var l_oManger = new PollingUpdateTaskManager(() => Task.Delay(1000));
|
||||
|
||||
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
||||
|
||||
|
@ -24,7 +24,7 @@ namespace UITest.Fixtures.ObjectTests
|
|||
[Test]
|
||||
public async Task TestStartUpdatePeriodiallyRepeated()
|
||||
{
|
||||
var l_oManger = new PollingUpdateTaskManager(() => "Test", () => Task.Delay(1000));
|
||||
var l_oManger = new PollingUpdateTaskManager(() => Task.Delay(1000));
|
||||
|
||||
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
||||
|
||||
|
@ -37,7 +37,7 @@ namespace UITest.Fixtures.ObjectTests
|
|||
[Test]
|
||||
public async Task TestStopUpdatePeriodiallyNoStart()
|
||||
{
|
||||
var l_oManger = new PollingUpdateTaskManager(() => "Test", () => Task.Delay(1000));
|
||||
var l_oManger = new PollingUpdateTaskManager(() => Task.Delay(1000));
|
||||
|
||||
// Should not lead to dead lock.
|
||||
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
45
TestShareeLib/ViewModel/TestPollingUpdateTask.cs
Normal file
|
@ -0,0 +1,45 @@
|
|||
using NUnit.Framework;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.ViewModel;
|
||||
|
||||
namespace TestTINKLib.Fixtures.ObjectTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestPollingUpdateTask
|
||||
{
|
||||
/// <summary>
|
||||
/// Verify that no exception is thrown when invoking Terminate.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async Task TestCtorPollingOff()
|
||||
{
|
||||
var task = new PollingUpdateTask(() => throw new System.Exception("This must not be called."), null);
|
||||
|
||||
await task.Terminate();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestCtorPollingOn()
|
||||
{
|
||||
int index = 0;
|
||||
var task = new PollingUpdateTask(() => index++, new System.TimeSpan(10));
|
||||
|
||||
System.Threading.SpinWait.SpinUntil(() => index > 2);
|
||||
|
||||
await task.Terminate();
|
||||
|
||||
Assert.That(index, Is.AtLeast(3), "Delegate which increments index must be called.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestTerminateRepeated()
|
||||
{
|
||||
var tasks = new PollingUpdateTask(async () => await Task.Delay(1000), new System.TimeSpan(0, 0, 2));
|
||||
|
||||
tasks.Terminate().Wait();
|
||||
|
||||
// Verify that calling terminate twice does not lead to hang of call.
|
||||
tasks.Terminate().Wait();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -26,7 +26,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.Bike
|
|||
string stationId = null,
|
||||
string stationName = null,
|
||||
Uri operatorUri = null,
|
||||
TariffDescription tariffDescription = null,
|
||||
RentalDescription tariffDescription = null,
|
||||
Func<DateTime> dateTimeProvider = null,
|
||||
IStateInfo stateInfo = null) : base(id, lockModel, isDemo, group, wheelType, typeOfBike, description, stationId, stationName, operatorUri, tariffDescription, dateTimeProvider, stateInfo)
|
||||
{
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
using NUnit.Framework;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.ViewModel;
|
||||
|
||||
namespace TestTINKLib.Fixtures.ObjectTests
|
||||
{
|
||||
[TestFixture]
|
||||
public class TestPollingUpdateTask
|
||||
{
|
||||
[Test]
|
||||
public void TestTerminateRepeated()
|
||||
{
|
||||
var l_oTaks = new PollingUpdateTask(() => "Test", async () => await Task.Delay(1000), new System.TimeSpan(0, 0, 2));
|
||||
|
||||
l_oTaks.Terminate().Wait();
|
||||
|
||||
// Verify that calling terminate twice does not lead to hang of call.
|
||||
l_oTaks.Terminate().Wait();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -49,7 +49,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify prerequisites.
|
||||
Assert.AreEqual("Return bike", handler.ButtonText);
|
||||
Assert.IsTrue(handler.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", handler.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", handler.LockitButtonText);
|
||||
Assert.IsTrue(handler.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -373,7 +373,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -443,7 +443,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -513,7 +513,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -581,7 +581,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -648,7 +648,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -827,7 +827,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
});
|
||||
|
||||
// Verify state "Booked Unknown" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
@ -890,7 +890,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
// Verify state "Booked Closed" after action
|
||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
}
|
||||
|
||||
|
@ -948,7 +948,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
|||
});
|
||||
|
||||
// Verify state "Booked Disconnected" after action
|
||||
Assert.AreEqual("Open lock & continue renting", subsequent.ButtonText);
|
||||
Assert.AreEqual("Open lock", subsequent.ButtonText);
|
||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||
|
|
|
@ -123,7 +123,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
|||
Assert.AreEqual($"Rented since {DateTime.Parse("2020-11-06 17:53:22.784681+01"):dd. MMMM HH:mm}.", bike1545.StateText);
|
||||
Assert.AreEqual($"Rented since {DateTime.Parse("2020-10-12 08:38:12.374231+02"):dd. MMMM HH:mm}.", bike1537.StateText);
|
||||
Assert.AreEqual("Close lock", bike1545.LockitButtonText);
|
||||
Assert.AreEqual("Open lock & continue renting", bike1537.LockitButtonText);
|
||||
Assert.AreEqual("Open lock", bike1537.LockitButtonText);
|
||||
|
||||
Assert.IsFalse(myBikes.IsNoBikesOccupiedVisible);
|
||||
Assert.IsEmpty(myBikes.NoBikesOccupiedText);
|
||||
|
@ -212,7 +212,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
|||
permissions.OpenAppSettings();
|
||||
});
|
||||
|
||||
Assert.IsEmpty(myBikes.StatusInfoText);
|
||||
Assert.IsEmpty(myBikes.StatusInfoText, "Unexpected status info text detected.");
|
||||
|
||||
Assert.AreEqual(2, myBikes.Count);
|
||||
Assert.IsTrue(myBikes.IsIdle);
|
||||
|
@ -226,7 +226,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
|||
Assert.AreEqual("Search lock", bike1537.LockitButtonText);
|
||||
|
||||
Assert.IsFalse(myBikes.IsNoBikesOccupiedVisible);
|
||||
Assert.IsEmpty(myBikes.NoBikesOccupiedText);
|
||||
Assert.IsEmpty(myBikes.NoBikesOccupiedText, "There must not be any bikes occupied.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -314,7 +314,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
|||
"No");
|
||||
});
|
||||
|
||||
Assert.IsEmpty(myBikes.StatusInfoText);
|
||||
Assert.IsEmpty(myBikes.StatusInfoText, "Unexpected status info text detected.");
|
||||
|
||||
Assert.AreEqual(2, myBikes.Count);
|
||||
Assert.IsTrue(myBikes.IsIdle);
|
||||
|
@ -328,7 +328,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
|||
Assert.AreEqual("Search lock", bike1537.LockitButtonText);
|
||||
|
||||
Assert.IsFalse(myBikes.IsNoBikesOccupiedVisible);
|
||||
Assert.IsEmpty(myBikes.NoBikesOccupiedText);
|
||||
Assert.IsEmpty(myBikes.NoBikesOccupiedText, "There must not be any bikes occupied.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
|
|
@ -84,8 +84,6 @@
|
|||
<Compile Include="Fixtures\ObjectTests\TestFilterCollection.cs" />
|
||||
<Compile Include="Fixtures\ObjectTests\TestFilterCollectionStore.cs" />
|
||||
<Compile Include="Fixtures\ObjectTests\TestJsonSettingsDictionary.cs" />
|
||||
<Compile Include="Fixtures\ObjectTests\TestPollingTaskManager.cs" />
|
||||
<Compile Include="Fixtures\ObjectTests\TestPollingUpdateTask.cs" />
|
||||
<Compile Include="Fixtures\ObjectTests\TestWhatsNew.cs" />
|
||||
<Compile Include="Fixtures\ObjectTests\User\Account\TestAccount.cs" />
|
||||
<Compile Include="Fixtures\ObjectTests\User\Account\TestAccountExtensions.cs" />
|
||||
|
|