mirror of
https://github.com/bitwarden/mobile
synced 2025-12-15 15:53:44 +00:00
Compare commits
1 Commits
2293
...
beeep/envi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9f2f96de9d |
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -793,7 +793,7 @@ jobs:
|
|||||||
done
|
done
|
||||||
|
|
||||||
- name: Upload Sources
|
- name: Upload Sources
|
||||||
uses: crowdin/github-action@965d501f160af7b1f88aed4c29154b0caf1e94b9 # v1.9.0
|
uses: crowdin/github-action@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 # v1.4.9
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}
|
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}
|
||||||
|
|||||||
2
.github/workflows/crowdin-pull.yml
vendored
2
.github/workflows/crowdin-pull.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
|||||||
secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase"
|
secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase"
|
||||||
|
|
||||||
- name: Download translations
|
- name: Download translations
|
||||||
uses: crowdin/github-action@965d501f160af7b1f88aed4c29154b0caf1e94b9 # v1.9.0
|
uses: crowdin/github-action@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 # v1.4.9
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}
|
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}
|
||||||
|
|||||||
2
.github/workflows/enforce-labels.yml
vendored
2
.github/workflows/enforce-labels.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Enforce Label
|
- name: Enforce Label
|
||||||
uses: yogevbd/enforce-label-action@a3c219da6b8fa73f6ba62b68ff09c469b3a1c024 # 2.2.2
|
uses: yogevbd/enforce-label-action@a3c219da6b8fa73f6ba62b68ff09c469b3a1c024 # v2.2.2
|
||||||
with:
|
with:
|
||||||
BANNED_LABELS: "hold,needs-qa"
|
BANNED_LABELS: "hold,needs-qa"
|
||||||
BANNED_LABELS_DESCRIPTION: "PRs with the hold or needs-qa labels cannot be merged"
|
BANNED_LABELS_DESCRIPTION: "PRs with the hold or needs-qa labels cannot be merged"
|
||||||
|
|||||||
8
.github/workflows/release.yml
vendored
8
.github/workflows/release.yml
vendored
@@ -68,7 +68,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Download all artifacts
|
- name: Download all artifacts
|
||||||
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
|
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
|
||||||
uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0
|
uses: dawidd6/action-download-artifact@575b1e4167df67acf7e692af784566618b23c71e # v2.17.10
|
||||||
with:
|
with:
|
||||||
workflow: build.yml
|
workflow: build.yml
|
||||||
workflow_conclusion: success
|
workflow_conclusion: success
|
||||||
@@ -76,7 +76,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Dry Run - Download all artifacts
|
- name: Dry Run - Download all artifacts
|
||||||
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
|
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
|
||||||
uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0
|
uses: dawidd6/action-download-artifact@575b1e4167df67acf7e692af784566618b23c71e # v2.17.10
|
||||||
with:
|
with:
|
||||||
workflow: build.yml
|
workflow: build.yml
|
||||||
workflow_conclusion: success
|
workflow_conclusion: success
|
||||||
@@ -130,7 +130,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Download F-Droid .apk artifact
|
- name: Download F-Droid .apk artifact
|
||||||
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
|
if: ${{ github.event.inputs.release_type != 'Dry Run' }}
|
||||||
uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0
|
uses: dawidd6/action-download-artifact@575b1e4167df67acf7e692af784566618b23c71e # v2.17.10
|
||||||
with:
|
with:
|
||||||
workflow: build.yml
|
workflow: build.yml
|
||||||
workflow_conclusion: success
|
workflow_conclusion: success
|
||||||
@@ -139,7 +139,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Dry Run - Download F-Droid .apk artifact
|
- name: Dry Run - Download F-Droid .apk artifact
|
||||||
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
|
if: ${{ github.event.inputs.release_type == 'Dry Run' }}
|
||||||
uses: dawidd6/action-download-artifact@246dbf436b23d7c49e21a7ab8204ca9ecd1fe615 # v2.27.0
|
uses: dawidd6/action-download-artifact@575b1e4167df67acf7e692af784566618b23c71e # v2.17.10
|
||||||
with:
|
with:
|
||||||
workflow: build.yml
|
workflow: build.yml
|
||||||
workflow_conclusion: success
|
workflow_conclusion: success
|
||||||
|
|||||||
@@ -159,7 +159,6 @@
|
|||||||
<Compile Include="Constants.cs" />
|
<Compile Include="Constants.cs" />
|
||||||
<Compile Include="Effects\RemoveFontPaddingEffect.cs" />
|
<Compile Include="Effects\RemoveFontPaddingEffect.cs" />
|
||||||
<Compile Include="Services\WatchDeviceService.cs" />
|
<Compile Include="Services\WatchDeviceService.cs" />
|
||||||
<Compile Include="Renderers\CustomLabelRenderer.cs" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AndroidAsset Include="Assets\bwi-font.ttf" />
|
<AndroidAsset Include="Assets\bwi-font.ttf" />
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace Bit.Droid.Autofill
|
|||||||
private List<Field> _passwordFields = null;
|
private List<Field> _passwordFields = null;
|
||||||
private List<Field> _usernameFields = null;
|
private List<Field> _usernameFields = null;
|
||||||
private HashSet<string> _ignoreSearchTerms = new HashSet<string> { "search", "find", "recipient", "edit" };
|
private HashSet<string> _ignoreSearchTerms = new HashSet<string> { "search", "find", "recipient", "edit" };
|
||||||
private HashSet<string> _usernameTerms = new HashSet<string> { "email", "phone", "username" };
|
private HashSet<string> _usernameTerms = new HashSet<string> { "email", "phone", "username"};
|
||||||
private HashSet<string> _passwordTerms = new HashSet<string> { "password", "pswd" };
|
private HashSet<string> _passwordTerms = new HashSet<string> { "password", "pswd" };
|
||||||
|
|
||||||
public List<AutofillId> AutofillIds { get; private set; } = new List<AutofillId>();
|
public List<AutofillId> AutofillIds { get; private set; } = new List<AutofillId>();
|
||||||
@@ -54,14 +54,15 @@ namespace Bit.Droid.Autofill
|
|||||||
if (HintToFieldsMap.ContainsKey(View.AutofillHintPassword))
|
if (HintToFieldsMap.ContainsKey(View.AutofillHintPassword))
|
||||||
{
|
{
|
||||||
_passwordFields.AddRange(HintToFieldsMap[View.AutofillHintPassword]);
|
_passwordFields.AddRange(HintToFieldsMap[View.AutofillHintPassword]);
|
||||||
return _passwordFields;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
_passwordFields = Fields.Where(f => FieldIsPassword(f)).ToList();
|
|
||||||
if (!_passwordFields.Any())
|
|
||||||
{
|
{
|
||||||
_passwordFields = Fields.Where(f => FieldHasPasswordTerms(f)).ToList();
|
_passwordFields = Fields.Where(f => FieldIsPassword(f)).ToList();
|
||||||
|
if (!_passwordFields.Any())
|
||||||
|
{
|
||||||
|
_passwordFields = Fields.Where(f => FieldHasPasswordTerms(f)).ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return _passwordFields;
|
return _passwordFields;
|
||||||
}
|
}
|
||||||
@@ -86,25 +87,23 @@ namespace Bit.Droid.Autofill
|
|||||||
{
|
{
|
||||||
_usernameFields.AddRange(HintToFieldsMap[View.AutofillHintUsername]);
|
_usernameFields.AddRange(HintToFieldsMap[View.AutofillHintUsername]);
|
||||||
}
|
}
|
||||||
if (_usernameFields.Any())
|
|
||||||
{
|
|
||||||
return _usernameFields;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
foreach (var passwordField in PasswordFields)
|
|
||||||
{
|
{
|
||||||
var usernameField = Fields.TakeWhile(f => f.AutofillId != passwordField.AutofillId)
|
foreach (var passwordField in PasswordFields)
|
||||||
.LastOrDefault();
|
|
||||||
if (usernameField != null)
|
|
||||||
{
|
{
|
||||||
_usernameFields.Add(usernameField);
|
var usernameField = Fields.TakeWhile(f => f.AutofillId != passwordField.AutofillId)
|
||||||
|
.LastOrDefault();
|
||||||
|
if (usernameField != null)
|
||||||
|
{
|
||||||
|
_usernameFields.Add(usernameField);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!_usernameFields.Any())
|
if (!_usernameFields.Any())
|
||||||
{
|
{
|
||||||
_usernameFields = Fields.Where(f => FieldIsUsername(f)).ToList();
|
_usernameFields = Fields.Where(f => FieldIsUsername(f)).ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return _usernameFields;
|
return _usernameFields;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
using System;
|
|
||||||
using Bit.App.Controls;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using Xamarin.Forms.Platform.Android;
|
|
||||||
using Android.Content;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
using Bit.Droid.Renderers;
|
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(CustomLabel), typeof(CustomLabelRenderer))]
|
|
||||||
namespace Bit.Droid.Renderers
|
|
||||||
{
|
|
||||||
public class CustomLabelRenderer : LabelRenderer
|
|
||||||
{
|
|
||||||
public CustomLabelRenderer(Context context)
|
|
||||||
: base(context)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
||||||
{
|
|
||||||
var label = sender as CustomLabel;
|
|
||||||
switch (e.PropertyName)
|
|
||||||
{
|
|
||||||
case nameof(CustomLabel.AutomationId):
|
|
||||||
Control.ContentDescription = label.AutomationId;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
base.OnElementPropertyChanged(sender, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -145,7 +145,6 @@
|
|||||||
<Folder Include="Controls\DateTime\" />
|
<Folder Include="Controls\DateTime\" />
|
||||||
<Folder Include="Controls\IconLabelButton\" />
|
<Folder Include="Controls\IconLabelButton\" />
|
||||||
<Folder Include="Controls\PasswordStrengthProgressBar\" />
|
<Folder Include="Controls\PasswordStrengthProgressBar\" />
|
||||||
<Folder Include="Utilities\Automation\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -441,6 +440,5 @@
|
|||||||
<None Remove="MessagePack" />
|
<None Remove="MessagePack" />
|
||||||
<None Remove="MessagePack.MSBuild.Tasks" />
|
<None Remove="MessagePack.MSBuild.Tasks" />
|
||||||
<None Remove="Controls\PasswordStrengthProgressBar\" />
|
<None Remove="Controls\PasswordStrengthProgressBar\" />
|
||||||
<None Remove="Utilities\Automation\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -30,15 +30,13 @@
|
|||||||
BackgroundColor="{DynamicResource BackgroundColor}"
|
BackgroundColor="{DynamicResource BackgroundColor}"
|
||||||
VerticalOptions="Start"
|
VerticalOptions="Start"
|
||||||
RowHeight="{Binding AccountListRowHeight, Source={x:Reference _mainOverlay}}"
|
RowHeight="{Binding AccountListRowHeight, Source={x:Reference _mainOverlay}}"
|
||||||
effects:ScrollViewContentInsetAdjustmentBehaviorEffect.ContentInsetAdjustmentBehavior="Never"
|
effects:ScrollViewContentInsetAdjustmentBehaviorEffect.ContentInsetAdjustmentBehavior="Never">
|
||||||
AutomationId="AccountListView">
|
|
||||||
<ListView.ItemTemplate>
|
<ListView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="view:AccountView">
|
<DataTemplate x:DataType="view:AccountView">
|
||||||
<controls:AccountViewCell
|
<controls:AccountViewCell
|
||||||
Account="{Binding .}"
|
Account="{Binding .}"
|
||||||
SelectAccountCommand="{Binding SelectAccountCommand, Source={x:Reference _mainOverlay}}"
|
SelectAccountCommand="{Binding SelectAccountCommand, Source={x:Reference _mainOverlay}}"
|
||||||
LongPressAccountCommand="{Binding LongPressAccountCommand, Source={x:Reference _mainOverlay}}"
|
LongPressAccountCommand="{Binding LongPressAccountCommand, Source={x:Reference _mainOverlay}}"
|
||||||
AutomationId="AccountViewCell"
|
|
||||||
/>
|
/>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ListView.ItemTemplate>
|
</ListView.ItemTemplate>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ViewCell xmlns="http://xamarin.com/schemas/2014/forms"
|
<ViewCell xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
|
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
|
||||||
@@ -60,23 +60,20 @@
|
|||||||
Text="{Binding AccountView.Email}"
|
Text="{Binding AccountView.Email}"
|
||||||
IsVisible="{Binding IsActive}"
|
IsVisible="{Binding IsActive}"
|
||||||
StyleClass="accountlist-title, accountlist-title-platform"
|
StyleClass="accountlist-title, accountlist-title-platform"
|
||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation" />
|
||||||
AutomationId="AccountEmailLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Text="{Binding AccountView.Email}"
|
Text="{Binding AccountView.Email}"
|
||||||
IsVisible="{Binding IsActive, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding IsActive, Converter={StaticResource inverseBool}}"
|
||||||
StyleClass="accountlist-title, accountlist-title-platform"
|
StyleClass="accountlist-title, accountlist-title-platform"
|
||||||
TextColor="{DynamicResource MutedColor}"
|
TextColor="{DynamicResource MutedColor}"
|
||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation" />
|
||||||
AutomationId="AccountEmailLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
IsVisible="{Binding ShowHostname}"
|
IsVisible="{Binding ShowHostname}"
|
||||||
Text="{Binding AccountView.Hostname}"
|
Text="{Binding AccountView.Hostname}"
|
||||||
StyleClass="accountlist-sub, accountlist-sub-platform"
|
StyleClass="accountlist-sub, accountlist-sub-platform"
|
||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation" />
|
||||||
AutomationId="AccountHostUrlLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Text="{u:I18n AccountUnlocked}"
|
Text="{u:I18n AccountUnlocked}"
|
||||||
@@ -84,8 +81,7 @@
|
|||||||
StyleClass="accountlist-sub, accountlist-sub-platform"
|
StyleClass="accountlist-sub, accountlist-sub-platform"
|
||||||
FontAttributes="Italic"
|
FontAttributes="Italic"
|
||||||
TextTransform="Lowercase"
|
TextTransform="Lowercase"
|
||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation" />
|
||||||
AutomationId="AccountStatusLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Text="{u:I18n AccountLocked}"
|
Text="{u:I18n AccountLocked}"
|
||||||
@@ -93,8 +89,7 @@
|
|||||||
StyleClass="accountlist-sub, accountlist-sub-platform"
|
StyleClass="accountlist-sub, accountlist-sub-platform"
|
||||||
FontAttributes="Italic"
|
FontAttributes="Italic"
|
||||||
TextTransform="Lowercase"
|
TextTransform="Lowercase"
|
||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation" />
|
||||||
AutomationId="AccountStatusLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Grid.Row="2"
|
Grid.Row="2"
|
||||||
Text="{u:I18n AccountLoggedOut}"
|
Text="{u:I18n AccountLoggedOut}"
|
||||||
@@ -102,8 +97,7 @@
|
|||||||
StyleClass="accountlist-sub, accountlist-sub-platform"
|
StyleClass="accountlist-sub, accountlist-sub-platform"
|
||||||
FontAttributes="Italic"
|
FontAttributes="Italic"
|
||||||
TextTransform="Lowercase"
|
TextTransform="Lowercase"
|
||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation" />
|
||||||
AutomationId="AccountStatusLabel" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
@@ -113,8 +107,7 @@
|
|||||||
Margin="12,0"
|
Margin="12,0"
|
||||||
HorizontalOptions="Center"
|
HorizontalOptions="Center"
|
||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
StyleClass="list-icon, list-icon-platform"
|
StyleClass="list-icon, list-icon-platform" />
|
||||||
AutomationId="InactiveVaultIcon" />
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Text="{Binding AuthStatusIconActive}"
|
Text="{Binding AuthStatusIconActive}"
|
||||||
@@ -123,8 +116,7 @@
|
|||||||
HorizontalOptions="Center"
|
HorizontalOptions="Center"
|
||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
StyleClass="list-icon, list-icon-platform"
|
StyleClass="list-icon, list-icon-platform"
|
||||||
TextColor="{DynamicResource TextColor}"
|
TextColor="{DynamicResource TextColor}"/>
|
||||||
AutomationId="ActiveVaultIcon" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid
|
<Grid
|
||||||
@@ -155,8 +147,7 @@
|
|||||||
StyleClass="accountlist-title, accountlist-title-platform"
|
StyleClass="accountlist-title, accountlist-title-platform"
|
||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation"
|
||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
Grid.Column="1"
|
Grid.Column="1" />
|
||||||
AutomationId="AddAccountButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</ViewCell>
|
</ViewCell>
|
||||||
@@ -9,8 +9,7 @@
|
|||||||
StyleClass="list-row, list-row-platform"
|
StyleClass="list-row, list-row-platform"
|
||||||
RowSpacing="0"
|
RowSpacing="0"
|
||||||
ColumnSpacing="0"
|
ColumnSpacing="0"
|
||||||
x:DataType="controls:CipherViewCellViewModel"
|
x:DataType="controls:CipherViewCellViewModel">
|
||||||
AutomationId="CipherCell">
|
|
||||||
|
|
||||||
<Grid.Resources>
|
<Grid.Resources>
|
||||||
<u:IconGlyphConverter x:Key="iconGlyphConverter"/>
|
<u:IconGlyphConverter x:Key="iconGlyphConverter"/>
|
||||||
@@ -37,8 +36,7 @@
|
|||||||
IsVisible="{Binding ShowIconImage, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding ShowIconImage, Converter={StaticResource inverseBool}}"
|
||||||
Text="{Binding Cipher, Converter={StaticResource iconGlyphConverter}}"
|
Text="{Binding Cipher, Converter={StaticResource iconGlyphConverter}}"
|
||||||
ShouldUpdateFontSizeDynamicallyForAccesibility="True"
|
ShouldUpdateFontSizeDynamicallyForAccesibility="True"
|
||||||
AutomationProperties.IsInAccessibleTree="False"
|
AutomationProperties.IsInAccessibleTree="False" />
|
||||||
AutomationId="CipherTypeIcon" />
|
|
||||||
|
|
||||||
<ff:CachedImage
|
<ff:CachedImage
|
||||||
x:Name="_iconImage"
|
x:Name="_iconImage"
|
||||||
@@ -54,8 +52,7 @@
|
|||||||
Aspect="AspectFit"
|
Aspect="AspectFit"
|
||||||
IsVisible="{Binding ShowIconImage}"
|
IsVisible="{Binding ShowIconImage}"
|
||||||
Source="{Binding IconImageSource, Mode=OneTime}"
|
Source="{Binding IconImageSource, Mode=OneTime}"
|
||||||
AutomationProperties.IsInAccessibleTree="False"
|
AutomationProperties.IsInAccessibleTree="False" />
|
||||||
AutomationId="CipherWebsiteIcon" />
|
|
||||||
|
|
||||||
<Grid RowSpacing="0" ColumnSpacing="0" Grid.Row="0" Grid.Column="1" VerticalOptions="Center" Padding="0, 7">
|
<Grid RowSpacing="0" ColumnSpacing="0" Grid.Row="0" Grid.Column="1" VerticalOptions="Center" Padding="0, 7">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
@@ -74,8 +71,7 @@
|
|||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
StyleClass="list-title, list-title-platform"
|
StyleClass="list-title, list-title-platform"
|
||||||
Text="{Binding Cipher.Name}"
|
Text="{Binding Cipher.Name}" />
|
||||||
AutomationId="CipherNameLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
@@ -84,8 +80,7 @@
|
|||||||
StyleClass="list-subtitle, list-subtitle-platform"
|
StyleClass="list-subtitle, list-subtitle-platform"
|
||||||
Text="{Binding Cipher.SubTitle}"
|
Text="{Binding Cipher.SubTitle}"
|
||||||
IsVisible="{Binding Source={RelativeSource Self}, Path=Text,
|
IsVisible="{Binding Source={RelativeSource Self}, Path=Text,
|
||||||
Converter={StaticResource stringHasValueConverter}}"
|
Converter={StaticResource stringHasValueConverter}}"/>
|
||||||
AutomationId="CipherSubTitleLabel" />
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
@@ -96,8 +91,7 @@
|
|||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Collection}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Collection}}"
|
||||||
IsVisible="{Binding Cipher.Shared, Mode=OneTime}"
|
IsVisible="{Binding Cipher.Shared, Mode=OneTime}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Shared}"
|
AutomationProperties.Name="{u:I18n Shared}" />
|
||||||
AutomationId="CipherInCollectionIcon" />
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
@@ -108,8 +102,7 @@
|
|||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Paperclip}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Paperclip}}"
|
||||||
IsVisible="{Binding Cipher.HasAttachments, Mode=OneTime}"
|
IsVisible="{Binding Cipher.HasAttachments, Mode=OneTime}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Attachments}"
|
AutomationProperties.Name="{u:I18n Attachments}" />
|
||||||
AutomationId="CipherWithAttachmentsIcon" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<controls:MiButton
|
<controls:MiButton
|
||||||
@@ -121,7 +114,6 @@
|
|||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
HorizontalOptions="EndAndExpand"
|
HorizontalOptions="EndAndExpand"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Options}"
|
AutomationProperties.Name="{u:I18n Options}" />
|
||||||
AutomationId="CipherOptionsButton" />
|
|
||||||
|
|
||||||
</controls:ExtendedGrid>
|
</controls:ExtendedGrid>
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
using System;
|
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace Bit.App.Controls
|
|
||||||
{
|
|
||||||
public class CustomLabel : Label
|
|
||||||
{
|
|
||||||
public CustomLabel()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<controls:ExtendedGrid xmlns="http://xamarin.com/schemas/2014/forms"
|
<controls:ExtendedGrid xmlns="http://xamarin.com/schemas/2014/forms"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
x:Class="Bit.App.Controls.SendViewCell"
|
x:Class="Bit.App.Controls.SendViewCell"
|
||||||
@@ -54,16 +54,14 @@
|
|||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
StyleClass="list-title, list-title-platform"
|
StyleClass="list-title, list-title-platform"
|
||||||
Text="{Binding Send.Name}"
|
Text="{Binding Send.Name}" />
|
||||||
AutomationId="SendNameLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.ColumnSpan="6"
|
Grid.ColumnSpan="6"
|
||||||
StyleClass="list-subtitle, list-subtitle-platform"
|
StyleClass="list-subtitle, list-subtitle-platform"
|
||||||
Text="{Binding Send.DisplayDate}"
|
Text="{Binding Send.DisplayDate}" />
|
||||||
AutomationId="SendDateLabel" />
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
@@ -74,8 +72,7 @@
|
|||||||
Text="{Binding Source={x:Static core:BitwardenIcons.ExclamationTriangle}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.ExclamationTriangle}}"
|
||||||
IsVisible="{Binding Send.Disabled, Mode=OneTime}"
|
IsVisible="{Binding Send.Disabled, Mode=OneTime}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Disabled}"
|
AutomationProperties.Name="{u:I18n Disabled}" />
|
||||||
AutomationId="DisabledSendLabel" />
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
@@ -86,8 +83,7 @@
|
|||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Key}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Key}}"
|
||||||
IsVisible="{Binding Send.HasPassword, Mode=OneTime}"
|
IsVisible="{Binding Send.HasPassword, Mode=OneTime}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Password}"
|
AutomationProperties.Name="{u:I18n Password}" />
|
||||||
AutomationId="PasswordProtectedSendLabel" />
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
Grid.Column="3"
|
Grid.Column="3"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
@@ -98,8 +94,7 @@
|
|||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Ban}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Ban}}"
|
||||||
IsVisible="{Binding Send.MaxAccessCountReached, Mode=OneTime}"
|
IsVisible="{Binding Send.MaxAccessCountReached, Mode=OneTime}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n MaxAccessCountReached}"
|
AutomationProperties.Name="{u:I18n MaxAccessCountReached}" />
|
||||||
AutomationId="SendMaxAccessCountReachedLabel" />
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
Grid.Column="4"
|
Grid.Column="4"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
@@ -110,8 +105,7 @@
|
|||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clock}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clock}}"
|
||||||
IsVisible="{Binding Send.Expired, Mode=OneTime}"
|
IsVisible="{Binding Send.Expired, Mode=OneTime}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Expired}"
|
AutomationProperties.Name="{u:I18n Expired}" />
|
||||||
AutomationId="ExpiredSendLabel" />
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
Grid.Column="5"
|
Grid.Column="5"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
@@ -122,8 +116,7 @@
|
|||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Trash}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Trash}}"
|
||||||
IsVisible="{Binding Send.PendingDelete, Mode=OneTime}"
|
IsVisible="{Binding Send.PendingDelete, Mode=OneTime}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n PendingDelete}"
|
AutomationProperties.Name="{u:I18n PendingDelete}" />
|
||||||
AutomationId="SendWithPendingDeletionLabel" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<controls:MiButton
|
<controls:MiButton
|
||||||
@@ -136,7 +129,6 @@
|
|||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
HorizontalOptions="EndAndExpand"
|
HorizontalOptions="EndAndExpand"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Options}"
|
AutomationProperties.Name="{u:I18n Options}" />
|
||||||
AutomationId="SendOptionsButton" />
|
|
||||||
|
|
||||||
</controls:ExtendedGrid>
|
</controls:ExtendedGrid>
|
||||||
|
|||||||
@@ -33,8 +33,7 @@
|
|||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}" />
|
||||||
AutomationId="BooleanCustomFieldNameLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Field.Name, Mode=OneWay}"
|
Text="{Binding Field.Name, Mode=OneWay}"
|
||||||
IsVisible="{Binding IsEditing}"
|
IsVisible="{Binding IsEditing}"
|
||||||
@@ -50,15 +49,13 @@
|
|||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Margin="0, 5, 0, 0"
|
Margin="0, 5, 0, 0"
|
||||||
IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}" />
|
||||||
AutomationId="BooleanCustomFieldValueLabel" />
|
|
||||||
<Switch
|
<Switch
|
||||||
IsToggled="{Binding BooleanValue}"
|
IsToggled="{Binding BooleanValue}"
|
||||||
IsVisible="{Binding IsEditing}"
|
IsVisible="{Binding IsEditing}"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2" />
|
||||||
AutomationId="BooleanCustomFieldValueToggle" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Cog}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Cog}}"
|
||||||
|
|||||||
@@ -31,8 +31,7 @@
|
|||||||
Text="{Binding Field.Name, Mode=OneWay}"
|
Text="{Binding Field.Name, Mode=OneWay}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="HiddenCustomFieldNameLabel" />
|
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
@@ -40,8 +39,7 @@
|
|||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
Text="{Binding ValueText, Mode=OneWay}"
|
Text="{Binding ValueText, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
IsVisible="{Binding ShowHiddenValue}"
|
IsVisible="{Binding ShowHiddenValue}" />
|
||||||
AutomationId="HiddenCustomFieldValueLabel" />
|
|
||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
Text="{Binding Field.MaskedValue, Mode=OneWay}"
|
Text="{Binding Field.MaskedValue, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
@@ -58,8 +56,7 @@
|
|||||||
IsSpellCheckEnabled="False"
|
IsSpellCheckEnabled="False"
|
||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{Binding Field.Name}"
|
AutomationProperties.Name="{Binding Field.Name}">
|
||||||
AutomationId="HiddenCustomFieldValueEntry">
|
|
||||||
<Entry.Keyboard>
|
<Entry.Keyboard>
|
||||||
<Keyboard x:FactoryMethod="Create">
|
<Keyboard x:FactoryMethod="Create">
|
||||||
<x:Arguments>
|
<x:Arguments>
|
||||||
@@ -77,8 +74,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}" />
|
||||||
AutomationId="HiddenCustomFieldShowValueButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
|
|||||||
@@ -29,15 +29,13 @@
|
|||||||
Text="{Binding Field.Name, Mode=OneWay}"
|
Text="{Binding Field.Name, Mode=OneWay}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="LinkedCustomFieldNameLabel" />
|
|
||||||
<controls:IconLabel
|
<controls:IconLabel
|
||||||
Text="{Binding ValueText, Mode=OneWay}"
|
Text="{Binding ValueText, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}" />
|
||||||
AutomationId="LinkedCustomFieldValueLabel" />
|
|
||||||
<StackLayout
|
<StackLayout
|
||||||
StyleClass="box-row, box-row-input"
|
StyleClass="box-row, box-row-input"
|
||||||
IsVisible="{Binding IsEditing}">
|
IsVisible="{Binding IsEditing}">
|
||||||
@@ -46,8 +44,7 @@
|
|||||||
ItemsSource="{Binding LinkedFieldOptions, Mode=OneTime}"
|
ItemsSource="{Binding LinkedFieldOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding LinkedFieldOptionSelectedIndex}"
|
SelectedIndex="{Binding LinkedFieldOptionSelectedIndex}"
|
||||||
ItemDisplayBinding="{Binding Key}"
|
ItemDisplayBinding="{Binding Key}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="LinkedCustomFieldValuePicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
@@ -58,8 +55,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Options}"
|
AutomationProperties.Name="{u:I18n Options}" />
|
||||||
AutomationId="LinkedCustomFieldOptionsButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView StyleClass="box-row-separator" IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}" />
|
<BoxView StyleClass="box-row-separator" IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|||||||
@@ -29,15 +29,13 @@
|
|||||||
Text="{Binding Field.Name, Mode=OneWay}"
|
Text="{Binding Field.Name, Mode=OneWay}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="TextCustomFieldNameLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding ValueText, Mode=OneWay}"
|
Text="{Binding ValueText, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}" />
|
||||||
AutomationId="TextCustomFieldValueLabel" />
|
|
||||||
<Entry
|
<Entry
|
||||||
Text="{Binding Field.Value}"
|
Text="{Binding Field.Value}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
@@ -45,8 +43,7 @@
|
|||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
IsVisible="{Binding IsEditing}"
|
IsVisible="{Binding IsEditing}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{Binding Field.Name}"
|
AutomationProperties.Name="{Binding Field.Name}" />
|
||||||
AutomationId="TextCustomFieldValueEntry" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
@@ -56,8 +53,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Copy}"
|
AutomationProperties.Name="{u:I18n Copy}" />
|
||||||
AutomationId="TextCustomFieldCopyValue" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Cog}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Cog}}"
|
||||||
@@ -67,8 +63,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Options}"
|
AutomationProperties.Name="{u:I18n Options}" />
|
||||||
AutomationId="TextCustomFieldOptionsButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView StyleClass="box-row-separator" IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}" />
|
<BoxView StyleClass="box-row-separator" IsVisible="{Binding IsEditing, Mode=OneWay, Converter={StaticResource inverseBool}}" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|||||||
@@ -95,6 +95,14 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{u:I18n CustomEnvironmentFooter}"
|
Text="{u:I18n CustomEnvironmentFooter}"
|
||||||
StyleClass="box-footer-label" />
|
StyleClass="box-footer-label" />
|
||||||
|
<StackLayout StyleClass="box-row">
|
||||||
|
<Button Text="{u:I18n LoadFromFile}"
|
||||||
|
StyleClass="btn-primary"
|
||||||
|
Command="{Binding LoadFromFileCommand}" />
|
||||||
|
<Button Text="{u:I18n Clear}"
|
||||||
|
StyleClass="btn-secondary"
|
||||||
|
Command="{Binding ClearCommand}" />
|
||||||
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using Bit.App.Resources;
|
using Bit.App.Resources;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Models.Data;
|
using Bit.Core.Models.Data;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using Xamarin.CommunityToolkit.ObjectModel;
|
using Xamarin.CommunityToolkit.ObjectModel;
|
||||||
|
using Xamarin.Essentials;
|
||||||
|
using Xamarin.Forms;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
@@ -27,9 +31,13 @@ namespace Bit.App.Pages
|
|||||||
IconsUrl = _environmentService.IconsUrl;
|
IconsUrl = _environmentService.IconsUrl;
|
||||||
NotificationsUrls = _environmentService.NotificationsUrl;
|
NotificationsUrls = _environmentService.NotificationsUrl;
|
||||||
SubmitCommand = new AsyncCommand(SubmitAsync, onException: ex => OnSubmitException(ex), allowsMultipleExecutions: false);
|
SubmitCommand = new AsyncCommand(SubmitAsync, onException: ex => OnSubmitException(ex), allowsMultipleExecutions: false);
|
||||||
|
LoadFromFileCommand = new AsyncCommand(LoadEnvironmentsFromFile, onException: ex => OnSubmitException(ex), allowsMultipleExecutions: false);
|
||||||
|
ClearCommand = new Command(ClearAllUrls);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICommand SubmitCommand { get; }
|
public ICommand SubmitCommand { get; }
|
||||||
|
public ICommand LoadFromFileCommand { get; }
|
||||||
|
public ICommand ClearCommand { get; }
|
||||||
public string BaseUrl { get; set; }
|
public string BaseUrl { get; set; }
|
||||||
public string ApiUrl { get; set; }
|
public string ApiUrl { get; set; }
|
||||||
public string IdentityUrl { get; set; }
|
public string IdentityUrl { get; set; }
|
||||||
@@ -87,5 +95,75 @@ namespace Bit.App.Pages
|
|||||||
_logger.Value.Exception(ex);
|
_logger.Value.Exception(ex);
|
||||||
Page.DisplayAlert(AppResources.AnErrorHasOccurred, AppResources.GenericErrorMessage, AppResources.Ok);
|
Page.DisplayAlert(AppResources.AnErrorHasOccurred, AppResources.GenericErrorMessage, AppResources.Ok);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task LoadEnvironmentsFromFile()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string jsonString;
|
||||||
|
var result = await FilePicker.PickAsync(new PickOptions
|
||||||
|
{
|
||||||
|
PickerTitle = "This a test to pick files"
|
||||||
|
});
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
if (result.FileName.EndsWith("json", StringComparison.OrdinalIgnoreCase) ||
|
||||||
|
result.FileName.EndsWith("txt", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
var stream = await result.OpenReadAsync();
|
||||||
|
using (var reader = new System.IO.StreamReader(stream))
|
||||||
|
{
|
||||||
|
jsonString = reader.ReadToEnd();
|
||||||
|
}
|
||||||
|
var envUrls = JsonConvert.DeserializeObject<EnvironmentsData>(jsonString);
|
||||||
|
BaseUrl = envUrls.Base;
|
||||||
|
ApiUrl = envUrls.Api;
|
||||||
|
IdentityUrl = envUrls.Identity;
|
||||||
|
WebVaultUrl = envUrls.Vault;
|
||||||
|
IconsUrl = envUrls.Icons;
|
||||||
|
NotificationsUrls = envUrls.Notifications;
|
||||||
|
NotifyUrlsChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
HandleException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClearAllUrls()
|
||||||
|
{
|
||||||
|
BaseUrl = string.Empty;
|
||||||
|
ApiUrl = string.Empty;
|
||||||
|
IdentityUrl = string.Empty;
|
||||||
|
WebVaultUrl = string.Empty;
|
||||||
|
IconsUrl = string.Empty;
|
||||||
|
NotificationsUrls = string.Empty;
|
||||||
|
NotifyUrlsChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void NotifyUrlsChanged() {
|
||||||
|
TriggerPropertyChanged(nameof(BaseUrl), new[]
|
||||||
|
{
|
||||||
|
nameof(ApiUrl),
|
||||||
|
nameof(IdentityUrl),
|
||||||
|
nameof(WebVaultUrl),
|
||||||
|
nameof(IconsUrl),
|
||||||
|
nameof(NotificationsUrls)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EnvironmentsData
|
||||||
|
{
|
||||||
|
public string Base { get; set; }
|
||||||
|
public string Admin { get; set; }
|
||||||
|
public string Api { get; set; }
|
||||||
|
public string Identity { get; set; }
|
||||||
|
public string Icons { get; set; }
|
||||||
|
public string Notifications { get; set; }
|
||||||
|
public string Sso { get; set; }
|
||||||
|
public string Vault { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,8 +23,7 @@
|
|||||||
Priority="-1"
|
Priority="-1"
|
||||||
UseOriginalImage="True"
|
UseOriginalImage="True"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Account}"
|
AutomationProperties.Name="{u:I18n Account}" />
|
||||||
AutomationId="AccountIconButton" />
|
|
||||||
<ToolbarItem x:Name="_closeButton" Text="{u:I18n Close}" Command="{Binding CloseCommand}" Order="Primary" Priority="-1"/>
|
<ToolbarItem x:Name="_closeButton" Text="{u:I18n Close}" Command="{Binding CloseCommand}" Order="Primary" Priority="-1"/>
|
||||||
</ContentPage.ToolbarItems>
|
</ContentPage.ToolbarItems>
|
||||||
|
|
||||||
|
|||||||
@@ -24,8 +24,7 @@
|
|||||||
Priority="-1"
|
Priority="-1"
|
||||||
UseOriginalImage="True"
|
UseOriginalImage="True"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Account}"
|
AutomationProperties.Name="{u:I18n Account}" />
|
||||||
AutomationId="AccountIconButton" />
|
|
||||||
</ContentPage.ToolbarItems>
|
</ContentPage.ToolbarItems>
|
||||||
|
|
||||||
<ContentPage.Resources>
|
<ContentPage.Resources>
|
||||||
@@ -73,7 +72,7 @@
|
|||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
ReturnType="Go"
|
ReturnType="Go"
|
||||||
ReturnCommand="{Binding SubmitCommand}"
|
ReturnCommand="{Binding SubmitCommand}"
|
||||||
AutomationId="PinEntry" />
|
AutomationId="PinEntry"/>
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -84,7 +83,7 @@
|
|||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
||||||
AutomationId="PinVisibilityToggle" />
|
AutomationId="PinVisibilityToggle"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
x:Name="_passwordGrid"
|
x:Name="_passwordGrid"
|
||||||
@@ -115,7 +114,7 @@
|
|||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
ReturnType="Go"
|
ReturnType="Go"
|
||||||
ReturnCommand="{Binding SubmitCommand}"
|
ReturnCommand="{Binding SubmitCommand}"
|
||||||
AutomationId="MasterPasswordEntry" />
|
AutomationId="MasterPasswordEntry"/>
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -154,7 +153,7 @@
|
|||||||
Text="{u:I18n Unlock}"
|
Text="{u:I18n Unlock}"
|
||||||
StyleClass="btn-primary"
|
StyleClass="btn-primary"
|
||||||
Clicked="Unlock_Clicked"
|
Clicked="Unlock_Clicked"
|
||||||
AutomationId="UnlockVaultButton" />
|
AutomationId="UnlockVaultButton"/>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|||||||
@@ -24,8 +24,7 @@
|
|||||||
Priority="-1"
|
Priority="-1"
|
||||||
UseOriginalImage="True"
|
UseOriginalImage="True"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Account}"
|
AutomationProperties.Name="{u:I18n Account}" />
|
||||||
AutomationId="AccountIconButton" />
|
|
||||||
</ContentPage.ToolbarItems>
|
</ContentPage.ToolbarItems>
|
||||||
|
|
||||||
<ContentPage.Resources>
|
<ContentPage.Resources>
|
||||||
@@ -35,7 +34,7 @@
|
|||||||
x:Name="_moreItem" x:Key="moreItem"
|
x:Name="_moreItem" x:Key="moreItem"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Options}"
|
AutomationProperties.Name="{u:I18n Options}"
|
||||||
AutomationId="OptionsButton" />
|
AutomationId="OptionsButton"/>
|
||||||
<ToolbarItem Text="{u:I18n GetPasswordHint}"
|
<ToolbarItem Text="{u:I18n GetPasswordHint}"
|
||||||
x:Key="getPasswordHint"
|
x:Key="getPasswordHint"
|
||||||
x:Name="_getPasswordHint"
|
x:Name="_getPasswordHint"
|
||||||
|
|||||||
@@ -32,8 +32,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{Binding LogInAttemptByLabel}"
|
Text="{Binding LogInAttemptByLabel}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
Margin="0,0,0,24"
|
Margin="0,0,0,24"/>
|
||||||
AutomationId="LogInAttemptByLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n FingerprintPhrase}"
|
Text="{u:I18n FingerprintPhrase}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
@@ -42,8 +41,7 @@
|
|||||||
FormattedText="{Binding LoginRequest.FingerprintPhrase}"
|
FormattedText="{Binding LoginRequest.FingerprintPhrase}"
|
||||||
FontSize="Medium"
|
FontSize="Medium"
|
||||||
TextColor="{DynamicResource FingerprintPhrase}"
|
TextColor="{DynamicResource FingerprintPhrase}"
|
||||||
Margin="0,0,0,27"
|
Margin="0,0,0,27"/>
|
||||||
AutomationId="FingerprintValueLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n DeviceType}"
|
Text="{u:I18n DeviceType}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
@@ -51,8 +49,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{Binding LoginRequest.DeviceType}"
|
Text="{Binding LoginRequest.DeviceType}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
Margin="0,0,0,21"
|
Margin="0,0,0,21"/>
|
||||||
AutomationId="DeviceTypeValueLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n IpAddress}"
|
Text="{u:I18n IpAddress}"
|
||||||
IsVisible="{Binding ShowIpAddress}"
|
IsVisible="{Binding ShowIpAddress}"
|
||||||
@@ -62,8 +59,7 @@
|
|||||||
Text="{Binding LoginRequest.IpAddress}"
|
Text="{Binding LoginRequest.IpAddress}"
|
||||||
IsVisible="{Binding ShowIpAddress}"
|
IsVisible="{Binding ShowIpAddress}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
Margin="0,0,0,21"
|
Margin="0,0,0,21"/>
|
||||||
AutomationId="IpAddressValueLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n Time}"
|
Text="{u:I18n Time}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
@@ -71,8 +67,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{Binding TimeOfRequestText}"
|
Text="{Binding TimeOfRequestText}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
Margin="0,0,0,57"
|
Margin="0,0,0,57"/>
|
||||||
AutomationId="TimeOfRequestValueLabel" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
@@ -80,13 +75,11 @@
|
|||||||
Text="{u:I18n ConfirmLogIn}"
|
Text="{u:I18n ConfirmLogIn}"
|
||||||
Command="{Binding AcceptRequestCommand}"
|
Command="{Binding AcceptRequestCommand}"
|
||||||
Margin="0,0,0,17"
|
Margin="0,0,0,17"
|
||||||
StyleClass="btn-primary"
|
StyleClass="btn-primary"/>
|
||||||
AutomationId="ConfirmLoginButton" />
|
|
||||||
<Button
|
<Button
|
||||||
Text="{u:I18n DenyLogIn}"
|
Text="{u:I18n DenyLogIn}"
|
||||||
Command="{Binding RejectRequestCommand}"
|
Command="{Binding RejectRequestCommand}"
|
||||||
StyleClass="btn-secundary"
|
StyleClass="btn-secundary"/>
|
||||||
AutomationId="DenyLoginButton" />
|
|
||||||
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</pages:BaseContentPage>
|
</pages:BaseContentPage>
|
||||||
|
|||||||
@@ -24,8 +24,7 @@
|
|||||||
Text="{u:I18n LogInInitiated}"
|
Text="{u:I18n LogInInitiated}"
|
||||||
FontSize="Title"
|
FontSize="Title"
|
||||||
FontAttributes="Bold"
|
FontAttributes="Bold"
|
||||||
Margin="0,14,0,21"
|
Margin="0,14,0,21"/>
|
||||||
AutomationId="LogInInitiatedLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n ANotificationHasBeenSentToYourDevice}"
|
Text="{u:I18n ANotificationHasBeenSentToYourDevice}"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
@@ -41,15 +40,13 @@
|
|||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
FormattedText="{Binding FingerprintPhrase}"
|
FormattedText="{Binding FingerprintPhrase}"
|
||||||
FontSize="Medium"
|
FontSize="Medium"
|
||||||
TextColor="{DynamicResource FingerprintPhrase}"
|
TextColor="{DynamicResource FingerprintPhrase}"/>
|
||||||
AutomationId="FingerprintPhraseValue" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n ResendNotification}"
|
Text="{u:I18n ResendNotification}"
|
||||||
StyleClass="text-md"
|
StyleClass="text-md"
|
||||||
HorizontalOptions="Start"
|
HorizontalOptions="Start"
|
||||||
Margin="0,40,0,0"
|
Margin="0,40,0,0"
|
||||||
TextColor="{DynamicResource HyperlinkColor}"
|
TextColor="{DynamicResource HyperlinkColor}">
|
||||||
AutomationId="ResendNotificationButton">
|
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
<TapGestureRecognizer Command="{Binding CreatePasswordlessLoginCommand}" />
|
<TapGestureRecognizer Command="{Binding CreatePasswordlessLoginCommand}" />
|
||||||
</Label.GestureRecognizers>
|
</Label.GestureRecognizers>
|
||||||
@@ -67,8 +64,7 @@
|
|||||||
VerticalTextAlignment="End"
|
VerticalTextAlignment="End"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
Margin="5, 0"
|
Margin="5, 0"
|
||||||
TextColor="{DynamicResource HyperlinkColor}"
|
TextColor="{DynamicResource HyperlinkColor}">
|
||||||
AutomationId="ViewAllLoginOptionsButton">
|
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
<TapGestureRecognizer Command="{Binding CloseCommand}" />
|
<TapGestureRecognizer Command="{Binding CloseCommand}" />
|
||||||
</Label.GestureRecognizers>
|
</Label.GestureRecognizers>
|
||||||
|
|||||||
@@ -27,8 +27,7 @@
|
|||||||
Clicked="Clear_Clicked"
|
Clicked="Clear_Clicked"
|
||||||
Order="Secondary"
|
Order="Secondary"
|
||||||
x:Name="_clearItem"
|
x:Name="_clearItem"
|
||||||
x:Key="clearItem"
|
x:Key="clearItem" />
|
||||||
AutomationId="ClearPasswordList" />
|
|
||||||
<ToolbarItem Icon="more_vert.png"
|
<ToolbarItem Icon="more_vert.png"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Options}"
|
AutomationProperties.Name="{u:I18n Options}"
|
||||||
@@ -44,8 +43,7 @@
|
|||||||
Margin="20, 0"
|
Margin="20, 0"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
HorizontalOptions="CenterAndExpand"
|
HorizontalOptions="CenterAndExpand"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center"></Label>
|
||||||
AutomationId="NoPasswordsDisplayedLabel"></Label>
|
|
||||||
<controls:ExtendedCollectionView
|
<controls:ExtendedCollectionView
|
||||||
IsVisible="{Binding ShowNoData, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding ShowNoData, Converter={StaticResource inverseBool}}"
|
||||||
ItemsSource="{Binding History}"
|
ItemsSource="{Binding History}"
|
||||||
@@ -58,8 +56,7 @@
|
|||||||
StyleClass="list-row, list-row-platform"
|
StyleClass="list-row, list-row-platform"
|
||||||
Padding="10"
|
Padding="10"
|
||||||
RowSpacing="0"
|
RowSpacing="0"
|
||||||
ColumnSpacing="10"
|
ColumnSpacing="10">
|
||||||
AutomationId="GeneratedPasswordRow">
|
|
||||||
|
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
@@ -74,14 +71,12 @@
|
|||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
StyleClass="list-title, list-title-platform, text-html"
|
StyleClass="list-title, list-title-platform, text-html"
|
||||||
Text="{Binding Password, Mode=OneWay, Converter={StaticResource coloredPassword}}"
|
Text="{Binding Password, Mode=OneWay, Converter={StaticResource coloredPassword}}" />
|
||||||
AutomationId="GeneratedPasswordValue" />
|
|
||||||
<Label LineBreakMode="TailTruncation"
|
<Label LineBreakMode="TailTruncation"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
StyleClass="list-subtitle, list-subtitle-platform"
|
StyleClass="list-subtitle, list-subtitle-platform"
|
||||||
Text="{Binding Date, Mode=OneWay, Converter={StaticResource dateTime}}"
|
Text="{Binding Date, Mode=OneWay, Converter={StaticResource dateTime}}" />
|
||||||
AutomationId="GeneratedPasswordDateLabel" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="list-row-button, list-row-button-platform"
|
StyleClass="list-row-button, list-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Paste}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Paste}}"
|
||||||
@@ -91,8 +86,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CopyPassword}"
|
AutomationProperties.Name="{u:I18n CopyPassword}" />
|
||||||
AutomationId="CopyPasswordValueButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</CollectionView.ItemTemplate>
|
</CollectionView.ItemTemplate>
|
||||||
|
|||||||
@@ -71,8 +71,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{u:I18n PasswordGeneratorPolicyInEffect}"
|
Text="{u:I18n PasswordGeneratorPolicyInEffect}"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="PasswordGeneratorPolicyInEffectLabel" />
|
|
||||||
</Frame>
|
</Frame>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid IsVisible="{Binding IsUsername, Converter={StaticResource inverseBool}}"
|
<Grid IsVisible="{Binding IsUsername, Converter={StaticResource inverseBool}}"
|
||||||
@@ -83,24 +82,21 @@
|
|||||||
x:Name="lblPassword"
|
x:Name="lblPassword"
|
||||||
StyleClass="text-lg, text-html"
|
StyleClass="text-lg, text-html"
|
||||||
Text="{Binding ColoredPassword, Mode=OneWay}"
|
Text="{Binding ColoredPassword, Mode=OneWay}"
|
||||||
Margin="0, 20"
|
Margin="0, 20" />
|
||||||
AutomationId="GeneratedPasswordLabel" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
Command="{Binding CopyCommand}"
|
Command="{Binding CopyCommand}"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CopyPassword}"
|
AutomationProperties.Name="{u:I18n CopyPassword}" />
|
||||||
AutomationId="CopyValueButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Generate}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Generate}}"
|
||||||
Command="{Binding RegenerateCommand}"
|
Command="{Binding RegenerateCommand}"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n GeneratePassword}"
|
AutomationProperties.Name="{u:I18n GeneratePassword}" />
|
||||||
AutomationId="RegenerateValueButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid IsVisible="{Binding IsUsername}"
|
<Grid IsVisible="{Binding IsUsername}"
|
||||||
StyleClass="box-row"
|
StyleClass="box-row"
|
||||||
@@ -111,24 +107,21 @@
|
|||||||
StyleClass="text-lg, text-html"
|
StyleClass="text-lg, text-html"
|
||||||
Text="{Binding ColoredUsername, Mode=OneWay}"
|
Text="{Binding ColoredUsername, Mode=OneWay}"
|
||||||
Margin="0, 20"
|
Margin="0, 20"
|
||||||
HorizontalOptions="Start"
|
HorizontalOptions="Start" />
|
||||||
AutomationId="GeneratedPasswordLabel" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
Command="{Binding CopyCommand}"
|
Command="{Binding CopyCommand}"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CopyUsername}"
|
AutomationProperties.Name="{u:I18n CopyUsername}" />
|
||||||
AutomationId="CopyValueButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Generate}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Generate}}"
|
||||||
Command="{Binding RegenerateUsernameCommand}"
|
Command="{Binding RegenerateUsernameCommand}"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n GenerateUsername}"
|
AutomationProperties.Name="{u:I18n GenerateUsername}" />
|
||||||
AutomationId="RegenerateValueButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView StyleClass="box-row-separator"/>
|
<BoxView StyleClass="box-row-separator"/>
|
||||||
<StackLayout StyleClass="box"
|
<StackLayout StyleClass="box"
|
||||||
@@ -142,8 +135,7 @@
|
|||||||
ItemsSource="{Binding GeneratorTypeOptions, Mode=OneTime}"
|
ItemsSource="{Binding GeneratorTypeOptions, Mode=OneTime}"
|
||||||
SelectedItem="{Binding GeneratorTypeSelected}"
|
SelectedItem="{Binding GeneratorTypeSelected}"
|
||||||
ItemDisplayBinding="{Binding ., Converter={StaticResource localizableEnum}}"
|
ItemDisplayBinding="{Binding ., Converter={StaticResource localizableEnum}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="GeneratorTypePicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label Text="{u:I18n Options, Header=True}"
|
<Label Text="{u:I18n Options, Header=True}"
|
||||||
StyleClass="box-header, box-header-platform"
|
StyleClass="box-header, box-header-platform"
|
||||||
@@ -169,8 +161,7 @@
|
|||||||
ItemsSource="{Binding UsernameTypeOptions, Mode=OneTime}"
|
ItemsSource="{Binding UsernameTypeOptions, Mode=OneTime}"
|
||||||
SelectedItem="{Binding UsernameTypeSelected}"
|
SelectedItem="{Binding UsernameTypeSelected}"
|
||||||
ItemDisplayBinding="{Binding ., Converter={StaticResource localizableEnum}}"
|
ItemDisplayBinding="{Binding ., Converter={StaticResource localizableEnum}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="UsernameTypePicker" />
|
|
||||||
<Label
|
<Label
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label"
|
||||||
Text="{Binding UsernameTypeDescriptionLabel}" />
|
Text="{Binding UsernameTypeDescriptionLabel}" />
|
||||||
@@ -181,8 +172,7 @@
|
|||||||
StyleClass="box-label" />
|
StyleClass="box-label" />
|
||||||
<Entry x:Name="_plusAddressedEmailEntry"
|
<Entry x:Name="_plusAddressedEmailEntry"
|
||||||
Text="{Binding PlusAddressedEmail}"
|
Text="{Binding PlusAddressedEmail}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="PlusAddressedEmailEntry" />
|
|
||||||
<Label IsVisible="{Binding ShowUsernameEmailType}"
|
<Label IsVisible="{Binding ShowUsernameEmailType}"
|
||||||
Text="{u:I18n EmailType}"
|
Text="{u:I18n EmailType}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
@@ -213,8 +203,7 @@
|
|||||||
<Entry
|
<Entry
|
||||||
x:Name="_catchAllEmailDomainNameEntry"
|
x:Name="_catchAllEmailDomainNameEntry"
|
||||||
Text="{Binding CatchAllEmailDomain}"
|
Text="{Binding CatchAllEmailDomain}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="CatchAllEmailDomainEntry" />
|
|
||||||
<Label IsVisible="{Binding ShowUsernameEmailType}"
|
<Label IsVisible="{Binding ShowUsernameEmailType}"
|
||||||
Text="{u:I18n EmailType}"
|
Text="{u:I18n EmailType}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
@@ -247,27 +236,26 @@
|
|||||||
ItemsSource="{Binding ForwardedEmailServiceTypeOptions, Mode=OneTime}"
|
ItemsSource="{Binding ForwardedEmailServiceTypeOptions, Mode=OneTime}"
|
||||||
SelectedItem="{Binding ForwardedEmailServiceSelected}"
|
SelectedItem="{Binding ForwardedEmailServiceSelected}"
|
||||||
ItemDisplayBinding="{Binding ., Converter={StaticResource localizableEnum}}"
|
ItemDisplayBinding="{Binding ., Converter={StaticResource localizableEnum}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ServiceTypePicker" />
|
<!--ANONADDY OPTIONS-->
|
||||||
<Grid
|
<Grid IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.AnonAddy}}"
|
||||||
Grid.RowDefinitions="Auto,*"
|
Grid.RowDefinitions="Auto,*"
|
||||||
Grid.ColumnDefinitions="*,Auto">
|
Grid.ColumnDefinitions="*,Auto">
|
||||||
<Label
|
<Label
|
||||||
Margin="0,10,0,0"
|
Margin="0,10,0,0"
|
||||||
Text="{Binding ForwardedEmailApiSecretLabel}"
|
Text="{u:I18n APIAccessToken}"
|
||||||
StyleClass="box-label"/>
|
StyleClass="box-label"/>
|
||||||
<Entry
|
<Entry
|
||||||
Text="{Binding ForwardedEmailApiSecret}"
|
x:Name="_anonAddyApiAccessTokenEntry"
|
||||||
IsPassword="{Binding ShowForwardedEmailApiSecret, Converter={StaticResource inverseBool}}"
|
Text="{Binding AnonAddyApiAccessToken}"
|
||||||
Grid.Row="1"
|
IsPassword="{Binding ShowAnonAddyApiAccessToken, Converter={StaticResource inverseBool}}"
|
||||||
AutomationId="ForwardedEmailApiSecretEntry" />
|
Grid.Row="1"/>
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowForwardedEmailApiSecret, Converter={StaticResource inverseBool, iconGlyphConverter}, ConverterParameter={x:Static u:BooleanGlyphType.Eye}}"
|
Text="{Binding ShowAnonAddyApiAccessToken, Converter={StaticResource inverseBool, iconGlyphConverter}, ConverterParameter={x:Static u:BooleanGlyphType.Eye}}"
|
||||||
Command="{Binding ToggleForwardedEmailHiddenValueCommand}"
|
Command="{Binding ToggleForwardedEmailHiddenValueCommand}"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"/>
|
||||||
AutomationId="ShowForwardedEmailApiSecretButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Label IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.AnonAddy}}"
|
<Label IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.AnonAddy}}"
|
||||||
Text="{u:I18n DomainNameRequiredParenthesis}"
|
Text="{u:I18n DomainNameRequiredParenthesis}"
|
||||||
@@ -276,8 +264,91 @@
|
|||||||
<Entry IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.AnonAddy}}"
|
<Entry IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.AnonAddy}}"
|
||||||
x:Name="_anonAddyDomainNameEntry"
|
x:Name="_anonAddyDomainNameEntry"
|
||||||
Text="{Binding AnonAddyDomainName}"
|
Text="{Binding AnonAddyDomainName}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"/>
|
||||||
AutomationId="AnonAddyDomainNameEntry" />
|
<!--FIREFOX RELAY OPTIONS-->
|
||||||
|
<Grid StyleClass="box-row, box-row-input"
|
||||||
|
IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.FirefoxRelay}}"
|
||||||
|
Grid.RowDefinitions="Auto,*"
|
||||||
|
Grid.ColumnDefinitions="*,Auto">
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n APIAccessToken}"
|
||||||
|
StyleClass="box-label"/>
|
||||||
|
<Entry
|
||||||
|
x:Name="_firefoxRelayApiAccessTokenEntry"
|
||||||
|
Text="{Binding FirefoxRelayApiAccessToken}"
|
||||||
|
StyleClass="box-value"
|
||||||
|
Grid.Row="1"
|
||||||
|
IsPassword="{Binding ShowFirefoxRelayApiAccessToken, Converter={StaticResource inverseBool}}"/>
|
||||||
|
<controls:IconButton
|
||||||
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
|
Text="{Binding ShowFirefoxRelayApiAccessToken, Converter={StaticResource inverseBool, iconGlyphConverter}, ConverterParameter={x:Static u:BooleanGlyphType.Eye}}"
|
||||||
|
Command="{Binding ToggleForwardedEmailHiddenValueCommand}"
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="1"/>
|
||||||
|
</Grid>
|
||||||
|
<!--SIMPLELOGIN OPTIONS-->
|
||||||
|
<Grid StyleClass="box-row, box-row-input"
|
||||||
|
IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.SimpleLogin}}"
|
||||||
|
Grid.RowDefinitions="Auto,*"
|
||||||
|
Grid.ColumnDefinitions="*,Auto">
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n APIKeyRequiredParenthesis}"
|
||||||
|
StyleClass="box-label"/>
|
||||||
|
<Entry
|
||||||
|
x:Name="_simpleLoginApiKeyEntry"
|
||||||
|
Text="{Binding SimpleLoginApiKey}"
|
||||||
|
StyleClass="box-value"
|
||||||
|
Grid.Row="1"
|
||||||
|
IsPassword="{Binding ShowSimpleLoginApiKey, Converter={StaticResource inverseBool}}"/>
|
||||||
|
<controls:IconButton
|
||||||
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
|
Text="{Binding ShowSimpleLoginApiKey, Converter={StaticResource inverseBool, iconGlyphConverter}, ConverterParameter={x:Static u:BooleanGlyphType.Eye}}"
|
||||||
|
Command="{Binding ToggleForwardedEmailHiddenValueCommand}"
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="1"/>
|
||||||
|
</Grid>
|
||||||
|
<!--DUCKDUCKGO OPTIONS-->
|
||||||
|
<Grid StyleClass="box-row, box-row-input"
|
||||||
|
IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.DuckDuckGo}}"
|
||||||
|
Grid.RowDefinitions="Auto,*"
|
||||||
|
Grid.ColumnDefinitions="*,Auto">
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n APIKeyRequiredParenthesis}"
|
||||||
|
StyleClass="box-label"/>
|
||||||
|
<Entry
|
||||||
|
x:Name="_duckDuckGoApiAccessTokenEntry"
|
||||||
|
Text="{Binding DuckDuckGoApiKey}"
|
||||||
|
StyleClass="box-value"
|
||||||
|
Grid.Row="1"
|
||||||
|
IsPassword="{Binding ShowDuckDuckGoApiKey, Converter={StaticResource inverseBool}}"/>
|
||||||
|
<controls:IconButton
|
||||||
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
|
Text="{Binding ShowDuckDuckGoApiKey, Converter={StaticResource inverseBool, iconGlyphConverter}, ConverterParameter={x:Static u:BooleanGlyphType.Eye}}"
|
||||||
|
Command="{Binding ToggleForwardedEmailHiddenValueCommand}"
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="1"/>
|
||||||
|
</Grid>
|
||||||
|
<!--FASTMAIL OPTIONS-->
|
||||||
|
<Grid StyleClass="box-row, box-row-input"
|
||||||
|
IsVisible="{Binding ForwardedEmailServiceSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:ForwardedEmailServiceType.Fastmail}}"
|
||||||
|
Grid.RowDefinitions="Auto,*"
|
||||||
|
Grid.ColumnDefinitions="*,Auto">
|
||||||
|
<Label
|
||||||
|
Text="{u:I18n APIKeyRequiredParenthesis}"
|
||||||
|
StyleClass="box-label"/>
|
||||||
|
<Entry
|
||||||
|
x:Name="_fastmailApiAccessTokenEntry"
|
||||||
|
Text="{Binding FastmailApiKey}"
|
||||||
|
StyleClass="box-value"
|
||||||
|
Grid.Row="1"
|
||||||
|
IsPassword="{Binding ShowFastmailApiKey, Converter={StaticResource inverseBool}}"/>
|
||||||
|
<controls:IconButton
|
||||||
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
|
Text="{Binding ShowFastmailApiKey, Converter={StaticResource iconGlyphConverter}, ConverterParameter={x:Static u:BooleanGlyphType.Eye}}"
|
||||||
|
Command="{Binding ToggleForwardedEmailHiddenValueCommand}"
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="1"/>
|
||||||
|
</Grid>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<!--RANDOM WORD OPTIONS-->
|
<!--RANDOM WORD OPTIONS-->
|
||||||
<Grid IsVisible="{Binding UsernameTypeSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:UsernameType.RandomWord}}">
|
<Grid IsVisible="{Binding UsernameTypeSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:UsernameType.RandomWord}}">
|
||||||
@@ -288,8 +359,7 @@
|
|||||||
<Switch
|
<Switch
|
||||||
IsToggled="{Binding CapitalizeRandomWordUsername}"
|
IsToggled="{Binding CapitalizeRandomWordUsername}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End" />
|
||||||
AutomationId="CapitalizeRandomWordUsernameToggle" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView IsVisible="{Binding UsernameTypeSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:UsernameType.RandomWord}}"
|
<BoxView IsVisible="{Binding UsernameTypeSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:UsernameType.RandomWord}}"
|
||||||
StyleClass="box-row-separator" />
|
StyleClass="box-row-separator" />
|
||||||
@@ -301,8 +371,7 @@
|
|||||||
<Switch
|
<Switch
|
||||||
IsToggled="{Binding IncludeNumberRandomWordUsername}"
|
IsToggled="{Binding IncludeNumberRandomWordUsername}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End" />
|
||||||
AutomationId="IncludeNumberRandomWordUsernameToggle" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView IsVisible="{Binding UsernameTypeSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:UsernameType.RandomWord}}"
|
<BoxView IsVisible="{Binding UsernameTypeSelected, Converter={StaticResource enumToBool}, ConverterParameter={x:Static enums:UsernameType.RandomWord}}"
|
||||||
StyleClass="box-row-separator" />
|
StyleClass="box-row-separator" />
|
||||||
@@ -317,8 +386,7 @@
|
|||||||
x:Name="_passwordTypePicker"
|
x:Name="_passwordTypePicker"
|
||||||
ItemsSource="{Binding PasswordTypeOptions, Mode=OneTime}"
|
ItemsSource="{Binding PasswordTypeOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding PasswordTypeSelectedIndex}"
|
SelectedIndex="{Binding PasswordTypeSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="PasswordTypePicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout Spacing="0"
|
<StackLayout Spacing="0"
|
||||||
Padding="0"
|
Padding="0"
|
||||||
@@ -335,14 +403,12 @@
|
|||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
VerticalOptions="FillAndExpand"
|
VerticalOptions="FillAndExpand"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center" />
|
||||||
AutomationId="NumberOfWordsLabel" />
|
|
||||||
<controls:ExtendedStepper
|
<controls:ExtendedStepper
|
||||||
Value="{Binding NumWords}"
|
Value="{Binding NumWords}"
|
||||||
Maximum="20"
|
Maximum="20"
|
||||||
Minimum="3"
|
Minimum="3"
|
||||||
Increment="1"
|
Increment="1" />
|
||||||
AutomationId="NumberOfWordsStepper" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
@@ -353,8 +419,7 @@
|
|||||||
Text="{Binding WordSeparator}"
|
Text="{Binding WordSeparator}"
|
||||||
IsSpellCheckEnabled="False"
|
IsSpellCheckEnabled="False"
|
||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value">
|
||||||
AutomationId="WordSeparatorEntry">
|
|
||||||
<Entry.Effects>
|
<Entry.Effects>
|
||||||
<effects:NoEmojiKeyboardEffect />
|
<effects:NoEmojiKeyboardEffect />
|
||||||
</Entry.Effects>
|
</Entry.Effects>
|
||||||
@@ -370,8 +435,7 @@
|
|||||||
IsEnabled="{Binding EnforcedPolicyOptions.Capitalize,
|
IsEnabled="{Binding EnforcedPolicyOptions.Capitalize,
|
||||||
Converter={StaticResource inverseBool}}"
|
Converter={StaticResource inverseBool}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End" />
|
||||||
AutomationId="CapitalizePassphraseToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout StyleClass="box-row, box-row-switch">
|
<StackLayout StyleClass="box-row, box-row-switch">
|
||||||
@@ -384,8 +448,7 @@
|
|||||||
IsEnabled="{Binding EnforcedPolicyOptions.IncludeNumber,
|
IsEnabled="{Binding EnforcedPolicyOptions.IncludeNumber,
|
||||||
Converter={StaticResource inverseBool}}"
|
Converter={StaticResource inverseBool}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End" />
|
||||||
AutomationId="IncludeNumbersToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout Spacing="0" Padding="0" IsVisible="{Binding IsPassword}">
|
<StackLayout Spacing="0" Padding="0" IsVisible="{Binding IsPassword}">
|
||||||
@@ -399,8 +462,7 @@
|
|||||||
StyleClass="box-sub-label"
|
StyleClass="box-sub-label"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
WidthRequest="50"
|
WidthRequest="50" />
|
||||||
AutomationId="PasswordLengthLabel" />
|
|
||||||
<controls:ExtendedSlider
|
<controls:ExtendedSlider
|
||||||
DragCompleted="LengthSlider_DragCompleted"
|
DragCompleted="LengthSlider_DragCompleted"
|
||||||
Value="{Binding Length}"
|
Value="{Binding Length}"
|
||||||
@@ -409,8 +471,7 @@
|
|||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
Maximum="128"
|
Maximum="128"
|
||||||
Minimum="5"
|
Minimum="5" />
|
||||||
AutomationId="PasswordLengthSlider" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout StyleClass="box-row, box-row-switch">
|
<StackLayout StyleClass="box-row, box-row-switch">
|
||||||
@@ -427,8 +488,7 @@
|
|||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n UppercaseAtoZ}"
|
AutomationProperties.Name="{u:I18n UppercaseAtoZ}"/>
|
||||||
AutomationId="UppercaseAtoZToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout StyleClass="box-row, box-row-switch">
|
<StackLayout StyleClass="box-row, box-row-switch">
|
||||||
@@ -445,8 +505,7 @@
|
|||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n LowercaseAtoZ}"
|
AutomationProperties.Name="{u:I18n LowercaseAtoZ}"/>
|
||||||
AutomationId="LowercaseAtoZToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout StyleClass="box-row, box-row-switch">
|
<StackLayout StyleClass="box-row, box-row-switch">
|
||||||
@@ -463,8 +522,7 @@
|
|||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n NumbersZeroToNine}"
|
AutomationProperties.Name="{u:I18n NumbersZeroToNine}"/>
|
||||||
AutomationId="NumbersZeroToNineToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout StyleClass="box-row, box-row-switch">
|
<StackLayout StyleClass="box-row, box-row-switch">
|
||||||
@@ -481,8 +539,7 @@
|
|||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n SpecialCharacters}"
|
AutomationProperties.Name="{u:I18n SpecialCharacters}"/>
|
||||||
AutomationId="SpecialCharactersToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout StyleClass="box-row, box-row-stepper">
|
<StackLayout StyleClass="box-row, box-row-stepper">
|
||||||
@@ -497,14 +554,12 @@
|
|||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
VerticalOptions="FillAndExpand"
|
VerticalOptions="FillAndExpand"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center" />
|
||||||
AutomationId="MinNumberValueLabel" />
|
|
||||||
<controls:ExtendedStepper
|
<controls:ExtendedStepper
|
||||||
Value="{Binding MinNumber}"
|
Value="{Binding MinNumber}"
|
||||||
Maximum="5"
|
Maximum="5"
|
||||||
Minimum="0"
|
Minimum="0"
|
||||||
Increment="1"
|
Increment="1" />
|
||||||
AutomationId="MinNumberStepper" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout StyleClass="box-row, box-row-stepper">
|
<StackLayout StyleClass="box-row, box-row-stepper">
|
||||||
@@ -519,14 +574,12 @@
|
|||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
VerticalOptions="FillAndExpand"
|
VerticalOptions="FillAndExpand"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center" />
|
||||||
AutomationId="MinSpecialValueLabel" />
|
|
||||||
<controls:ExtendedStepper
|
<controls:ExtendedStepper
|
||||||
Value="{Binding MinSpecial}"
|
Value="{Binding MinSpecial}"
|
||||||
Maximum="5"
|
Maximum="5"
|
||||||
Minimum="0"
|
Minimum="0"
|
||||||
Increment="1"
|
Increment="1" />
|
||||||
AutomationId="MinSpecialStepper" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout StyleClass="box-row, box-row-switch">
|
<StackLayout StyleClass="box-row, box-row-switch">
|
||||||
@@ -537,8 +590,7 @@
|
|||||||
<Switch
|
<Switch
|
||||||
IsToggled="{Binding AvoidAmbiguousChars}"
|
IsToggled="{Binding AvoidAmbiguousChars}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End" />
|
||||||
AutomationId="AvoidAmbiguousCharsToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ using Bit.App.Utilities;
|
|||||||
using Bit.Core;
|
using Bit.Core;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Exceptions;
|
|
||||||
using Bit.Core.Models.Domain;
|
using Bit.Core.Models.Domain;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Xamarin.CommunityToolkit.ObjectModel;
|
using Xamarin.CommunityToolkit.ObjectModel;
|
||||||
@@ -24,7 +23,7 @@ namespace Bit.App.Pages
|
|||||||
private readonly IUsernameGenerationService _usernameGenerationService;
|
private readonly IUsernameGenerationService _usernameGenerationService;
|
||||||
private readonly ITokenService _tokenService;
|
private readonly ITokenService _tokenService;
|
||||||
private readonly IDeviceActionService _deviceActionService;
|
private readonly IDeviceActionService _deviceActionService;
|
||||||
readonly LazyResolve<ILogger> _logger = new LazyResolve<ILogger>();
|
readonly LazyResolve<ILogger> _logger = new LazyResolve<ILogger>("logger");
|
||||||
|
|
||||||
private PasswordGenerationOptions _options;
|
private PasswordGenerationOptions _options;
|
||||||
private UsernameGenerationOptions _usernameOptions;
|
private UsernameGenerationOptions _usernameOptions;
|
||||||
@@ -50,7 +49,11 @@ namespace Bit.App.Pages
|
|||||||
private bool _doneIniting;
|
private bool _doneIniting;
|
||||||
private bool _showTypePicker;
|
private bool _showTypePicker;
|
||||||
private string _emailWebsite;
|
private string _emailWebsite;
|
||||||
private bool _showForwardedEmailApiSecret;
|
private bool _showFirefoxRelayApiAccessToken;
|
||||||
|
private bool _showAnonAddyApiAccessToken;
|
||||||
|
private bool _showSimpleLoginApiKey;
|
||||||
|
private bool _showDuckDuckGoApiKey;
|
||||||
|
private bool _showFastmailApiKey;
|
||||||
private bool _editMode;
|
private bool _editMode;
|
||||||
|
|
||||||
public GeneratorPageViewModel()
|
public GeneratorPageViewModel()
|
||||||
@@ -93,7 +96,7 @@ namespace Bit.App.Pages
|
|||||||
UsernameTypePromptHelpCommand = new Command(UsernameTypePromptHelp);
|
UsernameTypePromptHelpCommand = new Command(UsernameTypePromptHelp);
|
||||||
RegenerateCommand = new AsyncCommand(RegenerateAsync, onException: ex => OnSubmitException(ex), allowsMultipleExecutions: false);
|
RegenerateCommand = new AsyncCommand(RegenerateAsync, onException: ex => OnSubmitException(ex), allowsMultipleExecutions: false);
|
||||||
RegenerateUsernameCommand = new AsyncCommand(RegenerateUsernameAsync, onException: ex => OnSubmitException(ex), allowsMultipleExecutions: false);
|
RegenerateUsernameCommand = new AsyncCommand(RegenerateUsernameAsync, onException: ex => OnSubmitException(ex), allowsMultipleExecutions: false);
|
||||||
ToggleForwardedEmailHiddenValueCommand = new Command(() => ShowForwardedEmailApiSecret = !ShowForwardedEmailApiSecret);
|
ToggleForwardedEmailHiddenValueCommand = new AsyncCommand(ToggleForwardedEmailHiddenValueAsync, onException: ex => _logger.Value.Exception(ex), allowsMultipleExecutions: false);
|
||||||
CopyCommand = new AsyncCommand(CopyAsync, onException: ex => _logger.Value.Exception(ex), allowsMultipleExecutions: false);
|
CopyCommand = new AsyncCommand(CopyAsync, onException: ex => _logger.Value.Exception(ex), allowsMultipleExecutions: false);
|
||||||
CloseCommand = new AsyncCommand(CloseAsync, onException: ex => _logger.Value.Exception(ex), allowsMultipleExecutions: false);
|
CloseCommand = new AsyncCommand(CloseAsync, onException: ex => _logger.Value.Exception(ex), allowsMultipleExecutions: false);
|
||||||
}
|
}
|
||||||
@@ -412,6 +415,7 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public string UsernameTypeDescriptionLabel => GetUsernameTypeLabelDescription(UsernameTypeSelected);
|
public string UsernameTypeDescriptionLabel => GetUsernameTypeLabelDescription(UsernameTypeSelected);
|
||||||
|
|
||||||
|
|
||||||
public ForwardedEmailServiceType ForwardedEmailServiceSelected
|
public ForwardedEmailServiceType ForwardedEmailServiceSelected
|
||||||
{
|
{
|
||||||
get => _usernameOptions.ServiceType;
|
get => _usernameOptions.ServiceType;
|
||||||
@@ -421,11 +425,7 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
_usernameOptions.ServiceType = value;
|
_usernameOptions.ServiceType = value;
|
||||||
Username = Constants.DefaultUsernameGenerated;
|
Username = Constants.DefaultUsernameGenerated;
|
||||||
TriggerPropertyChanged(nameof(ForwardedEmailServiceSelected), new string[]
|
TriggerPropertyChanged(nameof(ForwardedEmailServiceSelected));
|
||||||
{
|
|
||||||
nameof(ForwardedEmailApiSecret),
|
|
||||||
nameof(ForwardedEmailApiSecretLabel)
|
|
||||||
});
|
|
||||||
SaveUsernameOptionsAsync(false).FireAndForget();
|
SaveUsernameOptionsAsync(false).FireAndForget();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -445,104 +445,27 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ForwardedEmailApiSecret
|
public string AnonAddyApiAccessToken
|
||||||
{
|
{
|
||||||
get
|
get => _usernameOptions.AnonAddyApiAccessToken;
|
||||||
{
|
|
||||||
switch (ForwardedEmailServiceSelected)
|
|
||||||
{
|
|
||||||
case ForwardedEmailServiceType.AnonAddy:
|
|
||||||
return _usernameOptions.AnonAddyApiAccessToken;
|
|
||||||
case ForwardedEmailServiceType.DuckDuckGo:
|
|
||||||
return _usernameOptions.DuckDuckGoApiKey;
|
|
||||||
case ForwardedEmailServiceType.Fastmail:
|
|
||||||
return _usernameOptions.FastMailApiKey;
|
|
||||||
case ForwardedEmailServiceType.FirefoxRelay:
|
|
||||||
return _usernameOptions.FirefoxRelayApiAccessToken;
|
|
||||||
case ForwardedEmailServiceType.SimpleLogin:
|
|
||||||
return _usernameOptions.SimpleLoginApiKey;
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
bool changed = false;
|
if (_usernameOptions.AnonAddyApiAccessToken != value)
|
||||||
switch (ForwardedEmailServiceSelected)
|
|
||||||
{
|
{
|
||||||
case ForwardedEmailServiceType.AnonAddy:
|
_usernameOptions.AnonAddyApiAccessToken = value;
|
||||||
if (_usernameOptions.AnonAddyApiAccessToken != value)
|
TriggerPropertyChanged(nameof(AnonAddyApiAccessToken));
|
||||||
{
|
|
||||||
_usernameOptions.AnonAddyApiAccessToken = value;
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ForwardedEmailServiceType.DuckDuckGo:
|
|
||||||
if (_usernameOptions.DuckDuckGoApiKey != value)
|
|
||||||
{
|
|
||||||
_usernameOptions.DuckDuckGoApiKey = value;
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ForwardedEmailServiceType.Fastmail:
|
|
||||||
if (_usernameOptions.FastMailApiKey != value)
|
|
||||||
{
|
|
||||||
_usernameOptions.FastMailApiKey = value;
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ForwardedEmailServiceType.FirefoxRelay:
|
|
||||||
if (_usernameOptions.FirefoxRelayApiAccessToken != value)
|
|
||||||
{
|
|
||||||
_usernameOptions.FirefoxRelayApiAccessToken = value;
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ForwardedEmailServiceType.SimpleLogin:
|
|
||||||
if (_usernameOptions.SimpleLoginApiKey != value)
|
|
||||||
{
|
|
||||||
_usernameOptions.SimpleLoginApiKey = value;
|
|
||||||
changed = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (changed)
|
|
||||||
{
|
|
||||||
TriggerPropertyChanged(nameof(ForwardedEmailApiSecret));
|
|
||||||
SaveUsernameOptionsAsync(false).FireAndForget();
|
SaveUsernameOptionsAsync(false).FireAndForget();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ForwardedEmailApiSecretLabel
|
public bool ShowAnonAddyApiAccessToken
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
switch (ForwardedEmailServiceSelected)
|
return _showAnonAddyApiAccessToken;
|
||||||
{
|
|
||||||
case ForwardedEmailServiceType.AnonAddy:
|
|
||||||
case ForwardedEmailServiceType.FirefoxRelay:
|
|
||||||
return AppResources.APIAccessToken;
|
|
||||||
case ForwardedEmailServiceType.DuckDuckGo:
|
|
||||||
case ForwardedEmailServiceType.Fastmail:
|
|
||||||
case ForwardedEmailServiceType.SimpleLogin:
|
|
||||||
return AppResources.APIKeyRequiredParenthesis;
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
set => SetProperty(ref _showAnonAddyApiAccessToken, value);
|
||||||
|
|
||||||
public bool ShowForwardedEmailApiSecret
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return _showForwardedEmailApiSecret;
|
|
||||||
}
|
|
||||||
set => SetProperty(ref _showForwardedEmailApiSecret, value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string AnonAddyDomainName
|
public string AnonAddyDomainName
|
||||||
@@ -559,6 +482,99 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string FirefoxRelayApiAccessToken
|
||||||
|
{
|
||||||
|
get => _usernameOptions.FirefoxRelayApiAccessToken;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_usernameOptions.FirefoxRelayApiAccessToken != value)
|
||||||
|
{
|
||||||
|
_usernameOptions.FirefoxRelayApiAccessToken = value;
|
||||||
|
TriggerPropertyChanged(nameof(FirefoxRelayApiAccessToken));
|
||||||
|
SaveUsernameOptionsAsync(false).FireAndForget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ShowFirefoxRelayApiAccessToken
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _showFirefoxRelayApiAccessToken;
|
||||||
|
}
|
||||||
|
set => SetProperty(ref _showFirefoxRelayApiAccessToken, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SimpleLoginApiKey
|
||||||
|
{
|
||||||
|
get => _usernameOptions.SimpleLoginApiKey;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_usernameOptions.SimpleLoginApiKey != value)
|
||||||
|
{
|
||||||
|
_usernameOptions.SimpleLoginApiKey = value;
|
||||||
|
TriggerPropertyChanged(nameof(SimpleLoginApiKey));
|
||||||
|
SaveUsernameOptionsAsync(false).FireAndForget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ShowSimpleLoginApiKey
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _showSimpleLoginApiKey;
|
||||||
|
}
|
||||||
|
set => SetProperty(ref _showSimpleLoginApiKey, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string DuckDuckGoApiKey
|
||||||
|
{
|
||||||
|
get => _usernameOptions.DuckDuckGoApiKey;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_usernameOptions.DuckDuckGoApiKey != value)
|
||||||
|
{
|
||||||
|
_usernameOptions.DuckDuckGoApiKey = value;
|
||||||
|
TriggerPropertyChanged(nameof(DuckDuckGoApiKey));
|
||||||
|
SaveUsernameOptionsAsync(false).FireAndForget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ShowDuckDuckGoApiKey
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _showDuckDuckGoApiKey;
|
||||||
|
}
|
||||||
|
set => SetProperty(ref _showDuckDuckGoApiKey, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public string FastmailApiKey
|
||||||
|
{
|
||||||
|
get => _usernameOptions.FastMailApiKey;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_usernameOptions.FastMailApiKey != value)
|
||||||
|
{
|
||||||
|
_usernameOptions.FastMailApiKey = value;
|
||||||
|
TriggerPropertyChanged(nameof(FastmailApiKey));
|
||||||
|
SaveUsernameOptionsAsync(false).FireAndForget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ShowFastmailApiKey
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _showFastmailApiKey;
|
||||||
|
}
|
||||||
|
set => SetProperty(ref _showFastmailApiKey, value);
|
||||||
|
}
|
||||||
|
|
||||||
public bool CapitalizeRandomWordUsername
|
public bool CapitalizeRandomWordUsername
|
||||||
{
|
{
|
||||||
get => _usernameOptions.CapitalizeRandomWordUsername;
|
get => _usernameOptions.CapitalizeRandomWordUsername;
|
||||||
@@ -791,9 +807,12 @@ namespace Bit.App.Pages
|
|||||||
TriggerPropertyChanged(nameof(PlusAddressedEmailTypeSelected));
|
TriggerPropertyChanged(nameof(PlusAddressedEmailTypeSelected));
|
||||||
TriggerPropertyChanged(nameof(IncludeNumberRandomWordUsername));
|
TriggerPropertyChanged(nameof(IncludeNumberRandomWordUsername));
|
||||||
TriggerPropertyChanged(nameof(CapitalizeRandomWordUsername));
|
TriggerPropertyChanged(nameof(CapitalizeRandomWordUsername));
|
||||||
TriggerPropertyChanged(nameof(ForwardedEmailApiSecret));
|
TriggerPropertyChanged(nameof(SimpleLoginApiKey));
|
||||||
TriggerPropertyChanged(nameof(ForwardedEmailApiSecretLabel));
|
TriggerPropertyChanged(nameof(FirefoxRelayApiAccessToken));
|
||||||
TriggerPropertyChanged(nameof(AnonAddyDomainName));
|
TriggerPropertyChanged(nameof(AnonAddyDomainName));
|
||||||
|
TriggerPropertyChanged(nameof(AnonAddyApiAccessToken));
|
||||||
|
TriggerPropertyChanged(nameof(DuckDuckGoApiKey));
|
||||||
|
TriggerPropertyChanged(nameof(FastmailApiKey));
|
||||||
TriggerPropertyChanged(nameof(CatchAllEmailDomain));
|
TriggerPropertyChanged(nameof(CatchAllEmailDomain));
|
||||||
TriggerPropertyChanged(nameof(ForwardedEmailServiceSelected));
|
TriggerPropertyChanged(nameof(ForwardedEmailServiceSelected));
|
||||||
TriggerPropertyChanged(nameof(UsernameTypeSelected));
|
TriggerPropertyChanged(nameof(UsernameTypeSelected));
|
||||||
@@ -826,23 +845,15 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
_logger.Value.Exception(ex);
|
_logger.Value.Exception(ex);
|
||||||
|
|
||||||
string message = AppResources.GenericErrorMessage;
|
|
||||||
|
|
||||||
if (IsUsername && UsernameTypeSelected == UsernameType.ForwardedEmailAlias)
|
if (IsUsername && UsernameTypeSelected == UsernameType.ForwardedEmailAlias)
|
||||||
{
|
{
|
||||||
if (ex is ForwardedEmailInvalidSecretException)
|
await Device.InvokeOnMainThreadAsync(() => Page.DisplayAlert(
|
||||||
{
|
AppResources.AnErrorHasOccurred, string.Format(AppResources.UnknownXErrorMessage, ForwardedEmailServiceSelected), AppResources.Ok));
|
||||||
message = ForwardedEmailServiceSelected == ForwardedEmailServiceType.AnonAddy || ForwardedEmailServiceSelected == ForwardedEmailServiceType.FirefoxRelay
|
}
|
||||||
? AppResources.InvalidAPIToken
|
else
|
||||||
: AppResources.InvalidAPIKey;
|
{
|
||||||
}
|
await Device.InvokeOnMainThreadAsync(() => Page.DisplayAlert(AppResources.AnErrorHasOccurred, AppResources.GenericErrorMessage, AppResources.Ok));
|
||||||
else
|
|
||||||
{
|
|
||||||
message = string.Format(AppResources.UnknownXErrorMessage, ForwardedEmailServiceSelected);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await Device.InvokeOnMainThreadAsync(() => Page.DisplayAlert(AppResources.AnErrorHasOccurred, message, AppResources.Ok));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetUsernameTypeLabelDescription(UsernameType value)
|
private string GetUsernameTypeLabelDescription(UsernameType value)
|
||||||
@@ -859,5 +870,27 @@ namespace Bit.App.Pages
|
|||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task ToggleForwardedEmailHiddenValueAsync()
|
||||||
|
{
|
||||||
|
switch (ForwardedEmailServiceSelected)
|
||||||
|
{
|
||||||
|
case ForwardedEmailServiceType.AnonAddy:
|
||||||
|
ShowAnonAddyApiAccessToken = !ShowAnonAddyApiAccessToken;
|
||||||
|
break;
|
||||||
|
case ForwardedEmailServiceType.FirefoxRelay:
|
||||||
|
ShowFirefoxRelayApiAccessToken = !ShowFirefoxRelayApiAccessToken;
|
||||||
|
break;
|
||||||
|
case ForwardedEmailServiceType.SimpleLogin:
|
||||||
|
ShowSimpleLoginApiKey = !ShowSimpleLoginApiKey;
|
||||||
|
break;
|
||||||
|
case ForwardedEmailServiceType.DuckDuckGo:
|
||||||
|
ShowDuckDuckGoApiKey = !ShowDuckDuckGoApiKey;
|
||||||
|
break;
|
||||||
|
case ForwardedEmailServiceType.Fastmail:
|
||||||
|
ShowFastmailApiKey = !ShowFastmailApiKey;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,8 +71,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{u:I18n SendDisabledWarning}"
|
Text="{u:I18n SendDisabledWarning}"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="SendDisabledWarningMessageLabel" />
|
|
||||||
</Frame>
|
</Frame>
|
||||||
<Frame
|
<Frame
|
||||||
IsVisible="{Binding SendOptionsPolicyInEffect}"
|
IsVisible="{Binding SendOptionsPolicyInEffect}"
|
||||||
@@ -84,8 +83,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{u:I18n SendOptionsPolicyInEffect}"
|
Text="{u:I18n SendOptionsPolicyInEffect}"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="SendOptionsPolicyInEffectLabel" />
|
|
||||||
</Frame>
|
</Frame>
|
||||||
<StackLayout StyleClass="box-row">
|
<StackLayout StyleClass="box-row">
|
||||||
<Label
|
<Label
|
||||||
@@ -95,8 +93,7 @@
|
|||||||
x:Name="_nameEntry"
|
x:Name="_nameEntry"
|
||||||
Text="{Binding Send.Name}"
|
Text="{Binding Send.Name}"
|
||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="SendNameEntry" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n NameInfo}"
|
Text="{u:I18n NameInfo}"
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label"
|
||||||
@@ -126,7 +123,6 @@
|
|||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n File}"
|
AutomationProperties.Name="{u:I18n File}"
|
||||||
AutomationProperties.HelpText="{Binding FileTypeAccessibilityLabel}"
|
AutomationProperties.HelpText="{Binding FileTypeAccessibilityLabel}"
|
||||||
AutomationId="SendFileButton"
|
|
||||||
Grid.Column="0">
|
Grid.Column="0">
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
@@ -139,7 +135,6 @@
|
|||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Text}"
|
AutomationProperties.Name="{u:I18n Text}"
|
||||||
AutomationProperties.HelpText="{Binding TextTypeAccessibilityLabel}"
|
AutomationProperties.HelpText="{Binding TextTypeAccessibilityLabel}"
|
||||||
AutomationId="SendTextButton"
|
|
||||||
Grid.Column="1">
|
Grid.Column="1">
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -157,14 +152,12 @@
|
|||||||
Text="{Binding Send.File.FileName, Mode=OneWay}"
|
Text="{Binding Send.File.FileName, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center"
|
||||||
HorizontalOptions="StartAndExpand"
|
HorizontalOptions="StartAndExpand" />
|
||||||
AutomationId="SendFileNameLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Send.File.SizeName, Mode=OneWay}"
|
Text="{Binding Send.File.SizeName, Mode=OneWay}"
|
||||||
StyleClass="box-sub-label"
|
StyleClass="box-sub-label"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center" />
|
||||||
AutomationId="SendFileSizeLabel" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
IsVisible="{Binding EditMode, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding EditMode, Converter={StaticResource inverseBool}}"
|
||||||
@@ -175,23 +168,20 @@
|
|||||||
LineBreakMode="CharacterWrap"
|
LineBreakMode="CharacterWrap"
|
||||||
StyleClass="text-sm, text-muted"
|
StyleClass="text-sm, text-muted"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="SendNoFileChosenLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
IsVisible="{Binding FileName, Converter={StaticResource notNull}}"
|
IsVisible="{Binding FileName, Converter={StaticResource notNull}}"
|
||||||
Text="{Binding FileName}"
|
Text="{Binding FileName}"
|
||||||
LineBreakMode="CharacterWrap"
|
LineBreakMode="CharacterWrap"
|
||||||
StyleClass="text-sm, text-muted"
|
StyleClass="text-sm, text-muted"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="SendCurrentFileNameLabel" />
|
|
||||||
<Button
|
<Button
|
||||||
Text="{u:I18n ChooseFile}"
|
Text="{u:I18n ChooseFile}"
|
||||||
IsVisible="{Binding IsAddFromShare, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding IsAddFromShare, Converter={StaticResource inverseBool}}"
|
||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
StyleClass="box-button-row"
|
StyleClass="box-button-row"
|
||||||
Clicked="ChooseFile_Clicked"
|
Clicked="ChooseFile_Clicked" />
|
||||||
AutomationId="SendChooseFileButton" />
|
|
||||||
<Label
|
<Label
|
||||||
Margin="0, 5, 0, 0"
|
Margin="0, 5, 0, 0"
|
||||||
Text="{u:I18n MaxFileSize}"
|
Text="{u:I18n MaxFileSize}"
|
||||||
@@ -218,7 +208,6 @@
|
|||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Margin="{Binding EditorMargins}"
|
Margin="{Binding EditorMargins}"
|
||||||
AutomationId="SendTextContentEntry"
|
|
||||||
effects:ScrollEnabledEffect.IsScrollEnabled="false" >
|
effects:ScrollEnabledEffect.IsScrollEnabled="false" >
|
||||||
<Editor.Behaviors>
|
<Editor.Behaviors>
|
||||||
<behaviors:EditorPreventAutoBottomScrollingOnFocusedBehavior ParentScrollView="{x:Reference _scrollView}" />
|
<behaviors:EditorPreventAutoBottomScrollingOnFocusedBehavior ParentScrollView="{x:Reference _scrollView}" />
|
||||||
@@ -246,8 +235,7 @@
|
|||||||
IsToggled="{Binding Send.Text.Hidden}"
|
IsToggled="{Binding Send.Text.Hidden}"
|
||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0" />
|
||||||
AutomationId="SendHideTextByDefaultToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
@@ -261,8 +249,7 @@
|
|||||||
IsToggled="{Binding ShareOnSave}"
|
IsToggled="{Binding ShareOnSave}"
|
||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0" />
|
||||||
AutomationId="SendShareSendAfterSaveToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
@@ -276,24 +263,21 @@
|
|||||||
StyleClass="box-row-button"
|
StyleClass="box-row-button"
|
||||||
TextColor="{DynamicResource PrimaryColor}"
|
TextColor="{DynamicResource PrimaryColor}"
|
||||||
Margin="0"
|
Margin="0"
|
||||||
AutomationProperties.IsInAccessibleTree="False"
|
AutomationProperties.IsInAccessibleTree="False"/>
|
||||||
AutomationId="SendShowHideOptionsButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
x:Name="_btnOptionsUp"
|
x:Name="_btnOptionsUp"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.ChevronUp}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.ChevronUp}}"
|
||||||
StyleClass="box-row-button"
|
StyleClass="box-row-button"
|
||||||
TextColor="{DynamicResource PrimaryColor}"
|
TextColor="{DynamicResource PrimaryColor}"
|
||||||
IsVisible="{Binding ShowOptions}"
|
IsVisible="{Binding ShowOptions}"
|
||||||
AutomationProperties.IsInAccessibleTree="False"
|
AutomationProperties.IsInAccessibleTree="False"/>
|
||||||
AutomationId="SendOptionsDisplayed" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
x:Name="_btnOptionsDown"
|
x:Name="_btnOptionsDown"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.AngleDown}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.AngleDown}}"
|
||||||
StyleClass="box-row-button"
|
StyleClass="box-row-button"
|
||||||
TextColor="{DynamicResource PrimaryColor}"
|
TextColor="{DynamicResource PrimaryColor}"
|
||||||
IsVisible="{Binding ShowOptions, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding ShowOptions, Converter={StaticResource inverseBool}}"
|
||||||
AutomationProperties.IsInAccessibleTree="False"
|
AutomationProperties.IsInAccessibleTree="False"/>
|
||||||
AutomationId="SendOptionsHidden" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding ShowOptions}">
|
<StackLayout IsVisible="{Binding ShowOptions}">
|
||||||
<StackLayout
|
<StackLayout
|
||||||
@@ -310,8 +294,7 @@
|
|||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n DeletionTime}"
|
AutomationProperties.Name="{u:I18n DeletionTime}" />
|
||||||
AutomationId="SendDeletionOptionsPicker" />
|
|
||||||
<Grid
|
<Grid
|
||||||
IsVisible="{Binding ShowDeletionCustomPickers}"
|
IsVisible="{Binding ShowDeletionCustomPickers}"
|
||||||
Margin="0,5,0,0">
|
Margin="0,5,0,0">
|
||||||
@@ -325,16 +308,14 @@
|
|||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n DeletionDate}"
|
AutomationProperties.Name="{u:I18n DeletionDate}"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="SendCustomDeletionDatePicker" />
|
|
||||||
<controls:ExtendedTimePicker
|
<controls:ExtendedTimePicker
|
||||||
NullableTime="{Binding DeletionDateTimeViewModel.Time, Mode=TwoWay}"
|
NullableTime="{Binding DeletionDateTimeViewModel.Time, Mode=TwoWay}"
|
||||||
Format="t"
|
Format="t"
|
||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n DeletionTime}"
|
AutomationProperties.Name="{u:I18n DeletionTime}"
|
||||||
Grid.Column="1"
|
Grid.Column="1" />
|
||||||
AutomationId="SendCustomDeletionTimePicker" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n DeletionDateInfo}"
|
Text="{u:I18n DeletionDateInfo}"
|
||||||
@@ -353,8 +334,7 @@
|
|||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ExpirationTime}"
|
AutomationProperties.Name="{u:I18n ExpirationTime}" />
|
||||||
AutomationId="SendExpirationOptionsPicker" />
|
|
||||||
<Grid
|
<Grid
|
||||||
IsVisible="{Binding ShowExpirationCustomPickers}"
|
IsVisible="{Binding ShowExpirationCustomPickers}"
|
||||||
Margin="0,5,0,0">
|
Margin="0,5,0,0">
|
||||||
@@ -369,8 +349,7 @@
|
|||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ExpirationDate}"
|
AutomationProperties.Name="{u:I18n ExpirationDate}"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="SendCustomExpirationDatePicker" />
|
|
||||||
<controls:ExtendedTimePicker
|
<controls:ExtendedTimePicker
|
||||||
NullableTime="{Binding ExpirationDateTimeViewModel.Time, Mode=TwoWay}"
|
NullableTime="{Binding ExpirationDateTimeViewModel.Time, Mode=TwoWay}"
|
||||||
PlaceHolder="--:-- --"
|
PlaceHolder="--:-- --"
|
||||||
@@ -378,8 +357,7 @@
|
|||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ExpirationTime}"
|
AutomationProperties.Name="{u:I18n ExpirationTime}"
|
||||||
Grid.Column="1"
|
Grid.Column="1" />
|
||||||
AutomationId="SendCustomExpirationTimePicker" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
@@ -396,8 +374,7 @@
|
|||||||
FontSize="{Binding SegmentedButtonFontSize}"
|
FontSize="{Binding SegmentedButtonFontSize}"
|
||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
StyleClass="box-row-button"
|
StyleClass="box-row-button"
|
||||||
Clicked="ClearExpirationDate_Clicked"
|
Clicked="ClearExpirationDate_Clicked" />
|
||||||
AutomationId="SendClearExpirationDateButton" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
@@ -416,15 +393,13 @@
|
|||||||
Keyboard="Numeric"
|
Keyboard="Numeric"
|
||||||
MaxLength="9"
|
MaxLength="9"
|
||||||
TextChanged="OnMaxAccessCountTextChanged"
|
TextChanged="OnMaxAccessCountTextChanged"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand" />
|
||||||
AutomationId="SendMaxAccessCountEntry" />
|
|
||||||
<controls:ExtendedStepper
|
<controls:ExtendedStepper
|
||||||
x:Name="_maxAccessCountStepper"
|
x:Name="_maxAccessCountStepper"
|
||||||
Value="{Binding MaxAccessCount}"
|
Value="{Binding MaxAccessCount}"
|
||||||
Maximum="999999999"
|
Maximum="999999999"
|
||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0" />
|
||||||
AutomationId="SendMaxAccessCountStepper" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n MaximumAccessCountInfo}"
|
Text="{u:I18n MaximumAccessCountInfo}"
|
||||||
@@ -444,8 +419,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{Binding Send.AccessCount, Mode=OneWay}"
|
Text="{Binding Send.AccessCount, Mode=OneWay}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center" />
|
||||||
AutomationId="SendCurrentAccessCountLabel" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
@@ -462,8 +436,7 @@
|
|||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
IsSpellCheckEnabled="False"
|
IsSpellCheckEnabled="False"
|
||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand" />
|
||||||
AutomationId="SendNewPasswordEntry" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
@@ -472,8 +445,7 @@
|
|||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}" />
|
||||||
AutomationId="SendShowHidePasswordButton" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n PasswordInfo}"
|
Text="{u:I18n PasswordInfo}"
|
||||||
@@ -492,8 +464,7 @@
|
|||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Margin="{Binding EditorMargins}"
|
Margin="{Binding EditorMargins}"
|
||||||
effects:ScrollEnabledEffect.IsScrollEnabled="false"
|
effects:ScrollEnabledEffect.IsScrollEnabled="false" >
|
||||||
AutomationId="SendNotesEntry">
|
|
||||||
<Editor.Behaviors>
|
<Editor.Behaviors>
|
||||||
<behaviors:EditorPreventAutoBottomScrollingOnFocusedBehavior ParentScrollView="{x:Reference _scrollView}" />
|
<behaviors:EditorPreventAutoBottomScrollingOnFocusedBehavior ParentScrollView="{x:Reference _scrollView}" />
|
||||||
</Editor.Behaviors>
|
</Editor.Behaviors>
|
||||||
@@ -521,8 +492,7 @@
|
|||||||
IsToggled="{Binding Send.HideEmail}"
|
IsToggled="{Binding Send.HideEmail}"
|
||||||
IsEnabled="{Binding DisableHideEmailControl, Converter={StaticResource inverseBool}}"
|
IsEnabled="{Binding DisableHideEmailControl, Converter={StaticResource inverseBool}}"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0" />
|
||||||
AutomationId="SendHideEmailSwitch" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout
|
<StackLayout
|
||||||
StyleClass="box-row, box-row-switch"
|
StyleClass="box-row, box-row-switch"
|
||||||
@@ -536,8 +506,7 @@
|
|||||||
IsToggled="{Binding Send.Disabled}"
|
IsToggled="{Binding Send.Disabled}"
|
||||||
IsEnabled="{Binding SendEnabled}"
|
IsEnabled="{Binding SendEnabled}"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0" />
|
||||||
AutomationId="SendDeactivateSwitch" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,7 @@
|
|||||||
Priority="-2"
|
Priority="-2"
|
||||||
UseOriginalImage="True"
|
UseOriginalImage="True"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Account}"
|
AutomationProperties.Name="{u:I18n Account}" />
|
||||||
AutomationId="AccountIconButton" />
|
|
||||||
<ToolbarItem Text="{u:I18n Cancel}" Clicked="Close_Clicked" Order="Primary" Priority="-1" x:Name="_closeItem" />
|
<ToolbarItem Text="{u:I18n Cancel}" Clicked="Close_Clicked" Order="Primary" Priority="-1" x:Name="_closeItem" />
|
||||||
<ToolbarItem Text="{u:I18n Save}" Clicked="Save_Clicked" Order="Primary" x:Name="_saveItem"/>
|
<ToolbarItem Text="{u:I18n Save}" Clicked="Save_Clicked" Order="Primary" x:Name="_saveItem"/>
|
||||||
</ContentPage.ToolbarItems>
|
</ContentPage.ToolbarItems>
|
||||||
|
|||||||
@@ -44,15 +44,13 @@
|
|||||||
<controls:SendViewCell
|
<controls:SendViewCell
|
||||||
Send="{Binding Send}"
|
Send="{Binding Send}"
|
||||||
ButtonCommand="{Binding BindingContext.SendOptionsCommand, Source={x:Reference _page}}"
|
ButtonCommand="{Binding BindingContext.SendOptionsCommand, Source={x:Reference _page}}"
|
||||||
ShowOptions="{Binding BindingContext.SendEnabled, Source={x:Reference _page}}"
|
ShowOptions="{Binding BindingContext.SendEnabled, Source={x:Reference _page}}" />
|
||||||
AutomationId="SendCell" />
|
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<DataTemplate x:Key="sendGroupTemplate"
|
<DataTemplate x:Key="sendGroupTemplate"
|
||||||
x:DataType="pages:SendGroupingsPageListItem">
|
x:DataType="pages:SendGroupingsPageListItem">
|
||||||
<controls:ExtendedStackLayout Orientation="Horizontal"
|
<controls:ExtendedStackLayout Orientation="Horizontal"
|
||||||
StyleClass="list-row, list-row-platform"
|
StyleClass="list-row, list-row-platform">
|
||||||
AutomationId="{Binding AutomationId}">
|
|
||||||
<controls:IconLabel Text="{Binding Icon, Mode=OneWay}"
|
<controls:IconLabel Text="{Binding Icon, Mode=OneWay}"
|
||||||
HorizontalOptions="Start"
|
HorizontalOptions="Start"
|
||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
@@ -66,14 +64,12 @@
|
|||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
StyleClass="list-title"
|
StyleClass="list-title" />
|
||||||
AutomationId="SendFilterNameLabel" />
|
|
||||||
<Label Text="{Binding ItemCount, Mode=OneWay}"
|
<Label Text="{Binding ItemCount, Mode=OneWay}"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
StyleClass="list-sub"
|
StyleClass="list-sub" />
|
||||||
AutomationId="SendFilterCountLabel" />
|
|
||||||
</controls:ExtendedStackLayout>
|
</controls:ExtendedStackLayout>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
|||||||
@@ -66,27 +66,5 @@ namespace Bit.App.Pages
|
|||||||
return _icon;
|
return _icon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string AutomationId
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_name != null)
|
|
||||||
{
|
|
||||||
return "SendItem";
|
|
||||||
}
|
|
||||||
if (Type != null)
|
|
||||||
{
|
|
||||||
switch (Type.Value)
|
|
||||||
{
|
|
||||||
case SendType.Text:
|
|
||||||
return "SendTextFilter";
|
|
||||||
case SendType.File:
|
|
||||||
return "SendFileFilter";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,8 +59,7 @@
|
|||||||
Margin="20, 0"
|
Margin="20, 0"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
HorizontalOptions="CenterAndExpand"
|
HorizontalOptions="CenterAndExpand"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="NoSendDisplayedLabel" />
|
|
||||||
<controls:ExtendedCollectionView
|
<controls:ExtendedCollectionView
|
||||||
IsVisible="{Binding ShowList}"
|
IsVisible="{Binding ShowList}"
|
||||||
ItemsSource="{Binding Sends}"
|
ItemsSource="{Binding Sends}"
|
||||||
@@ -68,15 +67,13 @@
|
|||||||
SelectionMode="Single"
|
SelectionMode="Single"
|
||||||
SelectionChanged="RowSelected"
|
SelectionChanged="RowSelected"
|
||||||
StyleClass="list, list-platform"
|
StyleClass="list, list-platform"
|
||||||
ExtraDataForLogging="Sends Page"
|
ExtraDataForLogging="Sends Page">
|
||||||
AutomationId="SendCellList">
|
|
||||||
<CollectionView.ItemTemplate>
|
<CollectionView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="views:SendView">
|
<DataTemplate x:DataType="views:SendView">
|
||||||
<controls:SendViewCell
|
<controls:SendViewCell
|
||||||
Send="{Binding .}"
|
Send="{Binding .}"
|
||||||
ButtonCommand="{Binding BindingContext.SendOptionsCommand, Source={x:Reference _page}}"
|
ButtonCommand="{Binding BindingContext.SendOptionsCommand, Source={x:Reference _page}}"
|
||||||
ShowOptions="{Binding BindingContext.SendEnabled, Source={x:Reference _page}}"
|
ShowOptions="{Binding BindingContext.SendEnabled, Source={x:Reference _page}}" />
|
||||||
AutomationId="SendCell" />
|
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</CollectionView.ItemTemplate>
|
</CollectionView.ItemTemplate>
|
||||||
</controls:ExtendedCollectionView>
|
</controls:ExtendedCollectionView>
|
||||||
|
|||||||
@@ -13,13 +13,8 @@
|
|||||||
</ContentPage.BindingContext>
|
</ContentPage.BindingContext>
|
||||||
|
|
||||||
<ContentPage.ToolbarItems>
|
<ContentPage.ToolbarItems>
|
||||||
<ToolbarItem Text="{u:I18n Cancel}"
|
<ToolbarItem Text="{u:I18n Cancel}" Clicked="Close_Clicked" Order="Primary" Priority="-1" />
|
||||||
Clicked="Close_Clicked"
|
<ToolbarItem Text="{u:I18n Save}" Clicked="Save_Clicked" Order="Primary" />
|
||||||
Order="Primary"
|
|
||||||
Priority="-1" />
|
|
||||||
<ToolbarItem Text="{u:I18n Save}"
|
|
||||||
Clicked="Save_Clicked"
|
|
||||||
Order="Primary" />
|
|
||||||
<ToolbarItem Text="{u:I18n Delete}"
|
<ToolbarItem Text="{u:I18n Delete}"
|
||||||
Clicked="Delete_Clicked"
|
Clicked="Delete_Clicked"
|
||||||
Order="Secondary"
|
Order="Secondary"
|
||||||
@@ -48,8 +43,7 @@
|
|||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
x:Name="_nameEntry"
|
x:Name="_nameEntry"
|
||||||
ReturnType="Go"
|
ReturnType="Go"
|
||||||
ReturnCommand="{Binding SubmitCommand}"
|
ReturnCommand="{Binding SubmitCommand}" />
|
||||||
AutomationId="FolderNameEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
|||||||
@@ -31,8 +31,7 @@
|
|||||||
Margin="20, 0"
|
Margin="20, 0"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
HorizontalOptions="CenterAndExpand"
|
HorizontalOptions="CenterAndExpand"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center"></Label>
|
||||||
AutomationId="NoFoldersLabel"></Label>
|
|
||||||
<controls:ExtendedCollectionView
|
<controls:ExtendedCollectionView
|
||||||
IsVisible="{Binding ShowNoData, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding ShowNoData, Converter={StaticResource inverseBool}}"
|
||||||
ItemsSource="{Binding Folders}"
|
ItemsSource="{Binding Folders}"
|
||||||
@@ -45,12 +44,10 @@
|
|||||||
<DataTemplate x:DataType="views:FolderView">
|
<DataTemplate x:DataType="views:FolderView">
|
||||||
<controls:ExtendedStackLayout
|
<controls:ExtendedStackLayout
|
||||||
StyleClass="list-row, list-row-platform"
|
StyleClass="list-row, list-row-platform"
|
||||||
Padding="10"
|
Padding="10">
|
||||||
AutomationId="FolderCell">
|
|
||||||
<Label LineBreakMode="TailTruncation"
|
<Label LineBreakMode="TailTruncation"
|
||||||
StyleClass="list-title, list-title-platform"
|
StyleClass="list-title, list-title-platform"
|
||||||
Text="{Binding Name, Mode=OneWay}"
|
Text="{Binding Name, Mode=OneWay}" />
|
||||||
AutomationId="FolderName" />
|
|
||||||
</controls:ExtendedStackLayout>
|
</controls:ExtendedStackLayout>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</CollectionView.ItemTemplate>
|
</CollectionView.ItemTemplate>
|
||||||
|
|||||||
@@ -27,8 +27,7 @@
|
|||||||
x:Name="_themePicker"
|
x:Name="_themePicker"
|
||||||
ItemsSource="{Binding ThemeOptions, Mode=OneTime}"
|
ItemsSource="{Binding ThemeOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding ThemeSelectedIndex}"
|
SelectedIndex="{Binding ThemeSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ThemeSelectorPicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label"
|
||||||
@@ -45,8 +44,7 @@
|
|||||||
x:Name="_autoDarkThemePicker"
|
x:Name="_autoDarkThemePicker"
|
||||||
ItemsSource="{Binding AutoDarkThemeOptions, Mode=OneTime}"
|
ItemsSource="{Binding AutoDarkThemeOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding AutoDarkThemeSelectedIndex}"
|
SelectedIndex="{Binding AutoDarkThemeSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="DefaultDarkThemePicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label"
|
||||||
@@ -61,8 +59,7 @@
|
|||||||
x:Name="_uriMatchPicker"
|
x:Name="_uriMatchPicker"
|
||||||
ItemsSource="{Binding UriMatchOptions, Mode=OneTime}"
|
ItemsSource="{Binding UriMatchOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding UriMatchSelectedIndex}"
|
SelectedIndex="{Binding UriMatchSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="DefaultUriMatchDetectionPicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n DefaultUriMatchDetectionDescription}"
|
Text="{u:I18n DefaultUriMatchDetectionDescription}"
|
||||||
@@ -77,8 +74,7 @@
|
|||||||
x:Name="_clearClipboardPicker"
|
x:Name="_clearClipboardPicker"
|
||||||
ItemsSource="{Binding ClearClipboardOptions, Mode=OneTime}"
|
ItemsSource="{Binding ClearClipboardOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding ClearClipboardSelectedIndex}"
|
SelectedIndex="{Binding ClearClipboardSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ClearClipboardPicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n ClearClipboardDescription}"
|
Text="{u:I18n ClearClipboardDescription}"
|
||||||
@@ -94,8 +90,7 @@
|
|||||||
ItemsSource="{Binding LocalesOptions, Mode=OneTime}"
|
ItemsSource="{Binding LocalesOptions, Mode=OneTime}"
|
||||||
SelectedItem="{Binding SelectedLocale}"
|
SelectedItem="{Binding SelectedLocale}"
|
||||||
ItemDisplayBinding="{Binding Value}"
|
ItemDisplayBinding="{Binding Value}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="LanguagePicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n LanguageChangeRequiresAppRestart}"
|
Text="{u:I18n LanguageChangeRequiresAppRestart}"
|
||||||
@@ -110,8 +105,7 @@
|
|||||||
<Switch
|
<Switch
|
||||||
IsToggled="{Binding AutoTotpCopy}"
|
IsToggled="{Binding AutoTotpCopy}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End" />
|
||||||
AutomationId="CopyTotpAutomaticallyToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n CopyTotpAutomaticallyDescription}"
|
Text="{u:I18n CopyTotpAutomaticallyDescription}"
|
||||||
@@ -126,8 +120,7 @@
|
|||||||
<Switch
|
<Switch
|
||||||
IsToggled="{Binding Favicon}"
|
IsToggled="{Binding Favicon}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End" />
|
||||||
AutomationId="ShowWebsiteIconsToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n ShowWebsiteIconsDescription}"
|
Text="{u:I18n ShowWebsiteIconsDescription}"
|
||||||
|
|||||||
@@ -32,21 +32,19 @@
|
|||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Center" />
|
HorizontalTextAlignment="Center" />
|
||||||
</Frame>
|
</Frame>
|
||||||
<controls:CustomLabel IsVisible="{Binding UseFrame, Converter={StaticResource inverseBool}}"
|
<Label IsVisible="{Binding UseFrame, Converter={StaticResource inverseBool}}"
|
||||||
Text="{Binding Name, Mode=OneWay}"
|
Text="{Binding Name, Mode=OneWay}"
|
||||||
LineBreakMode="{Binding LineBreakMode}"
|
LineBreakMode="{Binding LineBreakMode}"
|
||||||
HorizontalOptions="StartAndExpand"
|
HorizontalOptions="StartAndExpand"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
StyleClass="list-title"
|
StyleClass="list-title"/>
|
||||||
AutomationId="{Binding AutomationIdSettingName}" />
|
<Label Text="{Binding SubLabel, Mode=OneWay}"
|
||||||
<controls:CustomLabel Text="{Binding SubLabel, Mode=OneWay}"
|
|
||||||
IsVisible="{Binding ShowSubLabel}"
|
IsVisible="{Binding ShowSubLabel}"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
TextColor="{Binding SubLabelColor}"
|
TextColor="{Binding SubLabelColor}"
|
||||||
StyleClass="list-sub"
|
StyleClass="list-sub" />
|
||||||
AutomationId="{Binding AutomationIdSettingStatus}" />
|
|
||||||
</controls:ExtendedStackLayout>
|
</controls:ExtendedStackLayout>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate
|
<DataTemplate
|
||||||
@@ -59,8 +57,7 @@
|
|||||||
Padding="10"
|
Padding="10"
|
||||||
HasShadow="False"
|
HasShadow="False"
|
||||||
BackgroundColor="Transparent"
|
BackgroundColor="Transparent"
|
||||||
BorderColor="{DynamicResource PrimaryColor}"
|
BorderColor="{DynamicResource PrimaryColor}">
|
||||||
AutomationId="SettingActivePolicyTextLabel">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Name, Mode=OneWay}"
|
Text="{Binding Name, Mode=OneWay}"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
@@ -78,8 +75,7 @@
|
|||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
FontSize="Small"
|
FontSize="Small"
|
||||||
TextColor="{Binding SubLabelColor}"
|
TextColor="{Binding SubLabelColor}"
|
||||||
StyleClass="list-sub" Margin="-5"
|
StyleClass="list-sub" Margin="-5"/>
|
||||||
AutomationId="SettingCustomVaultTimeoutPicker" />
|
|
||||||
<controls:ExtendedStackLayout.GestureRecognizers>
|
<controls:ExtendedStackLayout.GestureRecognizers>
|
||||||
<TapGestureRecognizer Tapped="ActivateTimePicker"/>
|
<TapGestureRecognizer Tapped="ActivateTimePicker"/>
|
||||||
</controls:ExtendedStackLayout.GestureRecognizers>
|
</controls:ExtendedStackLayout.GestureRecognizers>
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Bit.App.Resources;
|
using Bit.App.Resources;
|
||||||
using Bit.App.Utilities;
|
using Bit.App.Utilities;
|
||||||
using Bit.App.Utilities.Automation;
|
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
@@ -24,29 +22,5 @@ namespace Bit.App.Pages
|
|||||||
public Color SubLabelColor => SubLabelTextEnabled ?
|
public Color SubLabelColor => SubLabelTextEnabled ?
|
||||||
ThemeManager.GetResourceColor("SuccessColor") :
|
ThemeManager.GetResourceColor("SuccessColor") :
|
||||||
ThemeManager.GetResourceColor("MutedColor");
|
ThemeManager.GetResourceColor("MutedColor");
|
||||||
|
|
||||||
public string AutomationIdSettingName
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return AutomationIdsHelper.AddSuffixFor(
|
|
||||||
UseFrame ? "EnabledPolicy"
|
|
||||||
: AutomationIdsHelper.ToEnglishTitleCase(Name)
|
|
||||||
, SuffixType.Cell);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string AutomationIdSettingStatus
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (UseFrame)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return AutomationIdsHelper.AddSuffixFor(AutomationIdsHelper.ToEnglishTitleCase(Name), SuffixType.SettingValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,25 +33,23 @@
|
|||||||
<StackLayout StyleClass="box">
|
<StackLayout StyleClass="box">
|
||||||
<StackLayout StyleClass="box-row" Padding="10, 20"
|
<StackLayout StyleClass="box-row" Padding="10, 20"
|
||||||
IsVisible="{Binding HasAttachments, Converter={StaticResource inverseBool}}">
|
IsVisible="{Binding HasAttachments, Converter={StaticResource inverseBool}}">
|
||||||
<Label Text="{u:I18n NoAttachments}" HorizontalTextAlignment="Center" AutomationId="NoAttachmentsLabel" />
|
<Label Text="{u:I18n NoAttachments}" HorizontalTextAlignment="Center" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<controls:RepeaterView ItemsSource="{Binding Attachments}" IsVisible="{Binding HasAttachments}" AutomationId="AttachmentsList">
|
<controls:RepeaterView ItemsSource="{Binding Attachments}" IsVisible="{Binding HasAttachments}">
|
||||||
<controls:RepeaterView.ItemTemplate>
|
<controls:RepeaterView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="views:AttachmentView">
|
<DataTemplate x:DataType="views:AttachmentView">
|
||||||
<StackLayout Spacing="0" Padding="0">
|
<StackLayout Spacing="0" Padding="0">
|
||||||
<StackLayout Orientation="Horizontal" StyleClass="box-row" Spacing="10" AutomationId="AttachmentRow">
|
<StackLayout Orientation="Horizontal" StyleClass="box-row" Spacing="10">
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding FileName, Mode=OneWay}"
|
Text="{Binding FileName, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center"
|
||||||
HorizontalOptions="StartAndExpand"
|
HorizontalOptions="StartAndExpand" />
|
||||||
AutomationId="AttachmentFileNameLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding SizeName, Mode=OneWay}"
|
Text="{Binding SizeName, Mode=OneWay}"
|
||||||
StyleClass="box-sub-label"
|
StyleClass="box-sub-label"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center" />
|
||||||
AutomationId="AttachmentFileSizeLabel" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Trash}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Trash}}"
|
||||||
@@ -59,8 +57,7 @@
|
|||||||
CommandParameter="{Binding .}"
|
CommandParameter="{Binding .}"
|
||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Delete}"
|
AutomationProperties.Name="{u:I18n Delete}" />
|
||||||
AutomationId="AttachmentDeleteButton" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
@@ -80,20 +77,17 @@
|
|||||||
LineBreakMode="CharacterWrap"
|
LineBreakMode="CharacterWrap"
|
||||||
StyleClass="text-sm, text-muted"
|
StyleClass="text-sm, text-muted"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="NoFileChosenLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
IsVisible="{Binding FileName, Converter={StaticResource notNull}}"
|
IsVisible="{Binding FileName, Converter={StaticResource notNull}}"
|
||||||
Text="{Binding FileName}"
|
Text="{Binding FileName}"
|
||||||
LineBreakMode="CharacterWrap"
|
LineBreakMode="CharacterWrap"
|
||||||
StyleClass="text-sm, text-muted"
|
StyleClass="text-sm, text-muted"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="NewAttachmentNameLabel" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Button Text="{u:I18n ChooseFile}" StyleClass="box-button-row"
|
<Button Text="{u:I18n ChooseFile}" StyleClass="box-button-row"
|
||||||
Clicked="ChooseFile_Clicked"
|
Clicked="ChooseFile_Clicked"></Button>
|
||||||
AutomationId="ChooseFileButton"></Button>
|
|
||||||
<Label
|
<Label
|
||||||
Margin="0, 10, 0, 0"
|
Margin="0, 10, 0, 0"
|
||||||
Text="{u:I18n MaxFileSize}"
|
Text="{u:I18n MaxFileSize}"
|
||||||
|
|||||||
@@ -57,16 +57,16 @@
|
|||||||
x:Key="deleteItem" />
|
x:Key="deleteItem" />
|
||||||
|
|
||||||
<DataTemplate x:Key="TextCustomFieldDataTemplate">
|
<DataTemplate x:Key="TextCustomFieldDataTemplate">
|
||||||
<il:TextCustomFieldItemLayout AutomationId="TextCustomFieldItem" />
|
<il:TextCustomFieldItemLayout />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate x:Key="BooleanCustomFieldDataTemplate">
|
<DataTemplate x:Key="BooleanCustomFieldDataTemplate">
|
||||||
<il:BooleanCustomFieldItemLayout AutomationId="BooleanCustomFieldItem" />
|
<il:BooleanCustomFieldItemLayout />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate x:Key="HiddenCustomFieldDataTemplate">
|
<DataTemplate x:Key="HiddenCustomFieldDataTemplate">
|
||||||
<il:HiddenCustomFieldItemLayout AutomationId="HiddenCustomFieldItem" />
|
<il:HiddenCustomFieldItemLayout />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate x:Key="LinkedCustomFieldDataTemplate">
|
<DataTemplate x:Key="LinkedCustomFieldDataTemplate">
|
||||||
<il:LinkedCustomFieldItemLayout AutomationId="LinkedCustomFieldItem" />
|
<il:LinkedCustomFieldItemLayout />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<dts:CustomFieldItemTemplateSelector x:Key="CustomFieldItemTemplateSelector"
|
<dts:CustomFieldItemTemplateSelector x:Key="CustomFieldItemTemplateSelector"
|
||||||
@@ -100,8 +100,7 @@
|
|||||||
<Label
|
<Label
|
||||||
Text="{u:I18n PersonalOwnershipPolicyInEffect}"
|
Text="{u:I18n PersonalOwnershipPolicyInEffect}"
|
||||||
StyleClass="text-muted, text-sm, text-bold"
|
StyleClass="text-muted, text-sm, text-bold"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="PersonalOwnershipPolicyLabel"/>
|
|
||||||
</Frame>
|
</Frame>
|
||||||
</Grid>
|
</Grid>
|
||||||
<StackLayout StyleClass="box-row-header">
|
<StackLayout StyleClass="box-row-header">
|
||||||
@@ -117,8 +116,7 @@
|
|||||||
x:Name="_typePicker"
|
x:Name="_typePicker"
|
||||||
ItemsSource="{Binding TypeOptions, Mode=OneTime}"
|
ItemsSource="{Binding TypeOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding TypeSelectedIndex}"
|
SelectedIndex="{Binding TypeSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemTypePicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -129,8 +127,7 @@
|
|||||||
Text="{Binding Cipher.Name}"
|
Text="{Binding Cipher.Name}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Name}"
|
AutomationProperties.Name="{u:I18n Name}" />
|
||||||
AutomationId="ItemNameEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsLogin}" Spacing="0" Padding="0">
|
<StackLayout IsVisible="{Binding IsLogin}" Spacing="0" Padding="0">
|
||||||
<Grid StyleClass="box-row, box-row-input"
|
<Grid StyleClass="box-row, box-row-input"
|
||||||
@@ -145,8 +142,7 @@
|
|||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Username}"
|
AutomationProperties.Name="{u:I18n Username}"/>
|
||||||
AutomationId="LoginUsernameEntry" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Generate}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Generate}}"
|
||||||
@@ -154,8 +150,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n GenerateUsername}"
|
AutomationProperties.Name="{u:I18n GenerateUsername}" />
|
||||||
AutomationId="GenerateUsernameButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid StyleClass="box-row, box-row-input">
|
<Grid StyleClass="box-row, box-row-input">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
@@ -185,8 +180,7 @@
|
|||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
IsEnabled="{Binding Cipher.ViewPassword}"
|
IsEnabled="{Binding Cipher.ViewPassword}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Password}"
|
AutomationProperties.Name="{u:I18n Password}"/>
|
||||||
AutomationId="LoginPasswordEntry" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.CheckCircle}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.CheckCircle}}"
|
||||||
@@ -196,8 +190,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CheckPassword}"
|
AutomationProperties.Name="{u:I18n CheckPassword}"
|
||||||
IsVisible="{Binding Cipher.ViewPassword}"
|
IsVisible="{Binding Cipher.ViewPassword}" />
|
||||||
AutomationId="CheckPasswordButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -208,8 +201,7 @@
|
|||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
||||||
IsVisible="{Binding Cipher.ViewPassword}"
|
IsVisible="{Binding Cipher.ViewPassword}" />
|
||||||
AutomationId="ViewPasswordButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Generate}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Generate}}"
|
||||||
@@ -219,8 +211,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n GeneratePassword}"
|
AutomationProperties.Name="{u:I18n GeneratePassword}"
|
||||||
IsVisible="{Binding Cipher.ViewPassword}"
|
IsVisible="{Binding Cipher.ViewPassword}" />
|
||||||
AutomationId="RegeneratePasswordButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid StyleClass="box-row, box-row-input">
|
<Grid StyleClass="box-row, box-row-input">
|
||||||
@@ -256,8 +247,7 @@
|
|||||||
Padding="0,15"
|
Padding="0,15"
|
||||||
HorizontalOptions="Center"
|
HorizontalOptions="Center"
|
||||||
VerticalOptions="FillAndExpand"
|
VerticalOptions="FillAndExpand"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center" />
|
||||||
AutomationId="SetupTotpButton" />
|
|
||||||
</Frame>
|
</Frame>
|
||||||
<controls:MonoEntry
|
<controls:MonoEntry
|
||||||
x:Name="_loginTotpEntry"
|
x:Name="_loginTotpEntry"
|
||||||
@@ -272,8 +262,7 @@
|
|||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.ColumnSpan="{Binding TotpColumnSpan}"
|
Grid.ColumnSpan="{Binding TotpColumnSpan}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n AuthenticatorKey}"
|
AutomationProperties.Name="{u:I18n AuthenticatorKey}" />
|
||||||
AutomationId="LoginTotpEntry" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
@@ -283,8 +272,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CopyTotp}"
|
AutomationProperties.Name="{u:I18n CopyTotp}" />
|
||||||
AutomationId="CopyTotpValueButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Camera}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Camera}}"
|
||||||
@@ -294,8 +282,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
IsVisible="{Binding HasTotpValue}"
|
IsVisible="{Binding HasTotpValue}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ScanQrTitle}"
|
AutomationProperties.Name="{u:I18n ScanQrTitle}" />
|
||||||
/>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsCard}" Spacing="0" Padding="0">
|
<StackLayout IsVisible="{Binding IsCard}" Spacing="0" Padding="0">
|
||||||
@@ -306,8 +293,7 @@
|
|||||||
<Entry
|
<Entry
|
||||||
x:Name="_cardholderNameEntry"
|
x:Name="_cardholderNameEntry"
|
||||||
Text="{Binding Cipher.Card.CardholderName}"
|
Text="{Binding Cipher.Card.CardholderName}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="CardholderNameEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Grid StyleClass="box-row, box-row-input">
|
<Grid StyleClass="box-row, box-row-input">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
@@ -333,8 +319,7 @@
|
|||||||
IsSpellCheckEnabled="False"
|
IsSpellCheckEnabled="False"
|
||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Number}"
|
AutomationProperties.Name="{u:I18n Number}" />
|
||||||
AutomationId="CardNumberEntry" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowCardNumberIcon}"
|
Text="{Binding ShowCardNumberIcon}"
|
||||||
@@ -343,8 +328,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}" />
|
||||||
AutomationId="ShowCardNumberButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -354,8 +338,7 @@
|
|||||||
x:Name="_cardBrandPicker"
|
x:Name="_cardBrandPicker"
|
||||||
ItemsSource="{Binding CardBrandOptions, Mode=OneTime}"
|
ItemsSource="{Binding CardBrandOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding CardBrandSelectedIndex}"
|
SelectedIndex="{Binding CardBrandSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="CardBrandPicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -365,8 +348,7 @@
|
|||||||
x:Name="_cardExpMonthPicker"
|
x:Name="_cardExpMonthPicker"
|
||||||
ItemsSource="{Binding CardExpMonthOptions, Mode=OneTime}"
|
ItemsSource="{Binding CardExpMonthOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding CardExpMonthSelectedIndex}"
|
SelectedIndex="{Binding CardExpMonthSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="CardExpirationMonthPicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -378,8 +360,7 @@
|
|||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Keyboard="Numeric"
|
Keyboard="Numeric"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ExpirationYear}"
|
AutomationProperties.Name="{u:I18n ExpirationYear}" />
|
||||||
AutomationId="CardExpirationYearEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<Grid StyleClass="box-row, box-row-input">
|
<Grid StyleClass="box-row, box-row-input">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
@@ -406,8 +387,7 @@
|
|||||||
IsSpellCheckEnabled="False"
|
IsSpellCheckEnabled="False"
|
||||||
IsTextPredictionEnabled="False"
|
IsTextPredictionEnabled="False"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n SecurityCode}"
|
AutomationProperties.Name="{u:I18n SecurityCode}" />
|
||||||
AutomationId="CardSecurityCodeEntry" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowCardCodeIcon}"
|
Text="{Binding ShowCardCodeIcon}"
|
||||||
@@ -416,8 +396,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}" />
|
||||||
AutomationId="CardShowSecurityCodeButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsIdentity}" Spacing="0" Padding="0">
|
<StackLayout IsVisible="{Binding IsIdentity}" Spacing="0" Padding="0">
|
||||||
@@ -429,8 +408,7 @@
|
|||||||
x:Name="_identityTitlePicker"
|
x:Name="_identityTitlePicker"
|
||||||
ItemsSource="{Binding IdentityTitleOptions, Mode=OneTime}"
|
ItemsSource="{Binding IdentityTitleOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding IdentityTitleSelectedIndex}"
|
SelectedIndex="{Binding IdentityTitleSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="IdentityTitlePicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -441,8 +419,7 @@
|
|||||||
Text="{Binding Cipher.Identity.FirstName}"
|
Text="{Binding Cipher.Identity.FirstName}"
|
||||||
StyleClass="box-value,capitalize-word-input"
|
StyleClass="box-value,capitalize-word-input"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n FirstName}"
|
AutomationProperties.Name="{u:I18n FirstName}"/>
|
||||||
AutomationId="IdentityFirstNameEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -453,8 +430,7 @@
|
|||||||
Text="{Binding Cipher.Identity.MiddleName}"
|
Text="{Binding Cipher.Identity.MiddleName}"
|
||||||
StyleClass="box-value,capitalize-word-input"
|
StyleClass="box-value,capitalize-word-input"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n MiddleName}"
|
AutomationProperties.Name="{u:I18n MiddleName}" />
|
||||||
AutomationId="IdentityMiddleNameEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -465,8 +441,7 @@
|
|||||||
Text="{Binding Cipher.Identity.LastName}"
|
Text="{Binding Cipher.Identity.LastName}"
|
||||||
StyleClass="box-value,capitalize-word-input"
|
StyleClass="box-value,capitalize-word-input"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n LastName}"
|
AutomationProperties.Name="{u:I18n LastName}" />
|
||||||
AutomationId="IdentityLastNameEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -477,8 +452,7 @@
|
|||||||
Text="{Binding Cipher.Identity.Username}"
|
Text="{Binding Cipher.Identity.Username}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Username}"
|
AutomationProperties.Name="{u:I18n Username}" />
|
||||||
AutomationId="IdentityUsernameEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -489,8 +463,7 @@
|
|||||||
Text="{Binding Cipher.Identity.Company}"
|
Text="{Binding Cipher.Identity.Company}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Company}"
|
AutomationProperties.Name="{u:I18n Company}"/>
|
||||||
AutomationId="IdentityCompanyEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -501,8 +474,7 @@
|
|||||||
Text="{Binding Cipher.Identity.SSN}"
|
Text="{Binding Cipher.Identity.SSN}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n SSN}"
|
AutomationProperties.Name="{u:I18n SSN}"/>
|
||||||
AutomationId="IdentitySsnEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -513,8 +485,7 @@
|
|||||||
Text="{Binding Cipher.Identity.PassportNumber}"
|
Text="{Binding Cipher.Identity.PassportNumber}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n PassportNumber}"
|
AutomationProperties.Name="{u:I18n PassportNumber}"/>
|
||||||
AutomationId="IdentityPassportNumberEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -525,8 +496,7 @@
|
|||||||
Text="{Binding Cipher.Identity.LicenseNumber}"
|
Text="{Binding Cipher.Identity.LicenseNumber}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n LicenseNumber}"
|
AutomationProperties.Name="{u:I18n LicenseNumber}" />
|
||||||
AutomationId="IdentityLicenseNumberEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -538,8 +508,7 @@
|
|||||||
Text="{Binding Cipher.Identity.Email}"
|
Text="{Binding Cipher.Identity.Email}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Email}"
|
AutomationProperties.Name="{u:I18n Email}"/>
|
||||||
AutomationId="IdentityEmailEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -551,8 +520,7 @@
|
|||||||
Keyboard="Telephone"
|
Keyboard="Telephone"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Phone}"
|
AutomationProperties.Name="{u:I18n Phone}" />
|
||||||
AutomationId="IdentityPhoneEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -563,8 +531,7 @@
|
|||||||
Text="{Binding Cipher.Identity.Address1}"
|
Text="{Binding Cipher.Identity.Address1}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Address1}"
|
AutomationProperties.Name="{u:I18n Address1}"/>
|
||||||
AutomationId="IdentityAddressOneEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -575,8 +542,7 @@
|
|||||||
Text="{Binding Cipher.Identity.Address2}"
|
Text="{Binding Cipher.Identity.Address2}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Address2}"
|
AutomationProperties.Name="{u:I18n Address2}" />
|
||||||
AutomationId="IdentityAddressTwoEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -587,8 +553,7 @@
|
|||||||
Text="{Binding Cipher.Identity.Address3}"
|
Text="{Binding Cipher.Identity.Address3}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Address3}"
|
AutomationProperties.Name="{u:I18n Address3}" />
|
||||||
AutomationId="IdentityAddressThreeEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -599,8 +564,7 @@
|
|||||||
Text="{Binding Cipher.Identity.City}"
|
Text="{Binding Cipher.Identity.City}"
|
||||||
StyleClass="box-value,capitalize-sentence-input"
|
StyleClass="box-value,capitalize-sentence-input"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CityTown}"
|
AutomationProperties.Name="{u:I18n CityTown}" />
|
||||||
AutomationId="IdentityCityEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -611,8 +575,7 @@
|
|||||||
Text="{Binding Cipher.Identity.State}"
|
Text="{Binding Cipher.Identity.State}"
|
||||||
StyleClass="box-value,capitalize-sentence-input"
|
StyleClass="box-value,capitalize-sentence-input"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n StateProvince}"
|
AutomationProperties.Name="{u:I18n StateProvince}" />
|
||||||
AutomationId="IdentityStateEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -623,8 +586,7 @@
|
|||||||
Text="{Binding Cipher.Identity.PostalCode}"
|
Text="{Binding Cipher.Identity.PostalCode}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ZipPostalCode}"
|
AutomationProperties.Name="{u:I18n ZipPostalCode}" />
|
||||||
AutomationId="IdentityPostalCodeEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-input">
|
<StackLayout StyleClass="box-row, box-row-input">
|
||||||
<Label
|
<Label
|
||||||
@@ -635,8 +597,7 @@
|
|||||||
Text="{Binding Cipher.Identity.Country}"
|
Text="{Binding Cipher.Identity.Country}"
|
||||||
StyleClass="box-value,capitalize-sentence-input"
|
StyleClass="box-value,capitalize-sentence-input"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Country}"
|
AutomationProperties.Name="{u:I18n Country}" />
|
||||||
AutomationId="IdentityCountryEntry" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
@@ -648,7 +609,7 @@
|
|||||||
<controls:RepeaterView ItemsSource="{Binding Uris}">
|
<controls:RepeaterView ItemsSource="{Binding Uris}">
|
||||||
<controls:RepeaterView.ItemTemplate>
|
<controls:RepeaterView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="views:LoginUriView">
|
<DataTemplate x:DataType="views:LoginUriView">
|
||||||
<Grid StyleClass="box-row, box-row-input" AutomationId="UriListGrid" >
|
<Grid StyleClass="box-row, box-row-input">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
@@ -669,8 +630,7 @@
|
|||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n URI}"
|
AutomationProperties.Name="{u:I18n URI}" />
|
||||||
AutomationId="LoginUriEntry" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Cog}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Cog}}"
|
||||||
@@ -680,15 +640,13 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Options}"
|
AutomationProperties.Name="{u:I18n Options}" />
|
||||||
AutomationId="LoginUriOptionsButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</controls:RepeaterView.ItemTemplate>
|
</controls:RepeaterView.ItemTemplate>
|
||||||
</controls:RepeaterView>
|
</controls:RepeaterView>
|
||||||
<Button Text="{u:I18n NewUri}" StyleClass="box-button-row"
|
<Button Text="{u:I18n NewUri}" StyleClass="box-button-row"
|
||||||
Clicked="NewUri_Clicked"
|
Clicked="NewUri_Clicked"></Button>
|
||||||
AutomationId="LoginAddNewUriButton"></Button>
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box">
|
<StackLayout StyleClass="box">
|
||||||
<StackLayout StyleClass="box-row-header">
|
<StackLayout StyleClass="box-row-header">
|
||||||
@@ -703,8 +661,7 @@
|
|||||||
x:Name="_folderPicker"
|
x:Name="_folderPicker"
|
||||||
ItemsSource="{Binding FolderOptions, Mode=OneTime}"
|
ItemsSource="{Binding FolderOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding FolderSelectedIndex}"
|
SelectedIndex="{Binding FolderSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="FolderPicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row, box-row-switch">
|
<StackLayout StyleClass="box-row, box-row-switch">
|
||||||
<Label
|
<Label
|
||||||
@@ -714,8 +671,7 @@
|
|||||||
<Switch
|
<Switch
|
||||||
IsToggled="{Binding Cipher.Favorite}"
|
IsToggled="{Binding Cipher.Favorite}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End" />
|
||||||
AutomationId="ItemFavoriteToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout x:Name="_passwordPrompt" StyleClass="box-row, box-row-switch">
|
<StackLayout x:Name="_passwordPrompt" StyleClass="box-row, box-row-switch">
|
||||||
<Label
|
<Label
|
||||||
@@ -733,8 +689,7 @@
|
|||||||
IsToggled="{Binding PasswordPrompt}"
|
IsToggled="{Binding PasswordPrompt}"
|
||||||
Toggled="PasswordPrompt_Toggled"
|
Toggled="PasswordPrompt_Toggled"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End" />
|
||||||
AutomationId="MasterPasswordRepromptToggle" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
@@ -751,8 +706,7 @@
|
|||||||
effects:ScrollEnabledEffect.IsScrollEnabled="false"
|
effects:ScrollEnabledEffect.IsScrollEnabled="false"
|
||||||
Text="{Binding Cipher.Notes}"
|
Text="{Binding Cipher.Notes}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Notes}"
|
AutomationProperties.Name="{u:I18n Notes}" >
|
||||||
AutomationId="ItemNotesEntry">
|
|
||||||
<Editor.Behaviors>
|
<Editor.Behaviors>
|
||||||
<behaviors:EditorPreventAutoBottomScrollingOnFocusedBehavior ParentScrollView="{x:Reference _scrollView}" />
|
<behaviors:EditorPreventAutoBottomScrollingOnFocusedBehavior ParentScrollView="{x:Reference _scrollView}" />
|
||||||
</Editor.Behaviors>
|
</Editor.Behaviors>
|
||||||
@@ -771,11 +725,9 @@
|
|||||||
<StackLayout
|
<StackLayout
|
||||||
Spacing="0"
|
Spacing="0"
|
||||||
BindableLayout.ItemsSource="{Binding Fields}"
|
BindableLayout.ItemsSource="{Binding Fields}"
|
||||||
BindableLayout.ItemTemplateSelector="{StaticResource CustomFieldItemTemplateSelector}"
|
BindableLayout.ItemTemplateSelector="{StaticResource CustomFieldItemTemplateSelector}" />
|
||||||
AutomationId="CustomFieldsList" />
|
|
||||||
<Button Text="{u:I18n NewCustomField}" StyleClass="box-button-row"
|
<Button Text="{u:I18n NewCustomField}" StyleClass="box-button-row"
|
||||||
Clicked="NewField_Clicked"
|
Clicked="NewField_Clicked"></Button>
|
||||||
AutomationId="NewCustomFieldButton"></Button>
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box" IsVisible="{Binding ShowOwnershipOptions}">
|
<StackLayout StyleClass="box" IsVisible="{Binding ShowOwnershipOptions}">
|
||||||
<StackLayout StyleClass="box-row-header">
|
<StackLayout StyleClass="box-row-header">
|
||||||
@@ -790,8 +742,7 @@
|
|||||||
x:Name="_ownershipPicker"
|
x:Name="_ownershipPicker"
|
||||||
ItemsSource="{Binding OwnershipOptions, Mode=OneTime}"
|
ItemsSource="{Binding OwnershipOptions, Mode=OneTime}"
|
||||||
SelectedIndex="{Binding OwnershipSelectedIndex}"
|
SelectedIndex="{Binding OwnershipSelectedIndex}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemOwnershipPicker" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box" IsVisible="{Binding ShowCollections}">
|
<StackLayout StyleClass="box" IsVisible="{Binding ShowCollections}">
|
||||||
@@ -802,8 +753,7 @@
|
|||||||
<StackLayout Spacing="0" Padding="0"
|
<StackLayout Spacing="0" Padding="0"
|
||||||
IsVisible="{Binding HasCollections, Converter={StaticResource inverseBool}}">
|
IsVisible="{Binding HasCollections, Converter={StaticResource inverseBool}}">
|
||||||
<StackLayout StyleClass="box-row, box-row-switch">
|
<StackLayout StyleClass="box-row, box-row-switch">
|
||||||
<Label Text="{u:I18n NoCollectionsToList}"
|
<Label Text="{u:I18n NoCollectionsToList}" />
|
||||||
AutomationId="NoCollectionsToListLabel" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
@@ -813,17 +763,15 @@
|
|||||||
<controls:RepeaterView.ItemTemplate>
|
<controls:RepeaterView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="pages:CollectionViewModel">
|
<DataTemplate x:DataType="pages:CollectionViewModel">
|
||||||
<StackLayout Spacing="0" Padding="0">
|
<StackLayout Spacing="0" Padding="0">
|
||||||
<StackLayout StyleClass="box-row, box-row-switch" AutomationId="CollectionItemCell">
|
<StackLayout StyleClass="box-row, box-row-switch">
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Collection.Name}"
|
Text="{Binding Collection.Name}"
|
||||||
StyleClass="box-label-regular"
|
StyleClass="box-label-regular"
|
||||||
HorizontalOptions="StartAndExpand"
|
HorizontalOptions="StartAndExpand" />
|
||||||
AutomationId="CollectionItemNameLabel" />
|
|
||||||
<Switch
|
<Switch
|
||||||
IsToggled="{Binding Checked}"
|
IsToggled="{Binding Checked}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"/>
|
||||||
AutomationId="CollectionItemSwitch" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
@@ -833,4 +781,5 @@
|
|||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
</pages:BaseContentPage>
|
</pages:BaseContentPage>
|
||||||
|
|||||||
@@ -49,16 +49,16 @@
|
|||||||
x:Name="_cloneItem" x:Key="cloneItem" />
|
x:Name="_cloneItem" x:Key="cloneItem" />
|
||||||
|
|
||||||
<DataTemplate x:Key="TextCustomFieldDataTemplate">
|
<DataTemplate x:Key="TextCustomFieldDataTemplate">
|
||||||
<il:TextCustomFieldItemLayout AutomationId="TextCustomFieldItem" />
|
<il:TextCustomFieldItemLayout />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate x:Key="BooleanCustomFieldDataTemplate">
|
<DataTemplate x:Key="BooleanCustomFieldDataTemplate">
|
||||||
<il:BooleanCustomFieldItemLayout AutomationId="BooleanCustomFieldItem" />
|
<il:BooleanCustomFieldItemLayout />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate x:Key="HiddenCustomFieldDataTemplate">
|
<DataTemplate x:Key="HiddenCustomFieldDataTemplate">
|
||||||
<il:HiddenCustomFieldItemLayout AutomationId="HiddenCustomFieldItem" />
|
<il:HiddenCustomFieldItemLayout />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<DataTemplate x:Key="LinkedCustomFieldDataTemplate">
|
<DataTemplate x:Key="LinkedCustomFieldDataTemplate">
|
||||||
<il:LinkedCustomFieldItemLayout AutomationId="LinkedCustomFieldItem" />
|
<il:LinkedCustomFieldItemLayout />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<dts:CustomFieldItemTemplateSelector x:Key="CustomFieldItemTemplateSelector"
|
<dts:CustomFieldItemTemplateSelector x:Key="CustomFieldItemTemplateSelector"
|
||||||
@@ -69,26 +69,23 @@
|
|||||||
|
|
||||||
<ScrollView x:Key="scrollView" x:Name="_scrollView">
|
<ScrollView x:Key="scrollView" x:Name="_scrollView">
|
||||||
<StackLayout Spacing="20" x:Name="_mainLayout">
|
<StackLayout Spacing="20" x:Name="_mainLayout">
|
||||||
<StackLayout StyleClass="box" AutomationId="ItemInformationSection">
|
<StackLayout StyleClass="box">
|
||||||
<StackLayout StyleClass="box-row-header">
|
<StackLayout StyleClass="box-row-header">
|
||||||
<Label Text="{u:I18n ItemInformation, Header=True}"
|
<Label Text="{u:I18n ItemInformation, Header=True}"
|
||||||
StyleClass="box-header, box-header-platform" />
|
StyleClass="box-header, box-header-platform" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row" AutomationId="ItemRow">
|
<StackLayout StyleClass="box-row">
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n Name}"
|
Text="{u:I18n Name}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Name, Mode=OneWay}"
|
Text="{Binding Cipher.Name, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
<StackLayout IsVisible="{Binding IsLogin}" Spacing="0" Padding="0">
|
<StackLayout IsVisible="{Binding IsLogin}" Spacing="0" Padding="0">
|
||||||
<Grid StyleClass="box-row"
|
<Grid StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Login.Username, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Login.Username, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
@@ -101,14 +98,12 @@
|
|||||||
Text="{u:I18n Username}"
|
Text="{u:I18n Username}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Login.Username, Mode=OneWay}"
|
Text="{Binding Cipher.Login.Username, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
@@ -118,14 +113,12 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CopyUsername}"
|
AutomationProperties.Name="{u:I18n CopyUsername}" />
|
||||||
AutomationId="CopyValueButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Login.Username, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Login.Username, Converter={StaticResource stringHasValue}}" />
|
||||||
<Grid StyleClass="box-row"
|
<Grid StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Login.Password, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Login.Password, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
@@ -140,23 +133,20 @@
|
|||||||
Text="{u:I18n Password}"
|
Text="{u:I18n Password}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
Text="{Binding Cipher.Login.MaskedPassword, Mode=OneWay}"
|
Text="{Binding Cipher.Login.MaskedPassword, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
IsVisible="{Binding ShowPassword, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding ShowPassword, Converter={StaticResource inverseBool}}" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
Text="{Binding ColoredPassword, Mode=OneWay}"
|
Text="{Binding ColoredPassword, Mode=OneWay}"
|
||||||
StyleClass="box-value, text-html"
|
StyleClass="box-value, text-html"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
LineBreakMode="CharacterWrap"
|
LineBreakMode="CharacterWrap"
|
||||||
IsVisible="{Binding ShowPassword}"
|
IsVisible="{Binding ShowPassword}" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.CheckCircle}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.CheckCircle}}"
|
||||||
@@ -166,8 +156,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CheckPassword}"
|
AutomationProperties.Name="{u:I18n CheckPassword}"
|
||||||
IsVisible="{Binding Cipher.ViewPassword}"
|
IsVisible="{Binding Cipher.ViewPassword}" />
|
||||||
AutomationId="CheckPasswordButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowPasswordIcon}"
|
Text="{Binding ShowPasswordIcon}"
|
||||||
@@ -178,8 +167,7 @@
|
|||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
||||||
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
AutomationProperties.HelpText="{Binding PasswordVisibilityAccessibilityText}"
|
||||||
IsVisible="{Binding Cipher.ViewPassword}"
|
IsVisible="{Binding Cipher.ViewPassword}" />
|
||||||
AutomationId="ViewValueButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
@@ -190,14 +178,11 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CopyPassword}"
|
AutomationProperties.Name="{u:I18n CopyPassword}"
|
||||||
IsVisible="{Binding Cipher.ViewPassword}"
|
IsVisible="{Binding Cipher.ViewPassword}" />
|
||||||
AutomationId="CopyValueButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Login.Password, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Login.Password, Converter={StaticResource stringHasValue}}" />
|
||||||
<Grid StyleClass="box-row"
|
<Grid StyleClass="box-row" IsVisible="{Binding ShowTotp}">
|
||||||
IsVisible="{Binding ShowTotp}"
|
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
@@ -212,8 +197,7 @@
|
|||||||
Text="{u:I18n VerificationCodeTotp}"
|
Text="{u:I18n VerificationCodeTotp}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
Text="{Binding TotpCodeFormatted, Mode=OneWay}"
|
Text="{Binding TotpCodeFormatted, Mode=OneWay}"
|
||||||
IsVisible="{Binding ShowUpgradePremiumTotpText, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding ShowUpgradePremiumTotpText, Converter={StaticResource inverseBool}}"
|
||||||
@@ -221,16 +205,14 @@
|
|||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
VerticalTextAlignment="Start"
|
VerticalTextAlignment="Start"
|
||||||
VerticalOptions="Start"
|
VerticalOptions="Start" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
<controls:CircularProgressbarView
|
<controls:CircularProgressbarView
|
||||||
Progress="{Binding TotpProgress}"
|
Progress="{Binding TotpProgress}"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
VerticalOptions="FillAndExpand"
|
VerticalOptions="FillAndExpand" />
|
||||||
AutomationId="LoginTotpProgressBar" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding TotpSec, Mode=OneWay}"
|
Text="{Binding TotpSec, Mode=OneWay}"
|
||||||
Style="{DynamicResource textTotp}"
|
Style="{DynamicResource textTotp}"
|
||||||
@@ -252,8 +234,7 @@
|
|||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CopyTotp}"
|
AutomationProperties.Name="{u:I18n CopyTotp}" />
|
||||||
AutomationId="CopyValueButton" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n PremiumSubscriptionRequired}"
|
Text="{u:I18n PremiumSubscriptionRequired}"
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label"
|
||||||
@@ -261,29 +242,24 @@
|
|||||||
Margin="0,5,0,2"
|
Margin="0,5,0,2"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand" />
|
||||||
AutomationId="ShowUpgradePremiumTotpLabel" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView StyleClass="box-row-separator" IsVisible="{Binding ShowTotp}" />
|
<BoxView StyleClass="box-row-separator" IsVisible="{Binding ShowTotp}" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsCard}" Spacing="0" Padding="0">
|
<StackLayout IsVisible="{Binding IsCard}" Spacing="0" Padding="0">
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Card.CardholderName, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Card.CardholderName, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n CardholderName}"
|
Text="{u:I18n CardholderName}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Card.CardholderName, Mode=OneWay}"
|
Text="{Binding Cipher.Card.CardholderName, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Card.CardholderName, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Card.CardholderName, Converter={StaticResource stringHasValue}}" />
|
||||||
<Grid StyleClass="box-row"
|
<Grid StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Card.Number, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Card.Number, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
@@ -297,22 +273,19 @@
|
|||||||
Text="{u:I18n Number}"
|
Text="{u:I18n Number}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
Text="{Binding Cipher.Card.MaskedNumber, Mode=OneWay}"
|
Text="{Binding Cipher.Card.MaskedNumber, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
IsVisible="{Binding ShowCardNumber, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding ShowCardNumber, Converter={StaticResource inverseBool}}" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
Text="{Binding Cipher.Card.Number, Mode=OneWay}"
|
Text="{Binding Cipher.Card.Number, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
IsVisible="{Binding ShowCardNumber}"
|
IsVisible="{Binding ShowCardNumber}" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowCardNumberIcon}"
|
Text="{Binding ShowCardNumberIcon}"
|
||||||
@@ -321,8 +294,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}" />
|
||||||
AutomationId="ShowValueButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
@@ -332,42 +304,34 @@
|
|||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CopyNumber}"
|
AutomationProperties.Name="{u:I18n CopyNumber}" />
|
||||||
AutomationId="CopyValueButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Card.Number, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Card.Number, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Card.Brand, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Card.Brand, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n Brand}"
|
Text="{u:I18n Brand}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Card.Brand, Mode=OneWay}"
|
Text="{Binding Cipher.Card.Brand, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Card.Brand, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Card.Brand, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Card.Expiration, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Card.Expiration, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n Expiration}"
|
Text="{u:I18n Expiration}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Card.Expiration, Mode=OneWay}"
|
Text="{Binding Cipher.Card.Expiration, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Card.Expiration, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Card.Expiration, Converter={StaticResource stringHasValue}}" />
|
||||||
<Grid StyleClass="box-row"
|
<Grid StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Card.Code, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Card.Code, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
@@ -381,22 +345,19 @@
|
|||||||
Text="{u:I18n SecurityCode}"
|
Text="{u:I18n SecurityCode}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label"
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
Text="{Binding Cipher.Card.MaskedCode, Mode=OneWay}"
|
Text="{Binding Cipher.Card.MaskedCode, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
IsVisible="{Binding ShowCardCode, Converter={StaticResource inverseBool}}"
|
IsVisible="{Binding ShowCardCode, Converter={StaticResource inverseBool}}" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
<controls:MonoLabel
|
<controls:MonoLabel
|
||||||
Text="{Binding Cipher.Card.Code, Mode=OneWay}"
|
Text="{Binding Cipher.Card.Code, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
IsVisible="{Binding ShowCardCode}"
|
IsVisible="{Binding ShowCardCode}" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding ShowCardCodeIcon}"
|
Text="{Binding ShowCardCodeIcon}"
|
||||||
@@ -405,8 +366,7 @@
|
|||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n ToggleVisibility}"
|
AutomationProperties.Name="{u:I18n ToggleVisibility}" />
|
||||||
AutomationId="ShowValueButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
@@ -416,156 +376,124 @@
|
|||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n CopySecurityCode}"
|
AutomationProperties.Name="{u:I18n CopySecurityCode}" />
|
||||||
AutomationId="CopyValueButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Card.Code, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Card.Code, Converter={StaticResource stringHasValue}}" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout IsVisible="{Binding IsIdentity}" Spacing="0" Padding="0">
|
<StackLayout IsVisible="{Binding IsIdentity}" Spacing="0" Padding="0">
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Identity.FullName, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.FullName, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n IdentityName}"
|
Text="{u:I18n IdentityName}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.FullName, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.FullName, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Identity.FullName, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Identity.FullName, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Identity.Username, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.Username, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n Username}"
|
Text="{u:I18n Username}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.Username, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.Username, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Identity.Username, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Identity.Username, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Identity.Company, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.Company, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n Company}"
|
Text="{u:I18n Company}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.Company, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.Company, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Identity.Company, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Identity.Company, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Identity.SSN, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.SSN, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n SSN}"
|
Text="{u:I18n SSN}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.SSN, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.SSN, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Identity.SSN, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Identity.SSN, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Identity.PassportNumber, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.PassportNumber, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n PassportNumber}"
|
Text="{u:I18n PassportNumber}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.PassportNumber, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.PassportNumber, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Identity.PassportNumber, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Identity.PassportNumber, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Identity.LicenseNumber, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.LicenseNumber, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n LicenseNumber}"
|
Text="{u:I18n LicenseNumber}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.LicenseNumber, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.LicenseNumber, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Identity.LicenseNumber, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Identity.LicenseNumber, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Identity.Email, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.Email, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n Email}"
|
Text="{u:I18n Email}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.Email, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.Email, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Identity.Email, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Identity.Email, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row"
|
<StackLayout StyleClass="box-row"
|
||||||
IsVisible="{Binding Cipher.Identity.Phone, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.Phone, Converter={StaticResource stringHasValue}}">
|
||||||
AutomationId="ItemRow" >
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n Phone}"
|
Text="{u:I18n Phone}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.Phone, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.Phone, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="ItemValue" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator"
|
<BoxView StyleClass="box-row-separator"
|
||||||
IsVisible="{Binding Cipher.Identity.Phone, Converter={StaticResource stringHasValue}}" />
|
IsVisible="{Binding Cipher.Identity.Phone, Converter={StaticResource stringHasValue}}" />
|
||||||
<StackLayout StyleClass="box-row" IsVisible="{Binding ShowIdentityAddress}"
|
<StackLayout StyleClass="box-row" IsVisible="{Binding ShowIdentityAddress}">
|
||||||
AutomationId="ItemRow">
|
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n Address}"
|
Text="{u:I18n Address}"
|
||||||
StyleClass="box-label"
|
StyleClass="box-label" />
|
||||||
AutomationId="ItemName" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.Address1, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.Address1, Mode=OneWay}"
|
||||||
IsVisible="{Binding Cipher.Identity.Address1, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.Address1, Converter={StaticResource stringHasValue}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="IdentityAddressOneLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.Address2, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.Address2, Mode=OneWay}"
|
||||||
IsVisible="{Binding Cipher.Identity.Address2, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.Address2, Converter={StaticResource stringHasValue}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="IdentityAddressTwoLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.Address3, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.Address3, Mode=OneWay}"
|
||||||
IsVisible="{Binding Cipher.Identity.Address3, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.Address3, Converter={StaticResource stringHasValue}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="IdentityAddressThreeLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.FullAddressPart2, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.FullAddressPart2, Mode=OneWay}"
|
||||||
IsVisible="{Binding Cipher.Identity.FullAddressPart2, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.FullAddressPart2, Converter={StaticResource stringHasValue}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="IdentityFullAddressPartTwoLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding Cipher.Identity.Country, Mode=OneWay}"
|
Text="{Binding Cipher.Identity.Country, Mode=OneWay}"
|
||||||
IsVisible="{Binding Cipher.Identity.Country, Converter={StaticResource stringHasValue}}"
|
IsVisible="{Binding Cipher.Identity.Country, Converter={StaticResource stringHasValue}}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="IdentityCountryLabel" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" IsVisible="{Binding ShowIdentityAddress}" />
|
<BoxView StyleClass="box-row-separator" IsVisible="{Binding ShowIdentityAddress}" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
@@ -575,11 +503,11 @@
|
|||||||
<Label Text="{u:I18n URIs, Header=True}"
|
<Label Text="{u:I18n URIs, Header=True}"
|
||||||
StyleClass="box-header, box-header-platform" />
|
StyleClass="box-header, box-header-platform" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<controls:RepeaterView ItemsSource="{Binding Cipher.Login.Uris}" AutomationId="CipherUriContainer">
|
<controls:RepeaterView ItemsSource="{Binding Cipher.Login.Uris}">
|
||||||
<controls:RepeaterView.ItemTemplate>
|
<controls:RepeaterView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="views:LoginUriView">
|
<DataTemplate x:DataType="views:LoginUriView">
|
||||||
<StackLayout Spacing="0" Padding="0">
|
<StackLayout Spacing="0" Padding="0">
|
||||||
<Grid StyleClass="box-row" AutomationId="UriRow">
|
<Grid StyleClass="box-row">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
@@ -605,8 +533,7 @@
|
|||||||
Text="{Binding HostOrUri, Mode=OneWay}"
|
Text="{Binding HostOrUri, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0" />
|
||||||
AutomationId="UriValue" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.ShareSquare}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.ShareSquare}}"
|
||||||
@@ -617,8 +544,7 @@
|
|||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
IsVisible="{Binding CanLaunch, Mode=OneWay}"
|
IsVisible="{Binding CanLaunch, Mode=OneWay}"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Launch}"
|
AutomationProperties.Name="{u:I18n Launch}" />
|
||||||
AutomationId="LaunchUriButton" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Clone}}"
|
||||||
@@ -628,8 +554,7 @@
|
|||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
Grid.RowSpan="2"
|
Grid.RowSpan="2"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Copy}"
|
AutomationProperties.Name="{u:I18n Copy}" />
|
||||||
AutomationId="CopyUriButton" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
@@ -643,15 +568,14 @@
|
|||||||
<Label Text="{u:I18n Notes, Header=True}"
|
<Label Text="{u:I18n Notes, Header=True}"
|
||||||
StyleClass="box-header, box-header-platform" />
|
StyleClass="box-header, box-header-platform" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-row" AutomationId="NotesRow">
|
<StackLayout StyleClass="box-row">
|
||||||
<controls:SelectableLabel
|
<controls:SelectableLabel
|
||||||
Text="{Binding Cipher.Notes, Mode=OneWay}"
|
Text="{Binding Cipher.Notes, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value" />
|
||||||
AutomationId="CipherNotesLabel" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box" IsVisible="{Binding Cipher.HasFields}" AutomationId="CustomFieldsContainer">
|
<StackLayout StyleClass="box" IsVisible="{Binding Cipher.HasFields}">
|
||||||
<StackLayout StyleClass="box-row-header">
|
<StackLayout StyleClass="box-row-header">
|
||||||
<Label Text="{u:I18n CustomFields, Header=True}"
|
<Label Text="{u:I18n CustomFields, Header=True}"
|
||||||
StyleClass="box-header, box-header-platform" />
|
StyleClass="box-header, box-header-platform" />
|
||||||
@@ -666,23 +590,21 @@
|
|||||||
<Label Text="{u:I18n Attachments, Header=True}"
|
<Label Text="{u:I18n Attachments, Header=True}"
|
||||||
StyleClass="box-header, box-header-platform" />
|
StyleClass="box-header, box-header-platform" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<controls:RepeaterView ItemsSource="{Binding Cipher.Attachments}" AutomationId="CipherAttachmentsContainer">
|
<controls:RepeaterView ItemsSource="{Binding Cipher.Attachments}">
|
||||||
<controls:RepeaterView.ItemTemplate>
|
<controls:RepeaterView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="views:AttachmentView">
|
<DataTemplate x:DataType="views:AttachmentView">
|
||||||
<StackLayout Spacing="0" Padding="0">
|
<StackLayout Spacing="0" Padding="0">
|
||||||
<StackLayout Orientation="Horizontal" StyleClass="box-row" Spacing="10" AutomationId="CipherAttachment">
|
<StackLayout Orientation="Horizontal" StyleClass="box-row" Spacing="10">
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding FileName, Mode=OneWay}"
|
Text="{Binding FileName, Mode=OneWay}"
|
||||||
StyleClass="box-value"
|
StyleClass="box-value"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center"
|
||||||
HorizontalOptions="StartAndExpand"
|
HorizontalOptions="StartAndExpand" />
|
||||||
AutomationId="CipherAttachmentFileNameLabel" />
|
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding SizeName, Mode=OneWay}"
|
Text="{Binding SizeName, Mode=OneWay}"
|
||||||
StyleClass="box-sub-label"
|
StyleClass="box-sub-label"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
VerticalTextAlignment="Center"
|
VerticalTextAlignment="Center" />
|
||||||
AutomationId="CipherAttachmentFileSizeLabel" />
|
|
||||||
<controls:IconButton
|
<controls:IconButton
|
||||||
StyleClass="box-row-button, box-row-button-platform"
|
StyleClass="box-row-button, box-row-button-platform"
|
||||||
Text="{Binding Source={x:Static core:BitwardenIcons.Download}}"
|
Text="{Binding Source={x:Static core:BitwardenIcons.Download}}"
|
||||||
@@ -690,8 +612,7 @@
|
|||||||
CommandParameter="{Binding .}"
|
CommandParameter="{Binding .}"
|
||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Download}"
|
AutomationProperties.Name="{u:I18n Download}" />
|
||||||
AutomationId="CipherAttachmentDownloadButton" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="box-row-separator" />
|
<BoxView StyleClass="box-row-separator" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
@@ -701,20 +622,17 @@
|
|||||||
</StackLayout>
|
</StackLayout>
|
||||||
<StackLayout StyleClass="box-bottom">
|
<StackLayout StyleClass="box-bottom">
|
||||||
<Label FormattedText="{Binding UpdatedText}"
|
<Label FormattedText="{Binding UpdatedText}"
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label" />
|
||||||
AutomationId="CipherUpdatedDateLabel" />
|
|
||||||
<Label FormattedText="{Binding PasswordUpdatedText}"
|
<Label FormattedText="{Binding PasswordUpdatedText}"
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label"
|
||||||
IsVisible="{Binding Cipher.PasswordRevisionDisplayDate, Converter={StaticResource notNull}}"
|
IsVisible="{Binding Cipher.PasswordRevisionDisplayDate, Converter={StaticResource notNull}}">
|
||||||
AutomationId="CipherUpdatedPasswordDateLabel">
|
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
<TapGestureRecognizer Tapped="PasswordHistory_Tapped" />
|
<TapGestureRecognizer Tapped="PasswordHistory_Tapped" />
|
||||||
</Label.GestureRecognizers>
|
</Label.GestureRecognizers>
|
||||||
</Label>
|
</Label>
|
||||||
<Label FormattedText="{Binding PasswordHistoryText}"
|
<Label FormattedText="{Binding PasswordHistoryText}"
|
||||||
StyleClass="box-footer-label"
|
StyleClass="box-footer-label"
|
||||||
IsVisible="{Binding Cipher.HasPasswordHistory}"
|
IsVisible="{Binding Cipher.HasPasswordHistory}">
|
||||||
AutomationId="CipherPasswordHistoryLabel">
|
|
||||||
<Label.GestureRecognizers>
|
<Label.GestureRecognizers>
|
||||||
<TapGestureRecognizer Tapped="PasswordHistory_Tapped" />
|
<TapGestureRecognizer Tapped="PasswordHistory_Tapped" />
|
||||||
</Label.GestureRecognizers>
|
</Label.GestureRecognizers>
|
||||||
@@ -744,7 +662,6 @@
|
|||||||
AbsoluteLayout.LayoutBounds="1, 1, AutoSize, AutoSize"
|
AbsoluteLayout.LayoutBounds="1, 1, AutoSize, AutoSize"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n EditItem}"
|
AutomationProperties.Name="{u:I18n EditItem}"
|
||||||
AutomationId="CipherEditButton"
|
|
||||||
IsVisible="{Binding CanEdit}">
|
IsVisible="{Binding CanEdit}">
|
||||||
<Button.Effects>
|
<Button.Effects>
|
||||||
<effects:FabShadowEffect />
|
<effects:FabShadowEffect />
|
||||||
|
|||||||
@@ -19,8 +19,7 @@
|
|||||||
Priority="-1"
|
Priority="-1"
|
||||||
UseOriginalImage="True"
|
UseOriginalImage="True"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Account}"
|
AutomationProperties.Name="{u:I18n Account}" />
|
||||||
AutomationId="AccountIconButton" />
|
|
||||||
<ToolbarItem IconImageSource="search.png" Clicked="Search_Clicked"
|
<ToolbarItem IconImageSource="search.png" Clicked="Search_Clicked"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Search}" />
|
AutomationProperties.Name="{u:I18n Search}" />
|
||||||
|
|||||||
@@ -41,8 +41,7 @@
|
|||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
TextChanged="SearchBar_TextChanged"
|
TextChanged="SearchBar_TextChanged"
|
||||||
SearchButtonPressed="SearchBar_SearchButtonPressed"
|
SearchButtonPressed="SearchBar_SearchButtonPressed"
|
||||||
Placeholder="{Binding PageTitle}"
|
Placeholder="{Binding PageTitle}" />
|
||||||
AutomationId="SearchBar" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="list-section-separator-bottom, list-section-separator-bottom-platform"
|
<BoxView StyleClass="list-section-separator-bottom, list-section-separator-bottom-platform"
|
||||||
x:Name="_separator" x:Key="separator" />
|
x:Name="_separator" x:Key="separator" />
|
||||||
@@ -92,8 +91,7 @@
|
|||||||
Source="empty_items_state" />
|
Source="empty_items_state" />
|
||||||
<Label
|
<Label
|
||||||
Text="{u:I18n ThereAreNoItemsThatMatchTheSearch}"
|
Text="{u:I18n ThereAreNoItemsThatMatchTheSearch}"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center" />
|
||||||
AutomationId="NoSearchResultsLabel" />
|
|
||||||
<Button
|
<Button
|
||||||
Text="{u:I18n AddAnItem}"
|
Text="{u:I18n AddAnItem}"
|
||||||
Command="{Binding AddCipherCommand}"
|
Command="{Binding AddCipherCommand}"
|
||||||
@@ -106,8 +104,7 @@
|
|||||||
SelectionMode="Single"
|
SelectionMode="Single"
|
||||||
SelectionChanged="RowSelected"
|
SelectionChanged="RowSelected"
|
||||||
StyleClass="list, list-platform"
|
StyleClass="list, list-platform"
|
||||||
ExtraDataForLogging="Ciphers Page"
|
ExtraDataForLogging="Ciphers Page">
|
||||||
AutomationId="CipherList">
|
|
||||||
<CollectionView.ItemTemplate>
|
<CollectionView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="views:CipherView">
|
<DataTemplate x:DataType="views:CipherView">
|
||||||
<controls:CipherViewCell
|
<controls:CipherViewCell
|
||||||
|
|||||||
@@ -25,8 +25,7 @@
|
|||||||
Priority="-1"
|
Priority="-1"
|
||||||
UseOriginalImage="True"
|
UseOriginalImage="True"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Account}"
|
AutomationProperties.Name="{u:I18n Account}" />
|
||||||
AutomationId="AccountIconButton" />
|
|
||||||
<ToolbarItem Icon="search.png" Clicked="Search_Clicked"
|
<ToolbarItem Icon="search.png" Clicked="Search_Clicked"
|
||||||
AutomationProperties.IsInAccessibleTree="True"
|
AutomationProperties.IsInAccessibleTree="True"
|
||||||
AutomationProperties.Name="{u:I18n Search}" />
|
AutomationProperties.Name="{u:I18n Search}" />
|
||||||
@@ -60,14 +59,13 @@
|
|||||||
<controls:AuthenticatorViewCell
|
<controls:AuthenticatorViewCell
|
||||||
Cipher="{Binding Cipher}"
|
Cipher="{Binding Cipher}"
|
||||||
WebsiteIconsEnabled="{Binding BindingContext.WebsiteIconsEnabled, Source={x:Reference _page}}"
|
WebsiteIconsEnabled="{Binding BindingContext.WebsiteIconsEnabled, Source={x:Reference _page}}"
|
||||||
TotpSec="{Binding TotpSec}" />
|
TotpSec="{Binding TotpSec}"/>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<DataTemplate x:Key="groupTemplate"
|
<DataTemplate x:Key="groupTemplate"
|
||||||
x:DataType="pages:GroupingsPageListItem">
|
x:DataType="pages:GroupingsPageListItem">
|
||||||
<controls:ExtendedStackLayout Orientation="Horizontal"
|
<controls:ExtendedStackLayout Orientation="Horizontal"
|
||||||
StyleClass="list-row, list-row-platform"
|
StyleClass="list-row, list-row-platform">
|
||||||
AutomationId="{Binding AutomationId}">
|
|
||||||
<controls:IconLabel Text="{Binding Icon, Mode=OneWay}"
|
<controls:IconLabel Text="{Binding Icon, Mode=OneWay}"
|
||||||
HorizontalOptions="Start"
|
HorizontalOptions="Start"
|
||||||
VerticalOptions="Center"
|
VerticalOptions="Center"
|
||||||
@@ -81,14 +79,12 @@
|
|||||||
LineBreakMode="TailTruncation"
|
LineBreakMode="TailTruncation"
|
||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
StyleClass="list-title"
|
StyleClass="list-title"/>
|
||||||
AutomationId="ItemNameLabel" />
|
|
||||||
<Label Text="{Binding ItemCount, Mode=OneWay}"
|
<Label Text="{Binding ItemCount, Mode=OneWay}"
|
||||||
HorizontalOptions="End"
|
HorizontalOptions="End"
|
||||||
VerticalOptions="CenterAndExpand"
|
VerticalOptions="CenterAndExpand"
|
||||||
HorizontalTextAlignment="End"
|
HorizontalTextAlignment="End"
|
||||||
StyleClass="list-sub"
|
StyleClass="list-sub"/>
|
||||||
AutomationId="ItemCountLabel" />
|
|
||||||
</controls:ExtendedStackLayout>
|
</controls:ExtendedStackLayout>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
@@ -99,8 +95,7 @@
|
|||||||
Spacing="0"
|
Spacing="0"
|
||||||
Padding="0"
|
Padding="0"
|
||||||
VerticalOptions="FillAndExpand"
|
VerticalOptions="FillAndExpand"
|
||||||
StyleClass="list-row-header-container, list-row-header-container-platform"
|
StyleClass="list-row-header-container, list-row-header-container-platform">
|
||||||
AutomationId="{Binding AutomationId}">
|
|
||||||
<BoxView
|
<BoxView
|
||||||
StyleClass="list-section-separator-top, list-section-separator-top-platform" />
|
StyleClass="list-section-separator-top, list-section-separator-top-platform" />
|
||||||
<StackLayout StyleClass="list-row-header, list-row-header-platform">
|
<StackLayout StyleClass="list-row-header, list-row-header-platform">
|
||||||
@@ -109,8 +104,7 @@
|
|||||||
StyleClass="list-header, list-header-platform" />
|
StyleClass="list-header, list-header-platform" />
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding ItemCount}"
|
Text="{Binding ItemCount}"
|
||||||
StyleClass="list-header-sub"
|
StyleClass="list-header-sub" />
|
||||||
AutomationId="SectionItemCount" />
|
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<BoxView StyleClass="list-section-separator-bottom, list-section-separator-bottom-platform" />
|
<BoxView StyleClass="list-section-separator-bottom, list-section-separator-bottom-platform" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
@@ -153,8 +147,7 @@
|
|||||||
IsVisible="{Binding ShowNoData}">
|
IsVisible="{Binding ShowNoData}">
|
||||||
<Label
|
<Label
|
||||||
Text="{Binding NoDataText}"
|
Text="{Binding NoDataText}"
|
||||||
HorizontalTextAlignment="Center"
|
HorizontalTextAlignment="Center"></Label>
|
||||||
AutomationId="NoDataDisplayed"></Label>
|
|
||||||
<Button
|
<Button
|
||||||
Text="{u:I18n AddAnItem}"
|
Text="{u:I18n AddAnItem}"
|
||||||
Clicked="AddButton_Clicked"
|
Clicked="AddButton_Clicked"
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
using Bit.App.Utilities.Automation;
|
namespace Bit.App.Pages
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
|
||||||
{
|
{
|
||||||
public class GroupingsPageHeaderListItem : IGroupingsPageListItem
|
public class GroupingsPageHeaderListItem : IGroupingsPageListItem
|
||||||
{
|
{
|
||||||
@@ -12,12 +10,5 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
public string Title { get; }
|
public string Title { get; }
|
||||||
public string ItemCount { get; set; }
|
public string ItemCount { get; set; }
|
||||||
public string AutomationId
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return AutomationIdsHelper.AddSuffixFor(AutomationIdsHelper.ToEnglishTitleCase(Title), SuffixType.Header);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Bit.App.Utilities.Automation;
|
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
@@ -33,6 +32,5 @@ namespace Bit.App.Pages
|
|||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string NameShort => string.IsNullOrWhiteSpace(Name) || Name.Length == 0 ? "-" : Name[0].ToString();
|
public string NameShort => string.IsNullOrWhiteSpace(Name) || Name.Length == 0 ? "-" : Name[0].ToString();
|
||||||
public string ItemCount { get; set; }
|
public string ItemCount { get; set; }
|
||||||
public string AutomationId => AutomationIdsHelper.AddSuffixFor(NameShort, SuffixType.ListGroup);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using Bit.App.Resources;
|
using Bit.App.Resources;
|
||||||
using Bit.App.Utilities.Automation;
|
|
||||||
using Bit.Core;
|
using Bit.Core;
|
||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Models.View;
|
using Bit.Core.Models.View;
|
||||||
@@ -116,38 +115,5 @@ namespace Bit.App.Pages
|
|||||||
return _icon;
|
return _icon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string AutomationId
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (Type != null)
|
|
||||||
{
|
|
||||||
return AutomationIdsHelper.AddSuffixFor(System.Enum.GetName(typeof(CipherType), Type.Value), SuffixType.Filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsTrash)
|
|
||||||
{
|
|
||||||
return AutomationIdsHelper.AddSuffixFor("Trash", SuffixType.Filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Folder != null)
|
|
||||||
{
|
|
||||||
return AutomationIdsHelper.AddSuffixFor("Folder", SuffixType.Filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Collection != null)
|
|
||||||
{
|
|
||||||
return AutomationIdsHelper.AddSuffixFor("Collection", SuffixType.Filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsTotpCode)
|
|
||||||
{
|
|
||||||
return AutomationIdsHelper.AddSuffixFor("TOTP", SuffixType.ListItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
29
src/App/Resources/AppResources.Designer.cs
generated
29
src/App/Resources/AppResources.Designer.cs
generated
@@ -3262,24 +3262,6 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Invalid API key.
|
|
||||||
/// </summary>
|
|
||||||
public static string InvalidAPIKey {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("InvalidAPIKey", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Invalid API token.
|
|
||||||
/// </summary>
|
|
||||||
public static string InvalidAPIToken {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("InvalidAPIToken", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Invalid email address..
|
/// Looks up a localized string similar to Invalid email address..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -3559,6 +3541,15 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Load from file.
|
||||||
|
/// </summary>
|
||||||
|
public static string LoadFromFile {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LoadFromFile", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Loading.
|
/// Looks up a localized string similar to Loading.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -6453,7 +6444,7 @@ namespace Bit.App.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve..
|
/// Looks up a localized string similar to Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve {
|
public static string UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -2634,12 +2634,6 @@ Wil u na die rekening omskakel?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2633,12 +2633,6 @@ Bu hesaba keçmək istəyirsiniz?</value>
|
|||||||
<value>Ana parolu təkrar soruş köməyi</value>
|
<value>Ana parolu təkrar soruş köməyi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Yetərsiz yaddaşa görə kilid açma uğursuz ola bilər. Həll etmək üçün KDF yaddaş tənzimləmələrinizi azaldın</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Yararsız API açarı</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Yararsız API tokeni</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2636,10 +2636,4 @@
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Па прычыне недахопу памяці можа адбыцца збой разблакіроўкі. Паменшыце налады памяці KDF, каб вырашыць гэту праблему</value>
|
<value>Па прычыне недахопу памяці можа адбыцца збой разблакіроўкі. Паменшыце налады памяці KDF, каб вырашыць гэту праблему</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Памылковы ключ API</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Памылковы токен API</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2636,10 +2636,4 @@ select Add TOTP to store the key safely</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Отключването може да бъде неуспешно заради недостатъчно памет. Намалете настройките на паметта за KDF, за да разрешите проблема.</value>
|
<value>Отключването може да бъде неуспешно заради недостатъчно памет. Намалете настройките на паметта за KDF, за да разрешите проблема.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Неправилен ключ за ППИ</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Неправилен идентификатор за ППИ</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2633,12 +2633,6 @@ Skeniranje će biti izvršeno automatski.</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2636,10 +2636,4 @@ Voleu canviar a aquest compte?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>El desbloqueig pot fallar a causa de memòria insuficient. Disminueix la configuració de memòria KDF per resoldre-ho</value>
|
<value>El desbloqueig pot fallar a causa de memòria insuficient. Disminueix la configuració de memòria KDF per resoldre-ho</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Clau API no vàlida</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Token API no vàlid</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,10 +2635,4 @@ Chcete se přepnout na tento účet?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Odemknutí může selhat z důvodu nedostatku paměti. Pro vyřešení snižte nastavení paměti KDF.</value>
|
<value>Odemknutí může selhat z důvodu nedostatku paměti. Pro vyřešení snižte nastavení paměti KDF.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Neplatný klíč API</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Neplatný token API</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2636,10 +2636,4 @@ Vil du skifte til denne konto?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Oplåsning kan fejle grundet utilstrækkelig hukommelse. Reducér KDF-hukommelsesindstillinger for at afhjælpe</value>
|
<value>Oplåsning kan fejle grundet utilstrækkelig hukommelse. Reducér KDF-hukommelsesindstillinger for at afhjælpe</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Ugyldig API-nøgle</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Ugyldigt API-token</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,10 +2635,4 @@ Möchtest du zu diesem Konto wechseln?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Das Entsperren kann aufgrund von unzureichendem Arbeitsspeicher fehlschlagen. Verringere deine KDF-Speichereinstellungen, um das Problem zu beheben.</value>
|
<value>Das Entsperren kann aufgrund von unzureichendem Arbeitsspeicher fehlschlagen. Verringere deine KDF-Speichereinstellungen, um das Problem zu beheben.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Ungültiger API-Schlüssel</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Ungültiger API-Token</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2610,16 +2610,16 @@
|
|||||||
<value>Δεν υπάρχουν στοιχεία που να ταιριάζουν με την αναζήτηση</value>
|
<value>Δεν υπάρχουν στοιχεία που να ταιριάζουν με την αναζήτηση</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="US" xml:space="preserve">
|
<data name="US" xml:space="preserve">
|
||||||
<value>ΗΠΑ</value>
|
<value>US</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EU" xml:space="preserve">
|
<data name="EU" xml:space="preserve">
|
||||||
<value>ΕΕ</value>
|
<value>EU</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SelfHosted" xml:space="preserve">
|
<data name="SelfHosted" xml:space="preserve">
|
||||||
<value>Αυτο-φιλοξενούμενο</value>
|
<value>Self-hosted</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DataRegion" xml:space="preserve">
|
<data name="DataRegion" xml:space="preserve">
|
||||||
<value>Περιοχή δεδομένων</value>
|
<value>Data region</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Region" xml:space="preserve">
|
<data name="Region" xml:space="preserve">
|
||||||
<value>Περιοχή</value>
|
<value>Περιοχή</value>
|
||||||
@@ -2634,12 +2634,6 @@
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2634,12 +2634,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2648,12 +2648,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -775,10 +775,10 @@
|
|||||||
<value>Activado</value>
|
<value>Activado</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Off" xml:space="preserve">
|
<data name="Off" xml:space="preserve">
|
||||||
<value>No</value>
|
<value>Apagado</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="On" xml:space="preserve">
|
<data name="On" xml:space="preserve">
|
||||||
<value>Sí</value>
|
<value>Activado</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Status" xml:space="preserve">
|
<data name="Status" xml:space="preserve">
|
||||||
<value>Estado</value>
|
<value>Estado</value>
|
||||||
@@ -2632,15 +2632,9 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
|
|||||||
<value>Contraseña maestra actual</value>
|
<value>Contraseña maestra actual</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Ayuda de volver a pedir contraseña maestra</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>El desbloqueo puede fallar por falta de memoria. Disminuye los ajustes de memoria KDF para resolver</value>
|
<value>El desbloqueo puede fallar por falta de memoria. Disminuye los ajustes de memoria KDF para resolver</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Clave API no válida</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Token de API no válido</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2496,7 +2496,7 @@ Soovid selle konto peale lülituda?</value>
|
|||||||
<value>Tuleta ülemparooli vihjega meelde</value>
|
<value>Tuleta ülemparooli vihjega meelde</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInAsXOnY" xml:space="preserve">
|
<data name="LoggingInAsXOnY" xml:space="preserve">
|
||||||
<value>Sisselogimas kui {0} lehel {1}</value>
|
<value>Logging in as {0} on {1}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotYou" xml:space="preserve">
|
<data name="NotYou" xml:space="preserve">
|
||||||
<value>Pole sina?</value>
|
<value>Pole sina?</value>
|
||||||
@@ -2610,19 +2610,19 @@ Soovid selle konto peale lülituda?</value>
|
|||||||
<value>Otsingusõnale ei vasta kirjeid</value>
|
<value>Otsingusõnale ei vasta kirjeid</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="US" xml:space="preserve">
|
<data name="US" xml:space="preserve">
|
||||||
<value>USA</value>
|
<value>US</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EU" xml:space="preserve">
|
<data name="EU" xml:space="preserve">
|
||||||
<value>EL</value>
|
<value>EU</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SelfHosted" xml:space="preserve">
|
<data name="SelfHosted" xml:space="preserve">
|
||||||
<value>Enda majutatud</value>
|
<value>Self-hosted</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DataRegion" xml:space="preserve">
|
<data name="DataRegion" xml:space="preserve">
|
||||||
<value>Andmete salvestamise piirkond</value>
|
<value>Data region</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Region" xml:space="preserve">
|
<data name="Region" xml:space="preserve">
|
||||||
<value>Piirkond</value>
|
<value>Region</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UpdateWeakMasterPasswordWarning" xml:space="preserve">
|
<data name="UpdateWeakMasterPasswordWarning" xml:space="preserve">
|
||||||
<value>Sinu ülemparool ei vasta ühele või rohkemale organisatsiooni poolt seatud poliitikale. Hoidlale ligipääsemiseks pead oma ülemaprooli uuendama. Jätkamisel logitakse sind praegusest sessioonist välja, mistõttu pead uuesti sisse logima. Teistes seadmetes olevad aktiivsed sessioonid aeguvad umbes ühe tunni jooksul.</value>
|
<value>Sinu ülemparool ei vasta ühele või rohkemale organisatsiooni poolt seatud poliitikale. Hoidlale ligipääsemiseks pead oma ülemaprooli uuendama. Jätkamisel logitakse sind praegusest sessioonist välja, mistõttu pead uuesti sisse logima. Teistes seadmetes olevad aktiivsed sessioonid aeguvad umbes ühe tunni jooksul.</value>
|
||||||
@@ -2634,12 +2634,6 @@ Soovid selle konto peale lülituda?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Vigane API võti</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Vigane API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2633,12 +2633,6 @@ Kontu honetara aldatu nahi duzu?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2497,7 +2497,7 @@
|
|||||||
<value>دریافت یادآور کلمه عبور اصلی</value>
|
<value>دریافت یادآور کلمه عبور اصلی</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInAsXOnY" xml:space="preserve">
|
<data name="LoggingInAsXOnY" xml:space="preserve">
|
||||||
<value>درحال وارد شدن به عنوان {0} در {1}</value>
|
<value>Logging in as {0} on {1}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotYou" xml:space="preserve">
|
<data name="NotYou" xml:space="preserve">
|
||||||
<value>شما نیستید؟</value>
|
<value>شما نیستید؟</value>
|
||||||
@@ -2611,19 +2611,19 @@
|
|||||||
<value>هیچ موردی وجود ندارد که با جستجو مطابقت داشته باشد</value>
|
<value>هیچ موردی وجود ندارد که با جستجو مطابقت داشته باشد</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="US" xml:space="preserve">
|
<data name="US" xml:space="preserve">
|
||||||
<value>امریکا</value>
|
<value>US</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EU" xml:space="preserve">
|
<data name="EU" xml:space="preserve">
|
||||||
<value>اروپا</value>
|
<value>EU</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SelfHosted" xml:space="preserve">
|
<data name="SelfHosted" xml:space="preserve">
|
||||||
<value>خود میزبان</value>
|
<value>Self-hosted</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DataRegion" xml:space="preserve">
|
<data name="DataRegion" xml:space="preserve">
|
||||||
<value>منطقه داده</value>
|
<value>Data region</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Region" xml:space="preserve">
|
<data name="Region" xml:space="preserve">
|
||||||
<value>منطقه</value>
|
<value>Region</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UpdateWeakMasterPasswordWarning" xml:space="preserve">
|
<data name="UpdateWeakMasterPasswordWarning" xml:space="preserve">
|
||||||
<value>کلمه عبور اصلی شما با یک یا چند سیاست سازمانتان مطابقت ندارد. برای دسترسی به گاوصندوق، باید همین حالا کلمه عبور اصلی خود را بهروز کنید. در صورت ادامه، شما از نشست فعلی خود خارج میشوید و باید دوباره وارد سیستم شوید. نشست فعال در دستگاه های دیگر ممکن است تا یک ساعت همچنان فعال باقی بمانند.</value>
|
<value>کلمه عبور اصلی شما با یک یا چند سیاست سازمانتان مطابقت ندارد. برای دسترسی به گاوصندوق، باید همین حالا کلمه عبور اصلی خود را بهروز کنید. در صورت ادامه، شما از نشست فعلی خود خارج میشوید و باید دوباره وارد سیستم شوید. نشست فعال در دستگاه های دیگر ممکن است تا یک ساعت همچنان فعال باقی بمانند.</value>
|
||||||
@@ -2632,15 +2632,9 @@
|
|||||||
<value>کلمه عبور اصلی فعلی</value>
|
<value>کلمه عبور اصلی فعلی</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>راهنمای درخواست مجدد کلمه عبور اصلی</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>باز کردن قفل ممکن است به دلیل حافظه ناکافی انجام شود. تنظیمات حافظه KDF خود را کاهش دهید تا حل شود.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -937,7 +937,7 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<value>Tiedosto</value>
|
<value>Tiedosto</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoFileChosen" xml:space="preserve">
|
<data name="NoFileChosen" xml:space="preserve">
|
||||||
<value>Tiedostoa ei ole valittu.</value>
|
<value>Ei valittua tiedostoa</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoAttachments" xml:space="preserve">
|
<data name="NoAttachments" xml:space="preserve">
|
||||||
<value>Ei liitteitä.</value>
|
<value>Ei liitteitä.</value>
|
||||||
@@ -1762,7 +1762,7 @@ Koodi luetaan automaattisesti.</value>
|
|||||||
<value>Synkronoi holvi päivityksen yhteydessä</value>
|
<value>Synkronoi holvi päivityksen yhteydessä</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableSyncOnRefreshDescription" xml:space="preserve">
|
<data name="EnableSyncOnRefreshDescription" xml:space="preserve">
|
||||||
<value>Holvi synkronoidaan myös alasveto-eleellä suoritettavan päivityksen yhteydessä.</value>
|
<value>Synkronoidaan holvi alasveto-eleellä.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInSso" xml:space="preserve">
|
<data name="LogInSso" xml:space="preserve">
|
||||||
<value>Yrityksen kertakirjautuminen (SSO)</value>
|
<value>Yrityksen kertakirjautuminen (SSO)</value>
|
||||||
@@ -2367,7 +2367,7 @@ turvallisesti valitsemalla "Lisää TOTP"</value>
|
|||||||
<value>Hyväksy kirjautumispyyntöjä</value>
|
<value>Hyväksy kirjautumispyyntöjä</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UseThisDeviceToApproveLoginRequestsMadeFromOtherDevices" xml:space="preserve">
|
<data name="UseThisDeviceToApproveLoginRequestsMadeFromOtherDevices" xml:space="preserve">
|
||||||
<value>Hyväksy laitteiden kirjautumispyyntöjä tältä laitteelta</value>
|
<value>Hyväksy muiden laitteiden kirjautumispyynnöt tältä laitteelta.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllowNotifications" xml:space="preserve">
|
<data name="AllowNotifications" xml:space="preserve">
|
||||||
<value>Salli ilmoitukset</value>
|
<value>Salli ilmoitukset</value>
|
||||||
@@ -2542,7 +2542,7 @@ Haluatko vaihtaa tähän tiliin?</value>
|
|||||||
<value>Pyynnöt hylättiin</value>
|
<value>Pyynnöt hylättiin</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoPendingRequests" xml:space="preserve">
|
<data name="NoPendingRequests" xml:space="preserve">
|
||||||
<value>Odottavia pyyntöjä ei ole</value>
|
<value>Ei odottavia pyyntöjä</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableCamerPermissionToUseTheScanner" xml:space="preserve">
|
<data name="EnableCamerPermissionToUseTheScanner" xml:space="preserve">
|
||||||
<value>Myönnä kameran käyttöoikeus skannerin käyttämiseksi</value>
|
<value>Myönnä kameran käyttöoikeus skannerin käyttämiseksi</value>
|
||||||
@@ -2554,7 +2554,7 @@ Haluatko vaihtaa tähän tiliin?</value>
|
|||||||
<value>Kieleksi vaihdettiin {0}. Käynnistä sovellus uudelleen nähdäksesi muutoksen.</value>
|
<value>Kieleksi vaihdettiin {0}. Käynnistä sovellus uudelleen nähdäksesi muutoksen.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LanguageChangeRequiresAppRestart" xml:space="preserve">
|
<data name="LanguageChangeRequiresAppRestart" xml:space="preserve">
|
||||||
<value>Kielen vaihto vaatii sovelluksen uudelleenkäynnistyksen.</value>
|
<value>Kielen vaihto edellyttää sovelluksen uudelleenkäynnistyksen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DefaultSystem" xml:space="preserve">
|
<data name="DefaultSystem" xml:space="preserve">
|
||||||
<value>Oletus (järjestelmä)</value>
|
<value>Oletus (järjestelmä)</value>
|
||||||
@@ -2635,12 +2635,6 @@ Haluatko vaihtaa tähän tiliin?</value>
|
|||||||
<value>Pääsalasanan uudelleenkyselyn ohje</value>
|
<value>Pääsalasanan uudelleenkyselyn ohje</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Lukituksen avaus voi epäonnistua riittämättömän keskusmuistin vuoksi. Korjaa madaltamalla KDF-muistiasetuksiasi.</value>
|
<value>Lukituksen avaus voi epäonnistua riittämättömän keskusmuistin vuoksi. Tämän välttämiseksi voit madaltaa KDF-muistiasetuksiasi.</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Virheellinen API-avain</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Virheellinen API-tunniste</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Gusto mo bang pumunta sa account na ito?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2637,10 +2637,4 @@ Voulez-vous basculer vers ce compte ?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Le déverrouillage peut échouer en raison d'une mémoire insuffisante. Diminuez les paramètres de mémoire KDF pour y remédier</value>
|
<value>Le déverrouillage peut échouer en raison d'une mémoire insuffisante. Diminuez les paramètres de mémoire KDF pour y remédier</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Clé API invalide</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Jeton API invalide</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2637,12 +2637,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2632,12 +2632,6 @@
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,10 +2635,4 @@ Szeretnénk átváltani erre a fiókra?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>A feloldás meghiúsulhat, mert nincs elegendő memória. A megoldáshoz csökkentsül a KDF memóriabeállításait.</value>
|
<value>A feloldás meghiúsulhat, mert nincs elegendő memória. A megoldáshoz csökkentsül a KDF memóriabeállításait.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Érvénytelen API kulcs</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Érvénytelen API vezérjel</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2634,12 +2634,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2613,7 +2613,7 @@ Vuoi passare a questo account?</value>
|
|||||||
<value>US</value>
|
<value>US</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EU" xml:space="preserve">
|
<data name="EU" xml:space="preserve">
|
||||||
<value>EU</value>
|
<value>UE</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SelfHosted" xml:space="preserve">
|
<data name="SelfHosted" xml:space="preserve">
|
||||||
<value>Self-hosted</value>
|
<value>Self-hosted</value>
|
||||||
@@ -2631,15 +2631,9 @@ Vuoi passare a questo account?</value>
|
|||||||
<value>Password principale corrente</value>
|
<value>Password principale corrente</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Aiuto per chiedere la password principale di nuovo</value>
|
<value>Auto per chiedere la password principale di nuovo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Lo sblocco potrebbe fallire a causa di memoria insufficiente. Riduci le impostazioni della memoria KDF per risolvere il problema</value>
|
<value>Lo sblocco potrebbe fallire a causa di memoria insufficiente. Riduci le impostazioni della memoria KDF per risolvere il problema</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Chiave API non valida</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Token API non valido</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2636,10 +2636,4 @@
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>メモリ不足のためロック解除に失敗することがあります。KDF のメモリ設定を減らして解決してください</value>
|
<value>メモリ不足のためロック解除に失敗することがあります。KDF のメモリ設定を減らして解決してください</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>無効な API キー</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>無効な API トークン</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2634,12 +2634,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Ar norite pereiti prie šios paskyros?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2636,10 +2636,4 @@ Vai pārslēgties uz šo kontu?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Atslēgšana var neizdoties nepietiekamas atmiņas dēļ. Lai to novērstu, jāsamazina KDF atmiņas iestatījmi</value>
|
<value>Atslēgšana var neizdoties nepietiekamas atmiņas dēļ. Lai to novērstu, jāsamazina KDF atmiņas iestatījmi</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Nederīga API atslēga</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Nederīga API pilnvara</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2634,12 +2634,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Vil du bytte til denne kontoen?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2636,10 +2636,4 @@ Wilt u naar dit account wisselen?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Ontgrendelen kan mislukken als er onvoldoende geheugen is. Verminder je KDF-geheugeninstellingen om dit op te lossen</value>
|
<value>Ontgrendelen kan mislukken als er onvoldoende geheugen is. Verminder je KDF-geheugeninstellingen om dit op te lossen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -176,10 +176,10 @@
|
|||||||
<comment>Confirmation alert message when deleteing something.</comment>
|
<comment>Confirmation alert message when deleteing something.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Edit" xml:space="preserve">
|
<data name="Edit" xml:space="preserve">
|
||||||
<value>Rediger</value>
|
<value>Rei</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditFolder" xml:space="preserve">
|
<data name="EditFolder" xml:space="preserve">
|
||||||
<value>Rediger mappe</value>
|
<value>Rei mappa</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Email" xml:space="preserve">
|
<data name="Email" xml:space="preserve">
|
||||||
<value>E-post</value>
|
<value>E-post</value>
|
||||||
@@ -468,7 +468,7 @@
|
|||||||
<comment>Message shown when interacting with the server</comment>
|
<comment>Message shown when interacting with the server</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditItem" xml:space="preserve">
|
<data name="EditItem" xml:space="preserve">
|
||||||
<value>Rediger oppføringa</value>
|
<value>Rei oppføring</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableAutomaticSyncing" xml:space="preserve">
|
<data name="EnableAutomaticSyncing" xml:space="preserve">
|
||||||
<value>Slå på sjølvverkande synkronisering</value>
|
<value>Slå på sjølvverkande synkronisering</value>
|
||||||
@@ -1235,10 +1235,10 @@ Skanning skjer automatisk.</value>
|
|||||||
<value>Grunndomene</value>
|
<value>Grunndomene</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Standard</value>
|
<value>Default</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Exact" xml:space="preserve">
|
<data name="Exact" xml:space="preserve">
|
||||||
<value>Nøyaktig</value>
|
<value>Exact</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Host" xml:space="preserve">
|
<data name="Host" xml:space="preserve">
|
||||||
<value>Host</value>
|
<value>Host</value>
|
||||||
@@ -1249,7 +1249,7 @@ Skanning skjer automatisk.</value>
|
|||||||
<comment>A programming term, also known as 'RegEx'.</comment>
|
<comment>A programming term, also known as 'RegEx'.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="StartsWith" xml:space="preserve">
|
<data name="StartsWith" xml:space="preserve">
|
||||||
<value>Startar med</value>
|
<value>Starts with</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="URIMatchDetection" xml:space="preserve">
|
<data name="URIMatchDetection" xml:space="preserve">
|
||||||
<value>URI match detection</value>
|
<value>URI match detection</value>
|
||||||
@@ -1272,7 +1272,7 @@ Skanning skjer automatisk.</value>
|
|||||||
<value>Hold your Yubikey near the top of the device.</value>
|
<value>Hold your Yubikey near the top of the device.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TryAgain" xml:space="preserve">
|
<data name="TryAgain" xml:space="preserve">
|
||||||
<value>Prøv igjen</value>
|
<value>Try again</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||||
@@ -1281,7 +1281,7 @@ Skanning skjer automatisk.</value>
|
|||||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||||
<value>Passordet er oppdatert</value>
|
<value>Password updated</value>
|
||||||
<comment>ex. Date this password was updated</comment>
|
<comment>ex. Date this password was updated</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DateUpdated" xml:space="preserve">
|
<data name="DateUpdated" xml:space="preserve">
|
||||||
@@ -1289,13 +1289,13 @@ Skanning skjer automatisk.</value>
|
|||||||
<comment>ex. Date this item was updated</comment>
|
<comment>ex. Date this item was updated</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillActivated" xml:space="preserve">
|
<data name="AutofillActivated" xml:space="preserve">
|
||||||
<value>Autoutfylling aktivert!</value>
|
<value>AutoFill activated!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||||
<value>Du må logge deg inn på Bitwarden-hovudappen før du kan bruke autoutfylling.</value>
|
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillSetup" xml:space="preserve">
|
<data name="AutofillSetup" xml:space="preserve">
|
||||||
<value>Innloggingane dine er no lett tilgjengelege frå tastaturet når du loggar deg inn på appar og nettstadar.</value>
|
<value>Your logins are now easily accessible right from your keyboard while logging into apps and websites.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillSetup2" xml:space="preserve">
|
<data name="AutofillSetup2" xml:space="preserve">
|
||||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||||
@@ -2006,7 +2006,7 @@ Skanning skjer automatisk.</value>
|
|||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditSend" xml:space="preserve">
|
<data name="EditSend" xml:space="preserve">
|
||||||
<value>Rediger Send</value>
|
<value>Rei Send</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddSend" xml:space="preserve">
|
<data name="AddSend" xml:space="preserve">
|
||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Kunne ikkje låse opp på grunn av utilstrekkeleg minnekapasitet. Reduser KDF-minne-innstillingane for å løyse dette</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2636,10 +2636,4 @@ Czy chcesz przełączyć się na to konto?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Odblokowanie może się nie powieść z powodu niewystarczającej ilości pamięci. Zmniejsz ustawienia pamięci KDF, aby to rozwiązać</value>
|
<value>Odblokowanie może się nie powieść z powodu niewystarczającej ilości pamięci. Zmniejsz ustawienia pamięci KDF, aby to rozwiązać</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Nieprawidłowy klucz API</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Nieprawidłowy token API.</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2632,15 +2632,9 @@ Você deseja mudar para esta conta?</value>
|
|||||||
<value>Senha mestra atual</value>
|
<value>Senha mestra atual</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Ajuda com Nova solicitação de senha mestra</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>O desbloqueio pode falhar devido à memória insuficiente. Diminua suas configurações de memória KDF para resolver.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Chave da API inválida</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Token de API inválido</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -172,7 +172,7 @@
|
|||||||
<comment>Message shown when interacting with the server</comment>
|
<comment>Message shown when interacting with the server</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DoYouReallyWantToDelete" xml:space="preserve">
|
<data name="DoYouReallyWantToDelete" xml:space="preserve">
|
||||||
<value>Pretende mesmo eliminar? Isto não pode ser anulado.</value>
|
<value>Pretende mesmo eliminar? Isto não pode ser desfeito.</value>
|
||||||
<comment>Confirmation alert message when deleteing something.</comment>
|
<comment>Confirmation alert message when deleteing something.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Edit" xml:space="preserve">
|
<data name="Edit" xml:space="preserve">
|
||||||
@@ -419,7 +419,7 @@
|
|||||||
<value>Extensão da aplicação</value>
|
<value>Extensão da aplicação</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillAccessibilityDescription" xml:space="preserve">
|
<data name="AutofillAccessibilityDescription" xml:space="preserve">
|
||||||
<value>Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em todas as aplicações e na Web.</value>
|
<value>Utilize o serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em todas as aplicações e na web.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillService" xml:space="preserve">
|
<data name="AutofillService" xml:space="preserve">
|
||||||
<value>Serviço de preenchimento automático</value>
|
<value>Serviço de preenchimento automático</value>
|
||||||
@@ -523,7 +523,7 @@
|
|||||||
<value>Importar itens</value>
|
<value>Importar itens</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ImportItemsConfirmation" xml:space="preserve">
|
<data name="ImportItemsConfirmation" xml:space="preserve">
|
||||||
<value>Pode importar itens em massa do cofre do site bitwarden.com. Deseja visitar o site agora?</value>
|
<value>Pode importar itens em massa do cofre da web bitwarden.com. Deseja visitar o site agora?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ImportItemsDescription" xml:space="preserve">
|
<data name="ImportItemsDescription" xml:space="preserve">
|
||||||
<value>Importe rapidamente e em massa os seus itens de outras aplicações de gestão de palavras-passe.</value>
|
<value>Importe rapidamente e em massa os seus itens de outras aplicações de gestão de palavras-passe.</value>
|
||||||
@@ -553,10 +553,10 @@
|
|||||||
<value>Imediatamente</value>
|
<value>Imediatamente</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeout" xml:space="preserve">
|
<data name="VaultTimeout" xml:space="preserve">
|
||||||
<value>Tempo limite do cofre</value>
|
<value>Expiração do cofre</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutAction" xml:space="preserve">
|
<data name="VaultTimeoutAction" xml:space="preserve">
|
||||||
<value>Ação de tempo limite do cofre</value>
|
<value>Ação de expiração do cofre</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutLogOutConfirmation" xml:space="preserve">
|
<data name="VaultTimeoutLogOutConfirmation" xml:space="preserve">
|
||||||
<value>Ao terminar sessão removerá todo o acesso ao seu cofre e requer autenticação online após o período de tempo limite. Tem a certeza de que pretende utilizar esta definição?</value>
|
<value>Ao terminar sessão removerá todo o acesso ao seu cofre e requer autenticação online após o período de tempo limite. Tem a certeza de que pretende utilizar esta definição?</value>
|
||||||
@@ -727,7 +727,7 @@
|
|||||||
<value>Ver item</value>
|
<value>Ver item</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WebVault" xml:space="preserve">
|
<data name="WebVault" xml:space="preserve">
|
||||||
<value>Cofre Web Bitwarden</value>
|
<value>Cofre web Bitwarden</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Lost2FAApp" xml:space="preserve">
|
<data name="Lost2FAApp" xml:space="preserve">
|
||||||
<value>Perdeu a aplicação de autenticação?</value>
|
<value>Perdeu a aplicação de autenticação?</value>
|
||||||
@@ -838,7 +838,7 @@
|
|||||||
<comment>For 2FA</comment>
|
<comment>For 2FA</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="RememberMe" xml:space="preserve">
|
<data name="RememberMe" xml:space="preserve">
|
||||||
<value>Memorizar</value>
|
<value>Memorizar-me</value>
|
||||||
<comment>Remember my two-step login</comment>
|
<comment>Remember my two-step login</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendVerificationCodeAgain" xml:space="preserve">
|
<data name="SendVerificationCodeAgain" xml:space="preserve">
|
||||||
@@ -919,7 +919,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Se uma credencial tiver uma chave de autenticação, copie o código de verificação TOTP para a sua área de transferência quando preencher automaticamente o início de sessão.</value>
|
<value>Se uma credencial tiver uma chave de autenticação, copie o código de verificação TOTP para a sua área de transferência quando preencher automaticamente o início de sessão.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyTotpAutomatically" xml:space="preserve">
|
<data name="CopyTotpAutomatically" xml:space="preserve">
|
||||||
<value>Copiar TOTP automaticamente</value>
|
<value>Copy TOTP automatically</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PremiumRequired" xml:space="preserve">
|
<data name="PremiumRequired" xml:space="preserve">
|
||||||
<value>É necessária uma subscrição Premium para utilizar esta funcionalidade.</value>
|
<value>É necessária uma subscrição Premium para utilizar esta funcionalidade.</value>
|
||||||
@@ -987,7 +987,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>URL do servidor</value>
|
<value>URL do servidor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WebVaultUrl" xml:space="preserve">
|
<data name="WebVaultUrl" xml:space="preserve">
|
||||||
<value>URL do servidor do cofre Web</value>
|
<value>URL do servidor do cofre web</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BitwardenAutofillServiceNotificationContentOld" xml:space="preserve">
|
<data name="BitwardenAutofillServiceNotificationContentOld" xml:space="preserve">
|
||||||
<value>Toque nesta notificação para ver itens do seu cofre.</value>
|
<value>Toque nesta notificação para ver itens do seu cofre.</value>
|
||||||
@@ -1101,10 +1101,10 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Sra.</value>
|
<value>Sra.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Ms" xml:space="preserve">
|
<data name="Ms" xml:space="preserve">
|
||||||
<value>Menina</value>
|
<value>Sra.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Mx" xml:space="preserve">
|
<data name="Mx" xml:space="preserve">
|
||||||
<value>Neutro</value>
|
<value>Mx</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="November" xml:space="preserve">
|
<data name="November" xml:space="preserve">
|
||||||
<value>Novembro</value>
|
<value>Novembro</value>
|
||||||
@@ -1140,10 +1140,10 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Expiração</value>
|
<value>Expiração</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ShowWebsiteIcons" xml:space="preserve">
|
<data name="ShowWebsiteIcons" xml:space="preserve">
|
||||||
<value>Mostrar ícones do site</value>
|
<value>Show website icons</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ShowWebsiteIconsDescription" xml:space="preserve">
|
<data name="ShowWebsiteIconsDescription" xml:space="preserve">
|
||||||
<value>Mostrar uma imagem reconhecível junto a cada credencial.</value>
|
<value>Show a recognizable image next to each login.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="IconsUrl" xml:space="preserve">
|
<data name="IconsUrl" xml:space="preserve">
|
||||||
<value>URL do servidor de ícones</value>
|
<value>URL do servidor de ícones</value>
|
||||||
@@ -1210,7 +1210,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Ocultado</value>
|
<value>Ocultado</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FieldTypeLinked" xml:space="preserve">
|
<data name="FieldTypeLinked" xml:space="preserve">
|
||||||
<value>Associado</value>
|
<value>Linked</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FieldTypeText" xml:space="preserve">
|
<data name="FieldTypeText" xml:space="preserve">
|
||||||
<value>Texto</value>
|
<value>Texto</value>
|
||||||
@@ -1235,13 +1235,13 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Domínio base</value>
|
<value>Domínio base</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Default" xml:space="preserve">
|
<data name="Default" xml:space="preserve">
|
||||||
<value>Predefinido</value>
|
<value>Predefinição</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Exact" xml:space="preserve">
|
<data name="Exact" xml:space="preserve">
|
||||||
<value>Exato</value>
|
<value>Exato</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Host" xml:space="preserve">
|
<data name="Host" xml:space="preserve">
|
||||||
<value>Domínio</value>
|
<value>Servidor</value>
|
||||||
<comment>A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'.</comment>
|
<comment>A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="RegEx" xml:space="preserve">
|
<data name="RegEx" xml:space="preserve">
|
||||||
@@ -1384,10 +1384,10 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Procurar na coleção</value>
|
<value>Procurar na coleção</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchFileSends" xml:space="preserve">
|
<data name="SearchFileSends" xml:space="preserve">
|
||||||
<value>Procurar Sends de ficheiros</value>
|
<value>Search file Sends</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchTextSends" xml:space="preserve">
|
<data name="SearchTextSends" xml:space="preserve">
|
||||||
<value>Procurar Sends de texto</value>
|
<value>Search text Sends</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchGroup" xml:space="preserve">
|
<data name="SearchGroup" xml:space="preserve">
|
||||||
<value>Procurar {0}</value>
|
<value>Procurar {0}</value>
|
||||||
@@ -1415,7 +1415,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Não existem coleções para listar.</value>
|
<value>Não existem coleções para listar.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MovedItemToOrg" xml:space="preserve">
|
<data name="MovedItemToOrg" xml:space="preserve">
|
||||||
<value>{0} movido para {1}.</value>
|
<value>{0} moved to {1}.</value>
|
||||||
<comment>ex: Item moved to Organization.</comment>
|
<comment>ex: Item moved to Organization.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="ItemShared" xml:space="preserve">
|
<data name="ItemShared" xml:space="preserve">
|
||||||
@@ -1431,7 +1431,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Partilhar item</value>
|
<value>Partilhar item</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MoveToOrganization" xml:space="preserve">
|
<data name="MoveToOrganization" xml:space="preserve">
|
||||||
<value>Mover para organização</value>
|
<value>Move to Organization</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoOrgsToList" xml:space="preserve">
|
<data name="NoOrgsToList" xml:space="preserve">
|
||||||
<value>Nenhuma organização para listar.</value>
|
<value>Nenhuma organização para listar.</value>
|
||||||
@@ -1464,7 +1464,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<comment>A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing.</comment>
|
<comment>A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="YourAccountsFingerprint" xml:space="preserve">
|
<data name="YourAccountsFingerprint" xml:space="preserve">
|
||||||
<value>Frase de impressão digital da sua conta</value>
|
<value>Frase da impressão digital da sua conta</value>
|
||||||
<comment>A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing.</comment>
|
<comment>A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="LearnOrgConfirmation" xml:space="preserve">
|
<data name="LearnOrgConfirmation" xml:space="preserve">
|
||||||
@@ -1502,7 +1502,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>O seu cofre está bloqueado. Verifique o seu código PIN para continuar.</value>
|
<value>O seu cofre está bloqueado. Verifique o seu código PIN para continuar.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultLockedIdentity" xml:space="preserve">
|
<data name="VaultLockedIdentity" xml:space="preserve">
|
||||||
<value>O seu cofre está bloqueado. Verifique a sua identidade para continuar.</value>
|
<value>Your vault is locked. Verify your identity to continue.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Dark" xml:space="preserve">
|
<data name="Dark" xml:space="preserve">
|
||||||
<value>Escuro</value>
|
<value>Escuro</value>
|
||||||
@@ -1556,7 +1556,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Tema escuro predefinido</value>
|
<value>Tema escuro predefinido</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DefaultDarkThemeDescription" xml:space="preserve">
|
<data name="DefaultDarkThemeDescription" xml:space="preserve">
|
||||||
<value>Escolha o tema escuro a utilizar quando o tema Predefinido (Sistema) do seu dispositivo estiver no modo escuro.</value>
|
<value>Choose the dark theme to use when using Default (System) theme while your device's dark mode is in use.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyNotes" xml:space="preserve">
|
<data name="CopyNotes" xml:space="preserve">
|
||||||
<value>Copiar nota</value>
|
<value>Copiar nota</value>
|
||||||
@@ -1589,10 +1589,10 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>O preenchimento automático não será oferecido para URIs bloqueados. Separe vários URIs com uma vírgula. Por exemplo: "https://twitter.com, androidapp://com.twitter.android".</value>
|
<value>O preenchimento automático não será oferecido para URIs bloqueados. Separe vários URIs com uma vírgula. Por exemplo: "https://twitter.com, androidapp://com.twitter.android".</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AskToAddLogin" xml:space="preserve">
|
<data name="AskToAddLogin" xml:space="preserve">
|
||||||
<value>Pedir para adicionar credencial</value>
|
<value>Ask to add login</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AskToAddLoginDescription" xml:space="preserve">
|
<data name="AskToAddLoginDescription" xml:space="preserve">
|
||||||
<value>Pedir para adicionar um item se não o encontrar no seu cofre.</value>
|
<value>Ask to add an item if one isn't found in your vault.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OnRestart" xml:space="preserve">
|
<data name="OnRestart" xml:space="preserve">
|
||||||
<value>Quando reiniciar a aplicação</value>
|
<value>Quando reiniciar a aplicação</value>
|
||||||
@@ -1665,13 +1665,13 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Código enviado!</value>
|
<value>Código enviado!</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ConfirmYourIdentity" xml:space="preserve">
|
<data name="ConfirmYourIdentity" xml:space="preserve">
|
||||||
<value>Confirme a sua identidade para continuar.</value>
|
<value>Confirm your identity to continue.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExportVaultWarning" xml:space="preserve">
|
<data name="ExportVaultWarning" xml:space="preserve">
|
||||||
<value>Esta exportação contém os dados do seu cofre num formato não encriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais não seguros (como o e-mail). Elimine-o imediatamente após terminar a sua utilização.</value>
|
<value>Esta exportação contém os dados do seu cofre num formato não encriptado. Não deve armazenar ou enviar o ficheiro exportado através de canais não seguros (como o e-mail). Elimine-o imediatamente após terminar a sua utilização.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncExportKeyWarning" xml:space="preserve">
|
<data name="EncExportKeyWarning" xml:space="preserve">
|
||||||
<value>Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez regenerar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação.</value>
|
<value>Esta exportação encripta os seus dados utilizando a chave de encriptação da sua conta. Se alguma vez mudar a chave de encriptação da sua conta, deve exportar novamente, uma vez que não conseguirá desencriptar este ficheiro de exportação.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EncExportAccountWarning" xml:space="preserve">
|
<data name="EncExportAccountWarning" xml:space="preserve">
|
||||||
<value>As chaves de encriptação da conta são únicas para cada conta de utilizador Bitwarden, pelo que não é possível importar uma exportação encriptada para uma conta diferente.</value>
|
<value>As chaves de encriptação da conta são únicas para cada conta de utilizador Bitwarden, pelo que não é possível importar uma exportação encriptada para uma conta diferente.</value>
|
||||||
@@ -1684,7 +1684,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Aviso</value>
|
<value>Aviso</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExportVaultFailure" xml:space="preserve">
|
<data name="ExportVaultFailure" xml:space="preserve">
|
||||||
<value>Ocorreu um problema ao exportar o seu cofre. Se o problema persistir, terá de exportar a partir do cofre Web.</value>
|
<value>Ocorreu um problema ao exportar o seu cofre. Se o problema persistir, terá de exportar a partir do cofre web.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExportVaultSuccess" xml:space="preserve">
|
<data name="ExportVaultSuccess" xml:space="preserve">
|
||||||
<value>Cofre exportado com sucesso</value>
|
<value>Cofre exportado com sucesso</value>
|
||||||
@@ -1701,7 +1701,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<comment>Button text for an open operation (verb).</comment>
|
<comment>Button text for an open operation (verb).</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnableToSaveAttachment" xml:space="preserve">
|
<data name="UnableToSaveAttachment" xml:space="preserve">
|
||||||
<value>Houve um problema ao guardar este anexo. Se o problema persistir, poderá guardá-lo através do cofre Web.</value>
|
<value>Houve um problema ao guardar este anexo. Se o problema persistir, poderá guardá-lo através do cofre web.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SaveAttachmentSuccess" xml:space="preserve">
|
<data name="SaveAttachmentSuccess" xml:space="preserve">
|
||||||
<value>Anexo guardado com sucesso</value>
|
<value>Anexo guardado com sucesso</value>
|
||||||
@@ -1741,7 +1741,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<comment>(action prompt) Label for the search text field when viewing the trash folder</comment>
|
<comment>(action prompt) Label for the search text field when viewing the trash folder</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DoYouReallyWantToPermanentlyDeleteCipher" xml:space="preserve">
|
<data name="DoYouReallyWantToPermanentlyDeleteCipher" xml:space="preserve">
|
||||||
<value>Pretende mesmo eliminar permanentemente? Isto não pode ser anulado.</value>
|
<value>Pretende mesmo eliminar permanentemente? Isto não pode ser desfeito.</value>
|
||||||
<comment>Confirmation alert message when permanently deleteing a cipher.</comment>
|
<comment>Confirmation alert message when permanently deleteing a cipher.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DoYouReallyWantToRestoreCipher" xml:space="preserve">
|
<data name="DoYouReallyWantToRestoreCipher" xml:space="preserve">
|
||||||
@@ -1753,10 +1753,10 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<comment>Confirmation alert message when soft-deleting a cipher.</comment>
|
<comment>Confirmation alert message when soft-deleting a cipher.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccountBiometricInvalidated" xml:space="preserve">
|
<data name="AccountBiometricInvalidated" xml:space="preserve">
|
||||||
<value>O desbloqueio biométrico desta conta está desativado enquanto se aguarda a verificação da palavra-passe mestra.</value>
|
<value>Biometric unlock for this account is disabled pending verification of master password.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccountBiometricInvalidatedExtension" xml:space="preserve">
|
<data name="AccountBiometricInvalidatedExtension" xml:space="preserve">
|
||||||
<value>O desbloqueio biométrico do preenchimento automático desta conta está desativado enquanto se aguarda a verificação da palavra-passe mestra.</value>
|
<value>Autofill biometric unlock for this account is disabled pending verification of master password.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableSyncOnRefresh" xml:space="preserve">
|
<data name="EnableSyncOnRefresh" xml:space="preserve">
|
||||||
<value>Permitir a sincronização ao atualizar</value>
|
<value>Permitir a sincronização ao atualizar</value>
|
||||||
@@ -1825,7 +1825,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Política de privacidade</value>
|
<value>Política de privacidade</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccessibilityDrawOverPermissionAlert" xml:space="preserve">
|
<data name="AccessibilityDrawOverPermissionAlert" xml:space="preserve">
|
||||||
<value>O Bitwarden precisa de atenção - Ative "Aparecer sobre outras" em "Serviços de preenchimento automático" nas definições do Bitwarden</value>
|
<value>Bitwarden needs attention - Turn on "Draw-Over" in "Auto-fill Services" from Bitwarden Settings</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillServices" xml:space="preserve">
|
<data name="AutofillServices" xml:space="preserve">
|
||||||
<value>Serviços de preenchimento automático</value>
|
<value>Serviços de preenchimento automático</value>
|
||||||
@@ -1834,47 +1834,47 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Utilizar o preenchimento automático em linha</value>
|
<value>Utilizar o preenchimento automático em linha</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InlineAutofillDescription" xml:space="preserve">
|
<data name="InlineAutofillDescription" xml:space="preserve">
|
||||||
<value>Utilize o preenchimento automático em linha se o IME (teclado) selecionado o suportar. Se a sua configuração não for suportada (ou se esta opção estiver desativada), será utilizada a sobreposição de preenchimento automático predefinida.</value>
|
<value>Use inline autofill if your selected IME (keyboard) supports it. If your configuration is not supported (or this option is turned off), the default Autofill overlay will be used.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Accessibility" xml:space="preserve">
|
<data name="Accessibility" xml:space="preserve">
|
||||||
<value>Utilizar a acessibilidade</value>
|
<value>Utilizar a acessibilidade</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccessibilityDescription" xml:space="preserve">
|
<data name="AccessibilityDescription" xml:space="preserve">
|
||||||
<value>Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em aplicações e na Web. Quando configurado, exibiremos um pop-up quando os campos de início de sessão forem selecionados.</value>
|
<value>Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em aplicações e na web. Quando configurado, exibiremos um pop-up quando os campos de início de sessão forem selecionados.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccessibilityDescription2" xml:space="preserve">
|
<data name="AccessibilityDescription2" xml:space="preserve">
|
||||||
<value>Utilize o Serviço de acessibilidade do Bitwarden para preencher automaticamente as suas credenciais em aplicações e na Web. (Requer que a definição Aparecer sobre outras também esteja ativada)</value>
|
<value>Use the Bitwarden Accessibility Service to auto-fill your logins across apps and the web. (Requires Draw-Over to be turned on as well)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccessibilityDescription3" xml:space="preserve">
|
<data name="AccessibilityDescription3" xml:space="preserve">
|
||||||
<value>Utilize o Serviço de acessibilidade do Bitwarden para utilizar o botão de preenchimento automático do Painel instantâneo e/ou mostrar um pop-up utilizando a definição Aparecer sobre outras (se estiver ativada).</value>
|
<value>Use the Bitwarden Accessibility Service to use the Autofill Quick-Action Tile, and/or show a popup using Draw-Over (if turned on).</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccessibilityDescription4" xml:space="preserve">
|
<data name="AccessibilityDescription4" xml:space="preserve">
|
||||||
<value>Necessário para utilizar o botão de preenchimento automático do Painel instantâneo, ou para aumentar o serviço de preenchimento automático utilizando a definição Aparecer sobre outras (se estiver ativada).</value>
|
<value>Required to use the Autofill Quick-Action Tile, or to augment the Autofill Service by using Draw-Over (if turned on).</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DrawOver" xml:space="preserve">
|
<data name="DrawOver" xml:space="preserve">
|
||||||
<value>Utilizar definição Aparecer sobre outras</value>
|
<value>Use draw-over</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DrawOverDescription" xml:space="preserve">
|
<data name="DrawOverDescription" xml:space="preserve">
|
||||||
<value>Permite que o Serviço de acessibilidade do Bitwarden apresente um pop-up quando os campos de início de sessão são selecionados.</value>
|
<value>Allows the Bitwarden Accessibility Service to display a popup when login fields are selected.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DrawOverDescription2" xml:space="preserve">
|
<data name="DrawOverDescription2" xml:space="preserve">
|
||||||
<value>Se estiver ativado, o Serviço de acessibilidade do Bitwarden apresentará um pop-up quando os campos de início de sessão forem selecionados para ajudar no preenchimento automático das suas credenciais.</value>
|
<value>Se estiver ativado, o Serviço de acessibilidade do Bitwarden apresentará um pop-up quando os campos de início de sessão forem selecionados para ajudar no preenchimento automático das suas credenciais.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DrawOverDescription3" xml:space="preserve">
|
<data name="DrawOverDescription3" xml:space="preserve">
|
||||||
<value>Se estiver ativada, a acessibilidade mostrará um pop-up para aumentar o serviço de preenchimento automático para aplicações mais antigas que não suportam a Framework de preenchimento automático do Android.</value>
|
<value>If turned on, accessibility will show a popup to augment the Autofill Service for older apps that don't support the Android Autofill Framework.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PersonalOwnershipSubmitError" xml:space="preserve">
|
<data name="PersonalOwnershipSubmitError" xml:space="preserve">
|
||||||
<value>Devido a uma política empresarial, está impedido de guardar itens no seu cofre pessoal. Altere a opção Propriedade para uma organização e escolha entre as coleções disponíveis.</value>
|
<value>Due to an enterprise policy, you are restricted from saving items to your individual vault. Change the ownership option to an organization and choose from available collections.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PersonalOwnershipPolicyInEffect" xml:space="preserve">
|
<data name="PersonalOwnershipPolicyInEffect" xml:space="preserve">
|
||||||
<value>Uma política da organização está a afetar as suas opções de propriedade.</value>
|
<value>An organization policy is affecting your ownership options.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Send" xml:space="preserve">
|
<data name="Send" xml:space="preserve">
|
||||||
<value>Send</value>
|
<value>Send</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllSends" xml:space="preserve">
|
<data name="AllSends" xml:space="preserve">
|
||||||
<value>Todos os Sends</value>
|
<value>All Sends</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Sends" xml:space="preserve">
|
<data name="Sends" xml:space="preserve">
|
||||||
@@ -1882,142 +1882,142 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="NameInfo" xml:space="preserve">
|
<data name="NameInfo" xml:space="preserve">
|
||||||
<value>Um nome simpático para descrever este Send.</value>
|
<value>A friendly name to describe this Send.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Text" xml:space="preserve">
|
<data name="Text" xml:space="preserve">
|
||||||
<value>Texto</value>
|
<value>Text</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeText" xml:space="preserve">
|
<data name="TypeText" xml:space="preserve">
|
||||||
<value>Texto</value>
|
<value>Text</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeTextInfo" xml:space="preserve">
|
<data name="TypeTextInfo" xml:space="preserve">
|
||||||
<value>O texto que deseja enviar.</value>
|
<value>The text you want to send.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="HideTextByDefault" xml:space="preserve">
|
<data name="HideTextByDefault" xml:space="preserve">
|
||||||
<value>Ao aceder ao Send, ocultar o texto por defeito</value>
|
<value>When accessing the Send, hide the text by default</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeFile" xml:space="preserve">
|
<data name="TypeFile" xml:space="preserve">
|
||||||
<value>Ficheiro</value>
|
<value>File</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeFileInfo" xml:space="preserve">
|
<data name="TypeFileInfo" xml:space="preserve">
|
||||||
<value>O ficheiro que deseja enviar.</value>
|
<value>The file you want to send.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FileTypeIsSelected" xml:space="preserve">
|
<data name="FileTypeIsSelected" xml:space="preserve">
|
||||||
<value>O tipo de ficheiro está selecionado.</value>
|
<value>File type is selected.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FileTypeIsNotSelected" xml:space="preserve">
|
<data name="FileTypeIsNotSelected" xml:space="preserve">
|
||||||
<value>O tipo de ficheiro não está selecionado, toque para selecionar.</value>
|
<value>File type is not selected, tap to select.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TextTypeIsSelected" xml:space="preserve">
|
<data name="TextTypeIsSelected" xml:space="preserve">
|
||||||
<value>O tipo de texto está selecionado.</value>
|
<value>Text type is selected.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TextTypeIsNotSelected" xml:space="preserve">
|
<data name="TextTypeIsNotSelected" xml:space="preserve">
|
||||||
<value>O tipo de texto não está selecionado, toque para selecionar.</value>
|
<value>Text type is not selected, tap to select.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeletionDate" xml:space="preserve">
|
<data name="DeletionDate" xml:space="preserve">
|
||||||
<value>Data de eliminação</value>
|
<value>Data de eliminação</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeletionTime" xml:space="preserve">
|
<data name="DeletionTime" xml:space="preserve">
|
||||||
<value>Hora da eliminação</value>
|
<value>Deletion time</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeletionDateInfo" xml:space="preserve">
|
<data name="DeletionDateInfo" xml:space="preserve">
|
||||||
<value>O Send será permanentemente eliminado na data e hora especificadas.</value>
|
<value>O Send será permanentemente eliminado na data e hora especificadas.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="PendingDelete" xml:space="preserve">
|
<data name="PendingDelete" xml:space="preserve">
|
||||||
<value>Eliminação pendente</value>
|
<value>Pending deletion</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExpirationDate" xml:space="preserve">
|
<data name="ExpirationDate" xml:space="preserve">
|
||||||
<value>Data de validade</value>
|
<value>Expiration date</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExpirationTime" xml:space="preserve">
|
<data name="ExpirationTime" xml:space="preserve">
|
||||||
<value>Hora de validade</value>
|
<value>Expiration time</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExpirationDateInfo" xml:space="preserve">
|
<data name="ExpirationDateInfo" xml:space="preserve">
|
||||||
<value>Se definido, o acesso a este Send expirará na data e hora especificadas.</value>
|
<value>If set, access to this Send will expire on the specified date and time.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Expired" xml:space="preserve">
|
<data name="Expired" xml:space="preserve">
|
||||||
<value>Expirado</value>
|
<value>Expired</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MaximumAccessCount" xml:space="preserve">
|
<data name="MaximumAccessCount" xml:space="preserve">
|
||||||
<value>Número máximo de acessos</value>
|
<value>Maximum access count</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MaximumAccessCountInfo" xml:space="preserve">
|
<data name="MaximumAccessCountInfo" xml:space="preserve">
|
||||||
<value>Se definido, os utilizadores deixarão de poder aceder a este Send quando a contagem máxima de acessos for atingida.</value>
|
<value>If set, users will no longer be able to access this Send once the maximum access count is reached.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="MaximumAccessCountReached" xml:space="preserve">
|
<data name="MaximumAccessCountReached" xml:space="preserve">
|
||||||
<value>Número máximo de acessos atingido</value>
|
<value>Max access count reached</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CurrentAccessCount" xml:space="preserve">
|
<data name="CurrentAccessCount" xml:space="preserve">
|
||||||
<value>Número de acessos atual</value>
|
<value>Current access count</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewPassword" xml:space="preserve">
|
<data name="NewPassword" xml:space="preserve">
|
||||||
<value>Nova palavra-passe</value>
|
<value>New password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordInfo" xml:space="preserve">
|
<data name="PasswordInfo" xml:space="preserve">
|
||||||
<value>Opcionalmente, exigir uma palavra-passe para os utilizadores acederem a este Send.</value>
|
<value>Optionally require a password for users to access this Send.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemovePassword" xml:space="preserve">
|
<data name="RemovePassword" xml:space="preserve">
|
||||||
<value>Remover palavra-passe</value>
|
<value>Remove password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureRemoveSendPassword" xml:space="preserve">
|
<data name="AreYouSureRemoveSendPassword" xml:space="preserve">
|
||||||
<value>Tem a certeza de que pretende remover a palavras-passe?</value>
|
<value>Are you sure you want to remove the password?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemovingSendPassword" xml:space="preserve">
|
<data name="RemovingSendPassword" xml:space="preserve">
|
||||||
<value>A remover palavra-passe</value>
|
<value>Removing password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendPasswordRemoved" xml:space="preserve">
|
<data name="SendPasswordRemoved" xml:space="preserve">
|
||||||
<value>A palavra-passe foi removida.</value>
|
<value>Password has been removed.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotesInfo" xml:space="preserve">
|
<data name="NotesInfo" xml:space="preserve">
|
||||||
<value>Notas privadas sobre este Send.</value>
|
<value>Private notes about this Send.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="DisableSend" xml:space="preserve">
|
<data name="DisableSend" xml:space="preserve">
|
||||||
<value>Desative este Send para que ninguém possa aceder ao mesmo</value>
|
<value>Deactivate this Send so that no one can access it</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoSends" xml:space="preserve">
|
<data name="NoSends" xml:space="preserve">
|
||||||
<value>Não existem Sends na sua conta.</value>
|
<value>There are no Sends in your account.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddASend" xml:space="preserve">
|
<data name="AddASend" xml:space="preserve">
|
||||||
<value>Adicionar um Send</value>
|
<value>Add a Send</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyLink" xml:space="preserve">
|
<data name="CopyLink" xml:space="preserve">
|
||||||
<value>Copiar link</value>
|
<value>Copy link</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ShareLink" xml:space="preserve">
|
<data name="ShareLink" xml:space="preserve">
|
||||||
<value>Partilhar link</value>
|
<value>Share link</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendLink" xml:space="preserve">
|
<data name="SendLink" xml:space="preserve">
|
||||||
<value>Link do Send</value>
|
<value>Send link</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchSends" xml:space="preserve">
|
<data name="SearchSends" xml:space="preserve">
|
||||||
<value>Procurar Sends</value>
|
<value>Search Sends</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EditSend" xml:space="preserve">
|
<data name="EditSend" xml:space="preserve">
|
||||||
<value>Editar Send</value>
|
<value>Edit Send</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddSend" xml:space="preserve">
|
<data name="AddSend" xml:space="preserve">
|
||||||
<value>Novo Send</value>
|
<value>New Send</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureDeleteSend" xml:space="preserve">
|
<data name="AreYouSureDeleteSend" xml:space="preserve">
|
||||||
<value>Tem a certeza de que pretende eliminar este Send?</value>
|
<value>Are you sure you want to delete this Send?</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendDeleted" xml:space="preserve">
|
<data name="SendDeleted" xml:space="preserve">
|
||||||
<value>Send eliminado</value>
|
<value>Send deleted</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendUpdated" xml:space="preserve">
|
<data name="SendUpdated" xml:space="preserve">
|
||||||
@@ -2025,7 +2025,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewSendCreated" xml:space="preserve">
|
<data name="NewSendCreated" xml:space="preserve">
|
||||||
<value>Send criado</value>
|
<value>Send created</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="OneDay" xml:space="preserve">
|
<data name="OneDay" xml:space="preserve">
|
||||||
@@ -2047,46 +2047,46 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Personalizado</value>
|
<value>Personalizado</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ShareOnSave" xml:space="preserve">
|
<data name="ShareOnSave" xml:space="preserve">
|
||||||
<value>Partilhar este Send após guardar</value>
|
<value>Share this Send upon save</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendDisabledWarning" xml:space="preserve">
|
<data name="SendDisabledWarning" xml:space="preserve">
|
||||||
<value>Devido a uma política da empresa, só é possível eliminar um Send existente.</value>
|
<value>Due to an enterprise policy, you are only able to delete an existing Send.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AboutSend" xml:space="preserve">
|
<data name="AboutSend" xml:space="preserve">
|
||||||
<value>Sobre o Send</value>
|
<value>About Send</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="HideEmail" xml:space="preserve">
|
<data name="HideEmail" xml:space="preserve">
|
||||||
<value>Ocultar o meu endereço de e-mail dos destinatários</value>
|
<value>Hide my email address from recipients</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
|
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
|
||||||
<value>Uma ou mais políticas da organização estão a afetar as suas opções do Send.</value>
|
<value>Uma ou mais políticas da organização estão a afetar as suas opções do Send.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendFilePremiumRequired" xml:space="preserve">
|
<data name="SendFilePremiumRequired" xml:space="preserve">
|
||||||
<value>As contas gratuitas estão limitadas apenas à partilha de texto. É necessária uma subscrição Premium para utilizar ficheiros com o Send.</value>
|
<value>Free accounts are restricted to sharing text only. A premium membership is required to use files with Send.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendFileEmailVerificationRequired" xml:space="preserve">
|
<data name="SendFileEmailVerificationRequired" xml:space="preserve">
|
||||||
<value>Tem de verificar o seu e-mail para utilizar ficheiros com o Send. Pode verificar o seu e-mail no cofre Web.</value>
|
<value>You must verify your email to use files with Send. You can verify your email in the web vault.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordPrompt" xml:space="preserve">
|
<data name="PasswordPrompt" xml:space="preserve">
|
||||||
<value>Pedir novamente a palavra-passe mestra</value>
|
<value>Master password re-prompt</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordConfirmation" xml:space="preserve">
|
<data name="PasswordConfirmation" xml:space="preserve">
|
||||||
<value>Confirmação da palavra-passe mestra</value>
|
<value>Master password confirmation</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordConfirmationDesc" xml:space="preserve">
|
<data name="PasswordConfirmationDesc" xml:space="preserve">
|
||||||
<value>Esta ação está protegida. Para continuar, por favor, reintroduza a sua palavra-passe mestra para verificar a sua identidade.</value>
|
<value>This action is protected, to continue please re-enter your master password to verify your identity.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CaptchaRequired" xml:space="preserve">
|
<data name="CaptchaRequired" xml:space="preserve">
|
||||||
<value>Captcha necessário</value>
|
<value>Captcha required</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CaptchaFailed" xml:space="preserve">
|
<data name="CaptchaFailed" xml:space="preserve">
|
||||||
<value>Falha no Captcha. Por favor, tente novamente.</value>
|
<value>Captcha failed. Please try again.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UpdatedMasterPassword" xml:space="preserve">
|
<data name="UpdatedMasterPassword" xml:space="preserve">
|
||||||
<value>Palavra-passe mestra atualizada</value>
|
<value>Palavra-passe mestra atualizada</value>
|
||||||
@@ -2098,58 +2098,58 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.</value>
|
<value>A sua palavra-passe mestra foi recentemente alterada por um administrador da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UpdatingPassword" xml:space="preserve">
|
<data name="UpdatingPassword" xml:space="preserve">
|
||||||
<value>A atualizar palavra-passe</value>
|
<value>Updating password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UpdatePasswordError" xml:space="preserve">
|
<data name="UpdatePasswordError" xml:space="preserve">
|
||||||
<value>Atualmente não é possível atualizar a palavra-passe</value>
|
<value>Currently unable to update password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemoveMasterPassword" xml:space="preserve">
|
<data name="RemoveMasterPassword" xml:space="preserve">
|
||||||
<value>Remover palavra-passe mestra</value>
|
<value>Remove master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemoveMasterPasswordWarning" xml:space="preserve">
|
<data name="RemoveMasterPasswordWarning" xml:space="preserve">
|
||||||
<value>{0} está a utilizar SSO com encriptação gerida pelo cliente. Se continuar removerá a sua palavra-passe mestra da sua conta e será exigido SSO para iniciar sessão.</value>
|
<value>{0} is using SSO with customer-managed encryption. Continuing will remove your master password from your account and require SSO to login.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemoveMasterPasswordWarning2" xml:space="preserve">
|
<data name="RemoveMasterPasswordWarning2" xml:space="preserve">
|
||||||
<value>Se não pretender remover a sua palavra-passe mestra, pode deixar esta organização.</value>
|
<value>If you do not want to remove your master password, you may leave this organization.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LeaveOrganization" xml:space="preserve">
|
<data name="LeaveOrganization" xml:space="preserve">
|
||||||
<value>Deixar a organização</value>
|
<value>Leave organization</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LeaveOrganizationName" xml:space="preserve">
|
<data name="LeaveOrganizationName" xml:space="preserve">
|
||||||
<value>Deixar {0}?</value>
|
<value>Leave {0}?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Fido2Title" xml:space="preserve">
|
<data name="Fido2Title" xml:space="preserve">
|
||||||
<value>FIDO2 WebAuthn</value>
|
<value>FIDO2 WebAuthn</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Fido2Instruction" xml:space="preserve">
|
<data name="Fido2Instruction" xml:space="preserve">
|
||||||
<value>Para continuar, tenha a sua chave de segurança compatível com o FIDO2 WebAuthn pronta e siga as instruções depois de clicar em "Autenticar WebAuthn" no ecrã seguinte.</value>
|
<value>To continue, have your FIDO2 WebAuthn compatible security key ready, then follow the instructions after clicking 'Authenticate WebAuthn' on the next screen.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Fido2Desc" xml:space="preserve">
|
<data name="Fido2Desc" xml:space="preserve">
|
||||||
<value>Autenticação utilizando FIDO2 WebAuthn, pode autenticar utilizando uma chave de segurança externa.</value>
|
<value>Authentication using FIDO2 WebAuthn, you can authenticate using an external security key.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Fido2AuthenticateWebAuthn" xml:space="preserve">
|
<data name="Fido2AuthenticateWebAuthn" xml:space="preserve">
|
||||||
<value>Autenticar WebAuthn</value>
|
<value>Authenticate WebAuthn</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Fido2ReturnToApp" xml:space="preserve">
|
<data name="Fido2ReturnToApp" xml:space="preserve">
|
||||||
<value>Voltar à aplicação</value>
|
<value>Return to app</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Fido2CheckBrowser" xml:space="preserve">
|
<data name="Fido2CheckBrowser" xml:space="preserve">
|
||||||
<value>Por favor, certifique-se de que o seu navegador predefinido suporta o WebAuthn e tente novamente.</value>
|
<value>Please make sure your default browser supports WebAuthn and try again.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ResetPasswordAutoEnrollInviteWarning" xml:space="preserve">
|
<data name="ResetPasswordAutoEnrollInviteWarning" xml:space="preserve">
|
||||||
<value>Esta organização tem uma política empresarial que o inscreverá automaticamente na redefinição de palavra-passe. A inscrição permitirá que os administradores da organização alterem a sua palavra-passe mestra.</value>
|
<value>This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutPolicyInEffect" xml:space="preserve">
|
<data name="VaultTimeoutPolicyInEffect" xml:space="preserve">
|
||||||
<value>As políticas da sua organização definiram o tempo limite máximo permitido do cofre de {0} hora(s) e {1} minuto(s).</value>
|
<value>Your organization policies have set your maximum allowed vault timeout to {0} hour(s) and {1} minute(s).</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutPolicyWithActionInEffect" xml:space="preserve">
|
<data name="VaultTimeoutPolicyWithActionInEffect" xml:space="preserve">
|
||||||
<value>As políticas da sua organização estão a afetar o tempo limite do cofre. O tempo limite máximo permitido do cofre é de {0} hora(s) e {1} minuto(s). A sua ação de tempo limite do cofre está definida para {2}.</value>
|
<value>Your organization policies are affecting your vault timeout. Maximum allowed vault timeout is {0} hour(s) and {1} minute(s). Your vault timeout action is set to {2}.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutActionPolicyInEffect" xml:space="preserve">
|
<data name="VaultTimeoutActionPolicyInEffect" xml:space="preserve">
|
||||||
<value>As políticas da sua organização definiram a ação de tempo limite do cofre para {0}.</value>
|
<value>Your organization policies have set your vault timeout action to {0}.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VaultTimeoutToLarge" xml:space="preserve">
|
<data name="VaultTimeoutToLarge" xml:space="preserve">
|
||||||
<value>O tempo limite do seu cofre excede as restrições definidas pela sua organização.</value>
|
<value>Your vault timeout exceeds the restrictions set by your organization.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DisablePersonalVaultExportPolicyInEffect" xml:space="preserve">
|
<data name="DisablePersonalVaultExportPolicyInEffect" xml:space="preserve">
|
||||||
<value>Uma ou mais políticas da organização impedem-no de exportar o seu cofre pessoal.</value>
|
<value>Uma ou mais políticas da organização impedem-no de exportar o seu cofre pessoal.</value>
|
||||||
@@ -2179,34 +2179,34 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Conta removida com sucesso</value>
|
<value>Conta removida com sucesso</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeleteAccount" xml:space="preserve">
|
<data name="DeleteAccount" xml:space="preserve">
|
||||||
<value>Eliminar conta</value>
|
<value>Delete account</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeletingYourAccountIsPermanent" xml:space="preserve">
|
<data name="DeletingYourAccountIsPermanent" xml:space="preserve">
|
||||||
<value>A eliminação da sua conta é permanente</value>
|
<value>Deleting your account is permanent</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeleteAccountExplanation" xml:space="preserve">
|
<data name="DeleteAccountExplanation" xml:space="preserve">
|
||||||
<value>A sua conta e todos os dados do cofre serão apagados e irrecuperáveis. Tem a certeza de que quer continuar?</value>
|
<value>Your account and all vault data will be erased and unrecoverable. Are you sure you want to continue?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeletingYourAccount" xml:space="preserve">
|
<data name="DeletingYourAccount" xml:space="preserve">
|
||||||
<value>A eliminar a sua conta</value>
|
<value>Deleting your account</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YourAccountHasBeenPermanentlyDeleted" xml:space="preserve">
|
<data name="YourAccountHasBeenPermanentlyDeleted" xml:space="preserve">
|
||||||
<value>A sua conta foi permanentemente eliminada</value>
|
<value>Your account has been permanently deleted</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidVerificationCode" xml:space="preserve">
|
<data name="InvalidVerificationCode" xml:space="preserve">
|
||||||
<value>Código de verificação inválido</value>
|
<value>Invalid verification code</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RequestOTP" xml:space="preserve">
|
<data name="RequestOTP" xml:space="preserve">
|
||||||
<value>Pedir palavra-passe única</value>
|
<value>Pedir palavra-passe única</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendCode" xml:space="preserve">
|
<data name="SendCode" xml:space="preserve">
|
||||||
<value>Enviar código</value>
|
<value>Send code</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Sending" xml:space="preserve">
|
<data name="Sending" xml:space="preserve">
|
||||||
<value>A enviar</value>
|
<value>Sending</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopySendLinkOnSave" xml:space="preserve">
|
<data name="CopySendLinkOnSave" xml:space="preserve">
|
||||||
<value>Copiar link do Send ao guardar</value>
|
<value>Copy Send link on save</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SendingCode" xml:space="preserve">
|
<data name="SendingCode" xml:space="preserve">
|
||||||
<value>A enviar código</value>
|
<value>A enviar código</value>
|
||||||
@@ -2227,10 +2227,10 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Introduza o código de verificação que foi enviado para o seu e-mail</value>
|
<value>Introduza o código de verificação que foi enviado para o seu e-mail</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SubmitCrashLogs" xml:space="preserve">
|
<data name="SubmitCrashLogs" xml:space="preserve">
|
||||||
<value>Submeter registo de falhas</value>
|
<value>Submit crash logs</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SubmitCrashLogsDescription" xml:space="preserve">
|
<data name="SubmitCrashLogsDescription" xml:space="preserve">
|
||||||
<value>Ajude o Bitwarden a melhorar a estabilidade da aplicação ao enviar relatórios de falhas.</value>
|
<value>Help Bitwarden improve app stability by submitting crash reports.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OptionsExpanded" xml:space="preserve">
|
<data name="OptionsExpanded" xml:space="preserve">
|
||||||
<value>Options are expanded, tap to collapse.</value>
|
<value>Options are expanded, tap to collapse.</value>
|
||||||
@@ -2248,10 +2248,10 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Números (0-9)</value>
|
<value>Números (0-9)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SpecialCharacters" xml:space="preserve">
|
<data name="SpecialCharacters" xml:space="preserve">
|
||||||
<value>Caracteres especiais (!@#$%^&*)</value>
|
<value>Special characters (!@#$%^&*)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TapToGoBack" xml:space="preserve">
|
<data name="TapToGoBack" xml:space="preserve">
|
||||||
<value>Toque para voltar atrás</value>
|
<value>Tap to go back</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordIsVisibleTapToHide" xml:space="preserve">
|
<data name="PasswordIsVisibleTapToHide" xml:space="preserve">
|
||||||
<value>A palavra-passe está visível, toque para a ocultar.</value>
|
<value>A palavra-passe está visível, toque para a ocultar.</value>
|
||||||
@@ -2278,52 +2278,53 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>TOTP</value>
|
<value>TOTP</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VerificationCodes" xml:space="preserve">
|
<data name="VerificationCodes" xml:space="preserve">
|
||||||
<value>Códigos de verificação</value>
|
<value>Verification codes</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PremiumSubscriptionRequired" xml:space="preserve">
|
<data name="PremiumSubscriptionRequired" xml:space="preserve">
|
||||||
<value>É necessária uma subscrição Premium</value>
|
<value>É necessária uma subscrição Premium</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotAddAuthenticatorKey" xml:space="preserve">
|
<data name="CannotAddAuthenticatorKey" xml:space="preserve">
|
||||||
<value>Não é possível adicionar uma chave de autenticação? </value>
|
<value>Cannot add authenticator key? </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ScanQRCode" xml:space="preserve">
|
<data name="ScanQRCode" xml:space="preserve">
|
||||||
<value>Ler código QR</value>
|
<value>Scan QR Code</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotScanQRCode" xml:space="preserve">
|
<data name="CannotScanQRCode" xml:space="preserve">
|
||||||
<value>Não consegue ler o código QR? </value>
|
<value>Cannot scan QR Code? </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuthenticatorKeyScanner" xml:space="preserve">
|
<data name="AuthenticatorKeyScanner" xml:space="preserve">
|
||||||
<value>Chave de autenticação</value>
|
<value>Authenticator key</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterKeyManually" xml:space="preserve">
|
<data name="EnterKeyManually" xml:space="preserve">
|
||||||
<value>Introduzir chave manualmente</value>
|
<value>Enter key manually</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddTotp" xml:space="preserve">
|
<data name="AddTotp" xml:space="preserve">
|
||||||
<value>Adicionar TOTP</value>
|
<value>Add TOTP</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SetupTotp" xml:space="preserve">
|
<data name="SetupTotp" xml:space="preserve">
|
||||||
<value>Configurar TOTP</value>
|
<value>Set up TOTP</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OnceTheKeyIsSuccessfullyEntered" xml:space="preserve">
|
<data name="OnceTheKeyIsSuccessfullyEntered" xml:space="preserve">
|
||||||
<value>Assim que a chave for introduzida com sucesso, selecione Adicionar TOTP para guardar a chave em segurança</value>
|
<value>Once the key is successfully entered,
|
||||||
|
select Add TOTP to store the key safely</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NeverLockWarning" xml:space="preserve">
|
<data name="NeverLockWarning" xml:space="preserve">
|
||||||
<value>Ao definir as suas opções de bloqueio para "Nunca" mantém o seu cofre disponível para qualquer pessoa que tenha acesso ao seu dispositivo. Se utilizar esta opção, deve assegurar-se de que mantém o seu dispositivo devidamente protegido.</value>
|
<value>Ao definir as suas opções de bloqueio para "Nunca" mantém o seu cofre disponível para qualquer pessoa que tenha acesso ao seu dispositivo. Se utilizar esta opção, deve assegurar-se de que mantém o seu dispositivo devidamente protegido.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnvironmentPageUrlsError" xml:space="preserve">
|
<data name="EnvironmentPageUrlsError" xml:space="preserve">
|
||||||
<value>Um ou mais URLs introduzidos são inválidos. Por favor, reveja-o e tente guardar novamente.</value>
|
<value>One or more of the URLs entered are invalid. Please revise it and try to save again.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GenericErrorMessage" xml:space="preserve">
|
<data name="GenericErrorMessage" xml:space="preserve">
|
||||||
<value>Não foi possível processar o seu pedido. Por favor, tente novamente ou contacte-nos.</value>
|
<value>We were unable to process your request. Please try again or contact us.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllowScreenCapture" xml:space="preserve">
|
<data name="AllowScreenCapture" xml:space="preserve">
|
||||||
<value>Permitir a captura de ecrã</value>
|
<value>Allow screen capture</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureYouWantToEnableScreenCapture" xml:space="preserve">
|
<data name="AreYouSureYouWantToEnableScreenCapture" xml:space="preserve">
|
||||||
<value>Tem a certeza de que pretende ativar a captura de ecrã?</value>
|
<value>Are you sure you want to turn on screen capture?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInRequested" xml:space="preserve">
|
<data name="LogInRequested" xml:space="preserve">
|
||||||
<value>Início de sessão pedido</value>
|
<value>Início de sessão necessário</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouTryingToLogIn" xml:space="preserve">
|
<data name="AreYouTryingToLogIn" xml:space="preserve">
|
||||||
<value>Está a tentar iniciar sessão?</value>
|
<value>Está a tentar iniciar sessão?</value>
|
||||||
@@ -2383,7 +2384,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Todas as notificações</value>
|
<value>Todas as notificações</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordType" xml:space="preserve">
|
<data name="PasswordType" xml:space="preserve">
|
||||||
<value>Tipo de palavra-passe</value>
|
<value>Password type</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WhatWouldYouLikeToGenerate" xml:space="preserve">
|
<data name="WhatWouldYouLikeToGenerate" xml:space="preserve">
|
||||||
<value>O que é que gostaria de gerar?</value>
|
<value>O que é que gostaria de gerar?</value>
|
||||||
@@ -2398,22 +2399,22 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Catch-all email</value>
|
<value>Catch-all email</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForwardedEmailAlias" xml:space="preserve">
|
<data name="ForwardedEmailAlias" xml:space="preserve">
|
||||||
<value>Alias de e-mail reencaminhado</value>
|
<value>Forwarded email alias</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RandomWord" xml:space="preserve">
|
<data name="RandomWord" xml:space="preserve">
|
||||||
<value>Palavra aleatória</value>
|
<value>Random word</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailRequiredParenthesis" xml:space="preserve">
|
<data name="EmailRequiredParenthesis" xml:space="preserve">
|
||||||
<value>E-mail (necessário)</value>
|
<value>Email (required)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DomainNameRequiredParenthesis" xml:space="preserve">
|
<data name="DomainNameRequiredParenthesis" xml:space="preserve">
|
||||||
<value>Nome do domínio (necessário)</value>
|
<value>Domain name (required)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="APIKeyRequiredParenthesis" xml:space="preserve">
|
<data name="APIKeyRequiredParenthesis" xml:space="preserve">
|
||||||
<value>Chave da API (necessário)</value>
|
<value>API key (required)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Serviço</value>
|
<value>Service</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnonAddy" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>AnonAddy</value>
|
<value>AnonAddy</value>
|
||||||
@@ -2436,7 +2437,7 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<comment>"Fastmail" is the product name and should not be translated.</comment>
|
<comment>"Fastmail" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="APIAccessToken" xml:space="preserve">
|
<data name="APIAccessToken" xml:space="preserve">
|
||||||
<value>Token de acesso à API</value>
|
<value>API access token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureYouWantToOverwriteTheCurrentUsername" xml:space="preserve">
|
<data name="AreYouSureYouWantToOverwriteTheCurrentUsername" xml:space="preserve">
|
||||||
<value>Tem a certeza de que pretende substituir o nome de utilizador atual?</value>
|
<value>Tem a certeza de que pretende substituir o nome de utilizador atual?</value>
|
||||||
@@ -2445,13 +2446,13 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Gerar nome de utilizador</value>
|
<value>Gerar nome de utilizador</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailType" xml:space="preserve">
|
<data name="EmailType" xml:space="preserve">
|
||||||
<value>Tipo de e-mail</value>
|
<value>Email Type</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WebsiteRequired" xml:space="preserve">
|
<data name="WebsiteRequired" xml:space="preserve">
|
||||||
<value>Site (necessário)</value>
|
<value>Website (required)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnknownXErrorMessage" xml:space="preserve">
|
<data name="UnknownXErrorMessage" xml:space="preserve">
|
||||||
<value>Ocorreu um erro desconhecido ({0}).</value>
|
<value>Unknown {0} error occurred.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
||||||
<value>Use your email provider's subaddress capabilities</value>
|
<value>Use your email provider's subaddress capabilities</value>
|
||||||
@@ -2460,13 +2461,13 @@ A leitura será efetuada automaticamente.</value>
|
|||||||
<value>Use your domain's configured catch-all inbox.</value>
|
<value>Use your domain's configured catch-all inbox.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForwardedEmailDescription" xml:space="preserve">
|
<data name="ForwardedEmailDescription" xml:space="preserve">
|
||||||
<value>Gerar um alias de e-mail com um serviço de reencaminhamento externo.</value>
|
<value>Generate an email alias with an external forwarding service.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Random" xml:space="preserve">
|
<data name="Random" xml:space="preserve">
|
||||||
<value>Aleatório</value>
|
<value>Random</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ConnectToWatch" xml:space="preserve">
|
<data name="ConnectToWatch" xml:space="preserve">
|
||||||
<value>Ligar ao relógio</value>
|
<value>Conectar ao Relógio</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AccessibilityServiceDisclosure" xml:space="preserve">
|
<data name="AccessibilityServiceDisclosure" xml:space="preserve">
|
||||||
<value>Divulgação do serviço de acessibilidade</value>
|
<value>Divulgação do serviço de acessibilidade</value>
|
||||||
@@ -2507,40 +2508,40 @@ Deseja mudar para esta conta?</value>
|
|||||||
<value>Iniciar sessão com o dispositivo</value>
|
<value>Iniciar sessão com o dispositivo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LogInInitiated" xml:space="preserve">
|
<data name="LogInInitiated" xml:space="preserve">
|
||||||
<value>A preparar o início de sessão</value>
|
<value>Log in initiated</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ANotificationHasBeenSentToYourDevice" xml:space="preserve">
|
<data name="ANotificationHasBeenSentToYourDevice" xml:space="preserve">
|
||||||
<value>Foi enviada uma notificação para o seu dispositivo.</value>
|
<value>A notification has been sent to your device.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PleaseMakeSureYourVaultIsUnlockedAndTheFingerprintPhraseMatchesOnTheOtherDevice" xml:space="preserve">
|
<data name="PleaseMakeSureYourVaultIsUnlockedAndTheFingerprintPhraseMatchesOnTheOtherDevice" xml:space="preserve">
|
||||||
<value>Por favor, certifique-se de que o cofre está desbloqueado e que a frase de impressão digital corresponde à do outro dispositivo.</value>
|
<value>Please make sure your vault is unlocked and the Fingerprint phrase matches on the other device.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ResendNotification" xml:space="preserve">
|
<data name="ResendNotification" xml:space="preserve">
|
||||||
<value>Reenviar notificação</value>
|
<value>Resend notification</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NeedAnotherOption" xml:space="preserve">
|
<data name="NeedAnotherOption" xml:space="preserve">
|
||||||
<value>Precisa de outra opção?</value>
|
<value>Need another option?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ViewAllLoginOptions" xml:space="preserve">
|
<data name="ViewAllLoginOptions" xml:space="preserve">
|
||||||
<value>Ver todas as opções de início de sessão</value>
|
<value>View all log in options</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThisRequestIsNoLongerValid" xml:space="preserve">
|
<data name="ThisRequestIsNoLongerValid" xml:space="preserve">
|
||||||
<value>Este pedido já não é válido</value>
|
<value>Este pedido já não é válido</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PendingLogInRequests" xml:space="preserve">
|
<data name="PendingLogInRequests" xml:space="preserve">
|
||||||
<value>Pedidos de início de sessão pendentes</value>
|
<value>Pending login requests</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeclineAllRequests" xml:space="preserve">
|
<data name="DeclineAllRequests" xml:space="preserve">
|
||||||
<value>Recusar todos os pedidos</value>
|
<value>Decline all requests</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureYouWantToDeclineAllPendingLogInRequests" xml:space="preserve">
|
<data name="AreYouSureYouWantToDeclineAllPendingLogInRequests" xml:space="preserve">
|
||||||
<value>Tem a certeza de que pretende recusar todos os pedidos de início de sessão pendentes?</value>
|
<value>Are you sure you want to decline all pending login requests?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RequestsDeclined" xml:space="preserve">
|
<data name="RequestsDeclined" xml:space="preserve">
|
||||||
<value>Pedidos recusados</value>
|
<value>Requests declined</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoPendingRequests" xml:space="preserve">
|
<data name="NoPendingRequests" xml:space="preserve">
|
||||||
<value>Sem pedidos pendentes</value>
|
<value>No pending requests</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnableCamerPermissionToUseTheScanner" xml:space="preserve">
|
<data name="EnableCamerPermissionToUseTheScanner" xml:space="preserve">
|
||||||
<value>Ative a permissão da câmara para utilizar o digitalizador</value>
|
<value>Ative a permissão da câmara para utilizar o digitalizador</value>
|
||||||
@@ -2558,55 +2559,55 @@ Deseja mudar para esta conta?</value>
|
|||||||
<value>Predefinido (Sistema)</value>
|
<value>Predefinido (Sistema)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Important" xml:space="preserve">
|
<data name="Important" xml:space="preserve">
|
||||||
<value>Importante</value>
|
<value>Important</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="YourMasterPasswordCannotBeRecoveredIfYouForgetItXCharactersMinimum" xml:space="preserve">
|
<data name="YourMasterPasswordCannotBeRecoveredIfYouForgetItXCharactersMinimum" xml:space="preserve">
|
||||||
<value>A sua palavra-passe mestra não pode ser recuperada se a esquecer! {0} caracteres no mínimo.</value>
|
<value>Your master password cannot be recovered if you forget it! {0} characters minimum.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WeakMasterPassword" xml:space="preserve">
|
<data name="WeakMasterPassword" xml:space="preserve">
|
||||||
<value>Palavra-passe mestra fraca</value>
|
<value>Weak Master Password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WeakPasswordIdentifiedUseAStrongPasswordToProtectYourAccount" xml:space="preserve">
|
<data name="WeakPasswordIdentifiedUseAStrongPasswordToProtectYourAccount" xml:space="preserve">
|
||||||
<value>Foi identificada uma palavra-passe fraca. Utilize uma palavra-passe forte para proteger a sua conta. Tem a certeza de que pretende utilizar uma palavra-passe fraca?</value>
|
<value>Weak password identified. Use a strong password to protect your account. Are you sure you want to use a weak password?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Weak" xml:space="preserve">
|
<data name="Weak" xml:space="preserve">
|
||||||
<value>Fraca</value>
|
<value>Weak</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Good" xml:space="preserve">
|
<data name="Good" xml:space="preserve">
|
||||||
<value>Boa</value>
|
<value>Good</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Strong" xml:space="preserve">
|
<data name="Strong" xml:space="preserve">
|
||||||
<value>Forte</value>
|
<value>Strong</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CheckKnownDataBreachesForThisPassword" xml:space="preserve">
|
<data name="CheckKnownDataBreachesForThisPassword" xml:space="preserve">
|
||||||
<value>Verificar violações de dados conhecidas para esta palavra-passe</value>
|
<value>Check known data breaches for this password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExposedMasterPassword" xml:space="preserve">
|
<data name="ExposedMasterPassword" xml:space="preserve">
|
||||||
<value>Palavra-passe mestra exposta</value>
|
<value>Exposed Master Password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordFoundInADataBreachAlertDescription" xml:space="preserve">
|
<data name="PasswordFoundInADataBreachAlertDescription" xml:space="preserve">
|
||||||
<value>Palavra-passe encontrada numa violação de dados. Utilize uma palavra-passe única para proteger a sua conta. Tem a certeza de que pretende utilizar uma palavra-passe exposta?</value>
|
<value>Password found in a data breach. Use a unique password to protect your account. Are you sure you want to use an exposed password?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WeakAndExposedMasterPassword" xml:space="preserve">
|
<data name="WeakAndExposedMasterPassword" xml:space="preserve">
|
||||||
<value>Palavra-passe mestra fraca e exposta</value>
|
<value>Weak and Exposed Master Password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WeakPasswordIdentifiedAndFoundInADataBreachAlertDescription" xml:space="preserve">
|
<data name="WeakPasswordIdentifiedAndFoundInADataBreachAlertDescription" xml:space="preserve">
|
||||||
<value>Palavra-passe fraca identificada e encontrada numa violação de dados. Utilize uma palavra-passe forte e única para proteger a sua conta. Tem a certeza de que pretende utilizar esta palavra-passe?</value>
|
<value>Weak password identified and found in a data breach. Use a strong and unique password to protect your account. Are you sure you want to use this password?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OrganizationSsoIdentifierRequired" xml:space="preserve">
|
<data name="OrganizationSsoIdentifierRequired" xml:space="preserve">
|
||||||
<value>É necessário o identificador de SSO da organização.</value>
|
<value>Organization SSO identifier required.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddTheKeyToAnExistingOrNewItem" xml:space="preserve">
|
<data name="AddTheKeyToAnExistingOrNewItem" xml:space="preserve">
|
||||||
<value>Adicionar a chave a um item existente ou novo</value>
|
<value>Add the key to an existing or new item</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThereAreNoItemsInYourVaultThatMatchX" xml:space="preserve">
|
<data name="ThereAreNoItemsInYourVaultThatMatchX" xml:space="preserve">
|
||||||
<value>Não existem itens no seu cofre que correspondam a "{0}"</value>
|
<value>There are no items in your vault that match "{0}"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SearchForAnItemOrAddANewItem" xml:space="preserve">
|
<data name="SearchForAnItemOrAddANewItem" xml:space="preserve">
|
||||||
<value>Procurar um item ou adicionar um novo</value>
|
<value>Search for an item or add a new item</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ThereAreNoItemsThatMatchTheSearch" xml:space="preserve">
|
<data name="ThereAreNoItemsThatMatchTheSearch" xml:space="preserve">
|
||||||
<value>Não existem itens que correspondam à pesquisa</value>
|
<value>There are no items that match the search</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="US" xml:space="preserve">
|
<data name="US" xml:space="preserve">
|
||||||
<value>EUA</value>
|
<value>EUA</value>
|
||||||
@@ -2627,18 +2628,12 @@ Deseja mudar para esta conta?</value>
|
|||||||
<value>A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.</value>
|
<value>A sua palavra-passe mestra não cumpre uma ou mais políticas da sua organização. Para aceder ao cofre, tem de atualizar a sua palavra-passe mestra agora. Ao prosseguir, terminará a sua sessão atual e terá de iniciar sessão novamente. As sessões ativas noutros dispositivos poderão continuar ativas até uma hora.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CurrentMasterPassword" xml:space="preserve">
|
<data name="CurrentMasterPassword" xml:space="preserve">
|
||||||
<value>Palavra-passe mestra atual</value>
|
<value>Current master password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Ajuda para pedir novamente a palavra-passe mestra</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>O desbloqueio pode falhar devido a memória insuficiente. Diminua as definições de memória do KDF para resolver o problema.</value>
|
<value>O desbloqueio pode falhar devido a memória insuficiente. Diminua as definições de memória do KDF para resolver o problema</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Chave da API inválida</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Token da API inválido</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,9 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
<data name="LoadFromFile" xml:space="preserve">
|
||||||
<value>Invalid API key</value>
|
<value>Load from file</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2634,12 +2634,6 @@ Doriți să comutați la acest cont?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2634,12 +2634,6 @@
|
|||||||
<value>Помощь с повторным запросом мастер-пароля</value>
|
<value>Помощь с повторным запросом мастер-пароля</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Разблокировка может завершиться ошибкой из-за нехватки памяти. Уменьшите настройки памяти KDF для решения этой проблемы</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Некорректный ключ API</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Некорректный токен API</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2635,12 +2635,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2636,10 +2636,4 @@ Chcete prepnúť na toto konto?</value>
|
|||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Odomknutie môže zlyhať z dôvodu nedostatku pamäte. Znížte nastavenia pamäte KDF, aby ste vyriešili problém</value>
|
<value>Odomknutie môže zlyhať z dôvodu nedostatku pamäte. Znížte nastavenia pamäte KDF, aby ste vyriešili problém</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Neplatný kľúč API</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Neplatný token API</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2634,12 +2634,6 @@ Do you want to switch to this account?</value>
|
|||||||
<value>Pomoč o ponovnem zahtevku za glavno geslo</value>
|
<value>Pomoč o ponovnem zahtevku za glavno geslo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2633,15 +2633,9 @@
|
|||||||
<value>Тренутна главна лозинка</value>
|
<value>Тренутна главна лозинка</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
<data name="MasterPasswordRePromptHelp" xml:space="preserve">
|
||||||
<value>Помоћ поновно тражење главне лозинке</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Откључавање можда неће успети због недовољне меморије. Умањите подешавање KDF меморије за решење</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Invalid API key</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Invalid API token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2498,7 +2498,7 @@ Vill du byta till detta konto?</value>
|
|||||||
<value>Hämta huvudlösenordsledtråd</value>
|
<value>Hämta huvudlösenordsledtråd</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoggingInAsXOnY" xml:space="preserve">
|
<data name="LoggingInAsXOnY" xml:space="preserve">
|
||||||
<value>Loggar in som {0} på {1}</value>
|
<value>Logging in as {0} on {1}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotYou" xml:space="preserve">
|
<data name="NotYou" xml:space="preserve">
|
||||||
<value>Är det inte du?</value>
|
<value>Är det inte du?</value>
|
||||||
@@ -2636,12 +2636,6 @@ Vill du byta till detta konto?</value>
|
|||||||
<value>Master password re-prompt help</value>
|
<value>Master password re-prompt help</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
|
||||||
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve.</value>
|
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings to resolve</value>
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIKey" xml:space="preserve">
|
|
||||||
<value>Ogiltig API-nyckel</value>
|
|
||||||
</data>
|
|
||||||
<data name="InvalidAPIToken" xml:space="preserve">
|
|
||||||
<value>Ogiltig API-token</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user