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

@ -31,6 +31,8 @@ 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")]
namespace TINK
{

View file

@ -181,7 +181,6 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Folder Include="$(MSBuildThisFileDirectory)Resources\Fonts\" />
<Folder Include="$(MSBuildThisFileDirectory)View\BikesAtStation\" />
<Folder Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\" />
<Folder Include="$(MSBuildThisFileDirectory)View\Login\" />
@ -323,4 +322,12 @@
<Generator>MSBuild:Compile</Generator>
</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>
</ItemGroup>
</Project>

View file

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

View file

@ -1,12 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
x:Class="TINK.View.BikesAtStation.BikesAtStationPage"
xmlns:rental_process="clr-namespace:TINK.ViewModel.Bikes;assembly=TINKLib"
xmlns:local_bike="clr-namespace:TINK.View.Bike"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
xmlns:bikeRentalProcess="clr-namespace:ShareeSharedGuiLib.View.Bike.RentalProcess"
BackgroundColor="{DynamicResource background-color}"
Shell.FlyoutBehavior="Disabled"
Shell.NavBarIsVisible="{Binding IsIdle}">
<Shell.TitleView>
@ -21,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>
@ -28,8 +39,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">
@ -41,7 +54,7 @@
<!--Station-->
<StackLayout
BackgroundColor="{DynamicResource secondary-back-title-color}"
BackgroundColor="{DynamicResource primary-back-title-color}"
IsVisible="{Binding IsIdle}"
Padding="20,0,20,0">
@ -189,6 +202,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

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

View file

@ -20,8 +20,9 @@
<!--Grid for Map with Buttons and Running process-->
<Grid
RowDefinitions="3,46,1*,32"
RowDefinitions="3,46,1*,Auto"
ColumnDefinitions="1*,Auto,1*"
RowSpacing="0"
IsEnabled="{Binding IsMapPageEnabled}"
VerticalOptions="FillAndExpand">
@ -119,10 +120,23 @@
Grid.ColumnSpan="3"
Text="{Binding StatusInfoText}"
IsVisible="{Binding Path=IsProcessWithRunningProcessView, Converter={StaticResource InvertedBoolConverter}}"
TextColor="White"
FontSize="Small"
HorizontalOptions="CenterAndExpand"
VerticalOptions="CenterAndExpand"/>
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>
<!--While process is running-->
<sharedGui:RunningProcessView

View file

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

View file

@ -6,10 +6,12 @@
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>
<x:String x:Key="WriteFeedback">&#xf044;</x:String>
</xct:Popup.Resources>
<ScrollView
@ -20,95 +22,124 @@
<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

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

View file

@ -1,11 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns: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:local_bike="clr-namespace:TINK.View.Bike"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
xmlns:rental_process="clr-namespace:TINK.ViewModel.Bikes;assembly=TINKLib"
xmlns:bikeRentalProcess="clr-namespace:ShareeSharedGuiLib.View.Bike.RentalProcess"
BackgroundColor="{DynamicResource background-color}">
<Shell.TitleView>
@ -19,6 +23,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>
@ -29,9 +42,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"
@ -40,37 +54,7 @@
<StackLayout
BackgroundColor="White"
Padding="20,5,20,0">
<!--Bike type-->
<StackLayout Orientation="Horizontal"
HorizontalOptions="Center"
IsVisible="{Binding ActiveFilteredBikeType, Converter={StaticResource Label_Converter}}"
Spacing="0">
<Label
TextColor="DimGray"
Text="{x:Static resources:AppResources.MarkingFindBikeTypeOfBikeText}"/>
<Label
TextColor="{DynamicResource primary-back-title-color}"
FontAttributes="Bold"
Text="{Binding ActiveFilteredBikeType}"/>
<Button
Command="{Binding ShowFilterBikeTypeInfoCommand}"
WidthRequest="24"
HeightRequest="24"
BackgroundColor="Transparent"
BorderWidth="0"
Padding="0"
Margin="5,0,0,0">
<Button.ImageSource>
<FontImageSource
Glyph="{StaticResource InfoCircle}"
Color="DimGray"
FontFamily="FA-S"
Size="20"/>
</Button.ImageSource>
</Button>
</StackLayout>
Padding="20,0,20,0">
<Grid
RowDefinitions="Auto,Auto"
@ -171,6 +155,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

@ -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,16 @@
<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.NavBarIsVisible="{Binding IsIdle}">
<Shell.TitleView>
<Grid ColumnDefinitions="Auto, 1*">
@ -22,6 +25,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>
@ -32,9 +44,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"
@ -107,6 +120,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;
}