private void lvGames_MouseClick(object sender, MouseEventArgs e) { ListView lv = (ListView)sender; ListViewItem lvi = lv.GetItemAt(e.X, e.Y); if (lvi != null) { if (e.X < (lvi.Bounds.Left + 16)) { if (lv.SelectedIndices.Contains(lvi.Index)) { SteamLaunchable app = SteamApps[lvi.Index]; if (!CheckedItemMap.ContainsKey(app)) { CheckedItemMap[app] = false; } CheckedItemMap[app] = !CheckedItemMap[app]; if (lv.SelectedIndices.Count > 0) { foreach (int index in lv.SelectedIndices) { SteamLaunchable appX = SteamApps[index]; if (!CheckedItemMap.ContainsKey(appX)) { CheckedItemMap[appX] = false; } CheckedItemMap[appX] = CheckedItemMap[app]; } lv.Invalidate(); } } else { SteamLaunchable app = SteamApps[lvi.Index]; if (!CheckedItemMap.ContainsKey(app)) { CheckedItemMap[app] = false; } CheckedItemMap[app] = !CheckedItemMap[app]; lv.Invalidate(lvi.Bounds); } } } }
private void lvGames_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) { SteamLaunchable item = SteamApps[e.ItemIndex]; if (e.Item == null) { e.Item = new ListViewItem(item.Title); } UInt64 gameid = item.GetShortcutID(); e.Item.SubItems.Add(gameid.ToString()); e.Item.SubItems.Add(item.AppType); if (IsInstalled.Contains(gameid)) { e.Item.SubItems.Add("Y"); } else { e.Item.SubItems.Add("N"); } if (KnownSteamGames.Contains(gameid)) { e.Item.SubItems.Add("Y"); } else { e.Item.SubItems.Add("N"); } if (!string.IsNullOrEmpty(item.Icon) && File.Exists(item.Icon)) { if (!lvGames.SmallImageList.Images.ContainsKey(item.Icon)) { lvGames.SmallImageList.Images.Add(item.Icon, Icon.ExtractAssociatedIcon(item.Icon)); } e.Item.ImageKey = item.Icon; } else { e.Item.ImageKey = "default"; } }
private void lvGames_DrawItem(object sender, DrawListViewItemEventArgs e) { e.DrawDefault = true; if (lvGames.SmallImageList.Images.ContainsKey(e.Item.ImageKey)) { Rectangle rect = e.Bounds; rect.Width = 16; rect.Height = 16; rect.X += 16; e.Graphics.DrawImage(lvGames.SmallImageList.Images[e.Item.ImageKey], rect); } /*if (!e.Item.Checked) * { * e.Item.Checked = true; * e.Item.Checked = false; * }*/ { Rectangle rect = e.Bounds; rect.Width = 10; rect.Height = 10; rect.X += 2; rect.Y += 2; e.Graphics.DrawRectangle(Pens.Black, rect); } SteamLaunchable app = SteamApps[e.ItemIndex]; if (CheckedItemMap.ContainsKey(app) && CheckedItemMap[app]) { Rectangle rect = e.Bounds; rect.Width = 7; rect.Height = 7; rect.X += 4; rect.Y += 4; e.Graphics.FillRectangle(Brushes.Black, rect); } }