draft of export image

This commit is contained in:
abdelkader
2023-04-06 23:27:12 -04:00
parent 62deb9a13e
commit 7d9bfc4fe3
12 changed files with 102 additions and 21 deletions

1
.gitignore vendored
View File

@@ -216,3 +216,4 @@ FakesAssemblies/
**/*.Server/ModelManifest.xml **/*.Server/ModelManifest.xml
_Pvt_Extensions _Pvt_Extensions
/contacts /contacts
/vCardEditor/assests/icons8-save-32.png

View File

@@ -5,7 +5,8 @@ using vCardEditor.View;
using VCFEditor.Repository; using VCFEditor.Repository;
using vCardEditor.Repository; using vCardEditor.Repository;
using vCardEditor.Model; using vCardEditor.Model;
using System.Linq;
using System.IO;
namespace VCFEditor.Presenter namespace VCFEditor.Presenter
{ {
@@ -30,9 +31,28 @@ namespace VCFEditor.Presenter
_view.BeforeLeavingContact += BeforeLeavingContact; _view.BeforeLeavingContact += BeforeLeavingContact;
_view.CloseForm += CloseForm; _view.CloseForm += CloseForm;
_view.ModifyImage += ModifyImage; _view.ModifyImage += ModifyImage;
_view.ExportImage += ExportImage;
} }
private void ExportImage(object sender, EventArgs e)
{
string imageFile = _view.DisplaySaveDialog(_repository.fileName);
if (_view.SelectedContactIndex > 0)
{
//TODO: image can be url, or file location.
var card = _repository.Contacts[_view.SelectedContactIndex].card;
var image = card.Photos.FirstOrDefault();
if (image != null)
_repository.SaveImageToDisk(imageFile, image);
}
}
private void ModifyImage(object sender, EventArg<string> e) private void ModifyImage(object sender, EventArg<string> e)
{ {
if (!string.IsNullOrEmpty(e.Data) ) if (!string.IsNullOrEmpty(e.Data) )
@@ -106,7 +126,7 @@ namespace VCFEditor.Presenter
if (!string.IsNullOrEmpty(path)) if (!string.IsNullOrEmpty(path))
{ {
string ext = System.IO.Path.GetExtension(path); string ext = _repository.GetExtension(path);
if (ext != ".vcf") if (ext != ".vcf")
{ {
_view.DisplayMessage("Only vcf extension accepted!", "Error"); _view.DisplayMessage("Only vcf extension accepted!", "Error");

View File

@@ -355,6 +355,19 @@ namespace VCFEditor.Repository
} }
} }
public string GetExtension(string path)
{
return _fileHandler.GetExtension(path);
}
public void SaveImageToDisk(string imageFile, vCardPhoto image)
{
using (var ms = new MemoryStream(image.GetBytes()))
{
using (var fs = new FileStream(imageFile, FileMode.Create))
ms.WriteTo(fs);
}
}
/// <summary> /// <summary>

View File

@@ -1,8 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq;
using System.Text;
namespace vCardEditor.Repository namespace vCardEditor.Repository
{ {
@@ -13,6 +12,11 @@ namespace vCardEditor.Repository
return File.Exists(filename); return File.Exists(filename);
} }
public string GetExtension(string path)
{
return Path.GetExtension(path);
}
public void MoveFile(string newFilename, string oldFilename) public void MoveFile(string newFilename, string oldFilename)
{ {
File.Move(newFilename, oldFilename); File.Move(newFilename, oldFilename);

View File

@@ -21,5 +21,7 @@ namespace VCFEditor.Repository
void SaveDirtyVCard(int index, vCard card); void SaveDirtyVCard(int index, vCard card);
void AddEmptyContact(); void AddEmptyContact();
void ModifyImage(int index, vCardPhoto photo); void ModifyImage(int index, vCardPhoto photo);
string GetExtension(string path);
void SaveImageToDisk(string imageFile, vCardPhoto image);
} }
} }

View File

@@ -11,5 +11,6 @@ namespace vCardEditor.Repository
bool FileExist(string filename); bool FileExist(string filename);
string[] ReadAllLines(string filename); string[] ReadAllLines(string filename);
void WriteAllText(string fileName, string contents); void WriteAllText(string fileName, string contents);
string GetExtension(string path);
} }
} }

View File

@@ -10,7 +10,7 @@ namespace VCFEditor.View
{ {
public interface IMainView public interface IMainView
{ {
#region All events
event EventHandler AddContact; event EventHandler AddContact;
event EventHandler DeleteContact; event EventHandler DeleteContact;
event EventHandler BeforeOpeningNewFile; event EventHandler BeforeOpeningNewFile;
@@ -22,8 +22,7 @@ namespace VCFEditor.View
event EventHandler TextBoxValueChanged; event EventHandler TextBoxValueChanged;
event EventHandler<EventArg<bool>> CloseForm; event EventHandler<EventArg<bool>> CloseForm;
event EventHandler<EventArg<string>> ModifyImage; event EventHandler<EventArg<string>> ModifyImage;
#endregion event EventHandler ExportImage;
int SelectedContactIndex { get; } int SelectedContactIndex { get; }
void DisplayContacts(BindingList<Contact> contacts); void DisplayContacts(BindingList<Contact> contacts);
void DisplayContactDetail(vCard card, string FileName); void DisplayContactDetail(vCard card, string FileName);
@@ -31,6 +30,7 @@ namespace VCFEditor.View
bool AskMessage(string msg, string caption); bool AskMessage(string msg, string caption);
void DisplayMessage(string msg, string caption); void DisplayMessage(string msg, string caption);
string DisplayOpenDialog(string filter); string DisplayOpenDialog(string filter);
string DisplaySaveDialog(string filename);
void UpdateMRUMenu(FixedList MRUList); void UpdateMRUMenu(FixedList MRUList);
} }
} }

View File

@@ -30,7 +30,7 @@
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.miSave = new System.Windows.Forms.ToolStripMenuItem(); this.miSave = new System.Windows.Forms.ToolStripMenuItem();
@@ -55,6 +55,7 @@
this.CellularPhoneLabel = new System.Windows.Forms.Label(); this.CellularPhoneLabel = new System.Windows.Forms.Label();
this.WorkPhoneLabel = new System.Windows.Forms.Label(); this.WorkPhoneLabel = new System.Windows.Forms.Label();
this.gbContactDetail = new System.Windows.Forms.GroupBox(); this.gbContactDetail = new System.Windows.Forms.GroupBox();
this.btnExportImage = new System.Windows.Forms.Button();
this.btnRemoveImage = new System.Windows.Forms.Button(); this.btnRemoveImage = new System.Windows.Forms.Button();
this.groupBox4 = new System.Windows.Forms.GroupBox(); this.groupBox4 = new System.Windows.Forms.GroupBox();
this.tbcAddress = new System.Windows.Forms.TabControl(); this.tbcAddress = new System.Windows.Forms.TabControl();
@@ -352,6 +353,7 @@
this.gbContactDetail.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.gbContactDetail.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.gbContactDetail.Controls.Add(this.btnExportImage);
this.gbContactDetail.Controls.Add(this.btnRemoveImage); this.gbContactDetail.Controls.Add(this.btnRemoveImage);
this.gbContactDetail.Controls.Add(this.groupBox4); this.gbContactDetail.Controls.Add(this.groupBox4);
this.gbContactDetail.Controls.Add(this.groupBox3); this.gbContactDetail.Controls.Add(this.groupBox3);
@@ -368,6 +370,17 @@
this.gbContactDetail.TabStop = false; this.gbContactDetail.TabStop = false;
this.gbContactDetail.Text = "Contact Detail :"; this.gbContactDetail.Text = "Contact Detail :";
// //
// btnExportImage
//
this.btnExportImage.BackColor = System.Drawing.SystemColors.Window;
this.btnExportImage.Image = ((System.Drawing.Image)(resources.GetObject("btnExportImage.Image")));
this.btnExportImage.Location = new System.Drawing.Point(744, 170);
this.btnExportImage.Name = "btnExportImage";
this.btnExportImage.Size = new System.Drawing.Size(21, 23);
this.btnExportImage.TabIndex = 54;
this.btnExportImage.UseVisualStyleBackColor = true;
this.btnExportImage.Click += new System.EventHandler(this.btnExportImage_Click);
//
// btnRemoveImage // btnRemoveImage
// //
this.btnRemoveImage.BackColor = System.Drawing.SystemColors.Window; this.btnRemoveImage.BackColor = System.Drawing.SystemColors.Window;
@@ -1199,8 +1212,8 @@
this.dgContacts.AllowUserToAddRows = false; this.dgContacts.AllowUserToAddRows = false;
this.dgContacts.AllowUserToDeleteRows = false; this.dgContacts.AllowUserToDeleteRows = false;
this.dgContacts.AllowUserToResizeRows = false; this.dgContacts.AllowUserToResizeRows = false;
dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.dgContacts.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle2; this.dgContacts.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle3;
this.dgContacts.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.dgContacts.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left))); | System.Windows.Forms.AnchorStyles.Left)));
this.dgContacts.AutoGenerateColumns = false; this.dgContacts.AutoGenerateColumns = false;
@@ -1384,5 +1397,6 @@
private System.Windows.Forms.ToolStripButton tbsNew; private System.Windows.Forms.ToolStripButton tbsNew;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator; private System.Windows.Forms.ToolStripSeparator toolStripSeparator;
private System.Windows.Forms.Button btnRemoveImage; private System.Windows.Forms.Button btnRemoveImage;
private System.Windows.Forms.Button btnExportImage;
} }
} }

View File

@@ -13,7 +13,6 @@ namespace vCardEditor.View
{ {
public partial class MainForm : Form, IMainView public partial class MainForm : Form, IMainView
{ {
#region event list
public event EventHandler AddContact; public event EventHandler AddContact;
public event EventHandler SaveContactsSelected; public event EventHandler SaveContactsSelected;
public event EventHandler BeforeOpeningNewFile; public event EventHandler BeforeOpeningNewFile;
@@ -25,7 +24,8 @@ namespace vCardEditor.View
public event EventHandler TextBoxValueChanged; public event EventHandler TextBoxValueChanged;
public event EventHandler<EventArg<bool>> CloseForm; public event EventHandler<EventArg<bool>> CloseForm;
public event EventHandler<EventArg<string>> ModifyImage; public event EventHandler<EventArg<string>> ModifyImage;
#endregion public event EventHandler ExportImage;
ComponentResourceManager resources; ComponentResourceManager resources;
public int SelectedContactIndex public int SelectedContactIndex
@@ -183,8 +183,7 @@ namespace vCardEditor.View
var photo = photos[0]; var photo = photos[0];
try try
{ {
// Get the bytes of the photo if it has // Get the bytes of the photo if it has not already been loaded.
// not already been loaded.
if (!photo.IsLoaded) if (!photo.IsLoaded)
photo.Fetch(); photo.Fetch();
@@ -436,6 +435,19 @@ namespace vCardEditor.View
return filename; return filename;
} }
public string DisplaySaveDialog(string filename)
{
var saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = filename;
DialogResult result = saveFileDialog.ShowDialog();
if (result == DialogResult.OK)
filename = saveFileDialog.FileName;
return filename;
}
private void PhotoBox_Click(object sender, EventArgs e) private void PhotoBox_Click(object sender, EventArgs e)
{ {
if (ModifyImage != null) if (ModifyImage != null)
@@ -466,5 +478,12 @@ namespace vCardEditor.View
//Remove image from vcf //Remove image from vcf
ModifyImage(sender, new EventArg<string>("")); ModifyImage(sender, new EventArg<string>(""));
} }
private void btnExportImage_Click(object sender, EventArgs e)
{
ExportImage?.Invoke(sender, e);
}
} }
} }

View File

@@ -252,6 +252,19 @@
<metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>353, 17</value> <value>353, 17</value>
</metadata> </metadata>
<data name="btnExportImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
EwAACxMBAJqcGAAAAZFJREFUOE/NkMtKAlEAhn2Ctq26qmPavTdp3b4Iih6gnqMyoqCw0hIru5hJmFlI
FBE0pNXo2IzO1YNZGK3+xtOIC81t/fBvDnzf+c+x/J+MREi690BHx5qA4ts7bYEUIas6VmMsEiyHpctn
OHeVqO1IbzGxWoZPCVzBH4GmE6hGK7CYV9A654c7cofFiyf07KpgAnLUxGoZChM49zUqyEkKrZCTwb/m
qGAhfIv5WBKOgALGr8DEahk8KcBVEayLuHwUkM6K4DICnjiewmc3D5gNPVKY2ZHrBQOhAvqPdDrR4c+D
8YmwV+oVYNsSYDXK+IxzA7ZvNxD0H+voOzR6oKE3qNE1zj31R2jOrsI2n1QvqMJj8SJmrouYThBMXRUw
GVcxca5gPCpjNCRR2OptJDBv/vj8QrlcRqlUAiEEmqZBkiSIooiXDE/h7q18vaA6+zeY53lwHEfhro0G
guqbm8GpVIrCnZ5cvaDy28xmtinMsizaVjJoX+YaCDx81u5J4174HQ7fsBRucyezJvbnsVi+AVtEwzA2
nUJSAAAAAElFTkSuQmCC
</value>
</data>
<data name="btnRemoveImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="btnRemoveImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

View File

@@ -1,10 +1,4 @@
using System; namespace vCardEditor_Test
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace vCardEditor_Test
{ {
public class Entries public class Entries
{ {