Пример #1
0
        /// <summary>
        ///     Adds all markers of the current ExhibitSet to the specified map.
        /// </summary>
        /// <param name="mapView">MapView where the markers should be displayed.</param>
        private void SetAllMarkers(MapView mapView)
        {
            LocationOverlay   = new MyLocationOverlay(Activity, mapView);
            MyScaleBarOverlay = new ScaleBarOverlay(Activity);

            var markerInfoWindow = new ViaPointInfoWindow(Resource.Layout.navigation_info_window, mapView, Activity);
            var mapMarkerIcon    = ContextCompat.GetDrawable(Activity, Resource.Drawable.marker_blue);
            var setMarker        = new SetMarker(mapView, markerInfoWindow);


            foreach (var e in ExhibitSet.ActiveSet)
            {
                //One Marker Object
                var geoPoint = new GeoPoint(e.Location.Latitude, e.Location.Longitude);
                var marker   = setMarker.AddMarker(null, e.Name, e.Description, geoPoint, mapMarkerIcon, e.Id);
                mapView.OverlayManager.Add(marker);
            }


            userPosition = new Marker(mapView);
            userPosition.SetIcon(ResourcesCompat.GetDrawable(Resources, Resource.Drawable.ic_my_location, null));
            userPosition.Position = new GeoPoint(GeoLocation.Latitude, GeoLocation.Longitude);
            userPosition.SetInfoWindow(null);
            mapView.OverlayManager.Add(userPosition);

            mapView.OverlayManager.Add(MyScaleBarOverlay);
            mapView.OverlayManager.Add(LocationOverlay);
            mapView.Invalidate();
        }
Пример #2
0
        private static void PasteMarker(int frameUnderMouse)
        {
            var m = copiedMarker.Clone();

            m.Frame = frameUnderMouse;
            Document.Current.History.DoTransaction(() => {
                SetMarker.Perform(Document.Current.Container, m, true);
            });
        }
Пример #3
0
 public static void PasteMarkers()
 {
     Document.Current.History.DoTransaction(() => {
         foreach (var marker in copiedMarkers)
         {
             var m = marker.Clone();
             SetMarker.Perform(Document.Current.Container, m, true);
         }
     });
 }
Пример #4
0
        /// <summary>
        /// Adds a set predicates; generally compares to a set of values of the same type (e.g. a set of integer values)
        /// </summary>
        /// <typeparam name="T">The type of the values in the set.</typeparam>
        /// <param name="path">Teh path of the object property to compare against value set.</param>
        /// <param name="marker">An equality or inequality marker.</param>
        /// <param name="values">A set of values of type <typeparamref name="T"/>.</param>
        /// <returns>Returns current group.</returns>
        public WhereGroup AddSetPredicate <T>(string path, SetMarker marker, T[] values)
        {
            SetPredicate <T> predicate;

            predicate        = new SetPredicate <T>(path);
            predicate.Marker = marker;
            predicate.Values = values;
            _predicates.Add(predicate);
            return(this);
        }
Пример #5
0
        private async Task SetProductsQuantityAsync(IEnumerable <CartItem> items, SetMarker setMarker)
        {
            foreach (var item in items)
            {
                var product = await _productsRepository.GetAsync(item.ProductId);

                product.NullCheck(ErrorCodes.product_not_found, item.ProductId);

                product.SetQuantity(product.Quantity + (int)setMarker * item.Quantity);
                await _productsRepository.UpdateAsync(product);
            }
        }
Пример #6
0
        void DragMarker(Marker marker, int destColumn)
        {
            var markerToRemove = Document.Current.Animation.Markers.FirstOrDefault(m => m.Frame == destColumn);

            if (marker.Frame != destColumn && markerToRemove != null)
            {
                DeleteMarker.Perform(markerToRemove, false);
            }
            // Delete and add marker again, because we want to maintain the markers order.
            DeleteMarker.Perform(marker, false);
            SetProperty.Perform(marker, "Frame", destColumn);
            SetMarker.Perform(marker, true);
        }
Пример #7
0
        private static void CreateMarker(MarkerAction action)
        {
            var timeline      = Timeline.Instance;
            var nearestMarker = Document.Current.Animation.Markers.LastOrDefault(
                m => m.Frame < timeline.CurrentColumn && m.Action == MarkerAction.Play);
            string markerId  = (action == MarkerAction.Play) ? GenerateMarkerId(Document.Current.Animation.Markers, "Start") : "";
            var    newMarker = new Marker(
                markerId,
                timeline.CurrentColumn,
                action,
                action == MarkerAction.Jump && nearestMarker != null ? nearestMarker.Id : ""
                );

            SetMarker.Perform(newMarker, true);
        }
        private void Stretch(IntRectangle boundaries, DragSide side, int newPos, bool stretchMarkers)
        {
            int length;

            if (side == DragSide.Left)
            {
                length = boundaries.Right - newPos - 1;
            }
            else
            {
                length = newPos - boundaries.Left - 1;
            }
            int oldLength = boundaries.Right - boundaries.Left - 1;
            var processed = new HashSet <IAnimator>();

            foreach (var animable in GridSelection.EnumerateAnimators(boundaries))
            {
                foreach (var animator in animable.Animators)
                {
                    if (animator.AnimationId != Document.Current.AnimationId || processed.Contains(animator) || !savedKeyframes.ContainsKey(animator))
                    {
                        continue;
                    }
                    processed.Add(animator);
                    IEnumerable <IKeyframe> saved = savedKeyframes[animator];
                    if (
                        side == DragSide.Left && length < oldLength ||
                        side == DragSide.Right && length > oldLength
                        )
                    {
                        saved = saved.Reverse();
                    }
                    foreach (var key in saved)
                    {
                        RemoveKeyframe.Perform(animator, key.Frame);
                    }
                    foreach (var key in saved)
                    {
                        double relpos = savedPositions[key];
                        int    newFrame;
                        if (side == DragSide.Left)
                        {
                            newFrame = (int)Math.Round(newPos + relpos * length);
                        }
                        else
                        {
                            newFrame = (int)Math.Round(boundaries.Left + relpos * length);
                        }
                        var newKey = key.Clone();
                        newKey.Frame = newFrame;
                        SetAnimableProperty.Perform(
                            animable.Host, animator.TargetPropertyPath, newKey.Value,
                            createAnimatorIfNeeded: true,
                            createInitialKeyframeForNewAnimator: false,
                            newKey.Frame
                            );
                        SetKeyframe.Perform(animable.Host, animator.TargetPropertyPath, Document.Current.AnimationId, newKey);
                    }
                }
            }
            if (stretchMarkers)
            {
                foreach (var marker in savedMarkers)
                {
                    DeleteMarker.Perform(marker, removeDependencies: false);
                }
                foreach (var marker in savedMarkers)
                {
                    double relpos = savedMarkerPositions[marker];
                    int    newFrame;
                    if (side == DragSide.Left)
                    {
                        newFrame = (int)Math.Round(newPos + relpos * length);
                    }
                    else
                    {
                        newFrame = (int)Math.Round(boundaries.Left + relpos * length);
                    }
                    var newMarker = marker.Clone();
                    newMarker.Frame = newFrame;
                    SetMarker.Perform(newMarker, removeDependencies: false);
                }
            }
        }
Пример #9
0
        private void Stretch(Boundaries boundaries, DragSide side, int newPos, bool stretchMarkers)
        {
            int length;

            if (side == DragSide.Left)
            {
                length = boundaries.Right - newPos - 1;
            }
            else
            {
                length = newPos - boundaries.Left - 1;
            }
            int oldLength = boundaries.Right - boundaries.Left - 1;

            for (int i = boundaries.Top; i <= boundaries.Bottom; ++i)
            {
                if (!(Document.Current.Rows[i].Components.Get <NodeRow>()?.Node is IAnimationHost animable))
                {
                    continue;
                }
                foreach (var animator in animable.Animators.ToList())
                {
                    IEnumerable <IKeyframe> saved = savedKeyframes[animator];
                    if (
                        side == DragSide.Left && length < oldLength ||
                        side == DragSide.Right && length > oldLength
                        )
                    {
                        saved = saved.Reverse();
                    }
                    foreach (var key in saved)
                    {
                        RemoveKeyframe.Perform(animator, key.Frame);
                    }
                    foreach (var key in saved)
                    {
                        double relpos = savedPositions[key];
                        int    newFrame;
                        if (side == DragSide.Left)
                        {
                            newFrame = (int)Math.Round(newPos + relpos * length);
                        }
                        else
                        {
                            newFrame = (int)Math.Round(boundaries.Left + relpos * length);
                        }
                        var newKey = key.Clone();
                        newKey.Frame = newFrame;
                        SetAnimableProperty.Perform(
                            animable, animator.TargetPropertyPath, newKey.Value,
                            createAnimatorIfNeeded: true,
                            createInitialKeyframeForNewAnimator: false,
                            newKey.Frame
                            );
                        SetKeyframe.Perform(animable, animator.TargetPropertyPath, Document.Current.AnimationId, newKey);
                    }
                }
            }
            if (stretchMarkers)
            {
                foreach (var marker in savedMarkers)
                {
                    DeleteMarker.Perform(Document.Current.Container, marker, removeDependencies: false);
                }
                foreach (var marker in savedMarkers)
                {
                    double relpos = savedMarkerPositions[marker];
                    int    newFrame;
                    if (side == DragSide.Left)
                    {
                        newFrame = (int)Math.Round(newPos + relpos * length);
                    }
                    else
                    {
                        newFrame = (int)Math.Round(boundaries.Left + relpos * length);
                    }
                    var newMarker = marker.Clone();
                    newMarker.Frame = newFrame;
                    SetMarker.Perform(Document.Current.Container, newMarker, removeDependencies: false);
                }
            }
        }