public Task UpdateEntry(Entry entry)
        {
            FakeData.FakeWords.Remove(entry);
            FakeData.FakeWords.Add(entry);

            return Task.FromResult(true);
        }
        public Task DeleteEntry(Entry entry)
        {
            FakeData.FakeWords.Remove(entry);

            return Task.FromResult(true);
        }
 public Task<Entry> LookupByExample(Entry example)
 {
     return Task.Factory.StartNew(() => { return example; });
 }
        public Task<Entry> AddEntry(Entry newEntry)
        {
            FakeData.FakeWords.Add(newEntry);

            return Task.FromResult(newEntry);
        }
        public void DeleteEntryFromUI(Entry entryToDelete)
        {
            var entryVm = EntryViewModels.SingleOrDefault(w => w.Entry.Id == entryToDelete.Id);

            if (entryVm == null)
            {
                return;
            }

            var entryIndex = EntryViewModels.IndexOf(entryVm);

            var previousOrNextEntryIndex = entryIndex > 0
                                               ? entryIndex - 1
                                               : (entryIndex < EntryViewModels.Count - 1
                                                      ? entryIndex + 1
                                                      : -1);

            EntryListItemViewModel previousOrNextEntry = null;

            if (previousOrNextEntryIndex >= 0)
            {
                previousOrNextEntry = EntryViewModels[previousOrNextEntryIndex];
            }

            EntryViewModels.RemoveAt(entryIndex);

            DeleteEntryFromTimeGroup(entryVm);

            // Move focus to previous or next entry
            Dispatcher.InvokeAsync(new Action(() =>
            {
                if (previousOrNextEntry != null)
                {
                    previousOrNextEntry.Focus();
                }
            })).FireAndForget();
        }
 public EntryListItemViewModel(Entry entry, IEventAggregator eventAggregator, bool justAdded = false) : base(entry, eventAggregator)
 {
     JustAdded = justAdded;
 }
        public EntryListItemViewModel AddEntry(Entry newEntry)
        {
            var viewModel = CreateListItemViewModel(newEntry, justAdded: true);

            AddEntry(viewModel);

            return viewModel;
        }
        private EntryListItemViewModel CreateListItemViewModel(Entry newEntry, bool justAdded = false)
        {
            var result = new EntryListItemViewModel(newEntry, EventAggregator, justAdded: justAdded);

            return result;
        }
        public void DeleteEntryFromUI(Entry entryToDelete)
        {
            Entry entry;

            if (!entriesIdDict.TryGetValue(entryToDelete.Id, out entry))
            {
                return;
            }

            entries.Remove(entry);
            entriesIdDict.Remove(entry.Id);

            UpdatePreviousRandomEntryViewModelsStack();

            Observable.Timer(TimeSpan.FromMilliseconds(600)).Subscribe(_ => { Dispatcher.InvokeAsync(new Action(UpdateRandomEntries)).FireAndForget(); });
        }
        public EntryListItemViewModel AddEntry(Entry newEntry)
        {
            entries.Add(newEntry);
            entriesIdDict.Add(newEntry.Id, newEntry);

            var viewModel = CreateListItemViewModel(newEntry, justAdded: true);

            AddEntry(viewModel);

            return viewModel;
        }
        private void Finish()
        {
            IsBusy = true;

            if (data == null)
            {
                data = Entry.CreateNew(EntryText);
            }
            else
            {
                Data.Text = EntryText;
            }

            // Schedule publishing the event after a small timeout to allow the layout to update as a result of 
            // hiding the on-screen keyboard when user presses "Save".
            Observable.Timer(TimeSpan.FromSeconds(0.2)).ObserveOnDispatcher().Subscribe(_ => { eventAggregator.Publish(new EntryEditingFinishedEvent(Data)); });
        }
 public Task<string> TranslateEntryItemAsync(Entry entry, IEnumerable<EntryViewModel> viewModelsToUpdate)
 {
     return Task.FromResult(string.Empty);
 }
 public Task UpdateEntryAsync(Entry entry)
 {
     return Task.FromResult(true);
 }