Version 3.0.369
|
@ -16,7 +16,7 @@
|
||||||
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
||||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||||
<TargetFrameworkVersion>v12.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v13.0</TargetFrameworkVersion>
|
||||||
<AndroidStoreUncompressedFileExtensions />
|
<AndroidStoreUncompressedFileExtensions />
|
||||||
<MandroidI18n />
|
<MandroidI18n />
|
||||||
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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.368" android:versionCode="368">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.LastenradBayern" android:versionName="3.0.369" android:versionCode="369">
|
||||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="31" />
|
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="33" />
|
||||||
<!-- Google Maps related permissions -->
|
<!-- Google Maps related permissions -->
|
||||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
<!-- Permission to receive remote notifications from Google Play Services -->
|
||||||
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
|
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
|
||||||
|
@ -9,14 +9,11 @@
|
||||||
<!-- Access Google based webservices -->
|
<!-- Access Google based webservices -->
|
||||||
<!-- External storage for caching. -->
|
<!-- External storage for caching. -->
|
||||||
<!-- My Location -->
|
<!-- My Location -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH"
|
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
|
||||||
android:maxSdkVersion="30" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
|
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
|
||||||
android:maxSdkVersion="30" />
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
|
|
||||||
android:usesPermissionFlags="neverForLocation" />
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||||
<uses-feature android:name="android.hardware.location" android:required="false" />
|
<uses-feature android:name="android.hardware.location" android:required="false" />
|
||||||
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
|
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
|
||||||
|
@ -38,4 +35,4 @@
|
||||||
</intent>
|
</intent>
|
||||||
</queries>
|
</queries>
|
||||||
<meta-data android:name="com.google.android.geo.API_KEY" android:value="000000000000000000000000000000000000000" />
|
<meta-data android:name="com.google.android.geo.API_KEY" android:value="000000000000000000000000000000000000000" />
|
||||||
</manifest>
|
</manifest>
|
|
@ -56,8 +56,8 @@
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>LastenradBayern</string>
|
<string>LastenradBayern</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>368</string>
|
<string>369</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.0.368</string>
|
<string>3.0.369</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -196,40 +196,18 @@
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_brake1_image.HZ17PY_678_382.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\Info\InfoTabbedPage.xaml">
|
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\Info\InfoTabbedPage.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\belt1_image.4XWCQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\belt2_image.X3F1PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\belt3_image.DYOXPY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\seat1_image.ZQ65PY_680_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\seat2_image.QQZCQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\seat3_image.NQ5FQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_brake2_image.1YBAQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_brake3_image.FJM2PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_stand1_image.4HJ5PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_stand2_image.RIX2PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_stand3_image.FDR7PY_679_382.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\FeesAndBikesPage.xaml">
|
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\FeesAndBikesPage.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\Tink2.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\Konrad.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\WhatsNew\WhatsNewPage.xaml">
|
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\WhatsNew\WhatsNewPage.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
|
|
|
@ -4,77 +4,171 @@
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
x:Class="TINK.View.Contact.ContactPage">
|
x:Class="TINK.View.Contact.ContactPage">
|
||||||
|
|
||||||
<Shell.TitleView>
|
<Shell.TitleView>
|
||||||
<Grid ColumnDefinitions="Auto, 1*">
|
<Grid ColumnDefinitions="Auto, 1*">
|
||||||
<Label Style="{StaticResource Label-Navbar}"
|
<Label Style="{StaticResource Label-Navbar}"
|
||||||
Text="{x:Static resources:AppResources.MarkingContactPageTitle}"/>
|
Text="{x:Static resources:AppResources.MarkingContactPageTitle}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Shell.TitleView>
|
</Shell.TitleView>
|
||||||
|
|
||||||
<ContentPage.Resources>
|
<ContentPage.Resources>
|
||||||
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="StringNotNullOrEmpty_Converter"/>
|
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="StringNotNullOrEmpty_Converter"/>
|
||||||
<conv:BoolInverterConverter x:Key="BoolInvert_Converter"/>
|
<conv:BoolInverterConverter x:Key="BoolInvert_Converter"/>
|
||||||
</ContentPage.Resources>
|
</ContentPage.Resources>
|
||||||
<ContentPage.Content>
|
|
||||||
<ScrollView>
|
<ContentPage.Content>
|
||||||
<Frame>
|
|
||||||
<StackLayout x:Name="ContactPageView">
|
<Grid
|
||||||
<Frame
|
x:Name="ContactPageView"
|
||||||
IsVisible="{Binding
|
RowSpacing="0"
|
||||||
Path=IsOperatorInfoAvaliable,
|
RowDefinitions="1*,Auto">
|
||||||
Converter={StaticResource BoolInvert_Converter}}">
|
|
||||||
<!-- Button to select station and explanation text -->
|
<!-- Contact Support -->
|
||||||
<StackLayout>
|
<Frame
|
||||||
<Label
|
Grid.Row="0"
|
||||||
TextType="Html"
|
Padding="10"
|
||||||
Text="{x:Static resources:AppResources.MarkingContactNoStationInfoAvailableNoButton}"/>
|
Margin="0,10,0,5"
|
||||||
<Button
|
HorizontalOptions="FillAndExpand"
|
||||||
Text="{x:Static resources:AppResources.ActionSelectStation}"
|
VerticalOptions="Start"
|
||||||
Command="{Binding OnSelectStationRequest}"/>
|
BackgroundColor="White"
|
||||||
</StackLayout>
|
HasShadow="False">
|
||||||
</Frame>
|
|
||||||
<Frame
|
<StackLayout
|
||||||
IsVisible="{Binding IsOperatorInfoAvaliable}">
|
Padding="20">
|
||||||
<!-- Operator info -->
|
|
||||||
<StackLayout>
|
<!--Title Customer Support-->
|
||||||
<Label
|
<Label
|
||||||
IsVisible="{Binding IsOperatorInfoAvaliable}"
|
Text="{x:Static resources:AppResources.MarkingContactCustomerSupportTitle}"
|
||||||
HorizontalOptions="Center"
|
FontAttributes="Bold"
|
||||||
FontAttributes="Bold"
|
FontSize="Large"
|
||||||
Text="{Binding ProviderNameText}"/>
|
/>
|
||||||
<!--- Mail to operator -->
|
|
||||||
<Label
|
<!--No station selected-->
|
||||||
IsVisible="{Binding MailAddressText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
<StackLayout
|
||||||
FormattedText="{Binding MailAddressAndMotivationsText}"/>
|
IsVisible="{Binding Path=IsOperatorInfoAvaliable, Converter={StaticResource BoolInvert_Converter}}">
|
||||||
<Button
|
|
||||||
x:Name="MailAddressButton"
|
<Label
|
||||||
IsVisible="{Binding MailAddressText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
TextType="Html"
|
||||||
Text="{Binding MailAddressText}"
|
Text="{x:Static resources:AppResources.MarkingContactNoStationInfoAvailableNoButton}"/>
|
||||||
IsEnabled="{Binding IsSendMailAvailable}"
|
|
||||||
Command="{Binding OnMailToOperatorRequest}"/>
|
<Button
|
||||||
<!--- Phone -->
|
Text="{x:Static resources:AppResources.ActionSelectStation}"
|
||||||
<Label
|
Command="{Binding OnSelectStationRequest}"/>
|
||||||
IsVisible="{Binding PhoneNumberText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
|
||||||
FormattedText="{Binding PhoneContactText}"/>
|
</StackLayout>
|
||||||
<Button
|
|
||||||
x:Name="PhoneNumberButton"
|
<!--Contact operator of selected station-->
|
||||||
IsVisible="{Binding PhoneNumberText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
<StackLayout
|
||||||
Text="{Binding PhoneNumberText}"
|
IsVisible="{Binding IsOperatorInfoAvaliable}">
|
||||||
IsEnabled="{Binding IsDoPhoncallAvailable}"
|
|
||||||
Command="{Binding OnPhoneRequest}"/>
|
<!-- 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>
|
</StackLayout>
|
||||||
</Frame>
|
|
||||||
<Frame>
|
<!--Buttons-->
|
||||||
<StackLayout>
|
<StackLayout
|
||||||
<Label FormattedText="{Binding LikeTinkApp}"/>
|
Spacing="5"
|
||||||
<!--- Mail to app- related support -->
|
Margin="0,10,0,0">
|
||||||
|
|
||||||
|
<!--- Phone to operator -->
|
||||||
<Button
|
<Button
|
||||||
Text="{x:Static resources:AppResources.ActionContactMailAppReleated}"
|
x:Name="PhoneNumberButton"
|
||||||
IsEnabled="{Binding IsSendMailAvailable}"
|
IsVisible="{Binding PhoneNumberText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
||||||
Command="{Binding OnMailAppRelatedRequest}"/>
|
Text="{Binding PhoneNumberText}"
|
||||||
|
IsEnabled="{Binding IsDoPhoncallAvailable}"
|
||||||
|
Command="{Binding OnPhoneRequest}"/>
|
||||||
|
|
||||||
|
<!--- Mail to operator -->
|
||||||
|
<Button
|
||||||
|
x:Name="MailAddressButton"
|
||||||
|
IsVisible="{Binding MailAddressText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
||||||
|
Text="{Binding MailAddressText}"
|
||||||
|
IsEnabled="{Binding IsSendMailAvailable}"
|
||||||
|
Command="{Binding OnMailToOperatorRequest}"/>
|
||||||
|
|
||||||
|
<!-- Change selected Station-->
|
||||||
|
<Button
|
||||||
|
Text="{x:Static resources:AppResources.ActionSelectAnotherStation}"
|
||||||
|
Command="{Binding OnSelectStationRequest}"/>
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</Frame>
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</Frame>
|
|
||||||
</ScrollView>
|
</StackLayout>
|
||||||
</ContentPage.Content>
|
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
|
||||||
|
<!--- Contact app-developer -->
|
||||||
|
<StackLayout
|
||||||
|
Grid.Row="1"
|
||||||
|
Padding="10"
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
VerticalOptions="End"
|
||||||
|
Spacing="0">
|
||||||
|
|
||||||
|
<BoxView
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="DimGray"/>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
</ContentPage.Content>
|
||||||
|
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
||||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||||
<TargetFrameworkVersion>v12.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v13.0</TargetFrameworkVersion>
|
||||||
<AndroidStoreUncompressedFileExtensions />
|
<AndroidStoreUncompressedFileExtensions />
|
||||||
<MandroidI18n />
|
<MandroidI18n />
|
||||||
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
||||||
|
@ -302,21 +302,6 @@
|
||||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
||||||
</AndroidResource>
|
</AndroidResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-hdpi\konrad_nobg.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-mdpi\konrad_nobg.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xhdpi\konrad_nobg.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xxhdpi\konrad_nobg.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xxxhdpi\konrad_nobg.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AndroidResource Include="Resources\drawable\konrad_nobg.png">
|
<AndroidResource Include="Resources\drawable\konrad_nobg.png">
|
||||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
||||||
|
@ -362,41 +347,11 @@
|
||||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
||||||
</AndroidResource>
|
</AndroidResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-hdpi\swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-mdpi\swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xhdpi\swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xxhdpi\swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xxxhdpi\swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AndroidResource Include="Resources\drawable\swk_theme.png">
|
<AndroidResource Include="Resources\drawable\swk_theme.png">
|
||||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
||||||
</AndroidResource>
|
</AndroidResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-hdpi\menu_swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-mdpi\menu_swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xhdpi\menu_swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xxhdpi\menu_swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<AndroidResource Include="Resources\drawable-xxxhdpi\menu_swk_theme.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AndroidResource Include="Resources\drawable\menu_swk_theme.png">
|
<AndroidResource Include="Resources\drawable\menu_swk_theme.png">
|
||||||
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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.368" android:versionCode="368">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.Meinkonrad" android:versionName="3.0.369" android:versionCode="369">
|
||||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="31" />
|
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="33" />
|
||||||
<!-- Google Maps related permissions -->
|
<!-- Google Maps related permissions -->
|
||||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
<!-- Permission to receive remote notifications from Google Play Services -->
|
||||||
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
|
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
|
||||||
|
@ -9,14 +9,11 @@
|
||||||
<!-- Access Google based webservices -->
|
<!-- Access Google based webservices -->
|
||||||
<!-- External storage for caching. -->
|
<!-- External storage for caching. -->
|
||||||
<!-- My Location -->
|
<!-- My Location -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH"
|
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
|
||||||
android:maxSdkVersion="30" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
|
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
|
||||||
android:maxSdkVersion="30" />
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
|
|
||||||
android:usesPermissionFlags="neverForLocation" />
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||||
<uses-feature android:name="android.hardware.location" android:required="false" />
|
<uses-feature android:name="android.hardware.location" android:required="false" />
|
||||||
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
|
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
|
||||||
|
@ -38,4 +35,4 @@
|
||||||
</intent>
|
</intent>
|
||||||
</queries>
|
</queries>
|
||||||
<meta-data android:name="com.google.android.geo.API_KEY" android:value="000000000000000000000000000000000000000" />
|
<meta-data android:name="com.google.android.geo.API_KEY" android:value="000000000000000000000000000000000000000" />
|
||||||
</manifest>
|
</manifest>
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 27 KiB |
|
@ -56,8 +56,8 @@
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>Mein konrad</string>
|
<string>Mein konrad</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>368</string>
|
<string>369</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.0.368</string>
|
<string>3.0.369</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -201,40 +201,18 @@
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_brake1_image.HZ17PY_678_382.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\Info\InfoTabbedPage.xaml">
|
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\Info\InfoTabbedPage.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\belt1_image.4XWCQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\belt2_image.X3F1PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\belt3_image.DYOXPY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\seat1_image.ZQ65PY_680_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\seat2_image.QQZCQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\seat3_image.NQ5FQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_brake2_image.1YBAQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_brake3_image.FJM2PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_stand1_image.4HJ5PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_stand2_image.RIX2PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_stand3_image.FDR7PY_679_382.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\FeesAndBikesPage.xaml">
|
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\FeesAndBikesPage.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\Tink2.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\Konrad.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\WhatsNew\WhatsNewPage.xaml">
|
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\WhatsNew\WhatsNewPage.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
|
xmlns:conv="clr-namespace:TINK.View"
|
||||||
|
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
|
||||||
x:Class="TINK.View.Account.AccountPage"
|
x:Class="TINK.View.Account.AccountPage"
|
||||||
BackgroundColor="{DynamicResource background-color}">
|
BackgroundColor="{DynamicResource background-color}">
|
||||||
|
|
||||||
|
@ -16,11 +18,19 @@
|
||||||
</Grid>
|
</Grid>
|
||||||
</Shell.TitleView>
|
</Shell.TitleView>
|
||||||
|
|
||||||
|
<ContentPage.Resources>
|
||||||
|
<conv:BoolInverterConverter x:Key="BoolInverterConverter"/>
|
||||||
|
</ContentPage.Resources>
|
||||||
|
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
|
|
||||||
<ScrollView>
|
<!--Grid for content and Running process in same row-->
|
||||||
|
<Grid>
|
||||||
|
|
||||||
<StackLayout>
|
<ScrollView
|
||||||
|
Grid.Row="0">
|
||||||
|
|
||||||
|
<StackLayout>
|
||||||
|
|
||||||
<Frame
|
<Frame
|
||||||
Padding="10"
|
Padding="10"
|
||||||
|
@ -57,6 +67,13 @@
|
||||||
|
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
|
<!--While process is running-->
|
||||||
|
<sharedGui:RunningProcessView
|
||||||
|
IsVisible="{Binding IsIdle, Converter={StaticResource BoolInverterConverter}}"
|
||||||
|
Grid.Row="0"/>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
</ContentPage.Content>
|
</ContentPage.Content>
|
||||||
|
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
|
|
||||||
<!--Bike data-->
|
<!--Bike data-->
|
||||||
<Grid
|
<Grid
|
||||||
RowDefinitions="Auto,Auto"
|
RowDefinitions="Auto,1*"
|
||||||
RowSpacing="0">
|
RowSpacing="0">
|
||||||
|
|
||||||
<!--Hint for Outdated Data.-->
|
<!--Hint for Outdated Data.-->
|
||||||
|
|
|
@ -21,103 +21,158 @@
|
||||||
|
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
|
|
||||||
<ScrollView>
|
<Grid
|
||||||
|
x:Name="ContactPageView"
|
||||||
|
RowSpacing="0"
|
||||||
|
RowDefinitions="1*,Auto">
|
||||||
|
|
||||||
<StackLayout
|
<!-- Contact Support -->
|
||||||
x:Name="ContactPageView"
|
<Frame
|
||||||
Spacing="0">
|
Grid.Row="0"
|
||||||
|
Padding="10"
|
||||||
|
Margin="0,10,0,5"
|
||||||
|
HorizontalOptions="FillAndExpand"
|
||||||
|
VerticalOptions="Start"
|
||||||
|
BackgroundColor="White"
|
||||||
|
HasShadow="False">
|
||||||
|
|
||||||
<Frame
|
<StackLayout
|
||||||
Padding="10"
|
Padding="20">
|
||||||
Margin="0,10,0,5"
|
|
||||||
HorizontalOptions="FillAndExpand"
|
|
||||||
BackgroundColor="White">
|
|
||||||
|
|
||||||
|
<!--Title Customer Support-->
|
||||||
|
<Label
|
||||||
|
Text="{x:Static resources:AppResources.MarkingContactCustomerSupportTitle}"
|
||||||
|
FontAttributes="Bold"
|
||||||
|
FontSize="Large"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!--No station selected-->
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Padding="10">
|
|
||||||
|
|
||||||
<!-- Button to select station and explanation text -->
|
|
||||||
<StackLayout
|
|
||||||
IsVisible="{Binding Path=IsOperatorInfoAvaliable, Converter={StaticResource BoolInvert_Converter}}">
|
IsVisible="{Binding Path=IsOperatorInfoAvaliable, Converter={StaticResource BoolInvert_Converter}}">
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
TextType="Html"
|
TextType="Html"
|
||||||
Text="{x:Static resources:AppResources.MarkingContactNoStationInfoAvailableNoButton}"/>
|
Text="{x:Static resources:AppResources.MarkingContactNoStationInfoAvailableNoButton}"/>
|
||||||
<Button
|
|
||||||
|
<Button
|
||||||
Text="{x:Static resources:AppResources.ActionSelectStation}"
|
Text="{x:Static resources:AppResources.ActionSelectStation}"
|
||||||
Command="{Binding OnSelectStationRequest}"/>
|
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>
|
</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>
|
</StackLayout>
|
||||||
|
|
||||||
</Frame>
|
</StackLayout>
|
||||||
|
|
||||||
<Frame
|
</Frame>
|
||||||
|
|
||||||
|
|
||||||
|
<!--- Contact app-developer -->
|
||||||
|
<StackLayout
|
||||||
|
Grid.Row="1"
|
||||||
Padding="10"
|
Padding="10"
|
||||||
Margin="0,5,0,5"
|
Margin="0,0,0,10"
|
||||||
HorizontalOptions="FillAndExpand"
|
VerticalOptions="End"
|
||||||
BackgroundColor="White">
|
Spacing="0">
|
||||||
|
|
||||||
<!--- Contact app-developer -->
|
<BoxView
|
||||||
<StackLayout
|
Margin="0,0,0,10"
|
||||||
Padding="10">
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="DimGray"/>
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
FormattedText="{Binding LikeTinkApp}"/>
|
TextType="Html"
|
||||||
|
HorizontalOptions="Center"
|
||||||
<!--- Mail to app-developer -->
|
TextColor="{DynamicResource primary-back-title-color}"
|
||||||
<Button
|
Text="{x:Static resources:AppResources.ActionSendDiagnosis}"
|
||||||
Style="{StaticResource SecondaryButton}"
|
IsEnabled="{Binding IsSendMailAvailable}">
|
||||||
Text="{x:Static resources:AppResources.ActionContactMailAppReleated}"
|
<Label.GestureRecognizers>
|
||||||
IsEnabled="{Binding IsSendMailAvailable}"
|
<TapGestureRecognizer
|
||||||
Command="{Binding OnMailAppRelatedRequest}"/>
|
Command="{Binding OnMailAppRelatedRequest}"/>
|
||||||
|
</Label.GestureRecognizers>
|
||||||
</StackLayout>
|
</Label>
|
||||||
|
|
||||||
</Frame>
|
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
</ScrollView>
|
</Grid>
|
||||||
|
|
||||||
</ContentPage.Content>
|
</ContentPage.Content>
|
||||||
|
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
<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:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
|
xmlns:conv="clr-namespace:TINK.View"
|
||||||
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
|
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
|
||||||
x:Class="TINK.View.Login.LoginPage"
|
x:Class="TINK.View.Login.LoginPage"
|
||||||
BackgroundColor="{DynamicResource background-color}">
|
BackgroundColor="{DynamicResource background-color}">
|
||||||
|
@ -14,118 +15,137 @@
|
||||||
</Grid>
|
</Grid>
|
||||||
</Shell.TitleView>
|
</Shell.TitleView>
|
||||||
|
|
||||||
<StackLayout>
|
<ContentPage.Resources>
|
||||||
|
<conv:BoolInverterConverter x:Key="BoolInverterConverter"/>
|
||||||
|
</ContentPage.Resources>
|
||||||
|
|
||||||
<Frame
|
<ContentPage.Content>
|
||||||
Padding="10"
|
|
||||||
Margin="0,10,0,5"
|
<!--Grid for content and Running process in same row-->
|
||||||
HorizontalOptions="FillAndExpand"
|
<Grid>
|
||||||
BackgroundColor="White">
|
|
||||||
|
|
||||||
<StackLayout
|
<StackLayout
|
||||||
x:Name="LoginPageView"
|
Grid.Row="0">
|
||||||
Padding="10">
|
|
||||||
|
|
||||||
<Label
|
<Frame
|
||||||
Text="{x:Static resources:AppResources.MarkingLoginEmailAddressLabel}"
|
Padding="10"
|
||||||
Margin="0,0,0,-5">
|
Margin="0,10,0,5"
|
||||||
<Label.Triggers>
|
HorizontalOptions="FillAndExpand"
|
||||||
<DataTrigger
|
BackgroundColor="White">
|
||||||
TargetType="Label"
|
|
||||||
Binding="{Binding Source={x:Reference EMailEntry}, Path=Text, TargetNullValue=''}"
|
|
||||||
Value="">
|
|
||||||
<Setter
|
|
||||||
Property="IsVisible"
|
|
||||||
Value="False" />
|
|
||||||
</DataTrigger>
|
|
||||||
</Label.Triggers>
|
|
||||||
</Label>
|
|
||||||
|
|
||||||
<Entry
|
<StackLayout
|
||||||
Placeholder="{x:Static resources:AppResources.MarkingLoginEmailAddressPlaceholder}"
|
x:Name="LoginPageView"
|
||||||
Keyboard="Email"
|
Padding="10">
|
||||||
AutomationId="mail_address_text"
|
|
||||||
x:Name="EMailEntry"
|
|
||||||
Text="{Binding MailAddress}"
|
|
||||||
IsEnabled="{Binding IsLoggedOut}"/>
|
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
Text="{x:Static resources:AppResources.MarkingLoginEmailAddressLabel}"
|
||||||
Margin="0,0,0,-5">
|
Margin="0,0,0,-5">
|
||||||
<Label.Triggers>
|
<Label.Triggers>
|
||||||
<DataTrigger
|
<DataTrigger
|
||||||
TargetType="Label"
|
TargetType="Label"
|
||||||
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
Binding="{Binding Source={x:Reference EMailEntry}, Path=Text, TargetNullValue=''}"
|
||||||
Value="">
|
Value="">
|
||||||
<Setter
|
<Setter
|
||||||
Property="IsVisible"
|
Property="IsVisible"
|
||||||
Value="False" />
|
Value="False" />
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
</Label.Triggers>
|
</Label.Triggers>
|
||||||
</Label>
|
</Label>
|
||||||
|
|
||||||
<sharedGui:TogglePasswordEntry
|
<Entry
|
||||||
Placeholder="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
Placeholder="{x:Static resources:AppResources.MarkingLoginEmailAddressPlaceholder}"
|
||||||
Text="{Binding Password}"
|
Keyboard="Email"
|
||||||
HidePassword="True"
|
AutomationId="mail_address_text"
|
||||||
AutomationId="password_text"
|
x:Name="EMailEntry"
|
||||||
x:Name="PasswordEntry"
|
Text="{Binding MailAddress}"
|
||||||
IsEnabled="{Binding IsLoggedOut}"/>
|
IsEnabled="{Binding IsLoggedOut}"/>
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MarkingLoginPasswordLabel}"
|
Text="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
||||||
HorizontalOptions="End"
|
Margin="0,0,0,-5">
|
||||||
Margin="0,-10,0,5"
|
<Label.Triggers>
|
||||||
FontSize="Small">
|
<DataTrigger
|
||||||
<Label.Triggers>
|
TargetType="Label"
|
||||||
<DataTrigger
|
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
||||||
TargetType="Label"
|
Value="">
|
||||||
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
<Setter
|
||||||
Value="">
|
Property="IsVisible"
|
||||||
<Setter
|
Value="False" />
|
||||||
Property="IsVisible"
|
</DataTrigger>
|
||||||
Value="False" />
|
</Label.Triggers>
|
||||||
</DataTrigger>
|
</Label>
|
||||||
</Label.Triggers>
|
|
||||||
</Label>
|
|
||||||
|
|
||||||
<Button
|
<sharedGui:TogglePasswordEntry
|
||||||
Text="{x:Static resources:AppResources.ActionLoginLogin}"
|
Placeholder="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
||||||
AutomationId="login_button"
|
Text="{Binding Password}"
|
||||||
Command="{Binding OnLoginRequest}"
|
HidePassword="True"
|
||||||
IsEnabled="{Binding IsLoginRequestAllowed}">
|
AutomationId="password_text"
|
||||||
</Button>
|
x:Name="PasswordEntry"
|
||||||
|
IsEnabled="{Binding IsLoggedOut}"/>
|
||||||
|
|
||||||
<Button
|
<Label
|
||||||
Style="{StaticResource SecondaryButton}"
|
Text="{x:Static resources:AppResources.MarkingLoginPasswordLabel}"
|
||||||
Text="{x:Static resources:AppResources.ActionLoginRegister}"
|
HorizontalOptions="End"
|
||||||
AutomationId="register_button"
|
Margin="0,-10,0,5"
|
||||||
Command="{Binding OnRegisterRequest}"
|
FontSize="Small">
|
||||||
IsVisible="{Binding IsWebViewElementsVisible}">
|
<Label.Triggers>
|
||||||
</Button>
|
<DataTrigger
|
||||||
|
TargetType="Label"
|
||||||
|
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
||||||
|
Value="">
|
||||||
|
<Setter
|
||||||
|
Property="IsVisible"
|
||||||
|
Value="False" />
|
||||||
|
</DataTrigger>
|
||||||
|
</Label.Triggers>
|
||||||
|
</Label>
|
||||||
|
|
||||||
<Label
|
<Button
|
||||||
IsVisible="{Binding IsRegisterTargetsInfoVisible}"
|
Text="{x:Static resources:AppResources.ActionLoginLogin}"
|
||||||
FormattedText="{Binding RegisterTargetsInfo}">
|
AutomationId="login_button"
|
||||||
</Label>
|
Command="{Binding OnLoginRequest}"
|
||||||
|
IsEnabled="{Binding IsLoginRequestAllowed}">
|
||||||
|
</Button>
|
||||||
|
|
||||||
<Label
|
<Button
|
||||||
Margin="0,10,0,0"
|
Style="{StaticResource SecondaryButton}"
|
||||||
TextType="Html"
|
Text="{x:Static resources:AppResources.ActionLoginRegister}"
|
||||||
AutomationId="password_forgotten_button"
|
AutomationId="register_button"
|
||||||
HorizontalOptions="Center"
|
Command="{Binding OnRegisterRequest}"
|
||||||
TextColor="{DynamicResource primary-back-title-color}"
|
IsVisible="{Binding IsWebViewElementsVisible}">
|
||||||
Text="{x:Static resources:AppResources.ActionLoginPasswordForgotten}">
|
</Button>
|
||||||
<Label.GestureRecognizers>
|
|
||||||
<TapGestureRecognizer
|
|
||||||
Command="{Binding OnPasswordForgottonRequest}"/>
|
|
||||||
</Label.GestureRecognizers>
|
|
||||||
</Label>
|
|
||||||
|
|
||||||
</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>
|
</ContentPage>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
|
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
|
||||||
using TINK.Model.Device;
|
using TINK.Model.Device;
|
||||||
|
@ -18,18 +18,22 @@ namespace TINK.View.Login
|
||||||
public partial class LoginPage : ContentPage, IViewService
|
public partial class LoginPage : ContentPage, IViewService
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
/// <summary> Reference to view model. </summary>
|
||||||
|
LoginPageViewModel m_oViewModel = null;
|
||||||
|
|
||||||
|
/// <summary> Constructs a login page. </summary>
|
||||||
public LoginPage()
|
public LoginPage()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
var l_oModel = App.ModelRoot;
|
var l_oModel = App.ModelRoot;
|
||||||
#if !BACKSTYLE
|
#if !BACKSTYLE
|
||||||
var l_oViewModel = new LoginPageViewModel(
|
m_oViewModel = new LoginPageViewModel(
|
||||||
l_oModel,
|
l_oModel,
|
||||||
(url) => DependencyService.Get<IExternalBrowserService>().OpenUrl(url),
|
(url) => DependencyService.Get<IExternalBrowserService>().OpenUrl(url),
|
||||||
this);
|
this);
|
||||||
|
|
||||||
LoginPageView.BindingContext = l_oViewModel;
|
BindingContext = m_oViewModel;
|
||||||
#else
|
#else
|
||||||
LoginPageView.BindingContext = new LoginPageViewModel(l_oModel.ActiveUser, this, Navigation);
|
LoginPageView.BindingContext = new LoginPageViewModel(l_oModel.ActiveUser, this, Navigation);
|
||||||
#endif
|
#endif
|
||||||
|
@ -120,4 +124,4 @@ namespace TINK.View.Login
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
<!--Bike data-->
|
<!--Bike data-->
|
||||||
<Grid
|
<Grid
|
||||||
RowDefinitions="Auto,Auto"
|
RowDefinitions="Auto,1*"
|
||||||
RowSpacing="0">
|
RowSpacing="0">
|
||||||
|
|
||||||
<!--Hint for Outdated Data.-->
|
<!--Hint for Outdated Data.-->
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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.368" android:versionCode="368">
|
<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">
|
||||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="31" />
|
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="33" />
|
||||||
<!-- Google Maps related permissions -->
|
<!-- Google Maps related permissions -->
|
||||||
<!-- Permission to receive remote notifications from Google Play Services -->
|
<!-- Permission to receive remote notifications from Google Play Services -->
|
||||||
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
|
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
|
||||||
|
@ -9,14 +9,11 @@
|
||||||
<!-- Access Google based webservices -->
|
<!-- Access Google based webservices -->
|
||||||
<!-- External storage for caching. -->
|
<!-- External storage for caching. -->
|
||||||
<!-- My Location -->
|
<!-- My Location -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH"
|
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
|
||||||
android:maxSdkVersion="30" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
|
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
|
||||||
android:maxSdkVersion="30" />
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
|
|
||||||
android:usesPermissionFlags="neverForLocation" />
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||||
<uses-feature android:name="android.hardware.location" android:required="false" />
|
<uses-feature android:name="android.hardware.location" android:required="false" />
|
||||||
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
|
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
||||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||||
<TargetFrameworkVersion>v12.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v13.0</TargetFrameworkVersion>
|
||||||
<AndroidStoreUncompressedFileExtensions />
|
<AndroidStoreUncompressedFileExtensions />
|
||||||
<MandroidI18n />
|
<MandroidI18n />
|
||||||
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
||||||
|
|
|
@ -56,8 +56,8 @@
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>sharee.bike</string>
|
<string>sharee.bike</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>368</string>
|
<string>369</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.0.368</string>
|
<string>3.0.369</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 18 KiB |
|
@ -271,9 +271,6 @@
|
||||||
<HintPath>..\..\..\..\.nuget\packages\xamarin.google.ios.maps\2.5.0\lib\Xamarin.iOS10\Google.Maps.dll</HintPath>
|
<HintPath>..\..\..\..\.nuget\packages\xamarin.google.ios.maps\2.5.0\lib\Xamarin.iOS10\Google.Maps.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<BundleResource Include="Resources\tink2.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\LockItBLE\LockItBLE.csproj">
|
<ProjectReference Include="..\..\LockItBLE\LockItBLE.csproj">
|
||||||
<Project>{bde9ce26-15cf-47da-a4f6-b6956d02d0fc}</Project>
|
<Project>{bde9ce26-15cf-47da-a4f6-b6956d02d0fc}</Project>
|
||||||
|
|
Before Width: | Height: | Size: 582 B |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 344 KiB |
Before Width: | Height: | Size: 451 KiB |
Before Width: | Height: | Size: 1,004 KiB |
Before Width: | Height: | Size: 356 KiB |
Before Width: | Height: | Size: 804 KiB |
Before Width: | Height: | Size: 283 KiB |
Before Width: | Height: | Size: 399 KiB |
Before Width: | Height: | Size: 500 KiB |
Before Width: | Height: | Size: 886 KiB |
Before Width: | Height: | Size: 322 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 457 KiB |
Before Width: | Height: | Size: 396 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 388 KiB |
Before Width: | Height: | Size: 997 KiB |
Before Width: | Height: | Size: 352 KiB |
Before Width: | Height: | Size: 488 KiB |
Before Width: | Height: | Size: 622 KiB |
Before Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 600 KiB |
Before Width: | Height: | Size: 965 KiB |
Before Width: | Height: | Size: 338 KiB |
BIN
TINK/TINK/Resources/Fonts/Roboto-Bold.ttf
Normal file
BIN
TINK/TINK/Resources/Fonts/Roboto-Italic.ttf
Normal file
|
@ -196,40 +196,18 @@
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_brake1_image.HZ17PY_678_382.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\Info\InfoTabbedPage.xaml">
|
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\Info\InfoTabbedPage.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\belt1_image.4XWCQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\belt2_image.X3F1PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\belt3_image.DYOXPY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\seat1_image.ZQ65PY_680_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\seat2_image.QQZCQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\seat3_image.NQ5FQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_brake2_image.1YBAQY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_brake3_image.FJM2PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_stand1_image.4HJ5PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_stand2_image.RIX2PY_679_382.png" />
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\trike_stand3_image.FDR7PY_679_382.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\FeesAndBikesPage.xaml">
|
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\FeesAndBikesPage.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\Tink2.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Images\Konrad.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\WhatsNew\WhatsNewPage.xaml">
|
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\WhatsNew\WhatsNewPage.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
|
@ -340,4 +318,8 @@
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="$(MSBuildThisFileDirectory)Resources\Fonts\Roboto-Bold.ttf" />
|
||||||
|
<Content Include="$(MSBuildThisFileDirectory)Resources\Fonts\Roboto-Italic.ttf" />
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -3,7 +3,9 @@
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
|
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
|
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
|
||||||
|
xmlns:conv="clr-namespace:TINK.View"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
x:Class="TINK.View.Account.AccountPage"
|
x:Class="TINK.View.Account.AccountPage"
|
||||||
BackgroundColor="{DynamicResource background-color}">
|
BackgroundColor="{DynamicResource background-color}">
|
||||||
|
@ -14,39 +16,49 @@
|
||||||
Text="{x:Static resources:AppResources.MarkingAccount}"/>
|
Text="{x:Static resources:AppResources.MarkingAccount}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Shell.TitleView>
|
</Shell.TitleView>
|
||||||
|
|
||||||
|
<ContentPage.Resources>
|
||||||
|
<conv:BoolInverterConverter x:Key="BoolInverterConverter"/>
|
||||||
|
</ContentPage.Resources>
|
||||||
|
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
|
|
||||||
<ScrollView>
|
<!--Grid for content and Running process in same row-->
|
||||||
|
<Grid>
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
Grid.Row="0">
|
||||||
|
|
||||||
<StackLayout>
|
<StackLayout>
|
||||||
|
|
||||||
<Frame
|
<Frame
|
||||||
Padding="10"
|
Padding="10"
|
||||||
Margin="0,10,0,5"
|
Margin="0,10,0,5"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
BackgroundColor="White">
|
BackgroundColor="White">
|
||||||
|
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Padding="10">
|
Padding="10">
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding LoggedInInfo}" />
|
Text="{Binding LoggedInInfo}" />
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
IsVisible="{Binding IsBookingStateInfoVisible}"
|
IsVisible="{Binding IsBookingStateInfoVisible}"
|
||||||
Text="{Binding BookingStateInfo}" />
|
Text="{Binding BookingStateInfo}" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
Text="{x:Static resources:AppResources.MessageAccountPageManagePersonalData}"
|
Text="{x:Static resources:AppResources.MessageAccountPageManagePersonalData}"
|
||||||
Command="{Binding OnManageAccount}"
|
Command="{Binding OnManageAccount}"
|
||||||
IsEnabled="{Binding IsLogoutPossible}"/>
|
IsEnabled="{Binding IsLogoutPossible}">
|
||||||
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
Style="{StaticResource SecondaryButton}"
|
Style="{StaticResource SecondaryButton}"
|
||||||
Text="{x:Static resources:AppResources.MessageAccountPageManageLogout}"
|
Text="{x:Static resources:AppResources.MessageAccountPageManageLogout}"
|
||||||
Command="{Binding OnLogoutRequest}"
|
Command="{Binding OnLogoutRequest}"
|
||||||
IsEnabled="{Binding IsLogoutPossible}"/>
|
IsEnabled="{Binding IsLogoutPossible}">
|
||||||
|
</Button>
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
|
@ -56,6 +68,13 @@
|
||||||
|
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
|
<!--While process is running-->
|
||||||
|
<sharedGui:RunningProcessView
|
||||||
|
IsVisible="{Binding IsIdle, Converter={StaticResource BoolInverterConverter}}"
|
||||||
|
Grid.Row="0"/>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
</ContentPage.Content>
|
</ContentPage.Content>
|
||||||
|
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
|
|
||||||
<!--Bike data-->
|
<!--Bike data-->
|
||||||
<Grid
|
<Grid
|
||||||
RowDefinitions="Auto,Auto"
|
RowDefinitions="Auto,1*"
|
||||||
RowSpacing="0">
|
RowSpacing="0">
|
||||||
|
|
||||||
<!--Hint for Outdated Data.-->
|
<!--Hint for Outdated Data.-->
|
||||||
|
|
|
@ -17,106 +17,161 @@
|
||||||
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="StringNotNullOrEmpty_Converter"/>
|
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="StringNotNullOrEmpty_Converter"/>
|
||||||
<conv:BoolInverterConverter x:Key="BoolInvert_Converter"/>
|
<conv:BoolInverterConverter x:Key="BoolInvert_Converter"/>
|
||||||
</ContentPage.Resources>
|
</ContentPage.Resources>
|
||||||
|
|
||||||
<ContentPage.Content>
|
|
||||||
|
|
||||||
<ScrollView>
|
<ContentPage.Content>
|
||||||
|
|
||||||
<StackLayout
|
<Grid
|
||||||
x:Name="ContactPageView"
|
x:Name="ContactPageView"
|
||||||
Spacing="0">
|
RowSpacing="0"
|
||||||
|
RowDefinitions="1*,Auto">
|
||||||
|
|
||||||
|
<!-- Contact Support -->
|
||||||
<Frame
|
<Frame
|
||||||
Padding="10"
|
Grid.Row="0"
|
||||||
Margin="0,10,0,5"
|
Padding="10"
|
||||||
HorizontalOptions="FillAndExpand"
|
Margin="0,10,0,5"
|
||||||
BackgroundColor="White">
|
HorizontalOptions="FillAndExpand"
|
||||||
|
VerticalOptions="Start"
|
||||||
|
BackgroundColor="White"
|
||||||
|
HasShadow="False">
|
||||||
|
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Padding="10">
|
Padding="20">
|
||||||
|
|
||||||
<!-- Button to select station and explanation text -->
|
<!--Title Customer Support-->
|
||||||
|
<Label
|
||||||
|
Text="{x:Static resources:AppResources.MarkingContactCustomerSupportTitle}"
|
||||||
|
FontAttributes="Bold"
|
||||||
|
FontSize="Large"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!--No station selected-->
|
||||||
<StackLayout
|
<StackLayout
|
||||||
IsVisible="{Binding Path=IsOperatorInfoAvaliable, Converter={StaticResource BoolInvert_Converter}}">
|
IsVisible="{Binding Path=IsOperatorInfoAvaliable, Converter={StaticResource BoolInvert_Converter}}">
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
TextType="Html"
|
TextType="Html"
|
||||||
Text="{x:Static resources:AppResources.MarkingContactNoStationInfoAvailableNoButton}"/>
|
Text="{x:Static resources:AppResources.MarkingContactNoStationInfoAvailableNoButton}"/>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
Text="{x:Static resources:AppResources.ActionSelectStation}"
|
Text="{x:Static resources:AppResources.ActionSelectStation}"
|
||||||
Command="{Binding OnSelectStationRequest}"/>
|
Command="{Binding OnSelectStationRequest}"/>
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
<!-- Contact operator -->
|
<!--Contact operator of selected station-->
|
||||||
<StackLayout
|
<StackLayout
|
||||||
IsVisible="{Binding IsOperatorInfoAvaliable}">
|
IsVisible="{Binding IsOperatorInfoAvaliable}">
|
||||||
|
|
||||||
<!--- Name of operator -->
|
<!-- info about selected station -->
|
||||||
<Label
|
<StackLayout
|
||||||
IsVisible="{Binding IsOperatorInfoAvaliable}"
|
Spacing="0">
|
||||||
HorizontalOptions="Center"
|
|
||||||
FontAttributes="Bold"
|
|
||||||
Text="{Binding ProviderNameText}"/>
|
|
||||||
|
|
||||||
<!--- Mail to operator -->
|
<StackLayout
|
||||||
<Label
|
Orientation="Horizontal"
|
||||||
IsVisible="{Binding MailAddressText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
Spacing="0">
|
||||||
FormattedText="{Binding MailAddressAndMotivationsText}"/>
|
<Label
|
||||||
<Button
|
Text="{x:Static resources:AppResources.MarkingLastSelectedStation}"/>
|
||||||
x:Name="MailAddressButton"
|
<Label
|
||||||
IsVisible="{Binding MailAddressText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
Text=": "/>
|
||||||
Text="{Binding MailAddressText}"
|
</StackLayout>
|
||||||
IsEnabled="{Binding IsSendMailAvailable}"
|
|
||||||
Command="{Binding OnMailToOperatorRequest}"/>
|
|
||||||
|
|
||||||
<!--- Phone to operator -->
|
<!-- Station -->
|
||||||
<Label
|
<StackLayout
|
||||||
IsVisible="{Binding PhoneNumberText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
Orientation="Horizontal"
|
||||||
FormattedText="{Binding PhoneContactText}"/>
|
Spacing="0">
|
||||||
|
<Label
|
||||||
|
Text="{Binding SelectedStationName}"/>
|
||||||
|
<Label
|
||||||
|
Text=": "/>
|
||||||
|
<Label
|
||||||
|
FontAttributes="Bold"
|
||||||
|
Text="{Binding SelectedStationId}"/>
|
||||||
|
</StackLayout>
|
||||||
|
|
||||||
<Button
|
<!--- 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}"
|
Style="{StaticResource SecondaryButton}"
|
||||||
x:Name="PhoneNumberButton"
|
x:Name="MailAddressButton"
|
||||||
IsVisible="{Binding PhoneNumberText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
IsVisible="{Binding MailAddressText, Converter={StaticResource StringNotNullOrEmpty_Converter}}"
|
||||||
Text="{Binding PhoneNumberText}"
|
Text="{Binding MailAddressText}"
|
||||||
IsEnabled="{Binding IsDoPhoncallAvailable}"
|
IsEnabled="{Binding IsSendMailAvailable}"
|
||||||
Command="{Binding OnPhoneRequest}"/>
|
Command="{Binding OnMailToOperatorRequest}"/>
|
||||||
|
|
||||||
|
<!-- Change selected Station-->
|
||||||
|
<Button
|
||||||
|
Style="{StaticResource NoOutlineButton}"
|
||||||
|
Text="{x:Static resources:AppResources.ActionSelectAnotherStation}"
|
||||||
|
Command="{Binding OnSelectStationRequest}"/>
|
||||||
|
|
||||||
|
</StackLayout>
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
</Frame>
|
</Frame>
|
||||||
|
|
||||||
<Frame
|
|
||||||
|
<!--- Contact app-developer -->
|
||||||
|
<StackLayout
|
||||||
|
Grid.Row="1"
|
||||||
Padding="10"
|
Padding="10"
|
||||||
Margin="0,5,0,5"
|
Margin="0,0,0,10"
|
||||||
HorizontalOptions="FillAndExpand"
|
VerticalOptions="End"
|
||||||
BackgroundColor="White">
|
Spacing="0">
|
||||||
|
|
||||||
<!--- Contact app-developer -->
|
<BoxView
|
||||||
<StackLayout
|
Margin="0,0,0,10"
|
||||||
Padding="10">
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="DimGray"/>
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
FormattedText="{Binding LikeTinkApp}"/>
|
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>
|
||||||
|
|
||||||
<!--- Mail to app-developer -->
|
</StackLayout>
|
||||||
<Button
|
|
||||||
Style="{StaticResource SecondaryButton}"
|
|
||||||
Text="{x:Static resources:AppResources.ActionContactMailAppReleated}"
|
|
||||||
IsEnabled="{Binding IsSendMailAvailable}"
|
|
||||||
Command="{Binding OnMailAppRelatedRequest}"/>
|
|
||||||
|
|
||||||
</StackLayout>
|
</Grid>
|
||||||
|
|
||||||
</Frame>
|
|
||||||
|
|
||||||
</StackLayout>
|
</ContentPage.Content>
|
||||||
|
|
||||||
</ScrollView>
|
|
||||||
|
|
||||||
</ContentPage.Content>
|
|
||||||
|
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
|
@ -1,130 +1,150 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?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:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
|
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
|
||||||
x:Class="TINK.View.Login.LoginPage"
|
xmlns:conv="clr-namespace:TINK.View"
|
||||||
BackgroundColor="{DynamicResource background-color}">
|
x:Class="TINK.View.Login.LoginPage"
|
||||||
|
BackgroundColor="{DynamicResource background-color}">
|
||||||
<Shell.TitleView>
|
|
||||||
|
<Shell.TitleView>
|
||||||
<Grid ColumnDefinitions="Auto, 1*">
|
<Grid ColumnDefinitions="Auto, 1*">
|
||||||
<Label Style="{StaticResource Label-Navbar}"
|
<Label Style="{StaticResource Label-Navbar}"
|
||||||
Text="{x:Static resources:AppResources.MarkingLogin}"/>
|
Text="{x:Static resources:AppResources.MarkingLogin}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Shell.TitleView>
|
</Shell.TitleView>
|
||||||
|
|
||||||
|
<ContentPage.Resources>
|
||||||
|
<conv:BoolInverterConverter x:Key="BoolInverterConverter"/>
|
||||||
|
</ContentPage.Resources>
|
||||||
|
|
||||||
|
<ContentPage.Content>
|
||||||
|
|
||||||
|
<!--Grid for content and Running process in same row-->
|
||||||
|
<Grid>
|
||||||
|
|
||||||
<StackLayout>
|
<StackLayout
|
||||||
|
Grid.Row="0">
|
||||||
|
|
||||||
<Frame
|
<Frame
|
||||||
Padding="10"
|
Padding="10"
|
||||||
Margin="0,10,0,5"
|
Margin="0,10,0,5"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
BackgroundColor="White">
|
BackgroundColor="White">
|
||||||
|
|
||||||
<StackLayout
|
<StackLayout
|
||||||
x:Name="LoginPageView"
|
x:Name="LoginPageView"
|
||||||
Padding="10">
|
Padding="10">
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MarkingLoginEmailAddressLabel}"
|
Text="{x:Static resources:AppResources.MarkingLoginEmailAddressLabel}"
|
||||||
Margin="0,0,0,-5">
|
Margin="0,0,0,-5">
|
||||||
<Label.Triggers>
|
<Label.Triggers>
|
||||||
<DataTrigger
|
<DataTrigger
|
||||||
TargetType="Label"
|
TargetType="Label"
|
||||||
Binding="{Binding Source={x:Reference EMailEntry}, Path=Text, TargetNullValue=''}"
|
Binding="{Binding Source={x:Reference EMailEntry}, Path=Text, TargetNullValue=''}"
|
||||||
Value="">
|
Value="">
|
||||||
<Setter
|
<Setter
|
||||||
Property="IsVisible"
|
Property="IsVisible"
|
||||||
Value="False" />
|
Value="False" />
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
</Label.Triggers>
|
</Label.Triggers>
|
||||||
</Label>
|
</Label>
|
||||||
|
|
||||||
<Entry
|
<Entry
|
||||||
Placeholder="{x:Static resources:AppResources.MarkingLoginEmailAddressPlaceholder}"
|
Placeholder="{x:Static resources:AppResources.MarkingLoginEmailAddressPlaceholder}"
|
||||||
Keyboard="Email"
|
Keyboard="Email"
|
||||||
AutomationId="mail_address_text"
|
AutomationId="mail_address_text"
|
||||||
x:Name="EMailEntry"
|
x:Name="EMailEntry"
|
||||||
Text="{Binding MailAddress}"
|
Text="{Binding MailAddress}"
|
||||||
IsEnabled="{Binding IsLoggedOut}"/>
|
IsEnabled="{Binding IsLoggedOut}"/>
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
Text="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
||||||
Margin="0,0,0,-5">
|
Margin="0,0,0,-5">
|
||||||
<Label.Triggers>
|
<Label.Triggers>
|
||||||
<DataTrigger
|
<DataTrigger
|
||||||
TargetType="Label"
|
TargetType="Label"
|
||||||
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
||||||
Value="">
|
Value="">
|
||||||
<Setter
|
<Setter
|
||||||
Property="IsVisible"
|
Property="IsVisible"
|
||||||
Value="False" />
|
Value="False" />
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
</Label.Triggers>
|
</Label.Triggers>
|
||||||
</Label>
|
</Label>
|
||||||
|
|
||||||
<sharedGui:TogglePasswordEntry
|
<sharedGui:TogglePasswordEntry
|
||||||
Placeholder="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
Placeholder="{x:Static resources:AppResources.MarkingLoginPasswordPlaceholder}"
|
||||||
Text="{Binding Password}"
|
Text="{Binding Password}"
|
||||||
HidePassword="True"
|
HidePassword="True"
|
||||||
AutomationId="password_text"
|
AutomationId="password_text"
|
||||||
x:Name="PasswordEntry"
|
x:Name="PasswordEntry"
|
||||||
IsEnabled="{Binding IsLoggedOut}"/>
|
IsEnabled="{Binding IsLoggedOut}"/>
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
Text="{x:Static resources:AppResources.MarkingLoginPasswordLabel}"
|
Text="{x:Static resources:AppResources.MarkingLoginPasswordLabel}"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
Margin="0,-10,0,5"
|
Margin="0,-10,0,5"
|
||||||
FontSize="Small">
|
FontSize="Small">
|
||||||
<Label.Triggers>
|
<Label.Triggers>
|
||||||
<DataTrigger
|
<DataTrigger
|
||||||
TargetType="Label"
|
TargetType="Label"
|
||||||
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
Binding="{Binding Source={x:Reference PasswordEntry}, Path=Text, TargetNullValue=''}"
|
||||||
Value="">
|
Value="">
|
||||||
<Setter
|
<Setter
|
||||||
Property="IsVisible"
|
Property="IsVisible"
|
||||||
Value="False" />
|
Value="False" />
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
</Label.Triggers>
|
</Label.Triggers>
|
||||||
</Label>
|
</Label>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
Text="{x:Static resources:AppResources.ActionLoginLogin}"
|
Text="{x:Static resources:AppResources.ActionLoginLogin}"
|
||||||
AutomationId="login_button"
|
AutomationId="login_button"
|
||||||
Command="{Binding OnLoginRequest}"
|
Command="{Binding OnLoginRequest}"
|
||||||
IsEnabled="{Binding IsLoginRequestAllowed}">
|
IsEnabled="{Binding IsLoginRequestAllowed}">
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
Style="{StaticResource SecondaryButton}"
|
Style="{StaticResource SecondaryButton}"
|
||||||
Text="{x:Static resources:AppResources.ActionLoginRegister}"
|
Text="{x:Static resources:AppResources.ActionLoginRegister}"
|
||||||
AutomationId="register_button"
|
AutomationId="register_button"
|
||||||
Command="{Binding OnRegisterRequest}"
|
Command="{Binding OnRegisterRequest}"
|
||||||
IsVisible="{Binding IsWebViewElementsVisible}">
|
IsVisible="{Binding IsWebViewElementsVisible}">
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
IsVisible="{Binding IsRegisterTargetsInfoVisible}"
|
IsVisible="{Binding IsRegisterTargetsInfoVisible}"
|
||||||
FormattedText="{Binding RegisterTargetsInfo}">
|
FormattedText="{Binding RegisterTargetsInfo}">
|
||||||
</Label>
|
</Label>
|
||||||
|
|
||||||
<Label
|
<Label
|
||||||
Margin="0,10,0,0"
|
Margin="0,10,0,0"
|
||||||
TextType="Html"
|
TextType="Html"
|
||||||
AutomationId="password_forgotten_button"
|
AutomationId="password_forgotten_button"
|
||||||
HorizontalOptions="Center"
|
HorizontalOptions="Center"
|
||||||
TextColor="{DynamicResource primary-back-title-color}"
|
TextColor="{DynamicResource primary-back-title-color}"
|
||||||
Text="{x:Static resources:AppResources.ActionLoginPasswordForgotten}">
|
Text="{x:Static resources:AppResources.ActionLoginPasswordForgotten}">
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
<TapGestureRecognizer
|
<TapGestureRecognizer
|
||||||
Command="{Binding OnPasswordForgottonRequest}"/>
|
Command="{Binding OnPasswordForgottonRequest}"/>
|
||||||
</Label.GestureRecognizers>
|
</Label.GestureRecognizers>
|
||||||
</Label>
|
</Label>
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
</Frame>
|
</Frame>
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
|
<!--While process is running-->
|
||||||
|
<sharedGui:RunningProcessView
|
||||||
|
IsVisible="{Binding IsIdle, Converter={StaticResource BoolInverterConverter}}"
|
||||||
|
Grid.Row="0"/>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
</ContentPage.Content>
|
||||||
|
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
|
|
|
@ -18,18 +18,22 @@ namespace TINK.View.Login
|
||||||
public partial class LoginPage : ContentPage, IViewService
|
public partial class LoginPage : ContentPage, IViewService
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
/// <summary> Reference to view model. </summary>
|
||||||
|
LoginPageViewModel m_oViewModel = null;
|
||||||
|
|
||||||
|
/// <summary> Constructs a login page. </summary>
|
||||||
public LoginPage()
|
public LoginPage()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
var l_oModel = App.ModelRoot;
|
var l_oModel = App.ModelRoot;
|
||||||
#if !BACKSTYLE
|
#if !BACKSTYLE
|
||||||
var l_oViewModel = new LoginPageViewModel(
|
m_oViewModel = new LoginPageViewModel(
|
||||||
l_oModel,
|
l_oModel,
|
||||||
(url) => DependencyService.Get<IExternalBrowserService>().OpenUrl(url),
|
(url) => DependencyService.Get<IExternalBrowserService>().OpenUrl(url),
|
||||||
this);
|
this);
|
||||||
|
|
||||||
LoginPageView.BindingContext = l_oViewModel;
|
BindingContext = m_oViewModel;
|
||||||
#else
|
#else
|
||||||
LoginPageView.BindingContext = new LoginPageViewModel(l_oModel.ActiveUser, this, Navigation);
|
LoginPageView.BindingContext = new LoginPageViewModel(l_oModel.ActiveUser, this, Navigation);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
|
|
||||||
<!--Bike data-->
|
<!--Bike data-->
|
||||||
<Grid
|
<Grid
|
||||||
RowDefinitions="Auto,Auto"
|
RowDefinitions="Auto,1*"
|
||||||
RowSpacing="0">
|
RowSpacing="0">
|
||||||
|
|
||||||
<!--Hint for Outdated Data.-->
|
<!--Hint for Outdated Data.-->
|
||||||
|
|
|
@ -702,6 +702,11 @@ namespace TINK.Model
|
||||||
new Version(3, 0, 368),
|
new Version(3, 0, 368),
|
||||||
string.Format("{0} <br /> {1}", AppResources.ChangeLog_PackageUpdates, AppResources.ChangeLog_MinorBugFixes),
|
string.Format("{0} <br /> {1}", AppResources.ChangeLog_PackageUpdates, AppResources.ChangeLog_MinorBugFixes),
|
||||||
new List<AppFlavor> { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
|
new List<AppFlavor> { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
new Version(3, 0, 369),
|
||||||
|
AppResources.ChangeLog_3_0_369_MK_SB,
|
||||||
|
new List<AppFlavor> { AppFlavor.MeinKonrad, AppFlavor.ShareeBike }
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
102
TINKLib/MultilingualResources/AppResources.Designer.cs
generated
|
@ -1,4 +1,4 @@
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:4.0.30319.42000
|
// Runtime Version:4.0.30319.42000
|
||||||
|
@ -96,24 +96,6 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Sent e-mail.
|
|
||||||
/// </summary>
|
|
||||||
public static string ActionContactMailAppReleated {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("ActionContactMailAppReleated", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Submit rating.
|
|
||||||
/// </summary>
|
|
||||||
public static string ActionContactRate {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("ActionContactRate", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Give feedback.
|
/// Looks up a localized string similar to Give feedback.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -204,6 +186,15 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Select another station.
|
||||||
|
/// </summary>
|
||||||
|
public static string ActionSelectAnotherStation {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ActionSelectAnotherStation", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Select station.
|
/// Looks up a localized string similar to Select station.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -213,6 +204,15 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to <u>Transfer diagnostic file</u>.
|
||||||
|
/// </summary>
|
||||||
|
public static string ActionSendDiagnosis {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ActionSendDiagnosis", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Auth. expired.
|
/// Looks up a localized string similar to Auth. expired.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -811,6 +811,17 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to We have re-designed the contact page:
|
||||||
|
/// <ul><li>Please contact the customer support immediately in case of problems with the bike rental!
|
||||||
|
///</li><li>To diagnose a problem, you can send us your app usage data via "Transfer diagnostic file". Without your active sending we do not record any of your data!</li></ul>.
|
||||||
|
/// </summary>
|
||||||
|
public static string ChangeLog_3_0_369_MK_SB {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ChangeLog_3_0_369_MK_SB", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to - We have fixed a few minor bugs. Enjoy the ride!.
|
/// Looks up a localized string similar to - We have fixed a few minor bugs. Enjoy the ride!.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -2023,7 +2034,16 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Contact operator?.
|
/// Looks up a localized string similar to Customer support.
|
||||||
|
/// </summary>
|
||||||
|
public static string MarkingContactCustomerSupportTitle {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MarkingContactCustomerSupportTitle", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to First select the station whose operator you want to contact..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string MarkingContactNoStationInfoAvailableNoButton {
|
public static string MarkingContactNoStationInfoAvailableNoButton {
|
||||||
get {
|
get {
|
||||||
|
@ -2166,6 +2186,15 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Last selected station.
|
||||||
|
/// </summary>
|
||||||
|
public static string MarkingLastSelectedStation {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MarkingLastSelectedStation", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Lock control.
|
/// Looks up a localized string similar to Lock control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -2329,6 +2358,15 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Operator.
|
||||||
|
/// </summary>
|
||||||
|
public static string MarkingOperator {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MarkingOperator", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Is bike okay?.
|
/// Looks up a localized string similar to Is bike okay?.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -2976,15 +3014,6 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Feedback to app development?.
|
|
||||||
/// </summary>
|
|
||||||
public static string MessageRateMail {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("MessageRateMail", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Connection error when renting the bike!.
|
/// Looks up a localized string similar to Connection error when renting the bike!.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -3084,15 +3113,6 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to {0}-app releated request.
|
|
||||||
/// </summary>
|
|
||||||
public static string MiscContactMailAppReleatedSubject {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("MiscContactMailAppReleatedSubject", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Prefix and No., e.g. TR15.
|
/// Looks up a localized string similar to Prefix and No., e.g. TR15.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -3193,9 +3213,9 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to I hereby consent to the transmission of my log file.
|
/// Looks up a localized string similar to I hereby consent to the transmission of my diagnostic file.
|
||||||
///
|
///
|
||||||
///The log file contains your app usage data as well as system information. The data will only be used for diagnostic purposes or to improve the app and then deleted..
|
///The diagnostic file contains your app usage data as well as system information. The data will only be used for diagnostic purposes or to improve the app and is then deleted..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string QuestionSupportmailAttachment {
|
public static string QuestionSupportmailAttachment {
|
||||||
get {
|
get {
|
||||||
|
@ -3384,7 +3404,7 @@ namespace TINK.MultilingualResources {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to {0} request.
|
/// Looks up a localized string similar to {0}-request: station {1}.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string SupportmailSubjectOperatormail {
|
public static string SupportmailSubjectOperatormail {
|
||||||
get {
|
get {
|
||||||
|
|
|
@ -157,9 +157,6 @@ Mietende ist nur möglich, wenn das Rad in Reichweite ist und Standortinformatio
|
||||||
<data name="MessageContactMail" xml:space="preserve">
|
<data name="MessageContactMail" xml:space="preserve">
|
||||||
<value>Fragen? Hinweise?</value>
|
<value>Fragen? Hinweise?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MessageRateMail" xml:space="preserve">
|
|
||||||
<value>Rückmeldung an die App-Entwicklung?</value>
|
|
||||||
</data>
|
|
||||||
<data name="MessageWaring" xml:space="preserve">
|
<data name="MessageWaring" xml:space="preserve">
|
||||||
<value>Warnung</value>
|
<value>Warnung</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -170,9 +167,9 @@ Mietende ist nur möglich, wenn das Rad in Reichweite ist und Standortinformatio
|
||||||
<value>Ja</value>
|
<value>Ja</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuestionSupportmailAttachment" xml:space="preserve">
|
<data name="QuestionSupportmailAttachment" xml:space="preserve">
|
||||||
<value>Hiermit stimme ich der Übermittlung meiner Protokolldatei zu.
|
<value>Hiermit stimme ich der Übermittlung meiner Diagnosedatei zu.
|
||||||
|
|
||||||
Die Protokolldatei enthält Ihre App-Nutzungsdaten sowie Systeminformationen. Die Daten werden ausschließlich für Diagnosezwecke bzw. Verbesserung der App verwendet und werden anschließend gelöscht.</value>
|
Die Diagnosedatei enthält Ihre App-Nutzungsdaten sowie Systeminformationen. Die Daten werden ausschließlich für Diagnosezwecke bzw. Verbesserung der App verwendet und werden anschließend gelöscht.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuestionTitle" xml:space="preserve">
|
<data name="QuestionTitle" xml:space="preserve">
|
||||||
<value>Frage</value>
|
<value>Frage</value>
|
||||||
|
@ -248,9 +245,6 @@ Bitte melden Sie sich erneut an.</value>
|
||||||
<data name="MarkingLoginPasswordPlaceholder" xml:space="preserve">
|
<data name="MarkingLoginPasswordPlaceholder" xml:space="preserve">
|
||||||
<value>Passwort</value>
|
<value>Passwort</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ActionContactRate" xml:space="preserve">
|
|
||||||
<value>Bewertung abgeben</value>
|
|
||||||
</data>
|
|
||||||
<data name="MarkingLoginInstructions" xml:space="preserve">
|
<data name="MarkingLoginInstructions" xml:space="preserve">
|
||||||
<value>Anleitung TINK Räder</value>
|
<value>Anleitung TINK Räder</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -605,7 +599,7 @@ Layout Anzeige Radnamen und nummern verbessert.</value>
|
||||||
<value>Bitte Anmelden, um Räder zu reservieren! <font color="blue"><u>Hier</u></font> tippen, um auf Anmeldeseite zu wechseln.</value>
|
<value>Bitte Anmelden, um Räder zu reservieren! <font color="blue"><u>Hier</u></font> tippen, um auf Anmeldeseite zu wechseln.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MarkingContactNoStationInfoAvailableNoButton" xml:space="preserve">
|
<data name="MarkingContactNoStationInfoAvailableNoButton" xml:space="preserve">
|
||||||
<value>Betreiber kontaktieren?</value>
|
<value>Wählen Sie zunächst die Station, zu deren Betreiber Sie Kontakt aufnehmen möchten.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ChangeLog3_0_241" xml:space="preserve">
|
<data name="ChangeLog3_0_241" xml:space="preserve">
|
||||||
<value>Auf der Kontaktseite werden Kontaktinformationen betreiberspezifisch angezeigt.</value>
|
<value>Auf der Kontaktseite werden Kontaktinformationen betreiberspezifisch angezeigt.</value>
|
||||||
|
@ -907,13 +901,6 @@ Kleinere Fehlerbehebungen.
|
||||||
<data name="ActionGiveFeedback" xml:space="preserve">
|
<data name="ActionGiveFeedback" xml:space="preserve">
|
||||||
<value>Rückmeldung geben</value>
|
<value>Rückmeldung geben</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ActionContactMailAppReleated" xml:space="preserve">
|
|
||||||
<value>E-Mail senden</value>
|
|
||||||
</data>
|
|
||||||
<data name="MiscContactMailAppReleatedSubject" xml:space="preserve">
|
|
||||||
<value>{0}-App Anfrage</value>
|
|
||||||
<comment>Subject of contact mail to ("Feedback about the app").</comment>
|
|
||||||
</data>
|
|
||||||
<data name="MessageReservingBikeErrorConnectionTitle" xml:space="preserve">
|
<data name="MessageReservingBikeErrorConnectionTitle" xml:space="preserve">
|
||||||
<value>Verbingungsfehler beim Reservieren des Rads!</value>
|
<value>Verbingungsfehler beim Reservieren des Rads!</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -998,7 +985,7 @@ Außerdem: Kleine Grafiken lassen auf einen Blick erkennen um was für einen Rad
|
||||||
<value>{0}-App Anfrage</value>
|
<value>{0}-App Anfrage</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SupportmailSubjectOperatormail" xml:space="preserve">
|
<data name="SupportmailSubjectOperatormail" xml:space="preserve">
|
||||||
<value>{0} Anfrage</value>
|
<value>{0}-Anfrage: Station {1}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuestionSupportmailAnswerNo" xml:space="preserve">
|
<data name="QuestionSupportmailAnswerNo" xml:space="preserve">
|
||||||
<value>Nein, Datei nicht anhängen</value>
|
<value>Nein, Datei nicht anhängen</value>
|
||||||
|
@ -1207,4 +1194,24 @@ Außerdem:<br/>
|
||||||
<data name="ErrorQueryGeolocation" xml:space="preserve">
|
<data name="ErrorQueryGeolocation" xml:space="preserve">
|
||||||
<value>Standortabfrage fehlgeschlagen</value>
|
<value>Standortabfrage fehlgeschlagen</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="MarkingContactCustomerSupportTitle" xml:space="preserve">
|
||||||
|
<value>Kundensupport</value>
|
||||||
|
</data>
|
||||||
|
<data name="ActionSelectAnotherStation" xml:space="preserve">
|
||||||
|
<value>Andere Station auswählen</value>
|
||||||
|
</data>
|
||||||
|
<data name="ActionSendDiagnosis" xml:space="preserve">
|
||||||
|
<value><u>Diagnosedatei übermitteln</u></value>
|
||||||
|
</data>
|
||||||
|
<data name="MarkingLastSelectedStation" xml:space="preserve">
|
||||||
|
<value>Zuletzt ausgewählte Station</value>
|
||||||
|
</data>
|
||||||
|
<data name="MarkingOperator" xml:space="preserve">
|
||||||
|
<value>Betreiber</value>
|
||||||
|
</data>
|
||||||
|
<data name="ChangeLog_3_0_369_MK_SB" xml:space="preserve">
|
||||||
|
<value>Wir haben die Kontakt-Seite neu gestaltet:
|
||||||
|
<ul><li>Bitte kontaktieren Sie bei Problemen bei der Fahrradmiete umgehend den Kundensupport!
|
||||||
|
</li><li>Für die Diagnose eines Problems können Sie über "Diagnosedatei übermitteln" Ihre App-Nutzungsdaten an uns senden. Ohne Ihr aktives Zusenden zeichnen wir keine Ihrer Daten auf!</li></ul></value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -248,9 +248,6 @@ Please log in again.</value>
|
||||||
<data name="MessagePhoneMail" xml:space="preserve">
|
<data name="MessagePhoneMail" xml:space="preserve">
|
||||||
<value>Urgent questions?</value>
|
<value>Urgent questions?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MessageRateMail" xml:space="preserve">
|
|
||||||
<value>Feedback to app development?</value>
|
|
||||||
</data>
|
|
||||||
<data name="MessageWaring" xml:space="preserve">
|
<data name="MessageWaring" xml:space="preserve">
|
||||||
<value>Warning</value>
|
<value>Warning</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -267,9 +264,9 @@ Please log in again.</value>
|
||||||
<value>{0} request</value>
|
<value>{0} request</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuestionSupportmailAttachment" xml:space="preserve">
|
<data name="QuestionSupportmailAttachment" xml:space="preserve">
|
||||||
<value>I hereby consent to the transmission of my log file.
|
<value>I hereby consent to the transmission of my diagnostic file.
|
||||||
|
|
||||||
The log file contains your app usage data as well as system information. The data will only be used for diagnostic purposes or to improve the app and then deleted.</value>
|
The diagnostic file contains your app usage data as well as system information. The data will only be used for diagnostic purposes or to improve the app and is then deleted.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuestionSupportmailSubject" xml:space="preserve">
|
<data name="QuestionSupportmailSubject" xml:space="preserve">
|
||||||
<value>Does your request/comment relate to the {0}-app or to a more general subject?</value>
|
<value>Does your request/comment relate to the {0}-app or to a more general subject?</value>
|
||||||
|
@ -328,9 +325,6 @@ The log file contains your app usage data as well as system information. The dat
|
||||||
<data name="StatusTextReservationExpiredLocationReservationTime" xml:space="preserve">
|
<data name="StatusTextReservationExpiredLocationReservationTime" xml:space="preserve">
|
||||||
<value>Location {0}, still {1} min. reserved.</value>
|
<value>Location {0}, still {1} min. reserved.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ActionContactRate" xml:space="preserve">
|
|
||||||
<value>Submit rating</value>
|
|
||||||
</data>
|
|
||||||
<data name="ActionLoginLogin" xml:space="preserve">
|
<data name="ActionLoginLogin" xml:space="preserve">
|
||||||
<value>Login</value>
|
<value>Login</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -714,7 +708,7 @@ Layout of bike names and id display improved.</value>
|
||||||
<value>Find bike by id functionality added.</value>
|
<value>Find bike by id functionality added.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MarkingContactNoStationInfoAvailableNoButton" xml:space="preserve">
|
<data name="MarkingContactNoStationInfoAvailableNoButton" xml:space="preserve">
|
||||||
<value>Contact operator?</value>
|
<value>First select the station whose operator you want to contact.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MarkingContactSupport" xml:space="preserve">
|
<data name="MarkingContactSupport" xml:space="preserve">
|
||||||
<value><u>Contact</u> {0}.</value>
|
<value><u>Contact</u> {0}.</value>
|
||||||
|
@ -1012,13 +1006,6 @@ Minor bugfixes.</value>
|
||||||
<data name="ActionGiveFeedback" xml:space="preserve">
|
<data name="ActionGiveFeedback" xml:space="preserve">
|
||||||
<value>Give feedback</value>
|
<value>Give feedback</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ActionContactMailAppReleated" xml:space="preserve">
|
|
||||||
<value>Sent e-mail</value>
|
|
||||||
</data>
|
|
||||||
<data name="MiscContactMailAppReleatedSubject" xml:space="preserve">
|
|
||||||
<value>{0}-app releated request</value>
|
|
||||||
<comment>Subject of contact mail to ("Feedback about the app").</comment>
|
|
||||||
</data>
|
|
||||||
<data name="MessageReservingBikeErrorConnectionTitle" xml:space="preserve">
|
<data name="MessageReservingBikeErrorConnectionTitle" xml:space="preserve">
|
||||||
<value>Connection error when reserving the bike!</value>
|
<value>Connection error when reserving the bike!</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -1103,7 +1090,7 @@ In addition: Small graphics let you see at a glance what type of bike it is.</va
|
||||||
<value>{0}-app request</value>
|
<value>{0}-app request</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SupportmailSubjectOperatormail" xml:space="preserve">
|
<data name="SupportmailSubjectOperatormail" xml:space="preserve">
|
||||||
<value>{0} request</value>
|
<value>{0}-request: station {1}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuestionSupportmailAnswerNo" xml:space="preserve">
|
<data name="QuestionSupportmailAnswerNo" xml:space="preserve">
|
||||||
<value>No, do not attach file</value>
|
<value>No, do not attach file</value>
|
||||||
|
@ -1296,4 +1283,24 @@ Also:<br/>
|
||||||
<data name="ErrorQueryGeolocation" xml:space="preserve">
|
<data name="ErrorQueryGeolocation" xml:space="preserve">
|
||||||
<value>Location query failed</value>
|
<value>Location query failed</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ActionSelectAnotherStation" xml:space="preserve">
|
||||||
|
<value>Select another station</value>
|
||||||
|
</data>
|
||||||
|
<data name="MarkingContactCustomerSupportTitle" xml:space="preserve">
|
||||||
|
<value>Customer support</value>
|
||||||
|
</data>
|
||||||
|
<data name="MarkingLastSelectedStation" xml:space="preserve">
|
||||||
|
<value>Last selected station</value>
|
||||||
|
</data>
|
||||||
|
<data name="MarkingOperator" xml:space="preserve">
|
||||||
|
<value>Operator</value>
|
||||||
|
</data>
|
||||||
|
<data name="ActionSendDiagnosis" xml:space="preserve">
|
||||||
|
<value><u>Transfer diagnostic file</u></value>
|
||||||
|
</data>
|
||||||
|
<data name="ChangeLog_3_0_369_MK_SB" xml:space="preserve">
|
||||||
|
<value>We have re-designed the contact page:
|
||||||
|
<ul><li>Please contact the customer support immediately in case of problems with the bike rental!
|
||||||
|
</li><li>To diagnose a problem, you can send us your app usage data via "Transfer diagnostic file". Without your active sending we do not record any of your data!</li></ul></value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -202,10 +202,6 @@ Mietende ist nur möglich, wenn das Rad in Reichweite ist und Standortinformatio
|
||||||
<source>Questions? Remarks?</source>
|
<source>Questions? Remarks?</source>
|
||||||
<target state="translated">Fragen? Hinweise?</target>
|
<target state="translated">Fragen? Hinweise?</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="MessageRateMail" translate="yes" xml:space="preserve">
|
|
||||||
<source>Feedback to app development?</source>
|
|
||||||
<target state="translated">Rückmeldung an die App-Entwicklung?</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="MessageWaring" translate="yes" xml:space="preserve">
|
<trans-unit id="MessageWaring" translate="yes" xml:space="preserve">
|
||||||
<source>Warning</source>
|
<source>Warning</source>
|
||||||
<target state="translated">Warnung</target>
|
<target state="translated">Warnung</target>
|
||||||
|
@ -219,12 +215,12 @@ Mietende ist nur möglich, wenn das Rad in Reichweite ist und Standortinformatio
|
||||||
<target state="translated">Ja</target>
|
<target state="translated">Ja</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="QuestionSupportmailAttachment" translate="yes" xml:space="preserve">
|
<trans-unit id="QuestionSupportmailAttachment" translate="yes" xml:space="preserve">
|
||||||
<source>I hereby consent to the transmission of my log file.
|
<source>I hereby consent to the transmission of my diagnostic file.
|
||||||
|
|
||||||
The log file contains your app usage data as well as system information. The data will only be used for diagnostic purposes or to improve the app and then deleted.</source>
|
The diagnostic file contains your app usage data as well as system information. The data will only be used for diagnostic purposes or to improve the app and is then deleted.</source>
|
||||||
<target state="translated">Hiermit stimme ich der Übermittlung meiner Protokolldatei zu.
|
<target state="translated">Hiermit stimme ich der Übermittlung meiner Diagnosedatei zu.
|
||||||
|
|
||||||
Die Protokolldatei enthält Ihre App-Nutzungsdaten sowie Systeminformationen. Die Daten werden ausschließlich für Diagnosezwecke bzw. Verbesserung der App verwendet und werden anschließend gelöscht.</target>
|
Die Diagnosedatei enthält Ihre App-Nutzungsdaten sowie Systeminformationen. Die Daten werden ausschließlich für Diagnosezwecke bzw. Verbesserung der App verwendet und werden anschließend gelöscht.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="QuestionTitle" translate="yes" xml:space="preserve">
|
<trans-unit id="QuestionTitle" translate="yes" xml:space="preserve">
|
||||||
<source>Question</source>
|
<source>Question</source>
|
||||||
|
@ -323,10 +319,6 @@ Bitte melden Sie sich erneut an.</target>
|
||||||
<source>Password</source>
|
<source>Password</source>
|
||||||
<target state="translated">Passwort</target>
|
<target state="translated">Passwort</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ActionContactRate" translate="yes" xml:space="preserve">
|
|
||||||
<source>Submit rating</source>
|
|
||||||
<target state="translated">Bewertung abgeben</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="MarkingLoginInstructions" translate="yes" xml:space="preserve">
|
<trans-unit id="MarkingLoginInstructions" translate="yes" xml:space="preserve">
|
||||||
<source>Instructions TINK bikes</source>
|
<source>Instructions TINK bikes</source>
|
||||||
<target state="translated">Anleitung TINK Räder</target>
|
<target state="translated">Anleitung TINK Räder</target>
|
||||||
|
@ -814,8 +806,8 @@ Layout Anzeige Radnamen und nummern verbessert.</target>
|
||||||
<target state="translated">Bitte Anmelden, um Räder zu reservieren! <bpt id="1"><font color="blue"></bpt><bpt id="2"><u></bpt>Hier<ept id="2"></u></ept><ept id="1"></font></ept> tippen, um auf Anmeldeseite zu wechseln.</target>
|
<target state="translated">Bitte Anmelden, um Räder zu reservieren! <bpt id="1"><font color="blue"></bpt><bpt id="2"><u></bpt>Hier<ept id="2"></u></ept><ept id="1"></font></ept> tippen, um auf Anmeldeseite zu wechseln.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="MarkingContactNoStationInfoAvailableNoButton" translate="yes" xml:space="preserve">
|
<trans-unit id="MarkingContactNoStationInfoAvailableNoButton" translate="yes" xml:space="preserve">
|
||||||
<source>Contact operator?</source>
|
<source>First select the station whose operator you want to contact.</source>
|
||||||
<target state="translated">Betreiber kontaktieren?</target>
|
<target state="translated">Wählen Sie zunächst die Station, zu deren Betreiber Sie Kontakt aufnehmen möchten.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ChangeLog3_0_241" translate="yes" xml:space="preserve">
|
<trans-unit id="ChangeLog3_0_241" translate="yes" xml:space="preserve">
|
||||||
<source>Bike sharing system operator specific support info displayed on contact page.</source>
|
<source>Bike sharing system operator specific support info displayed on contact page.</source>
|
||||||
|
@ -1234,16 +1226,6 @@ Kleinere Fehlerbehebungen.
|
||||||
<source>Give feedback</source>
|
<source>Give feedback</source>
|
||||||
<target state="translated">Rückmeldung geben</target>
|
<target state="translated">Rückmeldung geben</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="ActionContactMailAppReleated" translate="yes" xml:space="preserve">
|
|
||||||
<source>Sent e-mail</source>
|
|
||||||
<target state="translated">E-Mail senden</target>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="MiscContactMailAppReleatedSubject" translate="yes" xml:space="preserve">
|
|
||||||
<source>{0}-app releated request</source>
|
|
||||||
<target state="translated">{0}-App Anfrage</target>
|
|
||||||
<note from="MultilingualBuild" annotates="source" priority="2">Subject of contact mail to ("Feedback about the app").</note>
|
|
||||||
<note from="MultilingualUpdate" annotates="source" priority="2">Please verify the translation’s accuracy as the source string was updated after it was translated.</note>
|
|
||||||
</trans-unit>
|
|
||||||
<trans-unit id="MessageReservingBikeErrorConnectionTitle" translate="yes" xml:space="preserve">
|
<trans-unit id="MessageReservingBikeErrorConnectionTitle" translate="yes" xml:space="preserve">
|
||||||
<source>Connection error when reserving the bike!</source>
|
<source>Connection error when reserving the bike!</source>
|
||||||
<target state="translated">Verbingungsfehler beim Reservieren des Rads!</target>
|
<target state="translated">Verbingungsfehler beim Reservieren des Rads!</target>
|
||||||
|
@ -1361,8 +1343,8 @@ Außerdem: Kleine Grafiken lassen auf einen Blick erkennen um was für einen Rad
|
||||||
<target state="translated">{0}-App Anfrage</target>
|
<target state="translated">{0}-App Anfrage</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="SupportmailSubjectOperatormail" translate="yes" xml:space="preserve">
|
<trans-unit id="SupportmailSubjectOperatormail" translate="yes" xml:space="preserve">
|
||||||
<source>{0} request</source>
|
<source>{0}-request: station {1}</source>
|
||||||
<target state="translated">{0} Anfrage</target>
|
<target state="translated">{0}-Anfrage: Station {1}</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="QuestionSupportmailAnswerNo" translate="yes" xml:space="preserve">
|
<trans-unit id="QuestionSupportmailAnswerNo" translate="yes" xml:space="preserve">
|
||||||
<source>No, do not attach file</source>
|
<source>No, do not attach file</source>
|
||||||
|
@ -1669,6 +1651,34 @@ Außerdem:<br/>
|
||||||
<source>Location query failed</source>
|
<source>Location query failed</source>
|
||||||
<target state="translated">Standortabfrage fehlgeschlagen</target>
|
<target state="translated">Standortabfrage fehlgeschlagen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="MarkingContactCustomerSupportTitle" translate="yes" xml:space="preserve">
|
||||||
|
<source>Customer support</source>
|
||||||
|
<target state="translated">Kundensupport</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="ActionSelectAnotherStation" translate="yes" xml:space="preserve">
|
||||||
|
<source>Select another station</source>
|
||||||
|
<target state="translated">Andere Station auswählen</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="ActionSendDiagnosis" translate="yes" xml:space="preserve">
|
||||||
|
<source><bpt id="1"><u></bpt>Transfer diagnostic file<ept id="1"></u></ept></source>
|
||||||
|
<target state="translated"><bpt id="1"><u></bpt>Diagnosedatei übermitteln<ept id="1"></u></ept></target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="MarkingLastSelectedStation" translate="yes" xml:space="preserve">
|
||||||
|
<source>Last selected station</source>
|
||||||
|
<target state="translated">Zuletzt ausgewählte Station</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="MarkingOperator" translate="yes" xml:space="preserve">
|
||||||
|
<source>Operator</source>
|
||||||
|
<target state="translated">Betreiber</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="ChangeLog_3_0_369_MK_SB" translate="yes" xml:space="preserve">
|
||||||
|
<source>We have re-designed the contact page:
|
||||||
|
<bpt id="1"><ul></bpt><bpt id="2"><li></bpt>Please contact the customer support immediately in case of problems with the bike rental!
|
||||||
|
<ept id="2"></li></ept><bpt id="3"><li></bpt>To diagnose a problem, you can send us your app usage data via "Transfer diagnostic file". Without your active sending we do not record any of your data!<ept id="3"></li></ept><ept id="1"></ul></ept></source>
|
||||||
|
<target state="translated">Wir haben die Kontakt-Seite neu gestaltet:
|
||||||
|
<bpt id="1"><ul></bpt><bpt id="2"><li></bpt>Bitte kontaktieren Sie bei Problemen bei der Fahrradmiete umgehend den Kundensupport!
|
||||||
|
<ept id="2"></li></ept><bpt id="3"><li></bpt>Für die Diagnose eines Problems können Sie über "Diagnosedatei übermitteln" Ihre App-Nutzungsdaten an uns senden. Ohne Ihr aktives Zusenden zeichnen wir keine Ihrer Daten auf!<ept id="3"></li></ept><ept id="1"></ul></ept></target>
|
||||||
|
</trans-unit>
|
||||||
</group>
|
</group>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
|
|
@ -63,6 +63,31 @@
|
||||||
</Style.Triggers>
|
</Style.Triggers>
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
|
<!--Button without outline-->
|
||||||
|
<Style x:Key="NoOutlineButton" TargetType="Button">
|
||||||
|
<Setter Property="WidthRequest" Value="400" />
|
||||||
|
<Setter Property="HorizontalOptions" Value="Center" />
|
||||||
|
<Setter Property="BorderWidth" Value="1"/>
|
||||||
|
<Setter Property="CornerRadius" Value="10" />
|
||||||
|
<Setter Property="FontSize" Value="Medium"/>
|
||||||
|
<Setter Property="FontFamily" Value="RobotoRegular"/>
|
||||||
|
<Setter Property="TextColor" Value="{DynamicResource Key=primary-back-title-color}"/>
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger TargetType="Button"
|
||||||
|
Property="IsEnabled"
|
||||||
|
Value="True">
|
||||||
|
<Setter Property="BorderColor" Value="White"/>
|
||||||
|
<Setter Property="BackgroundColor" Value="White"/>
|
||||||
|
</Trigger>
|
||||||
|
<Trigger TargetType="Button"
|
||||||
|
Property="IsEnabled"
|
||||||
|
Value="False">
|
||||||
|
<Setter Property="BorderColor" Value="LightGray"/>
|
||||||
|
<Setter Property="BackgroundColor" Value="DimGray"/>
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
<!--Switch-->
|
<!--Switch-->
|
||||||
<Style TargetType="Switch">
|
<Style TargetType="Switch">
|
||||||
<Style.Triggers>
|
<Style.Triggers>
|
||||||
|
|
|
@ -62,6 +62,31 @@
|
||||||
</Style.Triggers>
|
</Style.Triggers>
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
|
<!--Button without outline-->
|
||||||
|
<Style x:Key="NoOutlineButton" TargetType="Button">
|
||||||
|
<Setter Property="WidthRequest" Value="400" />
|
||||||
|
<Setter Property="HorizontalOptions" Value="Center" />
|
||||||
|
<Setter Property="BorderWidth" Value="1"/>
|
||||||
|
<Setter Property="CornerRadius" Value="10" />
|
||||||
|
<Setter Property="FontSize" Value="Medium"/>
|
||||||
|
<Setter Property="FontFamily" Value="RobotoRegular"/>
|
||||||
|
<Setter Property="TextColor" Value="{DynamicResource Key=primary-back-title-color}"/>
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger TargetType="Button"
|
||||||
|
Property="IsEnabled"
|
||||||
|
Value="True">
|
||||||
|
<Setter Property="BorderColor" Value="White"/>
|
||||||
|
<Setter Property="BackgroundColor" Value="White"/>
|
||||||
|
</Trigger>
|
||||||
|
<Trigger TargetType="Button"
|
||||||
|
Property="IsEnabled"
|
||||||
|
Value="False">
|
||||||
|
<Setter Property="BorderColor" Value="LightGray"/>
|
||||||
|
<Setter Property="BackgroundColor" Value="DimGray"/>
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
<!--Switch-->
|
<!--Switch-->
|
||||||
<Style TargetType="Switch">
|
<Style TargetType="Switch">
|
||||||
<Style.Triggers>
|
<Style.Triggers>
|
||||||
|
@ -85,10 +110,22 @@
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<!--Label-->
|
<!--Label-->
|
||||||
<Style TargetType="Label">
|
<Style TargetType="Label">
|
||||||
<Setter Property="FontSize" Value="Default"/>
|
<Setter Property="FontSize" Value="Default"/>
|
||||||
<Setter Property="FontFamily" Value="RobotoRegular"/>
|
<Setter Property="FontFamily" Value="RobotoRegular"/>
|
||||||
</Style>
|
<Style.Triggers>
|
||||||
|
<Trigger TargetType="Label"
|
||||||
|
Property="FontAttributes"
|
||||||
|
Value="Bold">
|
||||||
|
<Setter Property="FontFamily" Value="RobotoBold"/>
|
||||||
|
</Trigger>
|
||||||
|
<Trigger TargetType="Label"
|
||||||
|
Property="FontAttributes"
|
||||||
|
Value="Italic">
|
||||||
|
<Setter Property="FontFamily" Value="RobotoItalic"/>
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
<!--Entry-->
|
<!--Entry-->
|
||||||
<Style TargetType="Entry">
|
<Style TargetType="Entry">
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -43,6 +42,47 @@ namespace TINK.ViewModel.Account
|
||||||
/// <summary> Reference on the tink app instance. </summary>
|
/// <summary> Reference on the tink app instance. </summary>
|
||||||
private ITinkApp TinkApp { get; }
|
private ITinkApp TinkApp { get; }
|
||||||
|
|
||||||
|
/// <summary> Used to block more than on copri requests at a given time.</summary>
|
||||||
|
private bool isIdle = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if any action can be performed (logout etc.)
|
||||||
|
/// </summary>
|
||||||
|
public virtual bool IsIdle
|
||||||
|
{
|
||||||
|
get => isIdle;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value == isIdle)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Log.ForContext<AccountPageViewModel>().Debug($"Switch value of {nameof(IsIdle)} to {value}.");
|
||||||
|
isIdle = value;
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsIdle)));
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsProcessWithRunningProcessView)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsProcessWithRunningProcessView => !isIdle;
|
||||||
|
|
||||||
|
/// <summary> Holds info about current action. </summary>
|
||||||
|
private string statusInfoText;
|
||||||
|
|
||||||
|
/// <summary> Holds info about current action. </summary>
|
||||||
|
public string StatusInfoText
|
||||||
|
{
|
||||||
|
get => statusInfoText;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value == statusInfoText)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Log.ForContext<LoginPageViewModel>().Debug($"Switch value of {nameof(StatusInfoText)} to {value}.");
|
||||||
|
statusInfoText = value;
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(StatusInfoText)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary> Constructs a settings page view model object.</summary>
|
/// <summary> Constructs a settings page view model object.</summary>
|
||||||
/// <param name="tinkApp"> Reference to tink app model.</param>
|
/// <param name="tinkApp"> Reference to tink app model.</param>
|
||||||
/// <param name="p_oUser"></param>
|
/// <param name="p_oUser"></param>
|
||||||
|
@ -261,6 +301,8 @@ namespace TINK.ViewModel.Account
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task Logout()
|
public async Task Logout()
|
||||||
{
|
{
|
||||||
|
StatusInfoText = AppResources.ActivityTextOneMomentPlease;
|
||||||
|
IsIdle = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Backup logout message before logout.
|
// Backup logout message before logout.
|
||||||
|
@ -284,6 +326,9 @@ namespace TINK.ViewModel.Account
|
||||||
|
|
||||||
// Restart polling again.
|
// Restart polling again.
|
||||||
await m_oViewUpdateManager.StartUpdateAyncPeridically(Polling.ToImmutable());
|
await m_oViewUpdateManager.StartUpdateAyncPeridically(Polling.ToImmutable());
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch (Exception l_oException)
|
catch (Exception l_oException)
|
||||||
|
@ -303,6 +348,9 @@ namespace TINK.ViewModel.Account
|
||||||
|
|
||||||
// Restart polling again.
|
// Restart polling again.
|
||||||
await m_oViewUpdateManager.StartUpdateAyncPeridically(Polling.ToImmutable());
|
await m_oViewUpdateManager.StartUpdateAyncPeridically(Polling.ToImmutable());
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,8 +362,12 @@ namespace TINK.ViewModel.Account
|
||||||
catch (Exception p_oException)
|
catch (Exception p_oException)
|
||||||
{
|
{
|
||||||
Log.Error("An unexpected error occurred displaying log out page. {@Exception}", p_oException);
|
Log.Error("An unexpected error occurred displaying log out page. {@Exception}", p_oException);
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Switch to map view after log out.
|
// Switch to map view after log out.
|
||||||
|
@ -328,8 +380,14 @@ namespace TINK.ViewModel.Account
|
||||||
catch (Exception p_oException)
|
catch (Exception p_oException)
|
||||||
{
|
{
|
||||||
Log.Error("An unexpected error occurred switching back to map page after displaying log out page. {@Exception}", p_oException);
|
Log.Error("An unexpected error occurred switching back to map page after displaying log out page. {@Exception}", p_oException);
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -63,14 +63,14 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
|
||||||
|
|
||||||
/// <summary>Books bike by reserving bike, opening lock and booking bike.</summary>
|
/// <summary>Books bike by reserving bike, opening lock and booking bike.</summary>
|
||||||
/// <returns>Next request handler.</returns>
|
/// <returns>Next request handler.</returns>
|
||||||
public async Task<IRequestHandler> HandleRequestOption1() => await DoBookOrClose();
|
public async Task<IRequestHandler> HandleRequestOption1() => await CloseLockOrDoBook();
|
||||||
|
|
||||||
public async Task<IRequestHandler> HandleRequestOption2() => await UnsupportedRequest();
|
public async Task<IRequestHandler> HandleRequestOption2() => await UnsupportedRequest();
|
||||||
|
|
||||||
|
|
||||||
/// <summary>Books bike by reserving bike, opening lock and booking bike.</summary>
|
/// <summary>Books bike by reserving bike, opening lock and booking bike.</summary>
|
||||||
/// <returns>Next request handler.</returns>
|
/// <returns>Next request handler.</returns>
|
||||||
public async Task<IRequestHandler> DoBookOrClose()
|
public async Task<IRequestHandler> CloseLockOrDoBook()
|
||||||
{
|
{
|
||||||
BikesViewModel.IsIdle = false; // Lock list to avoid multiple taps while copri action is pending.
|
BikesViewModel.IsIdle = false; // Lock list to avoid multiple taps while copri action is pending.
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,8 @@ namespace TINK.ViewModel.Info
|
||||||
|
|
||||||
SelectedStation = selectedStation;
|
SelectedStation = selectedStation;
|
||||||
|
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedStationId)));
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedStationName)));
|
||||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(MailAddressText)));
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(MailAddressText)));
|
||||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(OfficeHoursText)));
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(OfficeHoursText)));
|
||||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(PhoneNumberText)));
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(PhoneNumberText)));
|
||||||
|
@ -132,32 +134,14 @@ namespace TINK.ViewModel.Info
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ask whether mail is operator or app specific.
|
// Send operator related support mail to operator.
|
||||||
var operatorRelatedMail = await ViewService.DisplayAlert(
|
|
||||||
AppResources.QuestionTitle,
|
|
||||||
string.Format(AppResources.QuestionSupportmailSubject, AppFlavorName),
|
|
||||||
string.Format(AppResources.QuestionSupportmailAnswerOperator, AppFlavorName),
|
|
||||||
string.Format(AppResources.QuestionSupportmailAnswerApp, AppFlavorName));
|
|
||||||
|
|
||||||
if (operatorRelatedMail)
|
|
||||||
{
|
|
||||||
// Send operator related support mail to operator.
|
|
||||||
await Email.ComposeAsync(new EmailMessage
|
|
||||||
{
|
|
||||||
To = new List<string> { MailAddressText },
|
|
||||||
Subject = string.Format(AppResources.SupportmailSubjectOperatormail, AppFlavorName)
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send app-related support mail to operator.
|
|
||||||
await Email.ComposeAsync(new EmailMessage
|
await Email.ComposeAsync(new EmailMessage
|
||||||
{
|
{
|
||||||
To = new List<string> { MailAddressText },
|
To = new List<string> { MailAddressText },
|
||||||
Cc = APPSUPPORTMAILADDRESS.ToUpper() != MailAddressText.ToUpper() // do not sent copy if same mail address
|
Cc = APPSUPPORTMAILADDRESS.ToUpper() != MailAddressText.ToUpper() // do not sent copy if same mail address
|
||||||
&& MailAddressText != "konrad@sharee.bike" // do not sent copy if Mein konrad
|
&& MailAddressText != "konrad@sharee.bike" // do not sent copy if Mein konrad
|
||||||
? new List<string> { APPSUPPORTMAILADDRESS } : new List<string>(),
|
? new List<string> { APPSUPPORTMAILADDRESS } : new List<string>(),
|
||||||
Subject = string.Format(AppResources.SupportmailSubjectAppmail, AppFlavorName)
|
Subject = string.Format(AppResources.SupportmailSubjectOperatormail, AppFlavorName, SelectedStation?.Id)
|
||||||
});
|
});
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -180,12 +164,10 @@ namespace TINK.ViewModel.Info
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Ask for permission to append diagnostics.
|
// Ask for permission to append diagnostics.
|
||||||
var appendFile = false;
|
await ViewService.DisplayAlert(
|
||||||
appendFile = await ViewService.DisplayAlert(
|
|
||||||
AppResources.QuestionSupportmailTitle,
|
AppResources.QuestionSupportmailTitle,
|
||||||
AppResources.QuestionSupportmailAttachment,
|
AppResources.QuestionSupportmailAttachment,
|
||||||
AppResources.QuestionAnswerYes,
|
AppResources.MessageAnswerOk);
|
||||||
AppResources.QuestionSupportmailAnswerNo);
|
|
||||||
|
|
||||||
var message = new EmailMessage
|
var message = new EmailMessage
|
||||||
{
|
{
|
||||||
|
@ -193,13 +175,6 @@ namespace TINK.ViewModel.Info
|
||||||
Subject = string.Format(AppResources.SupportmailSubjectAppmail, AppFlavorName)
|
Subject = string.Format(AppResources.SupportmailSubjectAppmail, AppFlavorName)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (appendFile == false)
|
|
||||||
{
|
|
||||||
// Send without attachment
|
|
||||||
await Email.ComposeAsync(message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send with attachment.
|
// Send with attachment.
|
||||||
var logFileName = string.Empty;
|
var logFileName = string.Empty;
|
||||||
try
|
try
|
||||||
|
@ -299,13 +274,18 @@ namespace TINK.ViewModel.Info
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary> Text providing the id of the selected station.</summary>
|
||||||
|
public string SelectedStationId
|
||||||
|
=> SelectedStation?.Id;
|
||||||
|
|
||||||
|
public string SelectedStationName
|
||||||
|
=> SelectedStation?.StationName;
|
||||||
|
|
||||||
/// <summary> Text providing mail address and possilbe reasons to contact. </summary>
|
/// <summary> Text providing the name of the operator of the selected station </summary>
|
||||||
public string ProviderNameText
|
public string ProviderNameText
|
||||||
=> string.Format("Betreiber: {0}", SelectedStation?.OperatorData?.Name)
|
=> SelectedStation?.OperatorData?.Name;
|
||||||
;
|
|
||||||
/// <summary> Text providing mail address and possilbe reasons to contact. </summary>
|
/// <summary> Text providing mail address and possible reasons to contact. </summary>
|
||||||
public FormattedString MailAddressAndMotivationsText
|
public FormattedString MailAddressAndMotivationsText
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -316,35 +296,6 @@ namespace TINK.ViewModel.Info
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Invitation to rate app.</summary>
|
|
||||||
public FormattedString LikeTinkApp
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
var hint = new FormattedString();
|
|
||||||
hint.Spans.Add(new Span { Text = string.Format(AppResources.MessageRateMail, AppFlavorName) });
|
|
||||||
return hint;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary> User clicks rate button.</summary>
|
|
||||||
public ICommand OnRateRequest
|
|
||||||
=> new Command(() => RegisterRequest());
|
|
||||||
|
|
||||||
/// <summary> Opens login page.</summary>
|
|
||||||
public void RegisterRequest()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
OpenUrlInExternalBrowser();
|
|
||||||
}
|
|
||||||
catch (Exception p_oException)
|
|
||||||
{
|
|
||||||
Log.Error("Ein unerwarteter Fehler ist auf der Login Seite beim Öffnen eines Browsers, Seite {url}, aufgetreten. {@Exception}", p_oException);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary> Invitation to rate app.</summary>
|
/// <summary> Invitation to rate app.</summary>
|
||||||
public FormattedString PhoneContactText
|
public FormattedString PhoneContactText
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,9 @@ using TINK.MultilingualResources;
|
||||||
using TINK.Repository;
|
using TINK.Repository;
|
||||||
using TINK.Services.Geolocation;
|
using TINK.Services.Geolocation;
|
||||||
using TINK.Model.State;
|
using TINK.Model.State;
|
||||||
|
using TINK.ViewModel.Map;
|
||||||
|
using TINK.Model.Stations.StationNS;
|
||||||
|
using TINK.Model.Bikes.BikeInfoNS.BC;
|
||||||
|
|
||||||
namespace TINK.ViewModel.Contact
|
namespace TINK.ViewModel.Contact
|
||||||
{
|
{
|
||||||
|
@ -395,6 +398,7 @@ namespace TINK.ViewModel.Contact
|
||||||
|
|
||||||
var colors = GetStationColors(
|
var colors = GetStationColors(
|
||||||
Pins.Select(x => x.Tag.ToString()).ToList(),
|
Pins.Select(x => x.Tag.ToString()).ToList(),
|
||||||
|
resultStationsAndBikes.Response.StationsAll,
|
||||||
resultStationsAndBikes.Response.BikesOccupied);
|
resultStationsAndBikes.Response.BikesOccupied);
|
||||||
|
|
||||||
// Update pins color form count of bikes located at station.
|
// Update pins color form count of bikes located at station.
|
||||||
|
@ -491,10 +495,13 @@ namespace TINK.ViewModel.Contact
|
||||||
/// Gets the list of station color for all stations.
|
/// Gets the list of station color for all stations.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="stationsId">Station id list to get color for.</param>
|
/// <param name="stationsId">Station id list to get color for.</param>
|
||||||
|
/// <param name="stations">Station object dictionary to get count of available bike from for each station.</param>
|
||||||
|
/// <param name="bikesReserved">Bike collection to get count of reserved/ rented bikes from for each station.</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static IList<Color> GetStationColors(
|
internal static IList<Color> GetStationColors(
|
||||||
IEnumerable<string> stationsId,
|
IEnumerable<string> stationsId,
|
||||||
BikeCollection bikesAll)
|
IEnumerable<IStation> stations,
|
||||||
|
IEnumerable<BikeInfo> bikesReserved)
|
||||||
{
|
{
|
||||||
if (stationsId == null)
|
if (stationsId == null)
|
||||||
{
|
{
|
||||||
|
@ -502,11 +509,14 @@ namespace TINK.ViewModel.Contact
|
||||||
return new List<Color>();
|
return new List<Color>();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bikesAll == null)
|
if (stations == null)
|
||||||
{
|
{
|
||||||
// If object is null an error occurred querying bikes centered or bikes occupied which results in an unknown state.
|
Log.ForContext<SelectStationPageViewModel>().Error("No stations info available to get count of bikes available to determine whether a pin is green or not.");
|
||||||
Log.ForContext<SelectStationPageViewModel>().Error("No bikes available to determine pins color.");
|
}
|
||||||
return new List<Color>(stationsId.Select(x => Color.Blue));
|
|
||||||
|
if (bikesReserved == null)
|
||||||
|
{
|
||||||
|
Log.ForContext<SelectStationPageViewModel>().Error("No bikes info available to determine whether a pins is light blue or not.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get state for each station.
|
// Get state for each station.
|
||||||
|
@ -514,15 +524,14 @@ namespace TINK.ViewModel.Contact
|
||||||
foreach (var stationId in stationsId)
|
foreach (var stationId in stationsId)
|
||||||
{
|
{
|
||||||
// Get color of given station.
|
// Get color of given station.
|
||||||
var bikesAtStation = bikesAll.Where(x => x.StationId == stationId).ToList();
|
if (bikesReserved?.Where(x => x.StationId == stationId).Count() > 0)
|
||||||
if (bikesAtStation.FirstOrDefault(x => x.State.Value.IsOccupied()) != null)
|
|
||||||
{
|
{
|
||||||
// There is at least one requested or booked bike
|
// There is at least one requested or booked bike
|
||||||
colors.Add(Color.LightBlue);
|
colors.Add(Color.LightBlue);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bikesAtStation.ToList().Count > 0)
|
if (stations?.FirstOrDefault(x => x.Id == stationId)?.AvailableBikesCount > 0)
|
||||||
{
|
{
|
||||||
// There is at least one bike available
|
// There is at least one bike available
|
||||||
colors.Add(Color.Green);
|
colors.Add(Color.Green);
|
||||||
|
|
|
@ -25,7 +25,7 @@ namespace TINK.ViewModel
|
||||||
private readonly IViewService m_oViewService;
|
private readonly IViewService m_oViewService;
|
||||||
|
|
||||||
#if BACKSTYLE
|
#if BACKSTYLE
|
||||||
/// <summary> Reference to naviagion object to navigate back to map page when login succeeded. </summary>
|
/// <summary> Reference to navigation object to navigate back to map page when login succeeded. </summary>
|
||||||
private INavigation m_oNavigation;
|
private INavigation m_oNavigation;
|
||||||
#endif
|
#endif
|
||||||
/// <summary> Reference on the tink app instance. </summary>
|
/// <summary> Reference on the tink app instance. </summary>
|
||||||
|
@ -51,6 +51,47 @@ namespace TINK.ViewModel
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
|
/// <summary> Used to block more than on copri requests at a given time.</summary>
|
||||||
|
private bool isIdle = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if any action can be performed (login etc.)
|
||||||
|
/// </summary>
|
||||||
|
public virtual bool IsIdle
|
||||||
|
{
|
||||||
|
get => isIdle;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value == isIdle)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Log.ForContext<LoginPageViewModel>().Debug($"Switch value of {nameof(IsIdle)} to {value}.");
|
||||||
|
isIdle = value;
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsIdle)));
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsProcessWithRunningProcessView)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsProcessWithRunningProcessView => !isIdle;
|
||||||
|
|
||||||
|
/// <summary> Holds info about current action. </summary>
|
||||||
|
private string statusInfoText;
|
||||||
|
|
||||||
|
/// <summary> Holds info about current action. </summary>
|
||||||
|
public string StatusInfoText
|
||||||
|
{
|
||||||
|
get => statusInfoText;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value == statusInfoText)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Log.ForContext<LoginPageViewModel>().Debug($"Switch value of {nameof(StatusInfoText)} to {value}.");
|
||||||
|
statusInfoText = value;
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(StatusInfoText)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -159,7 +200,7 @@ namespace TINK.ViewModel
|
||||||
{
|
{
|
||||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsLoginRequestAllowed)));
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsLoginRequestAllowed)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Command object to bind login button to view model.
|
/// Command object to bind login button to view model.
|
||||||
|
@ -213,6 +254,8 @@ namespace TINK.ViewModel
|
||||||
public async Task Login()
|
public async Task Login()
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
IsIdle = false;
|
||||||
|
StatusInfoText = AppResources.ActivityTextOneMomentPlease;
|
||||||
IAccount account = new EmptyAccount();
|
IAccount account = new EmptyAccount();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -251,6 +294,8 @@ namespace TINK.ViewModel
|
||||||
l_oException.Message,
|
l_oException.Message,
|
||||||
AppResources.MessageAnswerOk);
|
AppResources.MessageAnswerOk);
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch (UnsupportedCopriVersionDetectedException)
|
catch (UnsupportedCopriVersionDetectedException)
|
||||||
|
@ -262,6 +307,8 @@ namespace TINK.ViewModel
|
||||||
TinkApp.Flavor.GetDisplayName()),
|
TinkApp.Flavor.GetDisplayName()),
|
||||||
AppResources.MessageAnswerOk);
|
AppResources.MessageAnswerOk);
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch (Exception l_oException)
|
catch (Exception l_oException)
|
||||||
|
@ -294,6 +341,8 @@ namespace TINK.ViewModel
|
||||||
AppResources.MessageAnswerOk);
|
AppResources.MessageAnswerOk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,6 +361,9 @@ namespace TINK.ViewModel
|
||||||
catch (Exception p_oException)
|
catch (Exception p_oException)
|
||||||
{
|
{
|
||||||
Log.ForContext<LoginPageViewModel>().Error("An unexpected error occurred displaying log out page. {@Exception}", p_oException);
|
Log.ForContext<LoginPageViewModel>().Error("An unexpected error occurred displaying log out page. {@Exception}", p_oException);
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -326,6 +378,8 @@ namespace TINK.ViewModel
|
||||||
#else
|
#else
|
||||||
await m_oViewService.ShowPage("//MapPage");
|
await m_oViewService.ShowPage("//MapPage");
|
||||||
#endif
|
#endif
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,6 +393,9 @@ namespace TINK.ViewModel
|
||||||
catch (Exception p_oException)
|
catch (Exception p_oException)
|
||||||
{
|
{
|
||||||
Log.ForContext<LoginPageViewModel>().Error("Ein unerwarteter Fehler ist auf der Seite Anleitung TINK Räder (nach Anmeldeseite) aufgetreten. {@Exception}", p_oException);
|
Log.ForContext<LoginPageViewModel>().Error("Ein unerwarteter Fehler ist auf der Seite Anleitung TINK Räder (nach Anmeldeseite) aufgetreten. {@Exception}", p_oException);
|
||||||
|
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,6 +403,8 @@ namespace TINK.ViewModel
|
||||||
// Navigate back to map page.
|
// Navigate back to map page.
|
||||||
await m_oNavigation.PopToRootAsync();
|
await m_oNavigation.PopToRootAsync();
|
||||||
#endif
|
#endif
|
||||||
|
IsIdle = true;
|
||||||
|
StatusInfoText = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Holds whether TINK/ Copri info is shown.</summary>
|
/// <summary> Holds whether TINK/ Copri info is shown.</summary>
|
||||||
|
|