/* * private void btnSetTitle_Click(object sender, RoutedEventArgs e) * { * this._notify.Text = this.txtTitle.Text; * } * * private void btnShowBalloon_Click(object sender, RoutedEventArgs e) * { * var icon = (ToolTipIconEx)this.cmbIcon.SelectedValue; * var title = this.txtBalloonTitle.Text; * var text = this.txtBalloonText.Text; * * this._notify.ShowBalloonTip(100, title, text, icon); * } */ private void Window_Drop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false); foreach (var name in files) { int val = 0; switch (Path.GetExtension(name).ToLower()) { case ".csv": val = SelfMemoList.AddMemoFromCsv(SelfMemoList.ItemsList, name); break; case ".json": val = SelfMemoList.LoadMemoFile(SelfMemoList.ItemsList, name); break; } if (val > 0) { MessageBox.Show(name + " から " + val + " 件追加しました", "ファイルから登録", MessageBoxButton.OK, MessageBoxImage.Information); } else { MessageBox.Show("追加する項目が見つかりませんでした", "ファイルから登録", MessageBoxButton.OK, MessageBoxImage.Warning); } } }
private void SaveFilteredItems() { var list = new ReactiveCollection <SelfMemoItem>(); foreach (var item in FilteredItems) { list.Add(item as SelfMemoItem); } SelfMemoList.SaveMemoFile(list, "filtered.json"); }
public MainViewModel() { // タイトルに表示する文字列を指定 var asm = Assembly.GetExecutingAssembly().GetName(); AppName.Value = asm.Name + " - " + asm.Version.Major + "." + asm.Version.Minor; // 表示するリスト(filteredItemsSource)のソースとフィルタの設定 FilteredItemsSource = new CollectionViewSource { Source = MemoList }; FilteredItemsSource.Filter += (s, e) => { var item = e.Item as SelfMemoItem; e.Accepted = CheckFilterStr(FilterStr.Value, item) && CheckCategoryFilter(item); }; // ファイルが有ればロードしてMemoListを更新 if (File.Exists(MemoFileName)) { SelfMemoList.LoadMemoFile(MemoList, MemoFileName); } // MemoListが空なら、ヘルプメッセージ的な項目を追加する if (SelfMemoList.ItemsList.Count == 0) { MemoList.Add(new SelfMemoItem("用語", "正式名称、別名、訳語など", "用語の解説", "カテゴリ")); MemoList.Add(new SelfMemoItem("SelfMemo", "概要", "キーワードと関連情報(訳語、正式名称、説明など)を登録し、ど忘れした時に見返しやすくするアプリです。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "検索機能", "検索フォームからキーワード検索ができます。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "ショートカット", "グローバルホットキー(デフォルトでAlt+Shift+F2)でいつでもアプリ起動します。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "項目追加", "メニューの「登録ダイアログを開く(Ctrl+R)」からキーワードの追加ができます。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "項目編集", "編集ビューから登録内容の編集ができます。", "本アプリの説明")); MemoList.Add(new SelfMemoItem("SelfMemo", "カテゴリフィルタ", "「カテゴリ」メニューでカテゴリ毎の表示フィルタリングができます。", "本アプリの説明")); } // Filter文字列が更新されたら、Filterされたアイテムリストを更新 FilterStr.Subscribe(_ => { // 既にタイマーが走ってたら、一旦止める if (FilteredItemsRefreshTimer.IsEnabled) { FilteredItemsRefreshTimer.Stop(); } // タイマー開始 FilteredItemsRefreshTimer.Interval = TimeSpan.FromMilliseconds(300); FilteredItemsRefreshTimer.Tick += (s, e) => { FilteredItems.Refresh(); FilteredItemsRefreshTimer.Stop(); }; FilteredItemsRefreshTimer.Start(); }); // Filter文字列の有無フラグを連動 UseFilterStr = FilterStr.Select(x => !string.IsNullOrWhiteSpace(x)).ToReadOnlyReactivePropertySlim(); // カテゴリ選択ComboBoxが更新されたら、Filterされたアイテムリスト更新 CategoryListSelected.Subscribe(_ => { if (!FilteredItemsRefreshTimer.IsEnabled) { FilteredItemsRefreshTimer.Interval = TimeSpan.FromMilliseconds(300); FilteredItemsRefreshTimer.Tick += (s, e) => { FilteredItems.Refresh(); FilteredItemsRefreshTimer.Stop(); }; FilteredItemsRefreshTimer.Start(); } }); // 選択項目をSelectedItemに入れる処理 FilteredItems.CurrentChanged += (s, e) => { SelectedItem.Value = FilteredItems.CurrentItem as SelfMemoItem; }; // UseCategoryListはカテゴリリストからなんか選択されてたらTrue UseCategoryList = CategoryListSelected.Select(x => !string.IsNullOrEmpty(x)).ToReadOnlyReactivePropertySlim(); // カテゴリリストのON/OFFを切り替えるタイミングでもカテゴリリストの内容更新 UseCategoryList.Subscribe(_ => { SelfMemoList.UpdateCategoryList(); }); // MemoListのコレクションが更新されたらファイルに保存 MemoList.CollectionChanged += (s, e) => { SelfMemoList.SaveMemoFile(MemoList, MemoFileName); }; WindowWidth.Subscribe(_ => { ExpanderWidth.Value = Math.Max(400, WindowWidth.Value / 2); }); }