⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sourceitem.cs

📁 ftp客服端源代码
💻 CS
字号:
using System;
using System.Collections;

namespace SourceFtp.SourceLibrary
{
	public enum FileType
	{
		NotValidFormat = 0,
		CheckOut = 1,
		History = 2,
		LatestVersion = 3
	}
	public class SourceFileInfo
	{
		public SourceFileInfo()
		{
			Type = FileType.NotValidFormat;
		}
		public string Name;
		public FileSystem.File File;
		public FileType Type;
		public int Version; //valido solo nel caso History
		public string CheckOutBy; //valido solo nel caso CheckOut e History
	}

	public class SourceFileInfoCollection : CollectionBase
	{
		public int Add(SourceFileInfo p_Info)
		{
			return List.Add(p_Info);
		}
		public void Remove(SourceFileInfo p_Info)
		{
			List.Remove(p_Info);
		}
		public SourceFileInfo this[int p_Index]
		{
			get{return (SourceFileInfo)List[p_Index];}
		}
	}

	public enum SourceItemStatus
	{
		NotValid = 0,
		CheckIn = 1,
		CheckOut = 2
	}

	/// <summary>
	/// Summary description for SourceItem.
	/// </summary>
	public class SourceItem
	{
		private string m_Name;
		private FileSystem.Directory m_Directory;
		private SourceFileInfoCollection m_FileInfo = new SourceFileInfoCollection();
		private SourceLibrary m_Library;
		public SourceItem(SourceLibrary p_Library, string p_Name, FileSystem.Directory p_Directory)
		{
			m_Name = p_Name;
			m_Directory = p_Directory;
			m_Library = p_Library;
		}

		public string Name
		{
			get{return m_Name;}
		}

		public void RefreshStatus()
		{
			//clear della lista
			LinkedFiles.Clear();

			//ricarica la struttura
			foreach(FileSystem.File f in m_Directory.Files)
			{
				SourceFileInfo info = m_Library.ParseFileName(f);

				if (info.Name.ToUpper() == m_Name.ToUpper())
				{
					LinkedFiles.Add(info);
				}
			}
		}

		public SourceFileInfoCollection LinkedFiles
		{
			get{return m_FileInfo;}
		}

		public FileSystem.Directory Directory
		{
			get{return m_Directory;}
		}

		public string DateModified
		{
			get
			{
				SourceFileInfo i = LatestFile;
				if (i!=null)
					return i.File.DateModified;
				else
					return "ERROR";
			}
		}

		public string CheckOutBy
		{
			get
			{
				SourceFileInfo info = LatestFile;
				if (Status==SourceItemStatus.NotValid || Status==SourceItemStatus.CheckIn || info==null)
					return "ERROR"; //errore
				else
				{
					return info.CheckOutBy;
				}
			}
		}

		public SourceFileInfo CheckInFile
		{
			get
			{
				if (Status==SourceItemStatus.NotValid || Status==SourceItemStatus.CheckOut)
					return null; //errore
				else
				{
					foreach(SourceFileInfo info in m_FileInfo)
					{
						if (info.Type == FileType.LatestVersion)
							return info;
					}
					return null; //errore
				}
			}
		}

		public SourceFileInfo CheckOutFile
		{
			get
			{
				if (Status==SourceItemStatus.NotValid || Status==SourceItemStatus.CheckIn)
					return null; //errore
				else
				{
					foreach(SourceFileInfo info in m_FileInfo)
					{
						if (info.Type == FileType.CheckOut)
							return info;
					}
					return null; //errore
				}
			}
		}

		public SourceFileInfo LatestFile
		{
			get
			{
				if (Status==SourceItemStatus.NotValid)
					return null; //errore
				else
				{
					foreach(SourceFileInfo info in m_FileInfo)
					{
						if (info.Type == FileType.CheckOut)
							return info;
						else if (info.Type == FileType.LatestVersion)
							return info;
					}
					return null; //errore
				}
			}
		}

		public long Size
		{
			get
			{
				long l_Size = 0;
				foreach(SourceFileInfo info in m_FileInfo)
				{
					l_Size += info.File.Size;
				}
				return l_Size;
			}
		}

		public SourceItemStatus Status
		{
			get
			{
				SourceItemStatus l_Status = SourceItemStatus.NotValid;
				try
				{
					int l_CheckOut = 0;
					int l_NotValid = 0;
					int l_LatestVersion = 0;
					foreach(SourceFileInfo info in m_FileInfo)
					{
						if (info.Type == FileType.NotValidFormat || m_Name != info.Name)
							l_NotValid++;
						else if (info.Type == FileType.CheckOut)
							l_CheckOut++;
						else if (info.Type == FileType.LatestVersion)
							l_LatestVersion++;
					}
					//se 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -