diff --git a/Wino.Core.Domain/Enums/FilterOptionType.cs b/Wino.Core.Domain/Enums/FilterOptionType.cs
index 4882f76b..02bf14ff 100644
--- a/Wino.Core.Domain/Enums/FilterOptionType.cs
+++ b/Wino.Core.Domain/Enums/FilterOptionType.cs
@@ -5,6 +5,7 @@
All,
Unread,
Flagged,
- Mentions
+ Mentions,
+ Files
}
}
diff --git a/Wino.Core.Domain/Translations/en_US/resources.json b/Wino.Core.Domain/Translations/en_US/resources.json
index d7c71364..c3341e98 100644
--- a/Wino.Core.Domain/Translations/en_US/resources.json
+++ b/Wino.Core.Domain/Translations/en_US/resources.json
@@ -121,6 +121,7 @@
"FilteringOption_All": "All",
"FilteringOption_Flagged": "Flagged",
"FilteringOption_Unread": "Unread",
+ "FilteringOption_Files": "Has files",
"Focused": "Focused",
"FolderOperation_CreateSubFolder": "Create sub folder",
"FolderOperation_Delete": "Delete",
diff --git a/Wino.Core.Domain/Translator.Designer.cs b/Wino.Core.Domain/Translator.Designer.cs
index a07f3c76..c244e57f 100644
--- a/Wino.Core.Domain/Translator.Designer.cs
+++ b/Wino.Core.Domain/Translator.Designer.cs
@@ -628,6 +628,11 @@ namespace Wino.Core.Domain
///
public static string FilteringOption_Unread => Resources.GetTranslatedString(@"FilteringOption_Unread");
+ ///
+ /// Has files
+ ///
+ public static string FilteringOption_Files => Resources.GetTranslatedString(@"FilteringOption_Files");
+
///
/// Focused
///
diff --git a/Wino.Core/Services/MailService.cs b/Wino.Core/Services/MailService.cs
index 18be6ec9..cff165f2 100644
--- a/Wino.Core/Services/MailService.cs
+++ b/Wino.Core/Services/MailService.cs
@@ -156,6 +156,9 @@ namespace Wino.Core.Services
case FilterOptionType.Flagged:
query.Where("MailCopy.IsFlagged", true);
break;
+ case FilterOptionType.Files:
+ query.Where("MailCopy.HasAttachments", true);
+ break;
}
if (options.IsFocusedOnly != null)
diff --git a/Wino.Mail.ViewModels/MailListPageViewModel.cs b/Wino.Mail.ViewModels/MailListPageViewModel.cs
index bc49de02..a724d09d 100644
--- a/Wino.Mail.ViewModels/MailListPageViewModel.cs
+++ b/Wino.Mail.ViewModels/MailListPageViewModel.cs
@@ -87,7 +87,8 @@ namespace Wino.Mail.ViewModels
[
new (Translator.FilteringOption_All, FilterOptionType.All),
new (Translator.FilteringOption_Unread, FilterOptionType.Unread),
- new (Translator.FilteringOption_Flagged, FilterOptionType.Flagged)
+ new (Translator.FilteringOption_Flagged, FilterOptionType.Flagged),
+ new (Translator.FilteringOption_Files, FilterOptionType.Files)
];
private FolderPivotViewModel _selectedFolderPivot;
@@ -581,14 +582,12 @@ namespace Wino.Mail.ViewModels
private bool ShouldPreventItemAdd(IMailItem mailItem)
{
- bool condition2 = false;
-
- bool condition1 = mailItem.IsRead
+ bool condition = mailItem.IsRead
&& SelectedFilterOption.Type == FilterOptionType.Unread
|| !mailItem.IsFlagged
&& SelectedFilterOption.Type == FilterOptionType.Flagged;
- return condition1 || condition2;
+ return condition;
}
protected override async void OnMailAdded(MailCopy addedMail)
@@ -617,7 +616,7 @@ namespace Wino.Mail.ViewModels
NotifyItemFoundState();
});
}
- catch (Exception) { }
+ catch { }
finally
{
listManipulationSemepahore.Release();
diff --git a/Wino.Mail/Extensions/MimeKitExtensions.cs b/Wino.Mail/Extensions/MimeKitExtensions.cs
index 4b776fce..1e400e16 100644
--- a/Wino.Mail/Extensions/MimeKitExtensions.cs
+++ b/Wino.Mail/Extensions/MimeKitExtensions.cs
@@ -1,5 +1,6 @@
using System.IO;
using System.Threading.Tasks;
+using Microsoft.Toolkit.Uwp.Helpers;
using Windows.Storage;
using Wino.Mail.ViewModels.Data;
@@ -11,7 +12,7 @@ namespace Wino.Extensions
{
if (storageFile == null) return null;
- var bytes = await File.ReadAllBytesAsync(storageFile.Name);
+ var bytes = await storageFile.ReadBytesAsync();
return new MailAttachmentViewModel(storageFile.Name, bytes);
}
diff --git a/Wino.Mail/Helpers/XamlHelpers.cs b/Wino.Mail/Helpers/XamlHelpers.cs
index 04fdae1e..9d7d5149 100644
--- a/Wino.Mail/Helpers/XamlHelpers.cs
+++ b/Wino.Mail/Helpers/XamlHelpers.cs
@@ -108,22 +108,16 @@ namespace Wino.Helpers
#region Wino Font Icon Transformation
- public static WinoIconGlyph GetWinoIconGlyph(FilterOptionType type)
+ public static WinoIconGlyph GetWinoIconGlyph(FilterOptionType type) => type switch
{
- switch (type)
- {
- case FilterOptionType.All:
- return WinoIconGlyph.SpecialFolderCategory;
- case FilterOptionType.Unread:
- return WinoIconGlyph.MarkUnread;
- case FilterOptionType.Flagged:
- return WinoIconGlyph.Flag;
- case FilterOptionType.Mentions:
- return WinoIconGlyph.NewMail;
- default:
- return WinoIconGlyph.None;
- }
- }
+ FilterOptionType.All => WinoIconGlyph.SpecialFolderCategory,
+ FilterOptionType.Unread => WinoIconGlyph.MarkUnread,
+ FilterOptionType.Flagged => WinoIconGlyph.Flag,
+ FilterOptionType.Mentions => WinoIconGlyph.NewMail,
+ // TODO: Attachments icon should be added to WinoIcons.ttf.
+ FilterOptionType.Files => WinoIconGlyph.None,
+ _ => WinoIconGlyph.None,
+ };
public static WinoIconGlyph GetWinoIconGlyph(MailOperation operation)
{
diff --git a/Wino.Mail/Views/ComposePage.xaml b/Wino.Mail/Views/ComposePage.xaml
index 9573fb21..1b75de03 100644
--- a/Wino.Mail/Views/ComposePage.xaml
+++ b/Wino.Mail/Views/ComposePage.xaml
@@ -54,11 +54,13 @@
+
+ ColumnSpacing="3"
+ Margin="-8,0,0,0">
@@ -74,7 +76,7 @@
@@ -85,7 +87,7 @@
FontSize="13"
Text="{x:Bind FileName}"
MaxLines="2"
- TextTrimming="None" />
+ TextTrimming="CharacterEllipsis" />
@@ -602,24 +603,24 @@
Text="{x:Bind ViewModel.Subject, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
-
+
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
+
-
-
+
+
@@ -292,20 +307,22 @@
-
+
+
+
+
+
+
+
+