/*
* Copyright (C) 2004-2005 Jonathan Bindel
* Copyright (C) 2006-2007 Eskil Bylund
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
using System;
using System.Xml.Serialization;
using DCSharp.Backend.Connections;
using DCSharp.Backend.Managers;
using DCSharp.Xml;
namespace DCSharp.Backend.Objects{
public class SourceEventArgs : EventArgs
{
public SourceEventArgs(SourceInfo source)
{
this.source = source;
}
public SourceInfo Source
{
get { return source; }
}
private SourceInfo source;
}
public class SourceInfo
{
public SourceInfo(Identity identity, string path) : this(identity.User, path)
{
}
public SourceInfo(User user, string path) : this()
{
if (user == null)
{
throw new ArgumentNullException("user");
}
this.cid = user.Uid;
this.nick = user.Nick;
this.path = path;
}
public SourceInfo()
{
available = true;
}
#region Properties
[XmlAttribute]
/// <summary>
/// Gets or sets the Cid of the user.
/// </summary>
/// <value>The Cid of the user</value>
public string Cid
{
get { return cid; }
set { cid = new Uid(value); }
}
private Uid cid;
[XmlAttribute]
/// <summary>
/// Gets or sets the nickname of the user.
/// </summary>
/// <value>The nickname of the user.</value>
public string Nick
{
get { return nick; }
set { nick = value; }
}
private string nick;
[XmlIgnore]
/// <summary>
/// Gets the user the file is available from.
/// </summary>
/// <value>The user the file is available from.</value>
public User User
{
get
{
if (user == null || user.Uid != cid)
{
user = User.Create(cid, nick);
}
return user;
}
}
private User user;
[XmlAttribute]
/// <summary>
/// Gets or sets the path to the file.
/// </summary>
/// <value>The path to the file.</value>
public string Path
{
get { return path; }
set { path = value; }
}
private string path;
[XmlIgnore]
/// <summary>
/// Gets whether or not the file is available.
/// </summary>
/// <value>Whether or not the file is available.</value>
public bool Available
{
get { return available; }
internal set { available = value; }
}
private bool available;
[XmlIgnore]
/// <summary>
/// Gets or sets whether or not the file is being downloaded.
/// </summary>
/// <value>Whether or not the file is being downloaded.</value>
public bool Active
{
get { return active; }
internal set { active = value; }
}
private bool active;
#endregion
}
}
|