mirror of
https://github.com/abdelkader/vCardEditor
synced 2025-12-12 08:27:19 +07:00
Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7c66075a1 | ||
|
|
c4a29b678f | ||
|
14efe79576
|
|||
|
|
66a77f3b98 | ||
| 5f33b3adaf | |||
|
|
90dce429bd | ||
|
|
b17fce8dde | ||
|
|
afe52e2b18 | ||
|
|
c89d9a197c | ||
|
|
6b57814c5b | ||
|
|
2023043889 | ||
|
|
4401f13fb4 | ||
|
|
c9b9dfb623 | ||
|
|
d79ea44306 | ||
|
|
724113e304 | ||
|
|
32bf064f93 | ||
|
|
250279cf7c | ||
|
|
62744daa8a | ||
|
|
4dad2c4151 | ||
|
|
e89b85411f | ||
|
|
81ce797614 | ||
|
|
2eb633cfd7 | ||
|
|
7a575bf526 | ||
|
|
ad990213be | ||
|
|
d1296f66b7 | ||
|
|
6b133c27f5 | ||
|
|
ce69d72d46 | ||
|
|
b2edc48f66 | ||
|
|
ae3961ec33 | ||
|
|
bad8fee66b | ||
|
|
4ab38ffea7 | ||
|
|
2faa7965cd | ||
|
|
3d558b0216 | ||
|
|
ad28a57df8 | ||
|
|
ba9d26f981 | ||
|
|
abbb03dddf | ||
|
|
a989351889 | ||
|
|
22f7f88018 | ||
|
|
85bb588f42 | ||
|
|
1bf467f81f | ||
|
|
7e8c43e011 | ||
|
|
7d09a9ee3e | ||
|
|
77c1e45bfd |
@@ -1906,13 +1906,12 @@ namespace Thought.vCards
|
||||
/// </summary>
|
||||
private void ReadInto_PHOTO(vCard card, vCardProperty property)
|
||||
{
|
||||
string[] Formats = { "GIF", "CGM", "WMF", "JPEG", "BMP", "MET", "PMB", "DIB", "PICT", "TIFF", "PS", "PDF" };
|
||||
string imageType = property.Subproperties.GetValue("TYPE", Formats);
|
||||
|
||||
string imageType = property.Subproperties.GetValue("TYPE");
|
||||
|
||||
// The PHOTO property contains an embedded (encoded) image
|
||||
// or a link to an image. A URL (linked) image is supposed
|
||||
// to be indicated with the VALUE=URI subproperty.
|
||||
|
||||
string valueType = property.Subproperties.GetValue("VALUE");
|
||||
|
||||
//URI is the standard, but I've seen examples online of URL
|
||||
@@ -2290,10 +2289,7 @@ namespace Thought.vCards
|
||||
|
||||
firstLine = firstLine.Trim();
|
||||
if (firstLine.Length == 0)
|
||||
{
|
||||
Warnings.Add(Thought.vCards.WarningMessages.BlankLine);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get the index of the colon (:) in this
|
||||
// property line. All vCard properties are
|
||||
@@ -2301,10 +2297,7 @@ namespace Thought.vCards
|
||||
|
||||
int colonIndex = firstLine.IndexOf(':');
|
||||
if (colonIndex == -1)
|
||||
{
|
||||
Warnings.Add(Thought.vCards.WarningMessages.ColonMissing);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get the name portion of the property. This
|
||||
// portion contains the property name as well
|
||||
@@ -2312,10 +2305,7 @@ namespace Thought.vCards
|
||||
|
||||
string namePart = firstLine.Substring(0, colonIndex).Trim();
|
||||
if (string.IsNullOrEmpty(namePart))
|
||||
{
|
||||
Warnings.Add(Thought.vCards.WarningMessages.EmptyName);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Split apart the name portion of the property.
|
||||
// A property can have subproperties, separated
|
||||
@@ -2323,17 +2313,14 @@ namespace Thought.vCards
|
||||
|
||||
string[] nameParts = namePart.Split(';');
|
||||
for (int i = 0; i < nameParts.Length; i++)
|
||||
nameParts[i] = nameParts[i].Trim();
|
||||
nameParts[i] = nameParts[i].Trim();
|
||||
|
||||
// The name of the property is supposed to
|
||||
// be first on the line. An empty name is not
|
||||
// legal syntax.
|
||||
|
||||
if (nameParts[0].Length == 0)
|
||||
{
|
||||
Warnings.Add(Thought.vCards.WarningMessages.EmptyName);
|
||||
continue;
|
||||
}
|
||||
|
||||
// At this point there is sufficient text
|
||||
// to define a vCard property. The only
|
||||
@@ -2362,13 +2349,14 @@ namespace Thought.vCards
|
||||
if (subNameValue.Length == 1)
|
||||
{
|
||||
|
||||
// The Split function above returned a single
|
||||
// array element. This means no equal (=) sign
|
||||
// was present. The subproperty consists of
|
||||
// a name only.
|
||||
|
||||
property.Subproperties.Add(
|
||||
nameParts[index].Trim());
|
||||
// The Split function above returned a single
|
||||
// array element. This means no equal (=) sign
|
||||
// was present. The subproperty consists of
|
||||
// a name only.
|
||||
if (!string.IsNullOrEmpty(subNameValue[0]))
|
||||
{
|
||||
property.Subproperties.Add(nameParts[index].Trim());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -311,8 +311,8 @@ namespace Thought.vCards
|
||||
|
||||
vCardValueCollection values = new vCardValueCollection(';');
|
||||
|
||||
values.Add(string.Empty);
|
||||
values.Add(string.Empty);
|
||||
values.Add(address.PostOfficeBox);
|
||||
values.Add(address.ExtendedAddress);
|
||||
values.Add(!string.IsNullOrEmpty(address.Street) ? address.Street.Replace("\r\n", "\n") : string.Empty);
|
||||
values.Add(address.City);
|
||||
values.Add(address.Region);
|
||||
@@ -44,6 +44,9 @@ namespace VCFEditor.Model
|
||||
|
||||
[Browsable(false)]
|
||||
public bool isDeleted { get; set; }
|
||||
|
||||
[Browsable(false)]
|
||||
public string path { get; set; }
|
||||
|
||||
|
||||
public Contact()
|
||||
@@ -53,6 +56,18 @@ namespace VCFEditor.Model
|
||||
isDirty = false;
|
||||
}
|
||||
|
||||
public Contact(vCard card)
|
||||
{
|
||||
this.card = card;
|
||||
isSelected = false;
|
||||
isDirty = false;
|
||||
}
|
||||
|
||||
public Contact(string path) : this()
|
||||
{
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
private void NotifyPropertyChanged(string name)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
using System;
|
||||
using Thought.vCards;
|
||||
using VCFEditor.View;
|
||||
using vCardEditor.View;
|
||||
using vCardEditor.View.Customs;
|
||||
using VCFEditor.Repository;
|
||||
using vCardEditor.Repository;
|
||||
using vCardEditor.Model;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace VCFEditor.Presenter
|
||||
@@ -15,6 +14,7 @@ namespace VCFEditor.Presenter
|
||||
{
|
||||
private readonly IMainView _view;
|
||||
private readonly IContactRepository _repository;
|
||||
|
||||
|
||||
public MainPresenter(IMainView view, IContactRepository repository)
|
||||
{
|
||||
@@ -23,7 +23,7 @@ namespace VCFEditor.Presenter
|
||||
|
||||
_view.LoadForm += LoadFormHandler;
|
||||
_view.AddContact += AddContactHandler;
|
||||
_view.NewFileOpened += NewFileOpenedHandler;
|
||||
_view.NewFileOpened += OpenNewFileHandler;
|
||||
_view.SaveContactsSelected += SaveContactsHandler;
|
||||
_view.ChangeContactsSelected += ChangeContactSelectedHandler;
|
||||
_view.DeleteContact += DeleteContactHandler;
|
||||
@@ -39,7 +39,135 @@ namespace VCFEditor.Presenter
|
||||
_view.AddressRemoved += AddressRemovedHandler;
|
||||
_view.CopyTextToClipboardEvent += CopyTextToClipboardHandler;
|
||||
_view.AddExtraField += _view_AddExtraField;
|
||||
_view.CountImagesEvent += _view_CountImages;
|
||||
_view.ClearImagesEvent += _view_ClearImages;
|
||||
_view.BatchExportImagesEvent += _view_BatchExportImagesEvent;
|
||||
_view.SplitFileEvent += SaveSplittedFileHandler;
|
||||
_view.OpenFolderEvent += OpenNewFolderHandler;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void OpenNewFolderHandler(object sender, EventArg<string> e)
|
||||
{
|
||||
BeforeOpeningNewFileHandler();
|
||||
|
||||
string path = e.Data;
|
||||
if (string.IsNullOrEmpty(path))
|
||||
path = _view.DisplayOpenFolderDialog();
|
||||
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
var Loaded =_repository.LoadMultipleFilesContact(path);
|
||||
if (!Loaded)
|
||||
{
|
||||
_view.DisplayMessage("No file loaded!", "Error");
|
||||
return;
|
||||
}
|
||||
|
||||
AddPathToMostRecentUsedFiles(path);
|
||||
_view.DisplayContacts(_repository.Contacts);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void OpenNewFileHandler(object sender, EventArg<string> e)
|
||||
{
|
||||
BeforeOpeningNewFileHandler();
|
||||
|
||||
string path = e.Data;
|
||||
if (string.IsNullOrEmpty(path))
|
||||
path = _view.DisplayOpenFileDialog("vCard Files|*.vcf");
|
||||
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
string ext = _repository.GetExtension(path);
|
||||
if (!string.Equals(ext, ".vcf", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
_view.DisplayMessage("Only vcf extension accepted!", "Error");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (!_repository.LoadContacts(path))
|
||||
_view.DisplayMessage("File seems missing or corrupted!", "Error");
|
||||
else
|
||||
{
|
||||
_view.DisplayContacts(_repository.Contacts);
|
||||
AddPathToMostRecentUsedFiles(path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
private void AddPathToMostRecentUsedFiles(string path)
|
||||
{
|
||||
FixedList MostRecentUsedFiles = ConfigRepository.Instance.Paths;
|
||||
if (!MostRecentUsedFiles.Contains(path))
|
||||
{
|
||||
MostRecentUsedFiles.Enqueue(path);
|
||||
_view.UpdateMRUMenu(MostRecentUsedFiles);
|
||||
}
|
||||
}
|
||||
private void _view_BatchExportImagesEvent(object sender, EventArgs e)
|
||||
{
|
||||
if (_repository.Contacts == null || _repository.Contacts.Count == 0)
|
||||
return;
|
||||
|
||||
int count = 0;
|
||||
for (int i = 0; i < _repository.Contacts.Count; i++)
|
||||
{
|
||||
if (_repository.Contacts[i].card.Photos.Count > 0)
|
||||
{
|
||||
count++;
|
||||
SaveCardPhoto(_repository.Contacts[i].card, i);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (count > 0)
|
||||
_view.DisplayMessage($"{count} contact(s) processed!", "Photo Count");
|
||||
else
|
||||
_view.DisplayMessage($"No picture found!", "Photo Count");
|
||||
}
|
||||
|
||||
private void _view_ClearImages(object sender, EventArgs e)
|
||||
{
|
||||
if (_repository.Contacts == null || _repository.Contacts.Count == 0)
|
||||
return;
|
||||
|
||||
int count = 0;
|
||||
for (int i = 0; i < _repository.Contacts.Count; i++)
|
||||
{
|
||||
if (_repository.Contacts[i].card.Photos.Count > 0)
|
||||
{
|
||||
count++;
|
||||
_repository.ModifyImage(i, null);
|
||||
|
||||
//remove from the form the image displayed.
|
||||
if (_view.SelectedContactIndex == i)
|
||||
_view.ClearImageFromForm();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (count > 0)
|
||||
_view.DisplayMessage($"{count} contact(s) processed!", "Photo Count");
|
||||
else
|
||||
_view.DisplayMessage($"No picture found!", "Photo Count");
|
||||
}
|
||||
|
||||
private void _view_CountImages(object sender, EventArgs e)
|
||||
{
|
||||
if (_repository.Contacts == null)
|
||||
return;
|
||||
|
||||
var count = _repository.Contacts.Count(x => x.card.Photos.Count > 0);
|
||||
if (count > 0)
|
||||
_view.DisplayMessage($"{count} contact(s) containing a picture = ", "Photo Count");
|
||||
else
|
||||
_view.DisplayMessage($"No picture found!", "Photo Count");
|
||||
}
|
||||
|
||||
private void _view_AddExtraField(object sender, EventArg<vCardPropeties> e)
|
||||
@@ -66,7 +194,7 @@ namespace VCFEditor.Presenter
|
||||
if (paths.Length > 1)
|
||||
{
|
||||
var evt = new EventArg<string>(paths[1]);
|
||||
NewFileOpenedHandler(sender, evt);
|
||||
OpenNewFileHandler(sender, evt);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -103,16 +231,25 @@ namespace VCFEditor.Presenter
|
||||
{
|
||||
//TODO: image can be url, or file location.
|
||||
var card = _repository.Contacts[_view.SelectedContactIndex].card;
|
||||
var image = card.Photos.FirstOrDefault();
|
||||
SaveCardPhoto(card, _view.SelectedContactIndex, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (image != null)
|
||||
{
|
||||
|
||||
var newPath = _repository.ChangeExtension(_repository.fileName, image.Extension);
|
||||
private void SaveCardPhoto(vCard card, int index, bool askUser = false)
|
||||
{
|
||||
//TODO: Save every image for a vCard.
|
||||
var image = card.Photos.FirstOrDefault();
|
||||
|
||||
string imageFile = _view.DisplaySaveDialog(newPath);
|
||||
_repository.SaveImageToDisk(imageFile, image);
|
||||
}
|
||||
if (image != null)
|
||||
{
|
||||
|
||||
var newPath = _repository.GenerateFileName(_repository.fileName, index, image.Extension);
|
||||
|
||||
//string ImagePath = string.Empty;
|
||||
//if (askUser)
|
||||
// ImagePath = _view.DisplaySaveDialog(newPath);
|
||||
|
||||
_repository.SaveImageToDisk(newPath, image);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,6 +312,7 @@ namespace VCFEditor.Presenter
|
||||
private void AddContactHandler(object sender, EventArgs e)
|
||||
{
|
||||
_repository.AddEmptyContact();
|
||||
_view.DisplayContacts(_repository.Contacts);
|
||||
}
|
||||
|
||||
private void DeleteContactHandler(object sender, EventArgs e)
|
||||
@@ -184,8 +322,29 @@ namespace VCFEditor.Presenter
|
||||
|
||||
private void SaveContactsHandler(object sender, EventArgs e)
|
||||
{
|
||||
string filename;
|
||||
if (!string.IsNullOrEmpty(_repository.fileName))
|
||||
_repository.SaveContactsToFile(_repository.fileName);
|
||||
filename = _repository.fileName;
|
||||
else
|
||||
filename = _view.DisplaySaveDialog("");
|
||||
|
||||
|
||||
_repository.SaveContactsToFile(filename);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void SaveSplittedFileHandler(object sender, EventArgs e)
|
||||
{
|
||||
if (_repository.Contacts == null || _repository.Contacts.Count == 0)
|
||||
return;
|
||||
|
||||
string Path = _view.DisplayOpenFolderDialog();
|
||||
if (!string.IsNullOrEmpty(Path))
|
||||
{
|
||||
int count = _repository.SaveSplittedFiles(Path);
|
||||
_view.DisplayMessage(string.Format("{0} contact(s) processed!", count), "Information");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -194,42 +353,12 @@ namespace VCFEditor.Presenter
|
||||
if (_repository.Contacts != null && _repository.dirty)
|
||||
{
|
||||
if (!_view.AskMessage("Save current file before?", "Load"))
|
||||
_repository.SaveContactsToFile(_repository.fileName);
|
||||
SaveContactsHandler(null, null);
|
||||
//_repository.SaveContactsToFile(_repository.fileName);
|
||||
}
|
||||
|
||||
}
|
||||
public void NewFileOpenedHandler(object sender, EventArg<string> e)
|
||||
{
|
||||
BeforeOpeningNewFileHandler();
|
||||
|
||||
string path = e.Data;
|
||||
if (string.IsNullOrEmpty(path))
|
||||
path = _view.DisplayOpenDialog("vCard Files|*.vcf");
|
||||
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
string ext = _repository.GetExtension(path);
|
||||
if (!string.Equals(ext, ".vcf", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
_view.DisplayMessage("Only vcf extension accepted!", "Error");
|
||||
return;
|
||||
}
|
||||
|
||||
FixedList MostRecentUsedFiles = ConfigRepository.Instance.Paths;
|
||||
if (!MostRecentUsedFiles.Contains(path))
|
||||
{
|
||||
MostRecentUsedFiles.Enqueue(path);
|
||||
_view.UpdateMRUMenu(MostRecentUsedFiles);
|
||||
}
|
||||
|
||||
if (!_repository.LoadContacts(path))
|
||||
_view.DisplayMessage("File seems missing or corrupted!", "Error");
|
||||
else
|
||||
_view.DisplayContacts(_repository.Contacts);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void ChangeContactSelectedHandler(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
|
||||
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
|
||||
// en utilisant '*', comme indiqué ci-dessous :
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.5.3")]
|
||||
[assembly: AssemblyVersion("0.5.8")]
|
||||
|
||||
@@ -1,5 +1,22 @@
|
||||
0.5.4
|
||||
0.5.8
|
||||
Merged PR #42, #45
|
||||
|
||||
0.5.7
|
||||
added a feature to batch export/clear/count images.
|
||||
Fix bug when opening files by menu.
|
||||
some buttons click were not working properly.
|
||||
|
||||
0.5.6
|
||||
Not released!
|
||||
|
||||
0.5.5
|
||||
redisgn the extra tab
|
||||
Fix some bugs
|
||||
|
||||
0.5.4
|
||||
Fix a regression when saving Phones, Website, Email
|
||||
added the update button in the about dialog to check the latest version.
|
||||
|
||||
0.5.3
|
||||
Support of QR Code.
|
||||
|
||||
@@ -25,4 +42,4 @@
|
||||
Replaced Moq with nsubstitute (Test mocking library).
|
||||
|
||||
0.1
|
||||
Intial release
|
||||
Intial release
|
||||
|
||||
@@ -30,10 +30,13 @@ namespace vCardEditor.Repository
|
||||
}
|
||||
|
||||
[Description("Overwrite the file when saving")]
|
||||
public bool OverWrite { get; set; }
|
||||
public bool Overwrite { get; set; }
|
||||
[Description("Maximum entries for MRU ")]
|
||||
public int Maximum { get; set; }
|
||||
|
||||
|
||||
[Description("Url for checking application version")]
|
||||
public string VersionUrl { get; set; }
|
||||
|
||||
[Browsable(false)]
|
||||
public FixedList Paths { get; set; }
|
||||
|
||||
@@ -86,7 +89,8 @@ namespace vCardEditor.Repository
|
||||
configData = new ConfigRepository
|
||||
{
|
||||
Maximum = MAX_RECENT_FILES,
|
||||
Paths = new FixedList(MAX_RECENT_FILES)
|
||||
Paths = new FixedList(MAX_RECENT_FILES),
|
||||
VersionUrl = "https://raw.githubusercontent.com/abdelkader/vCardEditor/master/vCardEditor/Releases.txt"
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using Thought.vCards;
|
||||
using VCFEditor.Model;
|
||||
using System.ComponentModel;
|
||||
using vCardEditor.Repository;
|
||||
using vCardEditor.View;
|
||||
|
||||
@@ -49,47 +48,79 @@ namespace VCFEditor.Repository
|
||||
_fileHandler = fileHandler;
|
||||
}
|
||||
|
||||
public bool LoadMultipleFilesContact(string path)
|
||||
{
|
||||
Contacts.Clear();
|
||||
|
||||
string[] filePaths = _fileHandler.GetFiles(path, "*.vcf");
|
||||
if (filePaths.Count() == 0)
|
||||
return false;
|
||||
|
||||
foreach (var item in filePaths)
|
||||
{
|
||||
var result = LoadContactFromFile(item);
|
||||
Contacts.AddRange(result);
|
||||
OriginalContactList = Contacts;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool LoadContacts(string fileName)
|
||||
{
|
||||
Contacts.Clear();
|
||||
|
||||
this.fileName = fileName;
|
||||
Contacts = LoadContactFromFile(fileName);
|
||||
OriginalContactList = Contacts;
|
||||
return true;
|
||||
}
|
||||
|
||||
public SortableBindingList<Contact> LoadContactFromFile(string fileName)
|
||||
{
|
||||
if (!_fileHandler.FileExist(fileName))
|
||||
{
|
||||
OriginalContactList = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
SortableBindingList<Contact> ListOfContacts = new SortableBindingList<Contact>();
|
||||
|
||||
string[] lines = _fileHandler.ReadAllLines(fileName);
|
||||
|
||||
StringBuilder RawContent = new StringBuilder();
|
||||
Contact contact = new Contact();
|
||||
Contact contact;
|
||||
|
||||
for (int i = 0; i < lines.Length; i++)
|
||||
{
|
||||
RawContent.AppendLine(lines[i]);
|
||||
if (string.Equals(lines[i].TrimEnd(), "END:VCARD", StringComparison.OrdinalIgnoreCase))
|
||||
try
|
||||
{
|
||||
contact.card = ParseRawContent(RawContent);
|
||||
Contacts.Add(contact);
|
||||
contact = new Contact();
|
||||
RawContent.Length = 0;
|
||||
if (string.Equals(lines[i].TrimEnd(), "END:VCARD", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
contact = new Contact(ParseRawContent(RawContent));
|
||||
ListOfContacts.Add(contact);
|
||||
RawContent.Length = 0;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
OriginalContactList = Contacts;
|
||||
return true;
|
||||
|
||||
return ListOfContacts;
|
||||
}
|
||||
|
||||
private vCard ParseRawContent(StringBuilder rawContent)
|
||||
{
|
||||
vCard card = null;
|
||||
|
||||
using (StringReader reader = new StringReader(rawContent.ToString()))
|
||||
card = new vCard(reader);
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
public void AddEmptyContact()
|
||||
{
|
||||
if (_contacts != null && _contacts.Count > 0)
|
||||
{
|
||||
Contact contact = new Contact();
|
||||
Contacts.Add(contact);
|
||||
}
|
||||
Contact contact = new Contact();
|
||||
contact.isDirty = true;
|
||||
Contacts.Add(contact);
|
||||
}
|
||||
|
||||
public void SaveContactsToFile(string fileName)
|
||||
@@ -99,7 +130,7 @@ namespace VCFEditor.Repository
|
||||
fileName = this.fileName;
|
||||
|
||||
//Take a copy if specified in the config file
|
||||
if (!ConfigRepository.Instance.OverWrite)
|
||||
if (!ConfigRepository.Instance.Overwrite)
|
||||
{
|
||||
string backupName = GetBackupName();
|
||||
_fileHandler.MoveFile(fileName, backupName);
|
||||
@@ -118,9 +149,9 @@ namespace VCFEditor.Repository
|
||||
|
||||
//Clean the flag for every contact, even the deleted ones.
|
||||
entry.isDirty = false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
_dirty = false;
|
||||
_fileHandler.WriteAllText(fileName, sb.ToString());
|
||||
}
|
||||
|
||||
@@ -156,28 +187,6 @@ namespace VCFEditor.Repository
|
||||
|
||||
}
|
||||
|
||||
private vCard ParseRawContent(StringBuilder rawContent)
|
||||
{
|
||||
vCard card = null;
|
||||
|
||||
using (MemoryStream s = GenerateStreamFromString(rawContent.ToString()))
|
||||
using (TextReader streamReader = new StreamReader(s, Encoding.UTF8))
|
||||
{
|
||||
card = new vCard(streamReader);
|
||||
}
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
private MemoryStream GenerateStreamFromString(string s)
|
||||
{
|
||||
MemoryStream stream = new MemoryStream();
|
||||
StreamWriter writer = new StreamWriter(stream);
|
||||
writer.Write(s);
|
||||
writer.Flush();
|
||||
stream.Position = 0;
|
||||
return stream;
|
||||
}
|
||||
|
||||
public SortableBindingList<Contact> FilterContacts(string filter)
|
||||
{
|
||||
@@ -360,10 +369,11 @@ namespace VCFEditor.Repository
|
||||
public string GenerateStringFromVCard(vCard card)
|
||||
{
|
||||
vCardStandardWriter writer = new vCardStandardWriter();
|
||||
TextWriter tw = new StringWriter();
|
||||
writer.Write(card, tw);
|
||||
|
||||
return tw.ToString();
|
||||
using (TextWriter tw = new StringWriter())
|
||||
{
|
||||
writer.Write(card, tw);
|
||||
return tw.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public void ModifyImage(int index, vCardPhoto photo)
|
||||
@@ -392,7 +402,49 @@ namespace VCFEditor.Repository
|
||||
return _fileHandler.ChangeExtension(path, extension);
|
||||
}
|
||||
|
||||
|
||||
public string GenerateFileName(string fileName, int index, string extension)
|
||||
{
|
||||
string result = _fileHandler.GetFileNameWithExtension(fileName, index, extension);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SaveSplittedFiles(string FolderPath)
|
||||
{
|
||||
//Do not save the deleted ones!
|
||||
var contactsToSave = Contacts.Where(x => !x.isDeleted).ToList();
|
||||
int count;
|
||||
for (count = 0; count < contactsToSave.Count(); count++)
|
||||
{
|
||||
var entry = contactsToSave[count];
|
||||
string SerializedCard = GenerateStringFromVCard(entry.card);
|
||||
|
||||
//Check if filename for the card is empty, and generate one if empty
|
||||
if (string.IsNullOrEmpty(entry.path))
|
||||
entry.path = GenerateFileName(FolderPath, entry.FamilyName, count);
|
||||
|
||||
_fileHandler.WriteAllText(entry.path, SerializedCard);
|
||||
|
||||
//Clean the flag for every contact, even the deleted ones.
|
||||
entry.isDirty = false;
|
||||
|
||||
}
|
||||
|
||||
//Clean the global flag for the entire vCard Catalog.
|
||||
_dirty = false;
|
||||
|
||||
//return number of contacts processed!
|
||||
return count;
|
||||
}
|
||||
|
||||
private string GenerateFileName(string FolderPath, string familyName, int index)
|
||||
{
|
||||
string FinalPath;
|
||||
if (string.IsNullOrEmpty(familyName))
|
||||
FinalPath = _fileHandler.GetVcfFileName(FolderPath, index.ToString());
|
||||
else
|
||||
FinalPath = _fileHandler.GetVcfFileName(FolderPath, familyName);
|
||||
|
||||
return FinalPath;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,9 @@ namespace vCardEditor.Repository
|
||||
|
||||
public void MoveFile(string newFilename, string oldFilename)
|
||||
{
|
||||
File.Move(newFilename, oldFilename);
|
||||
if (File.Exists(newFilename))
|
||||
File.Move(newFilename, oldFilename);
|
||||
|
||||
}
|
||||
|
||||
public string[] ReadAllLines(string filename)
|
||||
@@ -43,5 +45,22 @@ namespace vCardEditor.Repository
|
||||
ms.WriteTo(fs);
|
||||
}
|
||||
}
|
||||
|
||||
public string GetVcfFileName(string folderPath, string filename)
|
||||
{
|
||||
return Path.Combine(folderPath, filename + ".vcf");
|
||||
}
|
||||
|
||||
public string GetFileNameWithExtension(string fileName, int index, string extension)
|
||||
{
|
||||
return Path.Combine(Path.GetDirectoryName(fileName), index.ToString() + "." + extension);
|
||||
}
|
||||
|
||||
public string[] GetFiles(string path, string ext)
|
||||
{
|
||||
string[] filePaths = Directory.GetFiles(path, ext,SearchOption.TopDirectoryOnly);
|
||||
return filePaths;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace vCardEditor.Repository
|
||||
public interface IConfigRepository
|
||||
{
|
||||
int Maximum { get; set; }
|
||||
bool OverWrite { get; set; }
|
||||
bool Overwrite { get; set; }
|
||||
FixedList Paths { get; set; }
|
||||
|
||||
void SaveConfig();
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Thought.vCards;
|
||||
using VCFEditor.Model;
|
||||
using System.ComponentModel;
|
||||
using vCardEditor.View;
|
||||
|
||||
namespace VCFEditor.Repository
|
||||
@@ -15,6 +11,7 @@ namespace VCFEditor.Repository
|
||||
string fileName { get; set; }
|
||||
SortableBindingList<Contact> Contacts { get; set; }
|
||||
bool LoadContacts(string fileName);
|
||||
bool LoadMultipleFilesContact(string path);
|
||||
SortableBindingList<Contact> FilterContacts(string p);
|
||||
void SaveContactsToFile(string fileName);
|
||||
void DeleteContact();
|
||||
@@ -23,9 +20,12 @@ namespace VCFEditor.Repository
|
||||
void AddEmptyContact();
|
||||
void ModifyImage(int index, vCardPhoto photo);
|
||||
string GetExtension(string path);
|
||||
string ChangeExtension(string path, string extension);
|
||||
//string ChangeExtension(string path, int index, string extension);
|
||||
void SaveImageToDisk(string imageFile, vCardPhoto image);
|
||||
|
||||
string GenerateStringFromVCard(vCard card);
|
||||
string GenerateFileName(string fileName, int index, string extension);
|
||||
int SaveSplittedFiles(string Path);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
namespace vCardEditor.Repository
|
||||
using System.IO;
|
||||
|
||||
namespace vCardEditor.Repository
|
||||
{
|
||||
public interface IFileHandler
|
||||
{
|
||||
@@ -9,5 +11,8 @@
|
||||
string GetExtension(string path);
|
||||
string ChangeExtension(string path, string extension);
|
||||
void WriteBytesToFile(string imageFile, byte[] image);
|
||||
string GetVcfFileName(string folderPath, string familyName);
|
||||
string GetFileNameWithExtension(string fileName, int index, string extension);
|
||||
string[] GetFiles(string path, string ext);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Ce code a été généré par un outil.
|
||||
// Version du runtime :4.0.30319.34209
|
||||
//
|
||||
// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
|
||||
// le code est régénéré.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Thought.vCards {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
|
||||
/// </summary>
|
||||
// Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
|
||||
// à l'aide d'un outil, tel que ResGen ou Visual Studio.
|
||||
// Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
|
||||
// avec l'option /str ou régénérez votre projet VS.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class WarningMessages {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal WarningMessages() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("vCardEditor.Thought.vCards.WarningMessages", typeof(WarningMessages).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Remplace la propriété CurrentUICulture du thread actuel pour toutes
|
||||
/// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recherche une chaîne localisée semblable à Line {0} A blank line was encountered. This is not allowed in the vCard specification..
|
||||
/// </summary>
|
||||
internal static string BlankLine {
|
||||
get {
|
||||
return ResourceManager.GetString("BlankLine", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recherche une chaîne localisée semblable à Line {0}: A colon (:) is missing. All properties must be in NAME:VALUE format..
|
||||
/// </summary>
|
||||
internal static string ColonMissing {
|
||||
get {
|
||||
return ResourceManager.GetString("ColonMissing", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recherche une chaîne localisée semblable à Line {0}: The name section of the property is empty..
|
||||
/// </summary>
|
||||
internal static string EmptyName {
|
||||
get {
|
||||
return ResourceManager.GetString("EmptyName", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="BlankLine" xml:space="preserve">
|
||||
<value>Line {0} A blank line was encountered. This is not allowed in the vCard specification.</value>
|
||||
</data>
|
||||
<data name="ColonMissing" xml:space="preserve">
|
||||
<value>Line {0}: A colon (:) is missing. All properties must be in NAME:VALUE format.</value>
|
||||
</data>
|
||||
<data name="EmptyName" xml:space="preserve">
|
||||
<value>Line {0}: The name section of the property is empty.</value>
|
||||
</data>
|
||||
</root>
|
||||
64
vCardEditor/View/AboutDialog.Designer.cs
generated
64
vCardEditor/View/AboutDialog.Designer.cs
generated
@@ -36,36 +36,42 @@
|
||||
this.labelCompanyName = new System.Windows.Forms.Label();
|
||||
this.textBoxDescription = new System.Windows.Forms.TextBox();
|
||||
this.okButton = new System.Windows.Forms.Button();
|
||||
this.updateButton = new System.Windows.Forms.Button();
|
||||
this.tableLayoutPanel.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel
|
||||
//
|
||||
this.tableLayoutPanel.ColumnCount = 2;
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 27.81775F));
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 72.18225F));
|
||||
this.tableLayoutPanel.ColumnCount = 3;
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 32.31441F));
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67.68559F));
|
||||
this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 119F));
|
||||
this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2);
|
||||
this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3);
|
||||
this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4);
|
||||
this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5);
|
||||
this.tableLayoutPanel.Controls.Add(this.okButton, 2, 5);
|
||||
this.tableLayoutPanel.Controls.Add(this.updateButton, 1, 5);
|
||||
this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel.Location = new System.Drawing.Point(12, 11);
|
||||
this.tableLayoutPanel.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.tableLayoutPanel.Name = "tableLayoutPanel";
|
||||
this.tableLayoutPanel.RowCount = 6;
|
||||
this.tableLayoutPanel.RowCount = 7;
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 47.93651F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.69841F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 8F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel.Size = new System.Drawing.Size(556, 326);
|
||||
this.tableLayoutPanel.TabIndex = 0;
|
||||
//
|
||||
@@ -76,69 +82,74 @@
|
||||
this.logoPictureBox.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.logoPictureBox.Name = "logoPictureBox";
|
||||
this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6);
|
||||
this.logoPictureBox.Size = new System.Drawing.Size(145, 121);
|
||||
this.logoPictureBox.Size = new System.Drawing.Size(133, 121);
|
||||
this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.logoPictureBox.TabIndex = 12;
|
||||
this.logoPictureBox.TabStop = false;
|
||||
//
|
||||
// labelProductName
|
||||
//
|
||||
this.tableLayoutPanel.SetColumnSpan(this.labelProductName, 2);
|
||||
this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelProductName.Location = new System.Drawing.Point(162, 0);
|
||||
this.labelProductName.Location = new System.Drawing.Point(149, 0);
|
||||
this.labelProductName.Margin = new System.Windows.Forms.Padding(8, 0, 4, 0);
|
||||
this.labelProductName.MaximumSize = new System.Drawing.Size(0, 21);
|
||||
this.labelProductName.Name = "labelProductName";
|
||||
this.labelProductName.Size = new System.Drawing.Size(390, 21);
|
||||
this.labelProductName.Size = new System.Drawing.Size(403, 21);
|
||||
this.labelProductName.TabIndex = 19;
|
||||
this.labelProductName.Text = "Nom du produit";
|
||||
this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelVersion
|
||||
//
|
||||
this.tableLayoutPanel.SetColumnSpan(this.labelVersion, 2);
|
||||
this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelVersion.Location = new System.Drawing.Point(162, 32);
|
||||
this.labelVersion.Location = new System.Drawing.Point(149, 31);
|
||||
this.labelVersion.Margin = new System.Windows.Forms.Padding(8, 0, 4, 0);
|
||||
this.labelVersion.MaximumSize = new System.Drawing.Size(0, 21);
|
||||
this.labelVersion.Name = "labelVersion";
|
||||
this.labelVersion.Size = new System.Drawing.Size(390, 21);
|
||||
this.labelVersion.Size = new System.Drawing.Size(403, 21);
|
||||
this.labelVersion.TabIndex = 0;
|
||||
this.labelVersion.Text = "Version";
|
||||
this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelCopyright
|
||||
//
|
||||
this.tableLayoutPanel.SetColumnSpan(this.labelCopyright, 2);
|
||||
this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelCopyright.Location = new System.Drawing.Point(162, 64);
|
||||
this.labelCopyright.Location = new System.Drawing.Point(149, 62);
|
||||
this.labelCopyright.Margin = new System.Windows.Forms.Padding(8, 0, 4, 0);
|
||||
this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 21);
|
||||
this.labelCopyright.Name = "labelCopyright";
|
||||
this.labelCopyright.Size = new System.Drawing.Size(390, 21);
|
||||
this.labelCopyright.Size = new System.Drawing.Size(403, 21);
|
||||
this.labelCopyright.TabIndex = 21;
|
||||
this.labelCopyright.Text = "Copyright";
|
||||
this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// labelCompanyName
|
||||
//
|
||||
this.tableLayoutPanel.SetColumnSpan(this.labelCompanyName, 2);
|
||||
this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.labelCompanyName.Location = new System.Drawing.Point(162, 96);
|
||||
this.labelCompanyName.Location = new System.Drawing.Point(149, 93);
|
||||
this.labelCompanyName.Margin = new System.Windows.Forms.Padding(8, 0, 4, 0);
|
||||
this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 21);
|
||||
this.labelCompanyName.Name = "labelCompanyName";
|
||||
this.labelCompanyName.Size = new System.Drawing.Size(390, 21);
|
||||
this.labelCompanyName.Size = new System.Drawing.Size(403, 21);
|
||||
this.labelCompanyName.TabIndex = 22;
|
||||
this.labelCompanyName.Text = "Nom de la société";
|
||||
this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// textBoxDescription
|
||||
//
|
||||
this.tableLayoutPanel.SetColumnSpan(this.textBoxDescription, 2);
|
||||
this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.textBoxDescription.Location = new System.Drawing.Point(162, 132);
|
||||
this.textBoxDescription.Location = new System.Drawing.Point(149, 128);
|
||||
this.textBoxDescription.Margin = new System.Windows.Forms.Padding(8, 4, 4, 4);
|
||||
this.textBoxDescription.Multiline = true;
|
||||
this.textBoxDescription.Name = "textBoxDescription";
|
||||
this.textBoxDescription.ReadOnly = true;
|
||||
this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||
this.textBoxDescription.Size = new System.Drawing.Size(390, 155);
|
||||
this.textBoxDescription.Size = new System.Drawing.Size(403, 143);
|
||||
this.textBoxDescription.TabIndex = 23;
|
||||
this.textBoxDescription.TabStop = false;
|
||||
this.textBoxDescription.Text = "Description";
|
||||
@@ -147,13 +158,23 @@
|
||||
//
|
||||
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.okButton.Location = new System.Drawing.Point(452, 295);
|
||||
this.okButton.Location = new System.Drawing.Point(442, 282);
|
||||
this.okButton.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new System.Drawing.Size(100, 27);
|
||||
this.okButton.Size = new System.Drawing.Size(110, 29);
|
||||
this.okButton.TabIndex = 24;
|
||||
this.okButton.Text = "&OK";
|
||||
//
|
||||
// updateButton
|
||||
//
|
||||
this.updateButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.updateButton.Location = new System.Drawing.Point(312, 283);
|
||||
this.updateButton.Name = "updateButton";
|
||||
this.updateButton.Size = new System.Drawing.Size(121, 29);
|
||||
this.updateButton.TabIndex = 25;
|
||||
this.updateButton.Text = "Check update...";
|
||||
this.updateButton.Click += new System.EventHandler(this.updateButton_Click);
|
||||
//
|
||||
// AboutDialog
|
||||
//
|
||||
this.AcceptButton = this.okButton;
|
||||
@@ -188,5 +209,6 @@
|
||||
private System.Windows.Forms.Label labelCompanyName;
|
||||
private System.Windows.Forms.TextBox textBoxDescription;
|
||||
private System.Windows.Forms.Button okButton;
|
||||
private System.Windows.Forms.Button updateButton;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,13 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using vCardEditor.Repository;
|
||||
|
||||
namespace vCardEditor.View
|
||||
{
|
||||
@@ -100,5 +104,36 @@ namespace vCardEditor.View
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
private async void updateButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var client = new WebClient())
|
||||
{
|
||||
string result = await client.DownloadStringTaskAsync(ConfigRepository.Instance.VersionUrl);
|
||||
using (var reader = new StringReader(result))
|
||||
{
|
||||
string InternetVersion = reader.ReadLine();
|
||||
string AssemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
Version v1 = new Version(InternetVersion);
|
||||
Version v2 = new Version(AssemblyVersion);
|
||||
|
||||
if (v1.CompareTo(v2) > 0)
|
||||
MessageBox.Show(string.Format("New version {0} found!", result), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
else
|
||||
MessageBox.Show("You have the latest version!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (WebException )
|
||||
{
|
||||
MessageBox.Show("Could not download version information from GitHub.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
catch (Exception )
|
||||
{
|
||||
MessageBox.Show("Error processing version information.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace vCardEditor.View
|
||||
public ConfigDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
ConfigRepository conf = ConfigRepository.Instance;//
|
||||
ConfigRepository conf = ConfigRepository.Instance;
|
||||
pgConfig.SelectedObject = conf;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,8 +36,8 @@ namespace vCardEditor.View.Customs
|
||||
this.btnOK = new System.Windows.Forms.Button();
|
||||
this.btnCancel = new System.Windows.Forms.Button();
|
||||
this.cbInternational = new System.Windows.Forms.CheckBox();
|
||||
this.cbCustom = new System.Windows.Forms.CheckBox();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.cbParcel = new System.Windows.Forms.CheckBox();
|
||||
this.cbPreferred = new System.Windows.Forms.CheckBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// cbHome
|
||||
@@ -73,7 +73,7 @@ namespace vCardEditor.View.Customs
|
||||
// cbDomestic
|
||||
//
|
||||
this.cbDomestic.AutoSize = true;
|
||||
this.cbDomestic.Location = new System.Drawing.Point(12, 94);
|
||||
this.cbDomestic.Location = new System.Drawing.Point(143, 40);
|
||||
this.cbDomestic.Name = "cbDomestic";
|
||||
this.cbDomestic.Size = new System.Drawing.Size(88, 21);
|
||||
this.cbDomestic.TabIndex = 3;
|
||||
@@ -82,8 +82,9 @@ namespace vCardEditor.View.Customs
|
||||
//
|
||||
// btnOK
|
||||
//
|
||||
this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
|
||||
this.btnOK.Location = new System.Drawing.Point(95, 187);
|
||||
this.btnOK.Location = new System.Drawing.Point(95, 161);
|
||||
this.btnOK.Name = "btnOK";
|
||||
this.btnOK.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnOK.TabIndex = 7;
|
||||
@@ -93,9 +94,10 @@ namespace vCardEditor.View.Customs
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCancel.CausesValidation = false;
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Location = new System.Drawing.Point(176, 187);
|
||||
this.btnCancel.Location = new System.Drawing.Point(176, 161);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
this.btnCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnCancel.TabIndex = 8;
|
||||
@@ -105,37 +107,41 @@ namespace vCardEditor.View.Customs
|
||||
// cbInternational
|
||||
//
|
||||
this.cbInternational.AutoSize = true;
|
||||
this.cbInternational.Location = new System.Drawing.Point(12, 121);
|
||||
this.cbInternational.Location = new System.Drawing.Point(143, 12);
|
||||
this.cbInternational.Name = "cbInternational";
|
||||
this.cbInternational.Size = new System.Drawing.Size(108, 21);
|
||||
this.cbInternational.TabIndex = 9;
|
||||
this.cbInternational.Text = "International";
|
||||
this.cbInternational.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// cbCustom
|
||||
// cbParcel
|
||||
//
|
||||
this.cbCustom.AutoSize = true;
|
||||
this.cbCustom.Location = new System.Drawing.Point(12, 148);
|
||||
this.cbCustom.Name = "cbCustom";
|
||||
this.cbCustom.Size = new System.Drawing.Size(81, 21);
|
||||
this.cbCustom.TabIndex = 10;
|
||||
this.cbCustom.Text = "Custom:";
|
||||
this.cbCustom.UseVisualStyleBackColor = true;
|
||||
this.cbParcel.AutoSize = true;
|
||||
this.cbParcel.Location = new System.Drawing.Point(143, 67);
|
||||
this.cbParcel.Name = "cbParcel";
|
||||
this.cbParcel.Size = new System.Drawing.Size(70, 21);
|
||||
this.cbParcel.TabIndex = 10;
|
||||
this.cbParcel.Text = "Parcel";
|
||||
this.cbParcel.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// textBox1
|
||||
// cbPreferred
|
||||
//
|
||||
this.textBox1.Location = new System.Drawing.Point(90, 149);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(161, 22);
|
||||
this.textBox1.TabIndex = 11;
|
||||
this.cbPreferred.AutoSize = true;
|
||||
this.cbPreferred.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.cbPreferred.Location = new System.Drawing.Point(95, 113);
|
||||
this.cbPreferred.Name = "cbPreferred";
|
||||
this.cbPreferred.Size = new System.Drawing.Size(99, 21);
|
||||
this.cbPreferred.TabIndex = 11;
|
||||
this.cbPreferred.Text = "Preferred";
|
||||
this.cbPreferred.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// AddAddress
|
||||
// AddAddressDialog
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(263, 223);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.cbCustom);
|
||||
this.ClientSize = new System.Drawing.Size(263, 196);
|
||||
this.Controls.Add(this.cbPreferred);
|
||||
this.Controls.Add(this.cbParcel);
|
||||
this.Controls.Add(this.cbInternational);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.Controls.Add(this.btnOK);
|
||||
@@ -143,7 +149,7 @@ namespace vCardEditor.View.Customs
|
||||
this.Controls.Add(this.cbPostal);
|
||||
this.Controls.Add(this.cbWork);
|
||||
this.Controls.Add(this.cbHome);
|
||||
this.Name = "AddAddress";
|
||||
this.Name = "AddAddressDialog";
|
||||
this.Text = "Address Type";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
@@ -159,7 +165,7 @@ namespace vCardEditor.View.Customs
|
||||
private System.Windows.Forms.Button btnOK;
|
||||
private System.Windows.Forms.Button btnCancel;
|
||||
private System.Windows.Forms.CheckBox cbInternational;
|
||||
private System.Windows.Forms.CheckBox cbCustom;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.CheckBox cbParcel;
|
||||
private System.Windows.Forms.CheckBox cbPreferred;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Thought.vCards;
|
||||
|
||||
@@ -30,50 +26,52 @@ namespace vCardEditor.View.Customs
|
||||
Addresses = addressCollection;
|
||||
_checkBoxes = Controls.OfType<CheckBox>().ToList();
|
||||
|
||||
|
||||
|
||||
foreach (var item in addressCollection)
|
||||
{
|
||||
switch (item.ToString())
|
||||
{
|
||||
case "Home":
|
||||
cbHome.Checked = true;
|
||||
break;
|
||||
|
||||
break;
|
||||
case "Work":
|
||||
cbWork.Checked = true;
|
||||
break;
|
||||
|
||||
case "Postal":
|
||||
cbPostal.Checked = true;
|
||||
break;
|
||||
|
||||
case "Parcel":
|
||||
cbParcel.Checked = true;
|
||||
break;
|
||||
case "Preferred":
|
||||
cbPreferred.Checked = true;
|
||||
break;
|
||||
case "Domestic":
|
||||
cbDomestic.Checked = true;
|
||||
break;
|
||||
|
||||
case "International":
|
||||
cbInternational.Checked = true;
|
||||
break;
|
||||
case "Default":
|
||||
cbCustom.Checked = true;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void btnOK_Click(object sender, EventArgs e)
|
||||
{
|
||||
var total = _checkBoxes
|
||||
.Where(checkBox => checkBox.Checked);
|
||||
var checkedItems = _checkBoxes.Where(checkBox => checkBox.Checked);
|
||||
|
||||
if (total.Count() == 0)
|
||||
if (checkedItems.Count() == 0)
|
||||
{
|
||||
MessageBox.Show("One item must be checked!");
|
||||
MessageBox.Show("At least, one address type must be checked!");
|
||||
DialogResult = DialogResult.None;
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var item in total)
|
||||
|
||||
Addresses.Clear();
|
||||
foreach (var item in checkedItems)
|
||||
{
|
||||
var enumType = (vCardDeliveryAddressTypes)Enum.Parse(typeof(vCardDeliveryAddressTypes), item.Text, true);
|
||||
Addresses.Add(enumType);
|
||||
@@ -81,6 +79,5 @@ namespace vCardEditor.View.Customs
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
74
vCardEditor/View/Customs/AddressBox.Designer.cs
generated
74
vCardEditor/View/Customs/AddressBox.Designer.cs
generated
@@ -29,38 +29,36 @@ namespace vCardEditor.View.Customs
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.ExtAddrValue = new vCardEditor.View.StateTextBox();
|
||||
this.ExtAddrValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.ExtAdressLabel = new System.Windows.Forms.Label();
|
||||
this.StreetLabel = new System.Windows.Forms.Label();
|
||||
this.StreetValue = new vCardEditor.View.StateTextBox();
|
||||
this.StreetValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.POBoxLabel = new System.Windows.Forms.Label();
|
||||
this.CountryValue = new vCardEditor.View.StateTextBox();
|
||||
this.CountryValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.Country = new System.Windows.Forms.Label();
|
||||
this.POBoxValue = new vCardEditor.View.StateTextBox();
|
||||
this.POBoxValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.CityLabel = new System.Windows.Forms.Label();
|
||||
this.RegionValue = new vCardEditor.View.StateTextBox();
|
||||
this.CityValue = new vCardEditor.View.StateTextBox();
|
||||
this.RegionValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.CityValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.StateLabel = new System.Windows.Forms.Label();
|
||||
this.ZipLabel = new System.Windows.Forms.Label();
|
||||
this.ZipValue = new vCardEditor.View.StateTextBox();
|
||||
this.ZipValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// ExtAddrValue
|
||||
//
|
||||
this.ExtAddrValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ExtAddrValue.Location = new System.Drawing.Point(90, 45);
|
||||
this.ExtAddrValue.Location = new System.Drawing.Point(68, 45);
|
||||
this.ExtAddrValue.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.ExtAddrValue.Name = "ExtAddrValue";
|
||||
this.ExtAddrValue.oldText = null;
|
||||
this.ExtAddrValue.Size = new System.Drawing.Size(237, 22);
|
||||
this.ExtAddrValue.Size = new System.Drawing.Size(190, 22);
|
||||
this.ExtAddrValue.TabIndex = 27;
|
||||
this.ExtAddrValue.LostFocus += new System.EventHandler(this.Value_TextChanged);
|
||||
this.ExtAddrValue.Validated += new System.EventHandler(this.Value_TextChanged);
|
||||
//
|
||||
// ExtAdressLabel
|
||||
//
|
||||
this.ExtAdressLabel.Location = new System.Drawing.Point(4, 45);
|
||||
this.ExtAdressLabel.Location = new System.Drawing.Point(5, 44);
|
||||
this.ExtAdressLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.ExtAdressLabel.Name = "ExtAdressLabel";
|
||||
this.ExtAdressLabel.Size = new System.Drawing.Size(40, 23);
|
||||
@@ -73,7 +71,7 @@ namespace vCardEditor.View.Customs
|
||||
this.StreetLabel.Location = new System.Drawing.Point(2, 14);
|
||||
this.StreetLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.StreetLabel.Name = "StreetLabel";
|
||||
this.StreetLabel.Size = new System.Drawing.Size(65, 23);
|
||||
this.StreetLabel.Size = new System.Drawing.Size(64, 23);
|
||||
this.StreetLabel.TabIndex = 14;
|
||||
this.StreetLabel.Text = "Address:";
|
||||
this.StreetLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
@@ -82,18 +80,18 @@ namespace vCardEditor.View.Customs
|
||||
//
|
||||
this.StreetValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.StreetValue.Location = new System.Drawing.Point(90, 14);
|
||||
this.StreetValue.Location = new System.Drawing.Point(68, 14);
|
||||
this.StreetValue.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.StreetValue.Name = "StreetValue";
|
||||
this.StreetValue.oldText = "";
|
||||
this.StreetValue.Size = new System.Drawing.Size(613, 22);
|
||||
this.StreetValue.Size = new System.Drawing.Size(632, 22);
|
||||
this.StreetValue.TabIndex = 15;
|
||||
this.StreetValue.LostFocus += new System.EventHandler(this.Value_TextChanged);
|
||||
this.StreetValue.Validated += new System.EventHandler(this.Value_TextChanged);
|
||||
//
|
||||
// POBoxLabel
|
||||
//
|
||||
this.POBoxLabel.Location = new System.Drawing.Point(338, 75);
|
||||
this.POBoxLabel.Location = new System.Drawing.Point(267, 76);
|
||||
this.POBoxLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.POBoxLabel.Name = "POBoxLabel";
|
||||
this.POBoxLabel.Size = new System.Drawing.Size(38, 23);
|
||||
@@ -105,18 +103,18 @@ namespace vCardEditor.View.Customs
|
||||
//
|
||||
this.CountryValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.CountryValue.Location = new System.Drawing.Point(579, 76);
|
||||
this.CountryValue.Location = new System.Drawing.Point(557, 76);
|
||||
this.CountryValue.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.CountryValue.Name = "CountryValue";
|
||||
this.CountryValue.oldText = null;
|
||||
this.CountryValue.Size = new System.Drawing.Size(125, 22);
|
||||
this.CountryValue.Size = new System.Drawing.Size(143, 22);
|
||||
this.CountryValue.TabIndex = 25;
|
||||
this.CountryValue.LostFocus += new System.EventHandler(this.Value_TextChanged);
|
||||
this.CountryValue.Validated += new System.EventHandler(this.Value_TextChanged);
|
||||
//
|
||||
// Country
|
||||
//
|
||||
this.Country.Location = new System.Drawing.Point(505, 76);
|
||||
this.Country.Location = new System.Drawing.Point(486, 74);
|
||||
this.Country.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.Country.Name = "Country";
|
||||
this.Country.Size = new System.Drawing.Size(65, 23);
|
||||
@@ -126,20 +124,18 @@ namespace vCardEditor.View.Customs
|
||||
//
|
||||
// POBoxValue
|
||||
//
|
||||
this.POBoxValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.POBoxValue.Location = new System.Drawing.Point(397, 76);
|
||||
this.POBoxValue.Location = new System.Drawing.Point(315, 77);
|
||||
this.POBoxValue.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.POBoxValue.Name = "POBoxValue";
|
||||
this.POBoxValue.oldText = null;
|
||||
this.POBoxValue.Size = new System.Drawing.Size(100, 22);
|
||||
this.POBoxValue.Size = new System.Drawing.Size(166, 22);
|
||||
this.POBoxValue.TabIndex = 17;
|
||||
this.POBoxValue.LostFocus += new System.EventHandler(this.Value_TextChanged);
|
||||
this.POBoxValue.Validated += new System.EventHandler(this.Value_TextChanged);
|
||||
//
|
||||
// CityLabel
|
||||
//
|
||||
this.CityLabel.Location = new System.Drawing.Point(338, 46);
|
||||
this.CityLabel.Location = new System.Drawing.Point(267, 44);
|
||||
this.CityLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.CityLabel.Name = "CityLabel";
|
||||
this.CityLabel.Size = new System.Drawing.Size(32, 23);
|
||||
@@ -151,31 +147,29 @@ namespace vCardEditor.View.Customs
|
||||
//
|
||||
this.RegionValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.RegionValue.Location = new System.Drawing.Point(90, 75);
|
||||
this.RegionValue.Location = new System.Drawing.Point(557, 44);
|
||||
this.RegionValue.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.RegionValue.Name = "RegionValue";
|
||||
this.RegionValue.oldText = null;
|
||||
this.RegionValue.Size = new System.Drawing.Size(236, 22);
|
||||
this.RegionValue.Size = new System.Drawing.Size(143, 22);
|
||||
this.RegionValue.TabIndex = 23;
|
||||
this.RegionValue.LostFocus += new System.EventHandler(this.Value_TextChanged);
|
||||
this.RegionValue.Validated += new System.EventHandler(this.Value_TextChanged);
|
||||
//
|
||||
// CityValue
|
||||
//
|
||||
this.CityValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.CityValue.Location = new System.Drawing.Point(397, 45);
|
||||
this.CityValue.Location = new System.Drawing.Point(316, 46);
|
||||
this.CityValue.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.CityValue.Name = "CityValue";
|
||||
this.CityValue.oldText = null;
|
||||
this.CityValue.Size = new System.Drawing.Size(127, 22);
|
||||
this.CityValue.Size = new System.Drawing.Size(166, 22);
|
||||
this.CityValue.TabIndex = 19;
|
||||
this.CityValue.LostFocus += new System.EventHandler(this.Value_TextChanged);
|
||||
this.CityValue.Validated += new System.EventHandler(this.Value_TextChanged);
|
||||
//
|
||||
// StateLabel
|
||||
//
|
||||
this.StateLabel.Location = new System.Drawing.Point(2, 74);
|
||||
this.StateLabel.Location = new System.Drawing.Point(486, 46);
|
||||
this.StateLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.StateLabel.Name = "StateLabel";
|
||||
this.StateLabel.Size = new System.Drawing.Size(61, 23);
|
||||
@@ -185,31 +179,29 @@ namespace vCardEditor.View.Customs
|
||||
//
|
||||
// ZipLabel
|
||||
//
|
||||
this.ZipLabel.Location = new System.Drawing.Point(533, 45);
|
||||
this.ZipLabel.Location = new System.Drawing.Point(5, 75);
|
||||
this.ZipLabel.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
this.ZipLabel.Name = "ZipLabel";
|
||||
this.ZipLabel.Size = new System.Drawing.Size(37, 23);
|
||||
this.ZipLabel.TabIndex = 20;
|
||||
this.ZipLabel.TabIndex = 28;
|
||||
this.ZipLabel.Text = "Zip:";
|
||||
this.ZipLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// ZipValue
|
||||
//
|
||||
this.ZipValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ZipValue.Location = new System.Drawing.Point(579, 46);
|
||||
this.ZipValue.Location = new System.Drawing.Point(68, 77);
|
||||
this.ZipValue.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.ZipValue.Name = "ZipValue";
|
||||
this.ZipValue.oldText = null;
|
||||
this.ZipValue.Size = new System.Drawing.Size(124, 22);
|
||||
this.ZipValue.TabIndex = 21;
|
||||
this.ZipValue.LostFocus += new System.EventHandler(this.Value_TextChanged);
|
||||
this.ZipValue.Validated += new System.EventHandler(this.Value_TextChanged);
|
||||
this.ZipValue.Size = new System.Drawing.Size(190, 22);
|
||||
this.ZipValue.TabIndex = 29;
|
||||
//
|
||||
// AddressBox
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.ZipLabel);
|
||||
this.Controls.Add(this.ZipValue);
|
||||
this.Controls.Add(this.ExtAddrValue);
|
||||
this.Controls.Add(this.ExtAdressLabel);
|
||||
this.Controls.Add(this.StreetLabel);
|
||||
@@ -222,8 +214,6 @@ namespace vCardEditor.View.Customs
|
||||
this.Controls.Add(this.RegionValue);
|
||||
this.Controls.Add(this.CityValue);
|
||||
this.Controls.Add(this.StateLabel);
|
||||
this.Controls.Add(this.ZipLabel);
|
||||
this.Controls.Add(this.ZipValue);
|
||||
this.Name = "AddressBox";
|
||||
this.Size = new System.Drawing.Size(706, 104);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
@@ -98,7 +98,7 @@ namespace vCardEditor.View.Customs
|
||||
da.AddressType = diag.Addresses;
|
||||
AddtabForAddress(da);
|
||||
AddTab?.Invoke(sender, new EventArg<List<vCardDeliveryAddressTypes>>(diag.Addresses));
|
||||
SelectedIndex = TabCount - 1;
|
||||
SelectedIndex = TabCount - 2;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -200,6 +200,7 @@ namespace vCardEditor.View.Customs
|
||||
da.PostalCode, da.ExtendedAddress, da.PostOfficeBox, da.AddressType);
|
||||
|
||||
ab.TextChangedEvent += (s, e) => TextChangedEvent?.Invoke(s, e);
|
||||
ab.Dock = DockStyle.Fill;
|
||||
page.Controls.Add(ab);
|
||||
page.ToolTipText = string.Join(",", da.AddressType.ConvertAll(f => f.ToString()));
|
||||
|
||||
|
||||
@@ -9,27 +9,17 @@ namespace vCardEditor.View.Customs
|
||||
|
||||
public partial class ExtendedPanel : UserControl
|
||||
{
|
||||
public event EventHandler ContentTextChanged;
|
||||
|
||||
public string Caption
|
||||
{
|
||||
get { return PanelContent.Text; }
|
||||
set { PanelContent.Text = value; }
|
||||
}
|
||||
|
||||
public PanelType panelType { get; set; }
|
||||
|
||||
public ExtendedPanel(PanelType _panel)
|
||||
public ExtendedPanel()
|
||||
{
|
||||
InitializeComponent();
|
||||
panelType = _panel;
|
||||
|
||||
miCell.Click += MenuItemClickHandlers;
|
||||
miCell.Tag = new vCardPhone(string.Empty, vCardPhoneTypes.Cellular);
|
||||
|
||||
miHome.Tag = new vCardPhone(string.Empty, vCardPhoneTypes.Home);
|
||||
miHome.Click += MenuItemClickHandlers;
|
||||
|
||||
miWork.Tag = new vCardPhone(string.Empty, vCardPhoneTypes.Home);
|
||||
miWork.Tag = new vCardPhone(string.Empty, vCardPhoneTypes.Work);
|
||||
miWork.Click += MenuItemClickHandlers;
|
||||
|
||||
miEmail.Tag = new vCardEmailAddress(string.Empty, vCardEmailAddressType.Internet);
|
||||
@@ -47,7 +37,15 @@ namespace vCardEditor.View.Customs
|
||||
//}
|
||||
|
||||
}
|
||||
public event EventHandler ContentTextChanged;
|
||||
|
||||
public string Caption
|
||||
{
|
||||
get { return PanelContent.Text; }
|
||||
set { PanelContent.Text = value; }
|
||||
}
|
||||
|
||||
public PanelType panelType { get; set; }
|
||||
private void MenuItemClickHandlers(object sender, EventArgs e)
|
||||
{
|
||||
var tag = (sender as ToolStripMenuItem).Tag;
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace vCardEditor.View.UIToolbox
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.btnClose = new System.Windows.Forms.Button();
|
||||
this.txtContent = new vCardEditor.View.StateTextBox();
|
||||
this.txtContent = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@@ -47,6 +47,8 @@ namespace vCardEditor.View.UIToolbox
|
||||
//
|
||||
// txtContent
|
||||
//
|
||||
this.txtContent.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtContent.Location = new System.Drawing.Point(56, 4);
|
||||
this.txtContent.Multiline = true;
|
||||
this.txtContent.Name = "txtContent";
|
||||
@@ -76,7 +78,7 @@ namespace vCardEditor.View.UIToolbox
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.Button btnClose;
|
||||
private StateTextBox txtContent;
|
||||
private Customs.StateTextBox txtContent;
|
||||
private System.Windows.Forms.Label label2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace vCardEditor.View.Customs
|
||||
{
|
||||
this.btnRemove = new System.Windows.Forms.Button();
|
||||
this.TitleLabel = new System.Windows.Forms.Label();
|
||||
this.ContentTextBox = new vCardEditor.View.StateTextBox();
|
||||
this.ContentTextBox = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btnRemove
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace vCardEditor.View
|
||||
namespace vCardEditor.View.Customs
|
||||
{
|
||||
public class StateTextBox : TextBox
|
||||
{
|
||||
@@ -9,8 +9,8 @@ namespace vCardEditor.View
|
||||
|
||||
protected override void OnLostFocus(EventArgs e)
|
||||
{
|
||||
base.OnLostFocus(e);
|
||||
oldText = this.Text;
|
||||
base.OnLostFocus(e);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,5 +12,7 @@ namespace VCFEditor.View
|
||||
}
|
||||
|
||||
public T Data { get; set; }
|
||||
|
||||
public bool CanCancel { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,13 +27,18 @@ namespace VCFEditor.View
|
||||
event EventHandler<EventArg<int>> AddressRemoved;
|
||||
event EventHandler CopyTextToClipboardEvent;
|
||||
event EventHandler<EventArg<vCardPropeties>> AddExtraField;
|
||||
event EventHandler CountImagesEvent;
|
||||
event EventHandler ClearImagesEvent;
|
||||
event EventHandler BatchExportImagesEvent;
|
||||
event EventHandler<EventArg<string>> OpenFolderEvent;
|
||||
event EventHandler SplitFileEvent;
|
||||
int SelectedContactIndex { get; }
|
||||
void DisplayContacts(SortableBindingList<Contact> contacts);
|
||||
void DisplayContactDetail(vCard card, string FileName);
|
||||
void ClearContactDetail();
|
||||
bool AskMessage(string msg, string caption);
|
||||
void DisplayMessage(string msg, string caption);
|
||||
string DisplayOpenDialog(string filter);
|
||||
string DisplayOpenFileDialog(string filter);
|
||||
string DisplaySaveDialog(string filename);
|
||||
void UpdateMRUMenu(FixedList MRUList);
|
||||
|
||||
@@ -43,5 +48,8 @@ namespace VCFEditor.View
|
||||
void LoadIntialState(FormState state);
|
||||
void AddExtraTextGroup(vCardPropeties type, string content);
|
||||
void DisplayQRCode(string content);
|
||||
|
||||
void ClearImageFromForm();
|
||||
string DisplayOpenFolderDialog();
|
||||
}
|
||||
}
|
||||
|
||||
224
vCardEditor/View/MainForm.Designer.cs
generated
224
vCardEditor/View/MainForm.Designer.cs
generated
@@ -32,7 +32,7 @@ namespace vCardEditor.View
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miSave = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@@ -56,8 +56,8 @@ namespace vCardEditor.View
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tbsNew = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbsOpen = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbsSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbsOpen = new System.Windows.Forms.ToolStripSplitButton();
|
||||
this.openFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tbsDelete = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbsQR = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
@@ -78,19 +78,19 @@ namespace vCardEditor.View
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.tcMainTab = new System.Windows.Forms.TabControl();
|
||||
this.TapPageMain = new System.Windows.Forms.TabPage();
|
||||
this.extendedPanelWeb = new vCardEditor.View.Customs.ExtendedPanel(PanelType.Web);
|
||||
this.extendedPanelPhones = new vCardEditor.View.Customs.ExtendedPanel(PanelType.Phone);
|
||||
this.extendedPanelWeb = new vCardEditor.View.Customs.ExtendedPanel();
|
||||
this.extendedPanelPhones = new vCardEditor.View.Customs.ExtendedPanel();
|
||||
this.btnExportImage = new System.Windows.Forms.Button();
|
||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||
this.FormattedTitleValue = new vCardEditor.View.StateTextBox();
|
||||
this.FormattedTitleValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.FormattedTitleLabel = new System.Windows.Forms.Label();
|
||||
this.lastNameValue = new vCardEditor.View.StateTextBox();
|
||||
this.lastNameValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.middleNameValue = new vCardEditor.View.StateTextBox();
|
||||
this.middleNameValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.firstNameValue = new vCardEditor.View.StateTextBox();
|
||||
this.firstNameValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.FormattedNameValue = new vCardEditor.View.StateTextBox();
|
||||
this.FormattedNameValue = new vCardEditor.View.Customs.StateTextBox();
|
||||
this.FormattedNameLabel = new System.Windows.Forms.Label();
|
||||
this.btnRemoveImage = new System.Windows.Forms.Button();
|
||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
@@ -98,7 +98,14 @@ namespace vCardEditor.View
|
||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||
this.PhotoBox = new System.Windows.Forms.PictureBox();
|
||||
this.TapPageExtra = new System.Windows.Forms.TabPage();
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.btnAddExtraText = new System.Windows.Forms.Button();
|
||||
this.panelTabExtra = new System.Windows.Forms.Panel();
|
||||
this.menuExtraField = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.miNote = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miOrg = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tbsSave = new System.Windows.Forms.ToolStripSplitButton();
|
||||
this.splitToFilesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.gbNameList.SuspendLayout();
|
||||
@@ -116,6 +123,8 @@ namespace vCardEditor.View
|
||||
this.tbcAddress.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PhotoBox)).BeginInit();
|
||||
this.TapPageExtra.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.menuExtraField.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// menuStrip1
|
||||
@@ -128,7 +137,7 @@ namespace vCardEditor.View
|
||||
this.helpToolStripMenuItem});
|
||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.Size = new System.Drawing.Size(1202, 30);
|
||||
this.menuStrip1.Size = new System.Drawing.Size(1202, 28);
|
||||
this.menuStrip1.TabIndex = 0;
|
||||
this.menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
@@ -142,7 +151,7 @@ namespace vCardEditor.View
|
||||
this.recentFilesMenuItem,
|
||||
this.miQuit});
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(46, 26);
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(46, 24);
|
||||
this.fileToolStripMenuItem.Text = "File";
|
||||
//
|
||||
// miSave
|
||||
@@ -193,7 +202,7 @@ namespace vCardEditor.View
|
||||
this.copyToolStripMenuItem,
|
||||
this.extraFieldsToolStripMenuItem});
|
||||
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
|
||||
this.editToolStripMenuItem.Size = new System.Drawing.Size(49, 26);
|
||||
this.editToolStripMenuItem.Size = new System.Drawing.Size(49, 24);
|
||||
this.editToolStripMenuItem.Text = "Edit";
|
||||
//
|
||||
// copyToolStripMenuItem
|
||||
@@ -231,7 +240,7 @@ namespace vCardEditor.View
|
||||
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.imagesToolStripMenuItem});
|
||||
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
|
||||
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(58, 26);
|
||||
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(58, 24);
|
||||
this.toolsToolStripMenuItem.Text = "Tools";
|
||||
//
|
||||
// imagesToolStripMenuItem
|
||||
@@ -249,25 +258,28 @@ namespace vCardEditor.View
|
||||
this.exportToolStripMenuItem.Name = "exportToolStripMenuItem";
|
||||
this.exportToolStripMenuItem.Size = new System.Drawing.Size(135, 26);
|
||||
this.exportToolStripMenuItem.Text = "Export";
|
||||
this.exportToolStripMenuItem.Click += new System.EventHandler(this.exportToolStripMenuItem_Click);
|
||||
//
|
||||
// clearToolStripMenuItem
|
||||
//
|
||||
this.clearToolStripMenuItem.Name = "clearToolStripMenuItem";
|
||||
this.clearToolStripMenuItem.Size = new System.Drawing.Size(135, 26);
|
||||
this.clearToolStripMenuItem.Text = "Clear";
|
||||
this.clearToolStripMenuItem.Click += new System.EventHandler(this.clearToolStripMenuItem_Click);
|
||||
//
|
||||
// countToolStripMenuItem
|
||||
//
|
||||
this.countToolStripMenuItem.Name = "countToolStripMenuItem";
|
||||
this.countToolStripMenuItem.Size = new System.Drawing.Size(135, 26);
|
||||
this.countToolStripMenuItem.Text = "Count";
|
||||
this.countToolStripMenuItem.Click += new System.EventHandler(this.countToolStripMenuItem_Click);
|
||||
//
|
||||
// helpToolStripMenuItem
|
||||
//
|
||||
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.miAbout});
|
||||
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
|
||||
this.helpToolStripMenuItem.Size = new System.Drawing.Size(55, 26);
|
||||
this.helpToolStripMenuItem.Size = new System.Drawing.Size(55, 24);
|
||||
this.helpToolStripMenuItem.Text = "Help";
|
||||
//
|
||||
// miAbout
|
||||
@@ -301,9 +313,9 @@ namespace vCardEditor.View
|
||||
this.toolStripSeparator1,
|
||||
this.tbsAbout,
|
||||
this.toolStripSeparator});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 30);
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 28);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1202, 31);
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1202, 27);
|
||||
this.toolStrip1.TabIndex = 1;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
@@ -313,29 +325,28 @@ namespace vCardEditor.View
|
||||
this.tbsNew.Image = ((System.Drawing.Image)(resources.GetObject("tbsNew.Image")));
|
||||
this.tbsNew.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbsNew.Name = "tbsNew";
|
||||
this.tbsNew.Size = new System.Drawing.Size(29, 28);
|
||||
this.tbsNew.Size = new System.Drawing.Size(29, 24);
|
||||
this.tbsNew.Text = "&Nouveau";
|
||||
this.tbsNew.Click += new System.EventHandler(this.tbsNew_Click);
|
||||
//
|
||||
// tbsOpen
|
||||
//
|
||||
this.tbsOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.tbsOpen.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.openFolderToolStripMenuItem});
|
||||
this.tbsOpen.Image = ((System.Drawing.Image)(resources.GetObject("tbsOpen.Image")));
|
||||
this.tbsOpen.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbsOpen.Name = "tbsOpen";
|
||||
this.tbsOpen.Size = new System.Drawing.Size(29, 28);
|
||||
this.tbsOpen.Size = new System.Drawing.Size(39, 24);
|
||||
this.tbsOpen.Text = "&Open";
|
||||
this.tbsOpen.Click += new System.EventHandler(this.tbsOpen_Click);
|
||||
this.tbsOpen.ButtonClick += new System.EventHandler(this.tbsOpen_Click);
|
||||
//
|
||||
// tbsSave
|
||||
// openFolderToolStripMenuItem
|
||||
//
|
||||
this.tbsSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.tbsSave.Image = ((System.Drawing.Image)(resources.GetObject("tbsSave.Image")));
|
||||
this.tbsSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbsSave.Name = "tbsSave";
|
||||
this.tbsSave.Size = new System.Drawing.Size(29, 28);
|
||||
this.tbsSave.Text = "&Save";
|
||||
this.tbsSave.Click += new System.EventHandler(this.tbsSave_Click);
|
||||
this.openFolderToolStripMenuItem.Name = "openFolderToolStripMenuItem";
|
||||
this.openFolderToolStripMenuItem.Size = new System.Drawing.Size(174, 26);
|
||||
this.openFolderToolStripMenuItem.Text = "Open Folder";
|
||||
this.openFolderToolStripMenuItem.Click += new System.EventHandler(this.openFolderToolStripMenuItem_Click);
|
||||
//
|
||||
// tbsDelete
|
||||
//
|
||||
@@ -343,7 +354,7 @@ namespace vCardEditor.View
|
||||
this.tbsDelete.Image = ((System.Drawing.Image)(resources.GetObject("tbsDelete.Image")));
|
||||
this.tbsDelete.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbsDelete.Name = "tbsDelete";
|
||||
this.tbsDelete.Size = new System.Drawing.Size(29, 28);
|
||||
this.tbsDelete.Size = new System.Drawing.Size(29, 24);
|
||||
this.tbsDelete.Text = "Delete";
|
||||
this.tbsDelete.Click += new System.EventHandler(this.tbsDelete_Click);
|
||||
//
|
||||
@@ -353,14 +364,14 @@ namespace vCardEditor.View
|
||||
this.tbsQR.Image = global::vCardEditor.Properties.Resources.nuget_icon;
|
||||
this.tbsQR.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbsQR.Name = "tbsQR";
|
||||
this.tbsQR.Size = new System.Drawing.Size(29, 28);
|
||||
this.tbsQR.Size = new System.Drawing.Size(29, 24);
|
||||
this.tbsQR.Text = "&QR Code";
|
||||
this.tbsQR.Click += new System.EventHandler(this.tbsQR_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 31);
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 27);
|
||||
//
|
||||
// tbsAbout
|
||||
//
|
||||
@@ -368,14 +379,14 @@ namespace vCardEditor.View
|
||||
this.tbsAbout.Image = ((System.Drawing.Image)(resources.GetObject("tbsAbout.Image")));
|
||||
this.tbsAbout.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbsAbout.Name = "tbsAbout";
|
||||
this.tbsAbout.Size = new System.Drawing.Size(29, 28);
|
||||
this.tbsAbout.Size = new System.Drawing.Size(29, 24);
|
||||
this.tbsAbout.Text = "&?";
|
||||
this.tbsAbout.Click += new System.EventHandler(this.tbsAbout_Click);
|
||||
//
|
||||
// toolStripSeparator
|
||||
//
|
||||
this.toolStripSeparator.Name = "toolStripSeparator";
|
||||
this.toolStripSeparator.Size = new System.Drawing.Size(6, 31);
|
||||
this.toolStripSeparator.Size = new System.Drawing.Size(6, 27);
|
||||
//
|
||||
// openFileDialog
|
||||
//
|
||||
@@ -392,7 +403,7 @@ namespace vCardEditor.View
|
||||
this.gbNameList.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.gbNameList.Name = "gbNameList";
|
||||
this.gbNameList.Padding = new System.Windows.Forms.Padding(4);
|
||||
this.gbNameList.Size = new System.Drawing.Size(398, 580);
|
||||
this.gbNameList.Size = new System.Drawing.Size(398, 586);
|
||||
this.gbNameList.TabIndex = 2;
|
||||
this.gbNameList.TabStop = false;
|
||||
this.gbNameList.Text = "Name List :";
|
||||
@@ -402,8 +413,8 @@ namespace vCardEditor.View
|
||||
this.dgContacts.AllowUserToAddRows = false;
|
||||
this.dgContacts.AllowUserToDeleteRows = false;
|
||||
this.dgContacts.AllowUserToResizeRows = false;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
|
||||
this.dgContacts.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
|
||||
dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
|
||||
this.dgContacts.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle2;
|
||||
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.Right)));
|
||||
@@ -424,7 +435,7 @@ namespace vCardEditor.View
|
||||
this.dgContacts.RowHeadersVisible = false;
|
||||
this.dgContacts.RowHeadersWidth = 51;
|
||||
this.dgContacts.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.dgContacts.Size = new System.Drawing.Size(390, 527);
|
||||
this.dgContacts.Size = new System.Drawing.Size(390, 533);
|
||||
this.dgContacts.TabIndex = 2;
|
||||
this.dgContacts.CellContextMenuStripNeeded += new System.Windows.Forms.DataGridViewCellContextMenuStripNeededEventHandler(this.dgContacts_CellContextMenuStripNeeded);
|
||||
this.dgContacts.RowLeave += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgContacts_RowLeave);
|
||||
@@ -507,7 +518,7 @@ namespace vCardEditor.View
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 61);
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 55);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
@@ -517,7 +528,7 @@ namespace vCardEditor.View
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.tcMainTab);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1202, 580);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1202, 586);
|
||||
this.splitContainer1.SplitterDistance = 398;
|
||||
this.splitContainer1.TabIndex = 4;
|
||||
//
|
||||
@@ -530,7 +541,7 @@ namespace vCardEditor.View
|
||||
this.tcMainTab.Location = new System.Drawing.Point(0, 0);
|
||||
this.tcMainTab.Name = "tcMainTab";
|
||||
this.tcMainTab.SelectedIndex = 0;
|
||||
this.tcMainTab.Size = new System.Drawing.Size(800, 580);
|
||||
this.tcMainTab.Size = new System.Drawing.Size(800, 586);
|
||||
this.tcMainTab.TabIndex = 0;
|
||||
//
|
||||
// TapPageMain
|
||||
@@ -546,29 +557,31 @@ namespace vCardEditor.View
|
||||
this.TapPageMain.Location = new System.Drawing.Point(4, 25);
|
||||
this.TapPageMain.Name = "TapPageMain";
|
||||
this.TapPageMain.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.TapPageMain.Size = new System.Drawing.Size(792, 551);
|
||||
this.TapPageMain.Size = new System.Drawing.Size(792, 557);
|
||||
this.TapPageMain.TabIndex = 0;
|
||||
this.TapPageMain.Text = "Main";
|
||||
//
|
||||
// extendedPanelWeb
|
||||
//
|
||||
this.extendedPanelWeb.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
this.extendedPanelWeb.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.extendedPanelWeb.Caption = "";
|
||||
this.extendedPanelWeb.Location = new System.Drawing.Point(402, 383);
|
||||
this.extendedPanelWeb.Location = new System.Drawing.Point(386, 389);
|
||||
this.extendedPanelWeb.Name = "extendedPanelWeb";
|
||||
this.extendedPanelWeb.panelType = vCardEditor.View.Customs.PanelType.Web;
|
||||
this.extendedPanelWeb.Size = new System.Drawing.Size(381, 155);
|
||||
this.extendedPanelWeb.Size = new System.Drawing.Size(397, 161);
|
||||
this.extendedPanelWeb.TabIndex = 59;
|
||||
//
|
||||
// extendedPanelPhones
|
||||
//
|
||||
this.extendedPanelPhones.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.extendedPanelPhones.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.extendedPanelPhones.Caption = "";
|
||||
this.extendedPanelPhones.Location = new System.Drawing.Point(13, 383);
|
||||
this.extendedPanelPhones.Location = new System.Drawing.Point(13, 389);
|
||||
this.extendedPanelPhones.Name = "extendedPanelPhones";
|
||||
this.extendedPanelPhones.panelType = vCardEditor.View.Customs.PanelType.Phone;
|
||||
this.extendedPanelPhones.Size = new System.Drawing.Size(367, 155);
|
||||
this.extendedPanelPhones.Size = new System.Drawing.Size(367, 161);
|
||||
this.extendedPanelPhones.TabIndex = 58;
|
||||
//
|
||||
// btnExportImage
|
||||
@@ -581,6 +594,7 @@ namespace vCardEditor.View
|
||||
this.btnExportImage.Size = new System.Drawing.Size(21, 23);
|
||||
this.btnExportImage.TabIndex = 57;
|
||||
this.btnExportImage.UseVisualStyleBackColor = true;
|
||||
this.btnExportImage.Click += new System.EventHandler(this.btnExportImage_Click);
|
||||
//
|
||||
// groupBox3
|
||||
//
|
||||
@@ -724,18 +738,18 @@ namespace vCardEditor.View
|
||||
this.btnRemoveImage.Size = new System.Drawing.Size(20, 23);
|
||||
this.btnRemoveImage.TabIndex = 56;
|
||||
this.btnRemoveImage.UseVisualStyleBackColor = true;
|
||||
this.btnRemoveImage.Click += new System.EventHandler(this.btnRemoveImage_Click);
|
||||
//
|
||||
// groupBox4
|
||||
//
|
||||
this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox4.Controls.Add(this.tbcAddress);
|
||||
this.groupBox4.Location = new System.Drawing.Point(13, 184);
|
||||
this.groupBox4.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.Padding = new System.Windows.Forms.Padding(4);
|
||||
this.groupBox4.Size = new System.Drawing.Size(770, 192);
|
||||
this.groupBox4.Size = new System.Drawing.Size(770, 198);
|
||||
this.groupBox4.TabIndex = 5;
|
||||
this.groupBox4.TabStop = false;
|
||||
this.groupBox4.Text = "Address:";
|
||||
@@ -753,7 +767,7 @@ namespace vCardEditor.View
|
||||
this.tbcAddress.Padding = new System.Drawing.Point(12, 4);
|
||||
this.tbcAddress.SelectedIndex = 0;
|
||||
this.tbcAddress.ShowToolTips = true;
|
||||
this.tbcAddress.Size = new System.Drawing.Size(745, 154);
|
||||
this.tbcAddress.Size = new System.Drawing.Size(745, 160);
|
||||
this.tbcAddress.TabIndex = 0;
|
||||
//
|
||||
// tabPage3
|
||||
@@ -762,7 +776,7 @@ namespace vCardEditor.View
|
||||
this.tabPage3.Location = new System.Drawing.Point(4, 27);
|
||||
this.tabPage3.Name = "tabPage3";
|
||||
this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage3.Size = new System.Drawing.Size(737, 123);
|
||||
this.tabPage3.Size = new System.Drawing.Size(737, 129);
|
||||
this.tabPage3.TabIndex = 0;
|
||||
this.tabPage3.Text = " ";
|
||||
//
|
||||
@@ -778,11 +792,12 @@ namespace vCardEditor.View
|
||||
this.PhotoBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.PhotoBox.TabIndex = 55;
|
||||
this.PhotoBox.TabStop = false;
|
||||
this.PhotoBox.Click += new System.EventHandler(this.PhotoBox_Click);
|
||||
//
|
||||
// TapPageExtra
|
||||
//
|
||||
this.TapPageExtra.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.TapPageExtra.Controls.Add(this.flowLayoutPanel1);
|
||||
this.TapPageExtra.Controls.Add(this.groupBox1);
|
||||
this.TapPageExtra.Location = new System.Drawing.Point(4, 25);
|
||||
this.TapPageExtra.Name = "TapPageExtra";
|
||||
this.TapPageExtra.Padding = new System.Windows.Forms.Padding(3);
|
||||
@@ -790,15 +805,81 @@ namespace vCardEditor.View
|
||||
this.TapPageExtra.TabIndex = 1;
|
||||
this.TapPageExtra.Text = "Extra";
|
||||
//
|
||||
// flowLayoutPanel1
|
||||
// groupBox1
|
||||
//
|
||||
this.flowLayoutPanel1.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
|
||||
this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 3);
|
||||
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
this.flowLayoutPanel1.Size = new System.Drawing.Size(786, 551);
|
||||
this.flowLayoutPanel1.TabIndex = 0;
|
||||
this.groupBox1.Controls.Add(this.btnAddExtraText);
|
||||
this.groupBox1.Controls.Add(this.panelTabExtra);
|
||||
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox1.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(786, 551);
|
||||
this.groupBox1.TabIndex = 0;
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// btnAddExtraText
|
||||
//
|
||||
this.btnAddExtraText.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnAddExtraText.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.btnAddExtraText.Image = global::vCardEditor.Properties.Resources.Add;
|
||||
this.btnAddExtraText.Location = new System.Drawing.Point(732, 0);
|
||||
this.btnAddExtraText.Name = "btnAddExtraText";
|
||||
this.btnAddExtraText.Size = new System.Drawing.Size(39, 22);
|
||||
this.btnAddExtraText.TabIndex = 59;
|
||||
this.btnAddExtraText.UseVisualStyleBackColor = true;
|
||||
this.btnAddExtraText.Click += new System.EventHandler(this.btnAddExtraText_Click);
|
||||
//
|
||||
// panelTabExtra
|
||||
//
|
||||
this.panelTabExtra.AutoScroll = true;
|
||||
this.panelTabExtra.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panelTabExtra.Location = new System.Drawing.Point(3, 18);
|
||||
this.panelTabExtra.Name = "panelTabExtra";
|
||||
this.panelTabExtra.Size = new System.Drawing.Size(780, 530);
|
||||
this.panelTabExtra.TabIndex = 1;
|
||||
this.panelTabExtra.ControlAdded += new System.Windows.Forms.ControlEventHandler(this.panelTabExtra_ControlAdded);
|
||||
this.panelTabExtra.ControlRemoved += new System.Windows.Forms.ControlEventHandler(this.panelTabExtra_ControlRemoved);
|
||||
//
|
||||
// menuExtraField
|
||||
//
|
||||
this.menuExtraField.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||
this.menuExtraField.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.miNote,
|
||||
this.miOrg});
|
||||
this.menuExtraField.Name = "contextMenuStrip1";
|
||||
this.menuExtraField.Size = new System.Drawing.Size(164, 52);
|
||||
//
|
||||
// miNote
|
||||
//
|
||||
this.miNote.Name = "miNote";
|
||||
this.miNote.Size = new System.Drawing.Size(163, 24);
|
||||
this.miNote.Text = "Note";
|
||||
this.miNote.Click += new System.EventHandler(this.miNote_Click);
|
||||
//
|
||||
// miOrg
|
||||
//
|
||||
this.miOrg.Name = "miOrg";
|
||||
this.miOrg.Size = new System.Drawing.Size(163, 24);
|
||||
this.miOrg.Text = "Organisation";
|
||||
this.miOrg.Click += new System.EventHandler(this.miOrg_Click);
|
||||
//
|
||||
// tbsSave
|
||||
//
|
||||
this.tbsSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.tbsSave.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.splitToFilesToolStripMenuItem});
|
||||
this.tbsSave.Image = ((System.Drawing.Image)(resources.GetObject("tbsSave.Image")));
|
||||
this.tbsSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbsSave.Name = "tbsSave";
|
||||
this.tbsSave.Size = new System.Drawing.Size(39, 24);
|
||||
this.tbsSave.Text = "&Save";
|
||||
this.tbsSave.ButtonClick += new System.EventHandler(this.tbsSave_Click);
|
||||
//
|
||||
// splitToFilesToolStripMenuItem
|
||||
//
|
||||
this.splitToFilesToolStripMenuItem.Name = "splitToFilesToolStripMenuItem";
|
||||
this.splitToFilesToolStripMenuItem.Size = new System.Drawing.Size(224, 26);
|
||||
this.splitToFilesToolStripMenuItem.Text = "Split to files";
|
||||
this.splitToFilesToolStripMenuItem.Click += new System.EventHandler(this.splitToFilesToolStripMenuItem_Click);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
@@ -840,6 +921,8 @@ namespace vCardEditor.View
|
||||
this.tbcAddress.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.PhotoBox)).EndInit();
|
||||
this.TapPageExtra.ResumeLayout(false);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.menuExtraField.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@@ -856,8 +939,6 @@ namespace vCardEditor.View
|
||||
private System.Windows.Forms.ToolStripMenuItem miAbout;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton tbsOpen;
|
||||
private System.Windows.Forms.ToolStripButton tbsSave;
|
||||
private System.Windows.Forms.ToolStripButton tbsDelete;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripButton tbsAbout;
|
||||
@@ -889,12 +970,9 @@ namespace vCardEditor.View
|
||||
private System.Windows.Forms.TabControl tcMainTab;
|
||||
private System.Windows.Forms.TabPage TapPageMain;
|
||||
private System.Windows.Forms.TabPage TapPageExtra;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
||||
private System.Windows.Forms.ToolStripMenuItem extraFieldsToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem addNotesToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem addOrgToolStripMenuItem;
|
||||
private ExtendedPanel extendedPanelWeb;
|
||||
private ExtendedPanel extendedPanelPhones;
|
||||
private System.Windows.Forms.Button btnExportImage;
|
||||
private System.Windows.Forms.GroupBox groupBox3;
|
||||
internal StateTextBox FormattedTitleValue;
|
||||
@@ -913,5 +991,17 @@ namespace vCardEditor.View
|
||||
private System.Windows.Forms.TabPage tabPage3;
|
||||
internal System.Windows.Forms.PictureBox PhotoBox;
|
||||
private System.Windows.Forms.ToolStripButton tbsQR;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.Panel panelTabExtra;
|
||||
private System.Windows.Forms.Button btnAddExtraText;
|
||||
private System.Windows.Forms.ContextMenuStrip menuExtraField;
|
||||
private System.Windows.Forms.ToolStripMenuItem miNote;
|
||||
private System.Windows.Forms.ToolStripMenuItem miOrg;
|
||||
private ExtendedPanel extendedPanelWeb;
|
||||
private ExtendedPanel extendedPanelPhones;
|
||||
private System.Windows.Forms.ToolStripSplitButton tbsOpen;
|
||||
private System.Windows.Forms.ToolStripMenuItem openFolderToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSplitButton tbsSave;
|
||||
private System.Windows.Forms.ToolStripMenuItem splitToFilesToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
@@ -34,10 +34,19 @@ namespace vCardEditor.View
|
||||
public event EventHandler ExportImage;
|
||||
public event EventHandler ExportQR;
|
||||
public event EventHandler CopyTextToClipboardEvent;
|
||||
public event EventHandler CountImagesEvent;
|
||||
public event EventHandler ClearImagesEvent;
|
||||
public event EventHandler BatchExportImagesEvent;
|
||||
public event EventHandler<EventArg<string>> OpenFolderEvent;
|
||||
public event EventHandler SplitFileEvent;
|
||||
|
||||
|
||||
|
||||
|
||||
ComponentResourceManager resources;
|
||||
|
||||
|
||||
private int LastRowIndex = -1;
|
||||
|
||||
public int SelectedContactIndex
|
||||
{
|
||||
get
|
||||
@@ -50,10 +59,12 @@ namespace vCardEditor.View
|
||||
|
||||
}
|
||||
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
|
||||
resources = new ComponentResourceManager(typeof(MainForm));
|
||||
tbcAddress.AddTab += (sender, e) => AddressAdded?.Invoke(sender, e);
|
||||
tbcAddress.RemoveTab += (sender, e) => AddressRemoved?.Invoke(sender, e);
|
||||
@@ -65,14 +76,26 @@ namespace vCardEditor.View
|
||||
BuildMRUMenu();
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void tbsOpen_Click(object sender, EventArgs e)
|
||||
{
|
||||
NewFileOpened?.Invoke(sender, new EventArg<string>(string.Empty));
|
||||
OpenFile(sender, string.Empty);
|
||||
}
|
||||
|
||||
|
||||
private void OpenFile(object sender, string filename)
|
||||
{
|
||||
var evt = new EventArg<string>(filename);
|
||||
|
||||
NewFileOpened?.Invoke(sender, new EventArg<string>(filename));
|
||||
|
||||
if (!evt.CanCancel)
|
||||
LastRowIndex = -1;
|
||||
}
|
||||
|
||||
public void DisplayContacts(SortableBindingList<Contact> contacts)
|
||||
{
|
||||
bsContacts.DataSource = null;
|
||||
if (contacts != null)
|
||||
bsContacts.DataSource = contacts;
|
||||
|
||||
@@ -80,10 +103,17 @@ namespace vCardEditor.View
|
||||
|
||||
private void tbsSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (dgContacts.RowCount == 0)
|
||||
return;
|
||||
|
||||
if (SaveContactsSelected != null)
|
||||
{
|
||||
//make sure the last changes in the textboxes is saved.
|
||||
Validate();
|
||||
|
||||
//Make sure to save changes for the current row.
|
||||
dgContacts_RowLeave(null, null);
|
||||
|
||||
SaveContactsSelected(sender, e);
|
||||
}
|
||||
|
||||
@@ -96,13 +126,25 @@ namespace vCardEditor.View
|
||||
|
||||
private void dgContacts_SelectionChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (ChangeContactsSelected != null && dgContacts.CurrentCell != null)
|
||||
if (dgContacts.CurrentCell == null)
|
||||
return;
|
||||
|
||||
|
||||
//Weired, the selection is fired multiple times...
|
||||
int RowIndex = dgContacts.CurrentCell.RowIndex;
|
||||
if (LastRowIndex != RowIndex)
|
||||
{
|
||||
vCard data = GetvCardFromWindow();
|
||||
ChangeContactsSelected(sender, new EventArg<vCard>(data));
|
||||
|
||||
if (ChangeContactsSelected != null && dgContacts.CurrentCell != null)
|
||||
{
|
||||
vCard data = GetvCardFromWindow();
|
||||
ChangeContactsSelected(sender, new EventArg<vCard>(data));
|
||||
}
|
||||
else
|
||||
ChangeContactsSelected(sender, new EventArg<vCard>(null));
|
||||
|
||||
LastRowIndex = RowIndex;
|
||||
}
|
||||
else
|
||||
ChangeContactsSelected(sender, new EventArg<vCard>(null));
|
||||
}
|
||||
|
||||
private void Value_TextChanged(object sender, EventArgs e)
|
||||
@@ -117,9 +159,9 @@ namespace vCardEditor.View
|
||||
throw new ArgumentException("vCard must be valid!");
|
||||
|
||||
ClearContactDetail();
|
||||
|
||||
|
||||
Text = string.Format("{0} - vCard Editor", FileName);
|
||||
//gbContactDetail.Enabled = true;
|
||||
|
||||
tcMainTab.Enabled = true;
|
||||
gbNameList.Enabled = true;
|
||||
|
||||
@@ -128,12 +170,11 @@ namespace vCardEditor.View
|
||||
SetSummaryValue(lastNameValue, card.FamilyName);
|
||||
SetSummaryValue(middleNameValue, card.AdditionalNames);
|
||||
SetSummaryValue(FormattedNameValue, card.FormattedName);
|
||||
|
||||
|
||||
SetAddressesValues(card);
|
||||
SetPhotoValue(card.Photos);
|
||||
|
||||
SetExtraInfos(card);
|
||||
|
||||
SetExtraTabFields(card);
|
||||
|
||||
}
|
||||
@@ -141,37 +182,28 @@ namespace vCardEditor.View
|
||||
private void SetExtraInfos(vCard card)
|
||||
{
|
||||
foreach (var item in card.EmailAddresses)
|
||||
{
|
||||
extendedPanelWeb.AddControl(item);
|
||||
}
|
||||
|
||||
foreach (var item in card.Websites)
|
||||
{
|
||||
extendedPanelWeb.AddControl(item);
|
||||
}
|
||||
|
||||
foreach (var item in card.Phones)
|
||||
{
|
||||
extendedPanelPhones.AddControl(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void SetExtraTabFields(vCard card)
|
||||
{
|
||||
if (card.Notes.Count > 0)
|
||||
{
|
||||
foreach (var note in card.Notes)
|
||||
AddExtraTextGroup(vCardPropeties.NOTE, note.Text);
|
||||
}
|
||||
foreach (var note in card.Notes)
|
||||
AddExtraTextGroup(vCardPropeties.NOTE, note.Text);
|
||||
|
||||
if (!string.IsNullOrEmpty(card.Organization))
|
||||
{
|
||||
AddExtraTextGroup(vCardPropeties.ORG, card.Organization);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void AddExtraTextGroup(vCardPropeties type, string content)
|
||||
@@ -184,15 +216,16 @@ namespace vCardEditor.View
|
||||
etg.ControlDeleted += (sender, e) =>
|
||||
{
|
||||
var send = sender as Control;
|
||||
flowLayoutPanel1.Controls.Remove(send.Parent);
|
||||
panelTabExtra.Controls.Remove(send.Parent);
|
||||
};
|
||||
etg.Dock = DockStyle.Top;
|
||||
|
||||
flowLayoutPanel1.Controls.Add(etg);
|
||||
|
||||
panelTabExtra.Controls.Add(etg);
|
||||
}
|
||||
|
||||
public void ClearContactDetail()
|
||||
{
|
||||
//gbContactDetail.Enabled = false;
|
||||
tcMainTab.Enabled = false;
|
||||
gbNameList.Enabled = false;
|
||||
|
||||
@@ -202,11 +235,8 @@ namespace vCardEditor.View
|
||||
SetSummaryValue(FormattedTitleValue, string.Empty);
|
||||
SetSummaryValue(FormattedNameValue, string.Empty);
|
||||
|
||||
//SetAddressesValues(new vCard());
|
||||
|
||||
|
||||
SetPhotoValue(new vCardPhotoCollection());
|
||||
flowLayoutPanel1.Controls.Clear();
|
||||
panelTabExtra.Controls.Clear();
|
||||
extendedPanelPhones.ClearFields();
|
||||
extendedPanelWeb.ClearFields();
|
||||
}
|
||||
@@ -269,12 +299,15 @@ namespace vCardEditor.View
|
||||
{
|
||||
//Save before leaving contact.
|
||||
BeforeLeavingContact?.Invoke(sender, new EventArg<vCard>(GetvCardFromWindow()));
|
||||
|
||||
FilterTextChanged?.Invoke(sender, new EventArg<string>(textBoxFilter.Text));
|
||||
|
||||
LastRowIndex = -1;
|
||||
dgContacts.ClearSelection();
|
||||
textBoxFilter.Focus();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private vCard GetvCardFromWindow()
|
||||
{
|
||||
vCard card = new vCard
|
||||
@@ -300,7 +333,7 @@ namespace vCardEditor.View
|
||||
card.Phones.Clear();
|
||||
foreach (var item in extendedPanelPhones.GetExtraFields())
|
||||
{
|
||||
if (item is vCardPhone)
|
||||
if (item is vCardPhone)
|
||||
{
|
||||
vCardPhone phone = item as vCardPhone;
|
||||
card.Phones.Add(phone);
|
||||
@@ -333,11 +366,11 @@ namespace vCardEditor.View
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void getExtraData(vCard card)
|
||||
{
|
||||
foreach (var item in flowLayoutPanel1.Controls)
|
||||
foreach (var item in panelTabExtra.Controls)
|
||||
{
|
||||
var tbc = item as ExtraTextGroup;
|
||||
switch (tbc.CardProp)
|
||||
@@ -380,18 +413,15 @@ namespace vCardEditor.View
|
||||
return;
|
||||
}
|
||||
|
||||
NewFileOpened(sender, new EventArg<string>(FileList[0]));
|
||||
|
||||
OpenFile(sender, FileList[0]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void BuildMRUMenu()
|
||||
{
|
||||
recentFilesMenuItem.DropDownItemClicked += (s, e) =>
|
||||
{
|
||||
var evt = new EventArg<string>(e.ClickedItem.Text);
|
||||
NewFileOpened(s, evt);
|
||||
};
|
||||
|
||||
//TODO: Open File or Folder.
|
||||
recentFilesMenuItem.DropDownItemClicked += (s, e) => OpenFile(s, e.ClickedItem.Text);
|
||||
UpdateMRUMenu(ConfigRepository.Instance.Paths);
|
||||
|
||||
}
|
||||
@@ -437,7 +467,7 @@ namespace vCardEditor.View
|
||||
{
|
||||
MessageBox.Show(msg, caption);
|
||||
}
|
||||
public string DisplayOpenDialog(string filter = "")
|
||||
public string DisplayOpenFileDialog(string filter = "")
|
||||
{
|
||||
string filename = string.Empty;
|
||||
openFileDialog.Filter = filter;
|
||||
@@ -467,7 +497,7 @@ namespace vCardEditor.View
|
||||
{
|
||||
if (ModifyImage != null)
|
||||
{
|
||||
var fileName = DisplayOpenDialog();
|
||||
var fileName = DisplayOpenFileDialog();
|
||||
if (!string.IsNullOrEmpty(fileName))
|
||||
{
|
||||
try
|
||||
@@ -487,6 +517,11 @@ namespace vCardEditor.View
|
||||
|
||||
}
|
||||
|
||||
public void ClearImageFromForm()
|
||||
{
|
||||
PhotoBox.Image = (Image)resources.GetObject("PhotoBox.Image");
|
||||
}
|
||||
|
||||
private void btnRemoveImage_Click(object sender, EventArgs e)
|
||||
{
|
||||
PhotoBox.Image = (Image)resources.GetObject("PhotoBox.Image");
|
||||
@@ -509,6 +544,7 @@ namespace vCardEditor.View
|
||||
Clipboard.SetText(text);
|
||||
}
|
||||
|
||||
|
||||
private void dgContacts_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
|
||||
{
|
||||
if (e.RowIndex == -1)
|
||||
@@ -606,6 +642,17 @@ namespace vCardEditor.View
|
||||
}
|
||||
}
|
||||
}
|
||||
private void tbsQR_Click(object sender, EventArgs e)
|
||||
{
|
||||
ExportQR?.Invoke(sender, e);
|
||||
}
|
||||
|
||||
public void DisplayQRCode(string content)
|
||||
{
|
||||
QRDialog qr = new QRDialog(content);
|
||||
qr.ShowDialog();
|
||||
}
|
||||
|
||||
|
||||
private void addNotesToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
@@ -619,15 +666,71 @@ namespace vCardEditor.View
|
||||
AddExtraField?.Invoke(sender, evt);
|
||||
}
|
||||
|
||||
private void tbsQR_Click(object sender, EventArgs e)
|
||||
private void btnAddExtraText_Click(object sender, EventArgs e)
|
||||
{
|
||||
ExportQR?.Invoke(sender, e);
|
||||
Button btnSender = (Button)sender;
|
||||
Point ptLowerLeft = new Point(0, btnSender.Height);
|
||||
ptLowerLeft = btnSender.PointToScreen(ptLowerLeft);
|
||||
menuExtraField.Show(ptLowerLeft);
|
||||
}
|
||||
|
||||
public void DisplayQRCode(string content)
|
||||
|
||||
private void miNote_Click(object sender, EventArgs e)
|
||||
{
|
||||
QRDialog qr = new QRDialog(content);
|
||||
qr.ShowDialog();
|
||||
var evt = new EventArg<vCardPropeties>(vCardPropeties.NOTE);
|
||||
AddExtraField?.Invoke(sender, evt);
|
||||
}
|
||||
|
||||
private void miOrg_Click(object sender, EventArgs e)
|
||||
{
|
||||
var evt = new EventArg<vCardPropeties>(vCardPropeties.ORG);
|
||||
AddExtraField?.Invoke(sender, evt);
|
||||
}
|
||||
|
||||
private void panelTabExtra_ControlAdded(object sender, ControlEventArgs e)
|
||||
{
|
||||
TapPageExtra.Text = string.Format("Extra ({0})", panelTabExtra.Controls.Count);
|
||||
}
|
||||
|
||||
private void panelTabExtra_ControlRemoved(object sender, ControlEventArgs e)
|
||||
{
|
||||
TapPageExtra.Text = string.Format("Extra ({0})", panelTabExtra.Controls.Count);
|
||||
}
|
||||
|
||||
private void countToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
CountImagesEvent?.Invoke(sender, e);
|
||||
}
|
||||
|
||||
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
ClearImagesEvent?.Invoke(sender, e);
|
||||
}
|
||||
|
||||
private void exportToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
BatchExportImagesEvent?.Invoke(sender, e);
|
||||
}
|
||||
|
||||
private void openFolderToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var evt = new EventArg<string>(string.Empty);
|
||||
OpenFolderEvent?.Invoke(sender, evt);
|
||||
}
|
||||
|
||||
private void splitToFilesToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
SplitFileEvent?.Invoke(sender, e);
|
||||
}
|
||||
|
||||
public string DisplayOpenFolderDialog()
|
||||
{
|
||||
string result = string.Empty;
|
||||
FolderBrowserDialog dialog = new FolderBrowserDialog();
|
||||
if (dialog.ShowDialog() == DialogResult.OK)
|
||||
result = dialog.SelectedPath;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -336,6 +336,12 @@
|
||||
XvxneHv7DU8zWBta5VGXAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="menuExtraField.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>804, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>25</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAkAAAAAAAEAIAAHLwAAlgAAAICAAAABACAAKAgBAJ0vAABgYAAAAQAgAKiUAADFNwEASEgAAAEA
|
||||
|
||||
@@ -95,5 +95,36 @@ namespace vCardEditor.View
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
//https://stackoverflow.com/questions/43331145/how-can-i-improve-performance-of-an-addrange-method-on-a-custom-bindinglist
|
||||
public void AddRange(IEnumerable<T> collection)
|
||||
{
|
||||
if (collection == null)
|
||||
throw new ArgumentNullException(nameof(collection));
|
||||
|
||||
// Remember the current setting for RaiseListChangedEvents
|
||||
// (if it was already deactivated, we shouldn't activate it after adding!).
|
||||
var oldRaiseEventsValue = RaiseListChangedEvents;
|
||||
|
||||
try
|
||||
{
|
||||
RaiseListChangedEvents = false;
|
||||
|
||||
foreach (var value in collection)
|
||||
Add(value);
|
||||
}
|
||||
// Restore the old setting for RaiseListChangedEvents (even if there was an exception),
|
||||
// and fire the ListChanged-event once (if RaiseListChangedEvents is activated).
|
||||
finally
|
||||
{
|
||||
RaiseListChangedEvents = oldRaiseEventsValue;
|
||||
|
||||
if (RaiseListChangedEvents)
|
||||
ResetBindings();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,51 +99,50 @@
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Repository\Interfaces\IFileHandler.cs" />
|
||||
<Compile Include="Thought.vCards\vCard.cs" />
|
||||
<Compile Include="Thought.vCards\vCardAccessClassification.cs" />
|
||||
<Compile Include="Thought.vCards\vCardCertificate.cs" />
|
||||
<Compile Include="Thought.vCards\vCardCertificateCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardDeliveryAddress.cs" />
|
||||
<Compile Include="Thought.vCards\vCardDeliveryAddressCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardDeliveryAddressTypes.cs" />
|
||||
<Compile Include="Thought.vCards\vCardDeliveryLabel.cs" />
|
||||
<Compile Include="Thought.vCards\vCardDeliveryLabelCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardEmailAddress.cs" />
|
||||
<Compile Include="Thought.vCards\vCardEmailAddressCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardEmailAddressType.cs" />
|
||||
<Compile Include="Thought.vCards\vCardEncoding.cs" />
|
||||
<Compile Include="Thought.vCards\vCardException.cs" />
|
||||
<Compile Include="Thought.vCards\vCardFormat.cs" />
|
||||
<Compile Include="Thought.vCards\vCardGender.cs" />
|
||||
<Compile Include="Thought.vCards\vCardIMPP.cs" />
|
||||
<Compile Include="Thought.vCards\vCardIMPPCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardNote.cs" />
|
||||
<Compile Include="Thought.vCards\vCardNoteCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardPhone.cs" />
|
||||
<Compile Include="Thought.vCards\vCardPhoneCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardPhoneTypes.cs" />
|
||||
<Compile Include="Thought.vCards\vCardPhoto.cs" />
|
||||
<Compile Include="Thought.vCards\vCardPhotoCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardProperty.cs" />
|
||||
<Compile Include="Thought.vCards\vCardPropertyCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardReader.cs" />
|
||||
<Compile Include="Thought.vCards\vCardRoot.cs" />
|
||||
<Compile Include="Thought.vCards\vCardSocialProfile.cs" />
|
||||
<Compile Include="Thought.vCards\vCardSocialProfileCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardSource.cs" />
|
||||
<Compile Include="Thought.vCards\vCardSourceCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardStandardReader.cs" />
|
||||
<Compile Include="Thought.vCards\vCardStandardWriter.cs" />
|
||||
<Compile Include="Thought.vCards\vCardStandardWriterOptions.cs" />
|
||||
<Compile Include="Thought.vCards\vCardSubproperty.cs" />
|
||||
<Compile Include="Thought.vCards\vCardSubpropertyCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardValueCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardWebsite.cs" />
|
||||
<Compile Include="Thought.vCards\vCardWebsiteCollection.cs" />
|
||||
<Compile Include="Thought.vCards\vCardWebsiteTypes.cs" />
|
||||
<Compile Include="Thought.vCards\vCardWriter.cs" />
|
||||
<Compile Include="Thought.vCards\WarningMessages.Designer.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCard.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardAccessClassification.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardCertificate.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardCertificateCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardDeliveryAddress.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardDeliveryAddressCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardDeliveryAddressTypes.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardDeliveryLabel.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardDeliveryLabelCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardEmailAddress.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardEmailAddressCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardEmailAddressType.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardEncoding.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardException.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardFormat.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardGender.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardIMPP.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardIMPPCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardNote.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardNoteCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardPhone.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardPhoneCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardPhoneTypes.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardPhoto.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardPhotoCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardProperty.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardPropertyCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardReader.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardRoot.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardSocialProfile.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardSocialProfileCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardSource.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardSourceCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardStandardReader.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardStandardWriter.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardStandardWriterOptions.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardSubproperty.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardSubpropertyCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardValueCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardWebsite.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardWebsiteCollection.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardWebsiteTypes.cs" />
|
||||
<Compile Include="Libs\Thought.vCards\vCardWriter.cs" />
|
||||
<Compile Include="View\AboutDialog.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -211,7 +210,7 @@
|
||||
<DependentUpon>QRDialog.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="View\SortableBindingList.cs" />
|
||||
<Compile Include="View\StateTextBox.cs">
|
||||
<Compile Include="View\Customs\StateTextBox.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="View\Customs\ExtraTextGroup.cs">
|
||||
@@ -230,7 +229,6 @@
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Thought.vCards\WarningMessages.resx" />
|
||||
<EmbeddedResource Include="View\AboutDialog.resx">
|
||||
<DependentUpon>AboutDialog.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
@@ -178,8 +178,7 @@ namespace vCardEditor_Test
|
||||
|
||||
repo.AddEmptyContact();
|
||||
|
||||
|
||||
Assert.IsTrue(repo.Contacts.Count == 0);
|
||||
Assert.IsTrue(repo.Contacts.Count == 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,6 +259,42 @@ namespace vCardEditor_Test
|
||||
Assert.IsTrue(repo.Contacts[0].isDirty);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void AddContact_ShouldCreateEmtptyContactFile_Test()
|
||||
{
|
||||
|
||||
var fileHandler = Substitute.For<IFileHandler>();
|
||||
var repo = Substitute.For<ContactRepository>(fileHandler);
|
||||
var view = Substitute.For<IMainView>();
|
||||
_ = new MainPresenter(view, repo);
|
||||
view.AddContact += Raise.Event();
|
||||
|
||||
view.Received().DisplayContacts(Arg.Any<SortableBindingList<Contact>>());
|
||||
Assert.IsTrue(repo.Contacts.Count == 1);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void SaveSplittedFile_ShouldCall3TimesFileSaving_Test()
|
||||
{
|
||||
|
||||
var fileHandler = Substitute.For<IFileHandler>();
|
||||
fileHandler.ReadAllLines(Arg.Any<string>()).Returns(Entries.vcfFourEntry);
|
||||
fileHandler.FileExist(Arg.Any<string>()).Returns(true);
|
||||
|
||||
var repo = Substitute.For<ContactRepository>(fileHandler);
|
||||
|
||||
repo.LoadContacts("aaa.vcf");
|
||||
repo.Contacts[3].isDeleted = true;
|
||||
|
||||
var view = Substitute.For<IMainView>();
|
||||
view.DisplayOpenFolderDialog().Returns("aaa");
|
||||
_ = new MainPresenter(view, repo);
|
||||
view.SplitFileEvent += Raise.Event();
|
||||
|
||||
//Should save only 3 files.
|
||||
fileHandler.Received(3).WriteAllText(Arg.Any<string>(), Arg.Any<string>());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user