Add support for custom date formats in settings

pull/17/head
Alexey Golub 7 years ago
parent efae0e99b8
commit 69184a74fe

@ -12,9 +12,9 @@ namespace DiscordChatExporter
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
// Services // Services
SimpleIoc.Default.Register<IDataService, DataService>(true); SimpleIoc.Default.Register<IDataService, DataService>();
SimpleIoc.Default.Register<IExportService, ExportService>(true); SimpleIoc.Default.Register<IExportService, ExportService>();
SimpleIoc.Default.Register<ISettingsService, SettingsService>(true); SimpleIoc.Default.Register<ISettingsService, SettingsService>();
// View models // View models
SimpleIoc.Default.Register<IErrorViewModel, ErrorViewModel>(true); SimpleIoc.Default.Register<IErrorViewModel, ErrorViewModel>(true);

@ -12,10 +12,18 @@ namespace DiscordChatExporter.Services
{ {
public partial class ExportService : IExportService public partial class ExportService : IExportService
{ {
private readonly ISettingsService _settingsService;
public ExportService(ISettingsService settingsService)
{
_settingsService = settingsService;
}
public void Export(string filePath, ChannelChatLog channelChatLog, Theme theme) public void Export(string filePath, ChannelChatLog channelChatLog, Theme theme)
{ {
var doc = GetTemplate(); var doc = GetTemplate();
var style = GetStyle(theme); var style = GetStyle(theme);
var dateFormat = _settingsService.DateFormat;
// Set theme // Set theme
var themeHtml = doc.GetElementbyId("theme"); var themeHtml = doc.GetElementbyId("theme");
@ -61,7 +69,7 @@ namespace DiscordChatExporter.Services
messageRightHtml.AppendChild(HtmlNode.CreateNode($"<span class=\"msg-user\">{authorName}</span>")); messageRightHtml.AppendChild(HtmlNode.CreateNode($"<span class=\"msg-user\">{authorName}</span>"));
// Date // Date
var timeStamp = HtmlDocument.HtmlEncode(messageGroup.TimeStamp.ToString("g")); var timeStamp = HtmlDocument.HtmlEncode(messageGroup.TimeStamp.ToString(dateFormat));
messageRightHtml.AppendChild(HtmlNode.CreateNode($"<span class=\"msg-date\">{timeStamp}</span>")); messageRightHtml.AppendChild(HtmlNode.CreateNode($"<span class=\"msg-date\">{timeStamp}</span>"));
// Individual messages // Individual messages
@ -80,7 +88,7 @@ namespace DiscordChatExporter.Services
{ {
contentHtml.AppendChild( contentHtml.AppendChild(
HtmlNode.CreateNode( HtmlNode.CreateNode(
$"<span class=\"msg-edited\" title=\"{message.EditedTimeStamp:g}\">(edited)</span>")); $"<span class=\"msg-edited\" title=\"{message.EditedTimeStamp.Value.ToString(dateFormat)}\">(edited)</span>"));
} }
} }
@ -150,7 +158,7 @@ namespace DiscordChatExporter.Services
private static string NormalizeFileSize(long fileSize) private static string NormalizeFileSize(long fileSize)
{ {
string[] units = { "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" }; string[] units = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
double size = fileSize; double size = fileSize;
var unit = 0; var unit = 0;

@ -6,6 +6,7 @@ namespace DiscordChatExporter.Services
{ {
string Token { get; set; } string Token { get; set; }
Theme Theme { get; set; } Theme Theme { get; set; }
string DateFormat { get; set; }
void Load(); void Load();
void Save(); void Save();

@ -7,6 +7,7 @@ namespace DiscordChatExporter.Services
{ {
public string Token { get; set; } public string Token { get; set; }
public Theme Theme { get; set; } public Theme Theme { get; set; }
public string DateFormat { get; set; } = "dd-MMM-yy hh:mm";
public SettingsService() public SettingsService()
{ {

@ -19,6 +19,12 @@ namespace DiscordChatExporter.ViewModels
set => _settingsService.Theme = value; set => _settingsService.Theme = value;
} }
public string DateFormat
{
get => _settingsService.DateFormat;
set => _settingsService.DateFormat = value;
}
public SettingsViewModel(ISettingsService settingsService) public SettingsViewModel(ISettingsService settingsService)
{ {
_settingsService = settingsService; _settingsService = settingsService;

@ -7,7 +7,7 @@ UserControl "DiscordChatExporter.Views.SettingsDialog" {
StackPanel { StackPanel {
// Theme // Theme
ComboBox { ComboBox {
Margin: 16 Margin: "16 16 16 8"
HintAssist.Hint: "Theme" HintAssist.Hint: "Theme"
HintAssist.IsFloating: true HintAssist.IsFloating: true
IsReadOnly: true IsReadOnly: true
@ -15,6 +15,15 @@ UserControl "DiscordChatExporter.Views.SettingsDialog" {
SelectedItem: bind Theme SelectedItem: bind Theme
} }
// Date format
TextBox {
Margin: "16 8 16 8"
HintAssist.Hint: "Date format"
HintAssist.IsFloating: true
Text: bind DateFormat
}
// Save // Save
Button { Button {
Margin: 8 Margin: 8

Loading…
Cancel
Save