Version 3.0.352

This commit is contained in:
Anja 2022-11-25 09:55:23 +01:00
parent 40b96f0350
commit 5ea2e3b0ca
48 changed files with 601 additions and 255 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 150 B

View file

@ -240,6 +240,10 @@
<EmbeddedResource Include="Resources\Font Awesome 5 Free-Solid-900.otf" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\Location_Button.png">
<SubType>Designer</SubType>
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
</AndroidResource>
<AndroidResource Include="Resources\layout\Tabbar.axml" />
<AndroidResource Include="Resources\layout\Toolbar.axml" />
<AndroidResource Include="Resources\values\styles.xml">
@ -345,11 +349,6 @@
<ItemGroup>
<AndroidResource Include="Resources\drawable-xxxhdpi\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\Location_Button.png">
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
</AndroidResource>
</ItemGroup>
<Import Project="..\TINK\LastenradBayern.projitems" Label="Shared" Condition="Exists('..\TINK\LastenradBayern.projitems')" />
<Import Project="..\..\ShareeSharedGuiLib\ShareeSharedGuiLib.projitems" Label="Shared" />
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.LastenradBayern" android:versionName="3.0.350" android:versionCode="350">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.LastenradBayern" android:versionName="3.0.352" android:versionCode="352">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="31" />
<!-- Google Maps related permissions -->
<!-- Permission to receive remote notifications from Google Play Services -->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -55,8 +55,8 @@
<key>CFBundleDisplayName</key>
<string>LastenradBayern</string>
<key>CFBundleVersion</key>
<string>350</string>
<string>352</string>
<key>CFBundleShortVersionString</key>
<string>3.0.350</string>
<string>3.0.352</string>
</dict>
</plist>

View file

@ -328,7 +328,7 @@
<ImageAsset Include="Media.xcassets\Location_Button.imageset\Contents.json">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\Location_Button.imageset\Location_Button.svg">
<ImageAsset Include="Media.xcassets\Location_Button.imageset\Location_Button.pdf">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-40.png">

View file

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "Location_Button.svg",
"filename" : "Location_Button.pdf",
"idiom" : "universal"
},
{

View file

@ -0,0 +1,69 @@
%PDF-1.5
%µí®û
4 0 obj
<< /Length 5 0 R
/Filter /FlateDecode
>>
stream
xœmPËN1 ¼û+æ0‰“<E280B0>Í !q( ©‡–¿<>³qئ<C398><55>±Ç<C2B1>x8ý®¼š(ìôHF=БGŒûpë‡ý —v<¾ÉãNï'==kŽÃ+EÜã¿VìV âÙIÀg° 7'ªð‘/† …ó¦4ÐÕ  ÌM)T“<54>bÖjj´ýø3ý#vÓÃœö<C593>Ä)¥5Å-š2pàX¤¹ÊJj´%µXGºàÂ)så@½n¸It”®lÜVÖÕÑu„Ó¹rž·-y¹Á;ù <09>³dý=½ý’î‚íÄk\0ö?rG?nðxæ
endstream
endobj
5 0 obj
243
endobj
3 0 obj
<<
/ExtGState <<
/a0 << /CA 1 /ca 1 >>
>>
>>
endobj
2 0 obj
<< /Type /Page % 1
/Parent 1 0 R
/MediaBox [ 0 0 42.000168 42.000027 ]
/Contents 4 0 R
/Group <<
/Type /Group
/S /Transparency
/I true
/CS /DeviceRGB
>>
/Resources 3 0 R
>>
endobj
1 0 obj
<< /Type /Pages
/Kids [ 2 0 R ]
/Count 1
>>
endobj
6 0 obj
<< /Producer (cairo 1.17.4 (https://cairographics.org))
/Creator <FEFF0049006E006B0073006300610070006500200031002E0031002E00320020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029>
/CreationDate (D:20221124081702+01'00)
>>
endobj
7 0 obj
<< /Type /Catalog
/Pages 1 0 R
>>
endobj
xref
0 8
0000000000 65535 f
0000000659 00000 n
0000000429 00000 n
0000000357 00000 n
0000000015 00000 n
0000000335 00000 n
0000000724 00000 n
0000001007 00000 n
trailer
<< /Size 8
/Root 7 0 R
/Info 6 0 R
>>
startxref
1059
%%EOF

View file

@ -90,7 +90,7 @@
</Frame>
<!--Center to currentLocation Button-->
<ImageButton
<!--<ImageButton
Grid.Row="2"
Grid.ColumnSpan="3"
x:Name="CurrentLocation"
@ -98,14 +98,16 @@
Command="{Binding OnCurrentLocationButtonClicked}"
IsVisible="True"
BackgroundColor="Transparent"
BorderWidth="1"
BorderColor="LightGray"
VerticalOptions="End"
HorizontalOptions="End"
Margin="0,0,11,100"
HorizontalOptions="Center"
Margin="0,0,0,12"
Source="Location_Button.png"
WidthRequest="40"
HeightRequest="40"
CornerRadius="20">
</ImageButton>
</ImageButton>-->
<!--While process is running-->
<!--Spinner-->

View file

@ -240,6 +240,10 @@
<EmbeddedResource Include="Resources\Font Awesome 5 Free-Solid-900.otf" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\Location_Button.png">
<SubType>Designer</SubType>
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
</AndroidResource>
<AndroidResource Include="Resources\layout\Tabbar.axml" />
<AndroidResource Include="Resources\layout\Toolbar.axml" />
<AndroidResource Include="Resources\values\styles.xml">
@ -461,11 +465,6 @@
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
</AndroidResource>
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\Location_Button.png">
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
</AndroidResource>
</ItemGroup>
<Import Project="..\TINK\Meinkonrad.projitems" Label="Shared" Condition="Exists('..\TINK\Meinkonrad.projitems')" />
<Import Project="..\..\ShareeSharedGuiLib\ShareeSharedGuiLib.projitems" Label="Shared" />
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.Meinkonrad" android:versionName="3.0.350" android:versionCode="350">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.Meinkonrad" android:versionName="3.0.352" android:versionCode="352">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="31" />
<!-- Google Maps related permissions -->
<!-- Permission to receive remote notifications from Google Play Services -->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -55,8 +55,8 @@
<key>CFBundleDisplayName</key>
<string>Mein konrad</string>
<key>CFBundleVersion</key>
<string>350</string>
<string>352</string>
<key>CFBundleShortVersionString</key>
<string>3.0.350</string>
<string>3.0.352</string>
</dict>
</plist>

View file

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "Location_Button.svg",
"filename" : "Location_Button.pdf",
"idiom" : "universal"
},
{

View file

@ -0,0 +1,69 @@
%PDF-1.5
%µí®û
4 0 obj
<< /Length 5 0 R
/Filter /FlateDecode
>>
stream
xœmPËN1 ¼û+æ0‰“<E280B0>Í !q( ©‡–¿<>³qئ<C398><55>±Ç<C2B1>x8ý®¼š(ìôHF=БGŒûpë‡ý —v<¾ÉãNï'==kŽÃ+EÜã¿VìV âÙIÀg° 7'ªð‘/† …ó¦4ÐÕ  ÌM)T“<54>bÖjj´ýø3ý#vÓÃœö<C593>Ä)¥5Å-š2pàX¤¹ÊJj´%µXGºàÂ)så@½n¸It”®lÜVÖÕÑu„Ó¹rž·-y¹Á;ù <09>³dý=½ý’î‚íÄk\0ö?rG?nðxæ
endstream
endobj
5 0 obj
243
endobj
3 0 obj
<<
/ExtGState <<
/a0 << /CA 1 /ca 1 >>
>>
>>
endobj
2 0 obj
<< /Type /Page % 1
/Parent 1 0 R
/MediaBox [ 0 0 42.000168 42.000027 ]
/Contents 4 0 R
/Group <<
/Type /Group
/S /Transparency
/I true
/CS /DeviceRGB
>>
/Resources 3 0 R
>>
endobj
1 0 obj
<< /Type /Pages
/Kids [ 2 0 R ]
/Count 1
>>
endobj
6 0 obj
<< /Producer (cairo 1.17.4 (https://cairographics.org))
/Creator <FEFF0049006E006B0073006300610070006500200031002E0031002E00320020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029>
/CreationDate (D:20221124081702+01'00)
>>
endobj
7 0 obj
<< /Type /Catalog
/Pages 1 0 R
>>
endobj
xref
0 8
0000000000 65535 f
0000000659 00000 n
0000000429 00000 n
0000000357 00000 n
0000000015 00000 n
0000000335 00000 n
0000000724 00000 n
0000001007 00000 n
trailer
<< /Size 8
/Root 7 0 R
/Info 6 0 R
>>
startxref
1059
%%EOF

View file

@ -5,12 +5,11 @@
/Filter /FlateDecode
>>
stream
xœÕ<EFBFBD>A
1 E÷9Å¿€1iÆNçàbt).dÄÁÅèÂëjg@=<3D> ýä“ßGª¯™ºTÊ!˜iDw¥<77>¹6KÌþN­ü^h·‡°àHÖ /Ö[a)ó„£®(Þ„­õ#R\N©.ž0½ƒ<>·%3F'Ftá}Ñ&ÆùgÃ-ZòåÙbŠ¡ö¦ºˆ n=þï3'jé Õ[ƒ
xœÕOIÂ0 ¼ûóLœfi_€„Ä¡pDPEH=|—¤UáÈŠ3£Ob<4F>ÑZ‰6‰lL¬cƒÔÓ@‚±ö¬ÏÝ“,»è<C2BB>ª/•¶zît<Á°Á…v Ÿ¬Ü5B<Ljš½qè™XöækáÈ8Á±kìäf[Õ4»GVÜ©°ì.3 =ãô5J%uù”vûùí\…:ب Zñ¡Á£Ã?¯u¥Þ<Q`3
endstream
endobj
5 0 obj
165
171
endobj
3 0 obj
<<
@ -22,7 +21,7 @@ endobj
2 0 obj
<< /Type /Page % 1
/Parent 1 0 R
/MediaBox [ 0 0 41.223316 41.223316 ]
/MediaBox [ 0 0 17.007875 17.007879 ]
/Contents 4 0 R
/Group <<
/Type /Group
@ -42,7 +41,7 @@ endobj
6 0 obj
<< /Producer (cairo 1.17.4 (https://cairographics.org))
/Creator <FEFF0049006E006B0073006300610070006500200031002E0031002E00320020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029>
/CreationDate (D:20221116092441+01'00)
/CreationDate (D:20221118084115+01'00)
>>
endobj
7 0 obj
@ -53,18 +52,18 @@ endobj
xref
0 8
0000000000 65535 f
0000000581 00000 n
0000000351 00000 n
0000000279 00000 n
0000000587 00000 n
0000000357 00000 n
0000000285 00000 n
0000000015 00000 n
0000000257 00000 n
0000000646 00000 n
0000000929 00000 n
0000000263 00000 n
0000000652 00000 n
0000000935 00000 n
trailer
<< /Size 8
/Root 7 0 R
/Info 6 0 R
>>
startxref
981
987
%%EOF

View file

@ -327,7 +327,7 @@
<ImageAsset Include="Media.xcassets\Location_Button.imageset\Contents.json">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\Location_Button.imageset\Location_Button.svg">
<ImageAsset Include="Media.xcassets\Location_Button.imageset\Location_Button.pdf">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\swk_theme.imageset\swk_theme.pdf">

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?>
<xct:Popup xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
@ -40,12 +40,12 @@
<ScrollView>
<StackLayout>
<!-- Battery level -->
<sharedGui:BarLevelInputView
<sharedGui:BarLevelInputView
x:Name="BarLevelInputView"
HorizontalOptions="Center"/>
<!-- Checkbox Is Broken -->
<StackLayout Orientation="Horizontal">
<CheckBox x:Name="brockenCheckBox" IsChecked="True" HeightRequest="20"/>
<!-- Checkbox Is Broken -->
<StackLayout Orientation="Horizontal">
<CheckBox x:Name="brockenCheckBox" IsChecked="True" HeightRequest="20"/>
<Label
FontSize="Medium"
Text= "{x:Static resources:AppResources.MarkingReturnBikeBikeStateIsOK}"/>
@ -80,4 +80,4 @@
Text="OK"
Margin="0,0,0,3"/>
</StackLayout>
</xct:Popup>
</xct:Popup>

View file

@ -99,9 +99,11 @@
Command="{Binding OnCurrentLocationButtonClicked}"
IsVisible="True"
BackgroundColor="Transparent"
BorderWidth="1"
BorderColor="LightGray"
VerticalOptions="End"
HorizontalOptions="End"
Margin="0,0,11,100"
HorizontalOptions="Center"
Margin="0,0,0,12"
Source="Location_Button.png"
WidthRequest="40"
HeightRequest="40"

View file

@ -35,9 +35,11 @@
<!--Info text-->
<Label
Grid.Row="1"
TextType="Html"
Text="{Binding StatusInfoText}"
FontSize="Small"
HorizontalOptions="Center"
HorizontalTextAlignment="Center"
Padding="0,0,0,10"/>
</Grid>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.hauffware.sharee" android:versionName="3.0.350" android:versionCode="350">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.hauffware.sharee" android:versionName="3.0.352" android:versionCode="352">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="31" />
<!-- Google Maps related permissions -->
<!-- Permission to receive remote notifications from Google Play Services -->

View file

@ -23987,208 +23987,211 @@ namespace TINK.Droid
public const int ic_vol_unmute = 2131165504;
// aapt resource value: 0x7F070141
public const int material_cursor_drawable = 2131165505;
public const int Location_Button = 2131165505;
// aapt resource value: 0x7F070142
public const int material_ic_calendar_black_24dp = 2131165506;
public const int material_cursor_drawable = 2131165506;
// aapt resource value: 0x7F070143
public const int material_ic_clear_black_24dp = 2131165507;
public const int material_ic_calendar_black_24dp = 2131165507;
// aapt resource value: 0x7F070144
public const int material_ic_edit_black_24dp = 2131165508;
public const int material_ic_clear_black_24dp = 2131165508;
// aapt resource value: 0x7F070145
public const int material_ic_keyboard_arrow_left_black_24dp = 2131165509;
public const int material_ic_edit_black_24dp = 2131165509;
// aapt resource value: 0x7F070146
public const int material_ic_keyboard_arrow_next_black_24dp = 2131165510;
public const int material_ic_keyboard_arrow_left_black_24dp = 2131165510;
// aapt resource value: 0x7F070147
public const int material_ic_keyboard_arrow_previous_black_24dp = 2131165511;
public const int material_ic_keyboard_arrow_next_black_24dp = 2131165511;
// aapt resource value: 0x7F070148
public const int material_ic_keyboard_arrow_right_black_24dp = 2131165512;
public const int material_ic_keyboard_arrow_previous_black_24dp = 2131165512;
// aapt resource value: 0x7F070149
public const int material_ic_menu_arrow_down_black_24dp = 2131165513;
public const int material_ic_keyboard_arrow_right_black_24dp = 2131165513;
// aapt resource value: 0x7F07014A
public const int material_ic_menu_arrow_up_black_24dp = 2131165514;
public const int material_ic_menu_arrow_down_black_24dp = 2131165514;
// aapt resource value: 0x7F07014B
public const int mr_button_connected_dark = 2131165515;
public const int material_ic_menu_arrow_up_black_24dp = 2131165515;
// aapt resource value: 0x7F07014C
public const int mr_button_connected_light = 2131165516;
public const int mr_button_connected_dark = 2131165516;
// aapt resource value: 0x7F07014D
public const int mr_button_connecting_dark = 2131165517;
public const int mr_button_connected_light = 2131165517;
// aapt resource value: 0x7F07014E
public const int mr_button_connecting_light = 2131165518;
public const int mr_button_connecting_dark = 2131165518;
// aapt resource value: 0x7F07014F
public const int mr_button_dark = 2131165519;
public const int mr_button_connecting_light = 2131165519;
// aapt resource value: 0x7F070150
public const int mr_button_dark_static = 2131165520;
public const int mr_button_dark = 2131165520;
// aapt resource value: 0x7F070151
public const int mr_button_light = 2131165521;
public const int mr_button_dark_static = 2131165521;
// aapt resource value: 0x7F070152
public const int mr_button_light_static = 2131165522;
public const int mr_button_light = 2131165522;
// aapt resource value: 0x7F070153
public const int mr_cast_checkbox = 2131165523;
public const int mr_button_light_static = 2131165523;
// aapt resource value: 0x7F070154
public const int mr_cast_group_seekbar_track = 2131165524;
public const int mr_cast_checkbox = 2131165524;
// aapt resource value: 0x7F070155
public const int mr_cast_mute_button = 2131165525;
public const int mr_cast_group_seekbar_track = 2131165525;
// aapt resource value: 0x7F070156
public const int mr_cast_route_seekbar_track = 2131165526;
public const int mr_cast_mute_button = 2131165526;
// aapt resource value: 0x7F070157
public const int mr_cast_stop = 2131165527;
public const int mr_cast_route_seekbar_track = 2131165527;
// aapt resource value: 0x7F070158
public const int mr_cast_thumb = 2131165528;
public const int mr_cast_stop = 2131165528;
// aapt resource value: 0x7F070159
public const int mr_dialog_close_dark = 2131165529;
public const int mr_cast_thumb = 2131165529;
// aapt resource value: 0x7F07015A
public const int mr_dialog_close_light = 2131165530;
public const int mr_dialog_close_dark = 2131165530;
// aapt resource value: 0x7F07015B
public const int mr_dialog_material_background_dark = 2131165531;
public const int mr_dialog_close_light = 2131165531;
// aapt resource value: 0x7F07015C
public const int mr_dialog_material_background_light = 2131165532;
public const int mr_dialog_material_background_dark = 2131165532;
// aapt resource value: 0x7F07015D
public const int mr_group_collapse = 2131165533;
public const int mr_dialog_material_background_light = 2131165533;
// aapt resource value: 0x7F07015E
public const int mr_group_expand = 2131165534;
public const int mr_group_collapse = 2131165534;
// aapt resource value: 0x7F07015F
public const int mr_media_pause_dark = 2131165535;
public const int mr_group_expand = 2131165535;
// aapt resource value: 0x7F070160
public const int mr_media_pause_light = 2131165536;
public const int mr_media_pause_dark = 2131165536;
// aapt resource value: 0x7F070161
public const int mr_media_play_dark = 2131165537;
public const int mr_media_pause_light = 2131165537;
// aapt resource value: 0x7F070162
public const int mr_media_play_light = 2131165538;
public const int mr_media_play_dark = 2131165538;
// aapt resource value: 0x7F070163
public const int mr_media_stop_dark = 2131165539;
public const int mr_media_play_light = 2131165539;
// aapt resource value: 0x7F070164
public const int mr_media_stop_light = 2131165540;
public const int mr_media_stop_dark = 2131165540;
// aapt resource value: 0x7F070165
public const int mr_vol_type_audiotrack_dark = 2131165541;
public const int mr_media_stop_light = 2131165541;
// aapt resource value: 0x7F070166
public const int mr_vol_type_audiotrack_light = 2131165542;
public const int mr_vol_type_audiotrack_dark = 2131165542;
// aapt resource value: 0x7F070167
public const int mtrl_dialog_background = 2131165543;
public const int mr_vol_type_audiotrack_light = 2131165543;
// aapt resource value: 0x7F070168
public const int mtrl_dropdown_arrow = 2131165544;
public const int mtrl_dialog_background = 2131165544;
// aapt resource value: 0x7F070169
public const int mtrl_ic_arrow_drop_down = 2131165545;
public const int mtrl_dropdown_arrow = 2131165545;
// aapt resource value: 0x7F07016A
public const int mtrl_ic_arrow_drop_up = 2131165546;
public const int mtrl_ic_arrow_drop_down = 2131165546;
// aapt resource value: 0x7F07016B
public const int mtrl_ic_cancel = 2131165547;
public const int mtrl_ic_arrow_drop_up = 2131165547;
// aapt resource value: 0x7F07016C
public const int mtrl_ic_error = 2131165548;
public const int mtrl_ic_cancel = 2131165548;
// aapt resource value: 0x7F07016D
public const int mtrl_navigation_bar_item_background = 2131165549;
public const int mtrl_ic_error = 2131165549;
// aapt resource value: 0x7F07016E
public const int mtrl_popupmenu_background = 2131165550;
public const int mtrl_navigation_bar_item_background = 2131165550;
// aapt resource value: 0x7F07016F
public const int mtrl_popupmenu_background_dark = 2131165551;
public const int mtrl_popupmenu_background = 2131165551;
// aapt resource value: 0x7F070170
public const int mtrl_tabs_default_indicator = 2131165552;
public const int mtrl_popupmenu_background_dark = 2131165552;
// aapt resource value: 0x7F070171
public const int navigation_empty_icon = 2131165553;
public const int mtrl_tabs_default_indicator = 2131165553;
// aapt resource value: 0x7F070172
public const int notification_action_background = 2131165554;
public const int navigation_empty_icon = 2131165554;
// aapt resource value: 0x7F070173
public const int notification_bg = 2131165555;
public const int notification_action_background = 2131165555;
// aapt resource value: 0x7F070174
public const int notification_bg_low = 2131165556;
public const int notification_bg = 2131165556;
// aapt resource value: 0x7F070175
public const int notification_bg_low_normal = 2131165557;
public const int notification_bg_low = 2131165557;
// aapt resource value: 0x7F070176
public const int notification_bg_low_pressed = 2131165558;
public const int notification_bg_low_normal = 2131165558;
// aapt resource value: 0x7F070177
public const int notification_bg_normal = 2131165559;
public const int notification_bg_low_pressed = 2131165559;
// aapt resource value: 0x7F070178
public const int notification_bg_normal_pressed = 2131165560;
public const int notification_bg_normal = 2131165560;
// aapt resource value: 0x7F070179
public const int notification_icon_background = 2131165561;
public const int notification_bg_normal_pressed = 2131165561;
// aapt resource value: 0x7F07017A
public const int notification_template_icon_bg = 2131165562;
public const int notification_icon_background = 2131165562;
// aapt resource value: 0x7F07017B
public const int notification_template_icon_low_bg = 2131165563;
public const int notification_template_icon_bg = 2131165563;
// aapt resource value: 0x7F07017C
public const int notification_tile_bg = 2131165564;
public const int notification_template_icon_low_bg = 2131165564;
// aapt resource value: 0x7F07017D
public const int notify_panel_notification_icon_bg = 2131165565;
public const int notification_tile_bg = 2131165565;
// aapt resource value: 0x7F07017E
public const int preference_list_divider_material = 2131165566;
public const int notify_panel_notification_icon_bg = 2131165566;
// aapt resource value: 0x7F07017F
public const int sharee = 2131165567;
public const int preference_list_divider_material = 2131165567;
// aapt resource value: 0x7F070180
public const int sharee_no_background = 2131165568;
public const int sharee = 2131165568;
// aapt resource value: 0x7F070181
public const int test_custom_background = 2131165569;
public const int sharee_no_background = 2131165569;
// aapt resource value: 0x7F070182
public const int test_level_drawable = 2131165570;
public const int test_custom_background = 2131165570;
// aapt resource value: 0x7F070183
public const int tooltip_frame_dark = 2131165571;
public const int test_level_drawable = 2131165571;
// aapt resource value: 0x7F070184
public const int tooltip_frame_light = 2131165572;
public const int tooltip_frame_dark = 2131165572;
// aapt resource value: 0x7F070185
public const int tooltip_frame_light = 2131165573;
static Drawable()
{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -55,8 +55,8 @@
<key>CFBundleDisplayName</key>
<string>sharee.bike</string>
<key>CFBundleVersion</key>
<string>350</string>
<string>352</string>
<key>CFBundleShortVersionString</key>
<string>3.0.350</string>
<string>3.0.352</string>
</dict>
</plist>

View file

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "Location_Button.svg",
"filename" : "Location_Button.pdf",
"idiom" : "universal"
},
{

View file

@ -0,0 +1,69 @@
%PDF-1.5
%µí®û
4 0 obj
<< /Length 5 0 R
/Filter /FlateDecode
>>
stream
xœmPËN1 ¼û+æ0‰“<E280B0>Í !q( ©‡–¿<>³qئ<C398><55>±Ç<C2B1>x8ý®¼š(ìôHF=БGŒûpë‡ý —v<¾ÉãNï'==kŽÃ+EÜã¿VìV âÙIÀg° 7'ªð‘/† …ó¦4ÐÕ  ÌM)T“<54>bÖjj´ýø3ý#vÓÃœö<C593>Ä)¥5Å-š2pàX¤¹ÊJj´%µXGºàÂ)så@½n¸It”®lÜVÖÕÑu„Ó¹rž·-y¹Á;ù <09>³dý=½ý’î‚íÄk\0ö?rG?nðxæ
endstream
endobj
5 0 obj
243
endobj
3 0 obj
<<
/ExtGState <<
/a0 << /CA 1 /ca 1 >>
>>
>>
endobj
2 0 obj
<< /Type /Page % 1
/Parent 1 0 R
/MediaBox [ 0 0 42.000168 42.000027 ]
/Contents 4 0 R
/Group <<
/Type /Group
/S /Transparency
/I true
/CS /DeviceRGB
>>
/Resources 3 0 R
>>
endobj
1 0 obj
<< /Type /Pages
/Kids [ 2 0 R ]
/Count 1
>>
endobj
6 0 obj
<< /Producer (cairo 1.17.4 (https://cairographics.org))
/Creator <FEFF0049006E006B0073006300610070006500200031002E0031002E00320020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029>
/CreationDate (D:20221124081702+01'00)
>>
endobj
7 0 obj
<< /Type /Catalog
/Pages 1 0 R
>>
endobj
xref
0 8
0000000000 65535 f
0000000659 00000 n
0000000429 00000 n
0000000357 00000 n
0000000015 00000 n
0000000335 00000 n
0000000724 00000 n
0000001007 00000 n
trailer
<< /Size 8
/Root 7 0 R
/Info 6 0 R
>>
startxref
1059
%%EOF

View file

@ -5,12 +5,11 @@
/Filter /FlateDecode
>>
stream
xœÕ<EFBFBD>A
1 E÷9Å¿€1iÆNçàbt).dÄÁÅèÂëjg@=<3D> ýä“ßGª¯™ºTÊ!˜iDw¥<77>¹6KÌþN­ü^h·‡°àHÖ /Ö[a)ó„£®(Þ„­õ#R\N©.ž0½ƒ<>·%3F'Ftá}Ñ&ÆùgÃ-ZòåÙbŠ¡ö¦ºˆ n=þï3'jé Õ[ƒ
xœÕOIÂ0 ¼ûóLœfi_€„Ä¡pDPEH=|—¤UáÈŠ3£Ob<4F>ÑZ‰6‰lL¬cƒÔÓ@‚±ö¬ÏÝ“,»è<C2BB>ª/•¶zît<Á°Á…v Ÿ¬Ü5B<Ljš½qè™XöækáÈ8Á±kìäf[Õ4»GVÜ©°ì.3 =ãô5J%uù”vûùí\…:ب Zñ¡Á£Ã?¯u¥Þ<Q`3
endstream
endobj
5 0 obj
165
171
endobj
3 0 obj
<<
@ -22,7 +21,7 @@ endobj
2 0 obj
<< /Type /Page % 1
/Parent 1 0 R
/MediaBox [ 0 0 41.223316 41.223316 ]
/MediaBox [ 0 0 17.007875 17.007879 ]
/Contents 4 0 R
/Group <<
/Type /Group
@ -42,7 +41,7 @@ endobj
6 0 obj
<< /Producer (cairo 1.17.4 (https://cairographics.org))
/Creator <FEFF0049006E006B0073006300610070006500200031002E0031002E00320020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029>
/CreationDate (D:20221116092441+01'00)
/CreationDate (D:20221118084115+01'00)
>>
endobj
7 0 obj
@ -53,18 +52,18 @@ endobj
xref
0 8
0000000000 65535 f
0000000581 00000 n
0000000351 00000 n
0000000279 00000 n
0000000587 00000 n
0000000357 00000 n
0000000285 00000 n
0000000015 00000 n
0000000257 00000 n
0000000646 00000 n
0000000929 00000 n
0000000263 00000 n
0000000652 00000 n
0000000935 00000 n
trailer
<< /Size 8
/Root 7 0 R
/Info 6 0 R
>>
startxref
981
987
%%EOF

View file

@ -383,7 +383,7 @@
<ImageAsset Include="Media.xcassets\Location_Button.imageset\Contents.json">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\Location_Button.imageset\Location_Button.svg">
<ImageAsset Include="Media.xcassets\Location_Button.imageset\Location_Button.pdf">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\1024-1.png">

View file

@ -98,9 +98,11 @@
Command="{Binding OnCurrentLocationButtonClicked}"
IsVisible="True"
BackgroundColor="Transparent"
BorderWidth="1"
BorderColor="LightGray"
VerticalOptions="End"
HorizontalOptions="End"
Margin="0,0,11,100"
HorizontalOptions="Center"
Margin="0,0,0,12"
Source="Location_Button.png"
WidthRequest="40"
HeightRequest="40"

View file

@ -642,6 +642,16 @@ namespace TINK.Model
AppResources.ChangeLog_3_0_350_SB_MK,
new List<AppFlavor> { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 351),
AppResources.ChangeLog_MinorBugFixes,
new List<AppFlavor> { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
{
new Version(3, 0, 352),
AppResources.ChangeLog_MinorDesignImprovements,
new List<AppFlavor> { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
},
};
/// <summary> Manges the whats new information.</summary>

View file

@ -259,7 +259,7 @@ namespace TINK.MultilingualResources {
}
/// <summary>
/// Looks up a localized string similar to Closing lock....
/// Looks up a localized string similar to &lt;h4&gt;&lt;b&gt;Lock is closing.&lt;br/&gt;Please visually check if it is completely closed.&lt;/b&gt;&lt;/h4&gt;.
/// </summary>
public static string ActivityTextClosingLock {
get {
@ -484,7 +484,7 @@ namespace TINK.MultilingualResources {
}
/// <summary>
/// Looks up a localized string similar to Opening lock....
/// Looks up a localized string similar to &lt;h4&gt;&lt;b&gt;Lock is opening.&lt;br/&gt;Please wait until it is completely open.&lt;/b&gt;&lt;/h4&gt;.
/// </summary>
public static string ActivityTextOpeningLock {
get {

View file

@ -334,7 +334,7 @@ Freigabedialog öffen?</value>
<value>Einen Moment bitte...</value>
</data>
<data name="ActivityTextOpeningLock" xml:space="preserve">
<value>Öffne Schloss...</value>
<value>&lt;h4&gt;&lt;b&gt;Schloss öffnet.&lt;br/&gt;Bitte warten Sie, bis es komplett geöffnet ist.&lt;/b&gt;&lt;/h4&gt;</value>
</data>
<data name="ActivityTextStartingUpdater" xml:space="preserve">
<value>Starte Aktualisierung...</value>
@ -355,7 +355,7 @@ Freigabedialog öffen?</value>
<value>Kein Netz beim Aktualisieren des Schlossstatusses.</value>
</data>
<data name="ActivityTextClosingLock" xml:space="preserve">
<value>Schließe Schloss...</value>
<value>&lt;h4&gt;&lt;b&gt;Schloss schließt.&lt;br/&gt;Bitte überprüfen Sie visuell, ob es komplett geschlossen ist.&lt;/b&gt;&lt;/h4&gt;</value>
</data>
<data name="ChangeLog3_0_203" xml:space="preserve">
<value>Aktualisierrt auf aktuelle Schloss-Firmware.</value>

View file

@ -439,7 +439,7 @@ Open sharing dialog?</value>
<value>One moment please...</value>
</data>
<data name="ActivityTextOpeningLock" xml:space="preserve">
<value>Opening lock...</value>
<value>&lt;h4&gt;&lt;b&gt;Lock is opening.&lt;br/&gt;Please wait until it is completely open.&lt;/b&gt;&lt;/h4&gt;</value>
</data>
<data name="ActivityTextStartingUpdater" xml:space="preserve">
<value>Updating...</value>
@ -460,7 +460,7 @@ Open sharing dialog?</value>
<value>No web error on updating locking status.</value>
</data>
<data name="ActivityTextClosingLock" xml:space="preserve">
<value>Closing lock...</value>
<value>&lt;h4&gt;&lt;b&gt;Lock is closing.&lt;br/&gt;Please visually check if it is completely closed.&lt;/b&gt;&lt;/h4&gt;</value>
</data>
<data name="ChangeLog3_0_203" xml:space="preserve">
<value>Updated to latest lock firmware.</value>
@ -1188,4 +1188,4 @@ When logging in, you can now view the password you entered. &lt;br/&gt;
&lt;br/&gt;
Try it out!</value>
</data>
</root>
</root>

View file

@ -441,8 +441,8 @@ Freigabedialog öffen?</target>
<target state="translated">Einen Moment bitte...</target>
</trans-unit>
<trans-unit id="ActivityTextOpeningLock" translate="yes" xml:space="preserve">
<source>Opening lock...</source>
<target state="translated">Öffne Schloss...</target>
<source><bpt id="1">&lt;h4&gt;</bpt><bpt id="2">&lt;b&gt;</bpt>Lock is opening.&lt;br/&gt;Please wait until it is completely open.<ept id="2">&lt;/b&gt;</ept><ept id="1">&lt;/h4&gt;</ept></source>
<target state="translated"><bpt id="1">&lt;h4&gt;</bpt><bpt id="2">&lt;b&gt;</bpt>Schloss öffnet.&lt;br/&gt;Bitte warten Sie, bis es komplett geöffnet ist.<ept id="2">&lt;/b&gt;</ept><ept id="1">&lt;/h4&gt;</ept></target>
</trans-unit>
<trans-unit id="ActivityTextStartingUpdater" translate="yes" xml:space="preserve">
<source>Updating...</source>
@ -469,8 +469,8 @@ Freigabedialog öffen?</target>
<target state="translated">Kein Netz beim Aktualisieren des Schlossstatusses.</target>
</trans-unit>
<trans-unit id="ActivityTextClosingLock" translate="yes" xml:space="preserve">
<source>Closing lock...</source>
<target state="translated">Schließe Schloss...</target>
<source><bpt id="1">&lt;h4&gt;</bpt><bpt id="2">&lt;b&gt;</bpt>Lock is closing.&lt;br/&gt;Please visually check if it is completely closed.<ept id="2">&lt;/b&gt;</ept><ept id="1">&lt;/h4&gt;</ept></source>
<target state="translated"><bpt id="1">&lt;h4&gt;</bpt><bpt id="2">&lt;b&gt;</bpt>Schloss schließt.&lt;br/&gt;Bitte überprüfen Sie visuell, ob es komplett geschlossen ist.<ept id="2">&lt;/b&gt;</ept><ept id="1">&lt;/h4&gt;</ept></target>
</trans-unit>
<trans-unit id="ChangeLog3_0_203" translate="yes" xml:space="preserve">
<source>Updated to latest lock firmware.</source>

View file

@ -478,16 +478,16 @@ namespace TINK.ViewModel.Map
{
if (Pins.Count > 0 && Pins.Count != stations.Count)
{
// Either
// - user logged in/ logged out which might lead to more/ less stations beeing available
// - new stations were added/ existing ones remove
Pins.Clear();
// Either
// - user logged in/ logged out which might lead to more/ less stations beeing available
// - new stations were added/ existing ones remove
Pins.Clear();
}
// Check if there are alreay any pins to the map
// i.e detecte first call of member OnAppearing after construction
if (Pins.Count <= 0)
{
{
Log.ForContext<MapPageViewModel>().Debug($"{(ActiveFilterMap.GetGroup().Any() ? $"Active map filter is {string.Join(",", ActiveFilterMap.GetGroup())}." : "Map filter is off.")}");
// Map was not yet initialized.
@ -598,7 +598,7 @@ namespace TINK.ViewModel.Map
{
// Start task which periodically updates pins.
return new PollingUpdateTaskManager(
() =>
async () =>
{
try
{
@ -893,26 +893,148 @@ namespace TINK.ViewModel.Map
/// <summary> User request to center to currentLocation. </summary>
public async Task CenterToCurrentLocation()
{
Location currentLocation = null;
try
{
currentLocation = await GeolocationService.GetAsync();
}
catch (Exception ex)
{
Log.ForContext<MapPageViewModel>().Error("Getting location failed. {Exception}", ex);
}
IsMapPageEnabled = false;
if (currentLocation != null)
{
TinkApp.UserMapSpan = MapSpan.FromCenterAndRadius(
new Xamarin.Forms.GoogleMaps.Position(currentLocation.Latitude, currentLocation.Longitude),
TinkApp.ActiveMapSpan.Radius);
Log.ForContext<MapPageViewModel>().Information($"Request to center to current position.");
// Stop polling.
//ActionText = AppResources.ActivityTextOneMomentPlease;
await m_oViewUpdateManager.StopUpdatePeridically();
// Clear error info.
Exception = null;
ActiveFilterMap = tinkKonradToggleViewModel.FilterDictionary;
TinkApp.GroupFilterMapPage = ActiveFilterMap;
TinkApp.Save();
}
MoveAndScale(m_oMoveToRegionDelegate, TinkApp.ActiveMapSpan);
TinkApp.UpdateConnector();
// Check location permission
//ActionText = AppResources.ActivityTextRequestingLocationPermissions;
var status = await PermissionsService.CheckStatusAsync();
if (!GeolocationService.IsSimulation
&& status != Status.Granted)
{
status = await PermissionsService.RequestAsync();
if (status != Status.Granted)
{
var dialogResult = await ViewService.DisplayAlert(
AppResources.MessageTitleHint,
AppResources.MessageCenterMapLocationPermissionOpenDialog,
AppResources.MessageAnswerYes,
AppResources.MessageAnswerNo);
if (dialogResult)
{
// User decided to give access to locations permissions.
PermissionsService.OpenAppSettings();
ActionText = "";
IsRunning = false;
IsMapPageEnabled = true;
return;
}
}
// Do not use property .State to get bluetooth state due
// to issue https://hausource.visualstudio.com/TINK/_workitems/edit/116 /
// see https://github.com/xabre/xamarin-bluetooth-le/issues/112#issuecomment-380994887
if (await BluetoothService.GetBluetoothState() != Plugin.BLE.Abstractions.Contracts.BluetoothState.On)
{
await ViewService.DisplayAlert(
AppResources.MessageTitleHint,
AppResources.MessageBikesManagementBluetoothActivation,
AppResources.MessageAnswerOk);
ActionText = "";
IsRunning = false;
IsMapPageEnabled = true;
return;
}
}
// Move and scale before getting stations and bikes which takes some time.
Location currentLocation = null;
try
{
currentLocation = await GeolocationService.GetAsync();
}
catch (Exception ex)
{
Log.ForContext<MapPageViewModel>().Error("Getting location failed. {Exception}", ex);
}
if (currentLocation != null)
{
IsRunning = true;
ActionText = AppResources.ActivityTextCenterMap;
TinkApp.UserMapSpan = MapSpan.FromCenterAndRadius(
new Xamarin.Forms.GoogleMaps.Position(currentLocation.Latitude, currentLocation.Longitude),
TinkApp.ActiveMapSpan.Radius);
TinkApp.Save();
MoveAndScale(m_oMoveToRegionDelegate, TinkApp.ActiveMapSpan);
//Pins.Clear();
//// Update stations
//ActionText = AppResources.ActivityTextMapLoadingStationsAndBikes;
//IsConnected = TinkApp.GetIsConnected();
//var resultStationsAndBikes = await TinkApp.GetConnector(IsConnected).Query.GetBikesAndStationsAsync();
//// Set pins to their positions on map.
//InitializePins(resultStationsAndBikes.Response.StationsAll);
//Log.ForContext<MapPageViewModel>().Verbose("Update of pins done...");
//// Update pin colors.
//Log.ForContext<MapPageViewModel>().Verbose("Starting update pins color...");
//var l_oColors = GetStationColors(
// Pins.Select(x => x.Tag.ToString()).ToList(),
// resultStationsAndBikes.Response.Bikes);
//// Update pins color form count of bikes located at station.
//UpdatePinsColor(l_oColors);
//Log.ForContext<MapPageViewModel>().Verbose("Update pins color done.");
try
{
// Update bikes at station or my bikes depending on context.
await m_oViewUpdateManager.StartUpdateAyncPeridically(Polling);
}
catch (Exception)
{
// Excpetions are handled insde update task;
}
}
else
{
ActionText = AppResources.ActivityTextErrorQueryLocationWhenAny;
}
IsRunning = false;
IsMapPageEnabled = true;
Log.ForContext<MapPageViewModel>().Information($"Center to current Position done.");
ActionText = "";
}
catch (Exception l_oException)
{
Log.ForContext<MapPageViewModel>().Error("An error occurred while centering to current position.");
ActionText = "";
IsRunning = false;
await ViewService.DisplayAlert(
"Fehler",
AppResources.MessageMapPageErrorSwitch,
String.Format(AppResources.MessageMapPageErrorSwitch, l_oException.Message),
AppResources.MessageAnswerOk);
IsMapPageEnabled = true;
}
}
/// <summary> Command object to bind login button to view model.</summary>
@ -980,7 +1102,7 @@ namespace TINK.ViewModel.Map
Pins.Clear();
// Check location permission
ActionText = AppResources.ActivityTextRequestingLocationPermissions;
//ActionText = AppResources.ActivityTextRequestingLocationPermissions;
var status = await PermissionsService.CheckStatusAsync();
if (TinkApp.CenterMapToCurrentLocation
@ -1024,10 +1146,10 @@ namespace TINK.ViewModel.Map
}
// Move and scale before getting stations and bikes which takes some time.
ActionText = AppResources.ActivityTextCenterMap;
if (TinkApp.CenterMapToCurrentLocation)
{
//ActionText = AppResources.ActivityTextCenterMap;
Location currentLocation = null;
try
{
@ -1045,12 +1167,12 @@ namespace TINK.ViewModel.Map
TinkApp.ActiveMapSpan.Radius);
TinkApp.Save();
//MoveAndScale(m_oMoveToRegionDelegate, TinkApp.ActiveMapSpan);
}
}
// Update stations
MoveAndScale(m_oMoveToRegionDelegate, TinkApp.ActiveMapSpan);
ActionText = AppResources.ActivityTextMapLoadingStationsAndBikes;
IsConnected = TinkApp.GetIsConnected();
var resultStationsAndBikes = await TinkApp.GetConnector(IsConnected).Query.GetBikesAndStationsAsync();

View file

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net5.0</TargetFramework>
<IsPackable>false</IsPackable>

View file

@ -693,7 +693,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -755,7 +755,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Lock cannot be opened until bike is near.", "OK");
@ -815,7 +815,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Lock is blocked. Please ensure that no obstacle prevents lock from opening and try again.", "OK");
@ -876,7 +876,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "After try to open lock state closed is reported.", "OK");
@ -936,7 +936,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be opened!", "Lock was blocked and might still be. Please ensure that no obstacle prevents lock from opening and try again.", "OK");
@ -996,7 +996,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Exception message.", "OK");
@ -1057,7 +1057,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -1121,7 +1121,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -1186,7 +1186,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -1251,7 +1251,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -1317,7 +1317,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();

View file

@ -154,7 +154,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Query location...";
bikesViewModel.ActionText = "Returning bike...";
@ -226,7 +226,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
bike.LockInfo.State = LockingState.UnknownDisconnected;
@ -431,7 +431,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
bike.LockInfo.State = LockingState.UnknownDisconnected;
@ -503,7 +503,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
bike.LockInfo.State = LockingState.Open;
@ -577,7 +577,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bike.LockInfo.State = LockingState.Open;
bikesViewModel.ActionText = "";
@ -648,7 +648,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Query location...";
bikesViewModel.ActionText = "";
@ -720,7 +720,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Query location...";
bikesViewModel.ActionText = "Returning bike...";
@ -797,7 +797,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Query location...";
bikesViewModel.ActionText = "Returning bike...";
@ -873,7 +873,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Query location...";
bikesViewModel.ActionText = "Returning bike...";
@ -949,7 +949,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Query location...";
bikesViewModel.ActionText = "Returning bike...";
@ -1023,7 +1023,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Starting bike return...";
connector.Command.StartReturningBike(bike); // Notify about start
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Query location...";
bikesViewModel.ActionText = "Returning bike...";
@ -1084,7 +1084,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());
@ -1144,7 +1144,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be closed!", "Lock cannot be closed until bike is near.", "OK");
@ -1204,7 +1204,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be closed!", "Exception message.", "OK");
@ -1265,7 +1265,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());
@ -1327,7 +1327,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());
@ -1390,7 +1390,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());

View file

@ -93,7 +93,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -155,7 +155,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Lock cannot be opened until bike is near.", "OK");
@ -215,7 +215,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Lock is blocked. Please ensure that no obstacle prevents lock from opening and try again.", "OK");
@ -275,7 +275,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "After try to open lock state closed is reported.", "OK");
@ -335,7 +335,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be opened!", "Lock was blocked and might still be. Please ensure that no obstacle prevents lock from opening and try again.", "OK");
@ -395,7 +395,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Exception message.", "OK");
@ -456,7 +456,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -521,7 +521,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -586,7 +586,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -651,7 +651,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -717,7 +717,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -779,7 +779,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());
@ -839,7 +839,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be closed!", "Lock cannot be closed until bike is near.", "OK");
@ -899,7 +899,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be closed!", "Exception message.", "OK");
@ -960,7 +960,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());
@ -1022,7 +1022,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());
@ -1085,7 +1085,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());

View file

@ -158,7 +158,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.ActionText = "";
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();

View file

@ -91,7 +91,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks[0].CloseAsync();
bikesViewModel.ActionText = "Disconnecting lock...";
locks.DisconnectAsync(Arg.Any<int>(), Arg.Any<Guid>());
@ -154,7 +154,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks[0].CloseAsync();
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be closed!", "Lock cannot be closed until bike is near.", "OK");
@ -217,7 +217,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks[0].CloseAsync();
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be closed!", "Exception message.", "OK");

View file

@ -473,7 +473,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -680,7 +680,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Lock cannot be opened until bike is near.", "OK");
@ -747,7 +747,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Exception message.", "OK");
@ -813,7 +813,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "Updating...";
pollingManager.StartUpdateAyncPeridically(); // polling must be restarted again
@ -879,7 +879,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -950,7 +950,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -1021,7 +1021,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -1092,7 +1092,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -1164,7 +1164,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();

View file

@ -423,7 +423,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.ActionText = "";
bikesViewModel.ActionText = "Renting bike...";
connector.Command.DoBook(bike); // Booking must be performed
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be opened
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();

View file

@ -288,7 +288,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks[0].CloseAsync();
bikesViewModel.ActionText = "Canceling reservation...";
connector.Command.DoCancelReservation(bike);
@ -360,7 +360,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks[0].CloseAsync();
bikesViewModel.ActionText = "";
viewService.DisplayAlert(
@ -434,7 +434,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks[0].CloseAsync();
bikesViewModel.ActionText = "";
viewService.DisplayAlert(
@ -512,7 +512,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks[0].CloseAsync();
bikesViewModel.ActionText = "Canceling reservation...";
connector.Command.DoCancelReservation(bike);
@ -583,7 +583,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks[0].CloseAsync();
bikesViewModel.ActionText = "Canceling reservation...";
connector.Command.DoCancelReservation(bike);
@ -654,7 +654,7 @@ namespace TestTINKLib.Fixtures.ObjectTests.ViewModel.Bikes.Bike.BluetoothLock.Re
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks[0].CloseAsync();
bikesViewModel.ActionText = "Canceling reservation...";
connector.Command.DoCancelReservation(bike);

View file

@ -95,7 +95,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -157,7 +157,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Lock cannot be opened until bike is near.", "OK");
@ -217,7 +217,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Lock is blocked. Please ensure that no obstacle prevents lock from opening and try again.", "OK");
@ -277,7 +277,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "After try to open lock state closed is reported.", "OK");
@ -337,7 +337,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be opened!", "Lock was blocked and might still be. Please ensure that no obstacle prevents lock from opening and try again.", "OK");
@ -397,7 +397,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Error while opening lock!", "Exception message.", "OK");
@ -459,7 +459,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -524,7 +524,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -590,7 +590,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
locks.Received()[0].OpenAsync(); // Lock must be closed
bikesViewModel.ActionText = "Reading charging level...";
locks[0].GetBatteryPercentageAsync();
@ -652,7 +652,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());
@ -708,7 +708,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be closed!", "Lock cannot be closed until bike is near.", "OK");
@ -768,7 +768,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "";
viewService.DisplayAlert("Lock can not be closed!", "Exception message.", "OK");
@ -830,7 +830,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());
@ -892,7 +892,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());
@ -955,7 +955,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Closing lock...";
bikesViewModel.ActionText = "<h4><b>Lock is closing.<br/>Please visually check if it is completely closed.</b></h4>";
locks.Received()[0].CloseAsync(); // Lock must be closed
bikesViewModel.ActionText = "Updating lock state...";
connector.Command.UpdateLockingStateAsync(bike, Arg.Any<LocationDto>());

View file

@ -57,7 +57,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.CopriLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
connector.Command.OpenLockAsync(bike); // Booking must be performed
bikesViewModel.ActionText = "";
viewService.DisplayAdvancedAlert(
@ -127,7 +127,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.CopriLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
connector.Command.OpenLockAsync(bike); // Booking must be performed
bikesViewModel.ActionText = "";
viewService.DisplayAlert(
@ -194,7 +194,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.CopriLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
connector.Command.OpenLockAsync(bike); // Booking must be performed
bikesViewModel.ActionText = "Updating...";
pollingManager.StartUpdateAyncPeridically(); // polling must be restarted again

View file

@ -57,7 +57,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.CopriLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
connector.Command.OpenLockAsync(bike); // Booking must be performed
bikesViewModel.ActionText = "";
viewService.DisplayAdvancedAlert(
@ -127,7 +127,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.CopriLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
connector.Command.OpenLockAsync(bike); // Booking must be performed
bikesViewModel.ActionText = "";
viewService.DisplayAlert(
@ -194,7 +194,7 @@ namespace TestShareeLib.ViewModel.Bikes.Bike.CopriLock.RequestHandler
bikesViewModel.Received(1).IsIdle = false; // GUI must be locked
bikesViewModel.ActionText = "One moment please...";
pollingManager.StopUpdatePeridically(); // Polling must be stopped before any COPR and lock service action
bikesViewModel.ActionText = "Opening lock...";
bikesViewModel.ActionText = "<h4><b>Lock is opening.<br/>Please wait until it is completely open.</b></h4>";
connector.Command.OpenLockAsync(bike); // Booking must be performed
bikesViewModel.ActionText = "Updating...";
pollingManager.StartUpdateAyncPeridically(); // polling must be restarted again