mirror of
https://github.com/bitwarden/mobile
synced 2025-12-15 07:43:37 +00:00
Expand Settings TimePicker tap recognition to entire row (#1714)
* move timepicker to separate DataTemplate - activate timepicker when selecting row * null check on TimePicker
This commit is contained in:
@@ -45,20 +45,47 @@
|
|||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
TextColor="{Binding SubLabelColor}"
|
TextColor="{Binding SubLabelColor}"
|
||||||
StyleClass="list-sub" />
|
StyleClass="list-sub" />
|
||||||
<TimePicker IsVisible="{Binding ShowTimeInput}"
|
</controls:ExtendedStackLayout>
|
||||||
Time="{Binding Time}" Format="HH:mm"
|
</DataTemplate>
|
||||||
|
<DataTemplate
|
||||||
|
x:Key="timePickerTemplate"
|
||||||
|
x:DataType="pages:SettingsPageListItem">
|
||||||
|
<controls:ExtendedStackLayout Orientation="Horizontal"
|
||||||
|
StyleClass="list-row, list-row-platform">
|
||||||
|
<Frame
|
||||||
|
IsVisible="{Binding UseFrame}"
|
||||||
|
Padding="10"
|
||||||
|
HasShadow="False"
|
||||||
|
BackgroundColor="Transparent"
|
||||||
|
BorderColor="Accent">
|
||||||
|
<Label
|
||||||
|
Text="{Binding Name, Mode=OneWay}"
|
||||||
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
|
HorizontalTextAlignment="Center" />
|
||||||
|
</Frame>
|
||||||
|
<Label IsVisible="{Binding UseFrame, Converter={StaticResource inverseBool}}"
|
||||||
|
Text="{Binding Name, Mode=OneWay}"
|
||||||
|
LineBreakMode="{Binding LineBreakMode}"
|
||||||
|
HorizontalOptions="StartAndExpand"
|
||||||
|
VerticalOptions="CenterAndExpand"
|
||||||
|
StyleClass="list-title"/>
|
||||||
|
<TimePicker Time="{Binding Time}" Format="HH:mm"
|
||||||
PropertyChanged="OnTimePickerPropertyChanged"
|
PropertyChanged="OnTimePickerPropertyChanged"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
TextColor="{Binding SubLabelColor}"
|
TextColor="{Binding SubLabelColor}"
|
||||||
StyleClass="list-sub" Margin="-5" />
|
StyleClass="list-sub" Margin="-5"/>
|
||||||
|
<controls:ExtendedStackLayout.GestureRecognizers>
|
||||||
|
<TapGestureRecognizer Tapped="ActivateTimePicker"/>
|
||||||
|
</controls:ExtendedStackLayout.GestureRecognizers>
|
||||||
</controls:ExtendedStackLayout>
|
</controls:ExtendedStackLayout>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<pages:SettingsPageListItemSelector
|
<pages:SettingsPageListItemSelector
|
||||||
x:Key="listItemDataTemplateSelector"
|
x:Key="listItemDataTemplateSelector"
|
||||||
RegularTemplate="{StaticResource regularTemplate}" />
|
RegularTemplate="{StaticResource regularTemplate}"
|
||||||
|
TimePickerTemplate="{StaticResource timePickerTemplate}" />
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</ContentPage.Resources>
|
</ContentPage.Resources>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.ComponentModel;
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
@@ -45,6 +46,17 @@ namespace Bit.App.Pages
|
|||||||
return base.OnBackButtonPressed();
|
return base.OnBackButtonPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ActivateTimePicker(object sender, EventArgs args)
|
||||||
|
{
|
||||||
|
var stackLayout = (ExtendedStackLayout)sender;
|
||||||
|
SettingsPageListItem item = (SettingsPageListItem)stackLayout.BindingContext;
|
||||||
|
if (item.ShowTimeInput)
|
||||||
|
{
|
||||||
|
var timePicker = stackLayout.Children.Where(x => x is TimePicker).FirstOrDefault();
|
||||||
|
((TimePicker)timePicker)?.Focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async void OnTimePickerPropertyChanged(object sender, PropertyChangedEventArgs args)
|
async void OnTimePickerPropertyChanged(object sender, PropertyChangedEventArgs args)
|
||||||
{
|
{
|
||||||
var s = (TimePicker) sender;
|
var s = (TimePicker) sender;
|
||||||
|
|||||||
@@ -5,13 +5,21 @@ namespace Bit.App.Pages
|
|||||||
public class SettingsPageListItemSelector : DataTemplateSelector
|
public class SettingsPageListItemSelector : DataTemplateSelector
|
||||||
{
|
{
|
||||||
public DataTemplate RegularTemplate { get; set; }
|
public DataTemplate RegularTemplate { get; set; }
|
||||||
|
public DataTemplate TimePickerTemplate { get; set; }
|
||||||
|
|
||||||
protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
|
protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
|
||||||
{
|
{
|
||||||
if (item is SettingsPageListItem listItem)
|
if (item is SettingsPageListItem listItem)
|
||||||
|
{
|
||||||
|
if (listItem.ShowTimeInput)
|
||||||
|
{
|
||||||
|
return TimePickerTemplate;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
return RegularTemplate;
|
return RegularTemplate;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user