void PrepareForSegue(DetailViewController detailViewController)
        {
            NSIndexPath selectedIndexPath = CollectionView.GetIndexPathsForSelectedItems() [0];

            detailViewController.ImageIdentifier = DataSource.GetIdentifier(selectedIndexPath);
            detailViewController.DataSource      = DataSource;
        }
        void UpdateFormsSelection()
        {
            var mode = SelectableItemsView.SelectionMode;

            switch (mode)
            {
            case SelectionMode.None:
                SelectableItemsView.SelectedItem = null;
                // TODO hartez Clear SelectedItems
                return;

            case SelectionMode.Single:
                var paths = CollectionView.GetIndexPathsForSelectedItems();
                if (paths.Length > 0)
                {
                    SelectableItemsView.SelectedItem = GetItemAtIndex(paths[0]);
                }
                // TODO hartez Clear SelectedItems
                return;

            case SelectionMode.Multiple:
                // TODO hartez Handle setting SelectedItems to all the items at the selected paths
                return;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
 public override void SetEditing(bool editing, bool animated)
 {
     base.SetEditing(editing, animated);
     if (CollectionViewExtended.IsEditing == editing)
     {
         return;
     }
     if (CollectionView?.GetIndexPathsForSelectedItems() != null)
     {
         foreach (var indexPath in CollectionView.GetIndexPathsForSelectedItems())
         {
             CollectionView.DeselectItem(indexPath, animated);
         }
     }
     CollectionViewExtended.SetEditing(editing, animated);
     UIView.Animate(0.2f, () =>
     {
         toolbarBottomConstraint.Constant = editing ? 0 : toolbar.Bounds.Bottom;
         CollectionView.ContentInset      = new UIEdgeInsets(CollectionView.ContentInset.Top,
                                                             CollectionView.ContentInset.Left, editing ? toolbar.Bounds.Height : 0.0f,
                                                             CollectionView.ContentInset.Right);
         CollectionView.ScrollIndicatorInsets = CollectionView.ContentInset;
         CollectionView.LayoutIfNeeded();
     });
 }
Exemple #4
0
        // Called by Forms to clear the native selection
        internal void ClearSelection()
        {
            var selectedItemIndexes = CollectionView.GetIndexPathsForSelectedItems();

            foreach (var index in selectedItemIndexes)
            {
                CollectionView.DeselectItem(index, true);
            }
        }
        internal void ClearSelection()
        {
            var paths = CollectionView.GetIndexPathsForSelectedItems();

            foreach (var path in paths)
            {
                CollectionView.DeselectItem(path, false);
            }
        }
Exemple #6
0
        private async void DeleteSelectedItems()
        {
            var selectedIndeces = CollectionView.GetIndexPathsForSelectedItems();

            await ViewModel.DeleteSelectedItemsAsync();

            DeselectAllItems();
            CollectionView.DeleteItems(selectedIndeces);
        }
            private async void DoneClicked(object sender = null, EventArgs e = null)
            {
                var parent             = Parent;
                var selectedItemsIndex = CollectionView.GetIndexPathsForSelectedItems();
                var selectedItemsCount = selectedItemsIndex.Length;
                var selectedMediaFiles = new MediaFile[selectedItemsCount];

                //Create activity indicator if we have selected items.
                //It will give the user some visual feedback that the app is still working
                //if the media have to be downloaded from the iCloud
                UIView pageOverlay = null;
                UIActivityIndicatorView activityIndicator = null;

                if (selectedItemsCount > 0)
                {
                    InvokeOnMainThread(() =>
                    {
                        pageOverlay = new UIView(View.Bounds);
                        pageOverlay.BackgroundColor = UIColor.Black.ColorWithAlpha(0.8f);
                        View.Add(pageOverlay);

                        activityIndicator = new UIActivityIndicatorView(View.Bounds);
                        activityIndicator.ActivityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge;
                        activityIndicator.StartAnimating();
                        View.Add(activityIndicator);
                    });
                }

                var tasks = new List <Task>();

                for (int i = 0; i < selectedItemsCount; i++)
                {
                    var j = i;
                    var t = Task.Run(() =>
                    {
                        var alAsset   = AssetForIndexPath(selectedItemsIndex[j]);
                        var mediaFile = parent?.GetPictureMediaFile(alAsset, j);
                        if (mediaFile != null)
                        {
                            selectedMediaFiles[j] = mediaFile;
                        }

                        alAsset?.Dispose();
                        alAsset = null;
                    });
                    tasks.Add(t);
                }

                await Task.WhenAll(tasks);

                pageOverlay?.RemoveFromSuperview();
                activityIndicator?.RemoveFromSuperview();

                //Some items in the array might be null. Let's remove them.
                parent?.SelectedMediaFiles(selectedMediaFiles.Where(mf => mf != null).ToList());
            }
 public override void ItemDeselected(UICollectionView collectionView, NSIndexPath indexPath)
 {
     if (Editing)
     {
         var selected = CollectionView.GetIndexPathsForSelectedItems();
         if (selected != null && selected.Length == 0)
         {
             NavigationController.ToolbarHidden = true;
         }
     }
 }
Exemple #9
0
        private void DeselectAllItems()
        {
            foreach (var item in ViewModel.Items)
            {
                item.IsSelected = false;
            }

            foreach (var item in CollectionView.GetIndexPathsForSelectedItems())
            {
                CollectionView.DeselectItem(item, true);
            }
        }
        public void DeleteSelected()
        {
            var selected = CollectionView.GetIndexPathsForSelectedItems();
            var items    = selected.Select(i => i.Item).OrderBy(i => i).Reverse();

            foreach (var item in items)
            {
                collectionData.Remove(collectionData[(int)item]);
            }
            CollectionView.DeleteItems(selected);
            NavigationController.ToolbarHidden = true;
        }
Exemple #11
0
 public void DeselectAll()
 {
     if (CollectionView.GetIndexPathsForSelectedItems() is NSIndexPath[] indexPaths)
     {
         foreach (var indexPath in indexPaths.AsEnumerable())
         {
             var asset = AssetsManager.Shared.AssetArray[indexPath.Row];
             this.Deselect(asset, indexPath);
             this.Delegate?.DidDeselect(Picker, asset, indexPath);
         }
         UpdateNavigationStatus();
         CollectionView.ReloadItems(indexPaths);
     }
 }
Exemple #12
0
        /// <summary>
        /// Programatically deselect all selected assets.
        /// </summary>
        /// <param name="animated">If set to <c>true</c> animated.</param>
        public void DeselectAllAssets(bool animated)
        {
            var items = CollectionView.GetIndexPathsForSelectedItems();

            if (items == null)
            {
                return;
            }

            foreach (var selectedPath in items)
            {
                CollectionView.DeselectItem(selectedPath, animated);
            }
        }
        public override void ViewDidAppear(bool animated)
        {
            base.ViewDidAppear(animated);

            var selectedItems = CollectionView.GetIndexPathsForSelectedItems();

            if (selectedItems.Length == 0)
            {
                return;
            }

            UIView.Animate(0.3f, 0.0f, UIViewAnimationOptions.CurveLinear, () => {
                CollectionView.DeselectItem(selectedItems [0], true);
            }, null);
        }
            private void DoneClicked(object sender = null, EventArgs e = null)
            {
                var selected = new List <ALAsset>();

                foreach (var selectedIndexPath in CollectionView.GetIndexPathsForSelectedItems())
                {
                    selected.Add(AssetForIndexPath(selectedIndexPath));
                }

                var parent = Parent;

                if (parent != null)
                {
                    parent.SelectedAssets(selected);
                }
            }
Exemple #15
0
        private async void DuplicateSelectedItems()
        {
            var insertIndeces = CollectionView.GetIndexPathsForSelectedItems()
                                .OrderBy(i => i.Row).ToArray();

            for (var i = 0; i < insertIndeces.Length; i++)
            {
                var nextIndex = insertIndeces[i];
                insertIndeces[i] = NSIndexPath.FromRowSection(nextIndex.Row + i + 1, nextIndex.Section);
            }

            await ViewModel.DuplicateSelectedItemsAsync();

            DeselectAllItems();
            CollectionView.InsertItems(insertIndeces);
        }
Exemple #16
0
        public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
        {
            var indexPaths = CollectionView.GetIndexPathsForSelectedItems();

            if (indexPaths.Length > 0)
            {
                var selectedIndexPath             = indexPaths[0];
                var assetListDetailViewController = segue.DestinationViewController as AssetDetailListViewController;
                assetListDetailViewController.PhotoKitAssetList           = MomentAlbumList[selectedIndexPath.Section];
                assetListDetailViewController.NohanaImagePickerController = NohanaImagePickerController;
                assetListDetailViewController.CurrentIndexPath            = selectedIndexPath;
            }


            //base.PrepareForSegue(segue, sender);
        }
        public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
        {
            base.PrepareForSegue(segue, sender);

            if (segue.Identifier != DetailSegueName)
            {
                return;
            }

            NSIndexPath selectedIndexPath = CollectionView.GetIndexPathsForSelectedItems() [0];
            string      imageIdentifier   = DataSource.IdentifierForIndexPath(selectedIndexPath);

            detailViewController = (DetailViewController)segue.DestinationViewController;
            detailViewController.ImageIdentifier = imageIdentifier;
            detailViewController.DataSource      = DataSource;
            SaveActivity();                 // create our new NSUserActivity handled us
            ClearActivityContinuationInProgress();
        }
        public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
        {
            if (segue.Identifier == segueIdentifier)
            {
                var indexPaths = CollectionView.GetIndexPathsForSelectedItems();
                if (indexPaths == null || indexPaths.Length == 0)
                {
                    return;
                }

                var viewController = (ProductTableViewController)segue.DestinationViewController;
                viewController.Product = products [indexPaths [0].Row];
            }
            else
            {
                base.PrepareForSegue(segue, sender);
            }
        }
Exemple #19
0
        public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
        {
            var selectedIndices = CollectionView.GetIndexPathsForSelectedItems();

            if (selectedIndices.Length > 0)
            {
                var selectedIndex = selectedIndices[0];
                if (selectedIndex != null)
                {
                    var assetListDetailViewController = segue.DestinationViewController as AssetDetailListViewController;
                    if (assetListDetailViewController != null)
                    {
                        assetListDetailViewController.PhotoKitAssetList           = PhotoKitAssetList;
                        assetListDetailViewController.NohanaImagePickerController = NohanaImagePickerController;
                        assetListDetailViewController.CurrentIndexPath            = selectedIndex;
                    }
                }
            }
        }
Exemple #20
0
        void SynchronizeNativeSelectionWithSelectedItems()
        {
            var selectedItems      = ItemsView.SelectedItems;
            var selectedIndexPaths = CollectionView.GetIndexPathsForSelectedItems();

            foreach (var path in selectedIndexPaths)
            {
                var itemAtPath = GetItemAtIndex(path);
                if (ShouldNotBeSelected(itemAtPath, selectedItems))
                {
                    CollectionView.DeselectItem(path, true);
                }
            }

            foreach (var item in selectedItems)
            {
                SelectItem(item);
            }
        }
Exemple #21
0
        public async override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
        {
            base.PrepareForSegue(segue, sender);

            var dest         = (UINavigationController)segue.DestinationViewController;
            var tbController = (TestBenchViewController)dest.ViewControllers[0];

            if (segue.Identifier == "newTestBench")
            {
                tbController.ViewModel = new TestBenchViewModel(await TestBench.CreateDefaultAsync());
            }

            if (segue.Identifier == "editTestBench")
            {
                var name      = ViewModel.Items[CollectionView.GetIndexPathsForSelectedItems()[0].Row].TitleText;
                var testBench = await TestBench.CreateAsync(name);

                tbController.ViewModel = new TestBenchViewModel(testBench);
            }
        }
        public override void ViewDidAppear(bool animated)
        {
            base.ViewDidAppear(animated);

            var selectedItems = CollectionView.GetIndexPathsForSelectedItems();

            if (selectedItems.Length > 0)
            {
                UIView.Animate(0.3, 0, UIViewAnimationOptions.CurveLinear,
                               () => CollectionView.DeselectItem(selectedItems [0], true)
                               , null);
            }

            if (detailViewController == null)
            {
                return;
            }

            UserActivity         = null;
            detailViewController = null;
        }
Exemple #23
0
            private void DoneClicked(object sender = null, EventArgs e = null)
            {
                var parent             = Parent;
                var selectedItemsIndex = CollectionView.GetIndexPathsForSelectedItems();
                var selectedItemsCount = selectedItemsIndex.Length;
                var selectedMediaFiles = new MediaFile[selectedItemsCount];

                Parallel.For(0, selectedItemsCount, selectedIndex =>
                {
                    var alAsset   = AssetForIndexPath(selectedItemsIndex[selectedIndex]);
                    var mediaFile = parent?.GetPictureMediaFile(alAsset, selectedIndex);
                    if (mediaFile != null)
                    {
                        selectedMediaFiles[selectedIndex] = mediaFile;
                    }

                    alAsset?.Dispose();
                    alAsset = null;
                });

                parent?.SelectedMediaFiles(selectedMediaFiles.ToList());
            }