diff --git a/src/XstReader.Api/XstMessage.cs b/src/XstReader.Api/XstMessage.cs
index daed01a..73e3346 100644
--- a/src/XstReader.Api/XstMessage.cs
+++ b/src/XstReader.Api/XstMessage.cs
@@ -92,6 +92,14 @@ public override string DisplayName
[Description(@"Contains a list of carbon copy (Cc) recipient display names.")]
public virtual string Cc => Properties[PropertyCanonicalName.PidTagDisplayCc]?.ValueAsStringSanitized;
+ ///
+ /// The Cc Summary of the Message
+ ///
+ [DisplayName("Display Bcc")]
+ [Category(@"Message Properties")]
+ [Description(@"Contains a list of clind carbon copy (Bcc) recipient display names.")]
+ public virtual string Bcc => Properties[PropertyCanonicalName.PidTagDisplayBcc]?.ValueAsStringSanitized;
+
///
/// The To Summary of the Message
///
diff --git a/src/XstReader.Api/XstReader.Api.csproj b/src/XstReader.Api/XstReader.Api.csproj
index f525b46..1e8a863 100644
--- a/src/XstReader.Api/XstReader.Api.csproj
+++ b/src/XstReader.Api/XstReader.Api.csproj
@@ -3,9 +3,9 @@
netstandard2.0
XstReader
- 1.0.5
- 1.0.5
- 1.0.5
+ 1.0.6
+ 1.0.6
+ 1.0.6
Properties
True
iluvadev
diff --git a/src/XstReader/Controls/XstMessageListControl.Designer.cs b/src/XstReader/Controls/XstMessageListControl.Designer.cs
index 3c766ca..2fdfc6f 100644
--- a/src/XstReader/Controls/XstMessageListControl.Designer.cs
+++ b/src/XstReader/Controls/XstMessageListControl.Designer.cs
@@ -28,8 +28,16 @@ protected override void Dispose(bool disposing)
///
private void InitializeComponent()
{
+ this.components = new System.ComponentModel.Container();
this.ObjectListView = new BrightIdeasSoftware.ObjectListView();
+ this.HeaderPanel = new Krypton.Toolkit.KryptonPanel();
+ this.SearchTextBox = new Krypton.Toolkit.KryptonTextBox();
+ this.SearchTextButton = new Krypton.Toolkit.ButtonSpecAny();
+ this.SearchTextCancelButton = new Krypton.Toolkit.ButtonSpecAny();
+ this.TimerSearchText = new System.Windows.Forms.Timer(this.components);
((System.ComponentModel.ISupportInitialize)(this.ObjectListView)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.HeaderPanel)).BeginInit();
+ this.HeaderPanel.SuspendLayout();
this.SuspendLayout();
//
// ObjectListView
@@ -40,26 +48,65 @@ private void InitializeComponent()
this.ObjectListView.FullRowSelect = true;
this.ObjectListView.GridLines = true;
this.ObjectListView.IncludeColumnHeadersInCopy = true;
- this.ObjectListView.Location = new System.Drawing.Point(0, 0);
+ this.ObjectListView.Location = new System.Drawing.Point(0, 32);
this.ObjectListView.MultiSelect = false;
this.ObjectListView.Name = "ObjectListView";
this.ObjectListView.ShowGroups = false;
this.ObjectListView.ShowItemToolTips = true;
- this.ObjectListView.Size = new System.Drawing.Size(633, 404);
+ this.ObjectListView.Size = new System.Drawing.Size(633, 372);
this.ObjectListView.TabIndex = 0;
this.ObjectListView.UseFilterIndicator = true;
this.ObjectListView.UseFiltering = true;
this.ObjectListView.View = System.Windows.Forms.View.Details;
//
+ // HeaderPanel
+ //
+ this.HeaderPanel.Controls.Add(this.SearchTextBox);
+ this.HeaderPanel.Dock = System.Windows.Forms.DockStyle.Top;
+ this.HeaderPanel.Location = new System.Drawing.Point(0, 0);
+ this.HeaderPanel.Name = "HeaderPanel";
+ this.HeaderPanel.PanelBackStyle = Krypton.Toolkit.PaletteBackStyle.ControlGroupBox;
+ this.HeaderPanel.Size = new System.Drawing.Size(633, 32);
+ this.HeaderPanel.TabIndex = 1;
+ //
+ // SearchTextBox
+ //
+ this.SearchTextBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.SearchTextBox.ButtonSpecs.AddRange(new Krypton.Toolkit.ButtonSpecAny[] {
+ this.SearchTextButton,
+ this.SearchTextCancelButton});
+ this.SearchTextBox.Location = new System.Drawing.Point(5, 5);
+ this.SearchTextBox.Name = "SearchTextBox";
+ this.SearchTextBox.Size = new System.Drawing.Size(300, 23);
+ this.SearchTextBox.TabIndex = 0;
+ //
+ // SearchTextButton
+ //
+ this.SearchTextButton.Image = global::XstReader.App.Properties.Resources.magnify_18;
+ this.SearchTextButton.UniqueName = "1a634cb36357467a847069f7b81a5559";
+ //
+ // SearchTextCancelButton
+ //
+ this.SearchTextCancelButton.Image = global::XstReader.App.Properties.Resources.close_circle_outline_16;
+ this.SearchTextCancelButton.UniqueName = "af041d7b1aac4bada07043a284a2bc48";
+ //
+ // TimerSearchText
+ //
+ this.TimerSearchText.Interval = 500;
+ //
// XstMessageListControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.ObjectListView);
+ this.Controls.Add(this.HeaderPanel);
this.MinimumSize = new System.Drawing.Size(200, 100);
this.Name = "XstMessageListControl";
this.Size = new System.Drawing.Size(633, 404);
((System.ComponentModel.ISupportInitialize)(this.ObjectListView)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.HeaderPanel)).EndInit();
+ this.HeaderPanel.ResumeLayout(false);
+ this.HeaderPanel.PerformLayout();
this.ResumeLayout(false);
}
@@ -67,5 +114,10 @@ private void InitializeComponent()
#endregion
private BrightIdeasSoftware.ObjectListView ObjectListView;
+ private Krypton.Toolkit.KryptonPanel HeaderPanel;
+ private Krypton.Toolkit.KryptonTextBox SearchTextBox;
+ private Krypton.Toolkit.ButtonSpecAny SearchTextButton;
+ private System.Windows.Forms.Timer TimerSearchText;
+ private Krypton.Toolkit.ButtonSpecAny SearchTextCancelButton;
}
}
diff --git a/src/XstReader/Controls/XstMessageListControl.cs b/src/XstReader/Controls/XstMessageListControl.cs
index 5e05e88..17c6b55 100644
--- a/src/XstReader/Controls/XstMessageListControl.cs
+++ b/src/XstReader/Controls/XstMessageListControl.cs
@@ -18,6 +18,8 @@ public partial class XstMessageListControl : UserControl,
IXstDataSourcedControl>,
IXstElementSelectable
{
+ private string _LastSearchedText = string.Empty;
+
public XstMessageListControl()
{
InitializeComponent();
@@ -31,8 +33,11 @@ private void Initialize()
ObjectListView.Columns.Add(new OLVColumn("Subject", nameof(XstMessage.Subject)) { WordWrap = true, FillsFreeSpace = true });
ObjectListView.Columns.Add(new OLVColumn("From", nameof(XstMessage.From)) { Width = 150 });
ObjectListView.Columns.Add(new OLVColumn("To", nameof(XstMessage.To)) { Width = 150 });
+ ObjectListView.Columns.Add(new OLVColumn("Cc", nameof(XstMessage.Cc)) { Width = 150 });
+ //ObjectListView.Columns.Add(new OLVColumn("Bcc", nameof(XstMessage.Bcc)) { Width = 150 });
ObjectListView.Columns.Add(new OLVColumn("Date", nameof(XstMessage.Date)) { Width = 150 });
+
ObjectListView.FormatRow += (s, e) =>
{
if (e.Item.RowObject is XstMessage message)
@@ -48,6 +53,30 @@ private void Initialize()
ObjectListView.ItemSelectionChanged += (s, e) => RaiseSelectedItemChanged();
SetDataSource(null);
+
+ SearchTextButton.Click += (s, e) =>
+ {
+ TimerSearchText.Stop();
+ _LastSearchedText = SearchTextBox.Text;
+ ObjectListView.ModelFilter = TextMatchFilter.Contains(ObjectListView, _LastSearchedText);
+ };
+ SearchTextCancelButton.Click += (s, e) =>
+ {
+ SearchTextBox.Clear();
+ SearchTextButton.PerformClick();
+ };
+ SearchTextBox.TextChanged += (s, e) =>
+ {
+ TimerSearchText.Start();
+ SearchTextCancelButton.Enabled = string.IsNullOrEmpty(SearchTextBox.Text) ? ButtonEnabled.False : ButtonEnabled.Container;
+ };
+
+ TimerSearchText.Tick += (s, e) =>
+ {
+ TimerSearchText.Stop();
+ if (SearchTextBox.Text != _LastSearchedText)
+ SearchTextButton.PerformClick();
+ };
}
protected override void OnLoad(EventArgs e)
@@ -68,6 +97,7 @@ protected override void OnLoad(EventArgs e)
public void SetDataSource(IEnumerable? dataSource)
{
+ SearchTextBox.Clear();
_DataSource = dataSource;
ObjectListView.Objects = dataSource;
RaiseSelectedItemChanged();
diff --git a/src/XstReader/Controls/XstMessageListControl.resx b/src/XstReader/Controls/XstMessageListControl.resx
index f298a7b..586cc23 100644
--- a/src/XstReader/Controls/XstMessageListControl.resx
+++ b/src/XstReader/Controls/XstMessageListControl.resx
@@ -57,4 +57,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 17, 17
+
\ No newline at end of file
diff --git a/src/XstReader/Properties/Resources.Designer.cs b/src/XstReader/Properties/Resources.Designer.cs
index 6f058fa..e6af95b 100644
--- a/src/XstReader/Properties/Resources.Designer.cs
+++ b/src/XstReader/Properties/Resources.Designer.cs
@@ -130,6 +130,16 @@ internal static System.Drawing.Bitmap application_export {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap close_circle_outline_16 {
+ get {
+ object obj = ResourceManager.GetObject("close_circle_outline_16", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -440,6 +450,26 @@ internal static System.Drawing.Bitmap link {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap magnify {
+ get {
+ object obj = ResourceManager.GetObject("magnify", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap magnify_18 {
+ get {
+ object obj = ResourceManager.GetObject("magnify_18", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
diff --git a/src/XstReader/Properties/Resources.resx b/src/XstReader/Properties/Resources.resx
index 66eb4d6..fcbc063 100644
--- a/src/XstReader/Properties/Resources.resx
+++ b/src/XstReader/Properties/Resources.resx
@@ -139,6 +139,9 @@
..\Resources\application-export.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\close-circle-outline_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\cog.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -232,6 +235,12 @@
..\Resources\link.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\magnify.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\magnify_18.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\microsoft-outlook.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/src/XstReader/Resources/close-circle-outline_16.png b/src/XstReader/Resources/close-circle-outline_16.png
new file mode 100644
index 0000000..ab23453
Binary files /dev/null and b/src/XstReader/Resources/close-circle-outline_16.png differ
diff --git a/src/XstReader/Resources/magnify.png b/src/XstReader/Resources/magnify.png
new file mode 100644
index 0000000..77e5cec
Binary files /dev/null and b/src/XstReader/Resources/magnify.png differ
diff --git a/src/XstReader/Resources/magnify_18.png b/src/XstReader/Resources/magnify_18.png
new file mode 100644
index 0000000..5b8c470
Binary files /dev/null and b/src/XstReader/Resources/magnify_18.png differ
diff --git a/src/XstReader/XstReader.App.csproj b/src/XstReader/XstReader.App.csproj
index 3a4dd9e..38f5308 100644
--- a/src/XstReader/XstReader.App.csproj
+++ b/src/XstReader/XstReader.App.csproj
@@ -13,8 +13,8 @@
https://github.com/iluvadev/XstReader
git
pst-file-viewer;outlook
- 2.0.0
- 2.0.0
+ 2.1.0
+ 2.1.0
MS-PL
XstReader
2.2.0