public bool ShouldChangeCharacters(UITextView textView, NSRange range, string text)
            {
                if (!isPressingBackspace(range, text))
                {
                    return(true);
                }

                var cursorPosition = range.Location;
                var attrs          = textView.AttributedText.GetAttributes(cursorPosition, out var attrRange);

                var isDeletingProject = attrs.ObjectForKey(TimeEntryTagsTextView.RoundedBackground) != null;

                if (isDeletingProject)
                {
                    ProjectDeleted.Raise(this);
                    return(false);
                }

                var isDeletingTag = attrs.ObjectForKey(TimeEntryTagsTextView.RoundedBorders) != null;

                if (isDeletingTag)
                {
                    TagDeleted?.Invoke(this, new TagDeletedEventArgs(cursorPosition));
                    return(false);
                }

                return(true);
            }
Esempio n. 2
0
        public override bool ShouldChangeText(UITextView textView, NSRange range, string text)
        {
            if (isTypingMultistageCharacter(range, text))
            {
                IsWritingMultistageCharacter.Raise(this);
                return(true);
            }

            if (!isPressingBackspace(range, text))
            {
                return(true);
            }

            var cursorPosition = range.Location;
            var attrs          = textView.AttributedText.GetAttributes(cursorPosition, out var attrRange);

            var isDeletingProject = attrs.ObjectForKey(TokenExtensions.Project) != null;

            if (isDeletingProject)
            {
                ProjectDeleted.Raise(this);
                return(false);
            }

            var tagIndex      = attrs.ObjectForKey(TokenExtensions.TagIndex) as NSNumber;
            var isDeletingTag = tagIndex != null;

            if (isDeletingTag)
            {
                TagDeleted?.Invoke(this, new TagDeletedEventArgs((int)cursorPosition, tagIndex.Int32Value));
                return(false);
            }

            return(true);
        }
        public void BeforeTextChanged(ICharSequence sequence, int start, int count, int after)
        {
            var isDeleting = count > after;
            if (!isDeleting) return;

            var spannable = sequence as SpannableStringBuilder;
            var deletedSpan = spannable.GetSpans(start, start, Class.FromType(typeof(TokenSpan))).LastOrDefault();
            if (deletedSpan == null) return;

            if (deletedSpan is ProjectTokenSpan)
            {
                ProjectDeleted?.Raise(this);
            }
            else if (deletedSpan is TagsTokenSpan tagSpan)
            {
                TagDeleted?.Invoke(this, new TagDeletedEventArgs(start, tagSpan.TagIndex));
            }
        }
Esempio n. 4
0
        public async Task <IActionResult> DeleteByIdAsync(int id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!_entityIndex.Exists(ResourceType.Tag, id))
            {
                return(NotFound());
            }

            var status = _entityIndex.Status(ResourceType.Tag, id).GetValueOrDefault();

            if (!UserPermissions.IsAllowedToDelete(User.Identity, status, _entityIndex.Owner(ResourceType.Tag, id)))
            {
                return(Forbid());
            }

            if (status == ContentStatus.Published)
            {
                return(BadRequest(ErrorMessages.CannotBeDeleted(ResourceType.Route, id)));
            }

            if (_referencesIndex.IsUsed(ResourceType.Tag, id))
            {
                return(BadRequest(ErrorMessages.ResourceInUse));
            }

            var ev = new TagDeleted
            {
                Id        = id,
                UserId    = User.Identity.GetUserIdentity(),
                Timestamp = DateTimeOffset.Now
            };

            await _eventStore.AppendEventAsync(ev);

            return(NoContent());
        }
Esempio n. 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="TagId"></param>
        public void DeleteTag(Guid TagId)
        {
            Tag Tag = GetTagById(TagId);

            if (Tag == null)
            {
                return;
            }

            Tags.Remove(Tag);

            foreach (Tag SubTag in Tags)
            {
                if (SubTag.DecayTagId == Tag.Id)
                {
                    SubTag.DecayTagId = Guid.Empty;
                }
            }

            TagDeleted?.Invoke(TagId);

            TagsUpdated?.Invoke();
        }
Esempio n. 6
0
 private void InvokeTagDeleted(RemoteRepositoryTag tag)
 => TagDeleted?.Invoke(this, new RemoteReferenceEventArgs(tag));
 public void RaiseTagDeleted(int tagIndex)
 {
     TagDeleted?.Invoke(this, new TagDeletedEventArgs(0, tagIndex));
 }
Esempio n. 8
0
 protected virtual void OnTagDeleted()
 {
     TagDeleted?.Invoke(this, EventArgs.Empty);
 }