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;
- }
- }
- }
- }
|