using JetBrains.Annotations;
using Unity.Cloud.Collaborate.Models.Structures;
namespace Unity.Cloud.Collaborate.Presenters
{
internal interface IChangesPresenter : IPresenter
{
///
/// Count of the number of toggled entries.
///
int ToggledCount { get; }
///
/// Count of the total number of entries.
///
int TotalCount { get; }
///
/// Count of the number of conflicted entries.
///
int ConflictedCount { get; }
///
/// Whether or no a search is occuring.
///
bool Searching { get; }
///
/// Toggles or untoggles the entry associated with the give path. If the toggle impacts more than the existing
/// entry, then this will return true to indicate that the toggled states must be refreshed.
///
/// Path of the associated entry.
/// Whether or not the entry is now toggled.
/// True if the list must be refreshed.
bool UpdateEntryToggle([NotNull] string path, bool toggled);
///
/// Request a publish with the existing values known by the presenter.
///
void RequestPublish();
///
/// Request a discard for the file at the given path.
///
/// Entry to discard.
void RequestDiscard([NotNull] IChangeEntry entry);
///
/// Request a diff of the file at the given path.
///
/// Path of the file to diff.
void RequestDiffChanges([NotNull] string path);
///
/// Provide the presenter with the latest search query.
///
/// Latest search query.
void SetSearchQuery([NotNull] string query);
///
/// Provide the latest revision summary to the presenter.
///
/// Latest commit message.
void SetRevisionSummary([NotNull] string message);
///
/// Number of entries in the group overflow menu.
///
int GroupOverflowEntryCount { get; }
///
/// Event handler for clicking the overflow button in the changes list.
///
/// X position of the click.
/// Y position of the click.
void OnClickGroupOverflow(float x, float y);
///
/// Number of entries in the conflict group overflow menu.
///
int ConflictGroupOverflowEntryCount { get; }
///
/// Event handler for clicking the overflow button in the conflicts list.
///
/// X position of the click.
/// Y position of the click.
void OnClickConflictGroupOverflow(float x, float y);
///
/// Show the difference between both version of a conlicted file.
///
/// Path of the file to show.
void RequestShowConflictedDifferences([NotNull] string path);
///
/// Request to choose merge for the provided conflict.
///
/// Path of the file to choose merge for.
void RequestChooseMerge([NotNull] string path);
///
/// Request to choose mine for the provided conflict.
///
/// Path of the file to choose mine for.
void RequestChooseMine([NotNull] string path);
///
/// Request to choose remote for the provided conflict.
///
/// Path of the file to choose remote for.
void RequestChooseRemote([NotNull] string path);
}
}