| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | using UnityEngine;using UnityEditor;using System.Collections.Generic;//-----------------------------------------------------------------------------// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.//-----------------------------------------------------------------------------namespace RenderHeads.Media.AVProVideo.Editor{	/// <summary>	/// </summary>	public static class RecentItems	{		private const int MaxRecentItems = 16;		private static List<string> _recentFiles = new List<string>(MaxRecentItems);		private static List<string> _recentUrls = new List<string>(MaxRecentItems);		// TODO: add a list for favourites to allow user to create their own list?		public static List<string> Files { get { return _recentFiles; } }		public static List<string> Urls { get { return _recentUrls; } }		static RecentItems()		{			MediaPlayer.InternalMediaLoadedEvent.RemoveListener(Add);			MediaPlayer.InternalMediaLoadedEvent.AddListener(Add);		}		public static void Load()		{			_recentFiles = EditorHelper.GetEditorPrefsToStringList(MediaPlayerEditor.SettingsPrefix + "RecentFiles");			_recentUrls = EditorHelper.GetEditorPrefsToStringList(MediaPlayerEditor.SettingsPrefix + "RecentUrls");		}		public static void Save()		{			EditorHelper.SetEditorPrefsFromStringList(MediaPlayerEditor.SettingsPrefix + "RecentFiles", _recentFiles);			EditorHelper.SetEditorPrefsFromStringList(MediaPlayerEditor.SettingsPrefix + "RecentUrls", _recentUrls);		}		public static void Add(string path)		{			if (path.Contains("://"))			{				Add(path, _recentUrls);			}			else			{				Add(path, _recentFiles);			}		}		private static void Add(string path, List<string> list)		{			if (!list.Contains(path))			{				list.Insert(0, path);				if (list.Count > MaxRecentItems)				{					// Remove the oldest item from the list					list.RemoveAt(list.Count - 1);				}			}			else			{				// If it already contains the item, then move it to the top				list.Remove(path);				list.Insert(0, path);			}			Save();		}		public static void ClearMissingFiles()		{			if (_recentFiles != null && _recentFiles.Count > 0)			{				List<string> newList = new List<string>(_recentFiles.Count);				for (int i = 0; i < _recentFiles.Count; i++)				{					string path = _recentFiles[i];					if (System.IO.File.Exists(path))					{						newList.Add(path);					}				}				_recentFiles = newList;			}		}	}}
 |