FabitArchiwum/FabitArchiwum.App/AppForm.cs
Krzysztof Famulski 58f5e326e0 Add project files.
2024-11-02 15:32:42 +01:00

907 lines
38 KiB
C#

using ComponentFactory.Krypton.Toolkit;
using FabitArchiwum.App.Model;
using iTextSharp.text;
using Newtonsoft.Json;
using PdfiumViewer;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using WIA;
using static System.Net.Mime.MediaTypeNames;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace FabitArchiwum.App
{
public partial class AppForm : ComponentFactory.Krypton.Toolkit.KryptonForm
{
LoginForm loginForm;
List<TreeModel> tree = new List<TreeModel>();
KryptonTreeView _fieldsTreeCache = new KryptonTreeView();
DeviceManager deviceManager = new DeviceManagerClass();
DeviceInfo selectedScanner = null;
Device device;
WIA.CommonDialog dialog;
public AppForm()
{
InitializeComponent();
//for (int i = 1; i <= deviceManager.DeviceInfos.Count; i++)
//{
// if (deviceManager.DeviceInfos[i].Type != WiaDeviceType.ScannerDeviceType)
// {
// continue;
// }
// kryptonComboBox1.Items.Add(deviceManager.DeviceInfos[i].Properties["Name"].get_Value().ToString());
//}
//if (kryptonComboBox1.Items.Count > 0)
//{
// kryptonComboBox1.SelectedIndex = 0;
// selectedScanner = deviceManager.DeviceInfos[kryptonComboBox1.SelectedIndex + 1];
//}
try
{
dialog = new WIA.CommonDialogClass();
device = dialog.ShowSelectDevice(AlwaysSelectDevice: true);
}
catch (Exception ex)
{
MessageBox.Show("Brak skanera lub sterowników WIA", "Błąd");
}
bindTreeView();
treeView1.Nodes[0].Expand();
}
private void bindTreeView()
{
tree = JsonConvert.DeserializeObject<List<TreeModel>>(AppHelper.GetInstance().getTree());
treeView1.Nodes.Clear();
_fieldsTreeCache.Nodes.Clear();
TreeNodeCollection tnc = treeView1.Nodes;
bindTreeViewReq(0, tnc);
TreeNodeCollection tncCache = _fieldsTreeCache.Nodes;
bindTreeViewReq(0, tncCache);
//treeView1.ExpandAll();
kryptonButton1.Enabled = false;
kryptonButton2.Enabled = false;
kryptonButton3.Enabled = false;
kryptonButton4.Enabled = false;
kryptonButton5.Enabled = false;
kryptonButton9.Enabled = false;
kryptonButton10.Enabled = false;
kryptonButton6.Enabled = false;
kryptonButton7.Enabled = false;
kryptonButton8.Enabled = false;
listBox1.ClearSelected();
kryptonLabel1.Text = "";
pdfViewer1.Document?.Dispose();
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
pdfViewer1.Document = pdf;
}
private void bindTreeViewReq(int parentKey, TreeNodeCollection n)
{
var st = tree.Where(a => a.ParentId == parentKey).ToList();
foreach (var item in st)
{
n.Add(item.Id.ToString(), item.Text);
var subtree = tree.Where(a => a.ParentId == item.Id).ToList();
if (subtree.Count() > 0) bindTreeViewReq((int)item.Id, n[n.Count - 1].Nodes);
}
treeView1.Scrollable = true;
}
private void AppForm_Shown(object sender, EventArgs e)
{
// this.Visible = false;
// loginForm = new LoginForm();
// loginForm.ShowDialog();
if (AppHelper.GetInstance().isLogged())
{
//bindTreeView();
}
else
{
this.Close();
}
}
public byte[] ImageToByteArray(System.Drawing.Image imageIn)
{
using (var ms = new MemoryStream())
{
imageIn.Save(ms, imageIn.RawFormat);
return ms.ToArray();
}
}
private void button1_Click(object sender, EventArgs e)
{
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
listBox1.Items.Clear();
int treeId = int.Parse(treeView1.SelectedNode.Name);
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
var ds = doc.Where(d => d.TreeId == treeId).ToList();
foreach (var d in ds)
{
listBox1.Items.Add(d);
}
kryptonButton1.Enabled = true;
kryptonButton2.Enabled = true;
kryptonButton3.Enabled = true;
kryptonButton6.Enabled = true;
kryptonButton7.Enabled = true;
kryptonButton8.Enabled = true;
kryptonButton4.Enabled = false;
kryptonButton5.Enabled = false;
kryptonButton9.Enabled = false;
kryptonButton10.Enabled = true;
listBox1.ClearSelected();
kryptonLabel1.Text = "";
pdfViewer1.Document?.Dispose();
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
pdfViewer1.Document = pdf;
}
private void kryptonPanel1_Resize(object sender, EventArgs e)
{
}
private void kryptonButton2_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Usunąć?", "Potwierdzenie", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
try
{
TreeNode tn = treeView1.SelectedNode;
AppHelper.GetInstance().deleteTree(int.Parse(tn.Name));
bindTreeView();
}
catch (UnauthorizedAccessException)
{
KryptonMessageBox.Show("Brak dostępu", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception ex)
{
KryptonMessageBox.Show("Błąd: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void plikToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
{
kryptonButton4.Enabled = true;
kryptonButton5.Enabled = true;
kryptonButton9.Enabled = true;
kryptonButton10.Enabled = true;
kryptonButton6.Enabled = true;
kryptonButton7.Enabled = true;
kryptonButton8.Enabled = true;
}
else
{
kryptonButton4.Enabled = false;
kryptonButton5.Enabled = false;
kryptonButton9.Enabled = false;
kryptonButton10.Enabled = true;
kryptonButton6.Enabled = false;
kryptonButton7.Enabled = false;
kryptonButton8.Enabled = false;
}
}
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
{
kryptonButton4.Enabled = true;
kryptonButton5.Enabled = true;
kryptonButton9.Enabled = true;
kryptonButton10.Enabled = true;
DocumentModel d = AppHelper.GetInstance().getDocumentById(((DocumentModel)listBox1.SelectedItem).Id);
if (d != null && d.Image != null)
{
try
{
using (MemoryStream ms = new MemoryStream(d.Image))
{
kryptonLabel1.Text = d.Name;
pdfViewer1.Document?.Dispose();
var pdf = PdfDocument.Load(ms);
pdf.Save(Path.GetTempPath()+"\\temp.pdf");
pdf = PdfDocument.Load(Path.GetTempPath() + "\\temp.pdf");
pdfViewer1.Document = pdf;
}
}
catch
{
kryptonLabel1.Text = "";
pdfViewer1.Document?.Dispose();
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
pdfViewer1.Document = pdf;
}
}
}
else
{
kryptonButton4.Enabled = false;
kryptonButton5.Enabled = false;
kryptonButton9.Enabled = false;
kryptonButton10.Enabled = true;
}
}
private void kryptonButton1_Click(object sender, EventArgs e)
{
var sn = treeView1.SelectedNode;
var nowyFolder = KryptonInputBox.Show("Wpisz nazwę nowego folderu:", "Nowy folder", "");
if (nowyFolder != "")
{
try
{
AppHelper.GetInstance().putTree(int.Parse(treeView1.SelectedNode.Name), nowyFolder);
bindTreeView();
treeView1.Focus();
KryptonMessageBox.Show("Zapisano", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (UnauthorizedAccessException)
{
KryptonMessageBox.Show("Brak dostępu", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception ex)
{
KryptonMessageBox.Show("Błąd zapisu: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
treeView1.SelectedNode = treeView1.Nodes.Find(sn.Name, true)[0];
treeView1.SelectedNode.Expand();
}
private void kryptonButton3_Click(object sender, EventArgs e)
{
var nowaNazwa = KryptonInputBox.Show("Wpisz nową nazwę folderu:", "Zmiana nazwy", treeView1.SelectedNode.Text);
if (nowaNazwa != "")
{
try
{
TreeNode tn = treeView1.SelectedNode;
AppHelper.GetInstance().renameTree(int.Parse(tn.Name), nowaNazwa);
bindTreeView();
treeView1.SelectedNode = treeView1.Nodes.Find(tn.Name, true)[0];
treeView1.Focus();
KryptonMessageBox.Show("Zapisano", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
KryptonMessageBox.Show("Błąd zapisu: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void AppForm_SizeChanged(object sender, EventArgs e)
{
kryptonPanel3.Height = (kryptonPanel1.Height / 2) - 6;
kryptonPanel2.Height = (kryptonPanel1.Height / 2) - 3;
kryptonPanel2.Top = 3;
kryptonPanel3.Top = (kryptonPanel1.Height / 2);
kryptonPanel3.Width = kryptonPanel1.Width - 6;
kryptonPanel2.Width = kryptonPanel1.Width - 6;
treeView1.Height = (kryptonPanel1.Height / 2) - 35;
listBox1.Height = (kryptonPanel1.Height / 2) - 38;
kryptonButton1.Top = (kryptonPanel1.Height / 2) - 32;
kryptonButton2.Top = (kryptonPanel1.Height / 2) - 32;
kryptonButton3.Top = (kryptonPanel1.Height / 2) - 32;
kryptonButton11.Top = (kryptonPanel1.Height / 2) - 32;
kryptonButton4.Top = (kryptonPanel1.Height / 2) - 32;
kryptonButton5.Top = (kryptonPanel1.Height / 2) - 32;
kryptonButton9.Top = (kryptonPanel1.Height / 2) - 32;
kryptonButton10.Top = (kryptonPanel1.Height / 2) - 32;
}
private void kryptonButton5_Click(object sender, EventArgs e)
{
var nowaNazwa = KryptonInputBox.Show("Wpisz nową nazwę dokumentu:", "Zmiana nazwy", ((DocumentModel)listBox1.SelectedItem).Name);
var si = (DocumentModel)listBox1.SelectedItem;
if (nowaNazwa != "")
{
try
{
AppHelper.GetInstance().renameDocument(si.Id, nowaNazwa);
listBox1.Items.Clear();
int treeId = int.Parse(treeView1.SelectedNode.Name);
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
var ds = doc.Where(d => d.TreeId == treeId).ToList();
foreach (var d in ds)
{
listBox1.Items.Add(d);
}
kryptonButton4.Enabled = false;
kryptonButton5.Enabled = false;
kryptonButton9.Enabled = false;
kryptonButton10.Enabled = true;
KryptonMessageBox.Show("Zapisano", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
KryptonMessageBox.Show("Błąd zapisu: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void kryptonButton4_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Usunąć?", "Potwierdzenie", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
try
{
var si = (DocumentModel)listBox1.SelectedItem;
AppHelper.GetInstance().deleteDocument(si.Id);
listBox1.Items.Clear();
int treeId = int.Parse(treeView1.SelectedNode.Name);
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
var ds = doc.Where(d => d.TreeId == treeId).ToList();
foreach (var d in ds)
{
listBox1.Items.Add(d);
}
kryptonButton4.Enabled = false;
kryptonButton5.Enabled = false;
kryptonButton9.Enabled = false;
kryptonButton10.Enabled = true;
kryptonLabel1.Text = "";
pdfViewer1.Document?.Dispose();
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
pdfViewer1.Document = pdf;
}
catch (UnauthorizedAccessException)
{
KryptonMessageBox.Show("Brak dostępu", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception ex)
{
KryptonMessageBox.Show("Błąd: " + ex.Message + ex.InnerException + ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void oToolStripMenuItem_Click(object sender, EventArgs e)
{
OProgramieForm oProgramieForm = new OProgramieForm();
oProgramieForm.ShowDialog();
}
const string wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";
const string wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
class WIA_DPS_DOCUMENT_HANDLING_SELECT
{
public const uint FEEDER = 0x00000001;
public const uint FLATBED = 0x00000002;
}
class WIA_DPS_DOCUMENT_HANDLING_STATUS
{
public const uint FEED_READY = 0x00000001;
}
class WIA_PROPERTIES
{
public const uint WIA_RESERVED_FOR_NEW_PROPS = 1024;
public const uint WIA_DIP_FIRST = 2;
public const uint WIA_DPA_FIRST = WIA_DIP_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
public const uint WIA_DPC_FIRST = WIA_DPA_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
//
// Scanner only device properties (DPS)
//
public const uint WIA_DPS_FIRST = WIA_DPC_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
public const uint WIA_DPS_DOCUMENT_HANDLING_STATUS = WIA_DPS_FIRST + 13;
public const uint WIA_DPS_DOCUMENT_HANDLING_SELECT = WIA_DPS_FIRST + 14;
}
public static List<System.Drawing.Image> Scan(string scannerId)
{
List<System.Drawing.Image> images = new List<System.Drawing.Image>();
// select the correct scanner using the provided scannerId parameter
WIA.DeviceManager manager = new WIA.DeviceManager();
WIA.Device device = null;
foreach (WIA.DeviceInfo info in manager.DeviceInfos)
{
if (info.DeviceID == scannerId)
{
// connect to scanner
device = info.Connect();
break;
}
}
// device was not found
if (device == null)
{
// enumerate available devices
string availableDevices = "";
foreach (WIA.DeviceInfo info in manager.DeviceInfos)
{
availableDevices += info.DeviceID + "\n";
}
// show error with available devices
throw new Exception("The device with provided ID could not be found. Available Devices:\n" + availableDevices);
}
WIA.Item item = null;
WIA.CommonDialog dialog = new WIA.CommonDialog();
WIA.Items items = dialog.ShowSelectItems(device);
if (items == null)
return images;
item = items[1];
bool hasMorePages = true;
while (hasMorePages)
{
try
{
// scan image
WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog();
WIA.ImageFile image = (WIA.ImageFile)wiaCommonDialog.ShowTransfer(item);
// save to temp file
string fileName = Path.GetTempFileName();
File.Delete(fileName);
image.SaveFile(fileName);
try
{
Marshal.FinalReleaseComObject(image);
}
finally
{
image = null;
}
// add file to output list
images.Add(System.Drawing.Image.FromFile(fileName));
}
finally
{
//determine if there are any more pages waiting
WIA.Property documentHandlingSelect = null;
WIA.Property documentHandlingStatus = null;
foreach (WIA.Property prop in device.Properties)
{
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT)
documentHandlingSelect = prop;
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS)
documentHandlingStatus = prop;
}
// assume there are no more pages
hasMorePages = false;
// may not exist on flatbed scanner but required for feeder
if (documentHandlingSelect != null)
{
// check for document feeder
if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0)
{
hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
}
}
}
}
return images;
}
private void setItem(IItem item, object property, object value)
{
WIA.Property aProperty = item.Properties.get_Item(ref property);
aProperty.set_Value(ref value);
}
private void kryptonButton6_Click(object sender, EventArgs e)
{
if (device != null)
{
Document doc = new Document(PageSize.A4, 10f, 10f, 10f, 10f);
var output = new MemoryStream();
var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(doc, output);
doc.Open();
bool firstTime = true;
int ilosc_stron = 0;
Items items;
items = dialog.ShowSelectItems(device, SingleSelect: false);
//items = device.Items;
do
{
WIA.Item item;
try
{
item = items[1] as WIA.Item;
//setItem(item, "6146", 1);
//setItem(item, "3097", 0);
//setItem(item, "6148", 200);
}
catch
{
break;
}
bool hasMorePages = true;
while (hasMorePages)
{
if (!firstTime) doc.NewPage();
ImageFile imageFile = null;
// List<System.Drawing.Image> s = Scan(device.DeviceID);
object res = null;
if (items.Count >= 1)
{
try
{
//res = item.Transfer(wiaFormatJPEG);
res = dialog.ShowTransfer(item, wiaFormatJPEG);
}
catch
{
break;
}
//List<WIA.ImageFile> i = (List<WIA.ImageFile>)dialog.ShowTransfer(items[1]);
imageFile = (ImageFile)res;
}
if (imageFile != null)
{
iTextSharp.text.Rectangle pageSize = null;
pageSize = new iTextSharp.text.Rectangle(0, 0, imageFile.Width, imageFile.Height);
var imageBytes = (byte[])imageFile.FileData.get_BinaryData();
var ms = new MemoryStream(imageBytes);
var img = System.Drawing.Image.FromStream(ms);
var image = iTextSharp.text.Image.GetInstance(ImageToByteArray(img));
image.SetAbsolutePosition(0, 0);
image.ScaleAbsoluteHeight(doc.PageSize.Height);
image.ScaleAbsoluteWidth(doc.PageSize.Width);
doc.Add(image);
firstTime = false;
ilosc_stron++;
}
Marshal.FinalReleaseComObject(res);
WIA.Property documentHandlingSelect = null;
WIA.Property documentHandlingStatus = null;
foreach (WIA.Property prop in device.Properties)
{
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT)
documentHandlingSelect = prop;
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS)
documentHandlingStatus = prop;
}
// assume there are no more pages
hasMorePages = false;
// may not exist on flatbed scanner but required for feeder
if (documentHandlingSelect != null)
{
// check for document feeder
if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0)
{
hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
object obj = new object();
obj = (WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER);
documentHandlingSelect.set_Value(ref obj);
}
}
}
}
while (items != null && MessageBox.Show("Następna strona", "Następna strona", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes);
//while (MessageBox.Show("Następna strona", "Następna strona", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes);
if (ilosc_stron > 0)
{
doc.Close();
var nazwaDokumentu = KryptonInputBox.Show("Wpisz nazwę dokumentu:", "Nowy dokument", "");
if (nazwaDokumentu != "")
{
DocumentModel docModel = new DocumentModel();
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
docModel.Name = nazwaDokumentu + ".pdf";
docModel.Image = output.ToArray();
output.Close();
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
TreeNode tn = treeView1.SelectedNode;
bindTreeView();
treeView1.SelectedNode = treeView1.Nodes.Find(tn.Name, true)[0];
treeView1.Focus();
using (MemoryStream ms = new MemoryStream(d.Image))
{
pdfViewer1.Document?.Dispose();
var pdf = PdfDocument.Load(ms);
pdfViewer1.Document = pdf;
}
}
else
{
MessageBox.Show("Błędna nazwa dokumentu. Dokument nie zapisany!", "Błąd");
}
}
}
else
{
MessageBox.Show("Brak wyboru skanera!", "Błąd");
}
}
private void kryptonButton7_Click(object sender, EventArgs e)
{
}
private void wybórSkaneraToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
dialog = new WIA.CommonDialog();
device = dialog.ShowSelectDevice(AlwaysSelectDevice: true);
}
catch (Exception ex)
{
MessageBox.Show("Brak skanera lub sterowników WIA", "Błąd");
}
}
private void kryptonButton7_Click_1(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "PDF Files|*.PDF";
openFileDialog.Multiselect = false;
DialogResult res = openFileDialog.ShowDialog();
DocumentModel docModel = new DocumentModel();
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
docModel.Name = openFileDialog.SafeFileName;
pdfViewer1.Document?.Dispose();
PdfDocument pdf = PdfDocument.Load(openFileDialog.FileName);
pdfViewer1.Document = pdf;
MemoryStream m = new MemoryStream();
pdfViewer1.Document.Save(m);
docModel.Image = m.ToArray();
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
TreeNode tn = treeView1.SelectedNode;
bindTreeView();
treeView1.SelectedNode = treeView1.Nodes.Find(tn.Name, true)[0];
treeView1.Focus();
using (MemoryStream ms = new MemoryStream(d.Image))
{
pdfViewer1.Document?.Dispose();
var p = PdfDocument.Load(ms);
pdf.Save(Path.GetTempPath() + "\\temp.pdf");
pdf = PdfDocument.Load(Path.GetTempPath() + "\\temp.pdf");
pdfViewer1.Document = pdf;
}
}
private void pdfViewer1_Load(object sender, EventArgs e)
{
}
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (var file in files)
{
DocumentModel docModel = new DocumentModel();
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
docModel.Name = Path.GetFileName(file);
docModel.Image = File.ReadAllBytes(file);
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
}
listBox1.Items.Clear();
int treeId = int.Parse(treeView1.SelectedNode.Name);
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
var ds = doc.Where(d => d.TreeId == treeId).ToList();
foreach (var d in ds)
{
listBox1.Items.Add(d);
}
kryptonButton1.Enabled = true;
kryptonButton2.Enabled = true;
kryptonButton3.Enabled = true;
kryptonButton6.Enabled = true;
kryptonButton7.Enabled = true;
kryptonButton8.Enabled = true;
kryptonButton4.Enabled = false;
kryptonButton5.Enabled = false;
kryptonButton9.Enabled = false;
kryptonButton10.Enabled = true;
listBox1.ClearSelected();
kryptonLabel1.Text = "";
pdfViewer1.Document?.Dispose();
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
pdfViewer1.Document = pdf;
}
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop) && treeView1.SelectedNode != null)
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void kryptonButton8_Click(object sender, EventArgs e)
{
Document doc = new Document(PageSize.A4, 10f, 10f, 10f, 10f);
var output = new MemoryStream();
var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(doc, output);
doc.Open();
bool firstTime = true;
int ilosc_stron = 0;
do
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Image Files|*.JPG";
DialogResult res = openFileDialog.ShowDialog();
if (res == DialogResult.OK)
{
if (!firstTime) doc.NewPage();
var img = System.Drawing.Image.FromFile(openFileDialog.FileName);
if (img != null)
{
iTextSharp.text.Rectangle pageSize = null;
pageSize = new iTextSharp.text.Rectangle(0, 0, img.Width, img.Height);
var image = iTextSharp.text.Image.GetInstance(ImageToByteArray(img));
image.SetAbsolutePosition(0, 0);
image.ScaleAbsoluteHeight(doc.PageSize.Height);
image.ScaleAbsoluteWidth(doc.PageSize.Width);
doc.Add(image);
firstTime = false;
ilosc_stron++;
}
}
}
while (MessageBox.Show("Następna strona", "Następna strona", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes);
if (ilosc_stron > 0)
{
doc.Close();
var nazwaDokumentu = KryptonInputBox.Show("Wpisz nazwę dokumentu:", "Nowy dokument", "");
if (nazwaDokumentu != "")
{
DocumentModel docModel = new DocumentModel();
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
docModel.Name = nazwaDokumentu + ".pdf";
docModel.Image = output.ToArray();
output.Close();
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
TreeNode tn = treeView1.SelectedNode;
bindTreeView();
treeView1.SelectedNode = treeView1.Nodes.Find(tn.Name, true)[0];
treeView1.Focus();
using (MemoryStream ms = new MemoryStream(d.Image))
{
pdfViewer1.Document?.Dispose();
var pdf = PdfDocument.Load(ms);
pdfViewer1.Document = pdf;
}
}
else
{
MessageBox.Show("Błędna nazwa dokumentu. Dokument nie zapisany!", "Błąd");
}
}
}
private void kryptonButton9_Click(object sender, EventArgs e)
{
var si = (DocumentModel)listBox1.SelectedItem;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = si.Name;
saveFileDialog.Filter = "All|*.*";
var res = saveFileDialog.ShowDialog();
if (res == DialogResult.OK)
{
var doc = AppHelper.GetInstance().getDocumentById(si.Id);
File.WriteAllBytes(saveFileDialog.FileName, doc.Image);
}
}
private void kryptonButton11_Click(object sender, EventArgs e)
{
bindTreeView();
}
private void kryptonButton10_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "All|*.*";
openFileDialog.Multiselect = true;
DialogResult res = openFileDialog.ShowDialog();
foreach (var file in openFileDialog.FileNames)
{
DocumentModel docModel = new DocumentModel();
docModel.TreeId = int.Parse(treeView1.SelectedNode.Name);
docModel.Name = Path.GetFileName(file);
docModel.Image = File.ReadAllBytes(file);
DocumentModel d = AppHelper.GetInstance().putDocument(docModel);
}
listBox1.Items.Clear();
int treeId = int.Parse(treeView1.SelectedNode.Name);
var doc = JsonConvert.DeserializeObject<List<DocumentModel>>(AppHelper.GetInstance().getDocumentsByTreeId(treeId));
var ds = doc.Where(d => d.TreeId == treeId).ToList();
foreach (var d in ds)
{
listBox1.Items.Add(d);
}
kryptonButton1.Enabled = true;
kryptonButton2.Enabled = true;
kryptonButton3.Enabled = true;
kryptonButton6.Enabled = true;
kryptonButton7.Enabled = true;
kryptonButton8.Enabled = true;
kryptonButton4.Enabled = false;
kryptonButton5.Enabled = false;
kryptonButton9.Enabled = false;
kryptonButton10.Enabled = true;
listBox1.ClearSelected();
kryptonLabel1.Text = "";
pdfViewer1.Document?.Dispose();
var pdf = PdfDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\None.pdf");
pdfViewer1.Document = pdf;
}
private void AppForm_FormClosing(object sender, FormClosingEventArgs e)
{
pdfViewer1.Document?.Dispose();
File.Delete(Path.GetTempPath() + "\\temp.pdf");
}
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
treeView1.DoDragDrop(e.Item, DragDropEffects.Move);
}
private void treeView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView1_DragDrop(object sender, DragEventArgs e)
{
TreeNode aNode;
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
Point apoint;
TreeNode targetNode;
apoint = ((ComponentFactory.Krypton.Toolkit.KryptonTreeView)sender).PointToClient(new Point(e.X, e.Y));
targetNode = ((ComponentFactory.Krypton.Toolkit.KryptonTreeView)sender).GetNodeAt(apoint);
aNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
targetNode.Nodes.Add((TreeNode)aNode.Clone());
targetNode.Expand();
aNode.Remove();
}
}
}
}