/*
* Copyright (C) 2004-2005 Jonathan Bindel, jonathanbindel@gmail.com
*
* 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.Collections.Generic;
using System.Xml.Serialization;
using DCSharp.Backend.Objects;
using DCSharp.Backend.Managers;
using DCSharp.Extras;
using DCSharp.Xml;
namespace DCSharp.Settings{
[XmlRoot("Settings")]
public class RuntimeSettings : IRuntimeSettings
{
public RuntimeSettings() : base()
{
connectionSettings = new ConnectionSettings();
userSettings = new UserSettings();
shared = new List<ShareInfo>();
// Defaults
downloadDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
tempDownloadDirectory = downloadDirectory;
protocolCodePage = "windows-1252";
slots = 5;
autoFollowRedirects = true;
}
[XmlElement("User")]
public UserSettings UserSettings
{
get { return userSettings; }
set { userSettings = value; }
}
private UserSettings userSettings;
[XmlElement("Connection")]
public ConnectionSettings ConnectionSettings
{
get { return connectionSettings; }
set { connectionSettings = value; }
}
private ConnectionSettings connectionSettings;
[XmlArray("Share")]
[XmlArrayItem("Directory")]
public List<ShareInfo> SharedDirectories
{
get { return shared; }
set { shared = value; }
}
private List<ShareInfo> shared;
#region IPublicSettings
[XmlIgnore]
public LocalIdentity LocalIdentity
{
get { return userSettings.LocalIdentity; }
set { userSettings.LocalIdentity = value; }
}
/// <summary>
/// Gets or sets the download directory.
/// </summary>
public string DownloadDirectory
{
get { return downloadDirectory; }
set { downloadDirectory = value; }
}
private string downloadDirectory;
/// <summary>
/// Gets or sets temporary directory for downloads.
/// </summary>
public string TempDownloadDirectory
{
get { return tempDownloadDirectory; }
set { tempDownloadDirectory = value; }
}
private string tempDownloadDirectory;
/// <summary>
/// Gets or sets the default protocol code page.
/// </summary>
public string ProtocolCodePage
{
get { return protocolCodePage; }
set { protocolCodePage = value; }
}
private string protocolCodePage;
/// <summary>
/// Gets or sets the number of slots.
/// </summary>
public int Slots
{
get { return slots; }
set { slots = value; }
}
private int slots;
/// <summary>
/// Gets or sets whether or not redirects should be automatically followed.
/// </summary>
/// <value></value>
public bool AutoFollowRedirects
{
get { return autoFollowRedirects; }
set { autoFollowRedirects = value; }
}
bool autoFollowRedirects;
/// <summary>
/// Gets or sets whether or not to share hidden files.
/// </summary>
/// <value></value>
public bool ShareHidden
{
get { return shareHidden; }
set { shareHidden = value; }
}
bool shareHidden;
/// <summary>
/// Gets or sets the amount of download slots to allow.
/// </summary>
/// <value></value>
public int DownloadSlots
{
get { return downloadSlots; }
set { downloadSlots = value; }
}
int downloadSlots;
#endregion
public void Save(string filename)
{
XmlHelper.Serialize(this, filename);
}
public static RuntimeSettings Load(string filename)
{
return (RuntimeSettings)XmlHelper.Deserialize(typeof(RuntimeSettings),
filename);
}
}
}
|