Browse Source

App Permission popup Page Implemented

master
Kaustav Chaudhuri 1 year ago
parent
commit
3bb59d6ae4
2 changed files with 204 additions and 11 deletions
  1. +62
    -7
      GMCabsDriverAssistantSolution/Views/AppPermissiontSetDialogPage.xaml
  2. +142
    -4
      GMCabsDriverAssistantSolution/Views/AppPermissiontSetDialogPage.xaml.cs

+ 62
- 7
GMCabsDriverAssistantSolution/Views/AppPermissiontSetDialogPage.xaml View File

@ -3,11 +3,66 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="GMCabsDriverAssistantSolution.Views.AppPermissiontSetDialogPage"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Size="300,300">
<VerticalStackLayout>
<Label
Text="AppPermissiontSetDialogPage"
VerticalOptions="Center"
HorizontalOptions="Center" />
</VerticalStackLayout>
Size="380,380"
Color="Transparent">
<Frame BackgroundColor="White" CornerRadius="10">
<StackLayout Orientation="Vertical">
<StackLayout x:Name="PermissionAllocationLayout" VerticalOptions="StartAndExpand">
<Label Text="To get reliable bookings notifications you need to change some settings for the Driver App"
VerticalTextAlignment="Center"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
FontSize="20"
HorizontalTextAlignment="Center"
FontFamily="Bold"/>
<StackLayout VerticalOptions="EndAndExpand" Margin="10,2,0,0">
<Button Text="Change" Clicked="Permission_Clicked" TextColor="White" FontSize="20" />
</StackLayout>
</StackLayout>
<StackLayout x:Name="PermissionLayout" VerticalOptions="StartAndExpand" Orientation="Vertical">
<StackLayout x:Name="LocationLayout" Orientation="Vertical" Margin="0,-40,0,0">
<Label Text="Location Tracking needs to be set to always"
VerticalTextAlignment="Center"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
FontSize="20"
HorizontalTextAlignment="Center"
FontFamily="Bold"/>
<StackLayout VerticalOptions="EndAndExpand" Margin="10,2,0,0">
<Button Text="Change" Clicked="Location_Clicked" TextColor="White" FontSize="20" />
</StackLayout>
</StackLayout>
<StackLayout x:Name="BatteyOptimisedLayout" Orientation="Vertical" Margin="0,10,0,0">
<Label Text="You need to turn off battery optimisation for the Driver App"
VerticalTextAlignment="Center"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
FontSize="20"
HorizontalTextAlignment="Center"
FontFamily="Bold"/>
<StackLayout VerticalOptions="EndAndExpand" Margin="10,2,0,0">
<!--<Button Text="Change" Clicked="Batteryoptimisation_Clicked" TextColor="White" FontSize="20" />-->
<Button Text="Change" Clicked="Batteryoptimisation_Clicked" TextColor="White" FontSize="20"></Button>
</StackLayout>
</StackLayout>
</StackLayout>
<StackLayout x:Name="LocationWarningLayout" VerticalOptions="StartAndExpand">
<Label Text="If you ignore location tracking then bookings will be disabled"
VerticalTextAlignment="Center"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
FontSize="20"
HorizontalTextAlignment="Center"
FontFamily="Bold"/>
<StackLayout VerticalOptions="EndAndExpand" Margin="10,2,0,0">
<Button Text="Change" Clicked="ChangeLocation_Clicked" TextColor="White" FontSize="20" />
</StackLayout>
</StackLayout>
<StackLayout VerticalOptions="EndAndExpand" Margin="10,10,0,10">
<Button Text="Ignore" Clicked="Ignore_Clicked" TextColor="White" FontSize="20" />
</StackLayout>
</StackLayout>
</Frame>
</toolkit:Popup>

+ 142
- 4
GMCabsDriverAssistantSolution/Views/AppPermissiontSetDialogPage.xaml.cs View File

@ -1,11 +1,149 @@
using CommunityToolkit.Maui.Views;
using GMCabsDriverAssistant.Services;
using GMCabsDriverAssistant.Utils;
namespace GMCabsDriverAssistantSolution.Views;
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class AppPermissiontSetDialogPage : Popup
{
public AppPermissiontSetDialogPage(Page page, string flag)
{
InitializeComponent();
}
#region Fields
bool isLocationPermitted, isBatteryOptimizationDisabled;
string flag;
#endregion
#region Constructor
public AppPermissiontSetDialogPage(Page page, string flag)
{
InitializeComponent();
this.flag = flag;
isLocationPermitted = Preferences.Get(SecureStorageData.IsLocationPermitted, false);
isBatteryOptimizationDisabled = Preferences.Get(SecureStorageData.IsBatteryOptimizationDisabled, false);
PermissionAllocationLayout.IsVisible = true;
PermissionLayout.IsVisible = false;
LocationWarningLayout.IsVisible = false;
}
#endregion
#region Events
private async void Ignore_Clicked(object sender, EventArgs e)
{
if (isLocationPermitted)
{
if (flag == Constant.FROM_PERMISSION_PAGE)
{
//Dismiss(null);
Close();
await ShowSplashScreen();
}
else
{
//Dismiss(null);
Close();
}
}
else
{
if (LocationWarningLayout.IsVisible)
{
if (flag == Constant.FROM_PERMISSION_PAGE)
{
//Dismiss(null);
Close();
await ShowSplashScreen();
}
else
{
//Dismiss(null);
Close();
}
}
else
{
PermissionAllocationLayout.IsVisible = false;
PermissionLayout.IsVisible = false;
LocationWarningLayout.IsVisible = true;
}
}
}
[Obsolete]
private void Permission_Clicked(object sender, EventArgs e)
{
PermissionAllocationLayout.IsVisible = false;
PermissionLayout.IsVisible = true;
LocationWarningLayout.IsVisible = false;
if (Device.RuntimePlatform == Device.iOS)
{
BatteyOptimisedLayout.IsVisible = false;
}
else
{
if (isLocationPermitted)
{
PermissionLayout.IsVisible = true;
LocationLayout.IsVisible = false;
}
if (isBatteryOptimizationDisabled)
{
PermissionLayout.IsVisible = true;
BatteyOptimisedLayout.IsVisible = false;
}
}
}
private async void Location_Clicked(object sender, EventArgs e)
{
//Dismiss(null);
Close();
await Permissions.RequestAsync<Permissions.LocationAlways>();
var status = await OnLocationCheck();
}
private void Batteryoptimisation_Clicked(object sender, EventArgs e)
{
//Dismiss(null);
Close();
if (!DependencyService.Get<IBatteryInfo>().CheckIsIgnoringBatteryOptimizations())
{
DependencyService.Get<IBatteryInfo>().StartSetting();
}
}
private async void ChangeLocation_Clicked(object sender, EventArgs e)
{
//Dismiss(null);
Close();
await Permissions.RequestAsync<Permissions.LocationAlways>();
var status = await OnLocationCheck();
}
#endregion
#region Methods
private async Task ShowSplashScreen()
{
await Shell.Current.GoToAsync($"//{nameof(SplashPage)}");
}
public async Task<PermissionStatus> OnLocationCheck()
{
var status = await Permissions.CheckStatusAsync<Permissions.LocationAlways>();
if (status == PermissionStatus.Granted)
return status;
try
{
if ((DeviceInfo.Platform == DevicePlatform.Android && int.Parse(DeviceInfo.VersionString) >= 12) || DeviceInfo.Platform == DevicePlatform.iOS)
{
AppInfo.ShowSettingsUI();
}
}
catch (Exception ex)
{
}
return status;
}
#endregion
}

Loading…
Cancel
Save