Version 3.0.370

This commit is contained in:
Anja 2023-08-31 12:20:06 +02:00
parent f5cf9bb22f
commit bdb2dec1c1
233 changed files with 10252 additions and 6779 deletions

View file

@ -14,6 +14,7 @@ using Xamarin.Forms.Platform.Android.AppLinks;
using static Xamarin.Essentials.Permissions;
using Xamarin.Essentials;
using Android.Runtime;
using Xamarin.Forms;
namespace TINK.Droid
{

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.369" android:versionCode="369">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.hauffware.sharee" android:versionName="3.0.370" android:versionCode="370">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="33" />
<!-- Google Maps related permissions -->
<!-- Permission to receive remote notifications from Google Play Services -->

View file

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

View file

@ -56,8 +56,8 @@
<key>CFBundleDisplayName</key>
<string>sharee.bike</string>
<key>CFBundleVersion</key>
<string>369</string>
<string>370</string>
<key>CFBundleShortVersionString</key>
<string>3.0.369</string>
<string>3.0.370</string>
</dict>
</plist>

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6245" systemVersion="13F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="X5k-f2-b5h">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6238"/>
@ -41,6 +41,5 @@
<image name="Icon-76.png" width="76" height="76"/>
<image name="Icon-Small-40.png" width="40" height="40"/>
<image name="Icon-Small.png" width="29" height="29"/>
<image name="tink2.png" width="208" height="208"/>
</resources>
</document>
</document>

View file

@ -31,7 +31,11 @@ using Arendi.BleLibrary.Local;
// Add ExportFont attribute
[assembly: ExportFont("Font Awesome 5 Free-Solid-900.otf", Alias = "FA-S")]
[assembly: ExportFont("Font Awesome 5 Brands-Regular-400.otf", Alias = "FA-B")]
[assembly: ExportFont("Font Awesome 5 Free-Regular-400.otf", Alias = "FA-R")]
[assembly: ExportFont("Roboto-Regular.ttf", Alias = "RobotoRegular")]
[assembly: ExportFont("Roboto-Bold.ttf", Alias = "RobotoBold")]
[assembly: ExportFont("Roboto-Italic.ttf", Alias = "RobotoItalic")]
namespace TINK
{

View file

@ -319,6 +319,12 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Resources\Fonts\Font Awesome 5 Brands-Regular-400.otf">
<Generator>MSBuild:Compile</Generator>
</EmbeddedResource>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Resources\Fonts\Font Awesome 5 Free-Regular-400.otf">
<Generator>MSBuild:Compile</Generator>
</EmbeddedResource>
<Content Include="$(MSBuildThisFileDirectory)Resources\Fonts\Roboto-Bold.ttf" />
<Content Include="$(MSBuildThisFileDirectory)Resources\Fonts\Roboto-Italic.ttf" />
</ItemGroup>

View file

@ -48,14 +48,14 @@
Text="{Binding BookingStateInfo}" />
<Button
Text="{x:Static resources:AppResources.MessageAccountPageManagePersonalData}"
Text="{x:Static resources:AppResources.MarkingAccountPageManagePersonalData}"
Command="{Binding OnManageAccount}"
IsEnabled="{Binding IsLogoutPossible}">
</Button>
<Button
Style="{StaticResource SecondaryButton}"
Text="{x:Static resources:AppResources.MessageAccountPageManageLogout}"
Text="{x:Static resources:AppResources.MarkingAccountPageManageLogout}"
Command="{Binding OnLogoutRequest}"
IsEnabled="{Binding IsLogoutPossible}">
</Button>

View file

@ -2,11 +2,12 @@
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
xmlns:rental_process="clr-namespace:TINK.ViewModel.Bikes;assembly=TINKLib"
x:Class="TINK.View.BikesAtStation.BikesAtStationPage"
xmlns:local_bike="clr-namespace:TINK.View.Bike"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
Shell.FlyoutBehavior="Disabled"
xmlns:bikeRentalProcess="clr-namespace:ShareeSharedGuiLib.View.Bike.RentalProcess"
BackgroundColor="{DynamicResource background-color}"
Shell.NavBarIsVisible="{Binding IsIdle}">
@ -20,6 +21,15 @@
<ContentPage.Resources>
<ResourceDictionary>
<local_bike:BikeViewCellTemplateSelector x:Key="bikeTemplateSelector"/>
<xct:MultiConverter x:Key="RentalProcessToVisibleConverter">
<xct:EnumToBoolConverter>
<xct:EnumToBoolConverter.TrueValues>
<rental_process:CurrentRentalProcess>CloseLock</rental_process:CurrentRentalProcess>
<rental_process:CurrentRentalProcess>EndRental</rental_process:CurrentRentalProcess>
</xct:EnumToBoolConverter.TrueValues>
</xct:EnumToBoolConverter>
<xct:InvertedBoolConverter />
</xct:MultiConverter>
</ResourceDictionary>
</ContentPage.Resources>
@ -27,8 +37,10 @@
<!--Grid for Bike(s) view and Running process in same row-->
<Grid>
<!-- Grid for Content -->
<!--BikesAtStationPage Content-->
<Grid
IsVisible="{Binding RentalProcess.State, Converter={StaticResource RentalProcessToVisibleConverter}}"
Grid.Row="0"
RowSpacing="0"
RowDefinitions="1*,Auto">
@ -188,6 +200,14 @@
IsVisible="{Binding IsProcessWithRunningProcessView}"
Grid.Row="0"/>
<!--CloseLock View-->
<bikeRentalProcess:RentalProcessBookedOpenCloseLock
Grid.Row="0"/>
<!--EndRental View-->
<bikeRentalProcess:RentalProcessBookedClosedEndRental
Grid.Row="0"/>
</Grid>
</ContentPage.Content>

View file

@ -24,6 +24,7 @@ namespace TINK.View.BikesAtStation
using TINK.ViewModel.Bikes;
using Xamarin.CommunityToolkit.Extensions;
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
using TINK.MultilingualResources;
[XamlCompilation(XamlCompilationOptions.Compile)]
#if USEFLYOUT
@ -111,7 +112,10 @@ namespace TINK.View.BikesAtStation
catch (Exception exception)
{
Log.ForContext<BikesAtStationPage>().Error("Displaying bikes at station page failed. {Exception}", exception);
await DisplayAlert("Fehler", $"Seite Räder an Station kann nicht angezeigt werden. ${exception.Message}", "OK");
await DisplayAlert(
AppResources.ErrorPageNotLoadedTitle,
$"{AppResources.ErrorPageNotLoaded}\r\n{exception.Message}",
AppResources.MessageAnswerOk);
isInitializationStarted = false;
return;
}

View file

@ -59,7 +59,7 @@
</StackLayout>
<!--Contact operator of selected station-->
<!--contact customer support of selected station-->
<StackLayout
IsVisible="{Binding IsOperatorInfoAvaliable}">

View file

@ -115,20 +115,25 @@
<!--Info text-->
<Label
Grid.Row="3"
Grid.ColumnSpan="3"
Text="{Binding StatusInfoText}"
IsVisible="{Binding Path=IsProcessWithRunningProcessView, Converter={StaticResource InvertedBoolConverter}}"
FontSize="Small"
Padding="5"
TextColor="DimGray"
HorizontalOptions="CenterAndExpand">
Grid.Row="3"
Grid.ColumnSpan="3"
Text="{Binding StatusInfoText}"
IsVisible="{Binding Path=IsProcessWithRunningProcessView, Converter={StaticResource InvertedBoolConverter}}"
FontSize="Small"
Padding="5"
TextColor="DimGray"
HorizontalOptions="CenterAndExpand">
<Label.Triggers>
<DataTrigger
TargetType="Label"
Binding="{Binding Path=StatusInfoText.Length}" Value="0">
<Setter Property="HeightRequest" Value="0" />
</DataTrigger>
<DataTrigger
TargetType="Label"
Binding="{Binding Path=StatusInfoText}" Value="Offline.">
<Setter Property="HeightRequest" Value="0" />
</DataTrigger>
</Label.Triggers>
</Label>

View file

@ -8,7 +8,7 @@
<Shell.TitleView>
<Grid ColumnDefinitions="Auto, 1*">
<Label Style="{StaticResource Label-Navbar}"
Text="{x:Static resources:AppResources.MessageAccountPageManagePersonalData}"/>
Text="{x:Static resources:AppResources.MarkingAccountPageManagePersonalData}"/>
</Grid>
</Shell.TitleView>

View file

@ -6,109 +6,140 @@
x:TypeArguments="local:FeedbackPopup+Result"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
IsLightDismissEnabled="false"
x:Class="TINK.View.FeedbackPopup">
<xct:Popup.Resources>
<x:String x:Key="check_circle">&#xf058;</x:String>
</xct:Popup.Resources>
<xct:Popup.Resources>
<x:String x:Key="check_circle">&#xf058;</x:String>
<x:String x:Key="WriteFeedback">&#xf044;</x:String>
</xct:Popup.Resources>
<ScrollView
Orientation="Vertical"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand">
<StackLayout
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
Padding="0,0,0,300">
Padding="0,0,0,400">
<!-- Head and title -->
<StackLayout
Padding="20"
BackgroundColor="{DynamicResource primary-back-title-color}">
<Label
HorizontalTextAlignment="Center"
FontSize="Large"
TextColor="White"
Text="{x:Static resources:AppResources.MarkingReturnBikeMainMessage}"/>
<Image>
<!-- Head -->
<Grid
Padding="0,30,0,10"
ColumnDefinitions="10,Auto,1*,10"
ColumnSpacing="10"
HorizontalOptions="CenterAndExpand">
<!--icon-->
<Image
Grid.Column="1"
HorizontalOptions="End">
<Image.Source>
<FontImageSource Size="60" Glyph="{StaticResource check_circle}" FontFamily="FA-S" Color="White"/>
<FontImageSource
Glyph="{StaticResource WriteFeedback}"
FontFamily="FA-S"
Size="40"
Color="Black"/>
</Image.Source>
</Image>
</StackLayout>
<!--text-->
<Label
Grid.Column="2"
TextType="Html"
Text="{x:Static resources:AppResources.ActionGiveFeedback}"
FontSize="Large"
HorizontalOptions="StartAndExpand"
VerticalOptions="Center"
TextColor="Black"
Padding="0">
</Label>
</Grid>
<BoxView
Margin="20,0,20,10"
HeightRequest="1"
WidthRequest="400"
HorizontalOptions="Center"
Color="{DynamicResource primary-back-title-color}"/>
<!-- Content -->
<StackLayout
Margin="10"
Spacing="10">
<!-- Co2saving -->
<Frame
x:Name="Co2SavingFrame">
<Label
x:Name="Co2SavingLabel"
Text=""/>
</Frame>
<!-- Battery level -->
<sharedGui:BarLevelInputView
x:Name="BarLevelInputView"
HorizontalOptions="Center"/>
x:Name="BarLevelInputView"
HorizontalOptions="Center"/>
<!-- Is bike okay? -->
<Grid
ColumnDefinitions="*,Auto,Auto,Auto,*"
ColumnDefinitions="*,Auto,*"
RowDefinitions="Auto,Auto"
Margin="0,20,0,0">
<Label
<Grid
Grid.Column="1"
Grid.Row="0"
FontSize="Medium"
FontAttributes="Bold"
Text= "{x:Static resources:AppResources.MarkingReturnBikeBikeIsStateOkQuestion}">
</Label>
<Switch
Grid.Column="2"
Grid.Row="0"
ColumnDefinitions="1*,Auto,Auto">
<Label
Grid.Column="0"
FontAttributes="Bold"
HorizontalTextAlignment="End"
Text= "{x:Static resources:AppResources.MarkingReturnBikeBikeIsStateOkQuestion}">
</Label>
<Switch
Grid.Column="1"
VerticalOptions="Center"
HorizontalOptions="End"
x:Name="bikeIsOkSwitch"
IsToggled="True"/>
<Label
Grid.Column="3"
Grid.Row="0"
<Label
Grid.Column="2"
FontSize="Small"
VerticalOptions="Center"
HorizontalOptions="Start">
<Label.Triggers>
<DataTrigger TargetType="Label" Binding="{Binding Source={x:Reference bikeIsOkSwitch}, Path=IsToggled}" Value="False">
<Setter Property="Text" Value="{x:Static resources:AppResources.QuestionAnswerNo}"/>
</DataTrigger>
<DataTrigger TargetType="Label" Binding="{Binding Source={x:Reference bikeIsOkSwitch}, Path=IsToggled}" Value="True">
<Setter Property="Text" Value="{x:Static resources:AppResources.QuestionAnswerYes}"/>
</DataTrigger>
</Label.Triggers>
</Label>
<Label.Triggers>
<DataTrigger TargetType="Label" Binding="{Binding Source={x:Reference bikeIsOkSwitch}, Path=IsToggled}" Value="False">
<Setter Property="Text" Value="{x:Static resources:AppResources.MessageAnswerNo}"/>
</DataTrigger>
<DataTrigger TargetType="Label" Binding="{Binding Source={x:Reference bikeIsOkSwitch}, Path=IsToggled}" Value="True">
<Setter Property="Text" Value="{x:Static resources:AppResources.MessageAnswerYes}"/>
</DataTrigger>
</Label.Triggers>
</Label>
</Grid>
<!-- Text input bike is not OK -->
<Editor
<StackLayout Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="5"
Grid.Row="1"
x:Name="feedbackMessage"
AutoSize="TextChanges"
Placeholder="{x:Static resources:AppResources.MarkingReturnBikeErrorDescriptionInputPlaceholder}"
Text=""
IsVisible="False">
<Editor.Triggers>
<DataTrigger TargetType="Editor"
Binding="{Binding Source={x:Reference bikeIsOkSwitch}, Path=IsToggled}"
Value="False">
Grid.ColumnSpan="3"
Padding="1"
BackgroundColor="{DynamicResource primary-back-title-color}">
<StackLayout.Triggers>
<DataTrigger TargetType="StackLayout"
Binding="{Binding Source={x:Reference bikeIsOkSwitch}, Path=IsToggled}"
Value="False">
<Setter Property="IsVisible" Value="True"/>
<Setter Property="Text" Value=""/>
<Setter Property="HeightRequest" Value="100"/>
</DataTrigger>
</Editor.Triggers>
</Editor>
<DataTrigger TargetType="StackLayout"
Binding="{Binding Source={x:Reference bikeIsOkSwitch}, Path=IsToggled}"
Value="True">
<Setter Property="IsVisible" Value="False"/>
<Setter Property="HeightRequest" Value="0"/>
</DataTrigger>
</StackLayout.Triggers>
<Editor
x:Name="feedbackMessage"
HeightRequest="100"
Placeholder="{x:Static resources:AppResources.MarkingReturnBikeErrorDescriptionInputPlaceholder}"
Text=""
BackgroundColor="White">
</Editor>
</StackLayout>
</Grid>

View file

@ -16,10 +16,6 @@ namespace TINK.View
string co2Saving = null)
{
InitializeComponent();
if (string.IsNullOrEmpty(co2Saving))
Co2SavingFrame.IsVisible = false;
else
Co2SavingLabel.Text = co2Saving;
if (battery == null
|| (battery.IsBackendAccessible.HasValue && battery.IsBackendAccessible.Value))

View file

@ -2,13 +2,17 @@
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
x:Class="TINK.View.FindBike.FindBikePage"
xmlns:conv="clr-namespace:TINK.View"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:rental_process="clr-namespace:TINK.ViewModel.Bikes;assembly=TINKLib"
xmlns:bikeRentalProcess="clr-namespace:ShareeSharedGuiLib.View.Bike.RentalProcess"
xmlns:local_bike="clr-namespace:TINK.View.Bike"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
BackgroundColor="{DynamicResource background-color}">
BackgroundColor="{DynamicResource background-color}"
Shell.NavBarIsVisible="{Binding IsIdle}">
<Shell.TitleView>
<Grid ColumnDefinitions="Auto, 1*">
<Label Style="{StaticResource Label-Navbar}"
@ -20,6 +24,15 @@
<ResourceDictionary>
<local_bike:BikeViewCellTemplateSelector x:Key="bikeTemplateSelector"/>
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="Label_Converter"/>
<xct:MultiConverter x:Key="RentalProcessToVisibleConverter">
<xct:EnumToBoolConverter>
<xct:EnumToBoolConverter.TrueValues>
<rental_process:CurrentRentalProcess>CloseLock</rental_process:CurrentRentalProcess>
<rental_process:CurrentRentalProcess>EndRental</rental_process:CurrentRentalProcess>
</xct:EnumToBoolConverter.TrueValues>
</xct:EnumToBoolConverter>
<xct:InvertedBoolConverter />
</xct:MultiConverter>
</ResourceDictionary>
</ContentPage.Resources>
@ -30,9 +43,10 @@
<!-- Grid for Content -->
<Grid
RowDefinitions="1*,Auto"
IsVisible="{Binding RentalProcess.State, Converter={StaticResource RentalProcessToVisibleConverter}}"
Grid.Row="0"
RowSpacing="0"
Grid.Row="0">
RowDefinitions="1*,Auto">
<StackLayout
Grid.Row="0"
@ -142,7 +156,15 @@
Grid.Row="0"
IsVisible="{Binding IsProcessWithRunningProcessView}"/>
</Grid>
<!--CloseLock View-->
<bikeRentalProcess:RentalProcessBookedOpenCloseLock
Grid.Row="0"/>
<!--EndRental View-->
<bikeRentalProcess:RentalProcessBookedClosedEndRental
Grid.Row="0"/>
</Grid>
</ContentPage.Content>

View file

@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Serilog;
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
using TINK.Model.Device;
using TINK.MultilingualResources;
using TINK.ViewModel.FindBike;
using Xamarin.CommunityToolkit.Extensions;
using Xamarin.Forms;
@ -64,7 +65,10 @@ namespace TINK.View.FindBike
catch (Exception exception)
{
Log.ForContext<FindBikePage>().Error("Displaying bikes at station page failed. {Exception}", exception);
await DisplayAlert("Fehler", $"Seite Fahrrad Wählen kann nicht angezeigt werden. ${exception.Message}", "OK");
await DisplayAlert(
AppResources.ErrorPageNotLoadedTitle,
$"{AppResources.ErrorPageNotLoaded}\r\n{exception.Message}",
AppResources.MessageAnswerOk);
return;
}

View file

@ -2,13 +2,17 @@
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
x:Class="TINK.View.MyBikes.MyBikesPage"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
xmlns:rental_process="clr-namespace:TINK.ViewModel.Bikes;assembly=TINKLib"
xmlns:bikeRentalProcess="clr-namespace:ShareeSharedGuiLib.View.Bike.RentalProcess"
xmlns:local_bike="clr-namespace:TINK.View.Bike"
BackgroundColor="{DynamicResource background-color}"
Shell.FlyoutBehavior="{Binding FlyoutBehavior}">
Shell.FlyoutBehavior="{Binding FlyoutBehavior}"
Shell.NavBarIsVisible="{Binding IsIdle}">
<Shell.TitleView>
<Grid ColumnDefinitions="Auto, 1*">
<Label Style="{StaticResource Label-Navbar}"
@ -19,6 +23,15 @@
<ContentPage.Resources>
<ResourceDictionary>
<local_bike:BikeViewCellTemplateSelector x:Key="bikeTemplateSelector"/>
<xct:MultiConverter x:Key="RentalProcessToVisibleConverter">
<xct:EnumToBoolConverter>
<xct:EnumToBoolConverter.TrueValues>
<rental_process:CurrentRentalProcess>CloseLock</rental_process:CurrentRentalProcess>
<rental_process:CurrentRentalProcess>EndRental</rental_process:CurrentRentalProcess>
</xct:EnumToBoolConverter.TrueValues>
</xct:EnumToBoolConverter>
<xct:InvertedBoolConverter />
</xct:MultiConverter>
</ResourceDictionary>
</ContentPage.Resources>
@ -29,9 +42,10 @@
<!--Bike(s) view-->
<Grid
RowDefinitions="1*,Auto"
IsVisible="{Binding RentalProcess.State, Converter={StaticResource RentalProcessToVisibleConverter}}"
Grid.Row="0"
RowSpacing="0"
Grid.Row="0">
RowDefinitions="1*,Auto">
<StackLayout
Grid.Row="0"
@ -104,6 +118,14 @@
Grid.Row="0"
IsVisible="{Binding IsProcessWithRunningProcessView}"/>
<!--CloseLock View-->
<bikeRentalProcess:RentalProcessBookedOpenCloseLock
Grid.Row="0"/>
<!--EndRental View-->
<bikeRentalProcess:RentalProcessBookedClosedEndRental
Grid.Row="0"/>
</Grid>
</ContentPage.Content>

View file

@ -14,6 +14,7 @@ namespace TINK.View.MyBikes
using TINK.Model;
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
using TINK.Model.Device;
using TINK.MultilingualResources;
using TINK.ViewModel.MyBikes;
using Xamarin.CommunityToolkit.Extensions;
@ -78,7 +79,10 @@ namespace TINK.View.MyBikes
catch (Exception exception)
{
Log.ForContext<MyBikesPage>().Error("Displaying bikes at station page failed. {Exception}", exception);
await DisplayAlert("Fehler", $"Seite Räder an Station kann nicht angezeigt werden. ${exception.Message}", "OK");
await DisplayAlert(
AppResources.ErrorPageNotLoadedTitle,
$"{AppResources.ErrorPageNotLoaded}\r\n{exception.Message}",
AppResources.MessageAnswerOk);
isInitializationStarted = false;
return;
}