Esempio n. 1
0
 void DisposeItemsViewF9PImages(ItemsView itemsView)
 {
     foreach (var child in itemsView.LogicalChildren)
     {
         DisposeElement(child);
     }
 }
        public ItemsSourceGenerator(ItemsView cv, int initialItems  = 1000,
                                    ItemsSourceType itemsSourceType = ItemsSourceType.List)
        {
            _cv = cv;
            _itemsSourceType = itemsSourceType;
            var layout = new StackLayout
            {
                Orientation       = StackOrientation.Horizontal,
                HorizontalOptions = LayoutOptions.Fill
            };

            var button = new Button {
                Text = "Update", AutomationId = "btnUpdate"
            };
            var label = new Label {
                Text = "Item count:", VerticalTextAlignment = TextAlignment.Center
            };

            _entry = new Entry {
                Keyboard = Keyboard.Numeric, Text = initialItems.ToString(), WidthRequest = 200, AutomationId = "entryUpdate"
            };

            layout.Children.Add(label);
            layout.Children.Add(_entry);
            layout.Children.Add(button);

            button.Clicked += GenerateItems;

            Content = layout;
        }
Esempio n. 3
0
        public ItemsSourceGenerator(ItemsView cv, int initialItems  = 1000,
                                    ItemsSourceType itemsSourceType = ItemsSourceType.List)
        {
            _count           = initialItems;
            _cv              = cv;
            _itemsSourceType = itemsSourceType;
            var layout = new StackLayout
            {
                Orientation       = StackOrientation.Horizontal,
                HorizontalOptions = LayoutOptions.Fill
            };

            var button = new Button {
                Text = "Update", AutomationId = "btnUpdate"
            };
            var label = new Label {
                Text = "Item count:", VerticalTextAlignment = TextAlignment.Center
            };

            _entry = new Entry {
                Keyboard = Keyboard.Numeric, Text = initialItems.ToString(), WidthRequest = 200, AutomationId = "entryUpdate"
            };

            layout.Children.Add(label);
            layout.Children.Add(_entry);
            layout.Children.Add(button);

            button.Clicked += GenerateItems;
            MessagingCenter.Subscribe <ExampleTemplateCarousel>(this, "remove", (obj) => {
                (cv.ItemsSource as ObservableCollection <CollectionViewGalleryTestItem>).Remove(obj.BindingContext as CollectionViewGalleryTestItem);
            });

            Content = layout;
        }
 /// <summary>
 /// Reacts on any property change of any item in <see cref="Items" />.
 /// </summary>
 /// <param name="sender">The item that has a changed property.</param>
 /// <param name="e">The event args.</param>
 public virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (RefreshViewOnItemChange)
     {
         ItemsView.Refresh();
     }
 }
        private async Task RefreshPlaylistItems()
        {
            await _dispatcherQueue.EnqueueAsync(async() =>
            {
                NowLoading.Value = true;
                try
                {
                    using (ItemsView.DeferRefresh())
                    {
                        _sourcePlaylistItems.Clear();

                        // TODO: タイムアウト処理を追加する
                        using var _ = await _niconicoSession.SigninLock.LockAsync();
                        await _userMylistManager.WaitUpdate();

                        foreach (var item in _userMylistManager.Mylists.Where(x => x.MylistId.IsWatchAfterMylist is false))
                        {
                            _sourcePlaylistItems.Add(item);
                        }
                    }
                }
                finally
                {
                    NowLoading.Value = false;
                }

                AddMylistGroupCommand.NotifyCanExecuteChanged();
            });
        }
        protected override void SetUpNewElement(ItemsView newElement)
        {
            base.SetUpNewElement(newElement);

            if (newElement == null)
            {
                return;
            }

            if (ItemsView != null)
            {
                ItemsView.SelectionChanged += FormsSelectionChanged;
            }

            var newListViewBase = ListViewBase;

            if (newListViewBase != null)
            {
                newListViewBase.SetBinding(ListViewBase.SelectionModeProperty,
                                           new Windows.UI.Xaml.Data.Binding
                {
                    Source    = ItemsView,
                    Path      = new Windows.UI.Xaml.PropertyPath("SelectionMode"),
                    Converter = new SelectionModeConvert(),
                    Mode      = Windows.UI.Xaml.Data.BindingMode.TwoWay
                });

                newListViewBase.SelectionChanged += NativeSelectionChanged;
            }

            UpdateNativeSelection();
        }
Esempio n. 7
0
 /// <summary>
 /// Clear the current screen and all properties.
 /// </summary>
 /// <since_tizen> 9 </since_tizen>
 public virtual void Clear()
 {
     if (VisibleItems != null)
     {
         foreach (RecyclerViewItem item in VisibleItems)
         {
             if (ItemsView != null)
             {
                 ItemsView.UnrealizeItem(item, false);
             }
         }
         VisibleItems.Clear();
     }
     if (CandidateMargin != null)
     {
         CandidateMargin.Dispose();
         CandidateMargin = null;
     }
     if (Container)
     {
         if (ItemsView != null)
         {
             Container.Size = ItemsView.Size;
         }
         Container.Position = new Position(0.0f, 0.0f);
         Container          = null;
     }
     ItemsView = null;
 }
Esempio n. 8
0
        public ItemsViewController(ItemsView itemsView, ItemsViewLayout layout) : base(layout)
        {
            ItemsView   = itemsView;
            ItemsSource = CreateItemsViewSource();

            UpdateLayout(layout);
        }
Esempio n. 9
0
        protected override void TearDownOldElement(ItemsView oldElement)
        {
            base.TearDownOldElement(oldElement);

            if (oldElement == null)
            {
                return;
            }

            oldElement.Scrolled -= CarouselScrolled;

            if (ListViewBase != null)
            {
                ListViewBase.SizeChanged -= InitialSetup;
                if (CollectionViewSource?.Source is ObservableItemTemplateCollection observableItemsSource)
                {
                    observableItemsSource.CollectionChanged -= CollectionItemsSourceChanged;
                }
            }

            if (_scrollViewer != null)
            {
                _scrollViewer.ViewChanging -= OnScrollViewChanging;
                _scrollViewer.ViewChanged  -= OnScrollViewChanged;
            }
        }
        internal void UpdateSubview(object view, DataTemplate viewTemplate, nint viewTag, ref UIView uiView, ref VisualElement formsElement)
        {
            uiView?.RemoveFromSuperview();

            if (formsElement != null)
            {
                ItemsView.RemoveLogicalChild(formsElement);
                formsElement.MeasureInvalidated -= OnFormsElementMeasureInvalidated;
            }

            UpdateView(view, viewTemplate, ref uiView, ref formsElement);

            if (uiView != null)
            {
                uiView.Tag = viewTag;
                CollectionView.AddSubview(uiView);
            }

            if (formsElement != null)
            {
                ItemsView.AddLogicalChild(formsElement);
            }

            if (formsElement != null)
            {
                RemeasureLayout(formsElement);
                formsElement.MeasureInvalidated += OnFormsElementMeasureInvalidated;
            }
            else if (uiView != null)
            {
                uiView.SizeToFit();
            }
        }
Esempio n. 11
0
        protected void UpdateSubview(object view, DataTemplate viewTemplate, ref UIView uiView, ref VisualElement formsElement)
        {
            if (uiView != null)
            {
                CollectionView.Subviews.Remove(uiView);
            }

            if (formsElement != null)
            {
                ItemsView.RemoveLogicalChild(formsElement);
                formsElement.MeasureInvalidated -= OnFormsElementMeasureInvalidated;
            }

            UpdateView(view, viewTemplate, ref uiView, ref formsElement);

            if (uiView != null)
            {
                CollectionView.AddSubview(uiView);
            }

            if (formsElement != null)
            {
                ItemsView.AddLogicalChild(formsElement);
            }

            if (formsElement != null)
            {
                RemeasureLayout(formsElement);
                formsElement.MeasureInvalidated += OnFormsElementMeasureInvalidated;
            }
            else if (uiView != null)
            {
                uiView.SizeToFit();
            }
        }
Esempio n. 12
0
        protected override void PostResetList()
        {
            AddSortDescription(
                new Microsoft.Toolkit.Uwp.UI.SortDescription(nameof(LiveInfoListItemViewModel.IsOnair), Microsoft.Toolkit.Uwp.UI.SortDirection.Descending)
                );

            AddSortDescription(
                new Microsoft.Toolkit.Uwp.UI.SortDescription(nameof(LiveInfoListItemViewModel.IsPast), Microsoft.Toolkit.Uwp.UI.SortDirection.Ascending)
                );

            AddSortDescription(
                new Microsoft.Toolkit.Uwp.UI.SortDescription(nameof(LiveInfoListItemViewModel.IsReserved), Microsoft.Toolkit.Uwp.UI.SortDirection.Ascending)
                );

            AddSortDescription(
                new Microsoft.Toolkit.Uwp.UI.SortDescription(nameof(LiveInfoListItemViewModel.ExpiredAt), Microsoft.Toolkit.Uwp.UI.SortDirection.Ascending)
                );

            (ItemsView.Source as ObservableCollection <LiveInfoListItemViewModel>).ObserveElementPropertyChanged()
            .Where(x => x.EventArgs.PropertyName == nameof(x.Sender.Reservation) && x.Sender.Reservation == null)
            .Subscribe(x =>
            {
                ItemsView.Remove(x.Sender);
            });

            base.PostResetList();
        }
        public ItemsViewController(ItemsView itemsView, ItemsViewLayout layout) : base(layout)
        {
            _itemsView   = itemsView;
            _itemsSource = ItemsSourceFactory.Create(_itemsView.ItemsSource, CollectionView);

            UpdateLayout(layout);
        }
Esempio n. 14
0
        private void MoveToPage(int pageIndex)
        {
            CurrentPage = pageIndex;

            CommandManager.InvalidateRequerySuggested();
            ItemsView.Refresh();
        }
        protected virtual void SetUpNewElement(ItemsView newElement)
        {
            if (newElement == null)
            {
                return;
            }

            if (ListViewBase == null)
            {
                ListViewBase = SelectListViewBase();
                ListViewBase.IsSynchronizedWithCurrentItem = false;

                FindScrollViewer(ListViewBase);

                Layout.PropertyChanged += LayoutPropertyChanged;

                SetNativeControl(ListViewBase);
            }

            UpdateItemTemplate();
            UpdateItemsSource();
            UpdateVerticalScrollBarVisibility();
            UpdateHorizontalScrollBarVisibility();
            UpdateEmptyView();

            // Listen for ScrollTo requests
            newElement.ScrollToRequested += ScrollToRequested;
        }
Esempio n. 16
0
        public void Bind(object itemBindingContext, ItemsView itemsView,
                         Action <Size> reportMeasure = null, Size?size = null)
        {
            var template = _template.SelectDataTemplate(itemBindingContext, itemsView);

            var templateChanging = template != _selectedTemplate;

            if (templateChanging)
            {
                // Clean up any content we're still holding on to
                _itemContentView.Recycle();

                // Create the new content
                View = (View)template.CreateContent();

                // Set the binding context _before_ we create the renderer; that way, the bound data will be
                // available during OnElementChanged
                View.BindingContext = itemBindingContext;

                // Actually create the native renderer
                _itemContentView.RealizeContent(View);
                _selectedTemplate = template;
            }

            _itemContentView.HandleItemSizingStrategy(reportMeasure, size);

            if (!templateChanging)
            {
                // Same template, new data
                View.BindingContext = itemBindingContext;
            }

            itemsView.AddLogicalChild(View);
        }
        protected virtual void TearDownOldElement(ItemsView oldElement)
        {
            if (oldElement == null)
            {
                return;
            }

            if (Layout != null)
            {
                // Stop tracking the old layout
                Layout.PropertyChanged -= LayoutPropertyChanged;
            }

            // Stop listening for ScrollTo requests
            oldElement.ScrollToRequested -= ScrollToRequested;

            if (CollectionViewSource != null)
            {
                CleanUpCollectionViewSource();
            }

            if (ListViewBase != null)
            {
                ListViewBase.ItemsSource = null;
            }

            if (_scrollViewer != null)
            {
                _scrollViewer.ViewChanged -= OnScrollViewChanged;
            }
        }
Esempio n. 18
0
        void SetUpNewElement(ItemsView newElement)
        {
            if (newElement == null)
            {
                return;
            }

            if (ListViewBase == null)
            {
                ListViewBase = SelectLayout(newElement.ItemsLayout);

                _layout = newElement.ItemsLayout;
                _layout.PropertyChanged += LayoutOnPropertyChanged;

                SetNativeControl(ListViewBase);
            }

            UpdateItemTemplate();
            UpdateItemsSource();
            UpdateVerticalScrollBarVisibility();
            UpdateHorizontalScrollBarVisibility();

            // Listen for ScrollTo requests
            newElement.ScrollToRequested += ScrollToRequested;
        }
Esempio n. 19
0
 public AppCaptureListView()
 {
     Log.Debug("Demo", "App");
     InitializeComponent();
     ItemsView.SetBinding(RecycleItemsView.ItemHeightProperty, new Binding("ItemHeight", source: this));
     ItemsView.SetBinding(RecycleItemsView.ItemWidthProperty, new Binding("ItemWidth", source: this));
 }
Esempio n. 20
0
        private void itemViewToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form sForm = ItemsView.Instance();

            sForm.MdiParent = this;
            sForm.Show();
            sForm.Activate();
        }
Esempio n. 21
0
        internal void RealizeContent(View view, ItemsView itemsView)
        {
            Content = CreateHandler(view, itemsView);
            AddView(Content.NativeView);

            //TODO: RUI IS THIS THE BEST WAY TO CAST?
            (View as VisualElement).MeasureInvalidated += ElementMeasureInvalidated;
        }
Esempio n. 22
0
 public void RefreshIndices()
 {
     foreach (var item in Items)
     {
         item.Update(tasksModel.Get(item.Id));
     }
     ItemsView.Refresh();
 }
Esempio n. 23
0
 public override void Open()
 {
     BaseItems = Workspace.ActiveLister.Items.ToList();
     Workspace.ActiveLister.GotItems += ActiveListerGotItems;
     SetHeaderIconByKey("appbar_folder");
     ItemsView.MoveCurrentTo(Workspace.ActiveLister.ItemsView.CurrentItem);
     base.Open();
 }
Esempio n. 24
0
 public void Recycle(ItemsView itemsView)
 {
     if (_itemView is SizedItemContentView _sizedItemContentView)
     {
         _sizedItemContentView.Recycle();
     }
     itemsView.RemoveLogicalChild(View);
 }
Esempio n. 25
0
        protected override void SetUpNewElement(ItemsView newElement)
        {
            base.SetUpNewElement(newElement);

            if (newElement != null)
            {
                ListViewBase.SizeChanged += OnListSizeChanged;
            }
        }
Esempio n. 26
0
        public void Bind(ItemsView itemsView, object bindingContext)
        {
            var template = itemsView.ItemTemplate;

            // Run this through the extension method in case it's really a DataTemplateSelector
            template = template.SelectDataTemplate(bindingContext, itemsView);

            Bind(template, bindingContext, itemsView);
        }
Esempio n. 27
0
 public static IReadOnlyList <T> TemplatedItems <T> (this ItemsView <T> itemsView)
     where T : BindableObject
 {
     if (itemsView == null)
     {
         throw new ArgumentNullException("itemsView");
     }
     return(itemsView.TemplatedItems);
 }
        public CollectionViewController(ItemsView itemsView, ItemsViewLayout layout) : base(layout)
        {
            _itemsView   = itemsView;
            _itemsSource = ItemsSourceFactory.Create(_itemsView.ItemsSource, CollectionView);
            _layout      = layout;

            _layout.GetPrototype = GetPrototype;
            _layout.UniformSize  = false;            // todo hartez Link this to ItemsView.ItemSizingStrategy hint
        }
Esempio n. 29
0
        public void Bind(DataTemplate template, object bindingContext, ItemsView itemsView)
        {
            var oldElement = VisualElementRenderer?.Element;

            // Run this through the extension method in case it's really a DataTemplateSelector
            var itemTemplate = template.SelectDataTemplate(bindingContext, itemsView);

            if (itemTemplate != _currentTemplate)
            {
                // Remove the old view, if it exists
                if (oldElement != null)
                {
                    oldElement.MeasureInvalidated -= MeasureInvalidated;
                    itemsView.RemoveLogicalChild(oldElement);
                    ClearSubviews();
                    _size = Size.Zero;
                }

                // Create the content and renderer for the view
                var view = itemTemplate.CreateContent() as View;

                // Prevents the use of default color when there are VisualStateManager with Selected state setting the background color
                // First we check whether the cell has the default selected background color; if it does, then we should check
                // to see if the cell content is the VSM to set a selected color
                if (SelectedBackgroundView.BackgroundColor == ColorExtensions.Gray && IsUsingVSMForSelectionColor(view))
                {
                    SelectedBackgroundView = new UIView
                    {
                        BackgroundColor = UIColor.Clear
                    };
                }

                // Set the binding context _before_ we create the renderer; that way, it's available during OnElementChanged
                view.BindingContext = bindingContext;

                var renderer = TemplateHelpers.CreateRenderer(view);
                SetRenderer(renderer);

                // And make the new Element a "child" of the ItemsView
                // We deliberately do this _after_ setting the binding context for the new element;
                // if we do it before, the element briefly inherits the ItemsView's bindingcontext and we
                // emit a bunch of needless binding errors
                itemsView.AddLogicalChild(view);
            }
            else
            {
                // Same template, different data
                var currentElement = VisualElementRenderer?.Element;

                if (currentElement != null)
                {
                    currentElement.BindingContext = bindingContext;
                }
            }

            _currentTemplate = itemTemplate;
        }
        protected override void SetUpNewElement(ItemsView newElement, bool setUpProperties)
        {
            base.SetUpNewElement(newElement, false);

            if (newElement != null)
            {
                ListViewBase.SizeChanged += OnListSizeChanged;
            }
        }