Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 65 additions & 8 deletions src/Files.App/Data/Items/ListedItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -287,11 +287,26 @@ public string FileSize

public long FileSizeBytes { get; set; }

public string ItemDateModified { get; private set; }
private string itemDateModified;
public string ItemDateModified
{
get => itemDateModified;
private set => SetProperty(ref itemDateModified, value);
}

public string ItemDateCreated { get; private set; }
private string itemDateCreated;
public string ItemDateCreated
{
get => itemDateCreated;
private set => SetProperty(ref itemDateCreated, value);
}

public string ItemDateAccessed { get; private set; }
private string itemDateAccessed;
public string ItemDateAccessed
{
get => itemDateAccessed;
private set => SetProperty(ref itemDateAccessed, value);
}

private DateTimeOffset itemDateModifiedReal;
public DateTimeOffset ItemDateModifiedReal
Expand All @@ -301,7 +316,6 @@ public DateTimeOffset ItemDateModifiedReal
{
ItemDateModified = dateTimeFormatter.ToShortLabel(value);
itemDateModifiedReal = value;
OnPropertyChanged(nameof(ItemDateModified));
}
}

Expand All @@ -313,7 +327,6 @@ public DateTimeOffset ItemDateCreatedReal
{
ItemDateCreated = dateTimeFormatter.ToShortLabel(value);
itemDateCreatedReal = value;
OnPropertyChanged(nameof(ItemDateCreated));
}
}

Expand All @@ -325,7 +338,6 @@ public DateTimeOffset ItemDateAccessedReal
{
ItemDateAccessed = dateTimeFormatter.ToShortLabel(value);
itemDateAccessedReal = value;
OnPropertyChanged(nameof(ItemDateAccessed));
}
}

Expand Down Expand Up @@ -458,6 +470,17 @@ public BaseStorageFile ItemFile

public string Key { get; set; }

public virtual bool IsRealChanges => ItemDateAccessed != dateTimeFormatter.ToShortLabel(ItemDateAccessedReal)
|| ItemDateCreated != dateTimeFormatter.ToShortLabel(ItemDateCreatedReal)
|| ItemDateModified != dateTimeFormatter.ToShortLabel(ItemDateModifiedReal);

public virtual void UpdateReal()
{
ItemDateAccessed = dateTimeFormatter.ToShortLabel(ItemDateAccessedReal);
ItemDateCreated = dateTimeFormatter.ToShortLabel(ItemDateCreatedReal);
ItemDateModified = dateTimeFormatter.ToShortLabel(ItemDateModifiedReal);
}

/// <summary>
/// Manually check if a folder path contains child items,
/// updating the ContainsFilesOrFolders property from its default value of true
Expand All @@ -474,7 +497,14 @@ public RecycleBinItem(string folderRelativeId) : base(folderRelativeId)
{
}

public string ItemDateDeleted { get; private set; }
private string itemDateDeleted;
public string ItemDateDeleted {
get => itemDateDeleted;
private set
{
SetProperty(ref itemDateDeleted, value);
}
}

public DateTimeOffset ItemDateDeletedReal
{
Expand All @@ -486,6 +516,17 @@ public DateTimeOffset ItemDateDeletedReal
}
}


public override bool IsRealChanges => base.IsRealChanges
|| ItemDateDeleted != dateTimeFormatter.ToShortLabel(ItemDateDeletedReal);

public override void UpdateReal()
{
base.UpdateReal();

ItemDateDeleted = dateTimeFormatter.ToShortLabel(ItemDateDeletedReal);
}

private DateTimeOffset itemDateDeletedReal;

// For recycle bin elements (path + name)
Expand Down Expand Up @@ -667,10 +708,26 @@ public DateTimeOffset? GitLastCommitDate
set
{
SetProperty(ref _GitLastCommitDate, value);
GitLastCommitDateHumanized = value is DateTimeOffset dto ? dateTimeFormatter.ToShortLabel(dto) : "";
GitLastCommitDateHumanized = CreateGitLastCommitDateHumanized(value);
}
}


public override bool IsRealChanges => base.IsRealChanges
|| GitLastCommitDateHumanized != CreateGitLastCommitDateHumanized(GitLastCommitDate);

public override void UpdateReal()
{
base.UpdateReal();

GitLastCommitDateHumanized = CreateGitLastCommitDateHumanized(GitLastCommitDate);
}

private string CreateGitLastCommitDateHumanized(DateTimeOffset? dateTimeOffset)
{
return dateTimeOffset is DateTimeOffset dto ? dateTimeFormatter.ToShortLabel(dto) : "";
}

private string? _GitLastCommitDateHumanized;
public string? GitLastCommitDateHumanized
{
Expand Down
19 changes: 4 additions & 15 deletions src/Files.App/ViewModels/ShellViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2831,28 +2831,17 @@ public void CancelSearch()
searchCTS?.Cancel();
}

public void UpdateDateDisplay(bool isFormatChange)
public void UpdateDateDisplay()
{
App.Logger.LogDebug($"UpdateDateDisplay: isFormatChange={isFormatChange}, itemCount={filesAndFolders?.Count}");
App.Logger.LogDebug($"UpdateDateDisplay: itemCount={filesAndFolders?.Count}");

filesAndFolders.ToList().AsParallel().ForAll(async item =>
{
// Reassign values to update date display
if (isFormatChange || IsDateDiff(item.ItemDateAccessedReal))
await dispatcherQueue.EnqueueOrInvokeAsync(() => item.ItemDateAccessedReal = item.ItemDateAccessedReal);
if (isFormatChange || IsDateDiff(item.ItemDateCreatedReal))
await dispatcherQueue.EnqueueOrInvokeAsync(() => item.ItemDateCreatedReal = item.ItemDateCreatedReal);
if (isFormatChange || IsDateDiff(item.ItemDateModifiedReal))
await dispatcherQueue.EnqueueOrInvokeAsync(() => item.ItemDateModifiedReal = item.ItemDateModifiedReal);
if (item is RecycleBinItem recycleBinItem && (isFormatChange || IsDateDiff(recycleBinItem.ItemDateDeletedReal)))
await dispatcherQueue.EnqueueOrInvokeAsync(() => recycleBinItem.ItemDateDeletedReal = recycleBinItem.ItemDateDeletedReal);
if (item is IGitItem gitItem && gitItem.GitLastCommitDate is DateTimeOffset offset && (isFormatChange || IsDateDiff(offset)))
await dispatcherQueue.EnqueueOrInvokeAsync(() => gitItem.GitLastCommitDate = gitItem.GitLastCommitDate);
if (item.IsRealChanges)
await dispatcherQueue.EnqueueOrInvokeAsync(item.UpdateReal);
});
}

private static bool IsDateDiff(DateTimeOffset offset) => (DateTimeOffset.Now - offset).TotalDays < 7;

public void Dispose()
{
CancelLoadAndClearFiles();
Expand Down
4 changes: 2 additions & 2 deletions src/Files.App/Views/Shells/BaseShellPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -775,11 +775,11 @@ private void UpdateDateDisplayTimer_Tick(object sender, object e)
if (userSettingsService.GeneralSettingsService.DateTimeFormat != _lastDateTimeFormats)
{
_lastDateTimeFormats = userSettingsService.GeneralSettingsService.DateTimeFormat;
ShellViewModel?.UpdateDateDisplay(true);
ShellViewModel?.UpdateDateDisplay();
}
else if (userSettingsService.GeneralSettingsService.DateTimeFormat == DateTimeFormats.Application)
{
ShellViewModel?.UpdateDateDisplay(false);
ShellViewModel?.UpdateDateDisplay();
}
}

Expand Down
Loading