www.pudn.com > lphant-v1.00-src.zip > MenuInfo.cs
using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Collections;
using System.Xml;
namespace eLePhant.Client
{
///
/// Summary description for MenuInfo.
///
public class CMenuInfo
{
private Menu.MenuItemCollection MenuItems;
private string m_SearchString;
private string m_eD2kLink;
private string m_FileHash;
private bool m_IsFilm;
private Hashtable Actions;
private MenuItem ShowAllLanguageMenuItem;
private bool m_ShowAllLanguage;
private string m_Language;
private bool m_DisplayBar;
private Menu m_Owner;
public string SearchString
{
set
{
// if ((Path.GetExtension(value)==".avi")||
// (Path.GetExtension(value)==".mpeg")||
// (Path.GetExtension(value)==".mpg")||
// (Path.GetExtension(value)==".ogm")
// )
// m_IsFilm=true;
// else
// m_IsFilm=false;
m_IsFilm=CUtils.IsVideo(value);
m_SearchString=CNameCleaner.Clean(value);
}
}
public string Language
{
get
{
return m_Language;
}
set
{
m_Language=value;
}
}
public bool ShowAllLanguage
{
get
{
return m_ShowAllLanguage;
}
set
{
m_ShowAllLanguage=value;
}
}
public string eD2kLink
{
set
{
m_eD2kLink=value;
}
}
public string FileHash
{
set
{
m_FileHash=value;
}
}
public CMenuInfo(Menu owner)
{
m_CreateMenuInfo(owner);
}
private void m_CreateMenuInfo(Menu owner)
{
m_Language = m_GetLanguageFromCulture(eLePhantForm.preferences.GetString("Language"));
m_ShowAllLanguage = eLePhantForm.preferences.GetBool("ShowAllLanguages",true);
m_Owner = owner;
Actions=new Hashtable();
MenuItems=new Menu.MenuItemCollection(owner);
MenuItem menu;
try
{
ShowAllLanguageMenuItem = new MenuItem(eLePhantForm.Globalization["LBL_SHOW_ALL_LANGUAGES"],new EventHandler(ShowAllLanguageMenuItem_Click));
ShowAllLanguageMenuItem.DefaultItem = true;
ShowAllLanguageMenuItem.Checked = m_ShowAllLanguage;
MenuItems.Add(ShowAllLanguageMenuItem);
menu=new MenuItem("-");
MenuItems.Add(menu);
XmlDocument doc = new XmlDocument();
doc.Load(Application.StartupPath + Path.DirectorySeparatorChar + "webSearchs.xml");
XmlNodeList nodes = doc.DocumentElement["Searchs"].ChildNodes;
foreach (XmlElement el in nodes)
{
if (el.Name=="Search")
{
if ((el.Attributes.Count>2) &&
(el.Attributes["SiteName"].InnerText!="")&&
(el.Attributes["URL"].InnerText!="")&&
(el.Attributes["Language"].InnerText!=""))
{
String NodeLanguage = el.Attributes["Language"].InnerText;
if(!m_ShowAllLanguage && NodeLanguage!=m_Language && NodeLanguage!="All")
{
m_DisplayBar = false;
}
else
{
m_DisplayBar = true;
menu=new MenuItem(el.Attributes["SiteName"].InnerText+"\t("+el.Attributes["Language"].InnerText+")",new EventHandler(OnItemClicked));
MenuItems.Add(menu);
Actions.Add(menu,el.Attributes["URL"].InnerText);
}
}else if(m_DisplayBar && el.Attributes["SiteName"].InnerText=="-")
{
menu=new MenuItem("-");
MenuItems.Add(menu);
}
}
}
if(MenuItems[MenuItems.Count-1].Text=="-") MenuItems.RemoveAt(MenuItems.Count-1);
}
catch(Exception e)
{
Debug.WriteLine(e.ToString());
}
}
private void OnItemClicked(object sender, System.EventArgs e)
{
if (m_SearchString.Length==0) return;
string url=(string)Actions[sender];
url=url.Replace("[CleanName]",m_SearchString);
url=url.Replace("[HashId]",m_FileHash);
url=url.Replace("[eD2kLink]",m_eD2kLink);
if (m_IsFilm)
url=url.Replace("[film]","film");
else
url=url.Replace("[film]","");
if (url.Length>0)
Process.Start(url);
}
private void ShowAllLanguageMenuItem_Click(object sender, EventArgs e)
{
m_ShowAllLanguage=!ShowAllLanguageMenuItem.Checked;
eLePhantForm.preferences.SetProperty("ShowAllLanguages",m_ShowAllLanguage);
ShowAllLanguageMenuItem.Click-=new EventHandler(ShowAllLanguageMenuItem_Click);
MenuItems.Clear();
m_CreateMenuInfo(m_Owner);
}
public void OnMenuInfoChange()
{
if(m_ShowAllLanguage!=eLePhantForm.preferences.GetBool("ShowAllLanguages",true))
{
ShowAllLanguageMenuItem.Click-=new EventHandler(ShowAllLanguageMenuItem_Click);
MenuItems.Clear();
m_CreateMenuInfo(m_Owner);
return;
}
if(m_Language!=m_GetLanguageFromCulture(eLePhantForm.preferences.GetString("Language")))
{
ShowAllLanguageMenuItem.Click-=new EventHandler(ShowAllLanguageMenuItem_Click);
MenuItems.Clear();
m_CreateMenuInfo(m_Owner);
return;
}
}
private string m_GetLanguageFromCulture(string CultureInfo)
{
return CultureInfo.Split("-".ToCharArray())[0];
}
}
}