FastReport
254 строки · 7.6 Кб
1using System;2using System.Drawing;3using System.ComponentModel;4using FastReport.Utils;5using System.Reflection;6using System.Drawing.Design;7
8namespace FastReport9{
10/// <summary>11/// Specifies the Save Mode of designed report.12/// </summary>13public enum SaveMode14{15/// <summary>16/// The saving allowed to all.17/// </summary>18All = 0,19/// <summary>20/// The saving in original place.21/// </summary>22Original,23/// <summary>24/// The saving allowed to current user.25/// </summary>26User,27/// <summary>28/// The saving allowed to current role/group.29/// </summary>30Role,31/// <summary>32/// The saving allowed with other security permissions.33/// </summary>34Security,35/// <summary>36/// The saving not allowed.37/// </summary>38Deny,39/// <summary>40/// Custom saving rules.41/// </summary>42Custom
43}44
45/// <summary>46/// This class represents the report information such as name, author, description etc.47/// </summary>48[TypeConverter(typeof(FastReport.TypeConverters.FRExpandableObjectConverter))]49public class ReportInfo50{51#region Fields52private string name;53private string author;54private string version;55private string description;56private Image picture;57private DateTime created;58private DateTime modified;59private bool savePreviewPicture;60private float previewPictureRatio;61private string creatorVersion;62private string tag;63private SaveMode saveMode;64#endregion65
66#region Properties67/// <summary>68/// Gets or sets the name of a report.69/// </summary>70public string Name71{72get { return name; }73set { name = value; }74}75
76/// <summary>77/// Gets or sets the author of a report.78/// </summary>79public string Author80{81get { return author; }82set { author = value; }83}84
85/// <summary>86/// Gets or sets the report version.87/// </summary>88public string Version89{90get { return version; }91set { version = value; }92}93
94/// <summary>95/// Gets or sets the report description.96/// </summary>97
98[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]99public string Description100{101get { return description; }102set { description = value; }103}104
105/// <summary>106/// Gets or sets the picture associated with a report.107/// </summary>108public Image Picture109{110get { return picture; }111set { picture = value; }112}113
114/// <summary>115/// Gets or sets the report creation date and time.116/// </summary>117public DateTime Created118{119get { return created; }120set { created = value; }121}122
123/// <summary>124/// Gets or sets a value indicating that report was modified in the designer.125/// </summary>126public DateTime Modified127{128get { return modified; }129set { modified = value; }130}131
132/// <summary>133/// Gets or sets a value that determines whether to fill the <see cref="Picture"/> property134/// automatically.135/// </summary>136[DefaultValue(false)]137public bool SavePreviewPicture138{139get { return savePreviewPicture; }140set { savePreviewPicture = value; }141}142
143/// <summary>144/// Gets or sets the ratio that will be used when generating a preview picture.145/// </summary>146[DefaultValue(0.1f)]147public float PreviewPictureRatio148{149get { return previewPictureRatio; }150set151{152if (value <= 0)153value = 0.05f;154previewPictureRatio = value;155}156}157
158/// <summary>159/// Gets the version of FastReport that was created this report file.160/// </summary>161public string CreatorVersion162{163get { return creatorVersion; }164set { creatorVersion = value; }165}166
167/// <summary>168/// Gets or sets the Tag string object for this report file.169/// </summary>170[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]171public string Tag172{173get { return tag; }174set { tag = value; }175}176
177/// <summary>178/// Gets or sets SaveMode property.179/// </summary>180[DefaultValue(SaveMode.All)]181public SaveMode SaveMode182{183get { return saveMode; }184set { saveMode = value; }185}186
187private string CurrentVersion188{189get190{191AssemblyName asm = new AssemblyName(GetType().Assembly.FullName);192return asm.Version.ToString();193}194}195#endregion196
197#region Public Methods198/// <summary>199/// Resets all properties to its default values.200/// </summary>201public void Clear()202{203name = "";204author = "";205version = "";206description = "";207tag = "";208if (picture != null)209picture.Dispose();210picture = null;211created = SystemFake.DateTime.Now;212modified = SystemFake.DateTime.Now;213savePreviewPicture = false;214previewPictureRatio = 0.1f;215creatorVersion = CurrentVersion;216saveMode = SaveMode.All;217}218
219internal void Serialize(FRWriter writer, ReportInfo c)220{221if (Name != c.Name)222writer.WriteStr("ReportInfo.Name", Name);223if (Author != c.Author)224writer.WriteStr("ReportInfo.Author", Author);225if (Version != c.Version)226writer.WriteStr("ReportInfo.Version", Version);227if (Description != c.Description)228writer.WriteStr("ReportInfo.Description", Description);229if (Tag != c.Tag)230writer.WriteStr("ReportInfo.Tag", Tag);231if (!writer.AreEqual(Picture, c.Picture))232writer.WriteValue("ReportInfo.Picture", Picture);233writer.WriteValue("ReportInfo.Created", Created);234modified = SystemFake.DateTime.Now;235writer.WriteValue("ReportInfo.Modified", Modified);236if (SavePreviewPicture != c.SavePreviewPicture)237writer.WriteBool("ReportInfo.SavePreviewPicture", SavePreviewPicture);238if (PreviewPictureRatio != c.PreviewPictureRatio)239writer.WriteFloat("ReportInfo.PreviewPictureRatio", PreviewPictureRatio);240writer.WriteStr("ReportInfo.CreatorVersion", CurrentVersion);241if (SaveMode != c.SaveMode)242writer.WriteValue("ReportInfo.SaveMode", SaveMode);243}244#endregion245
246/// <summary>247/// Initializes a new instance of the <see cref="ReportInfo"/> class with default settings.248/// </summary>249public ReportInfo()250{251Clear();252}253}254}