1
0
mirror of https://github.com/bitwarden/mobile.git synced 2024-11-10 09:49:52 +01:00

Added stepper cell to password generator settings page. Conditionally show sync indicator on pages.

This commit is contained in:
Kyle Spearrin 2016-07-12 18:59:09 -04:00
parent f2893e788d
commit 822a14e56c
9 changed files with 87 additions and 35 deletions

View File

@ -55,6 +55,7 @@
<Compile Include="Controls\ExtendedEditor.cs" />
<Compile Include="Controls\ExtendedNavigationPage.cs" />
<Compile Include="Controls\ExtendedContentPage.cs" />
<Compile Include="Controls\StepperCell.cs" />
<Compile Include="Controls\ExtendedTableView.cs" />
<Compile Include="Controls\ExtendedPicker.cs" />
<Compile Include="Controls\ExtendedEntry.cs" />

View File

@ -9,11 +9,14 @@ namespace Bit.App.Controls
{
private ISyncService _syncService;
public ExtendedContentPage()
public ExtendedContentPage(bool syncIndicator = true)
{
_syncService = Resolver.Resolve<ISyncService>();
BackgroundColor = Color.FromHex("efeff4");
if(syncIndicator)
{
IsBusy = _syncService.SyncInProgress;
MessagingCenter.Subscribe<Application, bool>(Application.Current, "SyncCompleted", (sender, success) =>
@ -27,4 +30,5 @@ namespace Bit.App.Controls
});
}
}
}
}

View File

@ -0,0 +1,57 @@
using Xamarin.Forms;
namespace Bit.App.Controls
{
public class StepperCell : ExtendedViewCell
{
public StepperCell(string labelText, double value, double min, double max, double increment)
{
Label = new Label
{
Text = labelText,
HorizontalOptions = LayoutOptions.Start,
VerticalOptions = LayoutOptions.CenterAndExpand
};
StepperValueLabel = new Label
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalTextAlignment = TextAlignment.Start,
Text = value.ToString(),
Style = (Style)Application.Current.Resources["text-muted"]
};
Stepper = new Stepper
{
HorizontalOptions = LayoutOptions.End,
VerticalOptions = LayoutOptions.CenterAndExpand,
Minimum = min,
Maximum = max,
Increment = increment,
Value = value
};
Stepper.ValueChanged += Stepper_ValueChanged;
var stackLayout = new StackLayout
{
Orientation = StackOrientation.Horizontal,
Children = { Label, StepperValueLabel, Stepper },
Spacing = 15,
Padding = new Thickness(15, 8)
};
View = stackLayout;
}
private void Stepper_ValueChanged(object sender, ValueChangedEventArgs e)
{
StepperValueLabel.Text = e.NewValue.ToString();
}
public Label Label { get; private set; }
public Label StepperValueLabel { get; private set; }
public Stepper Stepper { get; private set; }
}
}

View File

@ -20,6 +20,7 @@ namespace Bit.App.Pages
private readonly bool _checkFingerprintImmediately;
public LockFingerprintPage(bool checkFingerprintImmediately)
: base(false)
{
_checkFingerprintImmediately = checkFingerprintImmediately;
_fingerprint = Resolver.Resolve<IFingerprint>();

View File

@ -18,6 +18,7 @@ namespace Bit.App.Pages
private readonly ISettings _settings;
public LockPinPage()
: base(false)
{
_authService = Resolver.Resolve<IAuthService>();
_userDialogs = Resolver.Resolve<IUserDialogs>();

View File

@ -153,6 +153,7 @@ namespace Bit.App.Pages
_userDialogs.SuccessToast(string.Format(AppResources.ValueHasBeenCopied, AppResources.Password));
}
// TODO: move to standalone reusable control
public class SliderViewCell : ExtendedViewCell
{
private readonly ToolsPasswordGeneratorPage _page;
@ -200,7 +201,7 @@ namespace Bit.App.Pages
Orientation = StackOrientation.Horizontal,
Spacing = 15,
Children = { label, LengthSlider, Value },
Padding = new Thickness(15)
Padding = new Thickness(15, 8)
};
View = stackLayout;

View File

@ -29,8 +29,8 @@ namespace Bit.App.Pages
public ExtendedSwitchCell SpecialCell { get; set; }
public ExtendedSwitchCell NumbersCell { get; set; }
public ExtendedSwitchCell AvoidAmbiguousCell { get; set; }
public EntryCell SpecialMinCell { get; set; }
public EntryCell NumbersMinCell { get; set; }
public StepperCell SpecialMinCell { get; set; }
public StepperCell NumbersMinCell { get; set; }
public void Init()
{
@ -69,19 +69,10 @@ namespace Bit.App.Pages
};
AvoidAmbiguousCell.OnChanged += AvoidAmbiguousCell_OnChanged; ;
NumbersMinCell = new EntryCell
{
Label = "Minimum Numbers",
Text = _settings.GetValueOrDefault(Constants.PasswordGeneratorMinNumbers, 1).ToString(),
Keyboard = Keyboard.Numeric
};
SpecialMinCell = new EntryCell
{
Label = "Minimum Special",
Text = _settings.GetValueOrDefault(Constants.PasswordGeneratorMinSpecial, 1).ToString(),
Keyboard = Keyboard.Numeric
};
NumbersMinCell = new StepperCell("Minimum Numbers",
_settings.GetValueOrDefault(Constants.PasswordGeneratorMinNumbers, 1), 0, 5, 1);
SpecialMinCell = new StepperCell("Minimum Special",
_settings.GetValueOrDefault(Constants.PasswordGeneratorMinSpecial, 1), 0, 5, 1);
var table = new ExtendedTableView
{
@ -122,17 +113,11 @@ namespace Bit.App.Pages
protected override void OnDisappearing()
{
int minNumber;
if(int.TryParse(NumbersMinCell.Text, out minNumber))
{
_settings.AddOrUpdateValue(Constants.PasswordGeneratorMinNumbers, minNumber);
}
_settings.AddOrUpdateValue(Constants.PasswordGeneratorMinNumbers,
Convert.ToInt32(NumbersMinCell.Stepper.Value));
int minSpecial;
if(int.TryParse(SpecialMinCell.Text, out minSpecial))
{
_settings.AddOrUpdateValue(Constants.PasswordGeneratorMinSpecial, minSpecial);
}
_settings.AddOrUpdateValue(Constants.PasswordGeneratorMinSpecial,
Convert.ToInt32(SpecialMinCell.Stepper.Value));
}
private void AvoidAmbiguousCell_OnChanged(object sender, ToggledEventArgs e)

View File

@ -322,7 +322,6 @@ namespace Bit.App.Pages
{
_page = page;
// Adding whitespace to Delete action to account for the negative margin offset on the listview
var deleteAction = new MenuItem { Text = AppResources.Delete, IsDestructive = true };
deleteAction.SetBinding(MenuItem.CommandParameterProperty, new Binding("."));
deleteAction.Clicked += page.DeleteClickedAsync;

View File

@ -53,10 +53,13 @@ namespace Bit.iOS
// Appearance stuff
var primaryColor = new UIColor(red: 0.24f, green: 0.55f, blue: 0.74f, alpha: 1.0f);
var grayLight = new UIColor(red: 0.47f, green: 0.47f, blue: 0.47f, alpha: 1.0f);
UINavigationBar.Appearance.ShadowImage = new UIImage();
UINavigationBar.Appearance.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
UIBarButtonItem.AppearanceWhenContainedIn(new Type[] { typeof(UISearchBar) }).TintColor = primaryColor;
UIStepper.Appearance.TintColor = grayLight;
UISlider.Appearance.TintColor = primaryColor;
MessagingCenter.Subscribe<Xamarin.Forms.Application, ToolsExtensionPage>(Xamarin.Forms.Application.Current, "ShowAppExtension", (sender, page) =>
{