feat(merge): toggle add/remove per side, MAIN/INCOMING labels, files readout
- Conflict accept is now a per-side toggle: > adds MAIN (ours), < adds INCOMING (theirs) in click order (first on top); clicking again removes that side, so each side is included at most once. Region content is rebuilt from the included set. - Drop the separate reset (x) control — toggling both off clears the region. - Relabel the panes/tooltips Ours/Theirs -> MAIN/INCOMING (merge target vs task). - Add a cross-file 'N of M files unresolved' readout (FilesSummary) so you can see how many more files still have conflicts. en/de updated; Ui 128 + Loc 16 green.
This commit is contained in:
@@ -88,6 +88,21 @@ public sealed partial class ConflictResolverViewModel : ObservableObject
|
||||
public IReadOnlyList<string> BinaryFilePaths => Files.Where(f => f.IsBinary).Select(f => f.Path).ToList();
|
||||
public bool HasBinaryFiles => Files.Any(f => f.IsBinary);
|
||||
|
||||
public bool HasMultipleFiles => Files.Count > 1;
|
||||
|
||||
/// <summary>Cross-file progress shown in the editor: how many files still have unresolved
|
||||
/// (or binary) conflicts, so you can see how many more need attention.</summary>
|
||||
public string FilesSummary
|
||||
{
|
||||
get
|
||||
{
|
||||
var total = Files.Count;
|
||||
if (total == 0) return "";
|
||||
var unresolved = Files.Count(f => !f.AllResolved);
|
||||
return unresolved == 0 ? $"All {total} files resolved" : $"{unresolved} of {total} files unresolved";
|
||||
}
|
||||
}
|
||||
|
||||
public string ContinueHint => HasBinaryFiles
|
||||
? "Binary conflicts must be resolved externally — abort and resolve in your editor."
|
||||
: "";
|
||||
@@ -171,6 +186,8 @@ public sealed partial class ConflictResolverViewModel : ObservableObject
|
||||
OnPropertyChanged(nameof(TotalConflicts));
|
||||
OnPropertyChanged(nameof(BinaryFilePaths));
|
||||
OnPropertyChanged(nameof(HasBinaryFiles));
|
||||
OnPropertyChanged(nameof(HasMultipleFiles));
|
||||
OnPropertyChanged(nameof(FilesSummary));
|
||||
RecomputeCanContinue();
|
||||
if (_flat.Count > 0)
|
||||
MoveTo(0); // also sets ActiveFile via MoveTo
|
||||
@@ -193,6 +210,7 @@ public sealed partial class ConflictResolverViewModel : ObservableObject
|
||||
OnPropertyChanged(nameof(ResolvedCount));
|
||||
OnPropertyChanged(nameof(PositionText));
|
||||
OnPropertyChanged(nameof(ActiveResultText));
|
||||
OnPropertyChanged(nameof(FilesSummary));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user