Skip to content

Commit 998bc66

Browse files
authored
Merge pull request #4 from shugaoye/master
Release V2.2.0
2 parents 15cdeec + 142b548 commit 998bc66

File tree

15 files changed

+360
-33
lines changed

15 files changed

+360
-33
lines changed

PassXYZ.Vault.Tests/PassXYZ.Vault.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
<UseMaui>true</UseMaui>
8-
<MauiVersion>8.0.80</MauiVersion>
8+
<MauiVersion>8.0.100</MauiVersion>
99
<IsPackable>false</IsPackable>
1010
</PropertyGroup>
1111

PassXYZ.Vault/PassXYZ.Vault.csproj

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<OutputType Condition="'$(TargetFramework)'!='net8.0'">Exe</OutputType>
1717
<RootNamespace>PassXYZ.Vault</RootNamespace>
1818
<UseMaui>true</UseMaui>
19-
<MauiVersion>8.0.80</MauiVersion>
19+
<MauiVersion>8.0.100</MauiVersion>
2020
<SingleProject>true</SingleProject>
2121
<ImplicitUsings>enable</ImplicitUsings>
2222
<Nullable>enable</Nullable>
@@ -29,7 +29,7 @@
2929

3030
<!-- Versions -->
3131
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
32-
<ApplicationVersion>4</ApplicationVersion>
32+
<ApplicationVersion>6</ApplicationVersion>
3333

3434
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion>
3535
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion>
@@ -41,14 +41,16 @@
4141
<NeutralLanguage>en-US</NeutralLanguage>
4242
<DefaultLanguage>en-us</DefaultLanguage>
4343
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
44-
<AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
44+
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
4545
<AppxSymbolPackageEnabled>False</AppxSymbolPackageEnabled>
4646
<GenerateTestArtifacts>True</GenerateTestArtifacts>
4747
<GenerateTemporaryStoreCertificate>True</GenerateTemporaryStoreCertificate>
4848
<HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
4949
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
50-
<AssemblyVersion>1.1.0.0</AssemblyVersion>
51-
<FileVersion>1.1.0.0</FileVersion>
50+
<AssemblyVersion>2.2.0.0</AssemblyVersion>
51+
<FileVersion>2.2.0.0</FileVersion>
52+
<AppxPackageSigningEnabled>False</AppxPackageSigningEnabled>
53+
<AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
5254
</PropertyGroup>
5355

5456
<PropertyGroup Condition="'$(TargetFramework)'=='net8.0-ios'">

PassXYZ.Vault/Platforms/Windows/Package.appxmanifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<Identity
1111
Name="13783RogerYe.37906EDB75B0F"
1212
Publisher="CN=F81DB40B-AF4A-473E-ADEA-A55EE7432C05"
13-
Version="1.1.2.0" />
13+
Version="2.2.1.0" />
1414
<mp:PhoneIdentity PhoneProductId="74832D54-DC81-40D7-A436-EE13D19C3125" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
1515

1616
<Properties>

PassXYZ.Vault/Properties/Resources.Designer.cs

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

PassXYZ.Vault/Properties/Resources.resx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,4 +1076,13 @@ You can always go to PassXYZ website to find the latest Privacy Notice.</value>
10761076
<data name="menu_id_data_recovery" xml:space="preserve">
10771077
<value>Data Recovery</value>
10781078
</data>
1079+
<data name="message_id_alert_deleting" xml:space="preserve">
1080+
<value>Do you want to delete</value>
1081+
</data>
1082+
<data name="message_id_select_icon" xml:space="preserve">
1083+
<value>Please select a icon</value>
1084+
</data>
1085+
<data name="message_id_selected_icon" xml:space="preserve">
1086+
<value>The selected icon is </value>
1087+
</data>
10791088
</root>

PassXYZ.Vault/Properties/Resources.zh-Hans.resx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -216,12 +216,12 @@
216216
<data name="action_id_delete" xml:space="preserve">
217217
<value>删除</value>
218218
</data>
219-
<data name="alert_id_no" xml:space="preserve">
220-
<value>否</value>
221-
</data>
222219
<data name="alert_id_remove" xml:space="preserve">
223220
<value>请确认删除</value>
224221
</data>
222+
<data name="alert_id_no" xml:space="preserve">
223+
<value>否</value>
224+
</data>
225225
<data name="alert_id_yes" xml:space="preserve">
226226
<value>是</value>
227227
</data>
@@ -739,12 +739,12 @@
739739
<data name="field_id_hotline" xml:space="preserve">
740740
<value>客服热线</value>
741741
</data>
742-
<data name="field_id_payment_password" xml:space="preserve">
743-
<value>支付密码</value>
744-
</data>
745742
<data name="field_id_trading_pin" xml:space="preserve">
746743
<value>交易密码</value>
747744
</data>
745+
<data name="field_id_payment_password" xml:space="preserve">
746+
<value>支付密码</value>
747+
</data>
748748
<data name="message_id_alert_saving" xml:space="preserve">
749749
<value>您需要保存更改的内容吗?</value>
750750
</data>
@@ -1030,4 +1030,13 @@ PassXYZ应用帮助存储您的个人数据在本地设备并使用KeePass 加
10301030
<data name="menu_id_data_recovery" xml:space="preserve">
10311031
<value>数据恢复</value>
10321032
</data>
1033+
<data name="message_id_alert_deleting" xml:space="preserve">
1034+
<value>你想删除</value>
1035+
</data>
1036+
<data name="message_id_select_icon" xml:space="preserve">
1037+
<value>请选择一个图标</value>
1038+
</data>
1039+
<data name="message_id_selected_icon" xml:space="preserve">
1040+
<value>选择的图标是</value>
1041+
</data>
10331042
</root>

PassXYZ.Vault/Properties/Resources.zh-Hant.resx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -216,12 +216,12 @@
216216
<data name="action_id_delete" xml:space="preserve">
217217
<value>刪除</value>
218218
</data>
219-
<data name="alert_id_no" xml:space="preserve">
220-
<value>否</value>
221-
</data>
222219
<data name="alert_id_remove" xml:space="preserve">
223220
<value>請確認刪除</value>
224221
</data>
222+
<data name="alert_id_no" xml:space="preserve">
223+
<value>否</value>
224+
</data>
225225
<data name="alert_id_yes" xml:space="preserve">
226226
<value>是</value>
227227
</data>
@@ -739,12 +739,12 @@
739739
<data name="field_id_hotline" xml:space="preserve">
740740
<value>客服熱線</value>
741741
</data>
742-
<data name="field_id_payment_password" xml:space="preserve">
743-
<value>支付密碼</value>
744-
</data>
745742
<data name="field_id_trading_pin" xml:space="preserve">
746743
<value>交易密碼</value>
747744
</data>
745+
<data name="field_id_payment_password" xml:space="preserve">
746+
<value>支付密碼</value>
747+
</data>
748748
<data name="message_id_alert_saving" xml:space="preserve">
749749
<value>您需要保存更改的內容嗎?</value>
750750
</data>
@@ -1030,4 +1030,13 @@ PassXYZ應用幫助存儲您的個人數據在本地設備並使用KeePass 加
10301030
<data name="menu_id_data_recovery" xml:space="preserve">
10311031
<value>數據恢復</value>
10321032
</data>
1033+
<data name="message_id_alert_deleting" xml:space="preserve">
1034+
<value>妳想刪除</value>
1035+
</data>
1036+
<data name="message_id_select_icon" xml:space="preserve">
1037+
<value>請選擇一個圖標</value>
1038+
</data>
1039+
<data name="message_id_selected_icon" xml:space="preserve">
1040+
<value>選擇的圖標是</value>
1041+
</data>
10331042
</root>

PassXYZ.Vault/ViewModels/ItemDetailViewModel.cs

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,28 @@ public override async void OnSelection(object sender)
9999
}
100100
}
101101

102+
public async void OnFieldSelected(Field field)
103+
{
104+
if (field == null)
105+
{
106+
logger.LogWarning("field is null in OnSelection");
107+
return;
108+
}
109+
110+
if (field.IsBinaries)
111+
{
112+
var bdc = BinaryDataClassifier.ClassifyUrl(field.Key);
113+
if ((bdc == BinaryDataClass.Image) && (field.Binary != null))
114+
{
115+
await Shell.Current.Navigation.PushAsync(new ImagePreviewPage(field.GetBinaryData()));
116+
}
117+
else
118+
{
119+
logger.LogDebug("Attachment {field.Key} selected", field.Key);
120+
}
121+
}
122+
}
123+
102124
public void LoadItemId(string itemId)
103125
{
104126
if (itemId == null) { throw new ArgumentNullException(nameof(itemId)); }
@@ -156,15 +178,21 @@ public async void DeletedAsync(Field field)
156178
{
157179
throw new ArgumentNullException(nameof(field));
158180
}
181+
var question = Properties.Resources.action_id_delete + " " + field.Key + "!";
182+
var message = Properties.Resources.message_id_alert_deleting + " " + field.Key + "?";
183+
bool answer = await Shell.Current.DisplayAlert(question, message, Properties.Resources.alert_id_yes, Properties.Resources.alert_id_no);
159184

160-
if (Fields.Remove(field) && _item != null)
185+
if (answer)
161186
{
162-
_item.DeleteField(field);
163-
await dataStore.UpdateItemAsync(_item);
164-
}
165-
else
166-
{
167-
throw new NullReferenceException("Item is null or field cannot be found");
187+
if (Fields.Remove(field) && _item != null)
188+
{
189+
_item.DeleteField(field);
190+
await dataStore.UpdateItemAsync(_item);
191+
}
192+
else
193+
{
194+
throw new NullReferenceException("Item is null or field cannot be found");
195+
}
168196
}
169197
}
170198

PassXYZ.Vault/ViewModels/ItemsViewModel.cs

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,24 @@ public async void OnItemSelected(Item item)
127127
await GoToPage(item);
128128
}
129129

130+
/// <summary>
131+
/// Update the icon of an item. The item can be a group or an entry.
132+
/// </summary>
133+
/// <param name="item">an instance of Item</param>
134+
public async void UpdateIcon(Item item)
135+
{
136+
if (item == null)
137+
{
138+
return;
139+
}
140+
141+
await Shell.Current.Navigation.PushAsync(new IconsPage(async (PxFontIcon icon) => {
142+
item.SetFontIcon(icon);
143+
await dataStore.UpdateItemAsync(item);
144+
}));
145+
}
146+
147+
130148
/// <summary>
131149
/// Update an item. The item can be a group or an entry.
132150
/// </summary>
@@ -156,13 +174,20 @@ public async Task Delete(Item item)
156174
return;
157175
}
158176

159-
if (Items.Remove(item))
160-
{
161-
_ = await dataStore.DeleteItemAsync(item.Id);
162-
}
163-
else
177+
var question = Properties.Resources.action_id_delete + " " + item.Name + "!";
178+
var message = Properties.Resources.message_id_alert_deleting + " " + item.Name + "?";
179+
bool answer = await Shell.Current.DisplayAlert(question, message, Properties.Resources.alert_id_yes, Properties.Resources.alert_id_no);
180+
181+
if (answer)
164182
{
165-
throw new NullReferenceException("Delete item error");
183+
if (Items.Remove(item))
184+
{
185+
_ = await dataStore.DeleteItemAsync(item.Id);
186+
}
187+
else
188+
{
189+
throw new NullReferenceException("Delete item error");
190+
}
166191
}
167192
}
168193

PassXYZ.Vault/Views/IconsPage.xaml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
3+
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
4+
xmlns:resources="clr-namespace:PassXYZ.Vault.Properties"
5+
xmlns:styles="clr-namespace:PassXYZ.Vault.Resources.Styles"
6+
x:Class="PassXYZ.Vault.Views.IconsPage"
7+
Title="Icons">
8+
9+
<ContentPage.ToolbarItems>
10+
<ToolbarItem Text="{x:Static resources:Resources.action_id_cancel}" Clicked="OnCancelClicked">
11+
<ToolbarItem.IconImageSource>
12+
<FontImageSource FontFamily="FontAwesomeRegular"
13+
Glyph="{x:Static styles:FontAwesomeRegular.WindowClose}"
14+
Color="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource Secondary}}"
15+
Size="16" />
16+
</ToolbarItem.IconImageSource>
17+
</ToolbarItem>
18+
<ToolbarItem Text="{x:Static resources:Resources.action_id_save}" Clicked="OnSaveClicked">
19+
<ToolbarItem.IconImageSource>
20+
<FontImageSource FontFamily="FontAwesomeRegular"
21+
Glyph="{x:Static styles:FontAwesomeRegular.Save}"
22+
Color="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource Secondary}}"
23+
Size="16" />
24+
</ToolbarItem.IconImageSource>
25+
</ToolbarItem>
26+
</ContentPage.ToolbarItems>
27+
28+
<Grid RowDefinitions="Auto,Auto,*">
29+
<Label x:Name="selectedIcon" Text="{x:Static resources:Resources.message_id_select_icon}"
30+
HorizontalTextAlignment="Start"
31+
Margin="20" Grid.Row="0"/>
32+
33+
<Picker Margin="20" ItemsSource="{Binding FontFamilyNames}" SelectedItem="{Binding SelectedFontFamilyName}"
34+
HorizontalOptions="StartAndExpand" Grid.Row="1" />
35+
36+
<SearchBar Margin="20" x:Name="searchBar" SearchButtonPressed="OnSearchButtonPressed"
37+
WidthRequest="200" HorizontalOptions="EndAndExpand" Grid.Row="1" />
38+
39+
<ScrollView Grid.Row="2">
40+
<FlexLayout x:Name="flexLayout"
41+
Wrap="Wrap" JustifyContent="SpaceAround" />
42+
</ScrollView>
43+
</Grid>
44+
45+
</ContentPage>

0 commit comments

Comments
 (0)