Version 3.0.371
|
@ -1,5 +1,5 @@
|
||||||
<?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.370" android:versionCode="370">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.LastenradBayern" android:versionName="3.0.371" android:versionCode="371">
|
||||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="33" />
|
<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 -->
|
||||||
|
|
|
@ -56,8 +56,8 @@
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>LastenradBayern</string>
|
<string>LastenradBayern</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>370</string>
|
<string>371</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.0.370</string>
|
<string>3.0.371</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using TINK.ViewModel;
|
using TINK.ViewModel;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using Xamarin.Forms.Xaml;
|
using Xamarin.Forms.Xaml;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -150,7 +150,7 @@ namespace TINK.View.Account
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -251,7 +251,7 @@ namespace TINK.View.BikesAtStation
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using Serilog;
|
using Serilog;
|
||||||
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;
|
||||||
|
@ -28,8 +28,11 @@ namespace TINK.View.Contact
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
var l_oModel = App.ModelRoot;
|
||||||
|
|
||||||
ViewModel = new ContactPageViewModel(
|
ViewModel = new ContactPageViewModel(
|
||||||
App.ModelRoot.Flavor.GetDisplayName(),
|
App.ModelRoot.Flavor.GetDisplayName(),
|
||||||
|
l_oModel,
|
||||||
() => App.CreateAttachment(),
|
() => App.CreateAttachment(),
|
||||||
() => DependencyService.Get<IExternalBrowserService>().OpenUrl(DependencyService.Get<IAppInfo>().StoreUrl),
|
() => DependencyService.Get<IExternalBrowserService>().OpenUrl(DependencyService.Get<IAppInfo>().StoreUrl),
|
||||||
this);
|
this);
|
||||||
|
@ -120,7 +123,7 @@ namespace TINK.View.Contact
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
using TINK.View.MasterDetail;
|
using TINK.View.MasterDetail;
|
||||||
|
@ -116,7 +116,7 @@ namespace TINK.View.Contact
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace TINK.View
|
||||||
/// <param name="battery">Object holding info about battery. For some batteries charging level might need to be updated by user.</param>
|
/// <param name="battery">Object holding info about battery. For some batteries charging level might need to be updated by user.</param>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
public FeedbackPopup(
|
public FeedbackPopup(
|
||||||
IBattery battery = null,
|
IBatteryMutable battery = null,
|
||||||
string co2Saving = null)
|
string co2Saving = null)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
using System.Globalization;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
using TINK.ViewModel;
|
using TINK.ViewModel;
|
||||||
using TINK.ViewModel.Contact;
|
using TINK.ViewModel.Contact;
|
||||||
|
@ -36,6 +37,7 @@ namespace TINK.View.Contact
|
||||||
App.ModelRoot.ResourceUrls.FeesResourcePath,
|
App.ModelRoot.ResourceUrls.FeesResourcePath,
|
||||||
App.ModelRoot.ResourceUrls.BikesResourcePath,
|
App.ModelRoot.ResourceUrls.BikesResourcePath,
|
||||||
App.ModelRoot.IsSiteCachingOn,
|
App.ModelRoot.IsSiteCachingOn,
|
||||||
|
CultureInfo.CurrentUICulture.TwoLetterISOLanguageName,
|
||||||
() => App.ModelRoot.GetConnector(App.ModelRoot.GetIsConnected()).Query,
|
() => App.ModelRoot.GetConnector(App.ModelRoot.GetIsConnected()).Query,
|
||||||
resourceUrls => App.ModelRoot.ResourceUrls = resourceUrls);
|
resourceUrls => App.ModelRoot.ResourceUrls = resourceUrls);
|
||||||
|
|
||||||
|
|
|
@ -181,7 +181,7 @@ namespace TINK.View.FindBike
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ namespace TINK.View.Info.BikeInfo
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -117,7 +117,7 @@ namespace TINK.View.Login
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -121,7 +121,7 @@ namespace TINK.View.Map
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
|
|
|
@ -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.ViewModel.MiniSurvey;
|
using TINK.ViewModel.MiniSurvey;
|
||||||
|
@ -94,7 +94,7 @@ namespace TINK.View.MiniSurvey
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -181,7 +181,7 @@ namespace TINK.View.MyBikes
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using TINK.ViewModel;
|
using TINK.ViewModel;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using Xamarin.Forms.Xaml;
|
using Xamarin.Forms.Xaml;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -150,7 +150,7 @@ namespace TINK.View.Settings
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USERFEEDBACKDLG_TRYOUT
|
#if USERFEEDBACKDLG_TRYOUT
|
||||||
|
|
|
@ -77,7 +77,7 @@ namespace TINK.View.WhatsNew.Agb
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -80,7 +80,7 @@ namespace TINK.View.WhatsNew
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?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.370" android:versionCode="370">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.Meinkonrad" android:versionName="3.0.371" android:versionCode="371">
|
||||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="33" />
|
<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 -->
|
||||||
|
|
|
@ -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>370</string>
|
<string>371</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.0.370</string>
|
<string>3.0.371</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
Before Width: | Height: | Size: 18 KiB |
|
@ -15,13 +15,11 @@
|
||||||
<x:String x:Key="IconAccount"></x:String>
|
<x:String x:Key="IconAccount"></x:String>
|
||||||
<x:String x:Key="IconLogin"></x:String>
|
<x:String x:Key="IconLogin"></x:String>
|
||||||
<x:String x:Key="IconSettings"></x:String>
|
<x:String x:Key="IconSettings"></x:String>
|
||||||
<!--<x:String x:Key="IconFeesAndBikes"></x:String>-->
|
|
||||||
<x:String x:Key="IconFeesAndBikes"></x:String>
|
<x:String x:Key="IconFeesAndBikes"></x:String>
|
||||||
<!--<x:String x:Key="IconContact"></x:String>-->
|
|
||||||
<x:String x:Key="IconContact"></x:String>
|
<x:String x:Key="IconContact"></x:String>
|
||||||
<x:String x:Key="IconInfo"></x:String>
|
<x:String x:Key="IconInfo"></x:String>
|
||||||
<!--<x:String x:Key="IconClose"></x:String>-->
|
|
||||||
<x:String x:Key="IconClose"></x:String>
|
<x:String x:Key="IconClose"></x:String>
|
||||||
|
<x:String x:Key="IconLegalInfo"></x:String>
|
||||||
|
|
||||||
<!--TogglePasswortEntry-->
|
<!--TogglePasswortEntry-->
|
||||||
<x:String x:Key="EyeOpen"></x:String>
|
<x:String x:Key="EyeOpen"></x:String>
|
||||||
|
|
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 |
|
@ -1,4 +1,4 @@
|
||||||
using TINK.ViewModel;
|
using TINK.ViewModel;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using Xamarin.Forms.Xaml;
|
using Xamarin.Forms.Xaml;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -150,7 +150,7 @@ namespace TINK.View.Account
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -12,6 +12,11 @@
|
||||||
|
|
||||||
<ContentView.Resources>
|
<ContentView.Resources>
|
||||||
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="Label_Converter"/>
|
<conv:StringNotNullOrEmptyToVisibleConverter x:Key="Label_Converter"/>
|
||||||
|
<conv:BoolInverterConverter x:Key="BoolInverterConverter"/>
|
||||||
|
<x:String x:Key="InfoCircle"></x:String>
|
||||||
|
<x:String x:Key="LocationPin"></x:String>
|
||||||
|
<x:String x:Key="CityPin"></x:String>
|
||||||
|
<x:String x:Key="ArrowReturnBack"></x:String>
|
||||||
</ContentView.Resources>
|
</ContentView.Resources>
|
||||||
|
|
||||||
<Frame
|
<Frame
|
||||||
|
@ -113,8 +118,17 @@
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
Spacing="0"
|
Spacing="0"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
VerticalOptions="End"
|
VerticalOptions="End">
|
||||||
|
<StackLayout
|
||||||
|
Spacing="0"
|
||||||
IsVisible="{Binding AaRideType}">
|
IsVisible="{Binding AaRideType}">
|
||||||
|
<StackLayout.Triggers>
|
||||||
|
<DataTrigger TargetType="StackLayout"
|
||||||
|
Binding="{Binding Path=IsVisible}"
|
||||||
|
Value="false">
|
||||||
|
<Setter Property="HeightRequest" Value="0" />
|
||||||
|
</DataTrigger>
|
||||||
|
</StackLayout.Triggers>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
HorizontalOptions="End">
|
HorizontalOptions="End">
|
||||||
|
@ -158,6 +172,62 @@
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
HorizontalOptions="End"/>
|
HorizontalOptions="End"/>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
<!-- BikeIsBoundToCityArea -->
|
||||||
|
<!-- later, when value comes from backend: IsVisible="{Binding CityAreaType}"-->
|
||||||
|
<StackLayout
|
||||||
|
Spacing="0"
|
||||||
|
IsVisible="{Binding IsBikeBoundToCity}">
|
||||||
|
<StackLayout.Triggers>
|
||||||
|
<DataTrigger TargetType="StackLayout"
|
||||||
|
Binding="{Binding Path=IsVisible}"
|
||||||
|
Value="false">
|
||||||
|
<Setter Property="HeightRequest" Value="0" />
|
||||||
|
</DataTrigger>
|
||||||
|
</StackLayout.Triggers>
|
||||||
|
<StackLayout
|
||||||
|
Orientation="Horizontal"
|
||||||
|
HorizontalOptions="End">
|
||||||
|
<Image>
|
||||||
|
<Image.Source>
|
||||||
|
<FontImageSource
|
||||||
|
Glyph="{StaticResource CityPin}"
|
||||||
|
Color="Black"
|
||||||
|
FontFamily="FA-S"
|
||||||
|
Size="20"/>
|
||||||
|
</Image.Source>
|
||||||
|
</Image>
|
||||||
|
<Image>
|
||||||
|
<Image.Source>
|
||||||
|
<FontImageSource
|
||||||
|
Glyph="{StaticResource ArrowReturnBack}"
|
||||||
|
Color="Black"
|
||||||
|
FontFamily="FA-S"
|
||||||
|
Size="20"/>
|
||||||
|
</Image.Source>
|
||||||
|
</Image>
|
||||||
|
<Button
|
||||||
|
Command="{Binding ShowBikeIsBoundToCityInfoCommand}"
|
||||||
|
WidthRequest="24"
|
||||||
|
HeightRequest="24"
|
||||||
|
BackgroundColor="Transparent"
|
||||||
|
BorderWidth="0"
|
||||||
|
Padding="0"
|
||||||
|
Margin="5,0,0,0">
|
||||||
|
<Button.ImageSource>
|
||||||
|
<FontImageSource
|
||||||
|
Glyph="{StaticResource InfoCircle}"
|
||||||
|
Color="DimGray"
|
||||||
|
FontFamily="FA-S"
|
||||||
|
Size="20"/>
|
||||||
|
</Button.ImageSource>
|
||||||
|
</Button>
|
||||||
|
</StackLayout>
|
||||||
|
<Label
|
||||||
|
Text="{x:Static resources:AppResources.MarkingBikeIsBoundToCity}"
|
||||||
|
FontSize="Small"
|
||||||
|
HorizontalOptions="End"/>
|
||||||
|
</StackLayout>
|
||||||
|
</StackLayout>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
|
|
|
@ -250,7 +250,7 @@ namespace TINK.View.BikesAtStation
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using Serilog;
|
using Serilog;
|
||||||
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;
|
||||||
|
@ -29,8 +29,11 @@ namespace TINK.View.Contact
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
var l_oModel = App.ModelRoot;
|
||||||
|
|
||||||
ViewModel = new ContactPageViewModel(
|
ViewModel = new ContactPageViewModel(
|
||||||
App.ModelRoot.Flavor.GetDisplayName(),
|
App.ModelRoot.Flavor.GetDisplayName(),
|
||||||
|
l_oModel,
|
||||||
() => App.CreateAttachment(),
|
() => App.CreateAttachment(),
|
||||||
() => DependencyService.Get<IExternalBrowserService>().OpenUrl(DependencyService.Get<IAppInfo>().StoreUrl),
|
() => DependencyService.Get<IExternalBrowserService>().OpenUrl(DependencyService.Get<IAppInfo>().StoreUrl),
|
||||||
this);
|
this);
|
||||||
|
@ -121,7 +124,7 @@ namespace TINK.View.Contact
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
|
|
|
@ -118,7 +118,7 @@ namespace TINK.View.Contact
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace TINK.View
|
||||||
/// <param name="battery">Object holding info about battery. For some batteries charging level might need to be updated by user.</param>
|
/// <param name="battery">Object holding info about battery. For some batteries charging level might need to be updated by user.</param>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
public FeedbackPopup(
|
public FeedbackPopup(
|
||||||
IBattery battery = null,
|
IBatteryMutable battery = null,
|
||||||
string co2Saving = null)
|
string co2Saving = null)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
|
@ -1,8 +1,17 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
|
<TabbedPage
|
||||||
|
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"
|
||||||
x:Class="TINK.View.Contact.FeesAndBikesPage">
|
x:Class="TINK.View.Contact.FeesAndBikesPage"
|
||||||
|
Style="{StaticResource TabbedPageStyle}">
|
||||||
|
|
||||||
|
<TabbedPage.Resources>
|
||||||
|
<x:String x:Key="IconSmartphone"></x:String>
|
||||||
|
<x:String x:Key="IconTariff"></x:String>
|
||||||
|
<x:String x:Key="IconFaq"></x:String>
|
||||||
|
</TabbedPage.Resources>
|
||||||
|
|
||||||
<Shell.TitleView>
|
<Shell.TitleView>
|
||||||
<Grid ColumnDefinitions="Auto, 1*">
|
<Grid ColumnDefinitions="Auto, 1*">
|
||||||
<Image Style="{StaticResource Image-Navbar}"/>
|
<Image Style="{StaticResource Image-Navbar}"/>
|
||||||
|
@ -10,18 +19,35 @@
|
||||||
Text="{x:Static resources:AppResources.MarkingFeesAndBikes}"/>
|
Text="{x:Static resources:AppResources.MarkingFeesAndBikes}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Shell.TitleView>
|
</Shell.TitleView>
|
||||||
<!--Pages can be added as references or inline-->
|
|
||||||
|
<!--Pages can be added as references or in line-->
|
||||||
<ContentPage
|
<ContentPage
|
||||||
|
x:Name="FaqPage"
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabBikes}">
|
Title="FAQ">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconFaq}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<WebView
|
RowDefinitions="Auto,*,Auto"
|
||||||
x:Name="InfoTypesOfBikesWebView"
|
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"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000"
|
WidthRequest="1000"
|
||||||
Source="{Binding TypesOfBikesText}"/>
|
Source="{Binding FAQ}"/>
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
@ -32,16 +58,68 @@
|
||||||
</ContentPage.Content>
|
</ContentPage.Content>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
<ContentPage
|
<ContentPage
|
||||||
|
x:Name="ManualPage"
|
||||||
|
IsEnabled="{Binding IsIdle}"
|
||||||
|
Title="{x:Static resources:AppResources.MarkingTabBikes}">
|
||||||
|
<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="InfoTypesOfBikesWebView"
|
||||||
|
HeightRequest="1000"
|
||||||
|
WidthRequest="1000"
|
||||||
|
Source="{Binding TypesOfBikesText}"/>
|
||||||
|
<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}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabFees}">
|
Title="{x:Static resources:AppResources.MarkingTabFees}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconTariff}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<WebView
|
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="InfoRentBikeWebView"
|
x:Name="InfoRentBikeWebView"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000"
|
WidthRequest="1000"
|
||||||
Source="{Binding RentBikeText}"/>
|
Source="{Binding RentBikeText}"/>
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
using System.Globalization;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
using TINK.ViewModel;
|
using TINK.ViewModel;
|
||||||
using TINK.ViewModel.Contact;
|
using TINK.ViewModel.Contact;
|
||||||
|
@ -36,6 +37,7 @@ namespace TINK.View.Contact
|
||||||
App.ModelRoot.ResourceUrls.FeesResourcePath,
|
App.ModelRoot.ResourceUrls.FeesResourcePath,
|
||||||
App.ModelRoot.ResourceUrls.BikesResourcePath,
|
App.ModelRoot.ResourceUrls.BikesResourcePath,
|
||||||
App.ModelRoot.IsSiteCachingOn,
|
App.ModelRoot.IsSiteCachingOn,
|
||||||
|
CultureInfo.CurrentUICulture.TwoLetterISOLanguageName,
|
||||||
() => App.ModelRoot.GetConnector(App.ModelRoot.GetIsConnected()).Query,
|
() => App.ModelRoot.GetConnector(App.ModelRoot.GetIsConnected()).Query,
|
||||||
resourceUrls => App.ModelRoot.ResourceUrls = resourceUrls);
|
resourceUrls => App.ModelRoot.ResourceUrls = resourceUrls);
|
||||||
|
|
||||||
|
|
|
@ -177,7 +177,7 @@ namespace TINK.View.FindBike
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
|
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ namespace TINK.View.Info.BikeInfo
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,16 @@
|
||||||
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.Info.InfoPage"
|
x:Class="TINK.View.Info.InfoPage"
|
||||||
|
Style="{StaticResource TabbedPageStyle}"
|
||||||
x:Name="TabbedInfoPage">
|
x:Name="TabbedInfoPage">
|
||||||
|
|
||||||
|
<TabbedPage.Resources>
|
||||||
|
<x:String x:Key="IconSmartphone"></x:String>
|
||||||
|
<x:String x:Key="IconPersonSafety"></x:String>
|
||||||
|
<x:String x:Key="IconDataSafety"></x:String>
|
||||||
|
<x:String x:Key="IconLegalInfo"></x:String>
|
||||||
|
</TabbedPage.Resources>
|
||||||
|
|
||||||
<Shell.TitleView>
|
<Shell.TitleView>
|
||||||
<Grid ColumnDefinitions="Auto, 1*">
|
<Grid ColumnDefinitions="Auto, 1*">
|
||||||
<Image Style="{StaticResource Image-Navbar}"/>
|
<Image Style="{StaticResource Image-Navbar}"/>
|
||||||
|
@ -11,21 +20,34 @@
|
||||||
Text="{x:Static resources:AppResources.MarkingAbout}"/>
|
Text="{x:Static resources:AppResources.MarkingAbout}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Shell.TitleView>
|
</Shell.TitleView>
|
||||||
<!--Pages can be added as references or inline-->
|
|
||||||
|
<!--Pages can be added as references or in line-->
|
||||||
<ContentPage
|
<ContentPage
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabApp}">
|
Title="{x:Static resources:AppResources.MarkingTabApp}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconSmartphone}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
x:Name="InfoLicenses"
|
x:Name="InfoLicenses"
|
||||||
Source="{Binding InfoLicenses}"
|
Source="{Binding InfoLicenses}"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000" />
|
WidthRequest="1000" />
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
@ -38,17 +60,29 @@
|
||||||
<ContentPage
|
<ContentPage
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabPrivacy}">
|
Title="{x:Static resources:AppResources.MarkingTabPrivacy}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconPersonSafety}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
x:Name="InfoDatenschutz"
|
x:Name="InfoDatenschutz"
|
||||||
Source="{Binding InfoPrivacy}"
|
Source="{Binding InfoPrivacy}"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000" />
|
WidthRequest="1000" />
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
@ -61,17 +95,29 @@
|
||||||
<ContentPage
|
<ContentPage
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabGtc}">
|
Title="{x:Static resources:AppResources.MarkingTabGtc}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconDataSafety}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
x:Name="InfoABG"
|
x:Name="InfoABG"
|
||||||
Source ="{Binding InfoAgb}"
|
Source ="{Binding InfoAgb}"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000" />
|
WidthRequest="1000" />
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
@ -84,17 +130,29 @@
|
||||||
<ContentPage
|
<ContentPage
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabImpress}">
|
Title="{x:Static resources:AppResources.MarkingTabImpress}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconLegalInfo}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
x:Name="InfoImpressum"
|
x:Name="InfoImpressum"
|
||||||
Source="{Binding InfoImpressum}"
|
Source="{Binding InfoImpressum}"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000" />
|
WidthRequest="1000" />
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
|
|
@ -121,7 +121,7 @@ namespace TINK.View.Login
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,12 +128,12 @@
|
||||||
<TapGestureRecognizer Command="{Binding OnMyBikesButtonClicked}" />
|
<TapGestureRecognizer Command="{Binding OnMyBikesButtonClicked}" />
|
||||||
</Frame.GestureRecognizers>
|
</Frame.GestureRecognizers>
|
||||||
<Grid
|
<Grid
|
||||||
RowDefinitions="18,Auto,1*"
|
RowDefinitions="20,Auto,1*"
|
||||||
ColumnDefinitions="Auto"
|
ColumnDefinitions="Auto"
|
||||||
RowSpacing="0">
|
RowSpacing="0">
|
||||||
<Image
|
<Image
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Margin="-5">
|
Margin="-3">
|
||||||
<Image.Source>
|
<Image.Source>
|
||||||
<FontImageSource
|
<FontImageSource
|
||||||
Glyph="{StaticResource IconMyBikes}"
|
Glyph="{StaticResource IconMyBikes}"
|
||||||
|
|
|
@ -121,7 +121,7 @@ namespace TINK.View.Map
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
|
|
|
@ -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.ViewModel.MiniSurvey;
|
using TINK.ViewModel.MiniSurvey;
|
||||||
|
@ -93,7 +93,7 @@ namespace TINK.View.MiniSurvey
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -181,7 +181,7 @@ namespace TINK.View.MyBikes
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
xmlns:header="clr-namespace:TINK.View.RootShell"
|
xmlns:header="clr-namespace:TINK.View.RootShell"
|
||||||
Title="Shell"
|
Title="Shell"
|
||||||
x:Class="TINK.View.RootShell.AppShell">
|
x:Class="TINK.View.RootShell.AppShell">
|
||||||
|
|
||||||
<Shell.FlyoutHeader>
|
<Shell.FlyoutHeader>
|
||||||
<header:FlyoutHeader/>
|
<header:FlyoutHeader/>
|
||||||
</Shell.FlyoutHeader>
|
</Shell.FlyoutHeader>
|
||||||
|
@ -20,73 +21,95 @@
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
<ShellContent
|
<ShellContent
|
||||||
Title="{x:Static resources:AppResources.MarkingMapPage}"
|
Title="{x:Static resources:AppResources.MarkingMapPage}"
|
||||||
Icon="menu_bikelocations.png"
|
|
||||||
Route="MapPage"
|
Route="MapPage"
|
||||||
ContentTemplate="{DataTemplate mappage:MapPage}"/>
|
ContentTemplate="{DataTemplate mappage:MapPage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconMap}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
<ShellContent
|
<ShellContent
|
||||||
Title="{x:Static resources:AppResources.MarkingFindBike}"
|
Title="{x:Static resources:AppResources.MarkingFindBike}"
|
||||||
Icon="menu_looking.png"
|
|
||||||
IsVisible="{Binding IsFindBikePageVisible}"
|
IsVisible="{Binding IsFindBikePageVisible}"
|
||||||
ContentTemplate="{DataTemplate findbike:FindBikePage}">
|
ContentTemplate="{DataTemplate findbike:FindBikePage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconFindBike}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
</ShellContent>
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
<ShellContent
|
<ShellContent
|
||||||
Title="{x:Static resources:AppResources.MarkingMyBikes}"
|
Title="{x:Static resources:AppResources.MarkingMyBikes}"
|
||||||
Icon="menu_mybikes.png"
|
|
||||||
IsVisible="{Binding IsMyBikesPageVisible}"
|
IsVisible="{Binding IsMyBikesPageVisible}"
|
||||||
ContentTemplate="{DataTemplate mybikes:MyBikesPage}">
|
ContentTemplate="{DataTemplate mybikes:MyBikesPage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconMyBikes}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
</ShellContent>
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
<ShellContent
|
<ShellContent
|
||||||
Title="{x:Static resources:AppResources.MarkingAccount}"
|
Title="{x:Static resources:AppResources.MarkingAccount}"
|
||||||
Icon="menu_account.png"
|
|
||||||
IsVisible="{Binding IsAccountPageVisible}"
|
IsVisible="{Binding IsAccountPageVisible}"
|
||||||
ContentTemplate="{DataTemplate account:AccountPage}">
|
ContentTemplate="{DataTemplate account:AccountPage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconAccount}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
</ShellContent>
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
<ShellContent
|
<ShellContent
|
||||||
Title="{x:Static resources:AppResources.MarkingLogin}"
|
Title="{x:Static resources:AppResources.MarkingLogin}"
|
||||||
Icon="menu_account.png"
|
|
||||||
Route="LoginPage"
|
Route="LoginPage"
|
||||||
IsVisible="{Binding IsLoginPageVisible}"
|
IsVisible="{Binding IsLoginPageVisible}"
|
||||||
ContentTemplate="{DataTemplate login:LoginPage}">
|
ContentTemplate="{DataTemplate login:LoginPage}">
|
||||||
</ShellContent>
|
<ShellContent.FlyoutIcon>
|
||||||
</FlyoutItem>
|
<FontImageSource Glyph="{StaticResource IconLogin}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
</ShellContent.FlyoutIcon>
|
||||||
<ShellContent
|
|
||||||
Title="{x:Static resources:AppResources.MarkingSettings}"
|
|
||||||
Icon="menu_settings.png"
|
|
||||||
ContentTemplate="{DataTemplate settings:SettingsPage}">
|
|
||||||
</ShellContent>
|
|
||||||
</FlyoutItem>
|
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
|
||||||
<ShellContent
|
|
||||||
Title="{x:Static resources:AppResources.MarkingFeesAndBikes}"
|
|
||||||
Icon="menu_using.png"
|
|
||||||
ContentTemplate="{DataTemplate contact:FeesAndBikesPage}">
|
|
||||||
</ShellContent>
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
<ShellContent
|
<ShellContent
|
||||||
Title="{x:Static resources:AppResources.MarkingFeedbackAndContact}"
|
Title="{x:Static resources:AppResources.MarkingFeedbackAndContact}"
|
||||||
Icon="menu_contact.png"
|
|
||||||
Route="ContactPage"
|
Route="ContactPage"
|
||||||
ContentTemplate="{DataTemplate contact:ContactPage}">
|
ContentTemplate="{DataTemplate contact:ContactPage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconContact}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
|
</ShellContent>
|
||||||
|
</FlyoutItem>
|
||||||
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
|
<ShellContent
|
||||||
|
Title="{x:Static resources:AppResources.MarkingSettings}"
|
||||||
|
ContentTemplate="{DataTemplate settings:SettingsPage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconSettings}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
|
</ShellContent>
|
||||||
|
</FlyoutItem>
|
||||||
|
|
||||||
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
|
<ShellContent
|
||||||
|
Title="{x:Static resources:AppResources.MarkingFeesAndBikes}"
|
||||||
|
ContentTemplate="{DataTemplate contact:FeesAndBikesPage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconFeesAndBikes}" Color="DimGray" FontFamily="FA-S"/>
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
</ShellContent>
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
<ShellContent
|
<ShellContent
|
||||||
Title="{Binding TabbedPageIngoTitle}"
|
Title="{Binding TabbedPageIngoTitle}"
|
||||||
Icon="menu_info.png"
|
|
||||||
ContentTemplate="{DataTemplate info:InfoPage}">
|
ContentTemplate="{DataTemplate info:InfoPage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconLegalInfo}" Color="DimGray" FontFamily="FA-S" />
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
</ShellContent>
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
|
|
||||||
<Shell.FlyoutFooter>
|
<Shell.FlyoutFooter>
|
||||||
<header:FlyoutFooter/>
|
<header:FlyoutFooter/>
|
||||||
</Shell.FlyoutFooter>
|
</Shell.FlyoutFooter>
|
||||||
|
|
||||||
</Shell>
|
</Shell>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
|
<ContentView 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"
|
||||||
|
@ -7,14 +7,16 @@
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="80"/>
|
<RowDefinition Height="80"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Image Grid.Row="0"
|
||||||
<ColumnDefinition Width="75"/>
|
Source="menu_swk_theme.png"
|
||||||
<ColumnDefinition Width="1*"/>
|
Aspect="AspectFill"/>
|
||||||
</Grid.ColumnDefinitions>
|
<Label Grid.Row="0"
|
||||||
<Image Source="menu_swk_theme.png"
|
FontSize="20"
|
||||||
Aspect="AspectFill"
|
TextTransform="Uppercase"
|
||||||
Grid.ColumnSpan="2"/>
|
TextColor="White"
|
||||||
<Label Style="{StaticResource Label-Navbar}"
|
VerticalOptions="Center"
|
||||||
|
HorizontalOptions="Start"
|
||||||
|
Padding="20"
|
||||||
Text="{x:Static resources:AppResources.MarkingFlyoutHeader}"/>
|
Text="{x:Static resources:AppResources.MarkingFlyoutHeader}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</ContentView>
|
</ContentView>
|
|
@ -1,4 +1,4 @@
|
||||||
using TINK.ViewModel;
|
using TINK.ViewModel;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using Xamarin.Forms.Xaml;
|
using Xamarin.Forms.Xaml;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -150,7 +150,7 @@ namespace TINK.View.Settings
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USERFEEDBACKDLG_TRYOUT
|
#if USERFEEDBACKDLG_TRYOUT
|
||||||
|
|
|
@ -77,7 +77,7 @@ namespace TINK.View.WhatsNew.Agb
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -80,7 +80,7 @@ namespace TINK.View.WhatsNew
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -1,8 +1,3 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using ShareeSharedGuiLib.ViewModel;
|
using ShareeSharedGuiLib.ViewModel;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using Xamarin.Forms.Xaml;
|
using Xamarin.Forms.Xaml;
|
||||||
|
@ -24,7 +19,7 @@ namespace ShareeSharedGuiLib.View
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create bindable property to to allow "Maximum"- proptery to act as a valid target for data binding.
|
/// Create bindable property to allow "Maximum"- property to act as a valid target for data binding.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly BindableProperty MaximumProperty = BindableProperty.Create(
|
public static readonly BindableProperty MaximumProperty = BindableProperty.Create(
|
||||||
"Maximum",
|
"Maximum",
|
||||||
|
@ -34,7 +29,7 @@ namespace ShareeSharedGuiLib.View
|
||||||
propertyChanged: OnMaximumChanged);
|
propertyChanged: OnMaximumChanged);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds the count of bars wich represent charing level full.
|
/// Holds the count of bars which represent charing level full.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Maximum
|
public string Maximum
|
||||||
{
|
{
|
||||||
|
@ -58,7 +53,7 @@ namespace ShareeSharedGuiLib.View
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create bindable property to to allow "Current"- proptery to act as a valid target for data binding.
|
/// Create bindable property to allow "Current"- property to act as a valid target for data binding.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly BindableProperty CurrentProperty = BindableProperty.Create(
|
public static readonly BindableProperty CurrentProperty = BindableProperty.Create(
|
||||||
"Current",
|
"Current",
|
||||||
|
@ -68,7 +63,7 @@ namespace ShareeSharedGuiLib.View
|
||||||
propertyChanged: OnCurrentChanged);
|
propertyChanged: OnCurrentChanged);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds the count of bars wich represent the current charing level.
|
/// Holds the count of bars which represent the current charing level.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Current
|
public string Current
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?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.370" android:versionCode="370">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.hauffware.sharee" android:versionName="3.0.371" android:versionCode="371">
|
||||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="33" />
|
<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 -->
|
||||||
|
|
|
@ -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>370</string>
|
<string>371</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>3.0.370</string>
|
<string>3.0.371</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -15,10 +15,11 @@
|
||||||
<x:String x:Key="IconAccount"></x:String>
|
<x:String x:Key="IconAccount"></x:String>
|
||||||
<x:String x:Key="IconLogin"></x:String>
|
<x:String x:Key="IconLogin"></x:String>
|
||||||
<x:String x:Key="IconSettings"></x:String>
|
<x:String x:Key="IconSettings"></x:String>
|
||||||
<x:String x:Key="IconFeesAndBikes"></x:String>
|
<x:String x:Key="IconFeesAndBikes"></x:String>
|
||||||
<x:String x:Key="IconContact"></x:String>
|
<x:String x:Key="IconContact"></x:String>
|
||||||
<x:String x:Key="IconInfo"></x:String>
|
<x:String x:Key="IconInfo"></x:String>
|
||||||
<x:String x:Key="IconClose"></x:String>
|
<x:String x:Key="IconClose"></x:String>
|
||||||
|
<x:String x:Key="IconLegalInfo"></x:String>
|
||||||
|
|
||||||
<!--TogglePasswortEntry-->
|
<!--TogglePasswortEntry-->
|
||||||
<x:String x:Key="EyeOpen"></x:String>
|
<x:String x:Key="EyeOpen"></x:String>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using TINK.ViewModel;
|
using TINK.ViewModel;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using Xamarin.Forms.Xaml;
|
using Xamarin.Forms.Xaml;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -150,7 +150,7 @@ namespace TINK.View.Account
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -250,7 +250,7 @@ namespace TINK.View.BikesAtStation
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using Serilog;
|
using Serilog;
|
||||||
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;
|
||||||
|
@ -29,8 +29,11 @@ namespace TINK.View.Contact
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
var l_oModel = App.ModelRoot;
|
||||||
|
|
||||||
ViewModel = new ContactPageViewModel(
|
ViewModel = new ContactPageViewModel(
|
||||||
App.ModelRoot.Flavor.GetDisplayName(),
|
App.ModelRoot.Flavor.GetDisplayName(),
|
||||||
|
l_oModel,
|
||||||
() => App.CreateAttachment(),
|
() => App.CreateAttachment(),
|
||||||
() => DependencyService.Get<IExternalBrowserService>().OpenUrl(DependencyService.Get<IAppInfo>().StoreUrl),
|
() => DependencyService.Get<IExternalBrowserService>().OpenUrl(DependencyService.Get<IAppInfo>().StoreUrl),
|
||||||
this);
|
this);
|
||||||
|
@ -122,7 +125,7 @@ namespace TINK.View.Contact
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
|
|
|
@ -117,7 +117,7 @@ namespace TINK.View.Contact
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace TINK.View
|
||||||
/// <param name="battery">Object holding info about battery. For some batteries charging level might need to be updated by user.</param>
|
/// <param name="battery">Object holding info about battery. For some batteries charging level might need to be updated by user.</param>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
public FeedbackPopup(
|
public FeedbackPopup(
|
||||||
IBattery battery = null,
|
IBatteryMutable battery = null,
|
||||||
string co2Saving = null)
|
string co2Saving = null)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
|
@ -1,29 +1,52 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
|
<TabbedPage
|
||||||
|
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"
|
||||||
x:Class="TINK.View.Contact.FeesAndBikesPage">
|
x:Class="TINK.View.Contact.FeesAndBikesPage"
|
||||||
|
Style="{StaticResource TabbedPageStyle}">
|
||||||
|
|
||||||
|
<TabbedPage.Resources>
|
||||||
|
<x:String x:Key="IconSmartphone"></x:String>
|
||||||
|
<x:String x:Key="IconTariff"></x:String>
|
||||||
|
<x:String x:Key="IconFaq"></x:String>
|
||||||
|
</TabbedPage.Resources>
|
||||||
|
|
||||||
<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.MarkingFeesAndBikes}"/>
|
Text="{x:Static resources:AppResources.MarkingFeesAndBikes}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Shell.TitleView>
|
</Shell.TitleView>
|
||||||
<!--Pages can be added as references or inline-->
|
|
||||||
|
<!--Pages can be added as references or in line-->
|
||||||
<ContentPage
|
<ContentPage
|
||||||
|
x:Name="FaqPage"
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabBikes}">
|
Title="FAQ">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconFaq}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
x:Name="InfoTypesOfBikesWebView"
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
|
x:Name="FAQWebView"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000"
|
WidthRequest="1000"
|
||||||
Source="{Binding TypesOfBikesText}"/>
|
Source="{Binding FAQ}"/>
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
@ -34,19 +57,68 @@
|
||||||
</ContentPage.Content>
|
</ContentPage.Content>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
<ContentPage
|
<ContentPage
|
||||||
|
x:Name="ManualPage"
|
||||||
|
IsEnabled="{Binding IsIdle}"
|
||||||
|
Title="{x:Static resources:AppResources.MarkingTabBikes}">
|
||||||
|
<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="InfoTypesOfBikesWebView"
|
||||||
|
HeightRequest="1000"
|
||||||
|
WidthRequest="1000"
|
||||||
|
Source="{Binding TypesOfBikesText}"/>
|
||||||
|
<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}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabFees}">
|
Title="{x:Static resources:AppResources.MarkingTabFees}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconTariff}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
x:Name="InfoRentBikeWebView"
|
x:Name="InfoRentBikeWebView"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000"
|
WidthRequest="1000"
|
||||||
Source="{Binding RentBikeText}"/>
|
Source="{Binding RentBikeText}"/>
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
using System.Globalization;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
using TINK.ViewModel;
|
using TINK.ViewModel;
|
||||||
using TINK.ViewModel.Contact;
|
using TINK.ViewModel.Contact;
|
||||||
|
@ -36,6 +37,7 @@ namespace TINK.View.Contact
|
||||||
App.ModelRoot.ResourceUrls.FeesResourcePath,
|
App.ModelRoot.ResourceUrls.FeesResourcePath,
|
||||||
App.ModelRoot.ResourceUrls.BikesResourcePath,
|
App.ModelRoot.ResourceUrls.BikesResourcePath,
|
||||||
App.ModelRoot.IsSiteCachingOn,
|
App.ModelRoot.IsSiteCachingOn,
|
||||||
|
CultureInfo.CurrentUICulture.TwoLetterISOLanguageName,
|
||||||
() => App.ModelRoot.GetConnector(App.ModelRoot.GetIsConnected()).Query,
|
() => App.ModelRoot.GetConnector(App.ModelRoot.GetIsConnected()).Query,
|
||||||
resourceUrls => App.ModelRoot.ResourceUrls = resourceUrls);
|
resourceUrls => App.ModelRoot.ResourceUrls = resourceUrls);
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ namespace TINK.View.FindBike
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ namespace TINK.View.Info.BikeInfo
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,28 +3,50 @@
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
x:Class="TINK.View.Info.InfoPage"
|
x:Class="TINK.View.Info.InfoPage"
|
||||||
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
|
||||||
|
Style="{StaticResource TabbedPageStyle}"
|
||||||
x:Name="TabbedInfoPage">
|
x:Name="TabbedInfoPage">
|
||||||
|
|
||||||
|
<TabbedPage.Resources>
|
||||||
|
<x:String x:Key="IconSmartphone"></x:String>
|
||||||
|
<x:String x:Key="IconPersonSafety"></x:String>
|
||||||
|
<x:String x:Key="IconDataSafety"></x:String>
|
||||||
|
<x:String x:Key="IconLegalInfo"></x:String>
|
||||||
|
</TabbedPage.Resources>
|
||||||
|
|
||||||
<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.MarkingAbout}"/>
|
Text="{x:Static resources:AppResources.MarkingAbout}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Shell.TitleView>
|
</Shell.TitleView>
|
||||||
<!--Pages can be added as references or inline-->
|
|
||||||
|
<!--Pages can be added as references or in line-->
|
||||||
<ContentPage
|
<ContentPage
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabApp}">
|
Title="{x:Static resources:AppResources.MarkingTabApp}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconSmartphone}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
x:Name="InfoLicenses"
|
x:Name="InfoLicenses"
|
||||||
Source="{Binding InfoLicenses}"
|
Source="{Binding InfoLicenses}"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000" />
|
WidthRequest="1000" />
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
@ -37,17 +59,29 @@
|
||||||
<ContentPage
|
<ContentPage
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabPrivacy}">
|
Title="{x:Static resources:AppResources.MarkingTabPrivacy}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconPersonSafety}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
x:Name="InfoDatenschutz"
|
x:Name="InfoDatenschutz"
|
||||||
Source="{Binding InfoPrivacy}"
|
Source="{Binding InfoPrivacy}"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000" />
|
WidthRequest="1000" />
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
@ -60,17 +94,29 @@
|
||||||
<ContentPage
|
<ContentPage
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabGtc}">
|
Title="{x:Static resources:AppResources.MarkingTabGtc}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconDataSafety}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
x:Name="InfoABG"
|
x:Name="InfoABG"
|
||||||
Source ="{Binding InfoAgb}"
|
Source ="{Binding InfoAgb}"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000" />
|
WidthRequest="1000" />
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
@ -83,17 +129,29 @@
|
||||||
<ContentPage
|
<ContentPage
|
||||||
IsEnabled="{Binding IsIdle}"
|
IsEnabled="{Binding IsIdle}"
|
||||||
Title="{x:Static resources:AppResources.MarkingTabImpress}">
|
Title="{x:Static resources:AppResources.MarkingTabImpress}">
|
||||||
|
<ContentPage.IconImageSource>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconLegalInfo}" FontFamily="FA-S" />
|
||||||
|
</ContentPage.IconImageSource>
|
||||||
<ContentPage.Content>
|
<ContentPage.Content>
|
||||||
<Grid>
|
<Grid
|
||||||
<Grid.RowDefinitions>
|
RowDefinitions="Auto,*,Auto"
|
||||||
<RowDefinition Height="*"/>
|
RowSpacing="0">
|
||||||
</Grid.RowDefinitions>
|
<BoxView Grid.Row="0"
|
||||||
<WebView
|
HeightRequest="1"
|
||||||
|
WidthRequest="400"
|
||||||
|
HorizontalOptions="Center"
|
||||||
|
Color="{x:DynamicResource primary-back-title-color}"/>
|
||||||
|
<WebView Grid.Row="1"
|
||||||
x:Name="InfoImpressum"
|
x:Name="InfoImpressum"
|
||||||
Source="{Binding InfoImpressum}"
|
Source="{Binding InfoImpressum}"
|
||||||
HeightRequest="1000"
|
HeightRequest="1000"
|
||||||
WidthRequest="1000" />
|
WidthRequest="1000" />
|
||||||
<ActivityIndicator Grid.Row="0"
|
<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}}"
|
IsRunning="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
IsVisible="{Binding IsIdle, Converter={StaticResource InvertedBoolConverter}}"
|
||||||
Scale="2"
|
Scale="2"
|
||||||
|
|
|
@ -121,7 +121,7 @@ namespace TINK.View.Login
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,12 +126,12 @@
|
||||||
<TapGestureRecognizer Command="{Binding OnMyBikesButtonClicked}" />
|
<TapGestureRecognizer Command="{Binding OnMyBikesButtonClicked}" />
|
||||||
</Frame.GestureRecognizers>
|
</Frame.GestureRecognizers>
|
||||||
<Grid
|
<Grid
|
||||||
RowDefinitions="18,Auto,1*"
|
RowDefinitions="20,Auto,1*"
|
||||||
ColumnDefinitions="Auto"
|
ColumnDefinitions="Auto"
|
||||||
RowSpacing="0">
|
RowSpacing="0">
|
||||||
<Image
|
<Image
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Margin="-5">
|
Margin="-3">
|
||||||
<Image.Source>
|
<Image.Source>
|
||||||
<FontImageSource
|
<FontImageSource
|
||||||
Glyph="{StaticResource IconMyBikes}"
|
Glyph="{StaticResource IconMyBikes}"
|
||||||
|
|
|
@ -121,7 +121,7 @@ namespace TINK.View.Map
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USEFLYOUT
|
#if USEFLYOUT
|
||||||
|
|
|
@ -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.ViewModel.MiniSurvey;
|
using TINK.ViewModel.MiniSurvey;
|
||||||
|
@ -93,7 +93,7 @@ namespace TINK.View.MiniSurvey
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -181,7 +181,7 @@ namespace TINK.View.MyBikes
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,24 +70,6 @@
|
||||||
</ShellContent.FlyoutIcon>
|
</ShellContent.FlyoutIcon>
|
||||||
</ShellContent>
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
|
||||||
<ShellContent
|
|
||||||
Title="{x:Static resources:AppResources.MarkingSettings}"
|
|
||||||
ContentTemplate="{DataTemplate settings:SettingsPage}">
|
|
||||||
<ShellContent.FlyoutIcon>
|
|
||||||
<FontImageSource Glyph="{StaticResource IconSettings}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
|
||||||
</ShellContent.FlyoutIcon>
|
|
||||||
</ShellContent>
|
|
||||||
</FlyoutItem>
|
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
|
||||||
<ShellContent
|
|
||||||
Title="{x:Static resources:AppResources.MarkingFeesAndBikes}"
|
|
||||||
ContentTemplate="{DataTemplate contact:FeesAndBikesPage}">
|
|
||||||
<ShellContent.FlyoutIcon>
|
|
||||||
<FontImageSource Glyph="{StaticResource IconFeesAndBikes}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
|
||||||
</ShellContent.FlyoutIcon>
|
|
||||||
</ShellContent>
|
|
||||||
</FlyoutItem>
|
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
<ShellContent
|
<ShellContent
|
||||||
Title="{x:Static resources:AppResources.MarkingFeedbackAndContact}"
|
Title="{x:Static resources:AppResources.MarkingFeedbackAndContact}"
|
||||||
|
@ -98,12 +80,31 @@
|
||||||
</ShellContent.FlyoutIcon>
|
</ShellContent.FlyoutIcon>
|
||||||
</ShellContent>
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
|
<ShellContent
|
||||||
|
Title="{x:Static resources:AppResources.MarkingSettings}"
|
||||||
|
ContentTemplate="{DataTemplate settings:SettingsPage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconSettings}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
|
</ShellContent>
|
||||||
|
</FlyoutItem>
|
||||||
|
|
||||||
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
|
<ShellContent
|
||||||
|
Title="{x:Static resources:AppResources.MarkingFeesAndBikes}"
|
||||||
|
ContentTemplate="{DataTemplate contact:FeesAndBikesPage}">
|
||||||
|
<ShellContent.FlyoutIcon>
|
||||||
|
<FontImageSource Glyph="{StaticResource IconFeesAndBikes}" Color="DimGray" FontFamily="FA-S"/>
|
||||||
|
</ShellContent.FlyoutIcon>
|
||||||
|
</ShellContent>
|
||||||
|
</FlyoutItem>
|
||||||
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
|
||||||
<ShellContent
|
<ShellContent
|
||||||
Title="{Binding TabbedPageIngoTitle}"
|
Title="{Binding TabbedPageIngoTitle}"
|
||||||
ContentTemplate="{DataTemplate info:InfoPage}">
|
ContentTemplate="{DataTemplate info:InfoPage}">
|
||||||
<ShellContent.FlyoutIcon>
|
<ShellContent.FlyoutIcon>
|
||||||
<FontImageSource Glyph="{StaticResource IconInfo}" Color="{DynamicResource Key=primary-back-title-color}" FontFamily="FA-S" />
|
<FontImageSource Glyph="{StaticResource IconLegalInfo}" Color="DimGray" FontFamily="FA-S" />
|
||||||
</ShellContent.FlyoutIcon>
|
</ShellContent.FlyoutIcon>
|
||||||
</ShellContent>
|
</ShellContent>
|
||||||
</FlyoutItem>
|
</FlyoutItem>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using TINK.ViewModel;
|
using TINK.ViewModel;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using Xamarin.Forms.Xaml;
|
using Xamarin.Forms.Xaml;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -150,7 +150,7 @@ namespace TINK.View.Settings
|
||||||
/// <summary> Displays user feedback popup.</summary>
|
/// <summary> Displays user feedback popup.</summary>
|
||||||
/// <param name="co2Saving"> Co2 saving information.</param>
|
/// <param name="co2Saving"> Co2 saving information.</param>
|
||||||
/// <returns>User feedback.</returns>
|
/// <returns>User feedback.</returns>
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(battery, co2Saving));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if USERFEEDBACKDLG_TRYOUT
|
#if USERFEEDBACKDLG_TRYOUT
|
||||||
|
|
|
@ -77,7 +77,7 @@ namespace TINK.View.WhatsNew.Agb
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -80,7 +80,7 @@ namespace TINK.View.WhatsNew
|
||||||
#if USCSHARP9
|
#if USCSHARP9
|
||||||
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
|
||||||
#else
|
#else
|
||||||
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBattery battery = null, string co2Saving = null) => throw new NotSupportedException();
|
public async Task<IUserFeedback> DisplayUserFeedbackPopup(IBatteryMutable battery = null, string co2Saving = null) => throw new NotSupportedException();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds the drive object.
|
/// Holds the drive object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Drive Drive { get; }
|
public DriveMutable Drive { get; }
|
||||||
|
|
||||||
/// <summary> Gets the information where the data origins from. </summary>
|
/// <summary> Gets the information where the data origins from. </summary>
|
||||||
public DataSource DataSource { get; }
|
public DataSource DataSource { get; }
|
||||||
|
@ -32,7 +32,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
|
||||||
protected BikeInfo(
|
protected BikeInfo(
|
||||||
IStateInfo stateInfo,
|
IStateInfo stateInfo,
|
||||||
Bike bike,
|
Bike bike,
|
||||||
Drive drive,
|
DriveMutable drive,
|
||||||
DataSource dataSource,
|
DataSource dataSource,
|
||||||
bool? isDemo = DEFAULTVALUEISDEMO,
|
bool? isDemo = DEFAULTVALUEISDEMO,
|
||||||
IEnumerable<string> group = null,
|
IEnumerable<string> group = null,
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
|
||||||
private readonly Bike _Bike;
|
private readonly Bike _Bike;
|
||||||
|
|
||||||
/// <summary> Holds the drive of the bike. </summary>
|
/// <summary> Holds the drive of the bike. </summary>
|
||||||
private readonly Drive _Drive;
|
private readonly DriveMutable _Drive;
|
||||||
|
|
||||||
/// <summary> Holds the state info of the bike. </summary>
|
/// <summary> Holds the state info of the bike. </summary>
|
||||||
private readonly StateInfoMutable _StateInfo;
|
private readonly StateInfoMutable _StateInfo;
|
||||||
|
@ -31,7 +31,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
|
||||||
/// <param name="stateInfo">Bike state info.</param>
|
/// <param name="stateInfo">Bike state info.</param>
|
||||||
protected BikeInfoMutable(
|
protected BikeInfoMutable(
|
||||||
Bike bike,
|
Bike bike,
|
||||||
Drive drive,
|
DriveMutable drive,
|
||||||
DataSource dataSource,
|
DataSource dataSource,
|
||||||
bool isDemo = BikeInfo.DEFAULTVALUEISDEMO,
|
bool isDemo = BikeInfo.DEFAULTVALUEISDEMO,
|
||||||
IEnumerable<string> group = null,
|
IEnumerable<string> group = null,
|
||||||
|
@ -105,7 +105,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
|
||||||
|
|
||||||
public string Description => _Bike.Description;
|
public string Description => _Bike.Description;
|
||||||
|
|
||||||
public Drive Drive => _Drive;
|
public DriveMutable Drive => _Drive;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fired whenever property of bike changes.
|
/// Fired whenever property of bike changes.
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds the drive.
|
/// Holds the drive.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Drive Drive { get; }
|
DriveMutable Drive { get; }
|
||||||
|
|
||||||
/// <summary> Gets or sets the information where the data origins from. </summary>
|
/// <summary> Gets or sets the information where the data origins from. </summary>
|
||||||
DataSource DataSource { get; }
|
DataSource DataSource { get; }
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BC
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Hold the drive object.
|
/// Hold the drive object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Drive Drive { get; }
|
DriveMutable Drive { get; }
|
||||||
|
|
||||||
/// <summary> Gets or sets the information where the data origins from. </summary>
|
/// <summary> Gets or sets the information where the data origins from. </summary>
|
||||||
DataSource DataSource { get; set; }
|
DataSource DataSource { get; set; }
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
|
||||||
/// <param name="tariffDescription">Hold tariff description of bike.</param>
|
/// <param name="tariffDescription">Hold tariff description of bike.</param>
|
||||||
public BikeInfo(
|
public BikeInfo(
|
||||||
Bike bike,
|
Bike bike,
|
||||||
Drive drive,
|
DriveMutable drive,
|
||||||
DataSource dataSource,
|
DataSource dataSource,
|
||||||
int lockId,
|
int lockId,
|
||||||
Guid lockGuid,
|
Guid lockGuid,
|
||||||
|
@ -65,7 +65,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
|
||||||
/// <param name="dateTimeProvider">Date time provider to calculate remaining time.</param>
|
/// <param name="dateTimeProvider">Date time provider to calculate remaining time.</param>
|
||||||
public BikeInfo(
|
public BikeInfo(
|
||||||
Bike bike,
|
Bike bike,
|
||||||
Drive drive,
|
DriveMutable drive,
|
||||||
DataSource dataSource,
|
DataSource dataSource,
|
||||||
int lockId,
|
int lockId,
|
||||||
Guid lockGuid,
|
Guid lockGuid,
|
||||||
|
@ -121,7 +121,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock
|
||||||
/// <param name="wheelType"></param>
|
/// <param name="wheelType"></param>
|
||||||
public BikeInfo(
|
public BikeInfo(
|
||||||
Bike bike,
|
Bike bike,
|
||||||
Drive drive,
|
DriveMutable drive,
|
||||||
DataSource dataSource,
|
DataSource dataSource,
|
||||||
int lockId,
|
int lockId,
|
||||||
Guid lockGuid,
|
Guid lockGuid,
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock.Command
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Possible steps of closing a lock.
|
/// Possible states of closing a lock.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum State
|
public enum State
|
||||||
{
|
{
|
||||||
|
@ -182,7 +182,8 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock.Command
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start query geolocation data.
|
//// Start Action
|
||||||
|
//// Step: Start query geolocation data.
|
||||||
Log.ForContext<T>().Debug($"Starting step {Step.StartingQueryingLocation}...");
|
Log.ForContext<T>().Debug($"Starting step {Step.StartingQueryingLocation}...");
|
||||||
InvokeCurrentStep(Step.StartingQueryingLocation);
|
InvokeCurrentStep(Step.StartingQueryingLocation);
|
||||||
var ctsLocation = new CancellationTokenSource();
|
var ctsLocation = new CancellationTokenSource();
|
||||||
|
@ -199,7 +200,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock.Command
|
||||||
await InvokeCurrentStateAsync(State.StartGeolocationException, ex.Message);
|
await InvokeCurrentStateAsync(State.StartGeolocationException, ex.Message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close lock.
|
//// Step: Close lock.
|
||||||
IGeolocation currentLocation;
|
IGeolocation currentLocation;
|
||||||
Log.ForContext<T>().Debug($"Starting step {Step.ClosingLock}...");
|
Log.ForContext<T>().Debug($"Starting step {Step.ClosingLock}...");
|
||||||
InvokeCurrentStep(Step.ClosingLock);
|
InvokeCurrentStep(Step.ClosingLock);
|
||||||
|
@ -236,7 +237,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock.Command
|
||||||
// Signal cts to cancel getting geolocation.
|
// Signal cts to cancel getting geolocation.
|
||||||
ctsLocation.Cancel();
|
ctsLocation.Cancel();
|
||||||
|
|
||||||
//// Step: Wait until getting geolocation and stop polling has completed.
|
// Wait until getting geolocation and stop polling has completed.
|
||||||
currentLocation = await WaitForPendingTasks(currentLocationTask);
|
currentLocation = await WaitForPendingTasks(currentLocationTask);
|
||||||
|
|
||||||
// Update current state from exception
|
// Update current state from exception
|
||||||
|
@ -256,7 +257,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock.Command
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step: Update backend.
|
// Update backend.
|
||||||
// Do this even if current lock state is open (lock state must not necessarily be open before try to open, i.e. something undefined between open and closed).
|
// Do this even if current lock state is open (lock state must not necessarily be open before try to open, i.e. something undefined between open and closed).
|
||||||
await UpdateLockingState(currentLocation, timeStampNow);
|
await UpdateLockingState(currentLocation, timeStampNow);
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,8 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock.Command
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//// Start Action
|
||||||
|
//// Step: Start query geolocation data.
|
||||||
InvokeCurrentStep(Step.StartingQueryLocation);
|
InvokeCurrentStep(Step.StartingQueryLocation);
|
||||||
|
|
||||||
// Get geolocation which was requested when closing lock.
|
// Get geolocation which was requested when closing lock.
|
||||||
|
@ -123,7 +125,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.BluetoothLock.Command
|
||||||
|
|
||||||
await InvokeCurrentStateAsync(State.DisconnetedNoLocationError, "");
|
await InvokeCurrentStateAsync(State.DisconnetedNoLocationError, "");
|
||||||
|
|
||||||
// Disconnect lock.
|
//// Step: Disconnect lock.
|
||||||
InvokeCurrentStep(Step.DisconnectingLockOnDisconnectedNoLocationError);
|
InvokeCurrentStep(Step.DisconnectingLockOnDisconnectedNoLocationError);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.CopriLock
|
||||||
/// <param name="tariffDescription">Hold tariff description of bike.</param>
|
/// <param name="tariffDescription">Hold tariff description of bike.</param>
|
||||||
public BikeInfo(
|
public BikeInfo(
|
||||||
Bike bike,
|
Bike bike,
|
||||||
Drive drive,
|
DriveMutable drive,
|
||||||
DataSource dataSource,
|
DataSource dataSource,
|
||||||
string currentStationId,
|
string currentStationId,
|
||||||
LockInfo lockInfo,
|
LockInfo lockInfo,
|
||||||
|
@ -70,7 +70,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.CopriLock
|
||||||
/// <param name="dateTimeProvider">Provider for current date time to calculate remaining time on demand for state of type reserved.</param>
|
/// <param name="dateTimeProvider">Provider for current date time to calculate remaining time on demand for state of type reserved.</param>
|
||||||
public BikeInfo(
|
public BikeInfo(
|
||||||
Bike bike,
|
Bike bike,
|
||||||
Drive drive,
|
DriveMutable drive,
|
||||||
DataSource dataSource,
|
DataSource dataSource,
|
||||||
DateTime requestedAt,
|
DateTime requestedAt,
|
||||||
string mailAddress,
|
string mailAddress,
|
||||||
|
@ -122,7 +122,7 @@ namespace TINK.Model.Bikes.BikeInfoNS.CopriLock
|
||||||
/// <param name="tariffDescription">Hold tariff description of bike.</param>
|
/// <param name="tariffDescription">Hold tariff description of bike.</param>
|
||||||
public BikeInfo(
|
public BikeInfo(
|
||||||
Bike bike,
|
Bike bike,
|
||||||
Drive drive,
|
DriveMutable drive,
|
||||||
DataSource dataSource,
|
DataSource dataSource,
|
||||||
DateTime bookedAt,
|
DateTime bookedAt,
|
||||||
string mailAddress,
|
string mailAddress,
|
||||||
|
|
|
@ -2,32 +2,35 @@ using Serilog;
|
||||||
|
|
||||||
namespace TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS
|
namespace TINK.Model.Bikes.BikeInfoNS.DriveNS.BatteryNS
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Holds the state of a chargeable battery.
|
||||||
|
/// </summary>
|
||||||
public class Battery : IBattery
|
public class Battery : IBattery
|
||||||
{
|
{
|
||||||
private Battery() { }
|
private Battery() { }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds the current charging level of the battery in percent, double.NaN if unknown.
|
/// Gets the current charging level of the battery in percent, double.NaN if unknown.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double CurrentChargePercent { get; private set; } = double.NaN;
|
public double CurrentChargePercent { get; private set; } = double.NaN;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds the current charging level of the battery in bars, null if unknown.
|
/// Gets the current charging level of the battery in bars, null if unknown.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? CurrentChargeBars { get; private set; } = null;
|
public int? CurrentChargeBars { get; private set; } = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds the maximum charging level of the battery in bars, null if unknown.
|
/// Gets the maximum charging level of the battery in bars, null if unknown.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? MaxChargeBars { get; private set; } = null;
|
public int? MaxChargeBars { get; private set; } = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds whether backend is aware of battery charging level.
|
/// Gets whether backend is aware of battery charging level.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool? IsBackendAccessible { get; private set; } = null;
|
public bool? IsBackendAccessible { get; private set; } = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holds whether to display battery level or not.
|
/// Gets whether to display battery level or not.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool? IsHidden { get; private set; } = null;
|
public bool? IsHidden { get; private set; } = null;
|
||||||
|
|
||||||
|
|