using System; using System.Collections.Generic; using System.Windows.Forms; using Microsoft.Win32; namespace Common { class RecentFiles { public List Items = new List(); public int MaxCount = 10; public event EventHandler Change; public EventArgs e = null; public void AddItem(string fileName) { int index = Items.IndexOf(fileName); if (index != -1) Items.RemoveAt(index); Items.Insert(0, fileName); LimitMaxCount(); DoChange(); } public void LimitMaxCount() { while (Items.Count > MaxCount) Items.RemoveAt(Items.Count - 1); } public string GetFirstFileName() { if (Items.Count > 0) return Items[0]; else return ""; } private void DoChange() { Change?.Invoke(this, new EventArgs()); } public void LoadFromRegistry(string regSubKey) { RegistryKey regKey = Application.UserAppDataRegistry.OpenSubKey(regSubKey); if (regKey == null) regKey = Application.UserAppDataRegistry.CreateSubKey(regSubKey); int count = (int)regKey.GetValue("Count", 0); Items.Clear(); for (int i = 0; i < count; i++) { Items.Add((string)regKey.GetValue("FileName" + i, "")); } DoChange(); } public void SaveToRegistry(string regSubKey) { RegistryKey regKey = Application.UserAppDataRegistry.OpenSubKey(regSubKey, true); if (regKey == null) regKey = Application.UserAppDataRegistry.CreateSubKey(regSubKey); regKey.SetValue("Count", Items.Count); for (int i = 0; i < Items.Count; i++) { regKey.SetValue("FileName" + i, Items[i]); } } public void LoadToMenu(ToolStripMenuItem menuItem, EventHandler handler) { while (menuItem.DropDownItems.Count < Items.Count) { ToolStripMenuItem newItem = new ToolStripMenuItem(); newItem.Click += handler; Theme.ApplyTheme(newItem); menuItem.DropDownItems.Add(newItem); } while (menuItem.DropDownItems.Count > Items.Count) menuItem.DropDownItems.RemoveAt(menuItem.DropDownItems.Count - 1); for (int i = 0; i < Items.Count; i++) { menuItem.DropDownItems[i].Text = Items[i]; } } } }