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(); } } }