public void AddLastProject(string name, string projectName) { RecentItem ri = new RecentItem (new Uri (name), MimeType.GetMimeTypeForUri (name), "MonoDevelop Projects"); ri.Private = projectName; recentFiles.AddWithLimit (ri, "MonoDevelop Projects", MAX_LENGTH); UpdateLastProject (); }
public void AddLastFile(string name, string project) { RecentItem ri = new RecentItem (new Uri (name), MimeType.GetMimeTypeForUri (name), "MonoDevelop Files"); if (project == null) ri.Private = Path.GetFileName (name); else ri.Private = String.Format ("{0} [{1}]", Path.GetFileName (name), project); recentFiles.AddWithLimit (ri, "MonoDevelop Files", MAX_LENGTH); UpdateLastFile (); }
public void RemoveItem(RecentItem item) { if (RecentItems == null) return; ArrayList l = new ArrayList (); foreach (RecentItem ri in RecentItems) { if (ri == item) { // remove the whole thing } else if (ri.Uri == item.Uri) { if (ri.Groups != null) { // remove the groups if (item.Groups != null) { foreach (string g in item.Groups) ri.RemoveGroup (g); } l.Add (ri); } } else { // keep it l.Add (ri); } } RecentItem[] items = new RecentItem [l.Count]; l.CopyTo (items, 0); RecentItems = items; Save (); }
// return the last X items in newest to oldest order private RecentItem[] GetMostRecent(int count, RecentItem[] items) { if (count >= items.Length) { return items; } else { RecentItem[] countedItems = new RecentItem[count]; // get the last count items Array.Copy (items, items.Length - count - 1, countedItems, 0, count); return countedItems; } }
public RecentItem[] GetItemsInGroup(string group) { if (RecentItems == null) return null; ArrayList list = new ArrayList (); foreach (RecentItem ri in RecentItems) { if (ri.Groups == null) continue; if (Array.IndexOf (ri.Groups, group) != -1) list.Add (ri); } RecentItem[] items = new RecentItem [list.Count]; list.CopyTo (items, 0); return items; }
public void ClearGroup(string group) { if (RecentItems == null) return; ArrayList list = new ArrayList (); foreach (RecentItem ri in RecentItems) { if (Array.IndexOf (ri.Groups, group) == -1) { list.Add (ri); } else { ri.RemoveGroup (group); // it has other groups so dont delete it if (ri.Groups.Length > 0) list.Add (ri); } } RecentItem[] items = new RecentItem [list.Count]; list.CopyTo (items, 0); RecentItems = items; Save (); }
// ensure that that only max items are kept in group public void AddWithLimit(RecentItem item, string group, int max) { if (max < 1) throw new ArgumentException ("max must be > 0"); // we add it first in case the Uri is already there AddItem (item); // then we adjust for the limit RecentItem[] inGroup = GetItemsInGroup (group); if (inGroup.Length > max) { while (inGroup.Length > max) { RemoveItem (GetOldestItem (inGroup)); inGroup = GetItemsInGroup (group); } } }
public void AddItem(RecentItem item) { if (RecentItems == null) { RecentItems = new RecentItem [] {item}; Save (); return; } // check for already existing URI // if it does update timestamp and return unchanged; foreach (RecentItem ri in RecentItems) { if (ri.Uri == item.Uri) { ri.Timestamp = item.Timestamp; if (item.Groups != null) ri.AddGroups (item.Groups); Save (); return; } } while (RecentItems.Length > 499) { RemoveItem (OldestItem); } int length = RecentItems.Length; RecentItem[] newItems = new RecentItem[length + 1]; RecentItems.CopyTo (newItems, 0); newItems[length] = item; RecentItems = newItems; Save (); }
public static RecentItem GetOldestItem(RecentItem[] items) { return items[items.Length - 1]; }