| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Diagnostics;
 
- using System.IO;
 
- using System.Windows;
 
- using System.Windows.Controls;
 
- using System.Windows.Input;
 
- using System.Windows.Media.Imaging;
 
- using InABox.Core;
 
- using InABox.WPF;
 
- using Microsoft.Win32;
 
- namespace InABox.DynamicGrid
 
- {
 
-     /// <summary>
 
-     ///     Interaction logic for KanbanAttachments.xaml
 
-     /// </summary>
 
-     public partial class Attachments : UserControl
 
-     {
 
-         private readonly List<Tuple<string, BitmapImage, byte[], int>> Items = new();
 
-         private readonly List<string> ViewedFiles = new();
 
-         public Attachments(Type type, Guid reference)
 
-         {
 
-             InitializeComponent();
 
-             FileList.Items.Clear();
 
-             FileList.ItemsSource = Items;
 
-             //for (int i = 0; i < files.Count(); i++)
 
-             //{
 
-             //    var file = files[i];
 
-             //    Items.Add(new Tuple<string, BitmapImage, byte[], int>(file.FileName, GetBitmapImage(file.FileName), file.Data, i));
 
-             //}
 
-         }
 
-         private BitmapImage GetBitmapImage(string filename)
 
-         {
 
-             var bmp = Wpf.Resources.doc_misc;
 
-             var ext = Path.GetExtension(filename).ToUpper();
 
-             if (ext.Equals(".PDF"))
 
-                 bmp = Wpf.Resources.doc_pdf;
 
-             else if (ext.Equals(".DOC") || ext.Equals(".DOCX") || ext.Equals(".RTF"))
 
-                 bmp = Wpf.Resources.doc_rtf;
 
-             else if (ext.Equals(".XLS") || ext.Equals(".XLSX"))
 
-                 bmp = Wpf.Resources.doc_xls;
 
-             else if (ext.Equals(".TXT"))
 
-                 bmp = Wpf.Resources.doc_txt;
 
-             else if (ext.Equals(".BMP"))
 
-                 bmp = Wpf.Resources.doc_bmp;
 
-             else if (ext.Equals(".PNG"))
 
-                 bmp = Wpf.Resources.doc_png;
 
-             else if (ext.Equals(".JPG") || ext.Equals(".JPEG"))
 
-                 bmp = Wpf.Resources.doc_jpg;
 
-             return bmp.AsBitmapImage().Resize(64, 64);
 
-         }
 
-         //      public void UnloadAttachments(List<MiscellaneousDataFile> files)
 
-         //      {
 
-         //	// First remove any deleted files
 
-         //	for (int i = files.Count - 1; i >= 0; i--)
 
-         //	{
 
-         //		if (!Items.Where(x => x.Item4.Equals(i)).Any())
 
-         //			files.RemoveAt(i);
 
-         //	}
 
-         //	// now add new files
 
-         //	foreach (var item in Items)
 
-         //	{
 
-         //		if (item.Item4.Equals(-1))
 
-         //			files.Add(new MiscellaneousDataFile() { FileName = item.Item1, Data = item.Item3 });
 
-         //	}
 
-         //}
 
-         ~Attachments()
 
-         {
 
-             foreach (var file in ViewedFiles)
 
-                 if (File.Exists(file))
 
-                     try
 
-                     {
 
-                         File.Delete(file);
 
-                     }
 
-                     catch (Exception e)
 
-                     {
 
-                         Logger.Send(LogType.Error, "", string.Format("*** Unknown Error: {0}\n{1}", e.Message, e.StackTrace));
 
-                     }
 
-         }
 
-         private void AddFile_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             var dlg = new OpenFileDialog();
 
-             dlg.Filter = ""; // new MiscellaneousDataFile().Filter();
 
-             if (dlg.ShowDialog() == true)
 
-             {
 
-                 var tuple = new Tuple<string, BitmapImage, byte[], int>(
 
-                     Path.GetFileName(dlg.FileName),
 
-                     GetBitmapImage(dlg.FileName),
 
-                     File.ReadAllBytes(dlg.FileName),
 
-                     -1
 
-                 );
 
-                 Items.Add(tuple);
 
-                 FileList.ItemsSource = null;
 
-                 FileList.ItemsSource = Items;
 
-             }
 
-         }
 
-         private void ViewFile(object tag)
 
-         {
 
-             if (tag is Tuple<string, BitmapImage, byte[], int>)
 
-             {
 
-                 var tuple = (Tuple<string, BitmapImage, byte[], int>)tag;
 
-                 var filename = Path.ChangeExtension(Path.GetTempFileName(), Path.GetExtension(tuple.Item1));
 
-                 File.WriteAllBytes(filename, tuple.Item3);
 
-                 ViewedFiles.Add(filename);
 
-                 var gsProcessInfo = new ProcessStartInfo();
 
-                 gsProcessInfo.Verb = "open";
 
-                 gsProcessInfo.WindowStyle = ProcessWindowStyle.Normal;
 
-                 gsProcessInfo.FileName = filename;
 
-                 gsProcessInfo.UseShellExecute = true;
 
-                 Process.Start(gsProcessInfo);
 
-             }
 
-         }
 
-         private void ViewFile_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             var tag = (sender as MenuItem).Tag;
 
-             ViewFile(tag);
 
-         }
 
-         private void DeleteFile_Click(object sender, RoutedEventArgs e)
 
-         {
 
-             var tag = (sender as MenuItem).Tag;
 
-             if (tag is Tuple<string, BitmapImage, byte[], int>)
 
-             {
 
-                 var tuple = (Tuple<string, BitmapImage, byte[], int>)tag;
 
-                 if (MessageBox.Show("Are you sure you wish to delete this file?", "Confirm File Delete", MessageBoxButton.YesNo)
 
-                     .Equals(MessageBoxResult.Yes))
 
-                 {
 
-                     Items.Remove(tuple);
 
-                     FileList.ItemsSource = null;
 
-                     FileList.ItemsSource = Items;
 
-                 }
 
-             }
 
-         }
 
-         private void Item_MouseDown(object sender, MouseButtonEventArgs e)
 
-         {
 
-             if (e.ChangedButton == MouseButton.Left && e.ClickCount == 2)
 
-             {
 
-                 var tag = (sender as FrameworkElement).Tag;
 
-                 ViewFile(tag);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |