diff --git a/LastenradBayern/LastenradBayern.sln b/LastenradBayern/LastenradBayern.sln
index 938e6ab..21bc332 100644
--- a/LastenradBayern/LastenradBayern.sln
+++ b/LastenradBayern/LastenradBayern.sln
@@ -11,25 +11,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockItShared", "..\LockItSh
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
@@ -249,150 +237,6 @@ Global
{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
@@ -473,54 +317,6 @@ Global
{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
@@ -528,6 +324,11 @@ Global
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C6529CD7-C3F7-4E80-89B5-002E2B8E3EB5}
EndGlobalSection
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ TINK\LastenradBayern.projitems*{3a0ef953-1501-4155-b0a0-265eb5fb2975}*SharedItemsImports = 4
+ ..\ShareeSharedGuiLib\ShareeSharedGuiLib.projitems*{3a0ef953-1501-4155-b0a0-265eb5fb2975}*SharedItemsImports = 4
+ TINK\LastenradBayern.projitems*{8d4f2cdd-32c6-4aa1-a9e1-7b27bdceb3a5}*SharedItemsImports = 13
+ EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
Policies = $0
$0.DotNetNamingPolicy = $1
diff --git a/LastenradBayern/TINK.Android/LastenradBayern.Android.csproj b/LastenradBayern/TINK.Android/LastenradBayern.Android.csproj
index d7106b1..2d558b7 100644
--- a/LastenradBayern/TINK.Android/LastenradBayern.Android.csproj
+++ b/LastenradBayern/TINK.Android/LastenradBayern.Android.csproj
@@ -57,7 +57,7 @@
prompt
4
False
- SdkOnly
+ None
false
false
false
@@ -176,16 +176,16 @@
- 1.9.0.1
+ 1.9.0.2
- 1.3.1.1
+ 1.3.1.2
- 1.0.0.15
+ 1.0.0.16
- 1.2.1.8
+ 1.2.1.9
@@ -193,7 +193,7 @@
2.0.5
- 1.7.4
+ 1.7.5
@@ -203,10 +203,10 @@
5.0.0
-
-
-
-
+
+
+
+
diff --git a/LastenradBayern/TINK.Android/Properties/AndroidManifest.xml b/LastenradBayern/TINK.Android/Properties/AndroidManifest.xml
index 053158e..975753a 100644
--- a/LastenradBayern/TINK.Android/Properties/AndroidManifest.xml
+++ b/LastenradBayern/TINK.Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/LastenradBayern/TINK.iOS/Info.plist b/LastenradBayern/TINK.iOS/Info.plist
index 28521b8..b4cc507 100644
--- a/LastenradBayern/TINK.iOS/Info.plist
+++ b/LastenradBayern/TINK.iOS/Info.plist
@@ -56,8 +56,8 @@
CFBundleDisplayName
LastenradBayern
CFBundleVersion
- 357
+ 360
CFBundleShortVersionString
- 3.0.357
+ 3.0.360
diff --git a/LastenradBayern/TINK.iOS/LastenradBayern.iOS.csproj b/LastenradBayern/TINK.iOS/LastenradBayern.iOS.csproj
index fb56822..8315c9d 100644
--- a/LastenradBayern/TINK.iOS/LastenradBayern.iOS.csproj
+++ b/LastenradBayern/TINK.iOS/LastenradBayern.iOS.csproj
@@ -25,7 +25,7 @@
4
false
x86_64
- None
+ SdkOnly
true
VS: com.TeilRad.LastenradBayern Development
Apple Development: Oliver Hauff (8SZ7J9P24J)
@@ -200,7 +200,7 @@
2.0.5
- 1.7.4
+ 1.7.5
5.0.0
diff --git a/LastenradBayern/TINK/App.xaml.cs b/LastenradBayern/TINK/App.xaml.cs
index a6b270b..4736382 100644
--- a/LastenradBayern/TINK/App.xaml.cs
+++ b/LastenradBayern/TINK/App.xaml.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -126,6 +126,8 @@ namespace TINK
Log.Debug("Get auth cookie.");
IStore store = null;
+ // Version of last version used or null for initial installation.
+ // Used for updating purposes.
var lastVersion = JsonSettingsDictionary.GetAppVersion(settingsJSON);
if (new Version(3, 0, 290) <= lastVersion)
{
@@ -139,9 +141,11 @@ namespace TINK
Barrel.ApplicationId = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
+ // Get main thread synchronization context to be able to update gui elements from worker threads.
var context = SynchronizationContext.Current;
var appInfoService = DependencyService.Get();
+ var smartDevice = DependencyService.Get();
const string MERCHANTID = "0000000000";
@@ -158,13 +162,14 @@ namespace TINK
CultureInfo.CurrentUICulture.TwoLetterISOLanguageName,
sessionCookie,
mail,
+ smartDevice,
expiresAfter),
merchantId: MERCHANTID,
bluetoothService: BluetoothService, /* locksService */
locationPermissionsService: PermissionsService,
locationServicesContainer: LocationServicesContainer,
locksService: null,
- device: DependencyService.Get(),
+ device: smartDevice,
specialFolder: specialFolders,
cipher: new Cipher(),
new TINK.Services.ThemeNS.Theme(Application.Current.Resources.MergedDictionaries),
diff --git a/LastenradBayern/TINK/View/Bike/ILockItBike.xaml b/LastenradBayern/TINK/View/Bike/ILockItBike.xaml
index b882ec6..8f433c8 100644
--- a/LastenradBayern/TINK/View/Bike/ILockItBike.xaml
+++ b/LastenradBayern/TINK/View/Bike/ILockItBike.xaml
@@ -199,8 +199,8 @@
Grid.Row="13"
Grid.ColumnSpan="2"/>
diff --git a/LastenradBayern/TINK/View/BikesAtStation/BikesAtStationPage.xaml.cs b/LastenradBayern/TINK/View/BikesAtStation/BikesAtStationPage.xaml.cs
index 8e89fdf..45e207d 100644
--- a/LastenradBayern/TINK/View/BikesAtStation/BikesAtStationPage.xaml.cs
+++ b/LastenradBayern/TINK/View/BikesAtStation/BikesAtStationPage.xaml.cs
@@ -79,7 +79,7 @@ namespace TINK.View.BikesAtStation
// No need to create view model, set binding context an items source if already done.
// If done twice tap events are fired multiple times (when hiding page using home button).
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
isInitializationStarted = false;
return;
}
@@ -88,9 +88,6 @@ namespace TINK.View.BikesAtStation
{
var model = App.ModelRoot;
- // Backup synchronization context when called from GUI-thread.
- var synchronizationContext = SynchronizationContext.Current;
-
m_oViewModel = new BikesAtStationPageViewModel(
model.ActiveUser,
App.PermissionsService,
@@ -103,7 +100,7 @@ namespace TINK.View.BikesAtStation
model.LocksServices.Active,
model.Polling,
(url) => DependencyService.Get().OpenUrl(url),
- (d, obj) => synchronizationContext.Post(d, obj),
+ model.PostAction,
model.SmartDevice,
this)
{
@@ -128,7 +125,7 @@ namespace TINK.View.BikesAtStation
BindingContext = m_oViewModel;
BikesAtStationListView.ItemsSource = m_oViewModel;
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
isInitializationStarted = false;
}
diff --git a/LastenradBayern/TINK/View/FindBike/FindBikePage.xaml.cs b/LastenradBayern/TINK/View/FindBike/FindBikePage.xaml.cs
index 2d4db6c..c436941 100644
--- a/LastenradBayern/TINK/View/FindBike/FindBikePage.xaml.cs
+++ b/LastenradBayern/TINK/View/FindBike/FindBikePage.xaml.cs
@@ -35,7 +35,7 @@ namespace TINK.View.FindBike
{
// No need to create view model, set binding context an items source if already done.
// If done twice tap events are fired multiple times (when hiding page using home button).
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
return;
}
@@ -43,9 +43,6 @@ namespace TINK.View.FindBike
{
var model = App.ModelRoot;
- // Backup synchronization context when called from GUI-thread.
- var synchronizationContext = SynchronizationContext.Current;
-
m_oViewModel = new FindBikePageViewModel(
model.ActiveUser,
App.PermissionsService,
@@ -57,7 +54,7 @@ namespace TINK.View.FindBike
model.LocksServices.Active,
model.Stations,
model.Polling,
- (d, obj) => synchronizationContext.Post(d, obj),
+ model.PostAction,
model.SmartDevice,
this,
(url) => DependencyService.Get().OpenUrl(url))
@@ -78,7 +75,7 @@ namespace TINK.View.FindBike
BindingContext = m_oViewModel;
FindBikeListView.ItemsSource = m_oViewModel;
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
}
///
diff --git a/LastenradBayern/TINK/View/MyBikes/MyBikesPage.xaml.cs b/LastenradBayern/TINK/View/MyBikes/MyBikesPage.xaml.cs
index 903878a..0efb430 100644
--- a/LastenradBayern/TINK/View/MyBikes/MyBikesPage.xaml.cs
+++ b/LastenradBayern/TINK/View/MyBikes/MyBikesPage.xaml.cs
@@ -1,4 +1,4 @@
-using Plugin.Connectivity;
+using Plugin.Connectivity;
using System;
using System.Threading;
using System.Threading.Tasks;
@@ -47,7 +47,7 @@ namespace TINK.View.MyBikes
{
// No need to create view model, set binding context an items source if already done.
// If done twice tap events are fired multiple times (when hiding page using home button).
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
isInitializationStarted = false;
return;
}
@@ -56,9 +56,6 @@ namespace TINK.View.MyBikes
{
var model = App.ModelRoot;
- // Backup synchronization context when called from GUI-thread.
- var synchronizationContext = SynchronizationContext.Current;
-
m_oViewModel = new MyBikesPageViewModel(
model.ActiveUser,
App.PermissionsService,
@@ -70,7 +67,7 @@ namespace TINK.View.MyBikes
model.LocksServices.Active,
model.Stations,
model.Polling,
- (d, obj) => synchronizationContext.Post(d, obj),
+ model.PostAction,
model.SmartDevice,
this,
(url) => DependencyService.Get().OpenUrl(url))
@@ -91,7 +88,7 @@ namespace TINK.View.MyBikes
BindingContext = m_oViewModel;
MyBikesListView.ItemsSource = m_oViewModel;
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
isInitializationStarted = false;
}
@@ -183,4 +180,4 @@ namespace TINK.View.MyBikes
public async Task DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync(new FeedbackPopup(battery, co2Saving));
#endif
}
-}
\ No newline at end of file
+}
diff --git a/LockItBLE/LockItBLE.csproj b/LockItBLE/LockItBLE.csproj
index 215cfbc..3626fc5 100644
--- a/LockItBLE/LockItBLE.csproj
+++ b/LockItBLE/LockItBLE.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/LockItBLE/Services/BluetoothLock/BLE/LockItEventBased.cs b/LockItBLE/Services/BluetoothLock/BLE/LockItEventBased.cs
index daaf62b..2a8d86b 100644
--- a/LockItBLE/Services/BluetoothLock/BLE/LockItEventBased.cs
+++ b/LockItBLE/Services/BluetoothLock/BLE/LockItEventBased.cs
@@ -154,8 +154,8 @@ namespace TINK.Services.BluetoothLock.BLE
case LockitLockingState.Unknown:
// Expected error. ILockIt count not be opened (Spoke has blocked/ blocks lock, ....)
- Log.ForContext().Debug($"Opening lock failed. Bold was blocked.");
- throw new CouldntOpenBoldWasBlockedException();
+ Log.ForContext().Debug($"Opening lock failed. Bold status is unknown");
+ throw new CouldntOpenBoldStatusIsUnknownException();
default:
// Comprises values
@@ -270,6 +270,11 @@ namespace TINK.Services.BluetoothLock.BLE
Log.ForContext().Information($"Lock was closed successfully.");
return lockingState;
+ case LockitLockingState.Open:
+ // Expected error. ILockIt could not be closed. Bolt was blocked but was opened again.
+ Log.ForContext().Debug($"Closing lock failed. Bold is blocked but was reopened again.");
+ throw new CouldntCloseBoldBlockedException(LockingState.Open);
+
default:
// Comprises values
// - LockitLockingState.Open
diff --git a/LockItBLE/Services/BluetoothLock/BLE/LockItPolling.cs b/LockItBLE/Services/BluetoothLock/BLE/LockItPolling.cs
index a4148ec..a79f28b 100644
--- a/LockItBLE/Services/BluetoothLock/BLE/LockItPolling.cs
+++ b/LockItBLE/Services/BluetoothLock/BLE/LockItPolling.cs
@@ -120,8 +120,8 @@ namespace TINK.Services.BluetoothLock.BLE
case LockitLockingState.Unknown:
// Expected error. ILockIt count not be opened (Spoke has blocked/ blocks lock, ....)
- Log.ForContext().Debug($"Opening lock failed. Bold was blocked.");
- throw new CouldntOpenBoldWasBlockedException();
+ Log.ForContext().Debug($"Opening lock failed. Bold status is unknown.");
+ throw new CouldntOpenBoldStatusIsUnknownException();
default:
// Comprises values
@@ -181,13 +181,29 @@ namespace TINK.Services.BluetoothLock.BLE
var watch = new Stopwatch();
watch.Start();
+ var hasBeenLocked = false;
while (info.State != null
- && info.State.Value != LockitLockingState.CouldntCloseBoldBlocked
&& info.State.Value != LockitLockingState.CouldntCloseMoving
&& info.State.Value != LockitLockingState.Closed
&& watch.Elapsed < TimeSpan.FromMilliseconds(OPEN_CLOSE_TIMEOUT_MS))
{
info = await GetLockStateAsync(true); ; // While closing lock seems not always respond to reading operations.
+
+ if (info.State.Value == LockitLockingState.CouldntCloseBoldBlocked)
+ {
+ // Lock reported a blocked bold.
+ hasBeenLocked = true;
+ Log.ForContext().Debug($"Waiting for lock to close. Bold is blocked.");
+ continue;
+ }
+
+ if (hasBeenLocked && info.State.Value == LockitLockingState.Open)
+ {
+ // ILockIt could not be closed. Bolt was blocked but was opened again.
+ Log.ForContext().Debug($"Closing lock failed. Bold was blocked and lock was reopened.");
+ throw new CouldntCloseBoldBlockedException(LockingState.Open);
+ }
+
Log.ForContext().Debug($"Waiting for lock to close. Current lock state is {info?.State.Value}.");
}
diff --git a/LockItShared/MultilingualResources/Resources.Designer.cs b/LockItShared/MultilingualResources/Resources.Designer.cs
index 2677fa1..652a138 100644
--- a/LockItShared/MultilingualResources/Resources.Designer.cs
+++ b/LockItShared/MultilingualResources/Resources.Designer.cs
@@ -1,4 +1,4 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
//
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
@@ -144,18 +144,18 @@ namespace TINK.MultilingualResources {
///
/// Looks up a localized string similar to Bold is blocked..
///
- internal static string ErrorOpenLockBoldBlocked {
+ internal static string ErrorOpenLockBoldIsBlocked {
get {
- return ResourceManager.GetString("ErrorOpenLockBoldBlocked", resourceCulture);
+ return ResourceManager.GetString("ErrorOpenLockBoldIsBlocked", resourceCulture);
}
}
///
- /// Looks up a localized string similar to Bold was or is blocked..
+ /// Looks up a localized string similar to Bold status is unknown..
///
- internal static string ErrorOpenLockBoldWasBlocked {
+ internal static string ErrorOpenLockBoldStatusIsUnknown {
get {
- return ResourceManager.GetString("ErrorOpenLockBoldWasBlocked", resourceCulture);
+ return ResourceManager.GetString("ErrorOpenLockBoldStatusIsUnknown", resourceCulture);
}
}
diff --git a/LockItShared/Services/BluetoothLock/Exception/CouldntCloseBoldBlockedException.cs b/LockItShared/Services/BluetoothLock/Exception/CouldntCloseBoldBlockedException.cs
index e7a84d8..f940e81 100644
--- a/LockItShared/Services/BluetoothLock/Exception/CouldntCloseBoldBlockedException.cs
+++ b/LockItShared/Services/BluetoothLock/Exception/CouldntCloseBoldBlockedException.cs
@@ -1,11 +1,20 @@
-using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
+using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
namespace TINK.Services.BluetoothLock.Exception
{
public class CouldntCloseBoldBlockedException : StateAwareException
{
- public CouldntCloseBoldBlockedException() : base(
- LockingState.UnknownFromHardwareError, // Lock is closed in most cases, but this is not guaranteed according to haveltec.
+ ///
+ /// Constructs a bold blocked exception.
+ ///
+ ///
+ /// Lock is closed in most cases, but this is not guaranteed according to haveltec.
+ ///
+ /// State of the lock while/ after bold blocked event.
+ ///
+ ///
+ public CouldntCloseBoldBlockedException(LockingState state = LockingState.UnknownFromHardwareError) : base(
+ state,
MultilingualResources.Resources.ErrorCloseLockBoldBlocked)
{
}
diff --git a/LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldIsBlockedException.cs b/LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldIsBlockedException.cs
index 3d7db49..af5aad8 100644
--- a/LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldIsBlockedException.cs
+++ b/LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldIsBlockedException.cs
@@ -1,4 +1,4 @@
-using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
+using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
namespace TINK.Services.BluetoothLock.Exception
{
@@ -9,7 +9,7 @@ namespace TINK.Services.BluetoothLock.Exception
{
public CouldntOpenBoldIsBlockedException() : base(
LockingState.UnknownFromHardwareError,
- MultilingualResources.Resources.ErrorOpenLockBoldBlocked)
+ MultilingualResources.Resources.ErrorOpenLockBoldIsBlocked)
{
}
}
diff --git a/LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldWasBlockedException.cs b/LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldStatusIsUnknownException.cs
similarity index 52%
rename from LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldWasBlockedException.cs
rename to LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldStatusIsUnknownException.cs
index d8aa420..9913eb4 100644
--- a/LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldWasBlockedException.cs
+++ b/LockItShared/Services/BluetoothLock/Exception/CouldntOpenBoldStatusIsUnknownException.cs
@@ -1,15 +1,15 @@
-using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
+using TINK.Model.Bikes.BikeInfoNS.BluetoothLock;
namespace TINK.Services.BluetoothLock.Exception
{
///
/// Lock can not be opened, because bold is/ was blocked. Obstacle might no more block but lock could not be opened completely to obstacle.
///
- public class CouldntOpenBoldWasBlockedException : StateAwareException
+ public class CouldntOpenBoldStatusIsUnknownException : StateAwareException
{
- public CouldntOpenBoldWasBlockedException() : base(
+ public CouldntOpenBoldStatusIsUnknownException() : base(
LockingState.UnknownFromHardwareError,
- MultilingualResources.Resources.ErrorOpenLockBoldWasBlocked)
+ MultilingualResources.Resources.ErrorOpenLockBoldStatusIsUnknown)
{
}
}
diff --git a/Meinkonrad/MeinKonrad.sln b/Meinkonrad/MeinKonrad.sln
index fc9cdbf..6073b3b 100644
--- a/Meinkonrad/MeinKonrad.sln
+++ b/Meinkonrad/MeinKonrad.sln
@@ -11,20 +11,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockItShared", "..\LockItSh
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
@@ -245,150 +237,6 @@ Global
{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
@@ -469,54 +317,6 @@ Global
{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
@@ -527,6 +327,7 @@ Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
TINK\Meinkonrad.projitems*{5cf95cb1-ad37-4dba-8b9d-651cfb9eb903}*SharedItemsImports = 13
TINK\Meinkonrad.projitems*{cf1b848a-d1df-40ab-ba6f-b1e1746a1161}*SharedItemsImports = 4
+ ..\ShareeSharedGuiLib\ShareeSharedGuiLib.projitems*{cf1b848a-d1df-40ab-ba6f-b1e1746a1161}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
Policies = $0
diff --git a/Meinkonrad/TINK.Android/Meinkonrad.Android.csproj b/Meinkonrad/TINK.Android/Meinkonrad.Android.csproj
index efd3aae..a29ab4b 100644
--- a/Meinkonrad/TINK.Android/Meinkonrad.Android.csproj
+++ b/Meinkonrad/TINK.Android/Meinkonrad.Android.csproj
@@ -57,7 +57,7 @@
prompt
4
False
- SdkOnly
+ None
false
false
false
@@ -176,16 +176,16 @@
- 1.9.0.1
+ 1.9.0.2
- 1.3.1.1
+ 1.3.1.2
- 1.0.0.15
+ 1.0.0.16
- 1.2.1.8
+ 1.2.1.9
@@ -193,7 +193,7 @@
2.0.5
- 1.7.4
+ 1.7.5
@@ -203,10 +203,10 @@
5.0.0
-
-
-
-
+
+
+
+
diff --git a/Meinkonrad/TINK.Android/Properties/AndroidManifest.xml b/Meinkonrad/TINK.Android/Properties/AndroidManifest.xml
index 0a050a1..50cf382 100644
--- a/Meinkonrad/TINK.Android/Properties/AndroidManifest.xml
+++ b/Meinkonrad/TINK.Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/Meinkonrad/TINK.iOS/Info.plist b/Meinkonrad/TINK.iOS/Info.plist
index 16f5341..7fa2cb0 100644
--- a/Meinkonrad/TINK.iOS/Info.plist
+++ b/Meinkonrad/TINK.iOS/Info.plist
@@ -56,8 +56,8 @@
CFBundleDisplayName
Mein konrad
CFBundleVersion
- 357
+ 360
CFBundleShortVersionString
- 3.0.357
+ 3.0.360
diff --git a/Meinkonrad/TINK.iOS/Meinkonrad.iOS.csproj b/Meinkonrad/TINK.iOS/Meinkonrad.iOS.csproj
index 20b0cf5..64e9652 100644
--- a/Meinkonrad/TINK.iOS/Meinkonrad.iOS.csproj
+++ b/Meinkonrad/TINK.iOS/Meinkonrad.iOS.csproj
@@ -25,7 +25,7 @@
4
false
x86_64
- None
+ SdkOnly
true
Automatic
Apple Development: Oliver Hauff (947JH7MS9L)
@@ -201,7 +201,7 @@
2.0.5
- 1.7.4
+ 1.7.5
5.0.0
diff --git a/Meinkonrad/TINK/App.xaml b/Meinkonrad/TINK/App.xaml
index a6a4698..005e31f 100644
--- a/Meinkonrad/TINK/App.xaml
+++ b/Meinkonrad/TINK/App.xaml
@@ -27,10 +27,10 @@
-
-
-
-
+
+
+
+
diff --git a/Meinkonrad/TINK/App.xaml.cs b/Meinkonrad/TINK/App.xaml.cs
index 2c99d0b..70c107c 100644
--- a/Meinkonrad/TINK/App.xaml.cs
+++ b/Meinkonrad/TINK/App.xaml.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -125,6 +125,8 @@ namespace TINK
Log.Debug("Get auth cookie.");
IStore store = null;
+ // Version of last version used or null for initial installation.
+ // Used for updating purposes.
var lastVersion = JsonSettingsDictionary.GetAppVersion(settingsJSON);
if (new Version(3, 0, 290) <= lastVersion)
{
@@ -138,9 +140,11 @@ namespace TINK
Barrel.ApplicationId = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
+ // Get main thread synchronization context to be able to update gui elements from worker threads.
var context = SynchronizationContext.Current;
var appInfoService = DependencyService.Get();
+ var smartDevice = DependencyService.Get();
const string MERCHANTID = "0000000000";
@@ -157,13 +161,14 @@ namespace TINK
CultureInfo.CurrentUICulture.TwoLetterISOLanguageName,
sessionCookie,
mail,
+ smartDevice,
expiresAfter),
merchantId: MERCHANTID,
bluetoothService: BluetoothService, /* locksService */
locationPermissionsService: PermissionsService,
locationServicesContainer: LocationServicesContainer,
locksService: null,
- device: DependencyService.Get(),
+ device: smartDevice,
specialFolder: specialFolders,
cipher: new Cipher(),
new TINK.Services.ThemeNS.Theme(Application.Current.Resources.MergedDictionaries),
diff --git a/Meinkonrad/TINK/View/Bike/ILockItBike.xaml b/Meinkonrad/TINK/View/Bike/ILockItBike.xaml
index bab8594..60ea2bf 100644
--- a/Meinkonrad/TINK/View/Bike/ILockItBike.xaml
+++ b/Meinkonrad/TINK/View/Bike/ILockItBike.xaml
@@ -69,32 +69,13 @@
IsVisible="{Binding IsButtonVisible}"
IsEnabled="{Binding IsIdle}"
Command="{Binding OnButtonClicked}"/>
-
-
-
-
-
-
-
-
-
-
-
+
@@ -237,8 +218,8 @@
Grid.Row="13"
Grid.ColumnSpan="2"/>
diff --git a/Meinkonrad/TINK/View/BikesAtStation/BikesAtStationPage.xaml b/Meinkonrad/TINK/View/BikesAtStation/BikesAtStationPage.xaml
index 769a4ed..80ea253 100644
--- a/Meinkonrad/TINK/View/BikesAtStation/BikesAtStationPage.xaml
+++ b/Meinkonrad/TINK/View/BikesAtStation/BikesAtStationPage.xaml
@@ -27,93 +27,108 @@
-
+
-
-
+
+
-
-
+
-
-
+
+
-
-
+
+
-
+
+
-
-
+
+
-
-
+
-
-
+
+
-
-
+
+
-
-
+
-
-
+
-
-
+
+
-
+
+
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
DependencyService.Get().OpenUrl(url),
- (d, obj) => synchronizationContext.Post(d, obj),
+ model.PostAction,
model.SmartDevice,
this)
{
@@ -129,7 +126,7 @@ namespace TINK.View.BikesAtStation
BindingContext = m_oViewModel;
BikesAtStationListView.ItemsSource = m_oViewModel;
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
isInitializationStarted = false;
}
diff --git a/Meinkonrad/TINK/View/FindBike/FindBikePage.xaml b/Meinkonrad/TINK/View/FindBike/FindBikePage.xaml
index 5a72e4d..c3b70a0 100644
--- a/Meinkonrad/TINK/View/FindBike/FindBikePage.xaml
+++ b/Meinkonrad/TINK/View/FindBike/FindBikePage.xaml
@@ -23,44 +23,56 @@
+
-
+
+
-
+
+
-
-
-
+
+
-
-
+
+
+
+
+
-
+
-
-
+
-
+
+
+
synchronizationContext.Post(d, obj),
+ model.PostAction,
model.SmartDevice,
this,
(url) => DependencyService.Get().OpenUrl(url))
@@ -77,7 +74,7 @@ namespace TINK.View.FindBike
BindingContext = m_oViewModel;
FindBikeListView.ItemsSource = m_oViewModel;
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
}
///
diff --git a/Meinkonrad/TINK/View/Map/MapPage.xaml b/Meinkonrad/TINK/View/Map/MapPage.xaml
index 1ee3790..9c06b51 100644
--- a/Meinkonrad/TINK/View/Map/MapPage.xaml
+++ b/Meinkonrad/TINK/View/Map/MapPage.xaml
@@ -20,14 +20,22 @@
-
+
+
+
+
+
+
-
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
-
-
-
-
+
+
+
-
-
+
+
+
+
+
+ Grid.Row="0"/>
diff --git a/Meinkonrad/TINK/View/MyBikes/MyBikesPage.xaml b/Meinkonrad/TINK/View/MyBikes/MyBikesPage.xaml
index 7bba9c8..91c4f2e 100644
--- a/Meinkonrad/TINK/View/MyBikes/MyBikesPage.xaml
+++ b/Meinkonrad/TINK/View/MyBikes/MyBikesPage.xaml
@@ -27,35 +27,47 @@
-
+
-
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
-
+
+
+
-
-
+
-
+
-
+
+
+
synchronizationContext.Post(d, obj),
+ model.PostAction,
model.SmartDevice,
this,
(url) => DependencyService.Get().OpenUrl(url))
@@ -91,7 +88,7 @@ namespace TINK.View.MyBikes
BindingContext = m_oViewModel;
MyBikesListView.ItemsSource = m_oViewModel;
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
isInitializationStarted = false;
}
@@ -183,4 +180,4 @@ namespace TINK.View.MyBikes
public async Task DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync(new FeedbackPopup(battery, co2Saving));
#endif
}
-}
\ No newline at end of file
+}
diff --git a/ShareeSharedGuiLib/ShareeSharedGuiLib.projitems b/ShareeSharedGuiLib/ShareeSharedGuiLib.projitems
index abc548b..3b70c60 100644
--- a/ShareeSharedGuiLib/ShareeSharedGuiLib.projitems
+++ b/ShareeSharedGuiLib/ShareeSharedGuiLib.projitems
@@ -21,6 +21,7 @@
+
BarLevelInputView.xaml
Code
@@ -29,6 +30,12 @@
BarLevelView.xaml
Code
+
+ HintForRefreshingPageView.xaml
+
+
+ NotConnectedToNetView.xaml
+
RunningProcessView.xaml
Code
@@ -67,4 +74,16 @@
MSBuild:UpdateDesignTimeXaml
+
+
+ Designer
+ MSBuild:Compile
+
+
+
+
+ Designer
+ MSBuild:Compile
+
+
\ No newline at end of file
diff --git a/ShareeSharedGuiLib/View/HintForRefreshingPageView.xaml b/ShareeSharedGuiLib/View/HintForRefreshingPageView.xaml
new file mode 100644
index 0000000..f9312b2
--- /dev/null
+++ b/ShareeSharedGuiLib/View/HintForRefreshingPageView.xaml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ShareeSharedGuiLib/View/HintForRefreshingPageView.xaml.cs b/ShareeSharedGuiLib/View/HintForRefreshingPageView.xaml.cs
new file mode 100644
index 0000000..5932c6d
--- /dev/null
+++ b/ShareeSharedGuiLib/View/HintForRefreshingPageView.xaml.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ShareeSharedGuiLib.ViewModel;
+using Xamarin.Forms;
+using Xamarin.Forms.Xaml;
+
+namespace ShareeSharedGuiLib.View
+{
+ [XamlCompilation(XamlCompilationOptions.Compile)]
+ public partial class HintForRefreshingPageView : ContentView
+ {
+ public HintForRefreshingPageView()
+ {
+ InitializeComponent();
+
+ this.BindingContext = new NotConnectedToNetViewModel();
+
+ }
+ }
+}
diff --git a/ShareeSharedGuiLib/View/NotConnectedToNetView.xaml b/ShareeSharedGuiLib/View/NotConnectedToNetView.xaml
new file mode 100644
index 0000000..df946f4
--- /dev/null
+++ b/ShareeSharedGuiLib/View/NotConnectedToNetView.xaml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ShareeSharedGuiLib/View/NotConnectedToNetView.xaml.cs b/ShareeSharedGuiLib/View/NotConnectedToNetView.xaml.cs
new file mode 100644
index 0000000..6ed626d
--- /dev/null
+++ b/ShareeSharedGuiLib/View/NotConnectedToNetView.xaml.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ShareeSharedGuiLib.ViewModel;
+using Xamarin.Essentials;
+using Xamarin.Forms;
+using Xamarin.Forms.Xaml;
+
+namespace ShareeSharedGuiLib.View
+{
+ [XamlCompilation(XamlCompilationOptions.Compile)]
+ public partial class NotConnectedToNetView : ContentView, INotifyPropertyChanged
+ {
+ public NotConnectedToNetView()
+ {
+ InitializeComponent();
+
+ this.BindingContext = new NotConnectedToNetViewModel();
+
+ }
+ }
+}
diff --git a/ShareeSharedGuiLib/ViewModel/NotConnectedToNetViewModel.cs b/ShareeSharedGuiLib/ViewModel/NotConnectedToNetViewModel.cs
new file mode 100644
index 0000000..a3418c3
--- /dev/null
+++ b/ShareeSharedGuiLib/ViewModel/NotConnectedToNetViewModel.cs
@@ -0,0 +1,54 @@
+using System;
+using System.ComponentModel;
+using System.Threading.Tasks;
+using TINK.MultilingualResources;
+using Xamarin.Essentials;
+
+namespace ShareeSharedGuiLib.ViewModel
+{
+ public class NotConnectedToNetViewModel : INotifyPropertyChanged
+ {
+
+ public bool IsNotConnectedToNet { get; set; }
+
+ private bool _isBikesDataOutdatedLabelVisible = false;
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ public bool IsBikesDataOutdatedLabelVisible
+ {
+ get { return _isBikesDataOutdatedLabelVisible; }
+ set
+ {
+ _isBikesDataOutdatedLabelVisible = value;
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsBikesDataOutdatedLabelVisible)));
+ }
+ }
+ public NotConnectedToNetViewModel()
+ {
+ IsNotConnectedToNet = Connectivity.NetworkAccess != NetworkAccess.Internet;
+ // Register for connectivity changes, be sure to unsubscribe when finished
+ Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
+ }
+
+ public async void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
+ {
+ IsNotConnectedToNet = e.NetworkAccess != NetworkAccess.Internet;
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsNotConnectedToNet)));
+
+ if (IsNotConnectedToNet)
+ {
+ IsBikesDataOutdatedLabelVisible = false;
+ }
+ else
+ {
+ IsBikesDataOutdatedLabelVisible = true;
+ await Task.Delay(TimeSpan.FromSeconds(5));
+ IsBikesDataOutdatedLabelVisible = false;
+
+ }
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsBikesDataOutdatedLabelVisible)));
+
+ }
+ }
+}
diff --git a/TINK/ShareeBike.sln b/TINK/ShareeBike.sln
index 513e5c6..86c71df 100644
--- a/TINK/ShareeBike.sln
+++ b/TINK/ShareeBike.sln
@@ -15,21 +15,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LockItShared", "..\LockItSh
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
@@ -282,150 +270,6 @@ Global
{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
@@ -474,54 +318,6 @@ Global
{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
@@ -529,6 +325,11 @@ Global
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C6529CD7-C3F7-4E80-89B5-002E2B8E3EB5}
EndGlobalSection
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ TINK\TINK.projitems*{5297504f-603f-4e1a-98aa-57c4a0d9d833}*SharedItemsImports = 13
+ ..\ShareeSharedGuiLib\ShareeSharedGuiLib.projitems*{f2d8208f-a8bf-4403-b0ae-2a1d270e4dc9}*SharedItemsImports = 4
+ TINK\TINK.projitems*{f2d8208f-a8bf-4403-b0ae-2a1d270e4dc9}*SharedItemsImports = 4
+ EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
Policies = $0
$0.DotNetNamingPolicy = $1
diff --git a/TINK/TINK.Android/Properties/AndroidManifest.xml b/TINK/TINK.Android/Properties/AndroidManifest.xml
index b075e5a..ce2c57c 100644
--- a/TINK/TINK.Android/Properties/AndroidManifest.xml
+++ b/TINK/TINK.Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/TINK/TINK.Android/TINK.Android.csproj b/TINK/TINK.Android/TINK.Android.csproj
index 7497200..389c4e3 100644
--- a/TINK/TINK.Android/TINK.Android.csproj
+++ b/TINK/TINK.Android/TINK.Android.csproj
@@ -57,7 +57,7 @@
prompt
4
False
- SdkOnly
+ None
false
false
false
@@ -176,16 +176,16 @@
- 1.9.0.1
+ 1.9.0.2
- 1.3.1.1
+ 1.3.1.2
- 1.0.0.15
+ 1.0.0.16
- 1.2.1.8
+ 1.2.1.9
@@ -193,7 +193,7 @@
2.0.5
- 1.7.4
+ 1.7.5
@@ -203,10 +203,10 @@
5.0.0
-
-
-
-
+
+
+
+
diff --git a/TINK/TINK.iOS/Info.plist b/TINK/TINK.iOS/Info.plist
index 6d82728..d9d4a22 100644
--- a/TINK/TINK.iOS/Info.plist
+++ b/TINK/TINK.iOS/Info.plist
@@ -56,8 +56,8 @@
CFBundleDisplayName
sharee.bike
CFBundleVersion
- 357
+ 360
CFBundleShortVersionString
- 3.0.357
+ 3.0.360
diff --git a/TINK/TINK.iOS/TINK.iOS.csproj b/TINK/TINK.iOS/TINK.iOS.csproj
index d799e50..3588450 100644
--- a/TINK/TINK.iOS/TINK.iOS.csproj
+++ b/TINK/TINK.iOS/TINK.iOS.csproj
@@ -25,7 +25,7 @@
4
false
x86_64
- None
+ SdkOnly
true
VS: com.TeilRad.sharee.bike Development
Apple Development: Oliver Hauff (8SZ7J9P24J)
@@ -94,7 +94,7 @@
Entitlements.plist
- SdkOnly
+ None
none
@@ -107,7 +107,7 @@
VS: com.TeilRad.sharee.bike Development
Apple Development: Oliver Hauff (8SZ7J9P24J)
Entitlements.plist
- SdkOnly
+ None
@@ -201,7 +201,7 @@
2.0.5
- 1.7.4
+ 1.7.5
5.0.0
diff --git a/TINK/TINK/App.xaml b/TINK/TINK/App.xaml
index dad9423..0aec9a0 100644
--- a/TINK/TINK/App.xaml
+++ b/TINK/TINK/App.xaml
@@ -21,14 +21,17 @@
-
+
-
-
+
+
+
+
+
diff --git a/TINK/TINK/App.xaml.cs b/TINK/TINK/App.xaml.cs
index d836c4d..64463ab 100644
--- a/TINK/TINK/App.xaml.cs
+++ b/TINK/TINK/App.xaml.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -125,6 +125,8 @@ namespace TINK
Log.Debug("Get auth cookie.");
IStore store = null;
+ // Version of last version used or null for initial installation.
+ // Used for updating purposes.
var lastVersion = JsonSettingsDictionary.GetAppVersion(settingsJSON);
if (new Version(3, 0, 290) <= lastVersion)
{
@@ -138,9 +140,11 @@ namespace TINK
Barrel.ApplicationId = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
+ // Get main thread synchronization context to be able to update gui elements from worker threads.
var context = SynchronizationContext.Current;
var appInfoService = DependencyService.Get();
+ var smartDevice = DependencyService.Get();
const string MERCHANTID = "0000000000";
@@ -157,13 +161,14 @@ namespace TINK
CultureInfo.CurrentUICulture.TwoLetterISOLanguageName,
sessionCookie,
mail,
+ smartDevice,
expiresAfter),
merchantId: MERCHANTID,
bluetoothService: BluetoothService, /* locksService */
locationPermissionsService: PermissionsService,
locationServicesContainer: LocationServicesContainer,
locksService: null,
- device: DependencyService.Get(),
+ device: smartDevice,
specialFolder: specialFolders,
cipher: new Cipher(),
new TINK.Services.ThemeNS.Theme(Application.Current.Resources.MergedDictionaries),
diff --git a/TINK/TINK/View/Bike/ILockItBike.xaml b/TINK/TINK/View/Bike/ILockItBike.xaml
index d95d53d..9dce76b 100644
--- a/TINK/TINK/View/Bike/ILockItBike.xaml
+++ b/TINK/TINK/View/Bike/ILockItBike.xaml
@@ -9,231 +9,275 @@
mc:Ignorable="d"
x:Class="TINK.View.Bike.ILockItBike">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
-
+
+
-
+
-
+
-
+
-
-
-
-
+ Grid.ColumnSpan="3"/>
+
+
+
+
diff --git a/TINK/TINK/View/BikesAtStation/BikesAtStationPage.xaml b/TINK/TINK/View/BikesAtStation/BikesAtStationPage.xaml
index e9125e4..4ea0c9a 100644
--- a/TINK/TINK/View/BikesAtStation/BikesAtStationPage.xaml
+++ b/TINK/TINK/View/BikesAtStation/BikesAtStationPage.xaml
@@ -7,6 +7,7 @@
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
Shell.FlyoutBehavior="Disabled"
+ BackgroundColor="#f6f6f6"
Shell.NavBarIsVisible="{Binding IsIdle}">
@@ -26,94 +27,118 @@
+
+
-
-
-
-
+
-
-
-
+ BackgroundColor="{DynamicResource primary-back-title-color}">
+ HeightRequest="1"
+ WidthRequest="260"
+ HorizontalOptions="Center"
+ Color="White"/>
+
+
+
+
+
+
-
+
+
+
+
+
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+ WidthRequest="260"
+ HorizontalOptions="Center"
+ Color="White"/>
-
-
+
-
-
-
-
+
+
+
+
-
-
+
-
-
-
-
+
+
+
+
-
+
-
-
-
+
DependencyService.Get().OpenUrl(url),
- (d, obj) => synchronizationContext.Post(d, obj),
+ model.PostAction,
model.SmartDevice,
this)
{
@@ -129,7 +126,7 @@ namespace TINK.View.BikesAtStation
BindingContext = m_oViewModel;
BikesAtStationListView.ItemsSource = m_oViewModel;
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
isInitializationStarted = false;
}
diff --git a/TINK/TINK/View/FindBike/FindBikePage.xaml b/TINK/TINK/View/FindBike/FindBikePage.xaml
index 3d89cb5..4c53d91 100644
--- a/TINK/TINK/View/FindBike/FindBikePage.xaml
+++ b/TINK/TINK/View/FindBike/FindBikePage.xaml
@@ -5,7 +5,8 @@
x:Class="TINK.View.FindBike.FindBikePage"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:local_bike="clr-namespace:TINK.View.Bike"
- xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View">
+ xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
+ BackgroundColor="#f6f6f6">
@@ -23,19 +24,28 @@
-
+
-
+
-
+
+
+
+
-
+
+
@@ -43,35 +53,51 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
synchronizationContext.Post(d, obj),
+ model.PostAction,
model.SmartDevice,
this,
(url) => DependencyService.Get().OpenUrl(url))
@@ -79,7 +76,7 @@ namespace TINK.View.FindBike
BindingContext = m_oViewModel;
FindBikeListView.ItemsSource = m_oViewModel;
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
}
///
diff --git a/TINK/TINK/View/Map/MapPage.xaml b/TINK/TINK/View/Map/MapPage.xaml
index f26bde6..e3dd21f 100644
--- a/TINK/TINK/View/Map/MapPage.xaml
+++ b/TINK/TINK/View/Map/MapPage.xaml
@@ -19,14 +19,22 @@
-
+
+
+
+
+
+
-
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
-
-
-
-
+
-
-
-
+
+
+
-
-
+
+
+
+
+
-
+ Grid.Row="0"/>
diff --git a/TINK/TINK/View/MyBikes/MyBikesPage.xaml b/TINK/TINK/View/MyBikes/MyBikesPage.xaml
index fca6bb6..032f457 100644
--- a/TINK/TINK/View/MyBikes/MyBikesPage.xaml
+++ b/TINK/TINK/View/MyBikes/MyBikesPage.xaml
@@ -6,6 +6,7 @@
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
xmlns:local_bike="clr-namespace:TINK.View.Bike"
+ BackgroundColor="#f6f6f6"
Shell.FlyoutBehavior="{Binding FlyoutBehavior}">
@@ -26,45 +27,66 @@
-
+
+
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
+
synchronizationContext.Post(d, obj),
+ model.PostAction,
model.SmartDevice,
this,
(url) => DependencyService.Get().OpenUrl(url))
@@ -91,7 +88,7 @@ namespace TINK.View.MyBikes
BindingContext = m_oViewModel;
MyBikesListView.ItemsSource = m_oViewModel;
- await m_oViewModel.OnAppearing();
+ await m_oViewModel.OnAppearingOrRefresh();
isInitializationStarted = false;
}
@@ -183,4 +180,4 @@ namespace TINK.View.MyBikes
public async Task DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync(new FeedbackPopup(battery, co2Saving));
#endif
}
-}
\ No newline at end of file
+}
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/BluetoothLock/BikeInfoMutable.cs b/TINKLib/Model/Bikes/BikeInfoNS/BluetoothLock/BikeInfoMutable.cs
index 82a66f7..7ad5979 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/BluetoothLock/BikeInfoMutable.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/BluetoothLock/BikeInfoMutable.cs
@@ -35,7 +35,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
public new string ToString()
{
- return $"Id={Id}{(TypeOfBike != null ? $";type={TypeOfBike}" : "")};state={State}";
+ return $"Id={Id}{(TypeOfBike != null ? $";type={TypeOfBike}" : "")};state={State.ToString()}";
}
}
}
diff --git a/TINKLib/Model/Bikes/BikeInfoNS/RentalDescription.cs b/TINKLib/Model/Bikes/BikeInfoNS/RentalDescription.cs
index e39731b..610cb79 100644
--- a/TINKLib/Model/Bikes/BikeInfoNS/RentalDescription.cs
+++ b/TINKLib/Model/Bikes/BikeInfoNS/RentalDescription.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace TINK.Model.Bikes.BikeInfoNS
{
@@ -24,9 +24,19 @@ namespace TINK.Model.Bikes.BikeInfoNS
public string Value { get; set; } = string.Empty;
}
+ ///
+ /// Info element of general purpose (AGB, tracking info, ...)
+ ///
public class InfoElement
{
+ ///
+ /// Key which identyfies the value (required for special processing)
+ ///
public string Key { get; set; }
+
+ ///
+ /// Text to be displayed to user.
+ ///
public string Value { get; set; }
}
diff --git a/TINKLib/Model/Connector/Command/CommandLoggedIn.cs b/TINKLib/Model/Connector/Command/CommandLoggedIn.cs
index 1a13eca..dc99305 100644
--- a/TINKLib/Model/Connector/Command/CommandLoggedIn.cs
+++ b/TINKLib/Model/Connector/Command/CommandLoggedIn.cs
@@ -286,7 +286,7 @@ namespace TINK.Model.Connector
}
DoReturnResponse response
- = (await CopriServer.DoReturn(bike.Id, location, smartDevice, bike.OperatorUri)).GetIsReturnBikeResponseOk(bike.Id);
+ = (await CopriServer.DoReturn(bike.Id, location, bike.OperatorUri)).GetIsReturnBikeResponseOk(bike.Id);
bike.Load(Bikes.BikeInfoNS.BC.NotifyPropertyChangedLevel.None);
return response?.Create() ?? new BookingFinishedModel();
diff --git a/TINKLib/Model/Connector/Connector.cs b/TINKLib/Model/Connector/Connector.cs
index 560d222..e7c2f5c 100644
--- a/TINKLib/Model/Connector/Connector.cs
+++ b/TINKLib/Model/Connector/Connector.cs
@@ -1,4 +1,5 @@
-using System;
+using System;
+using TINK.Model.Device;
using TINK.Model.Services.CopriApi;
using TINK.Repository;
@@ -9,12 +10,13 @@ namespace TINK.Model.Connector
///
public class Connector : IConnector
{
- /// Constructs a copri connector object.
+ /// Constructs a copri connector object to connect to copri by https with cache fallback.
/// Uri to connect to.
/// Provides app related info (app name and version, merchantid) to pass to COPRI.
/// Two letter ISO language name.
/// Holds the session cookie.
/// Mail of user.
+ /// Holds info about smart device.
/// Timespan which holds value after which cache expires.
/// Is null in production and migh be a mock in testing context.
public Connector(
@@ -23,25 +25,28 @@ namespace TINK.Model.Connector
string uiIsoLangugageName,
string sessionCookie,
string mail,
+ ISmartDevice smartDevice = null,
TimeSpan? expiresAfter = null,
ICachedCopriServer server = null)
{
- Command = GetCommand(
+ Command = CreateCommand(
server ?? new CopriProviderHttps(
activeUri,
appContextInfo.MerchantId,
appContextInfo,
uiIsoLangugageName,
+ smartDevice,
sessionCookie),
sessionCookie,
mail);
- Query = GetQuery(
+ Query = CreateQuery(
server ?? new CopriProviderHttps(
activeUri,
appContextInfo.MerchantId,
appContextInfo,
uiIsoLangugageName,
+ smartDevice,
sessionCookie,
expiresAfter),
sessionCookie,
@@ -57,13 +62,13 @@ namespace TINK.Model.Connector
/// True if connector has access to copri server, false if cached values are used.
public bool IsConnected => Command.IsConnected;
- /// Gets a command object to perform copri commands.
- public static ICommand GetCommand(ICopriServerBase copri, string sessioncookie, string mail) => string.IsNullOrEmpty(sessioncookie)
+ /// Creates a command object to perform copri commands.
+ public static ICommand CreateCommand(ICopriServerBase copri, string sessioncookie, string mail) => string.IsNullOrEmpty(sessioncookie)
? new Command(copri)
: new CommandLoggedIn(copri, sessioncookie, mail, () => DateTime.Now) as ICommand;
- /// Gets a command object to perform copri queries.
- private static IQuery GetQuery(ICachedCopriServer copri, string sessioncookie, string mail) => string.IsNullOrEmpty(sessioncookie)
+ /// Creates a command object to perform copri queries.
+ private static IQuery CreateQuery(ICachedCopriServer copri, string sessioncookie, string mail) => string.IsNullOrEmpty(sessioncookie)
? new CachedQuery(copri) as IQuery
: new CachedQueryLoggedIn(copri, sessioncookie, mail, () => DateTime.Now);
}
diff --git a/TINKLib/Model/Connector/ConnectorCache.cs b/TINKLib/Model/Connector/ConnectorCache.cs
index 7ecf525..174883d 100644
--- a/TINKLib/Model/Connector/ConnectorCache.cs
+++ b/TINKLib/Model/Connector/ConnectorCache.cs
@@ -1,4 +1,5 @@
-using System;
+using System;
+using TINK.Model.Device;
using TINK.Model.Services.CopriApi;
using TINK.Repository;
@@ -9,26 +10,28 @@ namespace TINK.Model.Connector
///
public class ConnectorCache : IConnector
{
- /// Constructs a copri connector object.
+ /// Constructs a copri connector object to connect to cache.
+ /// Used for offline szenario to ensure responsiveness of app by preventing hopeless tries to communicate with COPRI.
/// Two letter ISO language name.
/// Holds the session cookie.
/// Mail of user.
+ /// Holds info about smart device.
/// Is null in production and migh be a mock in testing context.
public ConnectorCache(
AppContextInfo appContextInfo,
string uiIsoLangugageName,
string sessionCookie,
string mail,
+ ISmartDevice smartDevice = null,
ICopriServer server = null)
{
-
- Command = Connector.GetCommand(
- server ?? new CopriProviderMonkeyStore(appContextInfo.MerchantId, uiIsoLangugageName, sessionCookie),
+ Command = Connector.CreateCommand(
+ server ?? new CopriProviderMonkeyStore(appContextInfo.MerchantId, uiIsoLangugageName, sessionCookie, smartDevice),
sessionCookie,
mail);
Query = GetQuery(
- server ?? new CopriProviderMonkeyStore(appContextInfo.MerchantId, uiIsoLangugageName, sessionCookie),
+ server ?? new CopriProviderMonkeyStore(appContextInfo.MerchantId, uiIsoLangugageName, sessionCookie, smartDevice),
sessionCookie,
mail);
}
diff --git a/TINKLib/Model/Connector/ConnectorFactory.cs b/TINKLib/Model/Connector/ConnectorFactory.cs
index a010e98..2f8f89b 100644
--- a/TINKLib/Model/Connector/ConnectorFactory.cs
+++ b/TINKLib/Model/Connector/ConnectorFactory.cs
@@ -1,4 +1,5 @@
-using System;
+using System;
+using TINK.Model.Device;
using TINK.Repository;
namespace TINK.Model.Connector
@@ -8,10 +9,13 @@ namespace TINK.Model.Connector
///
/// Gets a connector object depending on whether beein onlin or offline.
///
- /// True if online, false if offline. If offline cache connector is returned.
+ ///
+ /// True if online, false if offline.
+ /// If offline cache connector is returned to avoid performance penalty which would happen when trying to communicate with backend in offline scenario.
+ ///
/// Provides app related info (app name and version, merchantid) to pass to COPRI.
/// Two letter ISO language name.
- ///
+ /// Holds info about smart device.
public static IConnector Create(
bool isConnected,
Uri activeUri,
@@ -19,11 +23,12 @@ namespace TINK.Model.Connector
string uiIsoLangugageName,
string sessionCookie,
string mail,
+ ISmartDevice smartDevice = null,
TimeSpan? expiresAfter = null)
{
return isConnected
- ? new Connector(activeUri, appContextInfo, uiIsoLangugageName, sessionCookie, mail, expiresAfter: expiresAfter) as IConnector
- : new ConnectorCache(appContextInfo, uiIsoLangugageName, sessionCookie, mail);
+ ? new Connector(activeUri, appContextInfo, uiIsoLangugageName, sessionCookie, mail, smartDevice, expiresAfter: expiresAfter) as IConnector
+ : new ConnectorCache(appContextInfo, uiIsoLangugageName, sessionCookie, mail, smartDevice);
}
}
}
diff --git a/TINKLib/Model/Settings/JsonSettingsDictionary.cs b/TINKLib/Model/Settings/JsonSettingsDictionary.cs
index 5c80b41..abdae4b 100644
--- a/TINKLib/Model/Settings/JsonSettingsDictionary.cs
+++ b/TINKLib/Model/Settings/JsonSettingsDictionary.cs
@@ -118,12 +118,12 @@ namespace TINK.Model.Settings
}
/// Sets the uri of the active copri host.
/// Dictionary holding parameters from JSON.
- public static Dictionary SetCopriHostUri(this IDictionary p_oTargetDictionary, string p_strNextActiveUriText)
+ public static Dictionary SetCopriHostUri(this IDictionary targetDictionary, string p_strNextActiveUriText)
{
- if (p_oTargetDictionary == null)
+ if (targetDictionary == null)
throw new Exception("Writing copri host uri to dictionary failed. Dictionary must not be null.");
- return p_oTargetDictionary.Union(new Dictionary
+ return targetDictionary.Union(new Dictionary
{
{ typeof(CopriServerUriList).ToString(), JsonConvert.SerializeObject(p_strNextActiveUriText) },
}).ToDictionary(key => key.Key, value => value.Value);
@@ -196,15 +196,17 @@ namespace TINK.Model.Settings
/// Sets whether polling is on or off and the periode if polling is on.
/// Dictionary to write entries to.
- public static Dictionary SetPollingParameters(this IDictionary p_oTargetDictionary, PollingParameters p_oPollingParameter)
+ public static Dictionary SetPollingParameters(
+ this IDictionary targetDictionary,
+ PollingParameters pollingParameter)
{
- if (p_oTargetDictionary == null)
+ if (targetDictionary == null)
throw new Exception("Writing polling parameters to dictionary failed. Dictionary must not be null.");
- return p_oTargetDictionary.Union(new Dictionary
+ return targetDictionary.Union(new Dictionary
{
- { $"{typeof(PollingParameters).Name}_{typeof(TimeSpan).Name}", JsonConvert.SerializeObject(p_oPollingParameter.Periode) },
- { $"{typeof(PollingParameters).Name}_{typeof(bool).Name}", JsonConvert.SerializeObject(p_oPollingParameter.IsActivated) },
+ { $"{typeof(PollingParameters).Name}_{typeof(TimeSpan).Name}", JsonConvert.SerializeObject(pollingParameter.Periode) },
+ { $"{typeof(PollingParameters).Name}_{typeof(bool).Name}", JsonConvert.SerializeObject(pollingParameter.IsActivated) },
}).ToDictionary(key => key.Key, value => value.Value);
}
@@ -242,24 +244,24 @@ namespace TINK.Model.Settings
/// Dictionary of settings.
public static Dictionary Deserialize(string settingsDirectory)
{
- var l_oFileName = $"{settingsDirectory}{System.IO.Path.DirectorySeparatorChar}{SETTINGSFILETITLE}";
+ var fileName = $"{settingsDirectory}{System.IO.Path.DirectorySeparatorChar}{SETTINGSFILETITLE}";
- if (!System.IO.File.Exists(l_oFileName))
+ if (!System.IO.File.Exists(fileName))
{
// File is empty. Nothing to read.
return new Dictionary(); ;
}
- var l_oJSONFile = System.IO.File.ReadAllText(l_oFileName);
+ var jsonFile = System.IO.File.ReadAllText(fileName);
- if (string.IsNullOrEmpty(l_oJSONFile))
+ if (string.IsNullOrEmpty(jsonFile))
{
// File is empty. Nothing to read.
return new Dictionary();
}
// Load setting file.
- return JsonConvert.DeserializeObject>(l_oJSONFile);
+ return JsonConvert.DeserializeObject>(jsonFile);
}
/// Gets the logging level.
@@ -291,15 +293,15 @@ namespace TINK.Model.Settings
/// Sets the logging level.
/// Dictionary to get logging level from.
- public static Dictionary SetMinimumLoggingLevel(this IDictionary p_oTargetDictionary, LogEventLevel p_oLevel)
+ public static Dictionary SetMinimumLoggingLevel(this IDictionary targetDictionary, LogEventLevel level)
{
// Set logging level.
- if (p_oTargetDictionary == null)
+ if (targetDictionary == null)
throw new Exception("Writing logging level to dictionary failed. Dictionary must not be null.");
- return p_oTargetDictionary.Union(new Dictionary
+ return targetDictionary.Union(new Dictionary
{
- { MINLOGGINGLEVELKEY, JsonConvert.SerializeObject((int)p_oLevel) }
+ { MINLOGGINGLEVELKEY, JsonConvert.SerializeObject((int)level) }
}).ToDictionary(key => key.Key, value => value.Value);
}
@@ -321,15 +323,15 @@ namespace TINK.Model.Settings
/// Sets the version of app when whats new was shown.
/// Dictionary to get information from.
- public static Dictionary SetWhatsNew(this IDictionary p_oTargetDictionary, Version p_oAppVersion)
+ public static Dictionary SetWhatsNew(this IDictionary targetDictionary, Version appVersion)
{
// Set logging level.
- if (p_oTargetDictionary == null)
+ if (targetDictionary == null)
throw new Exception("Writing WhatsNew info failed. Dictionary must not be null.");
- return p_oTargetDictionary.Union(new Dictionary
+ return targetDictionary.Union(new Dictionary
{
- { SHOWWHATSNEWKEY, JsonConvert.SerializeObject(p_oAppVersion, new VersionConverter()) }
+ { SHOWWHATSNEWKEY, JsonConvert.SerializeObject(appVersion, new VersionConverter()) }
}).ToDictionary(key => key.Key, value => value.Value);
}
@@ -350,12 +352,12 @@ namespace TINK.Model.Settings
/// Sets the the expiration time.
/// Dictionary to write information to.
- public static Dictionary SetExpiresAfter(this IDictionary p_oTargetDictionary, TimeSpan expiresAfter)
+ public static Dictionary SetExpiresAfter(this IDictionary targetDictionary, TimeSpan expiresAfter)
{
- if (p_oTargetDictionary == null)
+ if (targetDictionary == null)
throw new Exception("Writing ExpiresAfter info failed. Dictionary must not be null.");
- return p_oTargetDictionary.Union(new Dictionary
+ return targetDictionary.Union(new Dictionary
{
{ EXPIRESAFTER, JsonConvert.SerializeObject(expiresAfter, new JavaScriptDateTimeConverter()) }
}).ToDictionary(key => key.Key, value => value.Value);
@@ -497,16 +499,16 @@ namespace TINK.Model.Settings
public static IDictionary SetGroupFilterMapPage(
this IDictionary settings,
- IDictionary p_oFilterCollection)
+ IDictionary filterCollection)
{
if (settings == null
- || p_oFilterCollection == null
- || p_oFilterCollection.Count < 1)
+ || filterCollection == null
+ || filterCollection.Count < 1)
{
return settings;
}
- settings["FilterCollection_MapPageFilter"] = JsonConvert.SerializeObject(p_oFilterCollection);
+ settings["FilterCollection_MapPageFilter"] = JsonConvert.SerializeObject(filterCollection);
return settings;
}
@@ -541,16 +543,16 @@ namespace TINK.Model.Settings
public static IDictionary SetGroupFilterSettings(
this IDictionary settings,
- IDictionary p_oFilterCollection)
+ IDictionary filterCollection)
{
if (settings == null
- || p_oFilterCollection == null
- || p_oFilterCollection.Count < 1)
+ || filterCollection == null
+ || filterCollection.Count < 1)
{
return settings;
}
- settings["FilterCollection"] = JsonConvert.SerializeObject(p_oFilterCollection);
+ settings["FilterCollection"] = JsonConvert.SerializeObject(filterCollection);
return settings;
}
diff --git a/TINKLib/Model/Settings/PollingParameters.cs b/TINKLib/Model/Settings/PollingParameters.cs
index 076387a..9c8b0d0 100644
--- a/TINKLib/Model/Settings/PollingParameters.cs
+++ b/TINKLib/Model/Settings/PollingParameters.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace TINK.Settings
{
@@ -7,7 +7,7 @@ namespace TINK.Settings
{
/// Holds default polling parameters.
public static PollingParameters Default { get; } = new PollingParameters(
- new TimeSpan(0, 0, 0, 10 /*secs*/, 0),// Default polling interval.
+ new TimeSpan(0, 0, 0, 60 /*secs*/, 0), // Default polling interval. Was 10 secs up to 3.0.357.
true);
/// Holds polling parameters which represent polling off (empty polling object).
@@ -16,12 +16,12 @@ namespace TINK.Settings
false);
/// Constructs a polling parameter object.
- /// Polling periode.
- /// True if polling is activated.
- public PollingParameters(TimeSpan p_oPeriode, bool p_bIsActivated)
+ /// Polling periode.
+ /// True if polling is activated.
+ public PollingParameters(TimeSpan periode, bool activated)
{
- Periode = p_oPeriode; // Can not be null because is a struct.
- IsActivated = p_bIsActivated;
+ Periode = periode; // Can not be null because is a struct.
+ IsActivated = activated;
}
/// Holds the polling periode.
diff --git a/TINKLib/Model/TinkApp.cs b/TINKLib/Model/TinkApp.cs
index 96a3231..8a07e71 100644
--- a/TINKLib/Model/TinkApp.cs
+++ b/TINKLib/Model/TinkApp.cs
@@ -193,10 +193,13 @@ namespace TINK.Model
?? ((d, obj) => d(obj));
ConnectorFactory = connectorFactory
- ?? throw new ArgumentException("Can not instantiate TinkApp- object. No connector factory object available.");
+ ?? throw new ArgumentException($"Can not instantiate {nameof(TinkApp)}- object. No connector factory object available.");
MerchantId = merchantId
- ?? throw new ArgumentException($"Can not instantiate {nameof(TinkApp)}. No merchant id available.");
+ ?? throw new ArgumentException($"Can not instantiate {nameof(TinkApp)}- object. No merchant id available.");
+
+ if (settings == null)
+ throw new ArgumentException($"Can not instantiate {nameof(TinkApp)}- object. Settings must not be null.");
Cipher = cipher ?? new Cipher();
@@ -296,8 +299,12 @@ namespace TINK.Model
NextActiveUri = Uris.ActiveUri;
- Polling = settings.PollingParameters ??
- throw new ArgumentException("Can not instantiate TinkApp- object. Polling parameters must never be null.");
+ if (settings.PollingParameters == null)
+ throw new ArgumentException($"Can not instantiate {nameof(TinkApp)}- object. Polling parameters must never be null.");
+
+ Polling = (lastVersion != null && lastVersion < new Version(3, 0, 358))
+ ? PollingParameters.Default // Default polling periode was 10s up to 3.0.357. Is 60s for later versions.
+ : settings.PollingParameters;
AppVersion = currentVersion ?? new Version(3, 0, 122);
diff --git a/TINKLib/Model/WhatsNew.cs b/TINKLib/Model/WhatsNew.cs
index 2b60610..6d78434 100644
--- a/TINKLib/Model/WhatsNew.cs
+++ b/TINKLib/Model/WhatsNew.cs
@@ -673,8 +673,8 @@ namespace TINK.Model
AppResources.ChangeLog3_0_231
},
{
- new Version(3, 0, 357),
- AppResources.ChangeLog_3_0_357_MK_SB,
+ new Version(3, 0, 360),
+ AppResources.ChangeLog_3_0_358_MK_SB,
new List { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
};
diff --git a/TINKLib/MultilingualResources/AppResources.Designer.cs b/TINKLib/MultilingualResources/AppResources.Designer.cs
index 278c86b..d9d3c08 100644
--- a/TINKLib/MultilingualResources/AppResources.Designer.cs
+++ b/TINKLib/MultilingualResources/AppResources.Designer.cs
@@ -748,11 +748,12 @@ namespace TINK.MultilingualResources {
}
///
- /// Looks up a localized string similar to You can only start or end a rent with network reception. Turn on mobile data or wifi and drag the page downward with the finger to refresh the page..
+ /// Looks up a localized string similar to New functions:<ul><li>If your device is not connected to the Internet, this is now displayed at the top.</li><li>You can now update your bike view by dragging from top to bottom. Especially useful after you reconnect to the Internet.</li></ul>
+ ///<br/>In addition:<ul><li>Software packages were updated.</li><li>Minor bug fixes.</li></ul>.
///
- public static string ChangeLog_3_0_357_MK_SB {
+ public static string ChangeLog_3_0_358_MK_SB {
get {
- return ResourceManager.GetString("ChangeLog_3_0_357_MK_SB", resourceCulture);
+ return ResourceManager.GetString("ChangeLog_3_0_358_MK_SB", resourceCulture);
}
}
@@ -1592,20 +1593,24 @@ namespace TINK.MultilingualResources {
}
///
- /// Looks up a localized string similar to Lock is blocked. Please ensure that no obstacle prevents lock from opening and try again..
+ /// Looks up a localized string similar to Ensure that no obstacle prevents lock from opening and try again..
///
- public static string ErrorOpenLockBoldBlockedMessage {
+ public static string ErrorOpenLockBoldIsBlockedMessage {
get {
- return ResourceManager.GetString("ErrorOpenLockBoldBlockedMessage", resourceCulture);
+ return ResourceManager.GetString("ErrorOpenLockBoldIsBlockedMessage", resourceCulture);
}
}
///
- /// Looks up a localized string similar to Lock was blocked and might still be. Please ensure that no obstacle prevents lock from opening and try again..
+ /// Looks up a localized string similar to The lock could not be opened correctly. Please try again.
+ ///
+ ///Attention! Your rental has already started.
+ ///
+ ///If the lock still won't open, make sure the lock is closed and return the bike. Please report it to the support!.
///
- public static string ErrorOpenLockBoldWasBlockedMessage {
+ public static string ErrorOpenLockBoldStatusIsUnknownMessage {
get {
- return ResourceManager.GetString("ErrorOpenLockBoldWasBlockedMessage", resourceCulture);
+ return ResourceManager.GetString("ErrorOpenLockBoldStatusIsUnknownMessage", resourceCulture);
}
}
@@ -1630,9 +1635,9 @@ namespace TINK.MultilingualResources {
///
/// Looks up a localized string similar to Lock can not be opened!.
///
- public static string ErrorOpenLockStillOpenTitle {
+ public static string ErrorOpenLockStillClosedTitle {
get {
- return ResourceManager.GetString("ErrorOpenLockStillOpenTitle", resourceCulture);
+ return ResourceManager.GetString("ErrorOpenLockStillClosedTitle", resourceCulture);
}
}
@@ -1958,7 +1963,7 @@ namespace TINK.MultilingualResources {
}
///
- /// Looks up a localized string similar to No network, data is outdated..
+ /// Looks up a localized string similar to Pull to refresh..
///
public static string MarkingDataIsFromCache {
get {
@@ -2192,6 +2197,15 @@ namespace TINK.MultilingualResources {
}
}
+ ///
+ /// Looks up a localized string similar to Oops, there is no internet connection..
+ ///
+ public static string MarkingNoNetworkConnection {
+ get {
+ return ResourceManager.GetString("MarkingNoNetworkConnection", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Bike is ok.
///
diff --git a/TINKLib/MultilingualResources/AppResources.de.resx b/TINKLib/MultilingualResources/AppResources.de.resx
index d5518c5..5ddfed1 100644
--- a/TINKLib/MultilingualResources/AppResources.de.resx
+++ b/TINKLib/MultilingualResources/AppResources.de.resx
@@ -572,17 +572,8 @@ Fehlerhandling verbessert.
Veraltetes Objekt durch aktuelles ersetzt.
-
- Schloss ist blockiert. Bitte Ursache von Blockierung beheben und Vorgang wiederholen.
-
-
- Schloss war oder ist blockiert. Bitte Ursache von Blockierung beheben und Vorgang wiederholen.
-
- Fehler beim Schlossöffnen!
-
-
- Schloss kann nicht geöffnet werden!
+ Fehler beim Schloss Öffnen!
Anzeige von Stationsnamen statt Nummern.
@@ -1115,7 +1106,7 @@ Probieren Sie es aus!
Bluetooth-Kommunikation verbessert.
- Kein Netz, Daten sind veraltet.
+ Zum Aktualisieren ziehen.
Momentan sind keine Fahrräder an dieser Station verfügbar.
@@ -1126,10 +1117,27 @@ Probieren Sie es aus!
Information
-
- Sie können eine Miete nur bei Netzempfang beginnen oder beenden. Schalten Sie mobile Daten oder WLAN ein und ziehen Sie die Seite mit dem Finger nach unten, um Ihre Ansicht zu aktualisieren.
-
Kleine Verbesserungen.
+
+ Das Schloss konnte nicht korrekt geöffnet werden. Bitte versuchen Sie es erneut.
+
+Achtung! Ihre Miete hat bereits begonnen.
+
+Wenn sich das Schloss weiterhin nicht öffnen lässt, vergewissern Sie sich, dass das Schloss geschlossen ist und geben Sie das Rad zurück. Bitte melden Sie es dem Support!
+
+
+ Schloss kann nicht geöffnet werden!
+
+
+ Stellen Sie sicher, dass kein Hindernis das Öffnen des Schlosses verhindert und versuchen Sie es erneut.
+
+
+ Ups, es ist keine Internetverbindung vorhanden.
+
+
+ Neue Funktionen:<ul><li>Wenn Ihr Gerät nicht mit dem Internet verbunden ist, wird dies nun oben angezeigt.</li><li>Sie können jetzt Ihre Fahrradansicht aktualisieren, indem Sie von oben nach unten ziehen. Das ist besonders nützlich, wenn Sie sich wieder mit dem Internet verbunden haben.</li></ul>
+<br/>Außerdem:<ul><li>Software Pakete wurde aktualisiert.</li><li>Kleinere Fehlerbehebungen.</li></ul>
+
\ No newline at end of file
diff --git a/TINKLib/MultilingualResources/AppResources.resx b/TINKLib/MultilingualResources/AppResources.resx
index 67f0092..87254f0 100644
--- a/TINKLib/MultilingualResources/AppResources.resx
+++ b/TINKLib/MultilingualResources/AppResources.resx
@@ -677,13 +677,17 @@ Error handling improved.
Obsolete object replaced with up-to-date one.
-
- Lock is blocked. Please ensure that no obstacle prevents lock from opening and try again.
+
+ Ensure that no obstacle prevents lock from opening and try again.
-
- Lock was blocked and might still be. Please ensure that no obstacle prevents lock from opening and try again.
+
+ The lock could not be opened correctly. Please try again.
+
+Attention! Your rental has already started.
+
+If the lock still won't open, make sure the lock is closed and return the bike. Please report it to the support!
-
+
Lock can not be opened!
@@ -1205,7 +1209,7 @@ Try it out!
Bluetooth communication improved.
- No network, data is outdated.
+ Pull to refresh.
There are currently no bicycles available at this station.
@@ -1216,10 +1220,14 @@ Try it out!
Information
-
- You can only start or end a rent with network reception. Turn on mobile data or wifi and drag the page downward with the finger to refresh the page.
+
+ New functions:<ul><li>If your device is not connected to the Internet, this is now displayed at the top.</li><li>You can now update your bike view by dragging from top to bottom. Especially useful after you reconnect to the Internet.</li></ul>
+<br/>In addition:<ul><li>Software packages were updated.</li><li>Minor bug fixes.</li></ul>
Minor improvements.
+
+ Oops, there is no internet connection.
+
\ No newline at end of file
diff --git a/TINKLib/MultilingualResources/TINKLib.de.xlf b/TINKLib/MultilingualResources/TINKLib.de.xlf
index bc361da..4d92614 100644
--- a/TINKLib/MultilingualResources/TINKLib.de.xlf
+++ b/TINKLib/MultilingualResources/TINKLib.de.xlf
@@ -765,21 +765,9 @@ Fehlerhandling verbessert.
Veraltetes Objekt durch aktuelles ersetzt.
-
-
- Schloss ist blockiert. Bitte Ursache von Blockierung beheben und Vorgang wiederholen.
-
-
-
- Schloss war oder ist blockiert. Bitte Ursache von Blockierung beheben und Vorgang wiederholen.
-
- Fehler beim Schlossöffnen!
-
-
-
- Schloss kann nicht geöffnet werden!
+ Fehler beim Schloss Öffnen!
-
- Kein Netz, Daten sind veraltet.
+
+ Zum Aktualisieren ziehen.
@@ -1540,14 +1528,40 @@ Probieren Sie es aus!
Information
-
-
- Sie können eine Miete nur bei Netzempfang beginnen oder beenden. Schalten Sie mobile Daten oder WLAN ein und ziehen Sie die Seite mit dem Finger nach unten, um Ihre Ansicht zu aktualisieren.
-
Kleine Verbesserungen.
+
+
+ Das Schloss konnte nicht korrekt geöffnet werden. Bitte versuchen Sie es erneut.
+
+Achtung! Ihre Miete hat bereits begonnen.
+
+Wenn sich das Schloss weiterhin nicht öffnen lässt, vergewissern Sie sich, dass das Schloss geschlossen ist und geben Sie das Rad zurück. Bitte melden Sie es dem Support!
+
+
+
+ Schloss kann nicht geöffnet werden!
+
+
+
+ Stellen Sie sicher, dass kein Hindernis das Öffnen des Schlosses verhindert und versuchen Sie es erneut.
+
+
+
+ Ups, es ist keine Internetverbindung vorhanden.
+
+
+
+ Neue Funktionen:<ul><li>Wenn Ihr Gerät nicht mit dem Internet verbunden ist, wird dies nun oben angezeigt.</li><li>Sie können jetzt Ihre Fahrradansicht aktualisieren, indem Sie von oben nach unten ziehen. Das ist besonders nützlich, wenn Sie sich wieder mit dem Internet verbunden haben.</li></ul>
+<br/>Außerdem:<ul><li>Software Pakete wurde aktualisiert.</li><li>Kleinere Fehlerbehebungen.</li></ul>
+