Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 31 additions & 42 deletions vCardEditor/Presenter/MainPresenter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,53 +49,44 @@ public MainPresenter(IMainView view, IContactRepository repository, ILocalizatio
_view.CardInfoRemoved += CardInfoRemovedHandler;
}

private void OpenNewFolderHandler(object sender, EventArg<string> e)
private void OpenNewFolderHandler(object sender, EventArgs e)
{
BeforeOpeningNewFileHandler();

string path = e.Data;
string path = _view.DisplayOpenFolderDialog();
if (string.IsNullOrEmpty(path))
path = _view.DisplayOpenFolderDialog();
return;

if (!string.IsNullOrEmpty(path))
if (!_repository.LoadMultipleFilesContact(path))
{
bool Loaded =_repository.LoadMultipleFilesContact(path);
if (!Loaded)
{
_view.DisplayMessage("No file loaded!", "Error");
return;
}

AddPathToMostRecentUsedFiles(path);
_view.DisplayContacts(_repository.Contacts);
_view.SetWindowTitle("");
_view.DisplayMessage("No file loaded!", "Error");
return;
}

AddPathToMostRecentUsedFiles(path);
_view.SetWindowTitle(path);
_view.DisplayContacts(_repository.Contacts);
}

public void OpenNewFileHandler(object sender, EventArg<string> e)
{
BeforeOpeningNewFileHandler();

string path = e.Data;
string path = string.IsNullOrEmpty(e.Data) ? _view.DisplayOpenFileDialog("vCard file|*.vcf") : e.Data;
if (string.IsNullOrEmpty(path))
path = _view.DisplayOpenFileDialog("vCard Files|*.vcf");
return;

if (!string.IsNullOrEmpty(path))
if (!_repository.LoadContacts(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);
}
_view.SetWindowTitle("");
_view.DisplayMessage("File seems missing or corrupted!", "Error");
return;
}

AddPathToMostRecentUsedFiles(path);
_view.SetWindowTitle(path);
_view.DisplayContacts(_repository.Contacts);
}

private void AddPathToMostRecentUsedFiles(string path)
Expand Down Expand Up @@ -176,11 +167,9 @@ private void CopyTextToClipboardHandler(object sender, EventArgs e)
if (_view.SelectedContactIndex < 0)
return;

var contact = _repository.Contacts[_view.SelectedContactIndex];

string SerializedCard = _repository.GenerateStringFromVCard(contact.card);

_view.SendTextToClipBoard(SerializedCard);
_view.SendTextToClipBoard(
_repository.GenerateStringFromVCard(
_repository.Contacts[_view.SelectedContactIndex].card));
_view.DisplayMessage("vCard copied to clipboard!", "Information");
}

Expand All @@ -192,8 +181,7 @@ private void LoadFormHandler(object sender, EventArg<FormState> e)
string[] paths = Environment.GetCommandLineArgs();
if (paths.Length > 1)
{
var evt = new EventArg<string>(paths[1]);
OpenNewFileHandler(sender, evt);
OpenNewFileHandler(sender, new EventArg<string>(paths[1]));
}
}

Expand Down Expand Up @@ -303,12 +291,13 @@ public void CardInfoRemovedHandler(object sender, EventArgs e)

public void FilterTextChangedHandler(object sender, EventArg<string> e)
{
var FilteredContacts = _repository.FilterContacts(e.Data);
_view.DisplayContacts(FilteredContacts);
_view.DisplayContacts(_repository.FilterContacts(e.Data));
}

private void AddContactHandler(object sender, EventArgs e)
{
if (_repository.Contacts.Count == 0)
_view.SetWindowTitle("New file");
_repository.AddEmptyContact();
_view.DisplayContacts(_repository.Contacts);
}
Expand All @@ -332,10 +321,10 @@ private void SaveSplittedFileHandler(object sender, EventArgs e)
if (_repository.Contacts == null || _repository.Contacts.Count == 0)
return;

string Path = _view.DisplayOpenFolderDialog();
if (!string.IsNullOrEmpty(Path))
string path = _view.DisplayOpenFolderDialog();
if (!string.IsNullOrEmpty(path))
{
int count = _repository.SaveSplittedFiles(Path);
int count = _repository.SaveSplittedFiles(path);
_view.DisplayMessage(string.Format("{0} contact(s) processed!", count), "Information");
}
}
Expand Down
37 changes: 20 additions & 17 deletions vCardEditor/Repository/ContactRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public class ContactRepository : IContactRepository
/// Keep a copy of contact list when filtering
/// </summary>
private SortableBindingList<Contact> OriginalContactList = null;
private SortableBindingList<Contact> _contacts;

private SortableBindingList<Contact> _contacts;
public SortableBindingList<Contact> Contacts
{
get
Expand All @@ -37,8 +37,14 @@ public SortableBindingList<Contact> Contacts
private bool _dirty;
public bool dirty
{
get { return (_contacts != null && _contacts.Any(x => x.isDirty)) || _dirty; }
set { _dirty = true; }
get
{
return (_contacts != null && _contacts.Any(x => x.isDirty)) || _dirty;
}
set
{
_dirty = true;
}
}

public ContactRepository(IFileHandler fileHandler)
Expand All @@ -54,12 +60,15 @@ public bool LoadMultipleFilesContact(string path)
if (filePaths.Count() == 0)
return false;

SortableBindingList<Contact> loaded;
foreach (string item in filePaths)
{
var result = LoadContactFromFile(item);
Contacts.AddRange(result);
OriginalContactList = Contacts;
loaded = LoadContactFromFile(item);
if (loaded != null)
Contacts.AddRange(loaded);
}
OriginalContactList = Contacts;

return true;
}

Expand All @@ -68,6 +77,8 @@ public bool LoadContacts(string fileName)
Contacts.Clear();
this.fileName = fileName;
Contacts = LoadContactFromFile(fileName);
if (Contacts == null)
return false;
OriginalContactList = Contacts;
return true;
}
Expand All @@ -82,7 +93,6 @@ public SortableBindingList<Contact> LoadContactFromFile(string fileName)
string[] lines = _fileHandler.ReadAllLines(fileName);

StringBuilder RawContent = new StringBuilder();
Contact contact;

for (int i = 0; i < lines.Length; i++)
{
Expand All @@ -91,9 +101,8 @@ public SortableBindingList<Contact> LoadContactFromFile(string fileName)
{
if (string.Equals(lines[i].TrimEnd(), "END:VCARD", StringComparison.OrdinalIgnoreCase))
{
contact = new Contact(ParseRawContent(RawContent));
ListOfContacts.Add(contact);
RawContent.Length = 0;
ListOfContacts.Add(new Contact(ParseRawContent(RawContent)));
RawContent.Clear();
}
}
catch (Exception)
Expand Down Expand Up @@ -417,13 +426,7 @@ public int SaveSplittedFiles(string FolderPath)

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;
return _fileHandler.GetVcfFileName(FolderPath, familyName ?? index.ToString());
}
}
}
4 changes: 3 additions & 1 deletion vCardEditor/View/IMainView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public interface IMainView
event EventHandler CountImagesEvent;
event EventHandler ClearImagesEvent;
event EventHandler BatchExportImagesEvent;
event EventHandler<EventArg<string>> OpenFolderEvent;
event EventHandler OpenFolderEvent;
event EventHandler SplitFileEvent;
event EventHandler CardInfoRemoved;

Expand All @@ -53,6 +53,8 @@ public interface IMainView

void ClearImageFromForm();
string DisplayOpenFolderDialog();
void SetWindowTitle(string text);

void LoadLocalizedUI(IReadOnlyDictionary<string, string> currentMessages);
void LoadAvailablesLangs(IEnumerable<string> availableLanguages);
}
Expand Down
Loading