コード例 #1
0
        private static int GetIndex(FolderSystem data, BaseBookmarkData item)
        {
            if (InteractiveFolder.TryGetFolder(data.Home, item.Parent ?? data.Home, out InteractiveFolder f))
            {
                switch (item)
                {
                case FanficBookmark mark:
                    return(f.Contents.IndexOf(mark));

                case InteractiveFolder folder:
                    return(f.Folders.IndexOf(folder));

                case BookmarkFolder bFolder:
                    return(f.Folders.FindIndex(x => x.Id == bFolder.Id));
                }
            }

            return(-1);
        }
コード例 #2
0
        private static void DroppedFolder(FolderSystem data, InteractiveFolder folder, BaseBookmarkData droppedOn, int indexMod)
        {
            // Dont worry about adding a negative index mod, because then it moves the item two spaces instead of one.
            var         index = GetIndex(data, droppedOn) + (indexMod > 0 ? 1 : 0);
            FolderModel folderModel;

            switch (droppedOn)
            {
            case InteractiveFolder droppedOnFolder:
                if (indexMod == 0)
                {
                    folderModel = new FolderModel(folder, 0)
                    {
                        ParentFolder = droppedOnFolder.Id.ToString()
                    };
                    data.UpdateFolder(folderModel);
                }
                else
                {
                    folderModel = new FolderModel(folder, index)
                    {
                        ParentFolder = droppedOnFolder.Parent?.Id.ToString() ?? Guid.Empty.ToString()
                    };
                    data.UpdateFolder(folderModel);
                }
                break;

            case FanficBookmark droppedOnFic:
                folderModel = new FolderModel(folder, index)
                {
                    ParentFolder = droppedOnFic.Parent?.Id.ToString() ?? Guid.Empty.ToString()
                };
                data.UpdateFolder(folderModel);
                break;
            }
        }