/// <inheritdoc/> public override int Remove(T item, Action <int> actionBeforeRemove = null) { if (!PassesFilter(item)) { var isRemoved = FilteredItems.Remove(item); Debug.Assert(isRemoved); RemoveLiveShapingItemFor(item); return(-1); } return(base.Remove(item, actionBeforeRemove)); }
public GenericSelectorDialogViewModel(IEnumerable <ColumnDescriptor> columns, IEnumerable <T> collection, Func <T, int> entryGetter, Func <T, string> index) { this.entryGetter = entryGetter; this.index = index; items = new SourceList <T>(); ReadOnlyObservableCollection <T> l; var currentFilter = this.WhenValueChanged(t => t.SearchText).Select <string?, Func <T, bool> >(val => { if (string.IsNullOrEmpty(val)) { return(model => true); } var lowerCase = val.ToLower(); return(model => index(model).ToLower().Contains(lowerCase)); }); items .Connect() .Filter(currentFilter, ListFilterPolicy.ClearAndReplace) .Sort(Comparer <T> .Create((x, y) => entryGetter(x).CompareTo(entryGetter(y)))) .Bind(out l) .Subscribe(); FilteredItems = l; Columns = new ObservableCollection <ColumnDescriptor>(); foreach (var column in columns) { Columns.Add(column); } items.AddRange(collection); Accept = new DelegateCommand(() => { if (SelectedItem == null && FilteredItems.Count == 1) { SelectedItem = FilteredItems[0]; } CloseOk?.Invoke(); }, () => SelectedItem != null || FilteredItems.Count == 1 || int.TryParse(SearchText, out _)); Cancel = new DelegateCommand(() => CloseCancel?.Invoke()); FilteredItems.ObserveCollectionChanges().Subscribe(_ => Accept.RaiseCanExecuteChanged()); this.WhenPropertyChanged(t => t.SearchText).Subscribe(_ => Accept.RaiseCanExecuteChanged()); this.WhenPropertyChanged(t => t.SelectedItem).Subscribe(_ => Accept.RaiseCanExecuteChanged()); }
private void FilterByGameVersion(CoreConstants.GameVersion versionsToUse) { foreach (var curGameItem in FilteredItems.OfType <GameHeaderTreeItem>()) { if (versionsToUse == CoreConstants.GameVersion.All) { curGameItem.IsVisible = true; continue; } curGameItem.IsVisible = versionsToUse.HasFlag(curGameItem.GameVersion); } }
public int FilterItemsByMediaType(MediaType mediaType = MediaType.Unknown) { IsBusy = true; ResetFilteredItems(); if (mediaType == MediaType.Movie) FilteredItems = new ObservableCollection<LetsWatchItemViewModel>(FilteredItems.Where(item => item.Item.MediaType == MediaType.Movie)); if (mediaType == MediaType.Tv) FilteredItems = new ObservableCollection<LetsWatchItemViewModel>(FilteredItems.Where(item => item.Item.MediaType == MediaType.Tv)); IsBusy = false; return FilteredItems.Count; }
private void UpdateSearchResultsForSearchController(object sender, EventArgs e) { FilteredItems = PerformSearch(_searchBar.Text); if (!FilteredItems.Any()) { ShowNoResultPage(_searchBar.Text); } else { HideNoResultPage(); } ConfigureMegaSection(); TableView.ReloadData(); }
public InstalledItemsViewModel(InstalledItemsView view) { _logger.Info("Startup"); _view = view; UninstallCommand = new DelegateCommand(Uninstall); CancelUninstallCommand = new DelegateCommand(CancelUninstall); SelectCommand = new DelegateCommand(SelectForUninstall); LoadUninstallableItems(); Observable.FromEventPattern <PropertyChangedEventArgs>(this, "PropertyChanged") .Where(x => x.EventArgs.PropertyName == "FilterText") .Subscribe(_ => FilteredItems.Refresh()); }
private void InsertText() { var filter = FilterText ?? string.Empty; var insertText = filter + FilteredItems.ElementAt(AutoCompleteBox.SelectedIndex).Substring(filter.Length); var currentCaret = AssociatedObject.CaretIndex; string newText = AssociatedObject.Text; newText = newText.Remove(currentCaret - filter.Length, filter.Length); currentCaret -= filter.Length; newText = newText.Insert(currentCaret, insertText); AssociatedObject.Text = newText; AssociatedObject.CaretIndex = currentCaret + insertText.Length; }
public MainViewModel() { LoadData(); filter = "allValues"; //Set default filter FilterData(); /* * currencies.Add("EUR"); * currencies.Add("USD"); * currencies.Add("GBP"); */ BtnDeleteClicked = new RelayCommand(() => FilteredItems.Remove(selectedItem), () => { return(selectedItem != null); }); BtnFilterClicked = new RelayCommand(FilterData); }
public void NotifyBoundingBoxColourDidChange(CGColor previousColour, CGColor changedColour, string category) { if (previousColour != null) { RemovePreviousColour(ColoursInUse, previousColour); } if (ColoursInUse.Contains(changedColour)) { FilteredItems.FirstOrDefault(x => x.Label.Equals(category)).Color = changedColour.ToSKColor(); ParentResultsViewController.NotifyColourDuplicated(changedColour); } else { ColoursInUse.Add(changedColour); } }
private void FilterItems() { FilteredItems.Clear(); var query = Items.AsEnumerable(); if (EventType == EventTypeFilter.Paid) { query = Items.Where(it => !it.IsFree); } else if (EventType == EventTypeFilter.Free) { query = Items.Where(it => it.IsFree); } foreach (var item in query) { FilteredItems.Add(item); } }
/// <summary> /// Removes the data object from the filtered items /// </summary> /// <param name="value">Data object to be removed</param> public void Remove(object value) { bool wasRemoved = false; foreach (FilterableContentListItem item in FilteredItems.ToArray()) { if (item.DataObject.Equals(value)) { FilteredItems.Remove(item); wasRemoved = true; break; } } if (!wasRemoved) { Debug.WriteLine("BasecodeLib warning: Cannot remove item. Doesn't exist in the collection."); } }
protected virtual void OnFilterItemsForDisplay(string filterString) { bool shouldRefresh = false; if (string.IsNullOrEmpty(filterString)) { foreach (ListViewItemWrapper wrapper in Items) { if (!wrapper.Visible) { wrapper.Visible = true; shouldRefresh = true; } } } else { foreach (ListViewItemWrapper wrapper in Items) { string sourceText = (!string.IsNullOrEmpty(wrapper.SearchText)) ? wrapper.SearchText : wrapper.Name; if (Contains(sourceText, filterString, StringComparison.CurrentCultureIgnoreCase)) { if (!wrapper.Visible) { wrapper.Visible = true; shouldRefresh = true; } } else { if (wrapper.Visible) { wrapper.Visible = false; shouldRefresh = true; } } } } if (shouldRefresh) { FilteredItems.Refresh(); } }
/// <summary> /// Filtruoja helpRequest pagal įvestą String, pasirinką kategoriją, /// bei per profili gali pasirinkti kad žiūrėtų tik savo /// </summary> /// <param name="search">Įvestas raktas</param> /// <param name="category">Pasirinkta kategorija</param> /// <param name="own">Ar tai mano HelpRequest</param> void Filter(string search = null, string category = null, bool own = false) { if (Items == null || LocalUserManager.LocalUser == null) // Dar nėra informacijos { return; } List <HelpRequestModel> filtered = Items.ToList(); FilteredItems.Clear(); filtered.ForEach((helpRequest) => { if ((String.IsNullOrEmpty(category) || category == helpRequest.Category) && (String.IsNullOrEmpty(search) || helpRequest.Title.ToLower().Contains(search) || helpRequest.Description.ToLower().Contains(search)) && (!own || helpRequest.Username == LocalUserManager.LocalUser.Username)) { FilteredItems.Add(helpRequest); } }); }
private void FilterNodes() { var nodeAsync = nodeList.ToArray(); // unfilter obsolete foreach (var node in nodeAsync .Where(node => !FilteredItems.Contains(node.Title .Replace("__", "_")))) { node.IsFiltered = false; } // filter new foreach (var node in nodeAsync .Where(node => !node.IsFiltered && FilteredItems.Contains(node.Title.Replace("__", "_")))) { node.IsFiltered = true; } }
public new void Filter(string search) { string[] filter = search?.Split(" "); FilteredItems.Clear(); FilteredSymbolItems.Clear(); foreach (IconItem item in Items) { if (item.FitsFilter(filter)) { FilteredItems.Add(item); if (item.IsSymbol) { FilteredSymbolItems.Add(item); } } } }
private void AssociatedObject_TextInput(object sender, TextCompositionEventArgs e) { var text = e.Text; if (text.StartsWith(Constants.Twitter.HashTag, StringComparison.Ordinal)) { FilterText = string.Empty; AutoCompletePopup.IsOpen = true; AutoCompleteBox.ItemsSource = FilteredHashtags; AutoCompleteBox.SelectedIndex = 0; Mode = SourceMode.Hashtags; } else if (text.StartsWith(Constants.Twitter.Mention, StringComparison.Ordinal)) { FilterText = string.Empty; AutoCompletePopup.IsOpen = true; AutoCompleteBox.ItemsSource = FilteredUsers; AutoCompleteBox.SelectedIndex = 0; Mode = SourceMode.Users; } else if (AutoCompletePopup.IsOpen) { string selectedText = (string)AutoCompleteBox.SelectedItem; FilterText += text; var items = FilteredItems.ToList(); Debug.WriteLine(string.Join(" - ", items)); AutoCompleteBox.ItemsSource = items; AutoCompleteBox.SelectedIndex = items.IndexOf(selectedText); if (AutoCompleteBox.SelectedIndex < 0) { AutoCompleteBox.SelectedIndex = 0; } AutoCompleteBox.InvalidateProperty(ItemsControl.ItemsSourceProperty); } }
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) { if (tableView == null || indexPath == null) { throw new ArgumentNullException(); } var cell = new UITableViewCell(UITableViewCellStyle.Default, (NSString)Constants.FilterCellIdentifier); var categoryString = _indexedTableItems.ElementAt(indexPath.Section).Value.ElementAt(indexPath.Row); var classCategory = FilteredItems.FirstOrDefault(category => category.Label.Equals(categoryString)); if (classCategory != null) { ConfigureCell(cell, classCategory); } else { TableView.ReloadRows(new[] { indexPath }, UITableViewRowAnimation.Fade); } return(cell); }
protected override async Task buildViewModelPosts(IEnumerable <IPost> posts) { clear(UnfilteredItems); clear(FilteredItems); Debug.WriteLine($"--- HISTORY BUILD POSTS. THREAD {Thread.CurrentThread.ManagedThreadId}"); var vms = new List <HistoryPostViewModel>(); var freshVms = await _postBuilder.BuildAsync(posts); vms.AddRange(freshVms.Cast <HistoryPostViewModel>()); UnfilteredItems.Clear(); UnfilteredItems.AddRange(vms); filterOut(vms); var lastPost = FilteredItems.FirstOrDefault() as HistoryPostViewModel; if (lastPost != null) { _settings.Hidden.SetLastSeenFor(_pullersController.SharedWallHolder.ID, lastPost.Post.Date); } }
public void RecalculateFilter() { if (Filter == null) { FilteredItems.ForEach(item => InternalAdd(item)); FilteredItems.Clear(); } else { // Remove the items that no longer pass the filter var itemsRemovedByNewFilter = new List <T>(); for (int i = BackingList.Count - 1; i >= 0; i--) { if (!PassesFilter(BackingList[i])) { itemsRemovedByNewFilter.Add(BackingList[i]); OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, BackingList[i], i)); base.RemoveAt(i); } } // Add the previously filtered items that that now pass FilteredItems.RemoveWhere(item => { var insertionIndex = InternalAdd(item); if (insertionIndex >= 0) { OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item, insertionIndex)); return(true); } return(false); }); // Don't move items into the filtered list until it has been iterated over FilteredItems.UnionWith(itemsRemovedByNewFilter); } }
private void LoadUninstallableItems() { var installations = ProductInstallation.GetProducts(null, "s-1-1-0", UserContexts.All) .Where(ins => ins.ProductName != null) .Select(ins => new InstalledItem(ins.ProductName, ins.ProductCode, ins.InstallDate, ins.InstallLocation, ins.UrlInfoAbout, ins.ProductVersion)) .OrderBy(ins => ins.Product); _logger.Info("Found {0} installed items", installations.Count()); Items = new ObservableCollection <InstalledItem>(installations); FilteredItems = CollectionViewSource.GetDefaultView(Items); FilteredItems.Filter = ItemFilter(); FilteredItems.Refresh(); Cancelling = false; UninstallInProgress = false; UninstallCurrent = 0; UninstallTotal = 0; UninstallProgress = 0; }
/// <summary> /// Get's an enumerator for the filtered items /// </summary> /// <returns>FilteredItems enumerator</returns> public IEnumerator GetFilteredEnumerator() { return(FilteredItems.GetEnumerator()); }
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); }); }
private void OnSelectedMenuItemChanged() { FilteredItems.RemoveRange(0, FilteredItems.Count); FilteredItems.Merge(TopItems.Where(topItem => topItem.Type == SelectedMenuItem)); }
public ItemFromListProviderViewModel(Dictionary <long, SelectOption> items, bool asFlags, long?current = null) { this.asFlags = asFlags; this.items = AutoDispose(new SourceList <CheckableSelectOption>()); ReadOnlyObservableCollection <CheckableSelectOption> outFilteredList; currentFilter = AutoDispose(new ReactiveProperty <Func <CheckableSelectOption, bool> >(_ => true, Compare.Create <Func <CheckableSelectOption, bool> >((_, _) => false, _ => 0))); AutoDispose(this.items.Connect() .Filter(currentFilter) .Sort(Comparer <CheckableSelectOption> .Create((x, y) => x.Entry.CompareTo(y.Entry))) .Bind(out outFilteredList) .Subscribe()); FilteredItems = outFilteredList; this.items.Edit(list => { foreach (long key in items.Keys) { bool isSelected = current.HasValue && ((current == 0 && key == 0) || (key > 0) && (current & key) == key); var item = new CheckableSelectOption(key, items[key], isSelected); if (isSelected) { SelectedItem = item; } list.Add(item); } }); Columns = new ObservableCollection <ColumnDescriptor> { new("Key", "Entry", 50), new("Name", "Name"), new("Description", "Description") }; if (asFlags) { Columns.Insert(0, new ColumnDescriptor("", "IsChecked", 35, true)); } if (items.Count == 0) { SearchText = current.HasValue ? current.Value.ToString() : ""; } ShowItemsList = items.Count > 0; DesiredHeight = ShowItemsList ? 470 : 130; Accept = new DelegateCommand(() => { if (SelectedItem == null && FilteredItems.Count == 1) { SelectedItem = FilteredItems[0]; } CloseOk?.Invoke(); }, () => asFlags || SelectedItem != null || FilteredItems.Count == 1 || int.TryParse(SearchText, out _)); Cancel = new DelegateCommand(() => CloseCancel?.Invoke()); FilteredItems.ObserveCollectionChanges().Subscribe(_ => Accept.RaiseCanExecuteChanged()); this.WhenPropertyChanged(t => t.SearchText).Subscribe(_ => Accept.RaiseCanExecuteChanged()); this.WhenPropertyChanged(t => t.SelectedItem).Subscribe(_ => Accept.RaiseCanExecuteChanged()); }
public void RefreshItems() { FilteredItems.Clear(); FilteredItems = filter.RestoreItemList(FilteredItems); }
private void AddFilteredItem(T item) => FilteredItems.Add(item);
private void OnDependencyPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs args) { T item = (T)(LiveShapingItem <T>)dependencyObject; switch (GetCategoryOfDependencyProperty(args.Property)) { case LiveShapingCategory.Sorting: int originalBinarySearchIndex = InternalBinarySearchWithEqualityCheck(item); int actualIndex; int targetIndex; if (originalBinarySearchIndex >= 0) { Debug.Assert(BackingList[originalBinarySearchIndex].Equals(item)); actualIndex = originalBinarySearchIndex; targetIndex = FindCorrectLocation(item); } else { actualIndex = LinearSearch(item); targetIndex = ~originalBinarySearchIndex; } LiveShapingItems[item].IsSortDirty = false; if (actualIndex >= 0) { // adjust targetIndex if the item at actualIndex will no longer be there if (actualIndex < targetIndex) { targetIndex--; } if (targetIndex != actualIndex) { BackingList.Move(actualIndex, targetIndex); OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Move, item, targetIndex, actualIndex)); } } break; case LiveShapingCategory.Filtering: var passesFilter = PassesFilter(item); if (passesFilter) { if (FilteredItems.Remove(item)) { var insertionIndex = base.Add(item); OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item, insertionIndex)); } } else { if (!FilteredItems.Contains(item)) { var removalIndex = IndexOf(item); // It is possible that the liveshapingitem has been registered but the item has not yet been added to this collection (causing index = -1), in which case this is a noop if (removalIndex >= 0) { base.RemoveAt(removalIndex); OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item, removalIndex)); FilteredItems.Add(item); } } } break; default: throw new ArgumentOutOfRangeException(); } /* Debug.WriteLine(args.Property + " " + string.Join(", ", * BackingList.OfType<GameFolderPair>() * .Select( * folderPair => { * if (folderPair.DestinationEntry == null) return "-99"; * * return SizeToStringConverter.Instance.Convert(folderPair.DestinationEntry?.Size) + (LiveShapingItems[folderPair as T].IsSortDirty ? "" : "✓"); + }) + ));*/ }
public ItemFromListProviderViewModel(Dictionary <T, SelectOption>?items, IComparer <CheckableSelectOption <T> > comparer, Func <T, bool> shouldBeSelected, bool asFlags, T?current = default) { Items = items; this.asFlags = asFlags; this.items = AutoDispose(new SourceList <CheckableSelectOption <T> >()); ReadOnlyObservableCollection <CheckableSelectOption <T> > outFilteredList; currentFilter = AutoDispose(new ReactiveProperty <Func <CheckableSelectOption <T>, bool> >(_ => true, Compare.Create <Func <CheckableSelectOption <T>, bool> >((_, _) => false, _ => 0))); AutoDispose(this.items.Connect() .Filter(currentFilter) .Sort(comparer) .Bind(out outFilteredList) .Subscribe()); FilteredItems = outFilteredList; if (items != null) { this.items.Edit(list => { foreach (T key in items.Keys) { bool isSelected = shouldBeSelected(key); var item = new CheckableSelectOption <T>(key, items[key], isSelected); if (isSelected) { SelectedItem = item; } list.Add(item); } }); } Columns = new ObservableCollection <ColumnDescriptor> { new("Key", "Entry", 80), new("Name", "Name", 220), new("Description", "Description", 320) }; if (asFlags) { Columns.Insert(0, new ColumnDescriptor("", "IsChecked", 35, true)); } if (items == null || items.Count == 0) { SearchText = current != null?current.ToString() ?? "" : ""; } ShowItemsList = items?.Count > 0; DesiredHeight = ShowItemsList ? 670 : 130; DesiredWidth = ShowItemsList ? 800 : 400; Accept = new DelegateCommand(() => { if (SelectedItem == null && FilteredItems.Count == 1) { SelectedItem = FilteredItems[0]; } CloseOk?.Invoke(); }, () => asFlags || SelectedItem != null || FilteredItems.Count == 1 || int.TryParse(SearchText, out _)); Cancel = new DelegateCommand(() => CloseCancel?.Invoke()); FilteredItems.ObserveCollectionChanges().Subscribe(_ => Accept.RaiseCanExecuteChanged()); this.WhenPropertyChanged(t => t.SearchText).Subscribe(_ => Accept.RaiseCanExecuteChanged()); this.WhenPropertyChanged(t => t.SelectedItem).Subscribe(_ => Accept.RaiseCanExecuteChanged()); }
public void Clear() { FilteredItems.Clear(); TotalItemsCount = 0; }