using AndroidSideloader; using AndroidSideloader.Utilities; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Windows.Forms; public enum SortField { Name, LastUpdated, Size, Popularity } public enum SortDirection { Ascending, Descending } public class FastGalleryPanel : Control { // Data private List _items; private List _originalItems; // Keep original for re-sorting private readonly int _tileWidth; private readonly int _tileHeight; private readonly int _spacing; // Grouping private Dictionary> _groupedByPackage; private List _displayTiles; private int _expandedTileIndex = -1; private float _expandOverlayOpacity = 0f; private float _targetExpandOverlayOpacity = 0f; private int _overlayHoveredVersion = -1; private Rectangle _overlayRect; private List _versionRects; private int _overlayScrollOffset = 0; private int _overlayMaxScroll = 0; private class GroupedTile { public string PackageName; public string GameName; public string BaseGameName; // Common name across all versions public List Versions; public ListViewItem Primary => Versions[0]; } // Sorting private SortField _currentSortField = SortField.Name; private SortDirection _currentSortDirection = SortDirection.Ascending; public SortField CurrentSortField => _currentSortField; public SortDirection CurrentSortDirection => _currentSortDirection; private readonly Panel _sortPanel; private readonly List