Cleanup OLD MRI list
If the ItemID doesn't exist, remove the item. If the Menu text and Tooltip don't match, ask if the item should be removed. Always use the current Menu text and tooltip on the menu, rather than the one that was saved.
This commit is contained in:
parent
adabca0068
commit
518c79216a
@ -39,7 +39,10 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
public MostRecentItem Add(string s)
|
public MostRecentItem Add(string s)
|
||||||
{
|
{
|
||||||
return Add(new MostRecentItem(s));
|
MostRecentItem mri = MostRecentItem.ParseString(s);
|
||||||
|
if(mri != null)
|
||||||
|
Add(mri);
|
||||||
|
return mri;
|
||||||
}
|
}
|
||||||
public MostRecentItem Add(IVEDrillDownReadOnly myDrillDown)
|
public MostRecentItem Add(IVEDrillDownReadOnly myDrillDown)
|
||||||
{
|
{
|
||||||
@ -81,7 +84,7 @@ namespace Volian.Controls.Library
|
|||||||
_ItemID = value.ItemID;
|
_ItemID = value.ItemID;
|
||||||
_MyItemInfo = value;
|
_MyItemInfo = value;
|
||||||
_MenuTitle = GetMenuTitle();
|
_MenuTitle = GetMenuTitle();
|
||||||
_ToolTip = GetToolTip();
|
_ToolTip = GetToolTip(_MyItemInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private int _ItemID;
|
private int _ItemID;
|
||||||
@ -111,37 +114,53 @@ namespace Volian.Controls.Library
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_ToolTip == null)
|
if (_ToolTip == null)
|
||||||
_ToolTip = GetToolTip();
|
_ToolTip = GetToolTip(MyItemInfo);
|
||||||
return _ToolTip;
|
return _ToolTip;
|
||||||
}
|
}
|
||||||
set { _ToolTip = value; }
|
set { _ToolTip = value; }
|
||||||
}
|
}
|
||||||
private string GetToolTip()
|
private static string GetToolTip(ItemInfo item)
|
||||||
{
|
{
|
||||||
// reset active parent if null
|
// reset active parent if null
|
||||||
// if (MyItemInfo.MyProcedure.ActiveParent == null) MyItemInfo.MyProcedure.ActiveParent = null;
|
// if (MyItemInfo.MyProcedure.ActiveParent == null) MyItemInfo.MyProcedure.ActiveParent = null;
|
||||||
DocVersionInfo tmp = (DocVersionInfo)(MyItemInfo.MyProcedure.ActiveParent);
|
DocVersionInfo tmp = (DocVersionInfo)(item.MyProcedure.ActiveParent);
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
int indent = BuildPath(tmp.MyFolder, ref sb);
|
int indent = BuildPath(tmp.MyFolder, ref sb);
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
private int BuildPath(FolderInfo folderInfo, ref StringBuilder sb)
|
private static int BuildPath(FolderInfo folderInfo, ref StringBuilder sb)
|
||||||
{
|
{
|
||||||
if (folderInfo.MyParent == null) return 0;
|
if (folderInfo.MyParent == null) return 0;
|
||||||
int indent = BuildPath(folderInfo.MyParent, ref sb);
|
int indent = BuildPath(folderInfo.MyParent, ref sb);
|
||||||
sb.Append(string.Format("{0}{1}\r\n", "".PadLeft(indent * 2), folderInfo.Name));
|
sb.Append(string.Format("{0}{1}\n", "".PadLeft(indent * 2), folderInfo.Name));
|
||||||
return indent;
|
return indent;
|
||||||
}
|
}
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return string.Format("{0}~{1}~{2}", _ItemID, MenuTitle, ToolTip);
|
return string.Format("{0}~{1}~{2}", _ItemID, MenuTitle, ToolTip);
|
||||||
}
|
}
|
||||||
public MostRecentItem(string str)
|
public static MostRecentItem ParseString(string str)
|
||||||
{
|
{
|
||||||
string[] parts = str.Split("~".ToCharArray());
|
string[] parts = str.Split("~".ToCharArray());
|
||||||
_ItemID = int.Parse(parts[0]);
|
int itemID = int.Parse(parts[0]);
|
||||||
if (parts.Length > 1) _MenuTitle = parts[1];
|
ItemInfo item = ItemInfo.Get(itemID);
|
||||||
if (parts.Length > 2) _ToolTip = parts[2];
|
if (item == null) return null;
|
||||||
|
if (parts.Length > 1 && parts[1] != item.Path && !RetainBadMRIs())
|
||||||
|
return null; // Path doesn't match
|
||||||
|
if (parts.Length > 2 && parts[2] != GetToolTip(item) && !RetainBadMRIs())
|
||||||
|
return null;// Tooltip doesn't match
|
||||||
|
Console.WriteLine("{0},'{1}'", parts[0], parts[1]);
|
||||||
|
return new MostRecentItem(item);
|
||||||
|
}
|
||||||
|
private static int _RetainBadMRIs = 0;
|
||||||
|
private static bool RetainBadMRIs()
|
||||||
|
{
|
||||||
|
if (_RetainBadMRIs == 0)
|
||||||
|
{
|
||||||
|
System.Windows.Forms.DialogResult result = System.Windows.Forms.MessageBox.Show("Do you want to retain old Recently Used Entries?", "Retain Recent Locations", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question);
|
||||||
|
_RetainBadMRIs = result == System.Windows.Forms.DialogResult.Yes ? 2 : 1;
|
||||||
|
}
|
||||||
|
return _RetainBadMRIs == 2;
|
||||||
}
|
}
|
||||||
public MostRecentItem(ItemInfo myItem)
|
public MostRecentItem(ItemInfo myItem)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user