ReportInfo.cs 6.6 KB

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