private void AddUnassignedEntriesToGroup(EntryGroup group, List <int> indices)
        {
            List <Entry> groupedEntries = new List <Entry>();

            foreach (int index in indices)
            {
                groupedEntries.Add(UnassignedEntries[index]);
            }

            UnassignedEntries.RemoveAll(entry => groupedEntries.Contains(entry));

            group.AddRange(groupedEntries);

            RefreshListViews();
        }
        private void CreateGroupFromUnassignedEntries(List <int> indices)
        {
            List <Entry> groupedEntries = new List <Entry>();

            foreach (int index in indices)
            {
                groupedEntries.Add(UnassignedEntries[index]);
            }

            UnassignedEntries.RemoveAll(entry => groupedEntries.Contains(entry));

            Groups.Add(groupedEntries);

            RefreshListViews();
        }
        private void RefreshListViews()
        {
            var cmp = new NaturalSortComparer(true);

            UnassignedEntries.Sort((a, b) => cmp.Compare(a.Name, b.Name));

            unassignedEntriesView.VirtualListSize = UnassignedEntries.Count;
            unassignedEntriesView.Refresh();

            Groups.Sort();
            entryGroupsView.VirtualListSize = Groups.ElementCount();
            entryGroupsView.Refresh();

            unassignedEntriesView.SelectedIndices.Clear();
            entryGroupsView.SelectedIndices.Clear();

            UpdateFileCounts();
        }
        private void Ungroup(List <int> indices)
        {
            List <Entry> entriesToRemove = new List <Entry>();

            foreach (int index in indices)
            {
                var element = Groups.ElementAt(index);
                if (element is Entry entry)
                {
                    entriesToRemove.Add(entry);
                }
            }

            foreach (var entry in entriesToRemove)
            {
                entry.RemoveGroup();
                UnassignedEntries.Add(entry);
            }

            RefreshListViews();
        }