Initial commit.
This commit is contained in:
25
Wino.Mail/Helpers/JsonHelpers.cs
Normal file
25
Wino.Mail/Helpers/JsonHelpers.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Wino.Helpers
|
||||
{
|
||||
public static class JsonHelpers
|
||||
{
|
||||
public static async Task<T> ToObjectAsync<T>(string value)
|
||||
{
|
||||
return await Task.Run<T>(() =>
|
||||
{
|
||||
return JsonConvert.DeserializeObject<T>(value);
|
||||
});
|
||||
}
|
||||
|
||||
public static async Task<string> StringifyAsync(object value)
|
||||
{
|
||||
return await Task.Run<string>(() =>
|
||||
{
|
||||
return JsonConvert.SerializeObject(value);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
119
Wino.Mail/Helpers/SettingsStorageExtensions.cs
Normal file
119
Wino.Mail/Helpers/SettingsStorageExtensions.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Windows.Storage;
|
||||
using Windows.Storage.Streams;
|
||||
|
||||
namespace Wino.Helpers
|
||||
{
|
||||
// Use these extension methods to store and retrieve local and roaming app data
|
||||
// More details regarding storing and retrieving app data at https://docs.microsoft.com/windows/uwp/app-settings/store-and-retrieve-app-data
|
||||
public static class SettingsStorageExtensions
|
||||
{
|
||||
private const string FileExtension = ".json";
|
||||
|
||||
public static bool IsRoamingStorageAvailable(this ApplicationData appData)
|
||||
{
|
||||
return appData.RoamingStorageQuota == 0;
|
||||
}
|
||||
|
||||
public static async Task SaveAsync<T>(this StorageFolder folder, string name, T content)
|
||||
{
|
||||
var file = await folder.CreateFileAsync(GetFileName(name), CreationCollisionOption.ReplaceExisting);
|
||||
var fileContent = await JsonHelpers.StringifyAsync(content);
|
||||
|
||||
await FileIO.WriteTextAsync(file, fileContent);
|
||||
}
|
||||
|
||||
public static async Task<T> ReadAsync<T>(this StorageFolder folder, string name)
|
||||
{
|
||||
if (!File.Exists(Path.Combine(folder.Path, GetFileName(name))))
|
||||
{
|
||||
return default;
|
||||
}
|
||||
|
||||
var file = await folder.GetFileAsync($"{name}.json");
|
||||
var fileContent = await FileIO.ReadTextAsync(file);
|
||||
|
||||
return await JsonHelpers.ToObjectAsync<T>(fileContent);
|
||||
}
|
||||
|
||||
public static async Task SaveAsync<T>(this ApplicationDataContainer settings, string key, T value)
|
||||
{
|
||||
settings.SaveString(key, await JsonHelpers.StringifyAsync(value));
|
||||
}
|
||||
|
||||
public static void SaveString(this ApplicationDataContainer settings, string key, string value)
|
||||
{
|
||||
settings.Values[key] = value;
|
||||
}
|
||||
|
||||
public static async Task<T> ReadAsync<T>(this ApplicationDataContainer settings, string key)
|
||||
{
|
||||
object obj = null;
|
||||
|
||||
if (settings.Values.TryGetValue(key, out obj))
|
||||
{
|
||||
return await JsonHelpers.ToObjectAsync<T>((string)obj);
|
||||
}
|
||||
|
||||
return default;
|
||||
}
|
||||
|
||||
public static async Task<StorageFile> SaveFileAsync(this StorageFolder folder, byte[] content, string fileName, CreationCollisionOption options = CreationCollisionOption.ReplaceExisting)
|
||||
{
|
||||
if (content == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(content));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(fileName))
|
||||
{
|
||||
throw new ArgumentException("File name is null or empty. Specify a valid file name", nameof(fileName));
|
||||
}
|
||||
|
||||
var storageFile = await folder.CreateFileAsync(fileName, options);
|
||||
await FileIO.WriteBytesAsync(storageFile, content);
|
||||
return storageFile;
|
||||
}
|
||||
|
||||
public static async Task<byte[]> ReadFileAsync(this StorageFolder folder, string fileName)
|
||||
{
|
||||
var item = await folder.TryGetItemAsync(fileName).AsTask().ConfigureAwait(false);
|
||||
|
||||
if ((item != null) && item.IsOfType(StorageItemTypes.File))
|
||||
{
|
||||
var storageFile = await folder.GetFileAsync(fileName);
|
||||
byte[] content = await storageFile.ReadBytesAsync();
|
||||
return content;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static async Task<byte[]> ReadBytesAsync(this StorageFile file)
|
||||
{
|
||||
if (file != null)
|
||||
{
|
||||
using (IRandomAccessStream stream = await file.OpenReadAsync())
|
||||
{
|
||||
using (var reader = new DataReader(stream.GetInputStreamAt(0)))
|
||||
{
|
||||
await reader.LoadAsync((uint)stream.Size);
|
||||
var bytes = new byte[stream.Size];
|
||||
reader.ReadBytes(bytes);
|
||||
return bytes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static string GetFileName(string name)
|
||||
{
|
||||
return string.Concat(name, FileExtension);
|
||||
}
|
||||
}
|
||||
}
|
||||
38
Wino.Mail/Helpers/WinoVisualTreeHelper.cs
Normal file
38
Wino.Mail/Helpers/WinoVisualTreeHelper.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Media;
|
||||
|
||||
namespace Wino.Helpers
|
||||
{
|
||||
public static class WinoVisualTreeHelper
|
||||
{
|
||||
public static T GetChildObject<T>(DependencyObject obj, string name) where T : FrameworkElement
|
||||
{
|
||||
DependencyObject child = null;
|
||||
T grandChild = null;
|
||||
|
||||
for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
|
||||
{
|
||||
child = VisualTreeHelper.GetChild(obj, i);
|
||||
|
||||
if (child is T && (((T)child).Name == name | string.IsNullOrEmpty(name)))
|
||||
{
|
||||
return (T)child;
|
||||
}
|
||||
else
|
||||
{
|
||||
grandChild = GetChildObject<T>(child, name);
|
||||
}
|
||||
if (grandChild != null)
|
||||
{
|
||||
return grandChild;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
399
Wino.Mail/Helpers/XamlHelpers.cs
Normal file
399
Wino.Mail/Helpers/XamlHelpers.cs
Normal file
@@ -0,0 +1,399 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Microsoft.Toolkit.Uwp.Helpers;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Windows.UI;
|
||||
using Windows.UI.Text;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
using Windows.UI.Xaml.Markup;
|
||||
using Windows.UI.Xaml.Media;
|
||||
using Wino.Controls;
|
||||
using Wino.Core.Domain;
|
||||
using Wino.Core.Domain.Enums;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
using Wino.Core.Domain.Models.Reader;
|
||||
|
||||
namespace Wino.Helpers
|
||||
{
|
||||
public static class XamlHelpers
|
||||
{
|
||||
#region Converters
|
||||
|
||||
public static Visibility ReverseBoolToVisibilityConverter(bool value) => value ? Visibility.Collapsed : Visibility.Visible;
|
||||
public static Visibility ReverseVisibilityConverter(Visibility visibility) => visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
|
||||
public static bool ReverseBoolConverter(bool value) => !value;
|
||||
public static bool ShouldDisplayPreview(string text) => text.Any(x => char.IsLetter(x));
|
||||
public static bool CountToBooleanConverter(int value) => value > 0;
|
||||
public static bool ObjectEquals(object obj1, object obj2) => object.Equals(obj1, obj2);
|
||||
public static Visibility CountToVisibilityConverter(int value) => value > 0 ? Visibility.Visible : Visibility.Collapsed;
|
||||
public static InfoBarSeverity InfoBarSeverityConverter(InfoBarMessageType messageType)
|
||||
{
|
||||
switch (messageType)
|
||||
{
|
||||
case InfoBarMessageType.Information:
|
||||
return InfoBarSeverity.Informational;
|
||||
case InfoBarMessageType.Success:
|
||||
return InfoBarSeverity.Success;
|
||||
case InfoBarMessageType.Warning:
|
||||
return InfoBarSeverity.Warning;
|
||||
case InfoBarMessageType.Error:
|
||||
return InfoBarSeverity.Error;
|
||||
default:
|
||||
return InfoBarSeverity.Informational;
|
||||
}
|
||||
}
|
||||
public static SolidColorBrush GetSolidColorBrushFromHex(string colorHex) => string.IsNullOrEmpty(colorHex) ? new SolidColorBrush(Colors.Transparent) : new SolidColorBrush(colorHex.ToColor());
|
||||
public static Visibility IsSelectionModeMultiple(ListViewSelectionMode mode) => mode == ListViewSelectionMode.Multiple ? Visibility.Visible : Visibility.Collapsed;
|
||||
public static FontWeight GetFontWeightBySyncState(bool isSyncing) => isSyncing ? FontWeights.SemiBold : FontWeights.Normal;
|
||||
public static FontWeight GetFontWeightByChildSelectedState(bool isChildSelected) => isChildSelected ? FontWeights.SemiBold : FontWeights.Normal;
|
||||
public static Geometry GetPathIcon(string resourceName) => GetPathGeometry(Application.Current.Resources[$"{resourceName}"] as string);
|
||||
public static GridLength GetGridLength(double width) => new GridLength(width, GridUnitType.Pixel);
|
||||
public static double MailListAdaptivityConverter(double mailListPaneLength) => mailListPaneLength + 300d;
|
||||
public static string GetMailItemDisplaySummaryForListing(bool isDraft, DateTime receivedDate, bool prefer24HourTime)
|
||||
{
|
||||
if (isDraft)
|
||||
return Translator.Draft;
|
||||
else
|
||||
{
|
||||
var localTime = receivedDate.ToLocalTime();
|
||||
|
||||
return prefer24HourTime ? localTime.ToString("HH:mm") : localTime.ToString("hh:mm tt");
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetCreationDateString(DateTime date)
|
||||
{
|
||||
var localTime = date.ToLocalTime();
|
||||
return $"{localTime.ToLongDateString()} {localTime.ToLongTimeString()}";
|
||||
}
|
||||
|
||||
public static string GetMailGroupDateString(object groupObject)
|
||||
{
|
||||
if (groupObject is string stringObject)
|
||||
return stringObject;
|
||||
|
||||
object dateObject = null;
|
||||
|
||||
// From regular mail header template
|
||||
if (groupObject is DateTime groupedDate)
|
||||
dateObject = groupedDate;
|
||||
else if (groupObject is IGrouping<object, IMailItem> groupKey)
|
||||
{
|
||||
// From semantic group header.
|
||||
dateObject = groupKey.Key;
|
||||
}
|
||||
|
||||
if (dateObject != null)
|
||||
{
|
||||
if (dateObject is DateTime dateTimeValue)
|
||||
{
|
||||
if (dateTimeValue == DateTime.Today)
|
||||
return Translator.Today;
|
||||
else if (dateTimeValue == DateTime.Today.AddDays(-1))
|
||||
return Translator.Yesterday;
|
||||
else
|
||||
return dateTimeValue.ToLongDateString();
|
||||
}
|
||||
else
|
||||
return dateObject.ToString();
|
||||
}
|
||||
|
||||
return Translator.UnknownDateHeader;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Wino Font Icon Transformation
|
||||
|
||||
public static WinoIconGlyph GetWinoIconGlyph(FilterOptionType type)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
public static WinoIconGlyph GetWinoIconGlyph(MailOperation operation)
|
||||
{
|
||||
switch (operation)
|
||||
{
|
||||
case MailOperation.None:
|
||||
return WinoIconGlyph.None;
|
||||
case MailOperation.Archive:
|
||||
return WinoIconGlyph.Archive;
|
||||
case MailOperation.UnArchive:
|
||||
return WinoIconGlyph.UnArchive;
|
||||
case MailOperation.SoftDelete:
|
||||
case MailOperation.HardDelete:
|
||||
return WinoIconGlyph.Delete;
|
||||
case MailOperation.Move:
|
||||
return WinoIconGlyph.Forward;
|
||||
case MailOperation.MoveToJunk:
|
||||
return WinoIconGlyph.Junk;
|
||||
case MailOperation.MoveToFocused:
|
||||
break;
|
||||
case MailOperation.MoveToOther:
|
||||
break;
|
||||
case MailOperation.AlwaysMoveToOther:
|
||||
break;
|
||||
case MailOperation.AlwaysMoveToFocused:
|
||||
break;
|
||||
case MailOperation.SetFlag:
|
||||
return WinoIconGlyph.Flag;
|
||||
case MailOperation.ClearFlag:
|
||||
return WinoIconGlyph.ClearFlag;
|
||||
case MailOperation.MarkAsRead:
|
||||
return WinoIconGlyph.MarkRead;
|
||||
case MailOperation.MarkAsUnread:
|
||||
return WinoIconGlyph.MarkUnread;
|
||||
case MailOperation.MarkAsNotJunk:
|
||||
return WinoIconGlyph.Junk;
|
||||
case MailOperation.Ignore:
|
||||
return WinoIconGlyph.Ignore;
|
||||
case MailOperation.Reply:
|
||||
return WinoIconGlyph.Reply;
|
||||
case MailOperation.ReplyAll:
|
||||
return WinoIconGlyph.ReplyAll;
|
||||
case MailOperation.Zoom:
|
||||
return WinoIconGlyph.Zoom;
|
||||
case MailOperation.SaveAs:
|
||||
return WinoIconGlyph.Save;
|
||||
case MailOperation.Find:
|
||||
return WinoIconGlyph.Find;
|
||||
case MailOperation.Forward:
|
||||
return WinoIconGlyph.Forward;
|
||||
case MailOperation.DarkEditor:
|
||||
return WinoIconGlyph.DarkEditor;
|
||||
case MailOperation.LightEditor:
|
||||
return WinoIconGlyph.LightEditor;
|
||||
}
|
||||
|
||||
return WinoIconGlyph.None;
|
||||
}
|
||||
|
||||
public static WinoIconGlyph GetPathGeometry(FolderOperation operation)
|
||||
{
|
||||
switch (operation)
|
||||
{
|
||||
case FolderOperation.None:
|
||||
return WinoIconGlyph.None;
|
||||
case FolderOperation.Pin:
|
||||
return WinoIconGlyph.Pin;
|
||||
case FolderOperation.Unpin:
|
||||
return WinoIconGlyph.UnPin;
|
||||
case FolderOperation.MarkAllAsRead:
|
||||
return WinoIconGlyph.MarkRead;
|
||||
case FolderOperation.DontSync:
|
||||
return WinoIconGlyph.DontSync;
|
||||
case FolderOperation.Empty:
|
||||
return WinoIconGlyph.EmptyFolder;
|
||||
case FolderOperation.Rename:
|
||||
return WinoIconGlyph.Rename;
|
||||
case FolderOperation.Delete:
|
||||
return WinoIconGlyph.Delete;
|
||||
case FolderOperation.Move:
|
||||
return WinoIconGlyph.Forward;
|
||||
case FolderOperation.TurnOffNotifications:
|
||||
return WinoIconGlyph.TurnOfNotifications;
|
||||
case FolderOperation.CreateSubFolder:
|
||||
return WinoIconGlyph.CreateFolder;
|
||||
}
|
||||
|
||||
return WinoIconGlyph.None;
|
||||
}
|
||||
|
||||
public static WinoIconGlyph GetSpecialFolderPathIconGeometry(SpecialFolderType specialFolderType)
|
||||
{
|
||||
switch (specialFolderType)
|
||||
{
|
||||
case SpecialFolderType.Inbox:
|
||||
return WinoIconGlyph.SpecialFolderInbox;
|
||||
case SpecialFolderType.Starred:
|
||||
return WinoIconGlyph.SpecialFolderStarred;
|
||||
case SpecialFolderType.Important:
|
||||
return WinoIconGlyph.SpecialFolderImportant;
|
||||
case SpecialFolderType.Sent:
|
||||
return WinoIconGlyph.SpecialFolderSent;
|
||||
case SpecialFolderType.Draft:
|
||||
return WinoIconGlyph.SpecialFolderDraft;
|
||||
case SpecialFolderType.Archive:
|
||||
return WinoIconGlyph.SpecialFolderArchive;
|
||||
case SpecialFolderType.Deleted:
|
||||
return WinoIconGlyph.SpecialFolderDeleted;
|
||||
case SpecialFolderType.Junk:
|
||||
return WinoIconGlyph.SpecialFolderJunk;
|
||||
case SpecialFolderType.Chat:
|
||||
return WinoIconGlyph.SpecialFolderChat;
|
||||
case SpecialFolderType.Category:
|
||||
return WinoIconGlyph.SpecialFolderCategory;
|
||||
case SpecialFolderType.Unread:
|
||||
return WinoIconGlyph.SpecialFolderUnread;
|
||||
case SpecialFolderType.Forums:
|
||||
return WinoIconGlyph.SpecialFolderForums;
|
||||
case SpecialFolderType.Updates:
|
||||
return WinoIconGlyph.SpecialFolderUpdated;
|
||||
case SpecialFolderType.Personal:
|
||||
return WinoIconGlyph.SpecialFolderPersonal;
|
||||
case SpecialFolderType.Promotions:
|
||||
return WinoIconGlyph.SpecialFolderPromotions;
|
||||
case SpecialFolderType.Social:
|
||||
return WinoIconGlyph.SpecialFolderSocial;
|
||||
case SpecialFolderType.Other:
|
||||
return WinoIconGlyph.SpecialFolderOther;
|
||||
case SpecialFolderType.More:
|
||||
return WinoIconGlyph.SpecialFolderMore;
|
||||
}
|
||||
|
||||
return WinoIconGlyph.None;
|
||||
}
|
||||
|
||||
public static WinoIconGlyph GetProviderIcon(MailProviderType providerType)
|
||||
{
|
||||
switch (providerType)
|
||||
{
|
||||
case MailProviderType.Outlook:
|
||||
return WinoIconGlyph.Microsoft;
|
||||
case MailProviderType.Gmail:
|
||||
return WinoIconGlyph.Google;
|
||||
case MailProviderType.Office365:
|
||||
return WinoIconGlyph.Microsoft;
|
||||
case MailProviderType.IMAP4:
|
||||
return WinoIconGlyph.Mail;
|
||||
}
|
||||
|
||||
return WinoIconGlyph.None;
|
||||
}
|
||||
|
||||
public static Geometry GetPathGeometry(string pathMarkup)
|
||||
{
|
||||
string xaml =
|
||||
"<Path " +
|
||||
"xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>" +
|
||||
"<Path.Data>" + pathMarkup + "</Path.Data></Path>";
|
||||
var path = XamlReader.Load(xaml) as Windows.UI.Xaml.Shapes.Path;
|
||||
|
||||
Geometry geometry = path.Data;
|
||||
path.Data = null;
|
||||
return geometry;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Toolbar Section Initialization
|
||||
|
||||
public static Visibility IsFormatSection(EditorToolbarSection section) => section?.SectionType == EditorToolbarSectionType.Format ? Visibility.Visible : Visibility.Collapsed;
|
||||
public static Visibility IsInsertSection(EditorToolbarSection section) => section?.SectionType == EditorToolbarSectionType.Insert ? Visibility.Visible : Visibility.Collapsed;
|
||||
public static Visibility IsDrawSection(EditorToolbarSection section) => section?.SectionType == EditorToolbarSectionType.Draw ? Visibility.Visible : Visibility.Collapsed;
|
||||
public static Visibility IsOptionsSection(EditorToolbarSection section) => section?.SectionType == EditorToolbarSectionType.Options ? Visibility.Visible : Visibility.Collapsed;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Internationalization
|
||||
|
||||
public static string GetOperationString(MailOperation operation)
|
||||
{
|
||||
switch (operation)
|
||||
{
|
||||
case MailOperation.None:
|
||||
return "unknown";
|
||||
case MailOperation.Archive:
|
||||
return Translator.MailOperation_Archive;
|
||||
case MailOperation.UnArchive:
|
||||
return Translator.MailOperation_Unarchive;
|
||||
case MailOperation.SoftDelete:
|
||||
return Translator.MailOperation_Delete;
|
||||
case MailOperation.HardDelete:
|
||||
return Translator.MailOperation_Delete;
|
||||
case MailOperation.Move:
|
||||
return Translator.MailOperation_Move;
|
||||
case MailOperation.MoveToJunk:
|
||||
return Translator.MailOperation_MoveJunk;
|
||||
case MailOperation.MoveToFocused:
|
||||
return Translator.MailOperation_MoveFocused;
|
||||
case MailOperation.MoveToOther:
|
||||
return Translator.MailOperation_MoveOther;
|
||||
case MailOperation.AlwaysMoveToOther:
|
||||
return Translator.MailOperation_AlwaysMoveOther;
|
||||
case MailOperation.AlwaysMoveToFocused:
|
||||
return Translator.MailOperation_AlwaysMoveFocused;
|
||||
case MailOperation.SetFlag:
|
||||
return Translator.MailOperation_SetFlag;
|
||||
case MailOperation.ClearFlag:
|
||||
return Translator.MailOperation_ClearFlag;
|
||||
case MailOperation.MarkAsRead:
|
||||
return Translator.MailOperation_MarkAsRead;
|
||||
case MailOperation.MarkAsUnread:
|
||||
return Translator.MailOperation_MarkAsUnread;
|
||||
case MailOperation.MarkAsNotJunk:
|
||||
return Translator.MailOperation_MarkNotJunk;
|
||||
case MailOperation.Seperator:
|
||||
return string.Empty;
|
||||
case MailOperation.Ignore:
|
||||
return Translator.MailOperation_Ignore;
|
||||
case MailOperation.Reply:
|
||||
return Translator.MailOperation_Reply;
|
||||
case MailOperation.ReplyAll:
|
||||
return Translator.MailOperation_ReplyAll;
|
||||
case MailOperation.Zoom:
|
||||
return Translator.MailOperation_Zoom;
|
||||
case MailOperation.SaveAs:
|
||||
return Translator.MailOperation_SaveAs;
|
||||
case MailOperation.Find:
|
||||
return Translator.MailOperation_Find;
|
||||
case MailOperation.Forward:
|
||||
return Translator.MailOperation_Forward;
|
||||
case MailOperation.DarkEditor:
|
||||
return string.Empty;
|
||||
case MailOperation.LightEditor:
|
||||
return string.Empty;
|
||||
case MailOperation.Print:
|
||||
return Translator.MailOperation_Print;
|
||||
case MailOperation.Navigate:
|
||||
return Translator.MailOperation_Navigate;
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetOperationString(FolderOperation operation)
|
||||
{
|
||||
switch (operation)
|
||||
{
|
||||
case FolderOperation.None:
|
||||
break;
|
||||
case FolderOperation.Pin:
|
||||
return Translator.FolderOperation_Pin;
|
||||
case FolderOperation.Unpin:
|
||||
return Translator.FolderOperation_Unpin;
|
||||
case FolderOperation.MarkAllAsRead:
|
||||
return Translator.FolderOperation_MarkAllAsRead;
|
||||
case FolderOperation.DontSync:
|
||||
return Translator.FolderOperation_DontSync;
|
||||
case FolderOperation.Empty:
|
||||
return Translator.FolderOperation_Empty;
|
||||
case FolderOperation.Rename:
|
||||
return Translator.FolderOperation_Rename;
|
||||
case FolderOperation.Delete:
|
||||
return Translator.FolderOperation_Delete;
|
||||
case FolderOperation.Move:
|
||||
return Translator.FolderOperation_Move;
|
||||
case FolderOperation.CreateSubFolder:
|
||||
return Translator.FolderOperation_CreateSubFolder;
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user