3.0.267 merged

This commit is contained in:
Oliver Hauff 2022-01-04 18:54:03 +01:00
parent b6fb6394db
commit 67999ef4ae
171 changed files with 6473 additions and 1093 deletions

View file

@ -10,7 +10,7 @@
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>TINK.Droid</RootNamespace>
<AssemblyName>TINK.Android</AssemblyName>
<AssemblyName>LastenradBayern.Android</AssemblyName>
<FileAlignment>512</FileAlignment>
<AndroidApplication>true</AndroidApplication>
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
@ -60,11 +60,13 @@
<BundleAssemblies>false</BundleAssemblies>
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
<MandroidI18n />
<AndroidPackageFormat>apk</AndroidPackageFormat>
<AndroidPackageFormat>aab</AndroidPackageFormat>
<AndroidUseAapt2>true</AndroidUseAapt2>
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.3" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.4" />
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageReference Include="MonkeyCache">
<Version>1.5.2</Version>
@ -163,34 +165,37 @@
<PackageReference Include="Xamarin.Android.Support.v7.RecyclerView" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.Vector.Drawable" Version="28.0.0.3" />
<PackageReference Include="Xamarin.AndroidX.Core">
<Version>1.6.0.1</Version>
<Version>1.6.0.3</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.MediaRouter">
<Version>1.2.5</Version>
<Version>1.2.5.2</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.Palette">
<Version>1.0.0.8</Version>
<Version>1.0.0.10</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.RecyclerView">
<Version>1.2.1.1</Version>
<Version>1.2.1.3</Version>
</PackageReference>
<PackageReference Include="Xamarin.Auth" Version="1.7.0" />
<PackageReference Include="Xamarin.Build.Download" Version="0.10.0" />
<PackageReference Include="Xamarin.CommunityToolkit">
<Version>1.2.0</Version>
<Version>1.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.7.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2125" />
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2196" />
<PackageReference Include="Xamarin.Forms.AppLinks">
<Version>5.0.0.2244</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms.GoogleMaps">
<Version>3.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms.GoogleMaps.Bindings" Version="3.0.0" />
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="117.6.0" />
<PackageReference Include="Xamarin.GooglePlayServices.Basement" Version="117.6.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Maps" Version="117.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Tasks" Version="117.2.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="117.6.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Basement" Version="117.6.0.2" />
<PackageReference Include="Xamarin.GooglePlayServices.Maps" Version="117.0.1.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Tasks" Version="117.2.1.1" />
</ItemGroup>
<ItemGroup>
<Reference Include="Mono.Android" />
@ -218,6 +223,7 @@
<None Include="app.config">
<SubType>Designer</SubType>
</None>
<GoogleServicesJson Include="google-services.json" />
<None Include="Resources\AboutResources.txt" />
<None Include="Assets\AboutAssets.txt" />
<EmbeddedResource Include="Resources\Font Awesome 5 Free-Solid-900.otf" />
@ -646,24 +652,6 @@
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
</AndroidResource>
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-hdpi\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-mdpi\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-xhdpi\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-xxhdpi\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-xxxhdpi\sharee_no_background.png" />
</ItemGroup>
<Import Project="..\TINK\LastenradBayern.projitems" Label="Shared" Condition="Exists('..\TINK\LastenradBayern.projitems')" />
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<ProjectExtensions>

View file

@ -5,11 +5,28 @@ using Android.OS;
using Android.Content;
using Java.Interop;
using Plugin.Permissions;
using Xamarin.Forms.Platform.Android.AppLinks;
using Firebase;
namespace TINK.Droid
{
[Activity (Label = "Sharee", Icon = "@drawable/sharee", Theme="@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
[Activity (Label = "LastenradBayern", Icon = "@drawable/sharee", Theme="@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
[IntentFilter(new[] { Intent.ActionView },
Categories = new[] { Intent.ActionView, Intent.CategoryBrowsable, Intent.CategoryDefault },
DataScheme = "https",
DataHost = "sharee.bike",
DataPathPrefix = "/lastenrad",
AutoVerify = true)]
[IntentFilter(new[] { Intent.ActionView },
Categories = new[] { Intent.ActionView, Intent.CategoryBrowsable, Intent.CategoryDefault },
DataScheme = "http",
DataHost = "sharee.bike",
DataPathPrefix = "/lastenrad",
AutoVerify = true)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate (Bundle bundle)
{
@ -20,6 +37,9 @@ namespace TINK.Droid
global::Xamarin.Forms.Forms.Init (this, bundle);
FirebaseApp.InitializeApp(this);
AndroidAppLinks.Init(this);
// Initialize xamarin.essentials, see https://docs.microsoft.com/en-us/xamarin/essentials/get-started?tabs=macos%2Candroid.
Xamarin.Essentials.Platform.Init(this, bundle);
@ -51,7 +71,7 @@ namespace TINK.Droid
if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Essentials.Permissions))
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
else if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Plugin.Permissions))
{
// Bug in 3.0.244 and earlier versions of sharee.bike app: Call of PermissionsImplementation.Current.OnRequestedPermission result was missing.

View file

@ -1,8 +1,10 @@
<?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.257" android:versionCode="257">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.LastenradBayern" android:versionName="3.0.267" android:versionCode="267">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
<!-- Google Maps related permissions -->
<permission android:name="com.ecs.google.maps.v2.actionbarsherlock.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
<!-- Permission to receive remote notifications from Google Play Services -->
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
<permission android:name="com.TeilRad.LastenradBayern.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
<!-- Network connectivity permissions -->
<!-- Access Google based webservices -->
<!-- External storage for caching. -->
@ -16,5 +18,5 @@
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
<application android:icon="@drawable/sharee" android:label="LastenradBayern" android:allowBackup="false"></application>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="000000000000000000000000000000000000000" />
<meta-data android:name="com.google.android.geo.API_KEY" android:value="000000000000000000000000000000000000000" />
</manifest>

View file

@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Android.App;
@ -7,11 +7,11 @@ using Xamarin.Forms;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TINK.Android")]
[assembly: AssemblyTitle("LastenradBayern.Android")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TINK.Android")]
[assembly: AssemblyProduct("LastenradBayern.Android")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -40,6 +40,6 @@ using Xamarin.Forms;
[assembly: Application(Debuggable = false)]
#endif
[assembly: MetaData("com.google.android.maps.v2.API_KEY", Value = "000000000000000000000000000000000000000")]
[assembly: MetaData("com.google.android.geo.API_KEY", Value = "000000000000000000000000000000000000000")]
[assembly: ExportFont("Font Awesome 5 Free-Solid-900.otf", Alias = "FA-S")]

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Foundation;
using Foundation;
using UIKit;
using Xamarin.Forms;

View file

@ -6,5 +6,9 @@
<array>
<string>$(AppIdentifierPrefix)com.TeilRad.sharee.bike</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:sharee.bike</string>
</array>
</dict>
</plist>

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
@ -30,6 +30,8 @@
<string>Media.xcassets/LaunchImages.launchimage</string>
<key>CFBundleName</key>
<string>LastenradBayern</string>
<key>XSAppIconAssets</key>
<string>Media.xcassets/AppIcons.appiconset</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Is required to communicate with Bluetooth lock.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
@ -47,10 +49,8 @@
<key>CFBundleDisplayName</key>
<string>LastenradBayern</string>
<key>CFBundleVersion</key>
<string>257</string>
<string>267</string>
<key>CFBundleShortVersionString</key>
<string>3.0.257</string>
<key>XSAppIconAssets</key>
<string>Media.xcassets/AppIcons.appiconset</string>
<string>3.0.267</string>
</dict>
</plist>

View file

@ -9,7 +9,7 @@
<OutputType>Exe</OutputType>
<RootNamespace>TINK.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>TINK.iOS</AssemblyName>
<AssemblyName>LastenradBayern.iOS</AssemblyName>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<ReleaseVersion>3.0</ReleaseVersion>
@ -53,12 +53,11 @@
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignKey>Apple Development: Oliver Hauff (8SZ7J9P24J)</CodesignKey>
<CodesignKey>iPhone Developer</CodesignKey>
<MtouchDebug>true</MtouchDebug>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignProvision>VS: WildCard Development</CodesignProvision>
<MtouchLink>SdkOnly</MtouchLink>
<AssemblyName>LastenradBayern.iOS</AssemblyName>
<MtouchLink>None</MtouchLink>
<MtouchInterpreter>-all</MtouchInterpreter>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugType>none</DebugType>
@ -69,15 +68,14 @@
<WarningLevel>4</WarningLevel>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<ConsolePause>false</ConsolePause>
<CodesignKey>Apple Development: Oliver Hauff (8SZ7J9P24J)</CodesignKey>
<CodesignKey>Apple Distribution: TeilRad GmbH (LXJD6URCHR)</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignProvision>VS: WildCard Development</CodesignProvision>
<CodesignProvision>LastenradBayern to App Store 3</CodesignProvision>
<IpaIncludeArtwork>
</IpaIncludeArtwork>
<CrashReportingApiKey>
</CrashReportingApiKey>
<MtouchLink>SdkOnly</MtouchLink>
<AssemblyName>LastenradBayern.iOS</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
<DebugType>none</DebugType>
@ -95,7 +93,6 @@
<MtouchNoSymbolStrip>
</MtouchNoSymbolStrip>
<MtouchLink>SdkOnly</MtouchLink>
<AssemblyName>LastenradBayern.iOS</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' ">
<DebugType>none</DebugType>
@ -110,7 +107,6 @@
<CodesignKey>Apple Development: Oliver Hauff (8SZ7J9P24J)</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<MtouchLink>SdkOnly</MtouchLink>
<AssemblyName>LastenradBayern.iOS</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
<AppExtensionDebugBundleId />
@ -118,7 +114,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Bcl.Build" Version="1.0.21" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.3" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.4" />
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageReference Include="MonkeyCache">
<Version>1.5.2</Version>
@ -195,7 +191,7 @@
<PackageReference Include="Xamarin.Auth" Version="1.7.0" />
<PackageReference Include="Xamarin.Build.Download" Version="0.10.0" />
<PackageReference Include="Xamarin.CommunityToolkit">
<Version>1.2.0</Version>
<Version>1.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.7.0</Version>
@ -218,7 +214,7 @@
<Version>0.7.104</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms">
<Version>5.0.0.2125</Version>
<Version>5.0.0.2196</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
@ -1425,30 +1421,58 @@
<ImageAsset Include="Media.xcassets\Open_Red.imageset\StationMarkerOpenRed.pdf">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\40.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\60.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\58.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\87.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\80.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\120.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\120-1.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\180.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\20.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\40-1.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\29.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\58-1.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\40-2.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\80-1.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\76.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\152.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\167.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\1024.png" />
<ImageAsset Include="Media.xcassets\LaunchImage.launchimage\Contents.json" />
<ImageAsset Include="Media.xcassets\LaunchImage.launchimage\Default.png" />
<ImageAsset Include="Media.xcassets\LaunchImage.launchimage\Default%402x.png" />
<ImageAsset Include="Media.xcassets\LaunchImage.launchimage\Default-568h%402x.png" />
<ImageAsset Include="Media.xcassets\LaunchImage.launchimage\Default-Portrait.png" />
<ImageAsset Include="Media.xcassets\LaunchImage.launchimage\Default-Portrait%402x.png" />
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-40.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-60.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-58.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-87.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-80.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-120.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-120-1.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-180.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-20.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-40-1.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-29.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-58-1.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-40-2.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-80-1.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-76.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-152.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-167.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\iTunesArtwork%402x.png" />
</ItemGroup>
<ItemGroup>
<Folder Include="Media.xcassets\01_Blue.imageset\" />
@ -1571,11 +1595,11 @@
<Folder Include="Media.xcassets\30_Green.imageset\" />
<Folder Include="Media.xcassets\30_LightBlue.imageset\" />
<Folder Include="Media.xcassets\30_Red.imageset\" />
<Folder Include="Media.xcassets\AppIcon-LastenradBayern.appiconset\" />
<Folder Include="Media.xcassets\Open_Blue.imageset\" />
<Folder Include="Media.xcassets\Open_Green.imageset\" />
<Folder Include="Media.xcassets\Open_LightBlue.imageset\" />
<Folder Include="Media.xcassets\Open_Red.imageset\" />
<Folder Include="Media.xcassets\AppIcon-LastenradBayern.appiconset\" />
</ItemGroup>
<Import Project="..\TINK\LastenradBayern.projitems" Label="Shared" Condition="Exists('..\TINK\LastenradBayern.projitems')" />
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />

View file

@ -1,109 +1,109 @@
{
"images": [
{
"filename": "40.png",
"filename": "Icon-40.png",
"size": "20x20",
"scale": "2x",
"idiom": "iphone"
},
{
"filename": "60.png",
"filename": "Icon-60.png",
"size": "20x20",
"scale": "3x",
"idiom": "iphone"
},
{
"filename": "58.png",
"filename": "Icon-58.png",
"size": "29x29",
"scale": "2x",
"idiom": "iphone"
},
{
"filename": "87.png",
"filename": "Icon-87.png",
"size": "29x29",
"scale": "3x",
"idiom": "iphone"
},
{
"filename": "80.png",
"filename": "Icon-80.png",
"size": "40x40",
"scale": "2x",
"idiom": "iphone"
},
{
"filename": "120.png",
"filename": "Icon-120.png",
"size": "40x40",
"scale": "3x",
"idiom": "iphone"
},
{
"filename": "120-1.png",
"filename": "Icon-120-1.png",
"size": "60x60",
"scale": "2x",
"idiom": "iphone"
},
{
"filename": "180.png",
"filename": "Icon-180.png",
"size": "60x60",
"scale": "3x",
"idiom": "iphone"
},
{
"filename": "20.png",
"filename": "Icon-20.png",
"size": "20x20",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "40-1.png",
"filename": "Icon-40-1.png",
"size": "20x20",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "29.png",
"filename": "Icon-29.png",
"size": "29x29",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "58-1.png",
"filename": "Icon-58-1.png",
"size": "29x29",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "40-2.png",
"filename": "Icon-40-2.png",
"size": "40x40",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "80-1.png",
"filename": "Icon-80-1.png",
"size": "40x40",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "167.png",
"filename": "Icon-167.png",
"size": "83.5x83.5",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "76.png",
"filename": "Icon-76.png",
"size": "76x76",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "152.png",
"filename": "Icon-152.png",
"size": "76x76",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "1024.png",
"filename": "iTunesArtwork@2x.png",
"size": "1024x1024",
"scale": "1x",
"idiom": "ios-marketing"

View file

@ -5,11 +5,11 @@ using Xamarin.Forms;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TINK.iOS")]
[assembly: AssemblyTitle("LastenradBayern.iOS")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TINK.iOS")]
[assembly: AssemblyProduct("LastenradBayern.iOS")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -21,7 +21,8 @@
<rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0"/>
</imageView>
</subviews>
<color key="backgroundColor" red="0.20392156862745098" green="0.4983606557377049180327868852459" blue="0.5016393442622950819672131147541" alpha="1" colorSpace="calibratedRGB"/>
<!--Color # -->
<color key="backgroundColor" red="0.0" green="0.596078431372549" blue="0,6" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="23" firstAttribute="centerY" secondItem="yd7-JS-zBw" secondAttribute="centerY" priority="1" id="39"/>
<constraint firstItem="23" firstAttribute="centerX" secondItem="yd7-JS-zBw" secondAttribute="centerX" priority="1" id="41"/>

View file

@ -83,8 +83,8 @@ namespace TINK
try
{
settings = new Model.Settings.Settings(
JsonSettingsDictionary.GetGroupFilterMapPage(settingsJSON),
JsonSettingsDictionary.GetGoupFilterSettings(settingsJSON),
null, // Turn off filtering for LastenradBayern- context
null, // Turn off filtering for LastenradBayern- context
JsonSettingsDictionary.GetCopriHostUri(settingsJSON),
JsonSettingsDictionary.GetPollingParameters(settingsJSON),
JsonSettingsDictionary.GetMinimumLoggingLevel(settingsJSON),
@ -94,6 +94,7 @@ namespace TINK
JsonSettingsDictionary.GetConnectTimeout(settingsJSON),
JsonSettingsDictionary.GetActiveGeolocationService(settingsJSON),
JsonSettingsDictionary.GetCenterMapToCurrentLocation(settingsJSON),
Xamarin.Forms.GoogleMaps.MapSpan.FromCenterAndRadius(new Xamarin.Forms.GoogleMaps.Position(49.30881083492271, 11.358449625922889), Xamarin.Forms.GoogleMaps.Distance.FromKilometers(2.9)),
JsonSettingsDictionary.GetLogToExternalFolder(settingsJSON),
JsonSettingsDictionary.GetIsSiteCachingOn(settingsJSON),
JsonSettingsDictionary.GetActiveTheme(settingsJSON) ?? typeof(Themes.LastenradBayern).FullName);
@ -145,7 +146,7 @@ namespace TINK
m_oModelRoot = new TinkApp(
settings,
store, // Manages user account
(isConnected, activeUri, sessionCookie, mail, expiresAfter) => ConnectorFactory.Create(isConnected, activeUri, $"sharee.bike/{appInfoService.Version}", sessionCookie, mail, expiresAfter),
(isConnected, activeUri, sessionCookie, mail, expiresAfter) => ConnectorFactory.Create(isConnected, activeUri, new Repository.AppContextInfo("baei987w", "LastenradBayern", appInfoService.Version), sessionCookie, mail, expiresAfter),
GeolocationServicesContainer,
null, /* locksService */
DependencyService.Get<ISmartDevice>(),
@ -255,6 +256,30 @@ namespace TINK
.CreateLogger();
}
/// <param name="uri">The URI for the request.</param>
/// <summary>Overriden to respond when the user initiates an app link request.</summary>
protected override void OnAppLinkRequestReceived(Uri uri)
{
base.OnAppLinkRequestReceived(uri);
if (uri.Host.ToLower() == "sharee.bike")
{
// Input e.g. sharee.bike/sharee?lat=49.921&long=32.51
Array segments = Array.ConvertAll(uri.Segments, segment => segment.Replace("/", "")).Skip(1).ToArray();
if (uri.Query.Length > 0)
{
Dictionary<string, string> queryDict = uri.Query
.Substring(1)
.Split("&")
.Select(query => query.Split('='))
.ToDictionary(query => query.FirstOrDefault(), query => query.Skip(1).FirstOrDefault());
}
// segments == ["sharee"]
// queryDict == [{["lat", "49.921"]}], {["long", "32.51"]}]
// => Navigate and pass params depending on linkinput
// If no custom navigation is configured, the app just opens as if the user opened it
}
}
/// <summary> Gets the current logging level.</summary>
/// <returns></returns>
private static LogEventLevel GetCurrentLogEventLevel()
@ -283,7 +308,7 @@ namespace TINK
if (_PermissionsService != null)
return _PermissionsService;
_PermissionsService = new Services.Permissions.Plugin.Permissions();
_PermissionsService = new Services.Permissions.Essentials.Permissions();
return _PermissionsService;
}
}

View file

@ -23,7 +23,7 @@
<br />Version ACTIVE_APPNAME: <b>CURRENT_VERSION_TINKAPP</b>.
<div class="content_title2">Entwickler</div>
<div style=""></div>
<br />Programmierung ACTIVE_APPNAME: O. Hauff, o.hauff@sharee.bike.<br />
<br />Programmierung ACTIVE_APPNAME: O. Hauff, app@sharee.bike<br />
<div class="content_title2">Verwendete Bibliotheken</div>
<div style=""></div>
<br /><table>

View file

@ -149,7 +149,7 @@ namespace TINK.View.Account
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -37,6 +37,7 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@ -84,6 +85,12 @@
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
Grid.Row="4"
Grid.Column="1"/>
<Label
TextType="Html"
Text="{Binding TariffDescription.OperatorAgb}"
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
Grid.Row="5"
Grid.ColumnSpan="3"/>
</Grid>
</StackLayout>
</ContentView>

View file

@ -49,6 +49,7 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@ -96,6 +97,12 @@
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
Grid.Row="4"
Grid.Column="1"/>
<Label
TextType="Html"
Text="{Binding TariffDescription.OperatorAgb}"
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
Grid.Row="5"
Grid.ColumnSpan="3"/>
</Grid>
</StackLayout>
</ContentView>

View file

@ -14,58 +14,73 @@
<Frame>
<StackLayout
Orientation="Vertical">
<Label
HorizontalOptions="Center"
FontAttributes="Bold"
Text="{Binding StationDetailText}"/>
<ListView
x:Name="BikesAtStationListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
<!-- Title bar stack layout-->
<StackLayout
Orientation="Vertical">
<Label
HorizontalOptions="Center"
FontAttributes="Bold"
TextColor="{DynamicResource primary-back-title-color}"
Text="{Binding StationDetailText}"/>
<BoxView
HeightRequest="1"
Color="{DynamicResource primary-back-title-color}"/>
</StackLayout>
<!-- Center stack layout -->
<StackLayout
Orientation="Vertical"
VerticalOptions="CenterAndExpand">
<ListView
x:Name="BikesAtStationListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
IsVisible="{Binding IsNoBikesAtStationVisible}"
VerticalOptions="EndAndExpand"
Text="{Binding NoBikesAtStationText}"/>
<Label
TextType="Html"
Text="{Binding ContactSupportHintText}">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ContactSupportClickedCommand}"/>
</Label.GestureRecognizers>
</Label>
<Label
</StackLayout>
<!-- Status bar stack layout-->
<StackLayout
Orientation="Vertical">
<Label
TextType="Html"
Text="{Binding ContactSupportHintText}">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ContactSupportClickedCommand}"/>
</Label.GestureRecognizers>
</Label>
<Label
IsVisible="{Binding IsLoginRequiredHintVisible}"
TextType="Html"
Text="{Binding LoginRequiredHintText}">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding LoginRequiredHintClickedCommand}"/>
</Label.GestureRecognizers>
</Label>
<StackLayout
VerticalOptions="EndAndExpand"
Orientation="Horizontal">
<Label
HeightRequest="20"
Text="{Binding StatusInfoText}"
VerticalOptions="Center"
HorizontalOptions="FillAndExpand"/>
<ActivityIndicator IsRunning="{Binding IsRunning}"
IsVisible="{Binding IsRunning}"
HeightRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="End">
<ActivityIndicator.WidthRequest>
<OnPlatform x:TypeArguments="x:Double" iOS="40" Android="40" WinPhone="40" />
</ActivityIndicator.WidthRequest>
<ActivityIndicator.Color>
<OnPlatform x:TypeArguments="Color"
iOS="#2499CE" WinPhone="#2499CE" />
</ActivityIndicator.Color>
</ActivityIndicator>
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding LoginRequiredHintClickedCommand}"/>
</Label.GestureRecognizers>
</Label>
<StackLayout
Orientation="Horizontal">
<Label
HeightRequest="20"
Text="{Binding StatusInfoText}"
VerticalOptions="Center"
HorizontalOptions="FillAndExpand"/>
<ActivityIndicator IsRunning="{Binding IsRunning}"
IsVisible="{Binding IsRunning}"
HeightRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="End">
<ActivityIndicator.WidthRequest>
<OnPlatform x:TypeArguments="x:Double" iOS="40" Android="40" WinPhone="40" />
</ActivityIndicator.WidthRequest>
<ActivityIndicator.Color>
<OnPlatform x:TypeArguments="Color"
iOS="#2499CE" WinPhone="#2499CE" />
</ActivityIndicator.Color>
</ActivityIndicator>
</StackLayout>
</StackLayout>
</StackLayout>
</Frame>

View file

@ -11,7 +11,7 @@ namespace TINK.View.BikesAtStation
using System.Threading.Tasks;
using TINK.Model.Device;
#if USEFLYOUT
using TINK.View.MasterDetail;
using TINK.View.MasterDetail;
#endif
using TINK.ViewModel;
using TINK.Model;
@ -33,6 +33,9 @@ using TINK.View.MasterDetail;
{
private BikesAtStationPageViewModel m_oViewModel;
/// <summary> Initialization status to ensure initialization logic is not called multiple times. </summary>
private bool isInitializationStarted = false;
#if TRYNOTBACKSTYLE
public BikesAtStationPage()
{
@ -62,6 +65,10 @@ using TINK.View.MasterDetail;
/// </summary>
protected async override void OnAppearing()
{
// Don't repeat the initialization if it has been completed already.
if (isInitializationStarted) return;
isInitializationStarted = true;
if (m_oViewModel != null)
{
#if BACKSTYLE
@ -167,7 +174,7 @@ using TINK.View.MasterDetail;
/// <param name="cancel">Text of button.</param>
/// <returns>True if user pressed accept.</returns>
public new async Task<bool> DisplayAlert(string title, string message, string accept, string cancel)
=> await App.Current.MainPage.DisplayAlert(title, message, accept, cancel);
=> await App.Current.MainPage.DisplayAlert(title, message, accept, cancel);
/// <summary> Displays detailed alert message.</summary>
/// <param name="title">Title of message.</param>
@ -228,7 +235,10 @@ using TINK.View.MasterDetail;
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}
}
}

View file

@ -88,7 +88,7 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -114,7 +114,7 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -12,11 +12,14 @@
<Grid.RowDefinitions>
<!-- Head and title row -->
<RowDefinition Height="auto"/>
<!--- Co2saving-->
<RowDefinition Height="auto"/>
<!--- checkbox and input elements-->
<RowDefinition Height="*"/>
<!--- ok button-->
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<!-- Head and title -->
<Grid
Padding="30"
BackgroundColor="{DynamicResource primary-back-title-color}">
@ -34,7 +37,16 @@
</Image.Source>
</Image>
</Grid>
<ScrollView Grid.Row="1">
<!-- Co2saving -->
<Frame
x:Name="Co2SavingFrame"
Grid.Row="1">
<Label
x:Name="Co2SavingLabel"
Text=""/>
</Frame>
<!-- Checkbox and input elements -->
<ScrollView Grid.Row="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
@ -77,8 +89,9 @@
</StackLayout>
</Grid>
</ScrollView>
<!-- Buttons -->
<Button
Grid.Row="2"
Grid.Row="3"
Clicked="OnOkClicked"
Text="OK"/>
</Grid>

View file

@ -7,9 +7,15 @@ namespace TINK.View
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class FeedbackPopup : Popup<FeedbackPopup.Result>
{
public FeedbackPopup()
/// <summary> Constructs user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
public FeedbackPopup(string co2Saving = null)
{
InitializeComponent();
if (string.IsNullOrEmpty(co2Saving))
Co2SavingFrame.IsVisible = false;
else
Co2SavingLabel.Text = co2Saving;
}
protected override FeedbackPopup.Result GetLightDismissResult()

View file

@ -138,7 +138,10 @@ namespace TINK.View.FindBike
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -122,7 +122,7 @@ namespace TINK.View.Info.BikeInfo
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -116,7 +116,7 @@ namespace TINK.View.Login
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -22,7 +22,7 @@
<Button
x:Name="TINKButton"
AutomationId ="FilterTINK_button"
Text="TINK"
Text="{x:Static resources:AppResources.MarkingCargoBike}"
Command="{Binding OnToggleKonradToTink}"
IsVisible="{Binding IsToggleVisible}"
TextColor ="{Binding TinkColor}"
@ -33,7 +33,7 @@
<Button
x:Name="KonradButton"
AutomationId ="FilterKonrad_button"
Text="Konrad"
Text="{x:Static resources:AppResources.MarkingCityBike}"
Command="{Binding OnToggleTinkToKonrad}"
IsVisible="{Binding IsToggleVisible}"
TextColor="{Binding KonradColor}"

View file

@ -21,6 +21,9 @@ namespace TINK.View.Map
/// <summary> View model to notify about whether page appears or hides. </summary>
private MapPageViewModel MapPageViewModel { get; set; }
/// <summary> Initialization status to ensure initialization logic is not called multiple times. </summary>
private bool isInitializationStarted = false;
/// <summary>
/// Constructs map page instance.
/// </summary>
@ -117,7 +120,7 @@ namespace TINK.View.Map
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT
@ -131,6 +134,10 @@ namespace TINK.View.Map
/// </summary>
protected async override void OnAppearing()
{
// Don't repeat the initialization if it has been completed already.
if (isInitializationStarted) return;
isInitializationStarted = true;
// Pass reference to member Navigation to show bikes at station x dialog.
try
{
@ -139,18 +146,11 @@ namespace TINK.View.Map
#if TRYNOTBACKSTYLE
MapPageViewModel = new MapPageViewModel();
#else
MapPageViewModel = new MapPageViewModel(
App.ModelRoot,
App.PermissionsService,
App.BluetoothService,
App.GeolocationServicesContainer.Active,
(mapspan) => MyMap.MoveToRegion(mapspan),
this,
Navigation);
MapPageViewModel = CreateMapPageViewModel();
#endif
} catch (Exception exception)
}
catch (Exception exception)
{
Log.ForContext<MapPage>().Error("Constructing map page view model failed. {Exception}", exception);
return;
}
@ -171,15 +171,7 @@ namespace TINK.View.Map
try
{
if (Device.RuntimePlatform == Device.iOS)
{
TINKButton.BackgroundColor = Color.LightGray;
TINKButton.BorderColor = Color.Black;
TINKButton.Margin = new Thickness(10, 10, 10, 10);
KonradButton.BackgroundColor = Color.LightGray;
KonradButton.BorderColor = Color.Black;
KonradButton.Margin = new Thickness(10, 10, 10, 10);
}
ApplyCustomiOSStyling();
}
catch (Exception exception)
{
@ -201,13 +193,9 @@ namespace TINK.View.Map
try
{
// Pre move and scanle maps to avoid initial display of map in Rome.
Log.ForContext<MapPage>().Verbose("Moving and scaling map.");
MapPageViewModel.MoveAndScale(
(mapSpan) => MyMap.MoveToRegion(mapSpan),
App.ModelRoot.Uris.ActiveUri,
App.ModelRoot.GroupFilterMapPage);
PremoveAndScaleMap();
}
catch(Exception exception)
catch (Exception exception)
{
// Continue because a map not beeing moved/ scaled is no reason for aborting startup.
Log.ForContext<MapPage>().Error("Moving and scaling map failed. {Exception}", exception);
@ -225,6 +213,49 @@ namespace TINK.View.Map
}
}
/// <summary>
/// Premoves the Map to a certain location.
/// </summary>
private void PremoveAndScaleMap()
{
Log.ForContext<MapPage>().Verbose("Moving and scaling map.");
MapPageViewModel.MoveAndScale(
(mapSpan) => MyMap.MoveToRegion(mapSpan),
App.ModelRoot.ActiveMapSpan);
}
/// <summary>
/// Creates the Map Page's view model.
/// </summary>
private MapPageViewModel CreateMapPageViewModel()
{
Log.ForContext<MapPage>().Verbose("Constructing map page view model.");
return new MapPageViewModel(
App.ModelRoot,
App.PermissionsService,
App.BluetoothService,
App.GeolocationServicesContainer.Active,
(mapspan) => MyMap.MoveToRegion(mapspan),
this,
Navigation);
}
/// <summary>
/// Applies iOS specific styling to branded Buttons.
/// </summary>
private void ApplyCustomiOSStyling()
{
if (Device.RuntimePlatform == Device.iOS)
{
TINKButton.BackgroundColor = Color.LightGray;
TINKButton.BorderColor = Color.Black;
TINKButton.Margin = new Thickness(10, 10, 10, 10);
KonradButton.BackgroundColor = Color.LightGray;
KonradButton.BorderColor = Color.Black;
KonradButton.Margin = new Thickness(10, 10, 10, 10);
}
}
/// <summary>
/// Invoked when pages is closed/ hidden.
/// Stops update process.

View file

@ -89,7 +89,10 @@ namespace TINK.View.MiniSurvey
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -12,38 +12,43 @@
</ContentPage.Resources>
<ContentPage.Content>
<Frame>
<StackLayout>
<ListView
x:Name="MyBikesListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<StackLayout
VerticalOptions="EndAndExpand"
Orientation="Horizontal">
<StackLayout
Orientation="Vertical">
<!-- Center stack layout -->
<StackLayout
VerticalOptions="CenterAndExpand"
Orientation="Vertical">
<ListView
x:Name="MyBikesListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
IsVisible="{Binding IsNoBikesOccupiedVisible}"
VerticalOptions="StartAndExpand"
Text="{Binding NoBikesOccupiedText}"/>
</StackLayout>
<!-- Status bar stack layout-->
<StackLayout
Orientation="Horizontal">
<Label
HeightRequest="20"
Text="{Binding StatusInfoText}"
VerticalOptions="Center"
HorizontalOptions="FillAndExpand"/>
<ActivityIndicator IsRunning="{Binding IsRunning}"
IsVisible="{Binding IsRunning}"
HeightRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="End">
IsVisible="{Binding IsRunning}"
HeightRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="End">
<ActivityIndicator.WidthRequest>
<OnPlatform x:TypeArguments="x:Double" iOS="40" Android="40" WinPhone="40" />
</ActivityIndicator.WidthRequest>
<ActivityIndicator.Color>
<OnPlatform x:TypeArguments="Color"
iOS="#2499CE" WinPhone="#2499CE" />
iOS="#2499CE" WinPhone="#2499CE" />
</ActivityIndicator.Color>
</ActivityIndicator>
</StackLayout>

View file

@ -20,6 +20,9 @@ namespace TINK.View.MyBikes
/// <summary> Refernce to view model. </summary>
MyBikesPageViewModel m_oViewModel = null;
/// <summary> Initialization status to ensure initialization logic is not called multiple times. </summary>
private bool isInitializationStarted = false;
/// <summary>
/// Constructs a my bikes page.
/// </summary>
@ -33,6 +36,10 @@ namespace TINK.View.MyBikes
/// </summary>
protected async override void OnAppearing()
{
// Don't repeat the initialization if it has been completed already.
if (isInitializationStarted) return;
isInitializationStarted = true;
if (m_oViewModel != null)
{
// No need to create view model, set binding context an items source if already done.
@ -163,7 +170,10 @@ namespace TINK.View.MyBikes
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -146,7 +146,10 @@ namespace TINK.View.Settings
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
#if USERFEEDBACKDLG_TRYOUT

View file

@ -75,7 +75,7 @@ namespace TINK.View.WhatsNew.Agb
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -79,7 +79,7 @@ namespace TINK.View.WhatsNew
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
/// <summary>

View file

@ -55,8 +55,8 @@ namespace TINK.ViewModel.MasterDetail
}
else if (type == typeof(TabbedPageInfo))
{
return string.Format(AppResources.MarkingAbout, ContactPageViewModel.GetAppName(App.ModelRoot.Uris.ActiveUri));
}
return AppResources.MarkingAbout;
}
else
{
return type.Name;

View file

@ -66,7 +66,7 @@ namespace TINK.ViewModel.RootShell
public bool IsSettingsPageVisible => App.ModelRoot.Uris.ActiveUri.Host.GetIsCopri()
|| App.ModelRoot.ActiveUser.IsLoggedIn;
public string TabbedPageIngoTitle => string.Format(AppResources.MarkingAbout, ContactPageViewModel.GetAppName(App.ModelRoot.Uris.ActiveUri));
public string TabbedPageIngoTitle => AppResources.MarkingAbout;
}
}

View file

@ -5,11 +5,28 @@ using Android.OS;
using Android.Content;
using Java.Interop;
using Plugin.Permissions;
using Xamarin.Forms.Platform.Android.AppLinks;
using Firebase;
namespace TINK.Droid
{
[Activity (Label = "Sharee", Icon = "@drawable/sharee", Theme="@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
[Activity (Label = "Mein konrad", Icon = "@drawable/sharee", Theme="@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
[IntentFilter(new[] { Intent.ActionView },
Categories = new[] { Intent.ActionView, Intent.CategoryBrowsable, Intent.CategoryDefault },
DataScheme = "https",
DataHost = "sharee.bike",
DataPathPrefix = "/meinkonrad",
AutoVerify = true)]
[IntentFilter(new[] { Intent.ActionView },
Categories = new[] { Intent.ActionView, Intent.CategoryBrowsable, Intent.CategoryDefault },
DataScheme = "http",
DataHost = "sharee.bike",
DataPathPrefix = "/meinkonrad",
AutoVerify = true)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate (Bundle bundle)
{
@ -20,6 +37,9 @@ namespace TINK.Droid
global::Xamarin.Forms.Forms.Init (this, bundle);
FirebaseApp.InitializeApp(this);
AndroidAppLinks.Init(this);
// Initialize xamarin.essentials, see https://docs.microsoft.com/en-us/xamarin/essentials/get-started?tabs=macos%2Candroid.
Xamarin.Essentials.Platform.Init(this, bundle);
@ -51,7 +71,7 @@ namespace TINK.Droid
if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Essentials.Permissions))
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
else if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Plugin.Permissions))
{
// Bug in 3.0.244 and earlier versions of sharee.bike app: Call of PermissionsImplementation.Current.OnRequestedPermission result was missing.

View file

@ -10,13 +10,13 @@
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>TINK.Droid</RootNamespace>
<AssemblyName>TINK.Android</AssemblyName>
<AssemblyName>Meinkonrad.Android</AssemblyName>
<FileAlignment>512</FileAlignment>
<AndroidApplication>true</AndroidApplication>
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v11.0</TargetFrameworkVersion>
<AndroidStoreUncompressedFileExtensions />
<MandroidI18n />
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
@ -60,10 +60,13 @@
<BundleAssemblies>false</BundleAssemblies>
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
<MandroidI18n />
<AndroidPackageFormat>aab</AndroidPackageFormat>
<AndroidUseAapt2>true</AndroidUseAapt2>
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.3" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.4" />
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageReference Include="MonkeyCache">
<Version>1.5.2</Version>
@ -162,34 +165,37 @@
<PackageReference Include="Xamarin.Android.Support.v7.RecyclerView" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.Vector.Drawable" Version="28.0.0.3" />
<PackageReference Include="Xamarin.AndroidX.Core">
<Version>1.6.0.1</Version>
<Version>1.6.0.3</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.MediaRouter">
<Version>1.2.5</Version>
<Version>1.2.5.2</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.Palette">
<Version>1.0.0.8</Version>
<Version>1.0.0.10</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.RecyclerView">
<Version>1.2.1.1</Version>
<Version>1.2.1.3</Version>
</PackageReference>
<PackageReference Include="Xamarin.Auth" Version="1.7.0" />
<PackageReference Include="Xamarin.Build.Download" Version="0.10.0" />
<PackageReference Include="Xamarin.CommunityToolkit">
<Version>1.2.0</Version>
<Version>1.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.7.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2125" />
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2196" />
<PackageReference Include="Xamarin.Forms.AppLinks">
<Version>5.0.0.2244</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms.GoogleMaps">
<Version>3.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms.GoogleMaps.Bindings" Version="3.0.0" />
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="117.6.0" />
<PackageReference Include="Xamarin.GooglePlayServices.Basement" Version="117.6.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Maps" Version="117.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Tasks" Version="117.2.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="117.6.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Basement" Version="117.6.0.2" />
<PackageReference Include="Xamarin.GooglePlayServices.Maps" Version="117.0.1.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Tasks" Version="117.2.1.1" />
</ItemGroup>
<ItemGroup>
<Reference Include="Mono.Android" />
@ -217,6 +223,7 @@
<None Include="app.config">
<SubType>Designer</SubType>
</None>
<GoogleServicesJson Include="google-services.json" />
<None Include="Resources\AboutResources.txt" />
<None Include="Assets\AboutAssets.txt" />
<EmbeddedResource Include="Resources\Font Awesome 5 Free-Solid-900.otf" />
@ -645,24 +652,6 @@
<Generator>MSBuild:UpdateGeneratedFiles</Generator>
</AndroidResource>
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-hdpi\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-mdpi\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-xhdpi\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-xxhdpi\sharee_no_background.png" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable-xxxhdpi\sharee_no_background.png" />
</ItemGroup>
<Import Project="..\TINK\Meinkonrad.projitems" Label="Shared" Condition="Exists('..\TINK\Meinkonrad.projitems')" />
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<ProjectExtensions>

View file

@ -1,8 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.TeilRad.Meinkonstanz" android:versionName="3.0.257" android:versionCode="257">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="29" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.Meinkonrad" android:versionName="3.0.267" android:versionCode="267">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
<!-- Google Maps related permissions -->
<permission android:name="com.ecs.google.maps.v2.actionbarsherlock.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
<!-- Permission to receive remote notifications from Google Play Services -->
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
<permission android:name="com.TeilRad.Meinkonrad.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
<!-- Network connectivity permissions -->
<!-- Access Google based webservices -->
<!-- External storage for caching. -->
@ -15,6 +17,6 @@
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
<application android:icon="@drawable/sharee" android:label="Mein konrad" android:allowBackup="false"></application>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="000000000000000000000000000000000000000" />
<application android:icon="@drawable/sharee" android:label="Meinkonrad" android:allowBackup="false"></application>
<meta-data android:name="com.google.android.geo.API_KEY" android:value="000000000000000000000000000000000000000" />
</manifest>

View file

@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Android.App;
@ -7,11 +7,11 @@ using Xamarin.Forms;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TINK.Android")]
[assembly: AssemblyTitle("Meinkonrad.Android")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TINK.Android")]
[assembly: AssemblyProduct("Meinkonrad.Android")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -40,6 +40,6 @@ using Xamarin.Forms;
[assembly: Application(Debuggable = false)]
#endif
[assembly: MetaData("com.google.android.maps.v2.API_KEY", Value = "000000000000000000000000000000000000000")]
[assembly: MetaData("com.google.android.geo.API_KEY", Value = "000000000000000000000000000000000000000")]
[assembly: ExportFont("Font Awesome 5 Free-Solid-900.otf", Alias = "FA-S")]

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Foundation;
using Foundation;
using UIKit;
using Xamarin.Forms;

View file

@ -6,5 +6,9 @@
<array>
<string>$(AppIdentifierPrefix)com.TeilRad.sharee.bike</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:sharee.bike</string>
</array>
</dict>
</plist>

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
@ -27,9 +27,9 @@
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>XSLaunchImageAssets</key>
<string>Resources/Media.xcassets/LaunchImages.launchimage</string>
<string>Media.xcassets/LaunchImages.launchimage</string>
<key>CFBundleName</key>
<string>TINK</string>
<string>Meinkonrad</string>
<key>XSAppIconAssets</key>
<string>Media.xcassets/AppIcons.appiconset</string>
<key>NSBluetoothAlwaysUsageDescription</key>
@ -49,8 +49,8 @@
<key>CFBundleDisplayName</key>
<string>Mein konrad</string>
<key>CFBundleVersion</key>
<string>254</string>
<string>267</string>
<key>CFBundleShortVersionString</key>
<string>3.0.254</string>
<string>3.0.267</string>
</dict>
</plist>

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

View file

@ -1,131 +1,275 @@
{
"images": [
{
"scale": "2x",
"filename": "Icon-40.png",
"size": "20x20",
"idiom": "iphone",
"filename": "40.png"
"scale": "2x",
"idiom": "iphone"
},
{
"scale": "3x",
"filename": "Icon-60.png",
"size": "20x20",
"idiom": "iphone",
"filename": "60.png"
},
{
"scale": "2x",
"size": "29x29",
"idiom": "iphone",
"filename": "58.png"
},
{
"scale": "3x",
"idiom": "iphone"
},
{
"filename": "Icon-58.png",
"size": "29x29",
"idiom": "iphone",
"filename": "87.png"
},
{
"scale": "2x",
"size": "40x40",
"idiom": "iphone",
"filename": "801.png"
"idiom": "iphone"
},
{
"filename": "Icon-87.png",
"size": "29x29",
"scale": "3x",
"size": "40x40",
"idiom": "iphone",
"filename": "120.png"
"idiom": "iphone"
},
{
"filename": "Icon-80.png",
"size": "40x40",
"scale": "2x",
"idiom": "iphone"
},
{
"filename": "Icon-120.png",
"size": "40x40",
"scale": "3x",
"idiom": "iphone"
},
{
"filename": "Icon-120-1.png",
"size": "60x60",
"idiom": "iphone",
"filename": "1201.png"
"scale": "2x",
"idiom": "iphone"
},
{
"scale": "3x",
"filename": "Icon-180.png",
"size": "60x60",
"idiom": "iphone",
"filename": "180.png"
"scale": "3x",
"idiom": "iphone"
},
{
"scale": "1x",
"filename": "Icon-20.png",
"size": "20x20",
"idiom": "ipad",
"filename": "20.png"
"scale": "1x",
"idiom": "ipad"
},
{
"scale": "2x",
"filename": "Icon-40-1.png",
"size": "20x20",
"idiom": "ipad",
"filename": "401.png"
"scale": "2x",
"idiom": "ipad"
},
{
"scale": "1x",
"filename": "Icon-29.png",
"size": "29x29",
"idiom": "ipad",
"filename": "29.png"
},
{
"scale": "2x",
"size": "29x29",
"idiom": "ipad",
"filename": "581.png"
},
{
"scale": "1x",
"size": "40x40",
"idiom": "ipad",
"filename": "402.png"
"idiom": "ipad"
},
{
"filename": "Icon-58-1.png",
"size": "29x29",
"scale": "2x",
"size": "40x40",
"idiom": "ipad",
"filename": "80.png"
"idiom": "ipad"
},
{
"filename": "Icon-40-2.png",
"size": "40x40",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "Icon-80-1.png",
"size": "40x40",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "Icon-167.png",
"size": "83.5x83.5",
"idiom": "ipad",
"filename": "167.png"
},
{
"scale": "1x",
"size": "76x76",
"idiom": "ipad",
"filename": "76.png"
},
{
"scale": "2x",
"size": "76x76",
"idiom": "ipad",
"filename": "152.png"
"idiom": "ipad"
},
{
"filename": "Icon-76.png",
"size": "76x76",
"scale": "1x",
"idiom": "ipad"
},
{
"filename": "Icon-152.png",
"size": "76x76",
"scale": "2x",
"idiom": "ipad"
},
{
"filename": "App-Icon-MeinKonrad_1024.png",
"size": "1024x1024",
"idiom": "ios-marketing",
"filename": "1024-1.png"
"scale": "1x",
"idiom": "ios-marketing"
},
{
"scale": "2x",
"size": "60x60",
"scale": "2x",
"idiom": "car"
},
{
"size": "60x60",
"scale": "3x",
"size": "60x60",
"idiom": "car"
},
{
"scale": "1x",
"role": "notificationCenter",
"size": "24x24",
"subtype": "38mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "notificationCenter",
"size": "27.5x27.5",
"subtype": "42mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "notificationCenter",
"size": "33x33",
"subtype": "45mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "companionSettings",
"size": "29x29",
"scale": "2x",
"idiom": "watch"
},
{
"role": "companionSettings",
"size": "29x29",
"scale": "3x",
"idiom": "watch"
},
{
"role": "appLauncher",
"size": "40x40",
"subtype": "38mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "appLauncher",
"size": "44x44",
"subtype": "40mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "appLauncher",
"size": "46x46",
"subtype": "41mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "appLauncher",
"size": "50x50",
"subtype": "44mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "appLauncher",
"size": "51x51",
"subtype": "45mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "quickLook",
"size": "86x86",
"subtype": "38mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "quickLook",
"size": "98x98",
"subtype": "42mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "quickLook",
"size": "108x108",
"subtype": "44mm",
"scale": "2x",
"idiom": "watch"
},
{
"role": "quickLook",
"size": "117x117",
"subtype": "45mm",
"scale": "2x",
"idiom": "watch"
},
{
"size": "1024x1024",
"idiom": "watch-marketing",
"filename": "10241.png"
"scale": "1x",
"idiom": "watch-marketing"
},
{
"size": "16x16",
"scale": "1x",
"idiom": "mac"
},
{
"size": "16x16",
"scale": "2x",
"idiom": "mac"
},
{
"size": "32x32",
"scale": "1x",
"idiom": "mac"
},
{
"size": "32x32",
"scale": "2x",
"idiom": "mac"
},
{
"size": "128x128",
"scale": "1x",
"idiom": "mac"
},
{
"size": "128x128",
"scale": "2x",
"idiom": "mac"
},
{
"size": "256x256",
"scale": "1x",
"idiom": "mac"
},
{
"size": "256x256",
"scale": "2x",
"idiom": "mac"
},
{
"size": "512x512",
"scale": "1x",
"idiom": "mac"
},
{
"size": "512x512",
"scale": "2x",
"idiom": "mac"
}
],
"properties": {},
"info": {
"version": 1,
"author": "xcode"

View file

@ -9,7 +9,7 @@
<OutputType>Exe</OutputType>
<RootNamespace>TINK.iOS</RootNamespace>
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
<AssemblyName>TINK.iOS</AssemblyName>
<AssemblyName>Meinkonrad.iOS</AssemblyName>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<ReleaseVersion>3.0</ReleaseVersion>
@ -27,8 +27,8 @@
<MtouchArch>i386, x86_64</MtouchArch>
<MtouchLink>None</MtouchLink>
<MtouchDebug>true</MtouchDebug>
<CodesignProvision>VS: com.tink.fapp Development</CodesignProvision>
<CodesignKey>iPhone Developer: Rainer Guempelein (9K8PNC2YM8)</CodesignKey>
<CodesignProvision>VS: com.TeilRad.Meinkonrad Development</CodesignProvision>
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
<DebugType>none</DebugType>
@ -40,8 +40,8 @@
<MtouchLink>None</MtouchLink>
<MtouchArch>i386, x86_64</MtouchArch>
<ConsolePause>false</ConsolePause>
<CodesignProvision>VS: com.tink.fapp Development</CodesignProvision>
<CodesignKey>iPhone Developer: Rainer Guempelein (9K8PNC2YM8)</CodesignKey>
<CodesignProvision>VS: com.TeilRad.Meinkonrad Development</CodesignProvision>
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
<DebugSymbols>true</DebugSymbols>
@ -53,12 +53,12 @@
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignKey>Apple Development: Oliver Hauff (8SZ7J9P24J)</CodesignKey>
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
<MtouchDebug>true</MtouchDebug>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<CodesignProvision>VS: WildCard Development</CodesignProvision>
<MtouchLink>SdkOnly</MtouchLink>
<AssemblyName>Meinkonrad.iOS</AssemblyName>
<CodesignProvision>VS: com.TeilRad.Meinkonrad Development</CodesignProvision>
<MtouchLink>None</MtouchLink>
<MtouchInterpreter>-all</MtouchInterpreter>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugType>none</DebugType>
@ -69,15 +69,14 @@
<WarningLevel>4</WarningLevel>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<ConsolePause>false</ConsolePause>
<CodesignKey>Apple Distribution: TeilRad GmbH (LXJD6URCHR)</CodesignKey>
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<IpaIncludeArtwork>
</IpaIncludeArtwork>
<CrashReportingApiKey>
</CrashReportingApiKey>
<MtouchLink>SdkOnly</MtouchLink>
<CodesignProvision>Meinkonrad to App Store 2</CodesignProvision>
<AssemblyName>Meinkonrad.iOS</AssemblyName>
<CodesignProvision>VS: com.TeilRad.Meinkonrad Development</CodesignProvision>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
<DebugType>none</DebugType>
@ -89,13 +88,12 @@
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<BuildIpa>True</BuildIpa>
<CodesignProvision>VS: com.tink.fapp Development</CodesignProvision>
<CodesignKey>iPhone Developer: Rainer Guempelein (9K8PNC2YM8)</CodesignKey>
<CodesignProvision>VS: com.TeilRad.Meinkonrad Development</CodesignProvision>
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<MtouchNoSymbolStrip>
</MtouchNoSymbolStrip>
<MtouchLink>SdkOnly</MtouchLink>
<AssemblyName>Meinkonrad.iOS</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' ">
<DebugType>none</DebugType>
@ -106,11 +104,10 @@
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<MtouchArch>ARMv7, ARM64</MtouchArch>
<CodesignProvision>VS: com.tink.fapp Development</CodesignProvision>
<CodesignKey>iPhone Developer: Rainer Guempelein (9K8PNC2YM8)</CodesignKey>
<CodesignProvision>VS: com.TeilRad.Meinkonrad Development</CodesignProvision>
<CodesignKey>Apple Development: Oliver Hauff (947JH7MS9L)</CodesignKey>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<MtouchLink>SdkOnly</MtouchLink>
<AssemblyName>Meinkonrad.iOS</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
<AppExtensionDebugBundleId />
@ -118,7 +115,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Bcl.Build" Version="1.0.21" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.3" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.4" />
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageReference Include="MonkeyCache">
<Version>1.5.2</Version>
@ -195,7 +192,7 @@
<PackageReference Include="Xamarin.Auth" Version="1.7.0" />
<PackageReference Include="Xamarin.Build.Download" Version="0.10.0" />
<PackageReference Include="Xamarin.CommunityToolkit">
<Version>1.2.0</Version>
<Version>1.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.7.0</Version>
@ -218,7 +215,7 @@
<Version>0.7.104</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms">
<Version>5.0.0.2125</Version>
<Version>5.0.0.2196</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
@ -235,18 +232,11 @@
<SubType>Designer</SubType>
</None>
<Compile Include="Properties\AssemblyInfo.cs" />
<ITunesArtwork Include="iTunesArtwork" />
<ITunesArtwork Include="iTunesArtwork@2x" />
<Compile Include="Device\AppInfo.cs" />
<Compile Include="Device\ExternalBrowseService.cs" />
<EmbeddedResource Include="Resources\Font Awesome 5 Free-Solid-900.otf" />
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\Default-568h%402x.png" />
<BundleResource Include="Resources\Default-Portrait.png" />
<BundleResource Include="Resources\Default-Portrait%402x.png" />
<BundleResource Include="Resources\Default.png" />
<BundleResource Include="Resources\Default%402x.png" />
<BundleResource Include="Resources\Icon-60%403x.png" />
<BundleResource Include="Resources\Icon-Small%402x.png" />
<BundleResource Include="Resources\Icon-Small%403x.png" />
@ -290,60 +280,6 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\10241.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\120.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\1201.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\152.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\167.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\180.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\20.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\29.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\40.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\401.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\402.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\58.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\581.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\60.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\76.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\80.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\801.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\87.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Contents.json">
<Visible>false</Visible>
</ImageAsset>
@ -1484,9 +1420,58 @@
<ImageAsset Include="Media.xcassets\Open_Red.imageset\StationMarkerOpenRed.pdf">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\1024-1.png">
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-40.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-60.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-58.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-87.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-80.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-120.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-120-1.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-180.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-20.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-40-1.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-29.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-58-1.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-40-2.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-80-1.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-76.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-152.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\Icon-167.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Media.xcassets\AppIcons.appiconset\App-Icon-MeinKonrad_1024.png" />
</ItemGroup>
<ItemGroup>
<Folder Include="Media.xcassets\01_Blue.imageset\" />
@ -1614,6 +1599,10 @@
<Folder Include="Media.xcassets\Open_LightBlue.imageset\" />
<Folder Include="Media.xcassets\Open_Red.imageset\" />
</ItemGroup>
<ItemGroup>
<ITunesArtwork Include="iTunesArtwork" />
<ITunesArtwork Include="iTunesArtwork%402x" />
</ItemGroup>
<Import Project="..\TINK\Meinkonrad.projitems" Label="Shared" Condition="Exists('..\TINK\Meinkonrad.projitems')" />
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
</Project>

View file

@ -5,11 +5,11 @@ using Xamarin.Forms;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TINK.iOS")]
[assembly: AssemblyTitle("Meinkonrad.iOS")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TINK.iOS")]
[assembly: AssemblyProduct("Meinkonrad.iOS")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -21,7 +21,8 @@
<rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0"/>
</imageView>
</subviews>
<color key="backgroundColor" red="0.20392156862745098" green="0.4983606557377049180327868852459" blue="0.5016393442622950819672131147541" alpha="1" colorSpace="calibratedRGB"/>
<!--Color # -->
<color key="backgroundColor" red="1.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="23" firstAttribute="centerY" secondItem="yd7-JS-zBw" secondAttribute="centerY" priority="1" id="39"/>
<constraint firstItem="23" firstAttribute="centerX" secondItem="yd7-JS-zBw" secondAttribute="centerX" priority="1" id="41"/>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 294 KiB

View file

@ -15,7 +15,6 @@ using MonkeyCache.FileStore;
using Plugin.Connectivity;
using System.Threading;
using TINK.Model.Settings;
using Plugin.Permissions;
using TINK.Services.BluetoothLock.Crypto;
using TINK.Model.Services.Geolocation;
using TINK.Services;
@ -83,8 +82,8 @@ namespace TINK
try
{
settings = new Model.Settings.Settings(
JsonSettingsDictionary.GetGroupFilterMapPage(settingsJSON),
JsonSettingsDictionary.GetGoupFilterSettings(settingsJSON),
JsonSettingsDictionary.GetGroupFilterMapPage(settingsJSON) ?? GroupFilterHelper.GetMapPageFilterDefaults, // Activate map filtering for meinkonrad
JsonSettingsDictionary.GetGoupFilterSettings(settingsJSON) ?? GroupFilterHelper.GetSettingsFilterDefaults,// Activate map filtering for meinkonrad
JsonSettingsDictionary.GetCopriHostUri(settingsJSON),
JsonSettingsDictionary.GetPollingParameters(settingsJSON),
JsonSettingsDictionary.GetMinimumLoggingLevel(settingsJSON),
@ -94,6 +93,7 @@ namespace TINK
JsonSettingsDictionary.GetConnectTimeout(settingsJSON),
JsonSettingsDictionary.GetActiveGeolocationService(settingsJSON),
JsonSettingsDictionary.GetCenterMapToCurrentLocation(settingsJSON),
Xamarin.Forms.GoogleMaps.MapSpan.FromCenterAndRadius(new Xamarin.Forms.GoogleMaps.Position(47.680, 9.180), Xamarin.Forms.GoogleMaps.Distance.FromKilometers(2.9)),
JsonSettingsDictionary.GetLogToExternalFolder(settingsJSON),
JsonSettingsDictionary.GetIsSiteCachingOn(settingsJSON),
JsonSettingsDictionary.GetActiveTheme(settingsJSON) ?? typeof(Themes.Konrad).FullName);
@ -145,7 +145,7 @@ namespace TINK
m_oModelRoot = new TinkApp(
settings,
store, // Manages user account
(isConnected, activeUri, sessionCookie, mail, expiresAfter) => ConnectorFactory.Create(isConnected, activeUri, $"sharee.bike/{appInfoService.Version}", sessionCookie, mail, expiresAfter),
(isConnected, activeUri, sessionCookie, mail, expiresAfter) => ConnectorFactory.Create(isConnected, activeUri, new Repository.AppContextInfo("mkef9BuN", "Meinkonrad", appInfoService.Version), sessionCookie, mail, expiresAfter),
GeolocationServicesContainer,
null, /* locksService */
DependencyService.Get<ISmartDevice>(),
@ -255,6 +255,30 @@ namespace TINK
.CreateLogger();
}
/// <param name="uri">The URI for the request.</param>
/// <summary>Overriden to respond when the user initiates an app link request.</summary>
protected override void OnAppLinkRequestReceived(Uri uri)
{
base.OnAppLinkRequestReceived(uri);
if (uri.Host.ToLower() == "sharee.bike")
{
// Input e.g. sharee.bike/sharee/?lat=49.921&long=32.51
Array segments = Array.ConvertAll(uri.Segments, segment => segment.Replace("/", "")).Skip(1).ToArray();
if (uri.Query.Length > 0)
{
Dictionary<string, string> queryDict = uri.Query
.Substring(1)
.Split("&")
.Select(query => query.Split('='))
.ToDictionary(query => query.FirstOrDefault(), query => query.Skip(1).FirstOrDefault());
}
// segments == ["sharee"]
// queryDict == [{["lat", "49.921"]}], {["long", "32.51"]}]
// => Navigate and pass params depending on linkinput
// If no custom navigation is configured, the app just opens as if the user opened it
}
}
/// <summary> Gets the current logging level.</summary>
/// <returns></returns>
private static LogEventLevel GetCurrentLogEventLevel()
@ -283,7 +307,7 @@ namespace TINK
if (_PermissionsService != null)
return _PermissionsService;
_PermissionsService = new Services.Permissions.Plugin.Permissions();
_PermissionsService = new Services.Permissions.Essentials.Permissions();
return _PermissionsService;
}
}

View file

@ -23,7 +23,7 @@
<br />Version ACTIVE_APPNAME: <b>CURRENT_VERSION_TINKAPP</b>.
<div class="content_title2">Entwickler</div>
<div style=""></div>
<br />Programmierung ACTIVE_APPNAME: O. Hauff, o.hauff@sharee.bike.<br />
<br />Programmierung ACTIVE_APPNAME: O. Hauff, app@sharee.bike<br />
<div class="content_title2">Verwendete Bibliotheken</div>
<div style=""></div>
<br /><table>

View file

@ -149,7 +149,7 @@ namespace TINK.View.Account
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -37,6 +37,7 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@ -84,6 +85,12 @@
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
Grid.Row="4"
Grid.Column="1"/>
<Label
TextType="Html"
Text="{Binding TariffDescription.OperatorAgb}"
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
Grid.Row="5"
Grid.ColumnSpan="3"/>
</Grid>
</StackLayout>
</ContentView>

View file

@ -49,6 +49,7 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
@ -96,6 +97,12 @@
IsVisible="{Binding TariffDescription.AboEuroPerMonth, Converter={StaticResource Label_Converter}}"
Grid.Row="4"
Grid.Column="1"/>
<Label
TextType="Html"
Text="{Binding TariffDescription.OperatorAgb}"
IsVisible="{Binding TariffDescription.OperatorAgb, Converter={StaticResource Label_Converter}}"
Grid.Row="5"
Grid.ColumnSpan="3"/>
</Grid>
</StackLayout>
</ContentView>

View file

@ -14,58 +14,73 @@
<Frame>
<StackLayout
Orientation="Vertical">
<Label
HorizontalOptions="Center"
FontAttributes="Bold"
Text="{Binding StationDetailText}"/>
<ListView
x:Name="BikesAtStationListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
<!-- Title bar stack layout-->
<StackLayout
Orientation="Vertical">
<Label
HorizontalOptions="Center"
FontAttributes="Bold"
TextColor="{DynamicResource primary-back-title-color}"
Text="{Binding StationDetailText}"/>
<BoxView
HeightRequest="1"
Color="{DynamicResource primary-back-title-color}"/>
</StackLayout>
<!-- Center stack layout -->
<StackLayout
Orientation="Vertical"
VerticalOptions="CenterAndExpand">
<ListView
x:Name="BikesAtStationListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
IsVisible="{Binding IsNoBikesAtStationVisible}"
VerticalOptions="EndAndExpand"
Text="{Binding NoBikesAtStationText}"/>
<Label
TextType="Html"
Text="{Binding ContactSupportHintText}">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ContactSupportClickedCommand}"/>
</Label.GestureRecognizers>
</Label>
<Label
</StackLayout>
<!-- Status bar stack layout-->
<StackLayout
Orientation="Vertical">
<Label
TextType="Html"
Text="{Binding ContactSupportHintText}">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ContactSupportClickedCommand}"/>
</Label.GestureRecognizers>
</Label>
<Label
IsVisible="{Binding IsLoginRequiredHintVisible}"
TextType="Html"
Text="{Binding LoginRequiredHintText}">
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding LoginRequiredHintClickedCommand}"/>
</Label.GestureRecognizers>
</Label>
<StackLayout
VerticalOptions="EndAndExpand"
Orientation="Horizontal">
<Label
HeightRequest="20"
Text="{Binding StatusInfoText}"
VerticalOptions="Center"
HorizontalOptions="FillAndExpand"/>
<ActivityIndicator IsRunning="{Binding IsRunning}"
IsVisible="{Binding IsRunning}"
HeightRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="End">
<ActivityIndicator.WidthRequest>
<OnPlatform x:TypeArguments="x:Double" iOS="40" Android="40" WinPhone="40" />
</ActivityIndicator.WidthRequest>
<ActivityIndicator.Color>
<OnPlatform x:TypeArguments="Color"
iOS="#2499CE" WinPhone="#2499CE" />
</ActivityIndicator.Color>
</ActivityIndicator>
<Label.GestureRecognizers>
<TapGestureRecognizer Command="{Binding LoginRequiredHintClickedCommand}"/>
</Label.GestureRecognizers>
</Label>
<StackLayout
Orientation="Horizontal">
<Label
HeightRequest="20"
Text="{Binding StatusInfoText}"
VerticalOptions="Center"
HorizontalOptions="FillAndExpand"/>
<ActivityIndicator IsRunning="{Binding IsRunning}"
IsVisible="{Binding IsRunning}"
HeightRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="End">
<ActivityIndicator.WidthRequest>
<OnPlatform x:TypeArguments="x:Double" iOS="40" Android="40" WinPhone="40" />
</ActivityIndicator.WidthRequest>
<ActivityIndicator.Color>
<OnPlatform x:TypeArguments="Color"
iOS="#2499CE" WinPhone="#2499CE" />
</ActivityIndicator.Color>
</ActivityIndicator>
</StackLayout>
</StackLayout>
</StackLayout>
</Frame>

View file

@ -228,7 +228,10 @@ using TINK.View.MasterDetail;
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -88,7 +88,7 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -114,7 +114,7 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -12,11 +12,14 @@
<Grid.RowDefinitions>
<!-- Head and title row -->
<RowDefinition Height="auto"/>
<!--- Co2saving-->
<RowDefinition Height="auto"/>
<!--- checkbox and input elements-->
<RowDefinition Height="*"/>
<!--- ok button-->
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<!-- Head and title -->
<Grid
Padding="30"
BackgroundColor="{DynamicResource primary-back-title-color}">
@ -34,7 +37,16 @@
</Image.Source>
</Image>
</Grid>
<ScrollView Grid.Row="1">
<!-- Co2saving -->
<Frame
x:Name="Co2SavingFrame"
Grid.Row="1">
<Label
x:Name="Co2SavingLabel"
Text=""/>
</Frame>
<!-- Checkbox and input elements -->
<ScrollView Grid.Row="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
@ -77,8 +89,9 @@
</StackLayout>
</Grid>
</ScrollView>
<!-- Buttons -->
<Button
Grid.Row="2"
Grid.Row="3"
Clicked="OnOkClicked"
Text="OK"/>
</Grid>

View file

@ -7,9 +7,15 @@ namespace TINK.View
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class FeedbackPopup : Popup<FeedbackPopup.Result>
{
public FeedbackPopup()
/// <summary> Constructs user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
public FeedbackPopup(string co2Saving = null)
{
InitializeComponent();
if (string.IsNullOrEmpty(co2Saving))
Co2SavingFrame.IsVisible = false;
else
Co2SavingLabel.Text = co2Saving;
}
protected override FeedbackPopup.Result GetLightDismissResult()

View file

@ -138,7 +138,7 @@ namespace TINK.View.FindBike
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -122,7 +122,7 @@ namespace TINK.View.Info.BikeInfo
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -116,7 +116,7 @@ namespace TINK.View.Login
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -4,7 +4,7 @@
xmlns:maps="clr-namespace:Xamarin.Forms.GoogleMaps;assembly=Xamarin.Forms.GoogleMaps"
xmlns:bindings="clr-namespace:Xamarin.Forms.GoogleMaps.Bindings;assembly=Xamarin.Forms.GoogleMaps.Bindings"
xmlns:resources="clr-namespace:TINK.MultilingualResources;assembly=TINKLib"
x:Class="TINK.View.Map.MapPage"
x:Class="TINK.View.Map.MapPage"
Title="{x:Static resources:AppResources.MarkingMapPage}">
<StackLayout>
<Grid
@ -22,24 +22,24 @@
<Button
x:Name="TINKButton"
AutomationId ="FilterTINK_button"
Text="TINK"
Text="{x:Static resources:AppResources.MarkingCargoBike}"
Command="{Binding OnToggleKonradToTink}"
IsVisible="{Binding IsToggleVisible}"
TextColor ="{Binding TinkColor}"
VerticalOptions="Start"
HorizontalOptions="StartAndExpand"
WidthRequest="80">
Padding="10">
</Button>
<Button
x:Name="KonradButton"
AutomationId ="FilterKonrad_button"
Text="Konrad"
Text="{x:Static resources:AppResources.MarkingCityBike}"
Command="{Binding OnToggleTinkToKonrad}"
IsVisible="{Binding IsToggleVisible}"
TextColor="{Binding KonradColor}"
VerticalOptions="Start"
HorizontalOptions="EndAndExpand"
WidthRequest="80">
Padding="10">
</Button>
</Grid>
<StackLayout

View file

@ -21,6 +21,9 @@ namespace TINK.View.Map
/// <summary> View model to notify about whether page appears or hides. </summary>
private MapPageViewModel MapPageViewModel { get; set; }
/// <summary> Initialization status to ensure initialization logic is not called multiple times. </summary>
private bool isInitializationStarted = false;
/// <summary>
/// Constructs map page instance.
/// </summary>
@ -117,7 +120,7 @@ namespace TINK.View.Map
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT
@ -131,6 +134,10 @@ namespace TINK.View.Map
/// </summary>
protected async override void OnAppearing()
{
// Don't repeat the initialization if it has been completed already.
if (isInitializationStarted) return;
isInitializationStarted = true;
// Pass reference to member Navigation to show bikes at station x dialog.
try
{
@ -139,18 +146,11 @@ namespace TINK.View.Map
#if TRYNOTBACKSTYLE
MapPageViewModel = new MapPageViewModel();
#else
MapPageViewModel = new MapPageViewModel(
App.ModelRoot,
App.PermissionsService,
App.BluetoothService,
App.GeolocationServicesContainer.Active,
(mapspan) => MyMap.MoveToRegion(mapspan),
this,
Navigation);
MapPageViewModel = CreateMapPageViewModel();
#endif
} catch (Exception exception)
}
catch (Exception exception)
{
Log.ForContext<MapPage>().Error("Constructing map page view model failed. {Exception}", exception);
return;
}
@ -171,15 +171,7 @@ namespace TINK.View.Map
try
{
if (Device.RuntimePlatform == Device.iOS)
{
TINKButton.BackgroundColor = Color.LightGray;
TINKButton.BorderColor = Color.Black;
TINKButton.Margin = new Thickness(10, 10, 10, 10);
KonradButton.BackgroundColor = Color.LightGray;
KonradButton.BorderColor = Color.Black;
KonradButton.Margin = new Thickness(10, 10, 10, 10);
}
ApplyCustomiOSStyling();
}
catch (Exception exception)
{
@ -201,13 +193,9 @@ namespace TINK.View.Map
try
{
// Pre move and scanle maps to avoid initial display of map in Rome.
Log.ForContext<MapPage>().Verbose("Moving and scaling map.");
MapPageViewModel.MoveAndScale(
(mapSpan) => MyMap.MoveToRegion(mapSpan),
App.ModelRoot.Uris.ActiveUri,
App.ModelRoot.GroupFilterMapPage);
PremoveAndScaleMap();
}
catch(Exception exception)
catch (Exception exception)
{
// Continue because a map not beeing moved/ scaled is no reason for aborting startup.
Log.ForContext<MapPage>().Error("Moving and scaling map failed. {Exception}", exception);
@ -225,6 +213,49 @@ namespace TINK.View.Map
}
}
/// <summary>
/// Premoves the Map to a certain location.
/// </summary>
private void PremoveAndScaleMap()
{
Log.ForContext<MapPage>().Verbose("Moving and scaling map.");
MapPageViewModel.MoveAndScale(
(mapSpan) => MyMap.MoveToRegion(mapSpan),
App.ModelRoot.ActiveMapSpan);
}
/// <summary>
/// Creates the Map Page's view model.
/// </summary>
private MapPageViewModel CreateMapPageViewModel()
{
Log.ForContext<MapPage>().Verbose("Constructing map page view model.");
return new MapPageViewModel(
App.ModelRoot,
App.PermissionsService,
App.BluetoothService,
App.GeolocationServicesContainer.Active,
(mapspan) => MyMap.MoveToRegion(mapspan),
this,
Navigation);
}
/// <summary>
/// Applies iOS specific styling to branded Buttons.
/// </summary>
private void ApplyCustomiOSStyling()
{
if (Device.RuntimePlatform == Device.iOS)
{
TINKButton.BackgroundColor = Color.LightGray;
TINKButton.BorderColor = Color.Black;
TINKButton.Margin = new Thickness(10, 10, 10, 10);
KonradButton.BackgroundColor = Color.LightGray;
KonradButton.BorderColor = Color.Black;
KonradButton.Margin = new Thickness(10, 10, 10, 10);
}
}
/// <summary>
/// Invoked when pages is closed/ hidden.
/// Stops update process.

View file

@ -89,7 +89,10 @@ namespace TINK.View.MiniSurvey
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -9,41 +9,46 @@
<ResourceDictionary>
<local_bike:BikeViewCellTemplateSelector x:Key="bikeTemplateSelector"/>
</ResourceDictionary>
</ContentPage.Resources>
</ContentPage.Resources>
<ContentPage.Content>
<Frame>
<StackLayout>
<ListView
x:Name="MyBikesListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<StackLayout
VerticalOptions="EndAndExpand"
Orientation="Horizontal">
<StackLayout
Orientation="Vertical">
<!-- Center stack layout -->
<StackLayout
VerticalOptions="CenterAndExpand"
Orientation="Vertical">
<ListView
x:Name="MyBikesListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
IsVisible="{Binding IsNoBikesOccupiedVisible}"
VerticalOptions="StartAndExpand"
Text="{Binding NoBikesOccupiedText}"/>
</StackLayout>
<!-- Status bar stack layout-->
<StackLayout
Orientation="Horizontal">
<Label
HeightRequest="20"
Text="{Binding StatusInfoText}"
VerticalOptions="Center"
HorizontalOptions="FillAndExpand"/>
<ActivityIndicator IsRunning="{Binding IsRunning}"
IsVisible="{Binding IsRunning}"
HeightRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="End">
IsVisible="{Binding IsRunning}"
HeightRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="End">
<ActivityIndicator.WidthRequest>
<OnPlatform x:TypeArguments="x:Double" iOS="40" Android="40" WinPhone="40" />
</ActivityIndicator.WidthRequest>
<ActivityIndicator.Color>
<OnPlatform x:TypeArguments="Color"
iOS="#2499CE" WinPhone="#2499CE" />
iOS="#2499CE" WinPhone="#2499CE" />
</ActivityIndicator.Color>
</ActivityIndicator>
</StackLayout>

View file

@ -20,6 +20,9 @@ namespace TINK.View.MyBikes
/// <summary> Refernce to view model. </summary>
MyBikesPageViewModel m_oViewModel = null;
/// <summary> Initialization status to ensure initialization logic is not called multiple times. </summary>
private bool isInitializationStarted = false;
/// <summary>
/// Constructs a my bikes page.
/// </summary>
@ -33,6 +36,10 @@ namespace TINK.View.MyBikes
/// </summary>
protected async override void OnAppearing()
{
// Don't repeat the initialization if it has been completed already.
if (isInitializationStarted) return;
isInitializationStarted = true;
if (m_oViewModel != null)
{
// No need to create view model, set binding context an items source if already done.
@ -163,7 +170,10 @@ namespace TINK.View.MyBikes
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -146,7 +146,10 @@ namespace TINK.View.Settings
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#endif
#if USERFEEDBACKDLG_TRYOUT

View file

@ -75,7 +75,7 @@ namespace TINK.View.WhatsNew.Agb
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -79,7 +79,7 @@ namespace TINK.View.WhatsNew
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
/// <summary>

View file

@ -55,8 +55,8 @@ namespace TINK.ViewModel.MasterDetail
}
else if (type == typeof(TabbedPageInfo))
{
return string.Format(AppResources.MarkingAbout, ContactPageViewModel.GetAppName(App.ModelRoot.Uris.ActiveUri));
}
return AppResources.MarkingAbout;
}
else
{
return type.Name;

View file

@ -66,7 +66,7 @@ namespace TINK.ViewModel.RootShell
public bool IsSettingsPageVisible => App.ModelRoot.Uris.ActiveUri.Host.GetIsCopri()
|| App.ModelRoot.ActiveUser.IsLoggedIn;
public string TabbedPageIngoTitle => string.Format(AppResources.MarkingAbout, ContactPageViewModel.GetAppName(App.ModelRoot.Uris.ActiveUri));
public string TabbedPageIngoTitle => AppResources.MarkingAbout;
}
}

101
TINK.sln
View file

@ -35,9 +35,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Meinkonrad.Android", "Meink
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Meinkonrad.iOS", "Meinkonrad\TINK.iOS\Meinkonrad.iOS.csproj", "{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestFramework", "TestFramework\TestFramework.csproj", "{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestSharee", "TestSharee\TestSharee.csproj", "{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
LastenradBayern\TINK\LastenradBayern.projitems*{0b1ad2f8-7ada-4c20-b0bd-58f32a224a71}*SharedItemsImports = 4
LastenradBayern\TINK\LastenradBayern.projitems*{3a0ef953-1501-4155-b0a0-265eb5fb2975}*SharedItemsImports = 4
Meinkonrad\TINK\Meinkonrad.projitems*{4bcd922e-9393-4d96-ab5c-3d92f62f9eed}*SharedItemsImports = 4
TINK\TINK\TINK.projitems*{5297504f-603f-4e1a-98aa-57c4a0d9d833}*SharedItemsImports = 13
Meinkonrad\TINK\Meinkonrad.projitems*{5cf95cb1-ad37-4dba-8b9d-651cfb9eb903}*SharedItemsImports = 13
@ -722,6 +727,102 @@ Global
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|x64.ActiveCfg = Release|iPhoneSimulator
{CF1B848A-D1DF-40AB-BA6F-B1E1746A1161}.Release|x86.ActiveCfg = Release|iPhoneSimulator
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|ARM.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhone.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x64.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.AppStore|x86.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|ARM.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhone.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x64.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.ActiveCfg = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Debug|x86.Build.0 = Debug|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|Any CPU.Build.0 = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.ActiveCfg = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|ARM.Build.0 = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.ActiveCfg = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhone.Build.0 = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.ActiveCfg = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x64.Build.0 = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.ActiveCfg = Release|Any CPU
{9EA4ED8C-C4C3-48DC-8CBE-9281E0A7CA8D}.Release|x86.Build.0 = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|ARM.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhone.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x64.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x64.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x86.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.AppStore|x86.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|ARM.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhone.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x64.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x64.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x86.ActiveCfg = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Debug|x86.Build.0 = Debug|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|Any CPU.Build.0 = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|ARM.ActiveCfg = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|ARM.Build.0 = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhone.ActiveCfg = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhone.Build.0 = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x64.ActiveCfg = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x64.Build.0 = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x86.ActiveCfg = Release|Any CPU
{9C80A989-4BBB-4F00-AB5D-45B1F99D5A08}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View file

@ -5,6 +5,8 @@ using Android.OS;
using Android.Content;
using Java.Interop;
using Plugin.Permissions;
using Xamarin.Forms.Platform.Android.AppLinks;
using Firebase;
namespace TINK.Droid
{
@ -35,6 +37,9 @@ namespace TINK.Droid
global::Xamarin.Forms.Forms.Init (this, bundle);
FirebaseApp.InitializeApp(this);
AndroidAppLinks.Init(this);
// Initialize xamarin.essentials, see https://docs.microsoft.com/en-us/xamarin/essentials/get-started?tabs=macos%2Candroid.
Xamarin.Essentials.Platform.Init(this, bundle);
@ -66,7 +71,7 @@ namespace TINK.Droid
if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Essentials.Permissions))
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
else if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Plugin.Permissions))
{
// Bug in 3.0.244 and earlier versions of sharee.bike app: Call of PermissionsImplementation.Current.OnRequestedPermission result was missing.

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.hauffware.sharee" android:versionName="3.0.257" android:versionCode="257">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="29" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.hauffware.sharee" android:versionName="3.0.267" android:versionCode="267">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
<!-- Google Maps related permissions -->
<!-- Permission to receive remote notifications from Google Play Services -->
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
@ -18,5 +18,5 @@
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
<application android:icon="@drawable/sharee" android:label="sharee.bike" android:allowBackup="false"></application>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="000000000000000000000000000000000000000" />
<meta-data android:name="com.google.android.geo.API_KEY" android:value="000000000000000000000000000000000000000" />
</manifest>

View file

@ -40,6 +40,6 @@ using Xamarin.Forms;
[assembly: Application(Debuggable = false)]
#endif
[assembly: MetaData("com.google.android.maps.v2.API_KEY", Value = "000000000000000000000000000000000000000")]
[assembly: MetaData("com.google.android.geo.API_KEY", Value = "000000000000000000000000000000000000000")]
[assembly: ExportFont("Font Awesome 5 Free-Solid-900.otf", Alias = "FA-S")]

View file

@ -458,6 +458,8 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_btn_unelevated_state_list_anim = global::TINK.Droid.Resource.Animator.mtrl_btn_unelevated_state_list_anim;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_card_state_list_anim = global::TINK.Droid.Resource.Animator.mtrl_card_state_list_anim;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_chip_state_list_anim = global::TINK.Droid.Resource.Animator.mtrl_chip_state_list_anim;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_change_size_collapse_motion_spec = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_change_size_collapse_motion_spec;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_change_size_expand_motion_spec = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_change_size_expand_motion_spec;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_hide_motion_spec = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_hide_motion_spec;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_show_motion_spec = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_show_motion_spec;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_state_list_animator = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_state_list_animator;
@ -1665,6 +1667,18 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Color.material_on_surface_disabled = global::TINK.Droid.Resource.Color.material_on_surface_disabled;
global::Xamarin.CommunityToolkit.Resource.Color.material_on_surface_emphasis_high_type = global::TINK.Droid.Resource.Color.material_on_surface_emphasis_high_type;
global::Xamarin.CommunityToolkit.Resource.Color.material_on_surface_emphasis_medium = global::TINK.Droid.Resource.Color.material_on_surface_emphasis_medium;
global::Xamarin.CommunityToolkit.Resource.Color.material_on_surface_stroke = global::TINK.Droid.Resource.Color.material_on_surface_stroke;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_active_tick_marks_color = global::TINK.Droid.Resource.Color.material_slider_active_tick_marks_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_active_track_color = global::TINK.Droid.Resource.Color.material_slider_active_track_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_halo_color = global::TINK.Droid.Resource.Color.material_slider_halo_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_inactive_tick_marks_color = global::TINK.Droid.Resource.Color.material_slider_inactive_tick_marks_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_inactive_track_color = global::TINK.Droid.Resource.Color.material_slider_inactive_track_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_thumb_color = global::TINK.Droid.Resource.Color.material_slider_thumb_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_button_background = global::TINK.Droid.Resource.Color.material_timepicker_button_background;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_button_stroke = global::TINK.Droid.Resource.Color.material_timepicker_button_stroke;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_clockface = global::TINK.Droid.Resource.Color.material_timepicker_clockface;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_clock_text_color = global::TINK.Droid.Resource.Color.material_timepicker_clock_text_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_modebutton_tint = global::TINK.Droid.Resource.Color.material_timepicker_modebutton_tint;
global::Xamarin.CommunityToolkit.Resource.Color.mtrl_btn_bg_color_selector = global::TINK.Droid.Resource.Color.mtrl_btn_bg_color_selector;
global::Xamarin.CommunityToolkit.Resource.Color.mtrl_btn_ripple_color = global::TINK.Droid.Resource.Color.mtrl_btn_ripple_color;
global::Xamarin.CommunityToolkit.Resource.Color.mtrl_btn_stroke_color_selector = global::TINK.Droid.Resource.Color.mtrl_btn_stroke_color_selector;
@ -2250,6 +2264,9 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_textfield_search_default_mtrl_alpha = global::TINK.Droid.Resource.Drawable.abc_textfield_search_default_mtrl_alpha;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_textfield_search_material = global::TINK.Droid.Resource.Drawable.abc_textfield_search_material;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_text_cursor_material = global::TINK.Droid.Resource.Drawable.abc_text_cursor_material;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_text_select_handle_left_mtrl = global::TINK.Droid.Resource.Drawable.abc_text_select_handle_left_mtrl;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_text_select_handle_middle_mtrl = global::TINK.Droid.Resource.Drawable.abc_text_select_handle_middle_mtrl;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_text_select_handle_right_mtrl = global::TINK.Droid.Resource.Drawable.abc_text_select_handle_right_mtrl;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_vector_test = global::TINK.Droid.Resource.Drawable.abc_vector_test;
global::Xamarin.CommunityToolkit.Resource.Drawable.avd_hide_password = global::TINK.Droid.Resource.Drawable.avd_hide_password;
global::Xamarin.CommunityToolkit.Resource.Drawable.avd_show_password = global::TINK.Droid.Resource.Drawable.avd_show_password;
@ -2535,6 +2552,7 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Id.jumpToEnd = global::TINK.Droid.Resource.Id.jumpToEnd;
global::Xamarin.CommunityToolkit.Resource.Id.jumpToStart = global::TINK.Droid.Resource.Id.jumpToStart;
global::Xamarin.CommunityToolkit.Resource.Id.labeled = global::TINK.Droid.Resource.Id.labeled;
global::Xamarin.CommunityToolkit.Resource.Id.layout = global::TINK.Droid.Resource.Id.layout;
global::Xamarin.CommunityToolkit.Resource.Id.left = global::TINK.Droid.Resource.Id.left;
global::Xamarin.CommunityToolkit.Resource.Id.leftToRight = global::TINK.Droid.Resource.Id.leftToRight;
global::Xamarin.CommunityToolkit.Resource.Id.legacy = global::TINK.Droid.Resource.Id.legacy;
@ -3575,6 +3593,7 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert_Framework = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert_Framework;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_Light = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Light;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_Light_Dialog_Alert_Framework = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Light_Dialog_Alert_Framework;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Centered = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Centered;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date;

View file

@ -63,7 +63,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.3" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.4" />
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageReference Include="MonkeyCache">
<Version>1.5.2</Version>
@ -162,34 +162,37 @@
<PackageReference Include="Xamarin.Android.Support.v7.RecyclerView" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.Vector.Drawable" Version="28.0.0.3" />
<PackageReference Include="Xamarin.AndroidX.Core">
<Version>1.6.0.1</Version>
<Version>1.6.0.3</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.MediaRouter">
<Version>1.2.5</Version>
<Version>1.2.5.2</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.Palette">
<Version>1.0.0.8</Version>
<Version>1.0.0.10</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.RecyclerView">
<Version>1.2.1.1</Version>
<Version>1.2.1.3</Version>
</PackageReference>
<PackageReference Include="Xamarin.Auth" Version="1.7.0" />
<PackageReference Include="Xamarin.Build.Download" Version="0.10.0" />
<PackageReference Include="Xamarin.CommunityToolkit">
<Version>1.2.0</Version>
<Version>1.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.7.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2125" />
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2196" />
<PackageReference Include="Xamarin.Forms.AppLinks">
<Version>5.0.0.2244</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms.GoogleMaps">
<Version>3.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms.GoogleMaps.Bindings" Version="3.0.0" />
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="117.6.0" />
<PackageReference Include="Xamarin.GooglePlayServices.Basement" Version="117.6.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Maps" Version="117.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Tasks" Version="117.2.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="117.6.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Basement" Version="117.6.0.2" />
<PackageReference Include="Xamarin.GooglePlayServices.Maps" Version="117.0.1.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Tasks" Version="117.2.1.1" />
</ItemGroup>
<ItemGroup>
<Reference Include="Mono.Android" />

View file

@ -49,8 +49,8 @@
<key>CFBundleDisplayName</key>
<string>sharee.bike</string>
<key>CFBundleVersion</key>
<string>257</string>
<string>267</string>
<key>CFBundleShortVersionString</key>
<string>3.0.257</string>
<string>3.0.267</string>
</dict>
</plist>

View file

@ -115,7 +115,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Bcl.Build" Version="1.0.21" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.3" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.4" />
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageReference Include="MonkeyCache">
<Version>1.5.2</Version>
@ -192,7 +192,7 @@
<PackageReference Include="Xamarin.Auth" Version="1.7.0" />
<PackageReference Include="Xamarin.Build.Download" Version="0.10.0" />
<PackageReference Include="Xamarin.CommunityToolkit">
<Version>1.2.0</Version>
<Version>1.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.7.0</Version>
@ -215,7 +215,7 @@
<Version>0.7.104</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms">
<Version>5.0.0.2125</Version>
<Version>5.0.0.2196</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>

View file

@ -145,7 +145,7 @@ namespace TINK
m_oModelRoot = new TinkApp(
settings,
store, // Manages user account
(isConnected, activeUri, sessionCookie, mail, expiresAfter) => ConnectorFactory.Create(isConnected, activeUri, $"sharee.bike/{appInfoService.Version}", sessionCookie, mail, expiresAfter),
(isConnected, activeUri, sessionCookie, mail, expiresAfter) => ConnectorFactory.Create(isConnected, activeUri, new Repository.AppContextInfo("oiF2kahH", "sharee.bike", appInfoService.Version), sessionCookie, mail, expiresAfter),
GeolocationServicesContainer,
null, /* locksService */
DependencyService.Get<ISmartDevice>(),
@ -307,7 +307,7 @@ namespace TINK
if (_PermissionsService != null)
return _PermissionsService;
_PermissionsService = new Services.Permissions.Plugin.Permissions();
_PermissionsService = new Services.Permissions.Essentials.Permissions();
return _PermissionsService;
}
}

View file

@ -14,19 +14,31 @@
<Frame>
<StackLayout
Orientation="Vertical">
<Label
HorizontalOptions="Center"
FontAttributes="Bold"
Text="{Binding StationDetailText}"/>
<ListView
x:Name="BikesAtStationListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
<!-- Title bar stack layout-->
<StackLayout
Orientation="Vertical">
<Label
HorizontalOptions="Center"
FontAttributes="Bold"
TextColor="{DynamicResource primary-back-title-color}"
Text="{Binding StationDetailText}"/>
<BoxView
HeightRequest="1"
Color="{DynamicResource primary-back-title-color}"/>
</StackLayout>
<!-- Center stack layout -->
<StackLayout
Orientation="Vertical"
VerticalOptions="CenterAndExpand">
<ListView
x:Name="BikesAtStationListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
IsVisible="{Binding IsNoBikesAtStationVisible}"
Text="{Binding NoBikesAtStationText}"/>
</StackLayout>

View file

@ -91,14 +91,6 @@ namespace TINK.View.Contact
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT
/// <summary>
/// Delegate to perform navigation.
/// </summary>
public INavigationMasterDetail NavigationMasterDetail { set; private get; }
#endif
#if USEFLYOUT
/// <summary>

Some files were not shown because too many files have changed in this diff Show more