mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-04-19 03:27:29 +02:00
Version 3.0.369
This commit is contained in:
parent
1a58bf58d3
commit
f5cf9bb22f
70 changed files with 1130 additions and 773 deletions
|
@ -5,6 +5,8 @@
|
|||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||
mc:Ignorable="d"
|
||||
xmlns:conv="clr-namespace:TINK.View"
|
||||
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
|
||||
x:Class="TINK.View.Account.AccountPage"
|
||||
BackgroundColor="{DynamicResource background-color}">
|
||||
|
||||
|
@ -16,11 +18,19 @@
|
|||
</Grid>
|
||||
</Shell.TitleView>
|
||||
|
||||
<ContentPage.Resources>
|
||||
<conv:BoolInverterConverter x:Key="BoolInverterConverter"/>
|
||||
</ContentPage.Resources>
|
||||
|
||||
<ContentPage.Content>
|
||||
|
||||
<ScrollView>
|
||||
<!--Grid for content and Running process in same row-->
|
||||
<Grid>
|
||||
|
||||
<StackLayout>
|
||||
<ScrollView
|
||||
Grid.Row="0">
|
||||
|
||||
<StackLayout>
|
||||
|
||||
<Frame
|
||||
Padding="10"
|
||||
|
@ -57,6 +67,13 @@
|
|||
|
||||
</ScrollView>
|
||||
|
||||
<!--While process is running-->
|
||||
<sharedGui:RunningProcessView
|
||||
IsVisible="{Binding IsIdle, Converter={StaticResource BoolInverterConverter}}"
|
||||
Grid.Row="0"/>
|
||||
|
||||
</Grid>
|
||||
|
||||
</ContentPage.Content>
|
||||
|
||||
</ContentPage>
|
||||
|
|
|
@ -89,7 +89,7 @@
|
|||
|
||||
<!--Bike data-->
|
||||
<Grid
|
||||
RowDefinitions="Auto,Auto"
|
||||
RowDefinitions="Auto,1*"
|
||||
RowSpacing="0">
|
||||
|
||||
<!--Hint for Outdated Data.-->
|
||||
|
|
|
@ -21,103 +21,158 @@
|
|||
|
||||
<ContentPage.Content>
|
||||
|
||||
<ScrollView>
|
||||
<Grid
|
||||
x:Name="ContactPageView"
|
||||
RowSpacing="0"
|
||||
RowDefinitions="1*,Auto">
|
||||
|
||||
<StackLayout
|
||||
x:Name="ContactPageView"
|
||||
Spacing="0">
|
||||
<!-- Contact Support -->
|
||||
<Frame
|
||||
Grid.Row="0"
|
||||
Padding="10"
|
||||
Margin="0,10,0,5"
|
||||
HorizontalOptions="FillAndExpand"
|
||||
VerticalOptions="Start"
|
||||
BackgroundColor="White"
|
||||
HasShadow="False">
|
||||
|
||||
<Frame
|
||||
Padding="10"
|
||||
Margin="0,10,0,5"
|
||||
HorizontalOptions="FillAndExpand"
|
||||
BackgroundColor="White">
|
||||
<StackLayout
|
||||
Padding="20">
|
||||
|
||||
<!--Title Customer Support-->
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MarkingContactCustomerSupportTitle}"
|
||||
FontAttributes="Bold"
|
||||
FontSize="Large"
|
||||
/>
|
||||
|
||||
<!--No station selected-->
|
||||
<StackLayout
|
||||
Padding="10">
|
||||
|
||||
<!-- Button to select station and explanation text -->
|
||||
<StackLayout
|
||||
IsVisible="{Binding Path=IsOperatorInfoAvaliable, Converter={StaticResource BoolInvert_Converter}}">
|
||||
|
||||
<Label
|
||||
<Label
|
||||
TextType="Html"
|
||||
Text="{x:Static resources:AppResources.MarkingContactNoStationInfoAvailableNoButton}"/>
|
||||
<Button
|
||||
|
||||
<Button
|
||||
Text="{x:Static resources:AppResources.ActionSelectStation}"
|
||||
Command="{Binding OnSelectStationRequest}"/>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
<!--Contact operator of selected station-->
|
||||
<StackLayout
|
||||
IsVisible="{Binding IsOperatorInfoAvaliable}">
|
||||
|
||||
<!-- info about selected station -->
|
||||
<StackLayout
|
||||
Spacing="0">
|
||||
|
||||
<StackLayout
|
||||
Orientation="Horizontal"
|
||||
Spacing="0">
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MarkingLastSelectedStation}"/>
|
||||
<Label
|
||||
Text=": "/>
|
||||
</StackLayout>
|
||||
|
||||
<!-- Station -->
|
||||
<StackLayout
|
||||
Orientation="Horizontal"
|
||||
Spacing="0">
|
||||
<Label
|
||||
Text="{Binding SelectedStationName}"/>
|
||||
<Label
|
||||
Text=": "/>
|
||||
<Label
|
||||
FontAttributes="Bold"
|
||||
Text="{Binding SelectedStationId}"/>
|
||||
</StackLayout>
|
||||
|
||||
<!--- Operator -->
|
||||
<StackLayout
|
||||
Orientation="Horizontal"
|
||||
Spacing="0">
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MarkingOperator}"/>
|
||||
<Label
|
||||
Text=": "/>
|
||||
<Label
|
||||
FontAttributes="Bold"
|
||||
Text="{Binding ProviderNameText}"/>
|
||||
</StackLayout>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
<!--Buttons-->
|
||||
<StackLayout
|
||||
Spacing="5"
|
||||
Margin="0,10,0,0">
|
||||
|
||||
<!--- Phone to operator -->
|
||||
<Button
|
||||
x:Name="PhoneNumberButton"
|
||||
IsVisible="{Binding PhoneNumberText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
||||
Text="{Binding PhoneNumberText}"
|
||||
IsEnabled="{Binding IsDoPhoncallAvailable}"
|
||||
Command="{Binding OnPhoneRequest}"/>
|
||||
|
||||
<!--- Mail to operator -->
|
||||
<Button
|
||||
Style="{StaticResource SecondaryButton}"
|
||||
x:Name="MailAddressButton"
|
||||
IsVisible="{Binding MailAddressText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
||||
Text="{Binding MailAddressText}"
|
||||
IsEnabled="{Binding IsSendMailAvailable}"
|
||||
Command="{Binding OnMailToOperatorRequest}"/>
|
||||
|
||||
<!-- Change selected Station-->
|
||||
<Button
|
||||
Style="{StaticResource NoOutlineButton}"
|
||||
Text="{x:Static resources:AppResources.ActionSelectAnotherStation}"
|
||||
Command="{Binding OnSelectStationRequest}"/>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
<!-- Contact operator -->
|
||||
<StackLayout
|
||||
IsVisible="{Binding IsOperatorInfoAvaliable}">
|
||||
|
||||
<!--- Name of operator -->
|
||||
<Label
|
||||
IsVisible="{Binding IsOperatorInfoAvaliable}"
|
||||
HorizontalOptions="Center"
|
||||
FontAttributes="Bold"
|
||||
Text="{Binding ProviderNameText}"/>
|
||||
|
||||
<!--- Mail to operator -->
|
||||
<Label
|
||||
IsVisible="{Binding MailAddressText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
||||
FormattedText="{Binding MailAddressAndMotivationsText}"/>
|
||||
<Button
|
||||
x:Name="MailAddressButton"
|
||||
IsVisible="{Binding MailAddressText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
||||
Text="{Binding MailAddressText}"
|
||||
IsEnabled="{Binding IsSendMailAvailable}"
|
||||
Command="{Binding OnMailToOperatorRequest}"/>
|
||||
|
||||
<!--- Phone to operator -->
|
||||
<Label
|
||||
IsVisible="{Binding PhoneNumberText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
||||
FormattedText="{Binding PhoneContactText}"/>
|
||||
|
||||
<Button
|
||||
Style="{StaticResource SecondaryButton}"
|
||||
x:Name="PhoneNumberButton"
|
||||
IsVisible="{Binding PhoneNumberText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
||||
Text="{Binding PhoneNumberText}"
|
||||
IsEnabled="{Binding IsDoPhoncallAvailable}"
|
||||
Command="{Binding OnPhoneRequest}"/>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
</Frame>
|
||||
</StackLayout>
|
||||
|
||||
<Frame
|
||||
</Frame>
|
||||
|
||||
|
||||
<!--- Contact app-developer -->
|
||||
<StackLayout
|
||||
Grid.Row="1"
|
||||
Padding="10"
|
||||
Margin="0,5,0,5"
|
||||
HorizontalOptions="FillAndExpand"
|
||||
BackgroundColor="White">
|
||||
Margin="0,0,0,10"
|
||||
VerticalOptions="End"
|
||||
Spacing="0">
|
||||
|
||||
<!--- Contact app-developer -->
|
||||
<StackLayout
|
||||
Padding="10">
|
||||
<BoxView
|
||||
Margin="0,0,0,10"
|
||||
HeightRequest="1"
|
||||
WidthRequest="400"
|
||||
HorizontalOptions="Center"
|
||||
Color="DimGray"/>
|
||||
|
||||
<Label
|
||||
FormattedText="{Binding LikeTinkApp}"/>
|
||||
|
||||
<!--- Mail to app-developer -->
|
||||
<Button
|
||||
Style="{StaticResource SecondaryButton}"
|
||||
Text="{x:Static resources:AppResources.ActionContactMailAppReleated}"
|
||||
IsEnabled="{Binding IsSendMailAvailable}"
|
||||
Command="{Binding OnMailAppRelatedRequest}"/>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
</Frame>
|
||||
<Label
|
||||
TextType="Html"
|
||||
HorizontalOptions="Center"
|
||||
TextColor="{DynamicResource primary-back-title-color}"
|
||||
Text="{x:Static resources:AppResources.ActionSendDiagnosis}"
|
||||
IsEnabled="{Binding IsSendMailAvailable}">
|
||||
<Label.GestureRecognizers>
|
||||
<TapGestureRecognizer
|
||||
Command="{Binding OnMailAppRelatedRequest}"/>
|
||||
</Label.GestureRecognizers>
|
||||
</Label>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
</ScrollView>
|
||||
</Grid>
|
||||
|
||||
</ContentPage.Content>
|
||||
|
||||
|
||||
</ContentPage>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||
xmlns:conv="clr-namespace:TINK.View"
|
||||
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
|
||||
x:Class="TINK.View.Login.LoginPage"
|
||||
BackgroundColor="{DynamicResource background-color}">
|
||||
|
@ -14,118 +15,137 @@
|
|||
</Grid>
|
||||
</Shell.TitleView>
|
||||
|
||||
<StackLayout>
|
||||
<ContentPage.Resources>
|
||||
<conv:BoolInverterConverter x:Key="BoolInverterConverter"/>
|
||||
</ContentPage.Resources>
|
||||
|
||||
<Frame
|
||||
Padding="10"
|
||||
Margin="0,10,0,5"
|
||||
HorizontalOptions="FillAndExpand"
|
||||
BackgroundColor="White">
|
||||
<ContentPage.Content>
|
||||
|
||||
<!--Grid for content and Running process in same row-->
|
||||
<Grid>
|
||||
|
||||
<StackLayout
|
||||
x:Name="LoginPageView"
|
||||
Padding="10">
|
||||
Grid.Row="0">
|
||||
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MarkingLoginEmailAddressLabel}"
|
||||
Margin="0,0,0,-5">
|
||||
<Label.Triggers>
|
||||
<DataTrigger
|
||||
TargetType="Label"
|
||||
Binding="{Binding Source={x:Reference EMailEntry}, Path=Text, TargetNullValue=''}"
|
||||
Value="">
|
||||
<Setter
|
||||
Property="IsVisible"
|
||||
Value="False" />
|
||||
</DataTrigger>
|
||||
</Label.Triggers>
|
||||
</Label>
|
||||
<Frame
|
||||
Padding="10"
|
||||
Margin="0,10,0,5"
|
||||
HorizontalOptions="FillAndExpand"
|
||||
BackgroundColor="White">
|
||||
|
||||
<Entry
|
||||
Placeholder="{x:Static resources:AppResources.MarkingLoginEmailAddressPlaceholder}"
|
||||
Keyboard="Email"
|
||||
AutomationId="mail_address_text"
|
||||
x:Name="EMailEntry"
|
||||
Text="{Binding MailAddress}"
|
||||
IsEnabled="{Binding IsLoggedOut}"/>
|
||||
<StackLayout
|
||||
x:Name="LoginPageView"
|
||||
Padding="10">
|
||||
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
||||
Margin="0,0,0,-5">
|
||||
<Label.Triggers>
|
||||
<DataTrigger
|
||||
TargetType="Label"
|
||||
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
||||
Value="">
|
||||
<Setter
|
||||
Property="IsVisible"
|
||||
Value="False" />
|
||||
</DataTrigger>
|
||||
</Label.Triggers>
|
||||
</Label>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MarkingLoginEmailAddressLabel}"
|
||||
Margin="0,0,0,-5">
|
||||
<Label.Triggers>
|
||||
<DataTrigger
|
||||
TargetType="Label"
|
||||
Binding="{Binding Source={x:Reference EMailEntry}, Path=Text, TargetNullValue=''}"
|
||||
Value="">
|
||||
<Setter
|
||||
Property="IsVisible"
|
||||
Value="False" />
|
||||
</DataTrigger>
|
||||
</Label.Triggers>
|
||||
</Label>
|
||||
|
||||
<sharedGui:TogglePasswordEntry
|
||||
Placeholder="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
||||
Text="{Binding Password}"
|
||||
HidePassword="True"
|
||||
AutomationId="password_text"
|
||||
x:Name="PasswordEntry"
|
||||
IsEnabled="{Binding IsLoggedOut}"/>
|
||||
<Entry
|
||||
Placeholder="{x:Static resources:AppResources.MarkingLoginEmailAddressPlaceholder}"
|
||||
Keyboard="Email"
|
||||
AutomationId="mail_address_text"
|
||||
x:Name="EMailEntry"
|
||||
Text="{Binding MailAddress}"
|
||||
IsEnabled="{Binding IsLoggedOut}"/>
|
||||
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MarkingLoginPasswordLabel}"
|
||||
HorizontalOptions="End"
|
||||
Margin="0,-10,0,5"
|
||||
FontSize="Small">
|
||||
<Label.Triggers>
|
||||
<DataTrigger
|
||||
TargetType="Label"
|
||||
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
||||
Value="">
|
||||
<Setter
|
||||
Property="IsVisible"
|
||||
Value="False" />
|
||||
</DataTrigger>
|
||||
</Label.Triggers>
|
||||
</Label>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
||||
Margin="0,0,0,-5">
|
||||
<Label.Triggers>
|
||||
<DataTrigger
|
||||
TargetType="Label"
|
||||
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
||||
Value="">
|
||||
<Setter
|
||||
Property="IsVisible"
|
||||
Value="False" />
|
||||
</DataTrigger>
|
||||
</Label.Triggers>
|
||||
</Label>
|
||||
|
||||
<Button
|
||||
Text="{x:Static resources:AppResources.ActionLoginLogin}"
|
||||
AutomationId="login_button"
|
||||
Command="{Binding OnLoginRequest}"
|
||||
IsEnabled="{Binding IsLoginRequestAllowed}">
|
||||
</Button>
|
||||
<sharedGui:TogglePasswordEntry
|
||||
Placeholder="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
||||
Text="{Binding Password}"
|
||||
HidePassword="True"
|
||||
AutomationId="password_text"
|
||||
x:Name="PasswordEntry"
|
||||
IsEnabled="{Binding IsLoggedOut}"/>
|
||||
|
||||
<Button
|
||||
Style="{StaticResource SecondaryButton}"
|
||||
Text="{x:Static resources:AppResources.ActionLoginRegister}"
|
||||
AutomationId="register_button"
|
||||
Command="{Binding OnRegisterRequest}"
|
||||
IsVisible="{Binding IsWebViewElementsVisible}">
|
||||
</Button>
|
||||
<Label
|
||||
Text="{x:Static resources:AppResources.MarkingLoginPasswordLabel}"
|
||||
HorizontalOptions="End"
|
||||
Margin="0,-10,0,5"
|
||||
FontSize="Small">
|
||||
<Label.Triggers>
|
||||
<DataTrigger
|
||||
TargetType="Label"
|
||||
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
||||
Value="">
|
||||
<Setter
|
||||
Property="IsVisible"
|
||||
Value="False" />
|
||||
</DataTrigger>
|
||||
</Label.Triggers>
|
||||
</Label>
|
||||
|
||||
<Label
|
||||
IsVisible="{Binding IsRegisterTargetsInfoVisible}"
|
||||
FormattedText="{Binding RegisterTargetsInfo}">
|
||||
</Label>
|
||||
<Button
|
||||
Text="{x:Static resources:AppResources.ActionLoginLogin}"
|
||||
AutomationId="login_button"
|
||||
Command="{Binding OnLoginRequest}"
|
||||
IsEnabled="{Binding IsLoginRequestAllowed}">
|
||||
</Button>
|
||||
|
||||
<Label
|
||||
Margin="0,10,0,0"
|
||||
TextType="Html"
|
||||
AutomationId="password_forgotten_button"
|
||||
HorizontalOptions="Center"
|
||||
TextColor="{DynamicResource primary-back-title-color}"
|
||||
Text="{x:Static resources:AppResources.ActionLoginPasswordForgotten}">
|
||||
<Label.GestureRecognizers>
|
||||
<TapGestureRecognizer
|
||||
Command="{Binding OnPasswordForgottonRequest}"/>
|
||||
</Label.GestureRecognizers>
|
||||
</Label>
|
||||
<Button
|
||||
Style="{StaticResource SecondaryButton}"
|
||||
Text="{x:Static resources:AppResources.ActionLoginRegister}"
|
||||
AutomationId="register_button"
|
||||
Command="{Binding OnRegisterRequest}"
|
||||
IsVisible="{Binding IsWebViewElementsVisible}">
|
||||
</Button>
|
||||
|
||||
</StackLayout>
|
||||
<Label
|
||||
IsVisible="{Binding IsRegisterTargetsInfoVisible}"
|
||||
FormattedText="{Binding RegisterTargetsInfo}">
|
||||
</Label>
|
||||
|
||||
</Frame>
|
||||
<Label
|
||||
Margin="0,10,0,0"
|
||||
TextType="Html"
|
||||
AutomationId="password_forgotten_button"
|
||||
HorizontalOptions="Center"
|
||||
TextColor="{DynamicResource primary-back-title-color}"
|
||||
Text="{x:Static resources:AppResources.ActionLoginPasswordForgotten}">
|
||||
<Label.GestureRecognizers>
|
||||
<TapGestureRecognizer
|
||||
Command="{Binding OnPasswordForgottonRequest}"/>
|
||||
</Label.GestureRecognizers>
|
||||
</Label>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
</Frame>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
<!--While process is running-->
|
||||
<sharedGui:RunningProcessView
|
||||
IsVisible="{Binding IsIdle, Converter={StaticResource BoolInverterConverter}}"
|
||||
Grid.Row="0"/>
|
||||
|
||||
</Grid>
|
||||
|
||||
</ContentPage.Content>
|
||||
|
||||
</StackLayout>
|
||||
|
||||
</ContentPage>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
|
||||
using TINK.Model.Device;
|
||||
|
@ -18,18 +18,22 @@ namespace TINK.View.Login
|
|||
public partial class LoginPage : ContentPage, IViewService
|
||||
#endif
|
||||
{
|
||||
/// <summary> Reference to view model. </summary>
|
||||
LoginPageViewModel m_oViewModel = null;
|
||||
|
||||
/// <summary> Constructs a login page. </summary>
|
||||
public LoginPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
var l_oModel = App.ModelRoot;
|
||||
#if !BACKSTYLE
|
||||
var l_oViewModel = new LoginPageViewModel(
|
||||
m_oViewModel = new LoginPageViewModel(
|
||||
l_oModel,
|
||||
(url) => DependencyService.Get<IExternalBrowserService>().OpenUrl(url),
|
||||
this);
|
||||
|
||||
LoginPageView.BindingContext = l_oViewModel;
|
||||
BindingContext = m_oViewModel;
|
||||
#else
|
||||
LoginPageView.BindingContext = new LoginPageViewModel(l_oModel.ActiveUser, this, Navigation);
|
||||
#endif
|
||||
|
@ -120,4 +124,4 @@ namespace TINK.View.Login
|
|||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
|
||||
<!--Bike data-->
|
||||
<Grid
|
||||
RowDefinitions="Auto,Auto"
|
||||
RowDefinitions="Auto,1*"
|
||||
RowSpacing="0">
|
||||
|
||||
<!--Hint for Outdated Data.-->
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue