Version 3.0.376

This commit is contained in:
Anja 2023-11-21 15:26:57 +01:00
parent ca080c87c0
commit f963c0a219
158 changed files with 3228 additions and 1279 deletions

View file

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

View file

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

View file

@ -56,9 +56,9 @@
<key>CFBundleDisplayName</key>
<string>sharee.bike</string>
<key>CFBundleVersion</key>
<string>375</string>
<string>376</string>
<key>CFBundleShortVersionString</key>
<string>3.0.375</string>
<string>3.0.376</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
</dict>

View file

@ -10,12 +10,12 @@
<ResourceDictionary>
<xct:InvertedBoolConverter x:Key="InvertedBoolConverter" />
<x:String x:Key="IconMap">&#xf5a0;</x:String>
<x:String x:Key="IconFindBike">&#xf002;</x:String>
<x:String x:Key="IconSelectBike">&#xf002;</x:String>
<x:String x:Key="IconMyBikes">&#xf206;</x:String>
<x:String x:Key="IconAccount">&#xf007;</x:String>
<x:String x:Key="IconLogin">&#xf2f6;</x:String>
<x:String x:Key="IconSettings">&#xf013;</x:String>
<x:String x:Key="IconFeesAndBikes">&#xf128;</x:String>
<x:String x:Key="IconHelp">&#xf128;</x:String>
<x:String x:Key="IconContact">&#xf0e0;</x:String>
<x:String x:Key="IconInfo">&#xf05a;</x:String>
<x:String x:Key="IconClose">&#xf00d;</x:String>

View file

@ -1,4 +1,4 @@
<!DOCTYPE html
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
@ -16,17 +16,21 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div class='container'>
<div id='Contenttxt'>
<div class="content_title2">Version</div>
<div style=""></div>
<br />Version ACTIVE_APPNAME: <b>CURRENT_VERSION_TINKAPP</b>.
<div class="content_title2">Entwickler</div>
<div style=""></div>
<br />Programmierung ACTIVE_APPNAME: O. Hauff, APPSUPPORTMAILADDRESS<br />
<div class="content_title2">Verwendete Bibliotheken</div>
<div style=""></div>
<br /><table>
<div class='container' id='Contenttxt'>
<div class="content_title1" style="">
<b>ACTIVE_APPNAME</b>
</div>
<div class="content_title2" style="">
Version: CURRENT_VERSION_TINKAPP
</div>
<br />
<div class="content_title2" style="">
Entwicklung: O. Hauff und A. Müller-Meißner, APPSUPPORTMAILADDRESS
</div>
<br />
<div class="content_title2" style="">
Verwendete Bibliotheken:<br />
<table>
<tr><th>Paket </th><th>Lizenz </th></tr>
<tr><td>Newtonsoft Json.NET von James Newton-King </td><td><a href="#MITLicense2007">MIT Lizenz 2007</a> </td></tr>
<tr><td>PCLCrypto von AArnott </td><td><a href="#MSPL_Long">Microsoft Public License(Ms-PL)</a> </td></tr>
@ -46,9 +50,10 @@
<tr><td>Xamarin.Forms.GoogleMaps von amay077 </td><td><a href="#MITLicense2016_2017">MIT Lizenz 2016- 2017</a> </td></tr>
<tr><td>Xamarin.Essentials von Microsoft </td><td><a href="#MITLicenseMicrosoft">MIT Lizenz</a> </td></tr>
</table>
<div class="content_title2">Lizenzen</div>
<div style=""></div>
</div>
<br />
<div class="content_title2" style="">
Lizenzen:
<article id="ApacheLicense2.0_2004">
<div class="content2">
<span class='content1'>Apache License</span><br />
@ -665,4 +670,4 @@
</div>
</div>
</body>
</html>
</html>

View file

@ -27,7 +27,6 @@
<DependentUpon>ILockItBike.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)View\BoolInverterConverter.cs" />
<Compile Include="$(MSBuildThisFileDirectory)View\Contact\SelectStationPage.xaml.cs">
<DependentUpon>SelectStationPage.xaml</DependentUpon>
<SubType>Code</SubType>
@ -36,11 +35,10 @@
<DependentUpon>FeedbackPopup.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)View\FindBike\FindBikePage.xaml.cs">
<DependentUpon>FindBikePage.xaml</DependentUpon>
<Compile Include="$(MSBuildThisFileDirectory)View\SelectBike\SelectBikePage.xaml.cs">
<DependentUpon>SelectBikePage.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)View\ListViewAttachedBehavior.cs" />
<Compile Include="$(MSBuildThisFileDirectory)View\MiniSurvey\MiniSurveyPage.xaml.cs">
<DependentUpon>MiniSurveyPage.xaml</DependentUpon>
<SubType>Code</SubType>
@ -61,11 +59,9 @@
<Compile Include="$(MSBuildThisFileDirectory)View\RootShell\AppShell.xaml.cs">
<DependentUpon>AppShell.xaml</DependentUpon>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)View\StringNotNullOrEmptyToVisibleConverter.cs" />
<Compile Include="$(MSBuildThisFileDirectory)View\ViewTypesTypeProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Model\Device\SpecialFolder.cs" />
<Compile Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\FeesAndBikesPage.xaml.cs">
<DependentUpon>FeesAndBikesPage.xaml</DependentUpon>
<Compile Include="$(MSBuildThisFileDirectory)View\Help\HelpPage.xaml.cs">
<DependentUpon>HelpPage.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)View\CopriWebView\ManageAccountPage.xaml.cs">
@ -80,8 +76,9 @@
<DependentUpon>PasswordForgottenPage.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)View\WhatsNew\Agb\AgbPage.xaml.cs">
<DependentUpon>AgbPage.xaml</DependentUpon>
<Compile Include="$(MSBuildThisFileDirectory)View\ViewTypesTypeProvider.cs" />
<Compile Include="$(MSBuildThisFileDirectory)View\WhatsNew\Gtc\GtcPage.xaml.cs">
<DependentUpon>GtcPage.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)View\WhatsNew\WhatsNewPage.xaml.cs">
@ -97,8 +94,8 @@
<DependentUpon>ContactPage.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)View\Info\InfoTabbedPage.xaml.cs">
<DependentUpon>InfoTabbedPage.xaml</DependentUpon>
<Compile Include="$(MSBuildThisFileDirectory)View\LegalInformation\LegalInformationPage.xaml.cs">
<DependentUpon>LegalInformationPage.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)View\Login\LoginPage.xaml.cs">
@ -161,7 +158,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="$(MSBuildThisFileDirectory)View\BikesAtStation\" />
<Folder Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\" />
<Folder Include="$(MSBuildThisFileDirectory)View\Help\" />
<Folder Include="$(MSBuildThisFileDirectory)View\Login\" />
<Folder Include="$(MSBuildThisFileDirectory)View\Map\" />
<Folder Include="$(MSBuildThisFileDirectory)View\MyBikes\" />
@ -174,13 +171,13 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\Info\InfoTabbedPage.xaml">
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\LegalInformation\LegalInformationPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\FeesAndBikes\FeesAndBikesPage.xaml">
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\Help\HelpPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</EmbeddedResource>
@ -192,7 +189,7 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\WhatsNew\Agb\AgbPage.xaml">
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\WhatsNew\Gtc\GtcPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</EmbeddedResource>
@ -246,7 +243,7 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\FindBike\FindBikePage.xaml">
<EmbeddedResource Include="$(MSBuildThisFileDirectory)View\SelectBike\SelectBikePage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>

View file

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
xmlns:conv="clr-namespace:TINK.View"
xmlns:conv="clr-namespace:TINK.View;assembly=TINKLib"
mc:Ignorable="d"
x:Class="TINK.View.Account.AccountPage"
BackgroundColor="{DynamicResource background-color}">

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<ViewCell xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:conv="clr-namespace:TINK.View"
xmlns:conv="clr-namespace:TINK.View;assembly=TINKLib"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<ViewCell xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:conv="clr-namespace:TINK.View"
xmlns:conv="clr-namespace:TINK.View;assembly=TINKLib"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

View file

@ -1,19 +0,0 @@
using System;
using System.Globalization;
using Xamarin.Forms;
namespace TINK.View
{
/// <summary> Inverts a bool.</summary>
public class BoolInverterConverter : IValueConverter
{
/// <summary> Inverts a bool.</summary>
/// <param name="value">Bool to invert.</param>
/// <returns>Inverted bool.</returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
=> value is bool flag && !flag;
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
=> value is bool flag && !flag;
}
}

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:conv="clr-namespace:TINK.View"
xmlns:conv="clr-namespace:TINK.View;assembly=TINKLib"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
x:Class="TINK.View.Contact.ContactPage"

View file

@ -3,10 +3,7 @@ using System;
using System.Threading.Tasks;
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
using TINK.Model.Device;
#if USEFLYOUT
using TINK.View.MasterDetail;
#endif
using TINK.ViewModel.Info;
using TINK.ViewModel.Contact;
using Xamarin.Essentials;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

View file

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
x:Class="TINK.View.Help.HelpPage"
Style="{StaticResource TabbedPageStyle}">
<TabbedPage.Resources>
<x:String x:Key="IconSmartphone">&#xf3cd;</x:String>
<x:String x:Key="IconTariff">&#xf153;</x:String>
<x:String x:Key="IconFaq">&#xf059;</x:String>
</TabbedPage.Resources>
<Shell.TitleView>
<Grid ColumnDefinitions="Auto, 1*">
<Label Style="{StaticResource Label-Navbar}"
Text="{x:Static resources:AppResources.MarkingHelp}"/>
</Grid>
</Shell.TitleView>
<!--Pages can be added as references or in line-->
<ContentPage
x:Name="FaqPage"
IsEnabled="{Binding IsIdle}"
Title="FAQ">
<ContentPage.IconImageSource>
<FontImageSource Glyph="{StaticResource IconFaq}" FontFamily="FA-S" />
</ContentPage.IconImageSource>
<ContentPage.Content>
<Grid
RowDefinitions="Auto,*,Auto"
RowSpacing="0">
<BoxView Grid.Row="0"
HeightRequest="1"
WidthRequest="400"
HorizontalOptions="Center"
Color="{x:DynamicResource primary-back-title-color}"/>
<WebView Grid.Row="1"
x:Name="FaqWebView"
HeightRequest="1000"
WidthRequest="1000"
Source="{Binding FaqHtml}"/>
<BoxView Grid.Row="2"
HeightRequest="1"
WidthRequest="400"
HorizontalOptions="Center"
Color="{x:DynamicResource primary-back-title-color}"/>
<ActivityIndicator Grid.Row="0" Grid.RowSpan="3"
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
Scale="2"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
Color="{x:DynamicResource primary-back-title-color}"/>
</Grid>
</ContentPage.Content>
</ContentPage>
<ContentPage
x:Name="ManualPage"
IsEnabled="{Binding IsIdle}"
Title="{x:Static resources:AppResources.MarkingTabManual}">
<ContentPage.IconImageSource>
<FontImageSource Glyph="{StaticResource IconSmartphone}" FontFamily="FA-S" />
</ContentPage.IconImageSource>
<ContentPage.Content>
<Grid
RowDefinitions="Auto,*,Auto"
RowSpacing="0">
<BoxView Grid.Row="0"
HeightRequest="1"
WidthRequest="400"
HorizontalOptions="Center"
Color="{x:DynamicResource primary-back-title-color}"/>
<WebView Grid.Row="1"
x:Name="ManualWebView"
HeightRequest="1000"
WidthRequest="1000"
Source="{Binding ManualHtml}"/>
<BoxView Grid.Row="2"
HeightRequest="1"
WidthRequest="400"
HorizontalOptions="Center"
Color="{x:DynamicResource primary-back-title-color}"/>
<ActivityIndicator Grid.Row="0" Grid.RowSpan="3"
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
Scale="2"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
Color="{x:DynamicResource primary-back-title-color}"/>
</Grid>
</ContentPage.Content>
</ContentPage>
<ContentPage
x:Name="TariffPage"
IsEnabled="{Binding IsIdle}"
Title="{x:Static resources:AppResources.MarkingTabTariffs}">
<ContentPage.IconImageSource>
<FontImageSource Glyph="{StaticResource IconTariff}" FontFamily="FA-S" />
</ContentPage.IconImageSource>
<ContentPage.Content>
<Grid
RowDefinitions="Auto,*,Auto"
RowSpacing="0">
<BoxView Grid.Row="0"
HeightRequest="1"
WidthRequest="400"
HorizontalOptions="Center"
Color="{x:DynamicResource primary-back-title-color}"/>
<WebView Grid.Row="1"
x:Name="TariffsWebView"
HeightRequest="1000"
WidthRequest="1000"
Source="{Binding TariffsHtml}"/>
<BoxView Grid.Row="2"
HeightRequest="1"
WidthRequest="400"
HorizontalOptions="Center"
Color="{x:DynamicResource primary-back-title-color}"/>
<ActivityIndicator Grid.Row="0" Grid.RowSpan="3"
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
Scale="2"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
Color="{x:DynamicResource primary-back-title-color}"/>
</Grid>
</ContentPage.Content>
</ContentPage>
</TabbedPage>

View file

@ -0,0 +1,53 @@
using System.Globalization;
using Serilog;
using TINK.ViewModel;
using TINK.ViewModel.Help;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace TINK.View.Help
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class HelpPage : TabbedPage
{
public HelpPageViewModel ViewModel { get; }
public HelpPage()
{
InitializeComponent();
/// Info about renting.
TariffsWebView.Navigating += WebViewHelper.SelectDisplayTarget;
TariffsWebView.Navigated += (sender, ev) => WebViewHelper.HandleError(
sender,
ev,
"<html><b>Kann Mietinformationen nicht anzeigen!</b><br>Verbindung mit Internet ok?</html>");
/// Info about types of bikes.
ManualWebView.Navigating += WebViewHelper.SelectDisplayTarget;
ManualWebView.Navigated += (sender, ev) => WebViewHelper.HandleError(
sender,
ev,
"<html><b>Kann Radinformationen nicht anzeigen!</b><br>Verbindung mit Internet ok?</html>");
ViewModel = new HelpPageViewModel(
App.ModelRoot.NextActiveUri.Host,
App.ModelRoot.ResourceUrls.TariffsResourcePath,
App.ModelRoot.ResourceUrls.ManualResourcePath,
App.ModelRoot.IsSiteCachingOn,
CultureInfo.CurrentUICulture.TwoLetterISOLanguageName,
() => App.ModelRoot.GetConnector(App.ModelRoot.GetIsConnected()).Query,
resourceUrls => App.ModelRoot.ResourceUrls = resourceUrls);
this.BindingContext = ViewModel;
}
/// <summary> Called when page is shown. </summary>
protected override void OnAppearing()
{
ViewModel.OnAppearing();
}
}
}

View file

@ -1,40 +0,0 @@
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Text;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace TINK.View
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class InfoPage : ContentPage
{
public InfoPage ()
{
InitializeComponent ();
#if __IOS__
var resourcePrefix = "TINK.iOS.";
#endif
#if __ANDROID__
var resourcePrefix = "TINK.Droid.";
#endif
#if WINDOWS_PHONE
var resourcePrefix = "TINK.WinPhone.";
#endif
Debug.WriteLine("Using this resource prefix: " + resourcePrefix);
// note that the prefix includes the trailing period '.' that is required
var assembly = typeof(InfoPage).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream
(resourcePrefix + "HtmlResouces.Info.html");
var l_oHtmlViewSource = new HtmlWebViewSource
{
Html = (new StreamReader(stream, Encoding.UTF8)).ReadToEnd()
};
InfoWebView.Source = l_oHtmlViewSource;
}
}
}

View file

@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace TINK.View.Info
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class InfoPage : ContentPage
{
public InfoPage ()
{
InitializeComponent ();
}
}
}

View file

@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TINK.View.Info.InfoPage"
x:Class="TINK.View.LegalInformation.LegalInformationPage"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
Style="{StaticResource TabbedPageStyle}"
x:Name="TabbedInfoPage">
Style="{StaticResource TabbedPageStyle}">
<TabbedPage.Resources>
<x:String x:Key="IconSmartphone">&#xf3cd;</x:String>
@ -16,7 +15,7 @@
<Shell.TitleView>
<Grid ColumnDefinitions="Auto, 1*">
<Label Style="{StaticResource Label-Navbar}"
Text="{x:Static resources:AppResources.MarkingAbout}"/>
Text="{x:Static resources:AppResources.MarkingLegalInformation}"/>
</Grid>
</Shell.TitleView>
@ -38,7 +37,7 @@
Color="{x:DynamicResource primary-back-title-color}"/>
<WebView Grid.Row="1"
x:Name="InfoLicenses"
Source="{Binding InfoLicenses}"
Source="{Binding AppHtml}"
HeightRequest="1000"
WidthRequest="1000" />
<BoxView Grid.Row="2"
@ -72,8 +71,8 @@
HorizontalOptions="Center"
Color="{x:DynamicResource primary-back-title-color}"/>
<WebView Grid.Row="1"
x:Name="InfoDatenschutz"
Source="{Binding InfoPrivacy}"
x:Name="PrivacyWebView"
Source="{Binding PrivacyHtml}"
HeightRequest="1000"
WidthRequest="1000" />
<BoxView Grid.Row="2"
@ -107,8 +106,8 @@
HorizontalOptions="Center"
Color="{x:DynamicResource primary-back-title-color}"/>
<WebView Grid.Row="1"
x:Name="InfoABG"
Source ="{Binding InfoAgb}"
x:Name="GtcWebView"
Source ="{Binding GtcHtml}"
HeightRequest="1000"
WidthRequest="1000" />
<BoxView Grid.Row="2"
@ -142,8 +141,8 @@
HorizontalOptions="Center"
Color="{x:DynamicResource primary-back-title-color}"/>
<WebView Grid.Row="1"
x:Name="InfoImpressum"
Source="{Binding InfoImpressum}"
x:Name="ImpressWebView"
Source="{Binding ImpressHtml}"
HeightRequest="1000"
WidthRequest="1000" />
<BoxView Grid.Row="2"

View file

@ -1,30 +1,30 @@
using System.Globalization;
using TINK.ViewModel;
using TINK.ViewModel.Info;
using TINK.ViewModel.LegalInformation;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace TINK.View.Info
namespace TINK.View.LegalInformation
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class InfoPage : TabbedPage
public partial class LegalInformationPage : TabbedPage
{
public InfoPageViewModel ViewModel { get; }
public LegalInformationPageViewModel ViewModel { get; }
public InfoPage()
public LegalInformationPage()
{
InitializeComponent();
ViewModel = new InfoPageViewModel(
ViewModel = new LegalInformationPageViewModel(
App.ModelRoot.NextActiveUri.Host,
App.ModelRoot.ResourceUrls.AgbResourcePath,
App.ModelRoot.ResourceUrls.GtcResourcePath,
App.ModelRoot.ResourceUrls.PrivacyResourcePath,
App.ModelRoot.ResourceUrls.ImpressResourcePath,
App.ModelRoot.IsSiteCachingOn,
resourceName => ViewModelResourceHelper.GetSource(resourceName),
() => App.ModelRoot.GetConnector(App.ModelRoot.GetIsConnected()).Query,
resourceUrls => App.ModelRoot.ResourceUrls = resourceUrls);
TabbedInfoPage.BindingContext = ViewModel;
this.BindingContext = ViewModel;
InfoLicenses.Navigating += WebViewHelper.SelectDisplayTarget;
InfoLicenses.Navigated += (sender, ev) => WebViewHelper.HandleError(
@ -32,20 +32,20 @@ namespace TINK.View.Info
ev,
"<html><b>Kann Lizenzinformationen nicht anzeigen!</b><br>Verbindung mit Internet ok?</html>");
InfoDatenschutz.Navigating += WebViewHelper.SelectDisplayTarget;
InfoDatenschutz.Navigated += (sender, ev) => WebViewHelper.HandleError(
PrivacyWebView.Navigating += WebViewHelper.SelectDisplayTarget;
PrivacyWebView.Navigated += (sender, ev) => WebViewHelper.HandleError(
sender,
ev,
"<html><b>Kann Datenschutzinformationen nicht anzeigen!</b><br>Verbindung mit Internet ok?</html>");
InfoABG.Navigating += WebViewHelper.SelectDisplayTarget;
InfoABG.Navigated += (sender, ev) => WebViewHelper.HandleError(
GtcWebView.Navigating += WebViewHelper.SelectDisplayTarget;
GtcWebView.Navigated += (sender, ev) => WebViewHelper.HandleError(
sender,
ev,
"<html><b>Kann allgemeine Geschäftsbedingungen nicht anzeigen!</b><br>Verbindung mit Internet ok?</html>");
InfoImpressum.Navigating += WebViewHelper.SelectDisplayTarget;
InfoImpressum.Navigated += (sender, ev) => WebViewHelper.HandleError(
ImpressWebView.Navigating += WebViewHelper.SelectDisplayTarget;
ImpressWebView.Navigated += (sender, ev) => WebViewHelper.HandleError(
sender,
ev,
"<html><b>Kann Impressum nicht anzeigen!</b><br>Verbindung mit Internet ok?</html>");

View file

@ -1,35 +0,0 @@
using System.Windows.Input;
using Xamarin.Forms;
namespace TINK.View
{
public static class ListViewAttachedBehavior
{
public static readonly BindableProperty CommandProperty =
BindableProperty.CreateAttached(
"Command",
typeof(ICommand),
typeof(ListViewAttachedBehavior),
null,
propertyChanged: OnCommandChanged);
static void OnCommandChanged(BindableObject view, object oldValue, object newValue)
{
var entry = view as ListView;
if (entry == null)
return;
entry.ItemTapped += (sender, e) =>
{
var command = (newValue as ICommand);
if (command == null)
return;
if (command.CanExecute(e.Item))
{
command.Execute(e.Item);
}
};
}
}
}

View file

@ -3,7 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:sharedGui="clr-namespace:ShareeSharedGuiLib.View"
xmlns:conv="clr-namespace:TINK.View"
xmlns:conv="clr-namespace:TINK.View;assembly=TINKLib"
x:Class="TINK.View.Login.LoginPage"
BackgroundColor="{DynamicResource background-color}">

View file

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

View file

@ -3,13 +3,14 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:mappage="clr-namespace:TINK.View.Map"
xmlns:findbike="clr-namespace:TINK.View.FindBike"
xmlns:findbike="clr-namespace:TINK.View.SelectBike"
xmlns:mybikes="clr-namespace:TINK.View.MyBikes"
xmlns:account="clr-namespace:TINK.View.Account"
xmlns:login="clr-namespace:TINK.View.Login"
xmlns:settings="clr-namespace:TINK.View.Settings"
xmlns:contact="clr-namespace:TINK.View.Contact"
xmlns:info="clr-namespace:TINK.View.Info"
xmlns:help="clr-namespace:TINK.View.Help"
xmlns:info="clr-namespace:TINK.View.LegalInformation"
xmlns:header="clr-namespace:TINK.View.RootShell"
xmlns:version="clr-namespace:ShareeSharedGuiLib.View"
BackgroundColor="{DynamicResource Key=primary-back-title-color}"
@ -21,7 +22,7 @@
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent
Title="{x:Static resources:AppResources.MarkingMapPage}"
Title="{x:Static resources:AppResources.MarkingBikeLocations}"
Route="MapPage"
ContentTemplate="{DataTemplate mappage:MapPage}">
<ShellContent.FlyoutIcon>
@ -31,11 +32,11 @@
</FlyoutItem>
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent
Title="{x:Static resources:AppResources.MarkingFindBike}"
IsVisible="{Binding IsFindBikePageVisible}"
ContentTemplate="{DataTemplate findbike:FindBikePage}">
Title="{x:Static resources:AppResources.MarkingSelectBike}"
IsVisible="{Binding IsSelectBikePageVisible}"
ContentTemplate="{DataTemplate findbike:SelectBikePage}">
<ShellContent.FlyoutIcon>
<FontImageSource Glyph="{StaticResource IconFindBike}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
<FontImageSource Glyph="{StaticResource IconSelectBike}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
</ShellContent.FlyoutIcon>
</ShellContent>
</FlyoutItem>
@ -72,7 +73,7 @@
</FlyoutItem>
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent
Title="{x:Static resources:AppResources.MarkingFeedbackAndContact}"
Title="{x:Static resources:AppResources.MarkingContact}"
Route="ContactPage"
ContentTemplate="{DataTemplate contact:ContactPage}">
<ShellContent.FlyoutIcon>
@ -92,17 +93,17 @@
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent
Title="{x:Static resources:AppResources.MarkingFeesAndBikes}"
ContentTemplate="{DataTemplate contact:FeesAndBikesPage}">
Title="{x:Static resources:AppResources.MarkingHelp}"
ContentTemplate="{DataTemplate help:HelpPage}">
<ShellContent.FlyoutIcon>
<FontImageSource Glyph="{StaticResource IconFeesAndBikes}" Color="DimGray" FontFamily="FA-S"/>
<FontImageSource Glyph="{StaticResource IconHelp}" Color="DimGray" FontFamily="FA-S"/>
</ShellContent.FlyoutIcon>
</ShellContent>
</FlyoutItem>
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent
Title="{Binding TabbedPageIngoTitle}"
ContentTemplate="{DataTemplate info:InfoPage}">
Title="{x:Static resources:AppResources.MarkingLegalInformation}"
ContentTemplate="{DataTemplate info:LegalInformationPage}">
<ShellContent.FlyoutIcon>
<FontImageSource Glyph="{StaticResource IconLegalInfo}" Color="DimGray" FontFamily="FA-S" />
</ShellContent.FlyoutIcon>

View file

@ -3,8 +3,8 @@
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
x:Class="TINK.View.FindBike.FindBikePage"
xmlns:conv="clr-namespace:TINK.View"
x:Class="TINK.View.SelectBike.SelectBikePage"
xmlns:conv="clr-namespace:TINK.View;assembly=TINKLib"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
xmlns:rental_process="clr-namespace:TINK.ViewModel.Bikes;assembly=TINKLib"
xmlns:bikeRentalProcess="clr-namespace:ShareeSharedGuiLib.View.Bike.RentalProcess"
@ -16,7 +16,7 @@
<Shell.TitleView>
<Grid ColumnDefinitions="Auto, 1*">
<Label Style="{StaticResource Label-Navbar}"
Text="{x:Static resources:AppResources.MarkingFindBike}"/>
Text="{x:Static resources:AppResources.MarkingSelectBike}"/>
</Grid>
</Shell.TitleView>
@ -66,14 +66,14 @@
Grid.Column="0"
Grid.ColumnSpan="2"
Grid.Row="0"
Text="{x:Static resources:AppResources.MarkingFindBikeLabel}"
Text="{x:Static resources:AppResources.MarkingSelectBikeLabel}"
Margin="0,5,0,-5">
</Label>
<Entry
Grid.Column="0"
Grid.Row="1"
x:Name="FindBikeEntry"
Placeholder="{x:Static resources:AppResources.PlaceholderFindBike}"
x:Name="SelectBikeEntry"
Placeholder="{x:Static resources:AppResources.PlaceholderSelectBike}"
MaxLength="10"
CursorPosition="0"
Text="{Binding BikeIdUserInput, Mode=TwoWay}"/>
@ -82,7 +82,7 @@
Grid.Column="1"
Grid.Row="1"
WidthRequest="100"
Text="{x:Static resources:AppResources.MarkingFindBikeButton}"
Text="{x:Static resources:AppResources.MarkingSelectBikeButton}"
Command="{Binding OnSelectBikeRequest}">
<Button.Triggers>
<DataTrigger TargetType="Button" Binding="{Binding IsSelectBikeEnabled}" Value="False">
@ -119,7 +119,7 @@
<!--Bike-->
<ListView
Grid.Row="1"
x:Name="FindBikeListView"
x:Name="SelectBikeListView"
BackgroundColor="{DynamicResource background-color}"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"

View file

@ -5,25 +5,25 @@ using Serilog;
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
using TINK.Model.Device;
using TINK.MultilingualResources;
using TINK.ViewModel.FindBike;
using TINK.ViewModel.SelectBike;
using Xamarin.CommunityToolkit.Extensions;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace TINK.View.FindBike
namespace TINK.View.SelectBike
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class FindBikePage : ContentPage, IViewService
public partial class SelectBikePage : ContentPage, IViewService
{
/// <summary> Refernce to view model. </summary>
FindBikePageViewModel m_oViewModel = null;
/// <summary> Reference to view model. </summary>
SelectBikePageViewModel m_oViewModel = null;
/// <summary>
/// Holds a value indicating whether page already subscribed to shell item changes or not.
/// </summary>
private bool _IsShellItemChangedReceived = false;
public FindBikePage() { }
public SelectBikePage() { }
/// <summary>
/// Invoked when page is shown.
@ -43,7 +43,7 @@ namespace TINK.View.FindBike
{
var model = App.ModelRoot;
m_oViewModel = new FindBikePageViewModel(
m_oViewModel = new SelectBikePageViewModel(
model.ActiveUser,
model,
App.PermissionsService,
@ -65,7 +65,7 @@ namespace TINK.View.FindBike
}
catch (Exception exception)
{
Log.ForContext<FindBikePage>().Error("Displaying bikes at station page failed. {Exception}", exception);
Log.ForContext<SelectBikePage>().Error("Displaying bikes at station page failed. {Exception}", exception);
await DisplayAlert(
AppResources.ErrorPageNotLoadedTitle,
$"{AppResources.ErrorPageNotLoaded}\r\n{exception.Message}",
@ -79,7 +79,7 @@ namespace TINK.View.FindBike
BindingContext = m_oViewModel;
FindBikeListView.ItemsSource = m_oViewModel;
SelectBikeListView.ItemsSource = m_oViewModel;
await m_oViewModel.OnAppearingOrRefresh();
}

View file

@ -1,23 +0,0 @@
using System;
using System.Globalization;
using Xamarin.Forms;
namespace TINK.View
{
/// <summary> Converts a string into visible state. If string is null or empty element becomes invisible.</summary>
public class StringNotNullOrEmptyToVisibleConverter : IValueConverter
{
/// <summary> Converts a string into visible state.</summary>
/// <param name="value">Text value from view model used to derive whether object is visible or not.</param>
/// <returns>Boolean value indicating whether object is visible or not.</returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value != null && value is string text && !string.IsNullOrEmpty(text);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return "";
}
}
}

View file

@ -2,15 +2,16 @@ using System;
using TINK.View.BikesAtStation;
using TINK.View.Contact;
using TINK.View.CopriWebView;
using TINK.View.FindBike;
using TINK.View.Info;
using TINK.View.SelectBike;
using TINK.View.LegalInformation;
using TINK.View.Help;
using TINK.View.Login;
using TINK.View.Map;
using TINK.View.MiniSurvey;
using TINK.View.MyBikes;
using TINK.View.Settings;
using TINK.View.WhatsNew;
using TINK.View.WhatsNew.Agb;
using TINK.View.WhatsNew.Gtc;
using Xamarin.Forms;
namespace TINK.View
@ -39,17 +40,17 @@ namespace TINK.View
case ViewTypes.SettingsPage:
return typeof(SettingsPage);
case ViewTypes.TabbedPageInfo:
return typeof(InfoPage);
case ViewTypes.LegalInformationPage:
return typeof(LegalInformationPage);
case ViewTypes.FeesAndBikesPage:
return typeof(FeesAndBikesPage);
case ViewTypes.HelpPage:
return typeof(HelpPage);
case ViewTypes.ManageAccountPage:
return typeof(ManageAccountPage);
case ViewTypes.AgbPage:
return typeof(AgbPage);
case ViewTypes.GtcPage:
return typeof(GtcPage);
case ViewTypes.WhatsNewPage:
return typeof(WhatsNewPage);
@ -66,8 +67,8 @@ namespace TINK.View
case ViewTypes.MiniSurvey:
return typeof(MiniSurveyPage);
case ViewTypes.FindBikePage:
return typeof(FindBikePage);
case ViewTypes.SelectBikePage:
return typeof(SelectBikePage);
default:
return typeof(ContentPage);

View file

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TINK.View.WhatsNew.Agb.AgbPage">
x:Class="TINK.View.WhatsNew.Gtc.GtcPage">
<ContentPage.Content>
<Frame>
<StackLayout>
<WebView
HeightRequest="1000"
WidthRequest="500"
Source="{Binding InfoAgb}"/>
Source="{Binding GtcHtml}"/>
<Button
Text="OK"
WidthRequest="100"
@ -18,4 +18,4 @@
</Frame>
</ContentPage.Content>
</ContentPage>
</ContentPage>

View file

@ -3,26 +3,26 @@ using System.Globalization;
using System.Threading.Tasks;
using TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS;
using TINK.ViewModel;
using TINK.ViewModel.WhatsNew.Agb;
using TINK.ViewModel.WhatsNew.Gtc;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace TINK.View.WhatsNew.Agb
namespace TINK.View.WhatsNew.Gtc
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class AgbPage : ContentPage, IViewService
public partial class GtcPage : ContentPage, IViewService
{
public AgbPage()
public GtcPage()
{
InitializeComponent();
agbViewModel = new AgbViewModel(
gtcViewModel = new GtcViewModel(
App.ModelRoot.NextActiveUri.Host,
App.ModelRoot.IsSiteCachingOn,
(resourceName) => ViewModelResourceHelper.GetSource(resourceName),
this);
BindingContext = agbViewModel;
this.BindingContext = gtcViewModel;
}
/// <summary> Displays alert message.</summary>
@ -49,10 +49,10 @@ namespace TINK.View.WhatsNew.Agb
/// <summary> Invoked when page is shown. </summary>
protected async override void OnAppearing()
=> await agbViewModel.OnAppearing();
=> await gtcViewModel.OnAppearing();
/// <summary> Reference to view model.</summary>
AgbViewModel agbViewModel;
GtcViewModel gtcViewModel;
public async Task PopModalAsync()
=> await Navigation.PopModalAsync();

View file

@ -3,7 +3,7 @@ using TINK.MultilingualResources;
using TINK.Services;
using TINK.Services.CopriApi.ServerUris;
using TINK.View.Themes;
using TINK.ViewModel.Info;
using TINK.ViewModel.LegalInformation;
namespace TINK.ViewModel.RootShell
{
@ -15,7 +15,7 @@ namespace TINK.ViewModel.RootShell
{
// Login state changed. Update related menu entries.
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsMyBikesPageVisible)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsFindBikePageVisible)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsSelectBikePageVisible)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsAccountPageVisible)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsLoginPageVisible)));
};
@ -56,13 +56,13 @@ namespace TINK.ViewModel.RootShell
public bool IsMyBikesPageVisible => App.ModelRoot.ActiveUser.IsLoggedIn;
public bool IsFindBikePageVisible => App.ModelRoot.ActiveUser.IsLoggedIn;
public bool IsSelectBikePageVisible => App.ModelRoot.ActiveUser.IsLoggedIn;
public bool IsAccountPageVisible => App.ModelRoot.ActiveUser.IsLoggedIn;
public bool IsLoginPageVisible => !App.ModelRoot.ActiveUser.IsLoggedIn;
public string TabbedPageIngoTitle => AppResources.MarkingAbout;
public string TabbedPageIngoTitle => AppResources.MarkingLegalInformation;
}
}