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"?>
|
<?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" />
|
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
|
||||||
<!-- Google Maps related permissions -->
|
<!-- Google Maps related permissions -->
|
||||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
<!-- 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
|
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>
|
<array>
|
||||||
<string>applinks:sharee.bike</string>
|
<string>applinks:sharee.bike</string>
|
||||||
</array>
|
</array>
|
||||||
|
<key>application-identifier</key>
|
||||||
|
<string>LXJD6URCHR.com.TeilRad.LastenradBayern</string>
|
||||||
|
<key>com.apple.developer.team-identifier</key>
|
||||||
|
<string>LXJD6URCHR</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -53,8 +53,8 @@
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>LastenradBayern</string>
|
<string>LastenradBayern</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>299</string>
|
<string>312</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.0.299</string>
|
<string>3.0.312</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -1479,7 +1479,7 @@
|
||||||
<ImageAsset Include="Media.xcassets\sharee_no_background.imageset\Contents.json">
|
<ImageAsset Include="Media.xcassets\sharee_no_background.imageset\Contents.json">
|
||||||
<Visible>false</Visible>
|
<Visible>false</Visible>
|
||||||
</ImageAsset>
|
</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>
|
<Visible>false</Visible>
|
||||||
</ImageAsset>
|
</ImageAsset>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"images": [
|
"images": [
|
||||||
{
|
{
|
||||||
"filename": "LastenradBayern-iOS-abgerundet.pdf",
|
"filename": "sharee_no_background.pdf",
|
||||||
"idiom": "universal"
|
"idiom": "universal"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -48,11 +48,13 @@
|
||||||
"idiom": "ipad"
|
"idiom": "ipad"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"idiom": "watch"
|
"idiom": "watch",
|
||||||
|
"screen-width": ">183"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"idiom": "watch"
|
"idiom": "watch",
|
||||||
|
"screen-width": ">183"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"screenWidth": "{130,145}",
|
"screenWidth": "{130,145}",
|
||||||
|
@ -221,7 +223,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"idiom": "watch"
|
"idiom": "watch",
|
||||||
|
"screen-width": ">145"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"screenWidth": "{130,145}",
|
"screenWidth": "{130,145}",
|
||||||
|
@ -438,7 +441,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"idiom": "watch"
|
"idiom": "watch",
|
||||||
|
"screen-width": ">145"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"screenWidth": "{130,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)ViewModel\RootFlyout\RootPageViewModel.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)View\Account\AccountPage.xaml.cs">
|
<Compile Include="$(MSBuildThisFileDirectory)View\Account\AccountPage.xaml.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
<DependentUpon>%(Filename)</DependentUpon>
|
<DependentUpon>AccountPage.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)View\Bike\BCBike.xaml.cs">
|
<Compile Include="$(MSBuildThisFileDirectory)View\Bike\BCBike.xaml.cs">
|
||||||
<DependentUpon>BCBike.xaml</DependentUpon>
|
<DependentUpon>BCBike.xaml</DependentUpon>
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:Class="TINK.View.Account.AccountPage">
|
x:Class="TINK.View.Account.AccountPage"
|
||||||
|
Title="{x:Static resources:AppResources.MarkingAccount}">
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Frame>
|
<Frame>
|
||||||
<StackLayout>
|
<StackLayout>
|
||||||
|
|
|
@ -13,16 +13,19 @@
|
||||||
</ContentView.Resources>
|
</ContentView.Resources>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Padding="10">
|
Padding="10">
|
||||||
|
<!-- Name of the bike -->
|
||||||
<Label
|
<Label
|
||||||
FontAttributes="Bold"
|
FontAttributes="Bold"
|
||||||
FontSize="Large"
|
FontSize="Large"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center"
|
||||||
Text="{Binding Name}"/>
|
Text="{Binding Name}"/>
|
||||||
|
<!-- Id of the bike -->
|
||||||
<Label
|
<Label
|
||||||
FontAttributes="Bold"
|
FontAttributes="Bold"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center"
|
||||||
IsVisible="{Binding DisplayId, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding DisplayId, Converter={StaticResource Label_Converter}}"
|
||||||
Text="{Binding DisplayId}"/>
|
Text="{Binding DisplayId}"/>
|
||||||
|
<!-- Rental state -->
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding StateText}"
|
Text="{Binding StateText}"
|
||||||
TextColor="{Binding StateColor}"/>
|
TextColor="{Binding StateColor}"/>
|
||||||
|
@ -40,9 +43,12 @@
|
||||||
IsVisible="{Binding IsLockitButtonVisible}"
|
IsVisible="{Binding IsLockitButtonVisible}"
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Command="{Binding OnLockitButtonClicked}"/>
|
Command="{Binding OnLockitButtonClicked}"/>
|
||||||
|
<!-- Rental description (tarif name, options and rental info -->
|
||||||
<Grid
|
<Grid
|
||||||
|
RowSpacing="0"
|
||||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
|
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
<!-- start tarif- entries -->
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<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" />
|
||||||
|
<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.RowDefinitions>
|
||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
<!-- start tarif- entries (should be a CollectionView) -->
|
||||||
<Label
|
<Label
|
||||||
Text=
|
Text= "{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
||||||
"{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||||
|
Grid.Row="0"
|
||||||
FontAttributes="Bold"/>
|
FontAttributes="Bold"/>
|
||||||
<Label
|
<Label
|
||||||
Text=
|
Text="{Binding TariffDescription.Header}"
|
||||||
"{Binding TariffDescription.Header}"
|
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||||
|
Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.ColumnSpan="2"
|
|
||||||
FontAttributes="Bold"/>
|
FontAttributes="Bold"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFreeTimePerSession}"
|
Text= "{Binding TariffDescription.TarifEntry1.Description}"
|
||||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry1.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="1"/>
|
Grid.Row="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.FreeTimePerSession}"
|
Text="{Binding TariffDescription.TarifEntry1.Value}"
|
||||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry1.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"/>
|
Grid.Column="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFeeEuroPerHour}"
|
Text= "{Binding TariffDescription.TarifEntry2.Description}"
|
||||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry2.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="2"/>
|
Grid.Row="2"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.FeeEuroPerHour}"
|
Text="{Binding TariffDescription.TarifEntry2.Value}"
|
||||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry2.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"/>
|
Grid.Column="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionMaxFeeEuroPerDay}"
|
Text= "{Binding TariffDescription.TarifEntry3.Description}"
|
||||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry3.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="3"/>
|
Grid.Row="3"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.MaxFeeEuroPerDay}"
|
Text="{Binding TariffDescription.TarifEntry3.Value}"
|
||||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry3.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"/>
|
Grid.Column="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionAboEuroPerMonth}"
|
Text= "{Binding TariffDescription.TarifEntry4.Description}"
|
||||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry4.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="4"/>
|
Grid.Row="4"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.AboEuroPerMonth}"
|
Text="{Binding TariffDescription.TarifEntry4.Value}"
|
||||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry4.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"/>
|
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
|
<Label
|
||||||
TextType="Html"
|
TextType="Html"
|
||||||
Text="{Binding TariffDescription.OperatorAgb}"
|
Text="{Binding TariffDescription.OperatorAgb}"
|
||||||
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="5"
|
Grid.ColumnSpan="2"
|
||||||
Grid.ColumnSpan="3">
|
Grid.Row="15">
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
<TapGestureRecognizer Command="{Binding ShowAgbTappedCommand}"/>
|
<TapGestureRecognizer Command="{Binding ShowAgbTappedCommand}"/>
|
||||||
</Label.GestureRecognizers>
|
</Label.GestureRecognizers>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
x:Class="TINK.View.Contact.ContactPage"
|
x:Class="TINK.View.Contact.ContactPage"
|
||||||
Title="{x:Static resources:AppResources.MarkingContactPageTitle}">
|
Title="{x:Static resources:AppResources.MarkingFeedbackAndContact}">
|
||||||
<ContentPage.Resources>
|
<ContentPage.Resources>
|
||||||
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="StringNotNullOrEmpty_Converter"/>
|
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="StringNotNullOrEmpty_Converter"/>
|
||||||
<conv:BoolInverterConverter x:Key="BoolInvert_Converter"/>
|
<conv:BoolInverterConverter x:Key="BoolInvert_Converter"/>
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
|
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
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-->
|
<!--Pages can be added as references or inline-->
|
||||||
<ContentPage Title="{x:Static resources:AppResources.MarkingTabFees}">
|
<ContentPage Title="{x:Static resources:AppResources.MarkingTabFees}">
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
x:Class="TINK.View.FindBike.FindBikePage"
|
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>
|
<ContentPage.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<local_bike:BikeViewCellTemplateSelector x:Key="bikeTemplateSelector"/>
|
<local_bike:BikeViewCellTemplateSelector x:Key="bikeTemplateSelector"/>
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
|
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
x:Class="TINK.View.Info.InfoPage"
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
x:Name="TabbedInfoPage">
|
x:Class="TINK.View.Info.InfoPage"
|
||||||
|
x:Name="TabbedInfoPage"
|
||||||
|
Title="{x:Static resources:AppResources.MarkingAbout}">
|
||||||
<!--Pages can be added as references or inline-->
|
<!--Pages can be added as references or inline-->
|
||||||
<ContentPage Title="App">
|
<ContentPage Title="App">
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
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>
|
<ScrollView>
|
||||||
<Frame>
|
<Frame>
|
||||||
<StackLayout x:Name="LoginPageView">
|
<StackLayout x:Name="LoginPageView">
|
||||||
|
|
|
@ -4,15 +4,24 @@
|
||||||
BackgroundColor="#009bda"
|
BackgroundColor="#009bda"
|
||||||
x:Class="TINK.View.RootShell.FlyoutHeader">
|
x:Class="TINK.View.RootShell.FlyoutHeader">
|
||||||
|
|
||||||
<Grid Padding="0">
|
<Grid Padding="20">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="200" />
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition Height="55" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="363" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Image
|
<Image
|
||||||
Aspect="AspectFit"
|
Grid.Row="0"
|
||||||
|
HeightRequest="100"
|
||||||
|
Aspect="AspectFit"
|
||||||
|
HorizontalOptions="StartAndExpand"
|
||||||
Source="sharee_no_background.png"/>
|
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>
|
</Grid>
|
||||||
</ContentView>
|
</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"
|
x:Class="TINK.View.Settings.SettingsPage"
|
||||||
xmlns:conv="clr-namespace:TINK.View.Settings;assembly=TINKLib"
|
xmlns:conv="clr-namespace:TINK.View.Settings;assembly=TINKLib"
|
||||||
xmlns:account="clr-namespace:TINK.Model.User.Account;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>
|
<ContentPage.Resources>
|
||||||
<conv:BackendPermissionsToVisibleConverter x:Key="Frame_Converter"/>
|
<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"?>
|
<?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" />
|
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
|
||||||
<!-- Google Maps related permissions -->
|
<!-- Google Maps related permissions -->
|
||||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
<!-- 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
|
public partial class Resource
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -53,8 +53,8 @@
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>Mein konrad</string>
|
<string>Mein konrad</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>299</string>
|
<string>312</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.0.299</string>
|
<string>3.0.312</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -27,8 +27,8 @@
|
||||||
<MtouchArch>i386, x86_64</MtouchArch>
|
<MtouchArch>i386, x86_64</MtouchArch>
|
||||||
<MtouchLink>None</MtouchLink>
|
<MtouchLink>None</MtouchLink>
|
||||||
<MtouchDebug>true</MtouchDebug>
|
<MtouchDebug>true</MtouchDebug>
|
||||||
<CodesignProvision>VS: com.TeilRad.Meinkonrad Development</CodesignProvision>
|
<CodesignProvision>Automatic</CodesignProvision>
|
||||||
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
|
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
|
||||||
<DebugType>none</DebugType>
|
<DebugType>none</DebugType>
|
||||||
|
|
|
@ -13,16 +13,19 @@
|
||||||
</ContentView.Resources>
|
</ContentView.Resources>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Padding="10">
|
Padding="10">
|
||||||
|
<!-- Name of the bike -->
|
||||||
<Label
|
<Label
|
||||||
FontAttributes="Bold"
|
FontAttributes="Bold"
|
||||||
FontSize="Large"
|
FontSize="Large"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center"
|
||||||
Text="{Binding Name}"/>
|
Text="{Binding Name}"/>
|
||||||
|
<!-- Id of the bike -->
|
||||||
<Label
|
<Label
|
||||||
FontAttributes="Bold"
|
FontAttributes="Bold"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center"
|
||||||
IsVisible="{Binding DisplayId, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding DisplayId, Converter={StaticResource Label_Converter}}"
|
||||||
Text="{Binding DisplayId}"/>
|
Text="{Binding DisplayId}"/>
|
||||||
|
<!-- Rental state -->
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding StateText}"
|
Text="{Binding StateText}"
|
||||||
TextColor="{Binding StateColor}"/>
|
TextColor="{Binding StateColor}"/>
|
||||||
|
@ -40,9 +43,12 @@
|
||||||
IsVisible="{Binding IsLockitButtonVisible}"
|
IsVisible="{Binding IsLockitButtonVisible}"
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Command="{Binding OnLockitButtonClicked}"/>
|
Command="{Binding OnLockitButtonClicked}"/>
|
||||||
|
<!-- Rental description (tarif name, options and rental info -->
|
||||||
<Grid
|
<Grid
|
||||||
|
RowSpacing="0"
|
||||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
|
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
<!-- start tarif- entries -->
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<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" />
|
||||||
|
<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.RowDefinitions>
|
||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
<!-- start tarif- entries (should be a CollectionView) -->
|
||||||
<Label
|
<Label
|
||||||
Text=
|
Text= "{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
||||||
"{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||||
|
Grid.Row="0"
|
||||||
FontAttributes="Bold"/>
|
FontAttributes="Bold"/>
|
||||||
<Label
|
<Label
|
||||||
Text=
|
Text="{Binding TariffDescription.Header}"
|
||||||
"{Binding TariffDescription.Header}"
|
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||||
|
Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.ColumnSpan="2"
|
|
||||||
FontAttributes="Bold"/>
|
FontAttributes="Bold"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFreeTimePerSession}"
|
Text= "{Binding TariffDescription.TarifEntry1.Description}"
|
||||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry1.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="1"/>
|
Grid.Row="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.FreeTimePerSession}"
|
Text="{Binding TariffDescription.TarifEntry1.Value}"
|
||||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry1.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"/>
|
Grid.Column="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFeeEuroPerHour}"
|
Text= "{Binding TariffDescription.TarifEntry2.Description}"
|
||||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry2.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="2"/>
|
Grid.Row="2"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.FeeEuroPerHour}"
|
Text="{Binding TariffDescription.TarifEntry2.Value}"
|
||||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry2.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"/>
|
Grid.Column="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionMaxFeeEuroPerDay}"
|
Text= "{Binding TariffDescription.TarifEntry3.Description}"
|
||||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry3.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="3"/>
|
Grid.Row="3"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.MaxFeeEuroPerDay}"
|
Text="{Binding TariffDescription.TarifEntry3.Value}"
|
||||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry3.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"/>
|
Grid.Column="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionAboEuroPerMonth}"
|
Text= "{Binding TariffDescription.TarifEntry4.Description}"
|
||||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry4.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="4"/>
|
Grid.Row="4"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.AboEuroPerMonth}"
|
Text="{Binding TariffDescription.TarifEntry4.Value}"
|
||||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry4.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"/>
|
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
|
<Label
|
||||||
TextType="Html"
|
TextType="Html"
|
||||||
Text="{Binding TariffDescription.OperatorAgb}"
|
Text="{Binding TariffDescription.OperatorAgb}"
|
||||||
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="5"
|
Grid.ColumnSpan="2"
|
||||||
Grid.ColumnSpan="3">
|
Grid.Row="15">
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
<TapGestureRecognizer Command="{Binding ShowAgbTappedCommand}"/>
|
<TapGestureRecognizer Command="{Binding ShowAgbTappedCommand}"/>
|
||||||
</Label.GestureRecognizers>
|
</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"?>
|
<?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" />
|
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
|
||||||
<!-- Google Maps related permissions -->
|
<!-- Google Maps related permissions -->
|
||||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
<!-- 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
|
public partial class Resource
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -26708,6 +26708,9 @@ namespace TINK.Droid
|
||||||
// aapt resource value: 0x7F0D001F
|
// aapt resource value: 0x7F0D001F
|
||||||
public const int bottomsheet_action_expand_halfway = 2131558431;
|
public const int bottomsheet_action_expand_halfway = 2131558431;
|
||||||
|
|
||||||
|
// aapt resource value: 0x7F0D001F
|
||||||
|
public const int bottomsheet_action_expand_halfway = 2131558431;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0D001E
|
// aapt resource value: 0x7F0D001E
|
||||||
public const int bottom_sheet_behavior = 2131558430;
|
public const int bottom_sheet_behavior = 2131558430;
|
||||||
|
|
||||||
|
@ -26828,8 +26831,8 @@ namespace TINK.Droid
|
||||||
// aapt resource value: 0x7F0D0046
|
// aapt resource value: 0x7F0D0046
|
||||||
public const int google_storage_bucket = 2131558470;
|
public const int google_storage_bucket = 2131558470;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0E003E
|
// aapt resource value: 0x7F0D0001
|
||||||
public const int fab_transformation_scrim_behavior = 2131623998;
|
public const int Hello = 2131558401;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0D0047
|
// aapt resource value: 0x7F0D0047
|
||||||
public const int hide_bottom_view_on_scroll_behavior = 2131558471;
|
public const int hide_bottom_view_on_scroll_behavior = 2131558471;
|
||||||
|
@ -27510,32 +27513,32 @@ namespace TINK.Droid
|
||||||
// aapt resource value: 0x7F0E0081
|
// aapt resource value: 0x7F0E0081
|
||||||
public const int Base_V14_ThemeOverlay_MaterialComponents_MaterialAlertDialog = 2131624065;
|
public const int Base_V14_ThemeOverlay_MaterialComponents_MaterialAlertDialog = 2131624065;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0F0081
|
// aapt resource value: 0x7F0E0075
|
||||||
public const int Base_V14_ThemeOverlay_MaterialComponents_MaterialAlertDialog = 2131689601;
|
public const int Base_V14_Theme_MaterialComponents = 2131624053;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0F0075
|
// aapt resource value: 0x7F0E0076
|
||||||
public const int Base_V14_Theme_MaterialComponents = 2131689589;
|
public const int Base_V14_Theme_MaterialComponents_Bridge = 2131624054;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0F0076
|
// aapt resource value: 0x7F0E0077
|
||||||
public const int Base_V14_Theme_MaterialComponents_Bridge = 2131689590;
|
public const int Base_V14_Theme_MaterialComponents_Dialog = 2131624055;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0F0077
|
// aapt resource value: 0x7F0E0078
|
||||||
public const int Base_V14_Theme_MaterialComponents_Dialog = 2131689591;
|
public const int Base_V14_Theme_MaterialComponents_Dialog_Bridge = 2131624056;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0F0078
|
// aapt resource value: 0x7F0E0079
|
||||||
public const int Base_V14_Theme_MaterialComponents_Dialog_Bridge = 2131689592;
|
public const int Base_V14_Theme_MaterialComponents_Light = 2131624057;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0F0079
|
// aapt resource value: 0x7F0E007A
|
||||||
public const int Base_V14_Theme_MaterialComponents_Light = 2131689593;
|
public const int Base_V14_Theme_MaterialComponents_Light_Bridge = 2131624058;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0F007A
|
// aapt resource value: 0x7F0E007B
|
||||||
public const int Base_V14_Theme_MaterialComponents_Light_Bridge = 2131689594;
|
public const int Base_V14_Theme_MaterialComponents_Light_DarkActionBar_Bridge = 2131624059;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0F007B
|
// aapt resource value: 0x7F0E007C
|
||||||
public const int Base_V14_Theme_MaterialComponents_Light_DarkActionBar_Bridge = 2131689595;
|
public const int Base_V14_Theme_MaterialComponents_Light_Dialog = 2131624060;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0F007C
|
// aapt resource value: 0x7F0E007D
|
||||||
public const int Base_V14_Theme_MaterialComponents_Light_Dialog = 2131689596;
|
public const int Base_V14_Theme_MaterialComponents_Light_Dialog_Bridge = 2131624061;
|
||||||
|
|
||||||
// aapt resource value: 0x7F0E008A
|
// aapt resource value: 0x7F0E008A
|
||||||
public const int Base_V21_ThemeOverlay_AppCompat_Dialog = 2131624074;
|
public const int Base_V21_ThemeOverlay_AppCompat_Dialog = 2131624074;
|
||||||
|
|
|
@ -45,6 +45,9 @@
|
||||||
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
|
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
|
||||||
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
|
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
|
||||||
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
||||||
|
<AndroidPackageFormat>aab</AndroidPackageFormat>
|
||||||
|
<AndroidUseAapt2>true</AndroidUseAapt2>
|
||||||
|
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
|
@ -62,6 +65,9 @@
|
||||||
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
|
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
|
||||||
<MandroidI18n />
|
<MandroidI18n />
|
||||||
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
<AndroidEnableMultiDex>true</AndroidEnableMultiDex>
|
||||||
|
<AndroidPackageFormat>aab</AndroidPackageFormat>
|
||||||
|
<AndroidUseAapt2>true</AndroidUseAapt2>
|
||||||
|
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||||
|
|
|
@ -32,11 +32,11 @@ namespace TINK.iOS
|
||||||
};
|
};
|
||||||
LoadApplication (new TINK.App ());
|
LoadApplication (new TINK.App ());
|
||||||
|
|
||||||
// Required for initialization of Maps, see https://developer.xamarin.com/guides/xamarin-forms/user-interface/map/
|
// Required for initialization of Maps, see https://developer.xamarin.com/guides/xamarin-forms/user-interface/map/
|
||||||
Xamarin.FormsGoogleMaps.Init("000000000000000000000000000000000000000");
|
Xamarin.FormsGoogleMaps.Init("000000000000000000000000000000000000000");
|
||||||
|
|
||||||
// Required for initialization of binding package, see https://github.com/nuitsjp/Xamarin.Forms.GoogleMaps.Bindings.
|
// Required for initialization of binding package, see https://github.com/nuitsjp/Xamarin.Forms.GoogleMaps.Bindings.
|
||||||
Xamarin.FormsGoogleMapsBindings.Init();
|
Xamarin.FormsGoogleMapsBindings.Init();
|
||||||
|
|
||||||
return base.FinishedLaunching (app, options);
|
return base.FinishedLaunching (app, options);
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,8 +53,8 @@
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>sharee.bike</string>
|
<string>sharee.bike</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>299</string>
|
<string>312</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.0.299</string>
|
<string>3.0.312</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -13,16 +13,19 @@
|
||||||
</ContentView.Resources>
|
</ContentView.Resources>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Padding="10">
|
Padding="10">
|
||||||
|
<!-- Name of the bike -->
|
||||||
<Label
|
<Label
|
||||||
FontAttributes="Bold"
|
FontAttributes="Bold"
|
||||||
FontSize="Large"
|
FontSize="Large"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center"
|
||||||
Text="{Binding Name}"/>
|
Text="{Binding Name}"/>
|
||||||
|
<!-- Id of the bike -->
|
||||||
<Label
|
<Label
|
||||||
FontAttributes="Bold"
|
FontAttributes="Bold"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center"
|
||||||
IsVisible="{Binding DisplayId, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding DisplayId, Converter={StaticResource Label_Converter}}"
|
||||||
Text="{Binding DisplayId}"/>
|
Text="{Binding DisplayId}"/>
|
||||||
|
<!-- Rental state -->
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding StateText}"
|
Text="{Binding StateText}"
|
||||||
TextColor="{Binding StateColor}"/>
|
TextColor="{Binding StateColor}"/>
|
||||||
|
@ -40,9 +43,12 @@
|
||||||
IsVisible="{Binding IsLockitButtonVisible}"
|
IsVisible="{Binding IsLockitButtonVisible}"
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Command="{Binding OnLockitButtonClicked}"/>
|
Command="{Binding OnLockitButtonClicked}"/>
|
||||||
|
<!-- Rental description (tarif name, options and rental info -->
|
||||||
<Grid
|
<Grid
|
||||||
|
RowSpacing="0"
|
||||||
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
|
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
<!-- start tarif- entries -->
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<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" />
|
||||||
|
<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.RowDefinitions>
|
||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
<!-- start tarif- entries (should be a CollectionView) -->
|
||||||
<Label
|
<Label
|
||||||
Text=
|
Text= "{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
||||||
"{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionTariffHeader}"
|
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||||
|
Grid.Row="0"
|
||||||
FontAttributes="Bold"/>
|
FontAttributes="Bold"/>
|
||||||
<Label
|
<Label
|
||||||
Text=
|
Text="{Binding TariffDescription.Header}"
|
||||||
"{Binding TariffDescription.Header}"
|
IsVisible="{Binding TariffDescription.Header, Converter={StaticResource Label_Converter}}"
|
||||||
|
Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.ColumnSpan="2"
|
|
||||||
FontAttributes="Bold"/>
|
FontAttributes="Bold"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFreeTimePerSession}"
|
Text= "{Binding TariffDescription.TarifEntry1.Description}"
|
||||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry1.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="1"/>
|
Grid.Row="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.FreeTimePerSession}"
|
Text="{Binding TariffDescription.TarifEntry1.Value}"
|
||||||
IsVisible="{Binding TariffDescription.FreeTimePerSession, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry1.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"/>
|
Grid.Column="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionFeeEuroPerHour}"
|
Text= "{Binding TariffDescription.TarifEntry2.Description}"
|
||||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry2.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="2"/>
|
Grid.Row="2"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.FeeEuroPerHour}"
|
Text="{Binding TariffDescription.TarifEntry2.Value}"
|
||||||
IsVisible="{Binding TariffDescription.FeeEuroPerHour, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry2.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Grid.Column="1"/>
|
Grid.Column="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionMaxFeeEuroPerDay}"
|
Text= "{Binding TariffDescription.TarifEntry3.Description}"
|
||||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry3.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="3"/>
|
Grid.Row="3"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.MaxFeeEuroPerDay}"
|
Text="{Binding TariffDescription.TarifEntry3.Value}"
|
||||||
IsVisible="{Binding TariffDescription.MaxFeeEuroPerDay, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry3.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="3"
|
Grid.Row="3"
|
||||||
Grid.Column="1"/>
|
Grid.Column="1"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MessageBikesManagementTariffDescriptionAboEuroPerMonth}"
|
Text= "{Binding TariffDescription.TarifEntry4.Description}"
|
||||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry4.Description, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="4"/>
|
Grid.Row="4"/>
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TariffDescription.AboEuroPerMonth}"
|
Text="{Binding TariffDescription.TarifEntry4.Value}"
|
||||||
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.TarifEntry4.Value, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="4"
|
Grid.Row="4"
|
||||||
Grid.Column="1"/>
|
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
|
<Label
|
||||||
TextType="Html"
|
TextType="Html"
|
||||||
Text="{Binding TariffDescription.OperatorAgb}"
|
Text="{Binding TariffDescription.OperatorAgb}"
|
||||||
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
|
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
|
||||||
Grid.Row="5"
|
Grid.ColumnSpan="2"
|
||||||
Grid.ColumnSpan="3">
|
Grid.Row="15">
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
<TapGestureRecognizer Command="{Binding ShowAgbTappedCommand}"/>
|
<TapGestureRecognizer Command="{Binding ShowAgbTappedCommand}"/>
|
||||||
</Label.GestureRecognizers>
|
</Label.GestureRecognizers>
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace TINK.Model.Bike.BC
|
||||||
string description = null,
|
string description = null,
|
||||||
string stationId = null,
|
string stationId = null,
|
||||||
Uri operatorUri = null,
|
Uri operatorUri = null,
|
||||||
TariffDescription tariffDescription = null)
|
RentalDescription tariffDescription = null)
|
||||||
{
|
{
|
||||||
Bike = new Bike(id, lockModel, wheelType, typeOfBike, description);
|
Bike = new Bike(id, lockModel, wheelType, typeOfBike, description);
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ namespace TINK.Model.Bike.BC
|
||||||
LockModel lockModel,
|
LockModel lockModel,
|
||||||
string stationId,
|
string stationId,
|
||||||
Uri operatorUri = null,
|
Uri operatorUri = null,
|
||||||
TariffDescription tariffDescription = null,
|
RentalDescription tariffDescription = null,
|
||||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||||
IEnumerable<string> group = null,
|
IEnumerable<string> group = null,
|
||||||
WheelType? wheelType = null,
|
WheelType? wheelType = null,
|
||||||
|
@ -111,7 +111,7 @@ namespace TINK.Model.Bike.BC
|
||||||
string description,
|
string description,
|
||||||
string stationId,
|
string stationId,
|
||||||
Uri operatorUri,
|
Uri operatorUri,
|
||||||
TariffDescription tariffDescription,
|
RentalDescription tariffDescription,
|
||||||
DateTime requestedAt,
|
DateTime requestedAt,
|
||||||
string mailAddress,
|
string mailAddress,
|
||||||
string code,
|
string code,
|
||||||
|
@ -157,7 +157,7 @@ namespace TINK.Model.Bike.BC
|
||||||
string description,
|
string description,
|
||||||
string currentStationId,
|
string currentStationId,
|
||||||
Uri operatorUri,
|
Uri operatorUri,
|
||||||
TariffDescription tariffDescription,
|
RentalDescription tariffDescription,
|
||||||
DateTime bookedAt,
|
DateTime bookedAt,
|
||||||
string mailAddress,
|
string mailAddress,
|
||||||
string code) : this(
|
string code) : this(
|
||||||
|
@ -190,7 +190,7 @@ namespace TINK.Model.Bike.BC
|
||||||
public string StationId { get; }
|
public string StationId { get; }
|
||||||
|
|
||||||
/// <summary> Holds description about the tarif. </summary>
|
/// <summary> Holds description about the tarif. </summary>
|
||||||
public TariffDescription TariffDescription { get; }
|
public RentalDescription TariffDescription { get; }
|
||||||
|
|
||||||
|
|
||||||
/// Holds the rent state of the bike.
|
/// Holds the rent state of the bike.
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace TINK.Model.Bike.BC
|
||||||
string stationId = null,
|
string stationId = null,
|
||||||
string stationName = null,
|
string stationName = null,
|
||||||
Uri operatorUri = null,
|
Uri operatorUri = null,
|
||||||
TariffDescription tariffDescription = null,
|
RentalDescription tariffDescription = null,
|
||||||
Func<DateTime> dateTimeProvider = null,
|
Func<DateTime> dateTimeProvider = null,
|
||||||
IStateInfo stateInfo = null)
|
IStateInfo stateInfo = null)
|
||||||
{
|
{
|
||||||
|
@ -82,7 +82,7 @@ namespace TINK.Model.Bike.BC
|
||||||
|
|
||||||
/// <summary> Holds description about the tarif. </summary>
|
/// <summary> Holds description about the tarif. </summary>
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public TariffDescription TariffDescription { get; private set; }
|
public RentalDescription TariffDescription { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds the rent state of the bike.
|
/// Holds the rent state of the bike.
|
||||||
|
|
|
@ -48,7 +48,7 @@ namespace TINK.Model.Bike.BC
|
||||||
Uri OperatorUri { get; }
|
Uri OperatorUri { get; }
|
||||||
|
|
||||||
/// <summary> Holds description about the tarif. </summary>
|
/// <summary> Holds description about the tarif. </summary>
|
||||||
TariffDescription TariffDescription { get; }
|
RentalDescription TariffDescription { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds the rent state of the bike.
|
/// Holds the rent state of the bike.
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace TINK.Model.Bike.BluetoothLock
|
||||||
Guid lockGuid,
|
Guid lockGuid,
|
||||||
string currentStationId,
|
string currentStationId,
|
||||||
Uri operatorUri = null,
|
Uri operatorUri = null,
|
||||||
TariffDescription tariffDescription = null,
|
RentalDescription tariffDescription = null,
|
||||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||||
IEnumerable<string> group = null,
|
IEnumerable<string> group = null,
|
||||||
WheelType? wheelType = null,
|
WheelType? wheelType = null,
|
||||||
|
@ -69,7 +69,7 @@ namespace TINK.Model.Bike.BluetoothLock
|
||||||
string mailAddress,
|
string mailAddress,
|
||||||
string currentStationId,
|
string currentStationId,
|
||||||
Uri operatorUri,
|
Uri operatorUri,
|
||||||
TariffDescription tariffDescription,
|
RentalDescription tariffDescription,
|
||||||
Func<DateTime> dateTimeProvider,
|
Func<DateTime> dateTimeProvider,
|
||||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||||
IEnumerable<string> group = null,
|
IEnumerable<string> group = null,
|
||||||
|
@ -118,7 +118,7 @@ namespace TINK.Model.Bike.BluetoothLock
|
||||||
string mailAddress,
|
string mailAddress,
|
||||||
string currentStationId,
|
string currentStationId,
|
||||||
Uri operatorUri,
|
Uri operatorUri,
|
||||||
TariffDescription tariffDescription = null,
|
RentalDescription tariffDescription = null,
|
||||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||||
IEnumerable<string> group = null,
|
IEnumerable<string> group = null,
|
||||||
WheelType? wheelType = null,
|
WheelType? wheelType = null,
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace TINK.Model.Bike.CopriLock
|
||||||
string currentStationId,
|
string currentStationId,
|
||||||
LockInfo lockInfo,
|
LockInfo lockInfo,
|
||||||
Uri operatorUri = null,
|
Uri operatorUri = null,
|
||||||
TariffDescription tariffDescription = null,
|
RentalDescription tariffDescription = null,
|
||||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||||
IEnumerable<string> group = null,
|
IEnumerable<string> group = null,
|
||||||
WheelType? wheelType = null,
|
WheelType? wheelType = null,
|
||||||
|
@ -62,7 +62,7 @@ namespace TINK.Model.Bike.CopriLock
|
||||||
string currentStationId,
|
string currentStationId,
|
||||||
LockInfo lockInfo,
|
LockInfo lockInfo,
|
||||||
Uri operatorUri,
|
Uri operatorUri,
|
||||||
TariffDescription tariffDescription,
|
RentalDescription tariffDescription,
|
||||||
Func<DateTime> dateTimeProvider,
|
Func<DateTime> dateTimeProvider,
|
||||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||||
IEnumerable<string> group = null,
|
IEnumerable<string> group = null,
|
||||||
|
@ -105,7 +105,7 @@ namespace TINK.Model.Bike.CopriLock
|
||||||
string currentStationId,
|
string currentStationId,
|
||||||
LockInfo lockInfo,
|
LockInfo lockInfo,
|
||||||
Uri operatorUri,
|
Uri operatorUri,
|
||||||
TariffDescription tariffDescription = null,
|
RentalDescription tariffDescription = null,
|
||||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||||
IEnumerable<string> group = null,
|
IEnumerable<string> group = null,
|
||||||
WheelType? wheelType = 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 System.Linq;
|
||||||
using TINK.Model.MiniSurvey;
|
using TINK.Model.MiniSurvey;
|
||||||
using TINK.Services.CopriApi;
|
using TINK.Services.CopriApi;
|
||||||
|
using TINK.MultilingualResources;
|
||||||
|
|
||||||
namespace TINK.Model.Connector
|
namespace TINK.Model.Connector
|
||||||
{
|
{
|
||||||
|
@ -347,7 +348,7 @@ namespace TINK.Model.Connector
|
||||||
new Bikes.Bike.CopriLock.LockInfo.Builder { State = bikeInfo.GetCopriLockingState()}.Build(),
|
new Bikes.Bike.CopriLock.LockInfo.Builder { State = bikeInfo.GetCopriLockingState()}.Build(),
|
||||||
bikeInfo.GetOperatorUri(),
|
bikeInfo.GetOperatorUri(),
|
||||||
#if !NOTARIFFDESCRIPTION
|
#if !NOTARIFFDESCRIPTION
|
||||||
Create(bikeInfo.tariff_description),
|
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||||
#else
|
#else
|
||||||
Create((TINK.Repository.Response.TariffDescription) null),
|
Create((TINK.Repository.Response.TariffDescription) null),
|
||||||
#endif
|
#endif
|
||||||
|
@ -365,7 +366,7 @@ namespace TINK.Model.Connector
|
||||||
bikeInfo.station,
|
bikeInfo.station,
|
||||||
bikeInfo.GetOperatorUri(),
|
bikeInfo.GetOperatorUri(),
|
||||||
#if !NOTARIFFDESCRIPTION
|
#if !NOTARIFFDESCRIPTION
|
||||||
Create(bikeInfo.tariff_description),
|
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||||
#else
|
#else
|
||||||
Create((TINK.Repository.Response.TariffDescription)null),
|
Create((TINK.Repository.Response.TariffDescription)null),
|
||||||
#endif
|
#endif
|
||||||
|
@ -438,9 +439,9 @@ namespace TINK.Model.Connector
|
||||||
bikeInfo.station,
|
bikeInfo.station,
|
||||||
bikeInfo.GetOperatorUri(),
|
bikeInfo.GetOperatorUri(),
|
||||||
#if !NOTARIFFDESCRIPTION
|
#if !NOTARIFFDESCRIPTION
|
||||||
Create(bikeInfo.tariff_description),
|
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||||
#else
|
#else
|
||||||
Create((TINK.Repository.Response.TariffDescription)null),
|
Create((TINK.Repository.Response.TariffDescription)null),
|
||||||
#endif
|
#endif
|
||||||
dateTimeProvider,
|
dateTimeProvider,
|
||||||
bikeInfo.GetIsDemo(),
|
bikeInfo.GetIsDemo(),
|
||||||
|
@ -458,7 +459,7 @@ namespace TINK.Model.Connector
|
||||||
new Bikes.Bike.CopriLock.LockInfo.Builder { State = bikeInfo.GetCopriLockingState() }.Build(),
|
new Bikes.Bike.CopriLock.LockInfo.Builder { State = bikeInfo.GetCopriLockingState() }.Build(),
|
||||||
bikeInfo.GetOperatorUri(),
|
bikeInfo.GetOperatorUri(),
|
||||||
#if !NOTARIFFDESCRIPTION
|
#if !NOTARIFFDESCRIPTION
|
||||||
Create(bikeInfo.tariff_description),
|
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||||
#else
|
#else
|
||||||
Create((TINK.Repository.Response.TariffDescription)null),
|
Create((TINK.Repository.Response.TariffDescription)null),
|
||||||
#endif
|
#endif
|
||||||
|
@ -497,11 +498,11 @@ namespace TINK.Model.Connector
|
||||||
bikeInfo.station,
|
bikeInfo.station,
|
||||||
bikeInfo.GetOperatorUri(),
|
bikeInfo.GetOperatorUri(),
|
||||||
#if !NOTARIFFDESCRIPTION
|
#if !NOTARIFFDESCRIPTION
|
||||||
Create(bikeInfo.tariff_description),
|
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||||
#else
|
#else
|
||||||
Create((TINK.Repository.Response.TariffDescription)null),
|
Create((TINK.Repository.Response.TariffDescription)null),
|
||||||
#endif
|
#endif
|
||||||
bikeInfo.GetIsDemo(),
|
bikeInfo.GetIsDemo(),
|
||||||
bikeInfo.GetGroup(),
|
bikeInfo.GetGroup(),
|
||||||
bikeInfo.GetWheelType(),
|
bikeInfo.GetWheelType(),
|
||||||
bikeInfo.GetTypeOfBike(),
|
bikeInfo.GetTypeOfBike(),
|
||||||
|
@ -519,11 +520,11 @@ namespace TINK.Model.Connector
|
||||||
bikeInfo.station,
|
bikeInfo.station,
|
||||||
bikeInfo.GetOperatorUri(),
|
bikeInfo.GetOperatorUri(),
|
||||||
#if !NOTARIFFDESCRIPTION
|
#if !NOTARIFFDESCRIPTION
|
||||||
Create(bikeInfo.tariff_description),
|
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||||
#else
|
#else
|
||||||
Create((TINK.Repository.Response.TariffDescription)null),
|
Create((TINK.Repository.Response.TariffDescription)null),
|
||||||
#endif
|
#endif
|
||||||
bikeInfo.GetFrom(),
|
bikeInfo.GetFrom(),
|
||||||
mailAddress,
|
mailAddress,
|
||||||
bikeInfo.timeCode);
|
bikeInfo.timeCode);
|
||||||
default:
|
default:
|
||||||
|
@ -535,9 +536,9 @@ namespace TINK.Model.Connector
|
||||||
new Bikes.Bike.CopriLock.LockInfo.Builder { State = bikeInfo.GetCopriLockingState() }.Build(),
|
new Bikes.Bike.CopriLock.LockInfo.Builder { State = bikeInfo.GetCopriLockingState() }.Build(),
|
||||||
bikeInfo.GetOperatorUri(),
|
bikeInfo.GetOperatorUri(),
|
||||||
#if !NOTARIFFDESCRIPTION
|
#if !NOTARIFFDESCRIPTION
|
||||||
Create(bikeInfo.tariff_description),
|
bikeInfo.rental_description != null ? Create(bikeInfo.rental_description) : Create(bikeInfo.tariff_description),
|
||||||
#else
|
#else
|
||||||
Create((TINK.Repository.Response.TariffDescription)null),
|
Create((TINK.Repository.Response.TariffDescription)null),
|
||||||
#endif
|
#endif
|
||||||
bikeInfo.GetIsDemo(),
|
bikeInfo.GetIsDemo(),
|
||||||
bikeInfo.GetGroup(),
|
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,
|
Name = tariffDesciption?.name,
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
Number = int.TryParse(tariffDesciption?.number, out int number) ? number : null,
|
Number = int.TryParse(tariffDesciption?.number, out int number) ? number : null,
|
||||||
#else
|
#else
|
||||||
Number = int.TryParse(tariffDesciption?.number, out int number) ? number : (int?)null,
|
Id = int.TryParse(tariffDesciption?.number, out int number) ? number : (int?)null,
|
||||||
#endif
|
#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>
|
/// <summary> Creates a booking finished object from response.</summary>
|
||||||
/// <param name="response">Response to create survey object from.</param>
|
/// <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
|
var bookingFinished = new BookingFinishedModel
|
||||||
{
|
{
|
||||||
|
|
|
@ -526,7 +526,19 @@ namespace TINK.Model
|
||||||
{
|
{
|
||||||
new Version(3, 0, 299),
|
new Version(3, 0, 299),
|
||||||
AppResources.ChangeLog3_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>
|
/// <summary> Manges the whats new information.</summary>
|
||||||
|
|
|
@ -151,7 +151,7 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Open lock & continue renting.
|
/// Looks up a localized string similar to Open lock.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string ActionOpenAndPause {
|
public static string ActionOpenAndPause {
|
||||||
get {
|
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>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Lock of rented bike cannot be be connected right now..
|
/// Looks up a localized string similar to Lock of rented bike cannot be be connected right now..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1587,7 +1609,7 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <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>
|
/// </summary>
|
||||||
public static string MarkingContactNoStationInfoAvailableNoButton {
|
public static string MarkingContactNoStationInfoAvailableNoButton {
|
||||||
get {
|
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>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Rental fees.
|
/// Looks up a localized string similar to Rental fees.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<value>Schloss öffnen & Rad mieten</value>
|
<value>Schloss öffnen & Rad mieten</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ActionOpenAndPause" xml:space="preserve">
|
<data name="ActionOpenAndPause" xml:space="preserve">
|
||||||
<value>Schloss öffnen & Miete fortsetzen</value>
|
<value>Schloss öffnen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ActionRequest" xml:space="preserve">
|
<data name="ActionRequest" xml:space="preserve">
|
||||||
<value>Rad reservieren</value>
|
<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>
|
<value>Bitte Anmelden um Fahrräder zu reservieren! <font color="blue"><u>Hier</u></font> tippen, um auf Anmeldeseite zu wechseln.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MarkingContactNoStationInfoAvailableNoButton" xml:space="preserve">
|
<data name="MarkingContactNoStationInfoAvailableNoButton" xml:space="preserve">
|
||||||
<value>Bitte eine Fahrradstationsseite öffen, um den Betreiber zu kontaktieren.</value>
|
<value>Betreiber kontaktieren?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ChangeLog3_0_241" xml:space="preserve">
|
<data name="ChangeLog3_0_241" xml:space="preserve">
|
||||||
<value>Auf der Kontaktseite werden Kontaktinformationen betreiberspezifisch angezeigt.</value>
|
<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>
|
<value>Neue Wort-Bild-Marke in das Menü der Lastenrad Bayern App integriert.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ChangeLog3_0_299" xml:space="preserve">
|
<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>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -136,7 +136,7 @@
|
||||||
<value>Open lock & rent bike</value>
|
<value>Open lock & rent bike</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ActionOpenAndPause" xml:space="preserve">
|
<data name="ActionOpenAndPause" xml:space="preserve">
|
||||||
<value>Open lock & continue renting</value>
|
<value>Open lock</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ActionRequest" xml:space="preserve">
|
<data name="ActionRequest" xml:space="preserve">
|
||||||
<value>Reserve bike</value>
|
<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>
|
<value>Find bike by id functionality added.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MarkingContactNoStationInfoAvailableNoButton" xml:space="preserve">
|
<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>
|
||||||
<data name="MarkingContactSupport" xml:space="preserve">
|
<data name="MarkingContactSupport" xml:space="preserve">
|
||||||
<value><font color="blue"><u>Contact</u></font> {0}.</value>
|
<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">
|
<data name="ChangeLog3_0_299" xml:space="preserve">
|
||||||
<value>Bugfix: Bluetooth lock control works again on Android 12.</value>
|
<value>Bugfix: Bluetooth lock control works again on Android 12.</value>
|
||||||
</data>
|
</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>
|
</root>
|
|
@ -31,8 +31,8 @@
|
||||||
<target state="final">Schloss öffnen & Rad mieten</target>
|
<target state="final">Schloss öffnen & Rad mieten</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ActionOpenAndPause" translate="yes" xml:space="preserve">
|
<trans-unit id="ActionOpenAndPause" translate="yes" xml:space="preserve">
|
||||||
<source>Open lock & continue renting</source>
|
<source>Open lock</source>
|
||||||
<target state="final">Schloss öffnen & Miete fortsetzen</target>
|
<target state="final">Schloss öffnen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ActionRequest" translate="yes" xml:space="preserve">
|
<trans-unit id="ActionRequest" translate="yes" xml:space="preserve">
|
||||||
<source>Reserve bike</source>
|
<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>
|
<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>
|
||||||
<trans-unit id="MarkingContactNoStationInfoAvailableNoButton" translate="yes" xml:space="preserve">
|
<trans-unit id="MarkingContactNoStationInfoAvailableNoButton" translate="yes" xml:space="preserve">
|
||||||
<source>Please open a bike station page to to contact the bike sharing operator.</source>
|
<source>Contact operator?</source>
|
||||||
<target state="translated">Bitte eine Fahrradstationsseite öffen, um den Betreiber zu kontaktieren.</target>
|
<target state="translated">Betreiber kontaktieren?</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ChangeLog3_0_241" translate="yes" xml:space="preserve">
|
<trans-unit id="ChangeLog3_0_241" translate="yes" xml:space="preserve">
|
||||||
<source>Bike sharing system operator specific support info displayed on contact page.</source>
|
<source>Bike sharing system operator specific support info displayed on contact page.</source>
|
||||||
|
@ -1227,7 +1227,27 @@ Kleinere Fehlerbehebungen.
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ChangeLog3_0_299" translate="yes" xml:space="preserve">
|
<trans-unit id="ChangeLog3_0_299" translate="yes" xml:space="preserve">
|
||||||
<source>Bugfix: Bluetooth lock control works again on Android 12.</source>
|
<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>
|
</trans-unit>
|
||||||
</group>
|
</group>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -60,8 +60,13 @@ namespace TINK.Repository.Response
|
||||||
|
|
||||||
#if !NOTARIFFDESCRIPTION
|
#if !NOTARIFFDESCRIPTION
|
||||||
/// <summary> Holds the tariff information for a bike. </summary>
|
/// <summary> Holds the tariff information for a bike. </summary>
|
||||||
|
/// <remarks> This member is obsolete. Use <cref="rental_description"> instead.</cref></remarks>
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public TariffDescription tariff_description { get; private set; }
|
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
|
#endif
|
||||||
/// <summary> Loading state of motor battery in % ]0..100[. </summary>
|
/// <summary> Loading state of motor battery in % ]0..100[. </summary>
|
||||||
[DataMember]
|
[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(
|
m_oViewUpdateManager = new PollingUpdateTaskManager(
|
||||||
() => GetType().Name,
|
|
||||||
() =>
|
() =>
|
||||||
{
|
{
|
||||||
TinkApp.PostAction(
|
TinkApp.PostAction(
|
||||||
|
|
|
@ -14,7 +14,6 @@ using TINK.MultilingualResources;
|
||||||
using TINK.View;
|
using TINK.View;
|
||||||
using TINK.Model.User;
|
using TINK.Model.User;
|
||||||
using TINK.Model.Device;
|
using TINK.Model.Device;
|
||||||
using TINK.Model.User.Account;
|
|
||||||
|
|
||||||
namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
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.Model.Bikes.Bike;
|
||||||
using TINK.MultilingualResources;
|
|
||||||
|
|
||||||
namespace TINK.ViewModel.Bikes.Bike
|
namespace TINK.ViewModel.Bikes.Bike
|
||||||
{
|
{
|
||||||
|
@ -9,64 +9,59 @@ namespace TINK.ViewModel.Bikes.Bike
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TariffDescriptionViewModel
|
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
|
TariffEntries = tariff != null && tariff?.TariffEntries != null
|
||||||
{
|
? new ObservableCollection<RentalDescription.TariffElement>(tariff.TariffEntries.OrderBy(x => x.Key).Select(x => x.Value))
|
||||||
get
|
: new ObservableCollection<RentalDescription.TariffElement>();
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(FeeEuroPerHour)
|
|
||||||
&& string.IsNullOrEmpty(AboEuroPerMonth)
|
|
||||||
&& string.IsNullOrEmpty(FreeTimePerSession)
|
|
||||||
&& string.IsNullOrEmpty(MaxFeeEuroPerDay))
|
|
||||||
// No tariff description details available.
|
|
||||||
return string.Empty;
|
|
||||||
|
|
||||||
// Up to version MessageBikesManagementTariffDescriptionTariffHeaderNameId
|
InfoEntries = tariff != null && tariff?.InfoEntries != null
|
||||||
return Tariff?.Name ?? "-";
|
? 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>
|
/// <summary>
|
||||||
/// Costs per hour in euro.
|
/// Holds the name of the tariff.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string FeeEuroPerHour
|
public string Name { get; set; }
|
||||||
=> !double.IsNaN(Tariff.FeeEuroPerHour)
|
|
||||||
? string.Format("{0} {1}", Tariff.FeeEuroPerHour.ToString("0.00"), AppResources.MessageBikesManagementTariffDescriptionEuroPerHour)
|
|
||||||
: string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Costs of the abo per month.
|
/// Holds the tariff entries to display.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string AboEuroPerMonth
|
public ObservableCollection<RentalDescription.TariffElement> TariffEntries { get; private set; }
|
||||||
=> !double.IsNaN(Tariff.AboEuroPerMonth)
|
|
||||||
? string.Format("{0} {1}", Tariff.AboEuroPerMonth.ToString("0.00"), AppResources.MessageBikesManagementTariffDescriptionEuroPerHour)
|
|
||||||
: string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Free use time.
|
/// Holds the info entries to display.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string FreeTimePerSession
|
public ObservableCollection<string> InfoEntries { get; private set; }
|
||||||
=> 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;
|
|
||||||
|
|
||||||
/// <summary> Info about operator agb as HTML (i.g. text and hyperlink). </summary>
|
/// <summary> Info about operator agb as HTML (i.g. text and hyperlink). </summary>
|
||||||
public string OperatorAgb => !string.IsNullOrEmpty(Tariff?.OperatorAgb)
|
public string OperatorAgb { get; set; }
|
||||||
? Tariff.OperatorAgb
|
|
||||||
: string.Empty;
|
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>
|
/// <param name="updateAction"> Update fuction passed as argument by child class.</param>
|
||||||
protected async Task OnAppearing(Action updateAction)
|
protected async Task OnAppearing(Action updateAction)
|
||||||
{
|
{
|
||||||
m_oViewUpdateManager = new PollingUpdateTaskManager(() => GetType().Name, updateAction);
|
m_oViewUpdateManager = new PollingUpdateTaskManager(updateAction);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -556,7 +556,6 @@ namespace TINK.ViewModel.Map
|
||||||
{
|
{
|
||||||
// Start task which periodically updates pins.
|
// Start task which periodically updates pins.
|
||||||
return new PollingUpdateTaskManager(
|
return new PollingUpdateTaskManager(
|
||||||
() => GetType().Name,
|
|
||||||
() =>
|
() =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
@ -7,64 +7,59 @@ using TINK.Repository.Exception;
|
||||||
|
|
||||||
namespace TINK.ViewModel
|
namespace TINK.ViewModel
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Object to periodically actuate an action.
|
||||||
|
/// </summary>
|
||||||
public class PollingUpdateTask
|
public class PollingUpdateTask
|
||||||
{
|
{
|
||||||
/// <summary>Name of child class provider. </summary>
|
|
||||||
private readonly Func<String> m_oGetChildName;
|
|
||||||
|
|
||||||
/// <summary> Object to control canelling. </summary>
|
/// <summary> Object to control canelling. </summary>
|
||||||
private readonly CancellationTokenSource m_oCanellationTokenSource;
|
private CancellationTokenSource CanellationTokenSource { get; }
|
||||||
|
|
||||||
/// <summary> Task to perform update. </summary>
|
/// <summary> Task to perform update. </summary>
|
||||||
private readonly Task m_oUpdateTask;
|
private Task UpdateTask { get; }
|
||||||
|
|
||||||
/// <summary> Action which performs an update.</summary>
|
/// <summary> Action which performs an update.</summary>
|
||||||
private readonly Action m_oUpdateAction;
|
private Action UpdateAction { get; }
|
||||||
|
|
||||||
/// <summary> Obects which does a periodic update. </summary>
|
/// <summary> Obects which does a periodic update. </summary>
|
||||||
/// <param name="p_oGetChildName">Name of the child class. For logging purposes.</param>
|
/// <param name="updateAction">Update action to perform.</param>
|
||||||
/// <param name="p_oUpdateAction">Update action to perform.</param>
|
/// <param name="polling"> Holds whether to poll or not and the periode leght is polling is on. </param>
|
||||||
/// <param name="p_oPolling"> Holds whether to poll or not and the periode leght is polling is on. </param>
|
|
||||||
public PollingUpdateTask(
|
public PollingUpdateTask(
|
||||||
Func<String> p_oGetChildName,
|
Action updateAction,
|
||||||
Action p_oUpdateAction,
|
TimeSpan? polling)
|
||||||
TimeSpan? p_oPolling)
|
|
||||||
{
|
{
|
||||||
m_oGetChildName = p_oGetChildName
|
UpdateAction = updateAction
|
||||||
?? throw new ArgumentException($"Can not construct {GetType().Name}- obect. Argument {nameof(p_oGetChildName)} must not be null.");
|
?? throw new ArgumentException($"Can not construct {GetType().Name}- obect. Argument {nameof(updateAction)} must not be null.");
|
||||||
|
|
||||||
m_oUpdateAction = p_oUpdateAction
|
if (!polling.HasValue)
|
||||||
?? throw new ArgumentException($"Can not construct {GetType().Name}- obect. Argument {nameof(p_oUpdateAction)} must not be null.");
|
|
||||||
|
|
||||||
if (!p_oPolling.HasValue)
|
|
||||||
{
|
{
|
||||||
// Automatic update is switched off.
|
// Automatic update is switched off.
|
||||||
Log.ForContext<PollingUpdateTask>().Debug($"Automatic update is off, context {GetType().Name} at {DateTime.Now}.");
|
Log.ForContext<PollingUpdateTask>().Debug($"Automatic update is off, context {GetType().Name} at {DateTime.Now}.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var l_iUpdatePeriodeSet = p_oPolling.Value;
|
var updatePeriodeSet = polling.Value;
|
||||||
|
|
||||||
m_oCanellationTokenSource = new CancellationTokenSource();
|
CanellationTokenSource = new CancellationTokenSource();
|
||||||
|
|
||||||
int l_iCycleIndex = 2;
|
int cycleIndex = 2;
|
||||||
m_oUpdateTask = Task.Run(
|
UpdateTask = Task.Run(
|
||||||
async () =>
|
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
|
// 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>
|
/// <summary>
|
||||||
|
@ -73,51 +68,57 @@ namespace TINK.ViewModel
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task Terminate()
|
public async Task Terminate()
|
||||||
{
|
{
|
||||||
|
if (UpdateTask == null)
|
||||||
|
{
|
||||||
|
// Nothing to do if no task was created.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Cancel update task;
|
// 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.");
|
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}.");
|
Log.Information($"Request to terminate update cycle, context {GetType().Name} at {DateTime.Now}.");
|
||||||
m_oCanellationTokenSource.Cancel();
|
CanellationTokenSource.Cancel();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await m_oUpdateTask;
|
await UpdateTask;
|
||||||
}
|
}
|
||||||
catch (TaskCanceledException)
|
catch (TaskCanceledException)
|
||||||
{
|
{
|
||||||
// Polling update was canceled.
|
// Polling update was canceled.
|
||||||
// Nothing to notice/ worry about.
|
// Nothing to notice/ worry about.
|
||||||
}
|
}
|
||||||
catch (Exception l_oException)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
// An error occurred updating pin.
|
// An error occurred updating pin.
|
||||||
var l_oAggregateException = l_oException as AggregateException;
|
var aggregateException = exception as AggregateException;
|
||||||
if (l_oAggregateException == null)
|
if (aggregateException == null)
|
||||||
{
|
{
|
||||||
// Unexpected exception detected. Exception should alyways be of type AggregateException
|
// 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
|
else
|
||||||
{
|
{
|
||||||
if (l_oAggregateException.InnerExceptions.Count == 1
|
if (aggregateException.InnerExceptions.Count == 1
|
||||||
&& l_oAggregateException.InnerExceptions[0].GetType() == typeof(TaskCanceledException))
|
&& aggregateException.InnerExceptions[0].GetType() == typeof(TaskCanceledException))
|
||||||
{
|
{
|
||||||
// Polling update was canceled.
|
// Polling update was canceled.
|
||||||
// Nothing to notice/ worry about.
|
// Nothing to notice/ worry about.
|
||||||
}
|
}
|
||||||
else if (l_oAggregateException.InnerExceptions.Count() > 0 &&
|
else if (aggregateException.InnerExceptions.Count() > 0 &&
|
||||||
l_oAggregateException.InnerExceptions.First(x => !x.GetIsConnectFailureException()) == null) // There is no exception which is not of type connect failure.
|
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
|
// 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
|
else
|
||||||
{
|
{
|
||||||
// All exceptions were caused by communication errors.
|
// 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>
|
/// </summary>
|
||||||
public class PollingUpdateTaskManager : IPollingUpdateTaskManager
|
public class PollingUpdateTaskManager : IPollingUpdateTaskManager
|
||||||
{
|
{
|
||||||
/// <summary>Name of child class provider. </summary>
|
|
||||||
private readonly Func<string> m_oGetChildName;
|
|
||||||
|
|
||||||
/// <summary> Action which performs an update.</summary>
|
/// <summary> Action which performs an update.</summary>
|
||||||
private Action m_oUpdateAction;
|
private Action UpdateAction { get; }
|
||||||
|
|
||||||
/// <summary> Reference on the current polling task</summary>
|
/// <summary> Reference on the current polling task</summary>
|
||||||
private PollingUpdateTask m_oPollingUpdateTask;
|
private PollingUpdateTask UpdateTask { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets polling parameters.
|
/// Gets or sets polling parameters.
|
||||||
|
@ -30,16 +27,12 @@ namespace TINK.ViewModel
|
||||||
|
|
||||||
/// <summary>Constructs a update manager object. </summary>
|
/// <summary>Constructs a update manager object. </summary>
|
||||||
/// <param name="p_oGetChildName">Name of the child class. For logging purposes.</param>
|
/// <param name="p_oGetChildName">Name of the child class. For logging purposes.</param>
|
||||||
/// <param name="p_oUpdateAction"></param>
|
/// <param name="updateAction"></param>
|
||||||
public PollingUpdateTaskManager(
|
public PollingUpdateTaskManager(
|
||||||
Func<String> p_oGetChildName,
|
Action updateAction)
|
||||||
Action p_oUpdateAction)
|
|
||||||
{
|
{
|
||||||
m_oGetChildName = p_oGetChildName ?? throw new ArgumentException(
|
UpdateAction = updateAction ?? throw new ArgumentException(
|
||||||
$"Can not construct {GetType().Name}- obect. Argument {nameof(p_oGetChildName)} must not be null.");
|
$"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.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -49,13 +42,13 @@ namespace TINK.ViewModel
|
||||||
/// <param name="pollingParameters">Parametes holding polling periode, if null last parameters are used if available.</param>
|
/// <param name="pollingParameters">Parametes holding polling periode, if null last parameters are used if available.</param>
|
||||||
public async Task StartUpdateAyncPeridically(PollingParameters pollingParameters = null)
|
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}.");
|
Log.Error($"Call to stop periodic update task missed in context {GetType().Name} at {DateTime.Now}.");
|
||||||
|
|
||||||
// Call of StopUpdatePeriodically missed.
|
// Call of StopUpdatePeriodically missed.
|
||||||
// Terminate running polling update task before starting a new one
|
// Terminate running polling update task before starting a new one
|
||||||
await m_oPollingUpdateTask.Terminate();
|
await UpdateTask.Terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pollingParameters != null)
|
if (pollingParameters != null)
|
||||||
|
@ -79,9 +72,8 @@ namespace TINK.ViewModel
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_oPollingUpdateTask = new PollingUpdateTask(
|
UpdateTask = new PollingUpdateTask(
|
||||||
m_oGetChildName,
|
UpdateAction,
|
||||||
m_oUpdateAction,
|
|
||||||
PollingParameters.Periode);
|
PollingParameters.Periode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,15 +83,15 @@ namespace TINK.ViewModel
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task StopUpdatePeridically()
|
public async Task StopUpdatePeridically()
|
||||||
{
|
{
|
||||||
if (m_oPollingUpdateTask == null)
|
if (UpdateTask == null)
|
||||||
{
|
{
|
||||||
// Nothing to do if there is no update task pending.
|
// Nothing to do if there is no update task pending.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await m_oPollingUpdateTask.Terminate();
|
await UpdateTask.Terminate();
|
||||||
|
|
||||||
m_oPollingUpdateTask = null;
|
UpdateTask = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace TestTINKLib
|
||||||
string stationId = null,
|
string stationId = null,
|
||||||
string stationName = null,
|
string stationName = null,
|
||||||
Uri operatorUri = null,
|
Uri operatorUri = null,
|
||||||
TariffDescription tariffDescription = null,
|
RentalDescription tariffDescription = null,
|
||||||
Func<DateTime> dateTimeProvider = null,
|
Func<DateTime> dateTimeProvider = null,
|
||||||
IStateInfo stateInfo = null) : base(id, lockType, isDemo, group, wheelType, typeOfBike, description, stationId, stationName, operatorUri, tariffDescription, dateTimeProvider, stateInfo)
|
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 stationId = null,
|
||||||
string stationName = null,
|
string stationName = null,
|
||||||
Uri operatorUri = null,
|
Uri operatorUri = null,
|
||||||
TariffDescription tariffDescription = null,
|
RentalDescription tariffDescription = null,
|
||||||
Func<DateTime> dateTimeProvider = null,
|
Func<DateTime> dateTimeProvider = null,
|
||||||
IStateInfo stateInfo = null) : base(id, lockType, isDemo, group, wheelType, typeOfBike, description, stationId, stationName, operatorUri, tariffDescription, dateTimeProvider, stateInfo)
|
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.That(btBikeReserved.WheelType, Is.Null);
|
||||||
Assert.AreEqual(DateTime.Parse("2021-07-04 17:46:36.237404+02"), btBikeReserved.State.From); // Sommer/ Winterzeit!
|
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.State.Code, Is.EqualTo(string.Empty), "Not needed for bt bikes.");
|
||||||
Assert.That(btBikeReserved.TariffDescription.FeeEuroPerHour, Is.EqualTo(3));
|
Assert.That(
|
||||||
Assert.That(btBikeReserved.TariffDescription.MaxFeeEuroPerDay, Is.EqualTo(10));
|
btBikeReserved.TariffDescription.TariffEntries["2"].Value, // FeeEuroPerHour
|
||||||
Assert.That(btBikeReserved.TariffDescription.Number, Is.EqualTo(5494));
|
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.TariffDescription.Name, Is.EqualTo("Tester Basic"));
|
||||||
Assert.That(btBikeReserved.StationId, Is.EqualTo("FR_103"));
|
Assert.That(btBikeReserved.StationId, Is.EqualTo("FR_103"));
|
||||||
Assert.That(btBikeReserved.LockInfo.Id, Is.EqualTo(2302373));
|
Assert.That(btBikeReserved.LockInfo.Id, Is.EqualTo(2302373));
|
||||||
|
@ -367,9 +371,13 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
Assert.That(btBikeRented.WheelType, Is.Null);
|
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(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.AreEqual(string.Empty, btBikeRented.State.Code, "Not needed for bt bikes.");
|
||||||
Assert.That(btBikeRented.TariffDescription.FeeEuroPerHour, Is.EqualTo(2.5));
|
Assert.That(
|
||||||
Assert.That(btBikeRented.TariffDescription.MaxFeeEuroPerDay, Is.EqualTo(10));
|
btBikeRented.TariffDescription.TariffEntries["2"].Value, // FeeEuroPerHour
|
||||||
Assert.That(btBikeRented.TariffDescription.Number, Is.EqualTo(5494));
|
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.TariffDescription.Name, Is.EqualTo("Tester Basic"));
|
||||||
Assert.That(btBikeRented.StationId, Is.EqualTo("103"));
|
Assert.That(btBikeRented.StationId, Is.EqualTo("103"));
|
||||||
Assert.That(btBikeRented.LockInfo.Id, Is.EqualTo(2200537));
|
Assert.That(btBikeRented.LockInfo.Id, Is.EqualTo(2200537));
|
||||||
|
@ -860,20 +868,20 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
Is.EqualTo("Tester Basic"));
|
Is.EqualTo("Tester Basic"));
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().Number,
|
tariffDescription.Create().Id,
|
||||||
Is.EqualTo(5494));
|
Is.EqualTo(5494));
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().FreeTimePerSession,
|
tariffDescription.Create().TariffEntries["1"].Value, // Free time per session
|
||||||
Is.EqualTo(TimeSpan.FromMinutes(90)));
|
Is.EqualTo("1.50 hour(s)/day")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().FeeEuroPerHour,
|
tariffDescription.Create().TariffEntries["2"].Value, // FeeEuroPerHour
|
||||||
Is.EqualTo(10.5));
|
Is.EqualTo("10.50 €/hour")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().AboEuroPerMonth,
|
tariffDescription.Create().TariffEntries["4"].Value, // Abo euro per month
|
||||||
Is.EqualTo(920.99));
|
Is.EqualTo("920.99 €/month"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -906,7 +914,7 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
}");
|
}");
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().Number,
|
tariffDescription.Create().Id,
|
||||||
Is.EqualTo(5494));
|
Is.EqualTo(5494));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -923,8 +931,8 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
}");
|
}");
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().FreeTimePerSession,
|
tariffDescription.Create().TariffEntries["1"].Value, // Free time per session
|
||||||
Is.EqualTo(TimeSpan.FromMinutes(90)));
|
Is.EqualTo("1.50 hour(s)/day")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -940,8 +948,8 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
}");
|
}");
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().FeeEuroPerHour,
|
tariffDescription.Create().TariffEntries["2"].Value, // FeeEuroPerHour
|
||||||
Is.EqualTo(10.5));
|
Is.EqualTo("10.50 €/hour")); // Did not contain unit before switching signature from TariffDescription to TariffDescription2.
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -957,8 +965,8 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
}");
|
}");
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().AboEuroPerMonth,
|
tariffDescription.Create().TariffEntries["4"].Value, // Abo euro per month
|
||||||
Is.EqualTo(920.99));
|
Is.EqualTo("920.99 €/month"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -979,7 +987,7 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
@"{}");
|
@"{}");
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().Number,
|
tariffDescription.Create().Id,
|
||||||
Is.Null);
|
Is.Null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -990,8 +998,8 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
@"{}");
|
@"{}");
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().FreeTimePerSession,
|
tariffDescription.Create().TariffEntries.ContainsKey("1"), // Free time per session
|
||||||
Is.EqualTo(TimeSpan.Zero));
|
Is.False);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -1001,8 +1009,8 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
@"{}");
|
@"{}");
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().FeeEuroPerHour,
|
tariffDescription.Create().TariffEntries.ContainsKey("2"), // FeeEuroPerHour
|
||||||
Is.NaN);
|
Is.False);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -1012,8 +1020,8 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
@"{}");
|
@"{}");
|
||||||
|
|
||||||
Assert.That(
|
Assert.That(
|
||||||
tariffDescription.Create().AboEuroPerMonth,
|
tariffDescription.Create().TariffEntries.ContainsKey("4"), // Abo euro per month
|
||||||
Is.NaN);
|
Is.False);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -1028,7 +1036,7 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
public void TestCreateTariffDescription_Number_Null()
|
public void TestCreateTariffDescription_Number_Null()
|
||||||
{
|
{
|
||||||
Assert.That(
|
Assert.That(
|
||||||
BikeInfoFactory.Create((TariffDescription)null).Number,
|
BikeInfoFactory.Create((TariffDescription)null).Id,
|
||||||
Is.Null);
|
Is.Null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1036,24 +1044,24 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
public void TestCreateTariffDescription_FreeTimePerSession_Null()
|
public void TestCreateTariffDescription_FreeTimePerSession_Null()
|
||||||
{
|
{
|
||||||
Assert.That(
|
Assert.That(
|
||||||
BikeInfoFactory.Create((TariffDescription)null).FreeTimePerSession,
|
BikeInfoFactory.Create((TariffDescription)null).TariffEntries.ContainsKey("1"), // Free time per session
|
||||||
Is.EqualTo(TimeSpan.Zero));
|
Is.False);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestCreateTariffDescription_FeeEuroPerHour_Null()
|
public void TestCreateTariffDescription_FeeEuroPerHour_Null()
|
||||||
{
|
{
|
||||||
Assert.That(
|
Assert.That(
|
||||||
BikeInfoFactory.Create((TariffDescription)null).FeeEuroPerHour,
|
BikeInfoFactory.Create((TariffDescription)null).TariffEntries.ContainsKey("2"), // FeeEuroPerHour
|
||||||
Is.NaN);
|
Is.False);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestCreateTariffDescription_AboEuroPerMonth_Null()
|
public void TestCreateTariffDescription_AboEuroPerMonth_Null()
|
||||||
{
|
{
|
||||||
Assert.That(
|
Assert.That(
|
||||||
BikeInfoFactory.Create((TariffDescription)null).AboEuroPerMonth,
|
BikeInfoFactory.Create((TariffDescription)null).TariffEntries.ContainsKey("4"), // Abo euro per month
|
||||||
Is.NaN);
|
Is.False);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1301,5 +1309,192 @@ namespace TestTINKLib.Fixtures.Connector
|
||||||
bookingFinished.MiniSurvey.Questions.Count,
|
bookingFinished.MiniSurvey.Questions.Count,
|
||||||
Is.EqualTo(0));
|
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
|
// Verify state "Booked closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -740,7 +740,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked closed" after action
|
// Verify state "Booked closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -813,7 +813,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked closed" after action
|
// Verify state "Booked closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -889,7 +889,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked closed" after action
|
// Verify state "Booked closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -965,7 +965,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked closed" after action
|
// Verify state "Booked closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1039,7 +1039,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked closed" after action
|
// Verify state "Booked closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1098,7 +1098,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1280,7 +1280,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1342,7 +1342,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1405,7 +1405,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
Substitute.For<IUser>());
|
Substitute.For<IUser>());
|
||||||
|
|
||||||
// Verify prerequisites.
|
// Verify prerequisites.
|
||||||
Assert.AreEqual("Open lock & continue renting", handler.ButtonText);
|
Assert.AreEqual("Open lock", handler.ButtonText);
|
||||||
Assert.IsTrue(handler.IsButtonVisible);
|
Assert.IsTrue(handler.IsButtonVisible);
|
||||||
Assert.AreEqual("Close lock", handler.LockitButtonText);
|
Assert.AreEqual("Close lock", handler.LockitButtonText);
|
||||||
Assert.IsTrue(handler.IsLockitButtonVisible);
|
Assert.IsTrue(handler.IsLockitButtonVisible);
|
||||||
|
@ -227,7 +227,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
});
|
});
|
||||||
|
|
||||||
// Verify state "Booked Unknown" after action
|
// 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.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
|
@ -289,7 +289,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,7 +347,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
});
|
});
|
||||||
|
|
||||||
// Verify state "Booked Disconnected" after action
|
// 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.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
|
@ -793,7 +793,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -975,7 +975,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1037,7 +1037,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1100,7 +1100,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,7 +229,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
});
|
});
|
||||||
|
|
||||||
// Verify state "Booked Unknown" after action
|
// 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.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
|
@ -291,7 +291,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -349,7 +349,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
});
|
});
|
||||||
|
|
||||||
// Verify state "Booked Disconnected" after action
|
// 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.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
|
@ -666,7 +666,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -845,7 +845,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -907,7 +907,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -970,7 +970,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
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.", bike1315.StateText);
|
||||||
Assert.AreEqual("Available.", bike1543.StateText);
|
Assert.AreEqual("Available.", bike1543.StateText);
|
||||||
Assert.AreEqual("Close lock", bike1545.LockitButtonText);
|
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", bike1315.LockitButtonText);
|
||||||
Assert.AreEqual("DisposableDisconnected", bike1543.LockitButtonText);
|
Assert.AreEqual("DisposableDisconnected", bike1543.LockitButtonText);
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace UITest.Fixtures.ObjectTests
|
||||||
[Test]
|
[Test]
|
||||||
public async Task TestStopUpdatePeriodiallyRepeated()
|
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));
|
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ namespace UITest.Fixtures.ObjectTests
|
||||||
[Test]
|
[Test]
|
||||||
public async Task TestStartUpdatePeriodiallyRepeated()
|
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));
|
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ namespace UITest.Fixtures.ObjectTests
|
||||||
[Test]
|
[Test]
|
||||||
public async Task TestStopUpdatePeriodiallyNoStart()
|
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.
|
// Should not lead to dead lock.
|
||||||
await l_oManger.StartUpdateAyncPeridically(new PollingParameters(new System.TimeSpan(0, 0, 2), true));
|
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 stationId = null,
|
||||||
string stationName = null,
|
string stationName = null,
|
||||||
Uri operatorUri = null,
|
Uri operatorUri = null,
|
||||||
TariffDescription tariffDescription = null,
|
RentalDescription tariffDescription = null,
|
||||||
Func<DateTime> dateTimeProvider = null,
|
Func<DateTime> dateTimeProvider = null,
|
||||||
IStateInfo stateInfo = null) : base(id, lockModel, isDemo, group, wheelType, typeOfBike, description, stationId, stationName, operatorUri, tariffDescription, dateTimeProvider, stateInfo)
|
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.
|
// Verify prerequisites.
|
||||||
Assert.AreEqual("Return bike", handler.ButtonText);
|
Assert.AreEqual("Return bike", handler.ButtonText);
|
||||||
Assert.IsTrue(handler.IsButtonVisible);
|
Assert.IsTrue(handler.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", handler.LockitButtonText);
|
Assert.AreEqual("Open lock", handler.LockitButtonText);
|
||||||
Assert.IsTrue(handler.IsLockitButtonVisible);
|
Assert.IsTrue(handler.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state after action
|
// Verify state after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -373,7 +373,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state after action
|
// Verify state after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -443,7 +443,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state after action
|
// Verify state after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -513,7 +513,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state after action
|
// Verify state after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -581,7 +581,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state after action
|
// Verify state after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,7 +648,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state after action
|
// Verify state after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -827,7 +827,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
});
|
});
|
||||||
|
|
||||||
// Verify state "Booked Unknown" after action
|
// 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.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
|
@ -890,7 +890,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
// Verify state "Booked Closed" after action
|
// Verify state "Booked Closed" after action
|
||||||
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
Assert.AreEqual("Return bike", subsequent.ButtonText);
|
||||||
Assert.IsTrue(subsequent.IsButtonVisible);
|
Assert.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Open lock & continue renting", subsequent.LockitButtonText);
|
Assert.AreEqual("Open lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -948,7 +948,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
|
||||||
});
|
});
|
||||||
|
|
||||||
// Verify state "Booked Disconnected" after action
|
// 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.IsTrue(subsequent.IsButtonVisible);
|
||||||
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
Assert.AreEqual("Close lock", subsequent.LockitButtonText);
|
||||||
Assert.IsTrue(subsequent.IsLockitButtonVisible);
|
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-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($"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("Close lock", bike1545.LockitButtonText);
|
||||||
Assert.AreEqual("Open lock & continue renting", bike1537.LockitButtonText);
|
Assert.AreEqual("Open lock", bike1537.LockitButtonText);
|
||||||
|
|
||||||
Assert.IsFalse(myBikes.IsNoBikesOccupiedVisible);
|
Assert.IsFalse(myBikes.IsNoBikesOccupiedVisible);
|
||||||
Assert.IsEmpty(myBikes.NoBikesOccupiedText);
|
Assert.IsEmpty(myBikes.NoBikesOccupiedText);
|
||||||
|
@ -212,7 +212,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
||||||
permissions.OpenAppSettings();
|
permissions.OpenAppSettings();
|
||||||
});
|
});
|
||||||
|
|
||||||
Assert.IsEmpty(myBikes.StatusInfoText);
|
Assert.IsEmpty(myBikes.StatusInfoText, "Unexpected status info text detected.");
|
||||||
|
|
||||||
Assert.AreEqual(2, myBikes.Count);
|
Assert.AreEqual(2, myBikes.Count);
|
||||||
Assert.IsTrue(myBikes.IsIdle);
|
Assert.IsTrue(myBikes.IsIdle);
|
||||||
|
@ -226,7 +226,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
||||||
Assert.AreEqual("Search lock", bike1537.LockitButtonText);
|
Assert.AreEqual("Search lock", bike1537.LockitButtonText);
|
||||||
|
|
||||||
Assert.IsFalse(myBikes.IsNoBikesOccupiedVisible);
|
Assert.IsFalse(myBikes.IsNoBikesOccupiedVisible);
|
||||||
Assert.IsEmpty(myBikes.NoBikesOccupiedText);
|
Assert.IsEmpty(myBikes.NoBikesOccupiedText, "There must not be any bikes occupied.");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -314,7 +314,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
||||||
"No");
|
"No");
|
||||||
});
|
});
|
||||||
|
|
||||||
Assert.IsEmpty(myBikes.StatusInfoText);
|
Assert.IsEmpty(myBikes.StatusInfoText, "Unexpected status info text detected.");
|
||||||
|
|
||||||
Assert.AreEqual(2, myBikes.Count);
|
Assert.AreEqual(2, myBikes.Count);
|
||||||
Assert.IsTrue(myBikes.IsIdle);
|
Assert.IsTrue(myBikes.IsIdle);
|
||||||
|
@ -328,7 +328,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel
|
||||||
Assert.AreEqual("Search lock", bike1537.LockitButtonText);
|
Assert.AreEqual("Search lock", bike1537.LockitButtonText);
|
||||||
|
|
||||||
Assert.IsFalse(myBikes.IsNoBikesOccupiedVisible);
|
Assert.IsFalse(myBikes.IsNoBikesOccupiedVisible);
|
||||||
Assert.IsEmpty(myBikes.NoBikesOccupiedText);
|
Assert.IsEmpty(myBikes.NoBikesOccupiedText, "There must not be any bikes occupied.");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|
|
@ -84,8 +84,6 @@
|
||||||
<Compile Include="Fixtures\ObjectTests\TestFilterCollection.cs" />
|
<Compile Include="Fixtures\ObjectTests\TestFilterCollection.cs" />
|
||||||
<Compile Include="Fixtures\ObjectTests\TestFilterCollectionStore.cs" />
|
<Compile Include="Fixtures\ObjectTests\TestFilterCollectionStore.cs" />
|
||||||
<Compile Include="Fixtures\ObjectTests\TestJsonSettingsDictionary.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\TestWhatsNew.cs" />
|
||||||
<Compile Include="Fixtures\ObjectTests\User\Account\TestAccount.cs" />
|
<Compile Include="Fixtures\ObjectTests\User\Account\TestAccount.cs" />
|
||||||
<Compile Include="Fixtures\ObjectTests\User\Account\TestAccountExtensions.cs" />
|
<Compile Include="Fixtures\ObjectTests\User\Account\TestAccountExtensions.cs" />
|
||||||
|
|