using System;
using System.Drawing;
using System.ComponentModel;
using FastReport.Utils;
using System.Reflection;
using System.Drawing.Design;
namespace FastReport
{
///
/// Specifies the Save Mode of designed report.
///
public enum SaveMode
{
///
/// The saving allowed to all.
///
All = 0,
///
/// The saving in original place.
///
Original,
///
/// The saving allowed to current user.
///
User,
///
/// The saving allowed to current role/group.
///
Role,
///
/// The saving allowed with other security permissions.
///
Security,
///
/// The saving not allowed.
///
Deny,
///
/// Custom saving rules.
///
Custom
}
///
/// This class represents the report information such as name, author, description etc.
///
[TypeConverter(typeof(FastReport.TypeConverters.FRExpandableObjectConverter))]
public class ReportInfo
{
#region Fields
private string name;
private string author;
private string version;
private string description;
private Image picture;
private DateTime created;
private DateTime modified;
private bool savePreviewPicture;
private float previewPictureRatio;
private string creatorVersion;
private string tag;
private SaveMode saveMode;
#endregion
#region Properties
///
/// Gets or sets the name of a report.
///
public string Name
{
get { return name; }
set { name = value; }
}
///
/// Gets or sets the author of a report.
///
public string Author
{
get { return author; }
set { author = value; }
}
///
/// Gets or sets the report version.
///
public string Version
{
get { return version; }
set { version = value; }
}
///
/// Gets or sets the report description.
///
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public string Description
{
get { return description; }
set { description = value; }
}
///
/// Gets or sets the picture associated with a report.
///
public Image Picture
{
get { return picture; }
set { picture = value; }
}
///
/// Gets or sets the report creation date and time.
///
public DateTime Created
{
get { return created; }
set { created = value; }
}
///
/// Gets or sets a value indicating that report was modified in the designer.
///
public DateTime Modified
{
get { return modified; }
set { modified = value; }
}
///
/// Gets or sets a value that determines whether to fill the property
/// automatically.
///
[DefaultValue(false)]
public bool SavePreviewPicture
{
get { return savePreviewPicture; }
set { savePreviewPicture = value; }
}
///
/// Gets or sets the ratio that will be used when generating a preview picture.
///
[DefaultValue(0.1f)]
public float PreviewPictureRatio
{
get { return previewPictureRatio; }
set
{
if (value <= 0)
value = 0.05f;
previewPictureRatio = value;
}
}
///
/// Gets the version of FastReport that was created this report file.
///
public string CreatorVersion
{
get { return creatorVersion; }
set { creatorVersion = value; }
}
///
/// Gets or sets the Tag string object for this report file.
///
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public string Tag
{
get { return tag; }
set { tag = value; }
}
///
/// Gets or sets SaveMode property.
///
[DefaultValue(SaveMode.All)]
public SaveMode SaveMode
{
get { return saveMode; }
set { saveMode = value; }
}
private string CurrentVersion
{
get
{
AssemblyName asm = new AssemblyName(GetType().Assembly.FullName);
return asm.Version.ToString();
}
}
#endregion
#region Public Methods
///
/// Resets all properties to its default values.
///
public void Clear()
{
name = "";
author = "";
version = "";
description = "";
tag = "";
if (picture != null)
picture.Dispose();
picture = null;
created = SystemFake.DateTime.Now;
modified = SystemFake.DateTime.Now;
savePreviewPicture = false;
previewPictureRatio = 0.1f;
creatorVersion = CurrentVersion;
saveMode = SaveMode.All;
}
internal void Serialize(FRWriter writer, ReportInfo c)
{
if (Name != c.Name)
writer.WriteStr("ReportInfo.Name", Name);
if (Author != c.Author)
writer.WriteStr("ReportInfo.Author", Author);
if (Version != c.Version)
writer.WriteStr("ReportInfo.Version", Version);
if (Description != c.Description)
writer.WriteStr("ReportInfo.Description", Description);
if (Tag != c.Tag)
writer.WriteStr("ReportInfo.Tag", Tag);
if (!writer.AreEqual(Picture, c.Picture))
writer.WriteValue("ReportInfo.Picture", Picture);
writer.WriteValue("ReportInfo.Created", Created);
modified = SystemFake.DateTime.Now;
writer.WriteValue("ReportInfo.Modified", Modified);
if (SavePreviewPicture != c.SavePreviewPicture)
writer.WriteBool("ReportInfo.SavePreviewPicture", SavePreviewPicture);
if (PreviewPictureRatio != c.PreviewPictureRatio)
writer.WriteFloat("ReportInfo.PreviewPictureRatio", PreviewPictureRatio);
writer.WriteStr("ReportInfo.CreatorVersion", CurrentVersion);
if (SaveMode != c.SaveMode)
writer.WriteValue("ReportInfo.SaveMode", SaveMode);
}
#endregion
///
/// Initializes a new instance of the class with default settings.
///
public ReportInfo()
{
Clear();
}
}
}