private void RefreshNotebooksAndNotes()
        {
            this.Notebooks = null;
            var localNotebooks = new ObservableCollection <NotebookViewModel>();

            // Add the default notebooks
            localNotebooks.Add(NotebookViewModel.CreateAllNotesNotebook());
            localNotebooks.Add(NotebookViewModel.CreateUnfiledNotesNotebook());

            foreach (Notebook nb in this.noteService.GetNotebooks(ref this.totalNotebooks))
            {
                localNotebooks.Add(new NotebookViewModel()
                {
                    Notebook   = nb,
                    FontWeight = "Normal",
                    IsDragOver = false
                });
            }

            this.Notebooks = localNotebooks;

            // Because we cannot pass a Property by reference aboves
            OnPropertyChanged(() => this.TotalNotebooks);

            // Set the default selected notebook (Setting the selected notebook, triggers a refresh of the notes.)
            this.SetDefaultSelectedNotebook();

            // This makes sure the View is notified that the Notebooks collection has changed.
            // If this call is missing, the list of Notebooks is not updated in the View after
            // we changed its elements here. OnPropertyChanged("Notebooks")
            this.eventAggregator.GetEvent <NotebooksChangedEvent>().Publish("");
        }
 private void SetDefaultSelectedNotebook()
 {
     try
     {
         this.SelectedNotebook = NotebookViewModel.CreateAllNotesNotebook();
     }
     catch (Exception ex)
     {
         LogClient.Error("Could not set selected notebook. Exception: {0}", ex.Message);
     }
 }
        private void RefreshNotes()
        {
            this.Notes = new ObservableCollection <NoteViewModel>();

            string formatDate = "D";
            string text       = "";

            if (this.searchService.SearchText != null)
            {
                text = this.searchService.SearchText.Trim();
            }

            this.Notes.Clear();

            NotebookViewModel selectedNotebook = this.SelectedNotebook != null ? this.SelectedNotebook : NotebookViewModel.CreateAllNotesNotebook();
            var notes = this.noteService.GetNotes(selectedNotebook.Notebook, text, ref this.total, SettingsClient.Get <bool>("Appearance", "SortByModificationDate"), this.NoteFilter);

            foreach (Note note in notes)
            {
                this.Notes.Add(new NoteViewModel()
                {
                    Title                      = note.Title,
                    Id                         = note.Id,
                    NotebookId                 = note.NotebookId,
                    OpenDate                   = new DateTime(note.OpenDate),
                    OpenDateText               = DateUtils.DateDifference(new DateTime(note.OpenDate), DateTime.Now, formatDate, false),
                    ModificationDate           = new DateTime(note.ModificationDate),
                    Flagged                    = note.Flagged == 1 ? true : false,
                    ModificationDateText       = DateUtils.DateDifference(new DateTime(note.ModificationDate), DateTime.Now, formatDate, false),
                    ModificationDateTextSimple = DateUtils.DateDifference(new DateTime(note.ModificationDate), DateTime.Now, formatDate, !SettingsClient.Get <bool>("Notes", "UseExactDates"))
                });
            }

            // Because we cannot pass Property "Total" by reference, we need to force a refresh.
            OnPropertyChanged <int>(() => this.Total);

            this.eventAggregator.GetEvent <CountNotesEvent>().Publish("");
        }