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 = Properties.Resources.doc_misc;
- var ext = Path.GetExtension(filename).ToUpper();
- if (ext.Equals(".PDF"))
- bmp = Properties.Resources.doc_pdf;
- else if (ext.Equals(".DOC") || ext.Equals(".DOCX") || ext.Equals(".RTF"))
- bmp = Properties.Resources.doc_rtf;
- else if (ext.Equals(".XLS") || ext.Equals(".XLSX"))
- bmp = Properties.Resources.doc_xls;
- else if (ext.Equals(".TXT"))
- bmp = Properties.Resources.doc_txt;
- else if (ext.Equals(".BMP"))
- bmp = Properties.Resources.doc_bmp;
- else if (ext.Equals(".PNG"))
- bmp = Properties.Resources.doc_png;
- else if (ext.Equals(".JPG") || ext.Equals(".JPEG"))
- bmp = Properties.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);
- }
- }
- }
- }
|