269 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			269 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Data;
 | 
						|
using System.Drawing;
 | 
						|
using System.Text;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.IO;
 | 
						|
 | 
						|
namespace SyncMany
 | 
						|
{
 | 
						|
	public partial class frmSyncMany : Form
 | 
						|
	{
 | 
						|
		public string MyStatus
 | 
						|
		{
 | 
						|
			get { return tsslStatus.Text; }
 | 
						|
			set { tsslStatus.Text = value; Application.DoEvents(); }
 | 
						|
		}
 | 
						|
		private string _MyFileName;
 | 
						|
		public string MyFileName
 | 
						|
		{
 | 
						|
			get { return _MyFileName; }
 | 
						|
			set { _MyFileName = value; ofd.FileName = value; sfd.FileName = value; }
 | 
						|
		}
 | 
						|
		SyncFile _MySyncFile = new SyncFile();
 | 
						|
		public SyncFile MySyncFile
 | 
						|
		{
 | 
						|
			get { return _MySyncFile; }
 | 
						|
			set 
 | 
						|
			{ 
 | 
						|
				_MySyncFile = value;
 | 
						|
				ResetOriginalSync();
 | 
						|
				dgv.DataSource = value.Items; 
 | 
						|
				dgv.AutoResizeColumns(); 
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void ResetOriginalSync()
 | 
						|
		{
 | 
						|
			_OriginalSync = ObjectSerializer<SyncFile>.StringSerialize(MySyncFile);
 | 
						|
		}
 | 
						|
		private string _SourceFolder;
 | 
						|
		public string SourceFolder
 | 
						|
		{
 | 
						|
			get { return _SourceFolder; }
 | 
						|
			set { _SourceFolder = value; }
 | 
						|
		}
 | 
						|
		private string _DestinationFolder;
 | 
						|
		public string DestinationFolder
 | 
						|
		{
 | 
						|
			get { return _DestinationFolder; }
 | 
						|
			set { _DestinationFolder = value; }
 | 
						|
		}
 | 
						|
		public frmSyncMany()
 | 
						|
		{
 | 
						|
			InitializeComponent();
 | 
						|
			compareItemsBindingSource.DataSource = MySyncFile.Items;
 | 
						|
		}
 | 
						|
		public string _OriginalSync = "";
 | 
						|
		public bool IsDirty
 | 
						|
		{
 | 
						|
			get
 | 
						|
			{
 | 
						|
				string tmp = ObjectSerializer<SyncFile>.StringSerialize(MySyncFile);
 | 
						|
				return tmp != _OriginalSync;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void openToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (ofd.ShowDialog() == DialogResult.OK)
 | 
						|
			{
 | 
						|
				MySyncFile = ObjectSerializer<SyncFile>.ReadFile(MyFileName);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void saveToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (MyFileName == null)
 | 
						|
				saveAsToolStripMenuItem_Click(sender, e);
 | 
						|
			else
 | 
						|
			{
 | 
						|
				ObjectSerializer<SyncFile>.WriteFile(MySyncFile, MyFileName);
 | 
						|
				ResetOriginalSync();
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (sfd.ShowDialog() == DialogResult.OK)
 | 
						|
			{
 | 
						|
				ObjectSerializer<SyncFile>.WriteFile(MySyncFile, MyFileName);
 | 
						|
				ResetOriginalSync();
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void ofd_FileOk(object sender, CancelEventArgs e)
 | 
						|
		{
 | 
						|
			MyFileName = ofd.FileName;
 | 
						|
		}
 | 
						|
		private void sfd_FileOk(object sender, CancelEventArgs e)
 | 
						|
		{
 | 
						|
			MyFileName = sfd.FileName;
 | 
						|
		}
 | 
						|
		private void addToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			frmAddCompareItem myCompareItem = new frmAddCompareItem(SourceFolder,DestinationFolder);
 | 
						|
			if (myCompareItem.ShowDialog() == DialogResult.OK)
 | 
						|
			{
 | 
						|
				SourceFolder = myCompareItem.SourceFolder;
 | 
						|
				DestinationFolder = myCompareItem.DestinationFolder;
 | 
						|
				MySyncFile.Items.Add(new CompareItem(myCompareItem.SourceName, myCompareItem.DestinationName));
 | 
						|
				//compareItemsBindingSource.Add(new CompareItem(myCompareItem.SourceName, myCompareItem.DestinationName));
 | 
						|
				compareItemsBindingSource.DataSource = null;
 | 
						|
				compareItemsBindingSource.DataSource = MySyncFile.Items;
 | 
						|
				dgv.DataSource = null;
 | 
						|
				dgv.DataSource = compareItemsBindingSource;
 | 
						|
				dgv.Refresh();
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void compareToolStripMenuItem1_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			foreach (DataGridViewRow row in dgv.SelectedRows)
 | 
						|
			{
 | 
						|
				CompareItem item = row.DataBoundItem as CompareItem;
 | 
						|
				if (item != null)
 | 
						|
				{
 | 
						|
					System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe",
 | 
						|
						string.Format(@" -t ""{0}"" ""{1}""", item.Source, item.DestinationItem));
 | 
						|
					System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi);
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void frmSyncMany_Load(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			LoadSettings();
 | 
						|
			this.Move +=new EventHandler(frmSyncMany_Move);
 | 
						|
			this.Resize +=new EventHandler(frmSyncMany_Resize);
 | 
						|
			FileInfo myInfo = new FileInfo(MyFileName);
 | 
						|
			if (myInfo.Exists)
 | 
						|
				MySyncFile = ObjectSerializer<SyncFile>.ReadFile(MyFileName);
 | 
						|
			else
 | 
						|
				MySyncFile = new SyncFile();
 | 
						|
		}
 | 
						|
		private void copySourceToDestinationToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			foreach (DataGridViewRow row in dgv.SelectedRows)
 | 
						|
			{
 | 
						|
				CompareItem item = row.DataBoundItem as CompareItem;
 | 
						|
				if (item != null)
 | 
						|
				{
 | 
						|
					item.CopySourceToDestination();
 | 
						|
				}
 | 
						|
				dgv.Refresh();
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void copyDestinationToSourceToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			foreach (DataGridViewRow row in dgv.SelectedRows)
 | 
						|
			{
 | 
						|
				CompareItem item = row.DataBoundItem as CompareItem;
 | 
						|
				if (item != null)
 | 
						|
				{
 | 
						|
					item.CopyDestinationToSource();
 | 
						|
				}
 | 
						|
			}
 | 
						|
			dgv.Refresh();
 | 
						|
		}
 | 
						|
		private void frmSyncMany_FormClosing(object sender, FormClosingEventArgs e)
 | 
						|
		{
 | 
						|
			if (IsDirty)
 | 
						|
			{
 | 
						|
				DialogResult result = MessageBox.Show("Do you want to Save changes?","Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
 | 
						|
				switch (result)
 | 
						|
				{
 | 
						|
					case DialogResult.Cancel:
 | 
						|
						// Don't close
 | 
						|
						e.Cancel = true;
 | 
						|
						return;
 | 
						|
						break;
 | 
						|
					case DialogResult.No:
 | 
						|
						// Don't do anything
 | 
						|
						break;
 | 
						|
					case DialogResult.Yes:
 | 
						|
						saveToolStripMenuItem_Click(this, e);
 | 
						|
						break;
 | 
						|
				}
 | 
						|
			}
 | 
						|
			SaveSettings();
 | 
						|
		}
 | 
						|
		private string GetPropertyString(string propertyName)
 | 
						|
		{
 | 
						|
			object prop = Properties.Settings.Default[propertyName];
 | 
						|
			return prop == null ? "" : prop.ToString();
 | 
						|
		}
 | 
						|
		private void LoadSettings()
 | 
						|
		{
 | 
						|
			string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
 | 
						|
			if (GetPropertyString("Location") != "") 
 | 
						|
				this.Location = Properties.Settings.Default.Location;
 | 
						|
			if ((Properties.Settings.Default["Size"] ?? "") != "")
 | 
						|
				this.Size = Properties.Settings.Default.Size;
 | 
						|
			this.WindowState = Properties.Settings.Default.WindowState;
 | 
						|
			string test = GetPropertyString("FileName");
 | 
						|
			if (GetPropertyString("FileName") != "")
 | 
						|
				MyFileName = Properties.Settings.Default.FileName;
 | 
						|
			else
 | 
						|
				MyFileName = myDocuments + @"\SyncList.XML";
 | 
						|
			SetupOpenFileDialog(MyFileName);
 | 
						|
			if (GetPropertyString("SourceFolder") != "")
 | 
						|
				SourceFolder = Properties.Settings.Default.SourceFolder;
 | 
						|
			else
 | 
						|
				SourceFolder = myDocuments;
 | 
						|
			if (GetPropertyString("DestinationFolder") != "")
 | 
						|
				DestinationFolder = Properties.Settings.Default.DestinationFolder;
 | 
						|
			else
 | 
						|
				DestinationFolder = myDocuments;
 | 
						|
		}
 | 
						|
		private string SetupOpenFileDialog(string fileName)
 | 
						|
		{
 | 
						|
			FileInfo fi = new FileInfo(fileName);
 | 
						|
			sfd.InitialDirectory = ofd.InitialDirectory = fi.Directory.FullName;
 | 
						|
			sfd.FileName = ofd.FileName = fi.Name;
 | 
						|
			return ofd.InitialDirectory;
 | 
						|
		}
 | 
						|
		private void SaveSettings()
 | 
						|
		{
 | 
						|
			Properties.Settings.Default.WindowState = this.WindowState;
 | 
						|
			Properties.Settings.Default.FileName = MyFileName;
 | 
						|
			Properties.Settings.Default.SourceFolder = SourceFolder;
 | 
						|
			Properties.Settings.Default.DestinationFolder = DestinationFolder;
 | 
						|
			Properties.Settings.Default.Save();
 | 
						|
		}
 | 
						|
		private void frmSyncMany_Move(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (this.WindowState == FormWindowState.Normal)
 | 
						|
			{
 | 
						|
				Properties.Settings.Default.Location = this.Location;
 | 
						|
				Properties.Settings.Default.Size = this.Size;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void frmSyncMany_Resize(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (this.WindowState == FormWindowState.Normal)
 | 
						|
			{
 | 
						|
				Properties.Settings.Default.Location = this.Location;
 | 
						|
				Properties.Settings.Default.Size = this.Size;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void removeToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			int index = dgv.SelectedRows[0].Index;
 | 
						|
			dgv.Rows[index].Selected = false;
 | 
						|
			MySyncFile.Items.RemoveAt(index);
 | 
						|
			compareItemsBindingSource.DataSource = MySyncFile.Items;
 | 
						|
			dgv.DataSource = null;
 | 
						|
			dgv.DataSource = compareItemsBindingSource;
 | 
						|
			dgv.Refresh();
 | 
						|
		}
 | 
						|
		private void dgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
 | 
						|
		{
 | 
						|
			if (e.RowIndex >= 0)
 | 
						|
			{
 | 
						|
				dgv.Rows[e.RowIndex].Selected = true;
 | 
						|
				dgv.CurrentCell = dgv[0, e.RowIndex];
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void exitToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			this.Close();
 | 
						|
		}
 | 
						|
 | 
						|
	}
 | 
						|
} |