// // Copyright 2014 Perforce Software Inc. // using Perforce.Helper; using Perforce.P4; using System.Collections.Generic; using System.Windows.Documents; using System.Linq; using System; namespace Perforce.ViewModel { public class SubmitFormViewModel : ViewModelBase { public SubmitFormViewModel(int changeId = 0, string[] selected = null) { var helper = Utility.GetPerforceHelper(); if (changeId == 0) { _change = helper.GetOrCreatePendingChangelist(); } else { _change = helper.GetChangelist(changeId); } _changelistFiles = new List(); if (_change.Files != null) { foreach (var f in _change.Files) { var isSelected = false; if (selected != null) { if (selected.Contains(f.DepotPath.Path)) { isSelected = true; } } else { isSelected = true; } var file = new ChangelistFile { Selected = isSelected, Filename = f.GetFileName(), Path = f.DepotPath.Path, Action = f.Action }; _changelistFiles.Add(file); } // sort the changelist files _changelistFiles.Sort(); } } private Changelist _change; public void RefreshAll() { OnPropertyChanged(string.Empty); } public Changelist Changelist { get { return _change; } set { _change = value; OnPropertyChanged(string.Empty); } } public string Description { get { var description = string.Empty; if (!_change.Description.Trim().Equals(Constants.GENERATED_CHANGELIST_DESCRIPTION)) { description = _change.Description; } return description; } set { _change.Description = value; OnPropertyChanged("Description"); } } private List _changelistFiles; public List ChangelistFiles { get { return _changelistFiles; } set { _changelistFiles = value; OnPropertyChanged("ChangelistFiles"); } } } public class ChangelistFile : ViewModelBase, IComparable { private bool _selected; public bool Selected { get { return _selected; } set { _selected = value; OnPropertyChanged("Selected"); } } public string Filename { get; set; } public string Path { get; set; } public FileAction Action { get; set; } public int CompareTo(object o) { var other = o as ChangelistFile; if (Selected == other.Selected) { return Path.ToLowerInvariant().CompareTo(other.Path.ToLowerInvariant()); } else { if (Selected) { return -1; } else { return 1; } } } } }