49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
using InnovEnergy.Lib.Utils;
|
|
|
|
namespace InnovEnergy.FossilTui;
|
|
// ReSharper disable once PropertyCanBeMadeInitOnly.Global
|
|
|
|
public sealed class Change
|
|
{
|
|
|
|
public FossilState State { get; }
|
|
public FossilAction SelectedAction { get; private set; } = FossilAction.Ignore;
|
|
public String File { get; }
|
|
|
|
|
|
public Change(FossilState state, String file)
|
|
{
|
|
State = state;
|
|
File = file;
|
|
}
|
|
|
|
public Boolean Equals(Change? other)
|
|
{
|
|
return File == other?.File;
|
|
}
|
|
|
|
public override Int32 GetHashCode()
|
|
{
|
|
return File.GetHashCode();
|
|
}
|
|
|
|
public FossilAction SelectNextAction(Boolean canCommit)
|
|
{
|
|
return SelectedAction = State
|
|
.AvailableActions
|
|
.Unless(a => a == FossilAction.Commit && !canCommit)
|
|
.ToList()
|
|
.GetNext(SelectedAction);
|
|
}
|
|
|
|
public FossilAction SelectPreviousAction(Boolean canCommit)
|
|
{
|
|
return SelectedAction = State
|
|
.AvailableActions
|
|
.Unless(a => a == FossilAction.Commit && !canCommit)
|
|
.ToList()
|
|
.GetPrevious(SelectedAction);
|
|
}
|
|
|
|
}// ignore me
|