mirror of
https://github.com/bitwarden/android.git
synced 2024-12-18 23:31:52 +03:00
Stepper table view cell. Min numbers/special to password generator.
This commit is contained in:
parent
49cb984373
commit
afd22b6462
5 changed files with 86 additions and 13 deletions
39
src/iOS.Core/Views/StepperTableViewCell.cs
Normal file
39
src/iOS.Core/Views/StepperTableViewCell.cs
Normal file
|
@ -0,0 +1,39 @@
|
|||
using System;
|
||||
using UIKit;
|
||||
|
||||
namespace Bit.iOS.Core.Views
|
||||
{
|
||||
public class StepperTableViewCell : UITableViewCell
|
||||
{
|
||||
// Give some space to the right of the detail in between the spacer.
|
||||
// This is a bit of a hack, but I did not see a way to specify a margin on the
|
||||
// detaul DetailTextLabel or AccessoryView
|
||||
private string _detailRightSpace = "\t";
|
||||
|
||||
public StepperTableViewCell(string labelName, double value, double min, double max, double increment)
|
||||
: base(UITableViewCellStyle.Value1, nameof(SwitchTableViewCell))
|
||||
{
|
||||
TextLabel.Text = labelName;
|
||||
DetailTextLabel.Text = string.Concat(value.ToString(), _detailRightSpace);
|
||||
DetailTextLabel.TextColor = new UIColor(red: 0.47f, green: 0.47f, blue: 0.47f, alpha: 1.0f);
|
||||
|
||||
Stepper = new UIStepper
|
||||
{
|
||||
TintColor = new UIColor(red: 0.47f, green: 0.47f, blue: 0.47f, alpha: 1.0f),
|
||||
Value = value,
|
||||
MinimumValue = min,
|
||||
MaximumValue = max
|
||||
};
|
||||
Stepper.ValueChanged += Stepper_ValueChanged;
|
||||
|
||||
AccessoryView = Stepper;
|
||||
}
|
||||
|
||||
private void Stepper_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
DetailTextLabel.Text = string.Concat(Stepper.Value.ToString(), _detailRightSpace);
|
||||
}
|
||||
|
||||
public UIStepper Stepper { get; private set; }
|
||||
}
|
||||
}
|
|
@ -70,6 +70,7 @@
|
|||
<Compile Include="Utilities\Dialogs.cs" />
|
||||
<Compile Include="Views\ISelectable.cs" />
|
||||
<Compile Include="Views\PickerTableViewCell.cs" />
|
||||
<Compile Include="Views\StepperTableViewCell.cs" />
|
||||
<Compile Include="Views\SwitchTableViewCell.cs" />
|
||||
<Compile Include="Views\FormEntryTableViewCell.cs" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<objects>
|
||||
<navigationController definesPresentationContext="YES" id="64" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="67" translucent="NO" hidden="YES">
|
||||
<rect key="frame" x="0.0" y="20" width="600" height="44"/>
|
||||
<rect key="frame" x="0.0" y="20" width="880" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
</navigationBar>
|
||||
<connections>
|
||||
|
@ -57,7 +57,7 @@
|
|||
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="oCZ-GQ-aOK" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="8A5-AR-QHS" translucent="NO">
|
||||
<rect key="frame" x="0.0" y="20" width="600" height="44"/>
|
||||
<rect key="frame" x="0.0" y="20" width="880" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<textAttributes key="titleTextAttributes">
|
||||
<color key="textColor" colorSpace="calibratedWhite" white="1" alpha="1"/>
|
||||
|
@ -78,7 +78,7 @@
|
|||
<navigationController definesPresentationContext="YES" id="1845" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="1848" translucent="NO">
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="0.0" y="20" width="600" height="44"/>
|
||||
<rect key="frame" x="0.0" y="20" width="880" height="44"/>
|
||||
<textAttributes key="titleTextAttributes">
|
||||
<color key="textColor" colorSpace="calibratedWhite" white="1" alpha="1"/>
|
||||
</textAttributes>
|
||||
|
@ -200,7 +200,7 @@
|
|||
<navigationController definesPresentationContext="YES" id="4574" sceneMemberID="viewController">
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="4577" translucent="NO">
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="0.0" y="20" width="600" height="44"/>
|
||||
<rect key="frame" x="0.0" y="20" width="880" height="44"/>
|
||||
<color key="barTintColor" colorSpace="calibratedRGB" red="0.23529411764705882" green="0.55294117647058827" blue="0.73725490196078436" alpha="1"/>
|
||||
<textAttributes key="titleTextAttributes">
|
||||
<color key="textColor" colorSpace="calibratedWhite" white="1" alpha="1"/>
|
||||
|
@ -246,7 +246,7 @@
|
|||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<subviews>
|
||||
<containerView contentMode="scaleToFill" id="4933" translatesAutoresizingMaskIntoConstraints="NO">
|
||||
<rect key="frame" x="0.0" y="119.5" width="600" height="480.5"/>
|
||||
<rect key="frame" x="0.0" y="154.5" width="600" height="445.5"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<connections>
|
||||
<segue id="6480" destination="4912" kind="embed"/>
|
||||
|
@ -262,7 +262,7 @@
|
|||
</subviews>
|
||||
<constraints>
|
||||
<constraint id="6484" firstItem="4930" firstAttribute="trailing" secondItem="4933" secondAttribute="trailing"/>
|
||||
<constraint id="6485" firstItem="4933" firstAttribute="top" secondItem="4940" secondAttribute="bottom"/>
|
||||
<constraint id="6485" firstItem="4933" firstAttribute="top" secondItem="4940" secondAttribute="bottom" constant="35"/>
|
||||
<constraint id="6486" firstItem="4933" firstAttribute="leading" secondItem="4930" secondAttribute="leading"/>
|
||||
<constraint id="6487" firstItem="4940" firstAttribute="leading" secondItem="4930" secondAttribute="leading" constant="15"/>
|
||||
<constraint id="6488" firstItem="4940" firstAttribute="top" secondItem="4571" secondAttribute="bottom" constant="35"/>
|
||||
|
@ -279,7 +279,7 @@
|
|||
<objects>
|
||||
<tableViewController id="4912" sceneMemberID="viewController">
|
||||
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="4913">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="480.5"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="445.5"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<connections>
|
||||
|
|
|
@ -14,6 +14,7 @@ using Bit.App;
|
|||
using Plugin.Connectivity.Abstractions;
|
||||
using Bit.iOS.Core.Utilities;
|
||||
using Plugin.Settings.Abstractions;
|
||||
using CoreGraphics;
|
||||
|
||||
namespace Bit.iOS.Extension
|
||||
{
|
||||
|
@ -32,6 +33,8 @@ namespace Bit.iOS.Extension
|
|||
public SwitchTableViewCell LowercaseCell { get; set; } = new SwitchTableViewCell("a-z");
|
||||
public SwitchTableViewCell NumbersCell { get; set; } = new SwitchTableViewCell("0-9");
|
||||
public SwitchTableViewCell SpecialCell { get; set; } = new SwitchTableViewCell("!@#$%^&*");
|
||||
public StepperTableViewCell MinNumbersCell { get; set; } = new StepperTableViewCell("Minimum Numbers", 1, 0, 5, 1);
|
||||
public StepperTableViewCell MinSpecialCell { get; set; } = new StepperTableViewCell("Minimum Special", 1, 0, 5, 1);
|
||||
|
||||
public override void ViewWillAppear(bool animated)
|
||||
{
|
||||
|
@ -48,7 +51,11 @@ namespace Bit.iOS.Extension
|
|||
View.BackgroundColor = new UIColor(red: 0.94f, green: 0.94f, blue: 0.96f, alpha: 1.0f);
|
||||
|
||||
PasswordLabel.Text = _passwordGenerationService.GeneratePassword();
|
||||
PasswordLabel.Font = UIFont.FromName("Courier", 17);
|
||||
var descriptor = UIFontDescriptor.PreferredBody;
|
||||
PasswordLabel.Font = UIFont.FromName("Courier", descriptor.PointSize * 1.3f);
|
||||
PasswordLabel.LineBreakMode = UILineBreakMode.TailTruncation;
|
||||
PasswordLabel.Lines = 1;
|
||||
PasswordLabel.AdjustsFontSizeToFitWidth = false;
|
||||
|
||||
var controller = ChildViewControllers.LastOrDefault();
|
||||
if(controller != null)
|
||||
|
@ -126,11 +133,11 @@ namespace Bit.iOS.Extension
|
|||
}
|
||||
else if(indexPath.Row == 5)
|
||||
{
|
||||
// TODO: Min numbers stepper
|
||||
return _controller.MinNumbersCell;
|
||||
}
|
||||
else if(indexPath.Row == 6)
|
||||
{
|
||||
// TODO: Min special stepper
|
||||
return _controller.MinSpecialCell;
|
||||
}
|
||||
|
||||
return new UITableViewCell();
|
||||
|
@ -158,9 +165,27 @@ namespace Bit.iOS.Extension
|
|||
|
||||
public override nfloat GetHeightForHeader(UITableView tableView, nint section)
|
||||
{
|
||||
if(section == 0)
|
||||
{
|
||||
return 0.00001f;
|
||||
}
|
||||
|
||||
return UITableView.AutomaticDimension;
|
||||
}
|
||||
|
||||
public override UIView GetViewForHeader(UITableView tableView, nint section)
|
||||
{
|
||||
if(section == 0)
|
||||
{
|
||||
return new UIView(CGRect.Empty)
|
||||
{
|
||||
Hidden = true
|
||||
};
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public override string TitleForHeader(UITableView tableView, nint section)
|
||||
{
|
||||
if(section == 1)
|
||||
|
|
|
@ -108,18 +108,26 @@ namespace Bit.iOS.Extension
|
|||
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
|
||||
{
|
||||
var cell = tableView.DequeueReusableCell(CellIdentifier);
|
||||
var item = _tableItems.ElementAt(indexPath.Row);
|
||||
|
||||
// if there are no cells to reuse, create a new one
|
||||
if(cell == null)
|
||||
{
|
||||
cell = new UITableViewCell(UITableViewCellStyle.Subtitle, CellIdentifier);
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
|
||||
public override void WillDisplay( UITableView tableView, UITableViewCell cell, NSIndexPath indexPath )
|
||||
{
|
||||
if(cell == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var item = _tableItems.ElementAt( indexPath.Row );
|
||||
cell.TextLabel.Text = item.Name;
|
||||
cell.DetailTextLabel.Text = item.Username;
|
||||
cell.DetailTextLabel.TextColor = cell.DetailTextLabel.TintColor = new UIColor(red: 0.47f, green: 0.47f, blue: 0.47f, alpha: 1.0f);
|
||||
return cell;
|
||||
cell.DetailTextLabel.TextColor = cell.DetailTextLabel.TintColor = new UIColor( red: 0.47f, green: 0.47f, blue: 0.47f, alpha: 1.0f );
|
||||
}
|
||||
|
||||
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
|
||||
|
|
Loading…
Reference in a new issue