Example #1
0
        private void PaintAlbum(PaintEventArgs e, SongListViewItem item, SolidBrush textBrush, int x, int y, int size)
        {
            e.Graphics.DrawImage(item.AlbumArt, x, y, size, size);
            item.AlbumRectangle = Rectangle.Ceiling(new RectangleF(x, y, size, size));

            var rect = new RectangleF(x, y + size, size, this.Font.Height);

            e.Graphics.DrawString(item.SongInfo.Album, this.Font, textBrush, rect);
            rect.Offset(0, this.Font.Height);
            e.Graphics.DrawString(item.SongInfo.AlbumArtist, this.Font, textBrush, rect);
        }
Example #2
0
        private void CreateItems()
        {
            _ticker = new Ticker
            {
                Width            = 100,
                Dock             = DockStyle.Bottom,
                ForeColor        = Color.Red,
                FireWhileSliding = true,
                Duration         = _dataSource.Length - 1
            };
            _ticker.PositionChanged += new EventHandler(Ticker_PositionChanged);
            this.Controls.Add(_ticker);
            System.Diagnostics.Debug.WriteLine($"Ticker '{nameof(_ticker)}' has been initialized.");
            Invalidate(true);

            MethodInvoker doWork = delegate
            {
                DisposeItems();
                _items = new List <SongListViewItem>();

                if (_dataSource == null || _dataSource.Length == 0)
                {
                    return;
                }

                string           lastAlbum = string.Empty;
                SongListViewItem prevItem  = null;
                int index = 0;
                foreach (SongInfo info in _dataSource)
                {
                    //if (index > 50) break;
                    string album = info.Album;
                    if (string.IsNullOrEmpty(album))
                    {
                        album = "Unknown Album";
                    }

                    if (lastAlbum != album)
                    {
                        var item = new SongListViewItem();
                        item.SongInfo     = info;
                        item.AlbumItem    = item;
                        item.PreviousItem = prevItem;
                        if (prevItem != null)
                        {
                            prevItem.NextItem = item;
                        }
                        prevItem = item;
                        item.IsStartOfNewAlbum = true;
                        item.Index             = index;

                        if (info.HasFrontCover)
                        {
                            item.AlbumArt = info.GetFrontCover(100, 100);
                        }
                        else
                        {
                            _loader.LoadAlbumArt(item, info.FileName, 100, 100);
                        }
                        //item.AlbumArt = AlbumArtHelper.GetAlbumArt(info.FileName, 100, 100);

                        lastAlbum = album;
                        _items.Add(item);
                        index += 1;
                    }
                }

                _ticker.Duration = _items.Count - 1;
                _ticker.SetPosition(_ticker.Position);
                this.Invoke((MethodInvoker) delegate { Invalidate(true); });
            };

            doWork.BeginInvoke(null, null);
        }