using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Launcheroid
{
public partial class FItem : Form
{
private FItem()
{
InitializeComponent();
}
private static bool Open(LRD3.Item item, string import)
{
bool saved;
using (FItem f = new FItem())
{
f.LoadItem(item);
f.LinkToPath(import);
saved = f.ShowDialog() == DialogResult.OK;
if (saved)
f.SaveItem(item);
}
return saved;
}
public static bool Execute(LRD3.Item item)
{
return Open(item, null);
}
public static LRD3.Item Import(string path)
{
LRD3.Item i = new LRD3.Item();
if (Open(i, path))
return i;
return null;
}
private void LoadItem(LRD3.Item item)
{
tbName.Text = Text = item.Name;
tbPath.Text = item.Path;
tbDirectory.Text = item.InitialFolder;
tbArguments.Text = item.Arguments;
pbIcon.Image = item.Image;
}
private void SaveItem(LRD3.Item item)
{
item.Name = tbName.Text;
item.Path = tbPath.Text;
item.InitialFolder = tbDirectory.Text;
item.Arguments = tbArguments.Text;
item.Image = pbIcon.Image;
}
private void LinkToPath(string path)
{
// TODO if it is a link (.lnk) open link and recover information
tbName.Text = Text = Path.GetFileNameWithoutExtension(path);
tbPath.Text = path;
tbDirectory.Text = Path.GetDirectoryName(path);
try
{
pbIcon.Image = Icon.ExtractAssociatedIcon(path).ToBitmap();
}
catch
{
pbIcon.Image = null;
}
}
private void BtOk_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.OK;
}
private void TbName_TextChanged(object sender, EventArgs e)
{
Text = tbName.Text;
}
private void OpenToolStripMenuItem_Click(object sender, EventArgs e)
{
Image i = FImageLoad.Open();
if (i != null)
pbIcon.Image = i;
}
private void DeleteToolStripMenuItem_Click(object sender, EventArgs e)
{
pbIcon.Image = null;
}
private void FItem_DragEnter(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent(DataFormats.FileDrop))
return;
e.Effect = DragDropEffects.Copy;
}
private void FItem_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (files.Length != 1)
return;
Point cp = PointToClient(new Point(e.X, e.Y));
Control dropTarget = GetChildAtPoint(cp);
if (dropTarget == pbIcon)
pbIcon.Image = FImageLoad.Open(files[0]);
else
LinkToPath(files[0]);
}
private void BtPathGet_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "Executables|*.exe;*.com;*.lnk|All files|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
LinkToPath(ofd.FileName);
}
}
private void ContextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
deleteToolStripMenuItem.Enabled = pbIcon.Image != null;
}
}
}