Пример #1
0
        private void WindowLoaded(object sender, RoutedEventArgs e)
        {
            this.DisableMaxmize(true);                                                                                                                                      //禁用窗口最大化功能
            this.RemoveSystemMenuItems(Win32.SystemMenuItems.Restore | Win32.SystemMenuItems.Minimize | Win32.SystemMenuItems.Maximize | Win32.SystemMenuItems.SpliteLine); //去除窗口指定的系统菜单

            _autoHideBehavior = new AutoHideWindowBehavior
            {
                AutoHideFactor = AutoHideFactor,
            };
            _autoHideBehavior.Attach(this);

            _trayIcon = InitTrayIcon();                                        //初始化系统托盘

            NoteTextArea.Focus();                                              //文本输入框获取焦点
            DbContext.Load(ConfigurationManager.AppSettings[DataFilePathKey]); //加载记录数据

            //筛选未完成的记录
            foreach (var item in DbContext.Notes.Where(m => !m.Deleted && !m.Finished))
            {
                NoteViewModels.Add(item);
            }

            //绑定数据
            ListView.ItemsSource = NoteViewModels;

            this.SetPropertyAnimation(HeightProperty, new DoubleAnimation(InitHeight, _initedHeight, new Duration(TimeSpan.FromSeconds(2))));
        }
Пример #2
0
 //TODO Scroll when Tag is updated, not only on selection changed
 private void NoteViewModels_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (NoteViewModels.Tag as bool? != true)
     {
         return;
     }
     NoteViewModels.ScrollToCenterOfView(NoteViewModels.SelectedItem);
     NoteViewModels.Tag = false;
 }
Пример #3
0
        public DeckViewModel(Models.Deck deckModel)
        {
            _deckModel = deckModel;

            // Load available input languages
            foreach (var lang in InputLanguageManager.Current.AvailableInputLanguages ?? new List <object>())
            {
                Languages.Add(CultureInfo.CreateSpecificCulture(lang.ToString()));
            }

            // Load system default language
            var defaultLang = InputLanguageManager.Current.CurrentInputLanguage;

            // TODO: Remove hard-coded initialization
            // Initialize scripts
            var defaultScript = new NoneScript("None");

            Scripts.Add(defaultScript);
            Scripts.Add(new MirrorScript("Clone"));
            Scripts.Add(new FuriganaScript(MyQuery, "Furigana"));
            Scripts.Add(new DictionaryFormScript(MyQuery, "Dictionary Form"));
            Scripts.Add(new NotesScript(MyQuery, "Notes"));


            // Initialize deck settings
            DeckSettings = new DeckSettings(defaultLang, defaultScript);

            foreach (var noteModel in deckModel.note_models)
            {
                DeckSettings.AddFieldSettings(noteModel);
            }

            // Create dictionary of noteModels
            foreach (var noteModel in deckModel.note_models)
            {
                _noteModels.Add(noteModel.crowdanki_uuid, noteModel);
                NoteModels.Add(noteModel);
            }

            SelectedNoteModel = NoteModels.First();

            foreach (var note in deckModel.notes)
            {
                // Add notes where note model exists
                if (_noteModels.TryGetValue(note.note_model_uuid, out var noteModel))
                {
                    NoteViewModels.Add(new NoteViewModel(note, noteModel, this));
                }
                else
                {
                    // TODO Error handling
                }
            }

            Sort();
        }
Пример #4
0
        private NoteViewModel GetNoteViewModel(Note note)
        {
            NoteViewModel ntvm = null;

            if (NoteViewModels.ContainsKey(note.ID))
            {
                ntvm = NoteViewModels[note.ID];
            }
            if (ntvm == null)
            {
                ntvm = new NoteViewModel(note);
                NoteViewModels.Add(note.ID, ntvm);
            }
            return(ntvm);
        }
Пример #5
0
        private void DeleteCurrentNote()
        {
            if (SelectedMenuItem == _trashLibraryMenuItem)
            {
                return;
            }

            if (NoteMenuContext.SelectedNote.Note.Protected)
            {
                ShowQuickMessage("You cant delete this note, it's protected from that.");
                return;
            }

            var settings = DialogHelpers.GetDefaultDialogSettings();

            MainWindowInstance.ShowMessageAsync("Delete", $"Do you want to delete {NoteMenuContext.SelectedNote.Note.Name}?", MessageDialogStyle.AffirmativeAndNegative, settings).ContinueWith(delegate(Task <MessageDialogResult> task)
            {
                if (task.Result == MessageDialogResult.Affirmative)
                {
                    InvokeOnCurrentDispatcher(() =>
                    {
                        Guid noteId = NoteMenuContext.SelectedNote.Note.ID;
                        if (NoteViewModels.ContainsKey(noteId))
                        {
                            //NoteMenuContext.SelectedNote.Note.Delete();
                            NoteMenuContext.SelectedNote.Note.InTrashCan = true;
                            //NoteMenuContext.SelectedNote.Note.Save();

                            var nvm = NoteViewModels[noteId];
                            NoteViewModels.Remove(noteId);
                            NoteMenuContext.DataSource.Remove(nvm);
                            NoteMenuContext.SelectedNote = NoteMenuContext.DataSource.FirstOrDefault();
                            Hub.Instance.Settings.RefreshTags();
                        }
                    });
                }
            });
        }
Пример #6
0
        private void EmptyTrash(object arg)
        {
            var settings = DialogHelpers.GetDefaultDialogSettings();

            MainWindowInstance.ShowMessageAsync("Empty trash", "Do you want to delete all notes in the trashcan?\nThis operation can not be undone.", MessageDialogStyle.AffirmativeAndNegative, settings).
            ContinueWith(delegate(Task <MessageDialogResult> task)
            {
                if (task.Result == MessageDialogResult.Affirmative)
                {
                    foreach (NoteViewModel n in NoteMenuContext.DataSource)
                    {
                        Guid noteId = n.Note.ID;
                        if (NoteViewModels.ContainsKey(noteId))
                        {
                            n.Note.Delete();
                            NoteViewModels.Remove(noteId);
                        }
                    }
                    NoteMenuContext.SelectedNote = null;
                    NoteMenuContext.DataSource.Clear();
                }
            });
        }
Пример #7
0
        private void Execute(Actions action)
        {
            switch (action)
            {
            case Actions.New:
                if (NewBtn.IsEnabled)
                {
                    SetNewState();
                }
                break;

            case Actions.Save:
                if (SaveBtn.IsEnabled)
                {
                    var text = "";
                    var strs = NoteTextArea.Text.Split(new [] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                    for (var i = 0; i < strs.Length - 1; i++)
                    {
                        var str = strs[i].Trim();
                        if (str.Length != 0)
                        {
                            text += str + Environment.NewLine;
                        }
                    }
                    text += strs[strs.Length - 1];
                    if (ListView.SelectedIndex == -1)
                    {
                        var newId = DbContext.Notes.Count == 0 ? 1 : DbContext.Notes.Max(m => m.Id) + 1;
                        _selectedNote = new Note(newId, text);
                        DbContext.Notes.Add(_selectedNote);

                        NoteViewModels.Add(_selectedNote);
                        ListView.SelectedIndex = NoteViewModels.Count - 1;
                    }
                    else
                    {
                        _selectedNote.Content     = text;
                        _selectedNote.LastModTime = DateTime.Now;
                    }
                    DbContext.SaveChanged();
                    _textChanged = false;
                    UpdateState();
                }
                break;

            case Actions.Finish:
                if (FinishBtn.IsEnabled)
                {
                    NoteViewModels.RemoveAt(ListView.SelectedIndex);

                    _selectedNote.Finished    = true;
                    _selectedNote.LastModTime = DateTime.Now;
                    DbContext.SaveChanged();

                    SetNewState();
                }
                break;

            case Actions.Delete:
                if (DeleteBtn.IsEnabled)
                {
                    NoteViewModels.RemoveAt(ListView.SelectedIndex);

                    _selectedNote.Deleted     = true;
                    _selectedNote.LastModTime = DateTime.Now;
                    DbContext.SaveChanged();

                    SetNewState();
                }
                break;

            case Actions.Close:
                Close();
                break;
            }
        }