mirror of
https://github.com/JDM170/SteamAchievementManager
synced 2025-12-10 05:37:18 +07:00
- Bump SAM.Picker to .NET4.
- Improvements to downloading of game list and game icons. See #3. - Improvements to performance of the game list. See #3.
This commit is contained in:
@@ -20,7 +20,6 @@
|
||||
* distribution.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -28,7 +27,7 @@ namespace SAM.Picker
|
||||
{
|
||||
internal class GameInfo
|
||||
{
|
||||
public long Id;
|
||||
public uint Id;
|
||||
public string Type;
|
||||
public ListViewItem Item;
|
||||
|
||||
@@ -52,7 +51,7 @@ namespace SAM.Picker
|
||||
|
||||
public string Logo;
|
||||
|
||||
public GameInfo(Int64 id, string type)
|
||||
public GameInfo(uint id, string type)
|
||||
{
|
||||
this.Id = id;
|
||||
this.Type = type;
|
||||
|
||||
34
SAM.Picker/GamePicker.Designer.cs
generated
34
SAM.Picker/GamePicker.Designer.cs
generated
@@ -32,7 +32,7 @@
|
||||
System.Windows.Forms.ToolStripSeparator _ToolStripSeparator1;
|
||||
System.Windows.Forms.ToolStripSeparator _ToolStripSeparator2;
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GamePicker));
|
||||
this._GameLogoImageList = new System.Windows.Forms.ImageList(this.components);
|
||||
this._LogoImageList = new System.Windows.Forms.ImageList(this.components);
|
||||
this._CallbackTimer = new System.Windows.Forms.Timer(this.components);
|
||||
this._PickerToolStrip = new System.Windows.Forms.ToolStrip();
|
||||
this._RefreshGamesButton = new System.Windows.Forms.ToolStripButton();
|
||||
@@ -47,6 +47,8 @@
|
||||
this._PickerStatusStrip = new System.Windows.Forms.StatusStrip();
|
||||
this._PickerStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this._DownloadStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this._LogoWorker = new System.ComponentModel.BackgroundWorker();
|
||||
this._ListWorker = new System.ComponentModel.BackgroundWorker();
|
||||
_ToolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
_ToolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this._PickerToolStrip.SuspendLayout();
|
||||
@@ -63,11 +65,11 @@
|
||||
_ToolStripSeparator2.Name = "_ToolStripSeparator2";
|
||||
_ToolStripSeparator2.Size = new System.Drawing.Size(6, 25);
|
||||
//
|
||||
// _GameLogoImageList
|
||||
// _LogoImageList
|
||||
//
|
||||
this._GameLogoImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
|
||||
this._GameLogoImageList.ImageSize = new System.Drawing.Size(184, 69);
|
||||
this._GameLogoImageList.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this._LogoImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
|
||||
this._LogoImageList.ImageSize = new System.Drawing.Size(184, 69);
|
||||
this._LogoImageList.TransparentColor = System.Drawing.Color.Transparent;
|
||||
//
|
||||
// _CallbackTimer
|
||||
//
|
||||
@@ -165,17 +167,19 @@
|
||||
this._GameListView.BackColor = System.Drawing.Color.Black;
|
||||
this._GameListView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this._GameListView.ForeColor = System.Drawing.Color.White;
|
||||
this._GameListView.LargeImageList = this._GameLogoImageList;
|
||||
this._GameListView.LargeImageList = this._LogoImageList;
|
||||
this._GameListView.Location = new System.Drawing.Point(0, 25);
|
||||
this._GameListView.MultiSelect = false;
|
||||
this._GameListView.Name = "_GameListView";
|
||||
this._GameListView.Size = new System.Drawing.Size(742, 245);
|
||||
this._GameListView.SmallImageList = this._GameLogoImageList;
|
||||
this._GameListView.SmallImageList = this._LogoImageList;
|
||||
this._GameListView.Sorting = System.Windows.Forms.SortOrder.Ascending;
|
||||
this._GameListView.TabIndex = 0;
|
||||
this._GameListView.TileSize = new System.Drawing.Size(184, 69);
|
||||
this._GameListView.UseCompatibleStateImageBehavior = false;
|
||||
this._GameListView.VirtualMode = true;
|
||||
this._GameListView.ItemActivate += new System.EventHandler(this.OnSelectGame);
|
||||
this._GameListView.RetrieveVirtualItem += new System.Windows.Forms.RetrieveVirtualItemEventHandler(this.OnGameListViewRetrieveVirtualItem);
|
||||
//
|
||||
// _PickerStatusStrip
|
||||
//
|
||||
@@ -203,6 +207,18 @@
|
||||
this._DownloadStatusLabel.Text = "Download status";
|
||||
this._DownloadStatusLabel.Visible = false;
|
||||
//
|
||||
// _LogoWorker
|
||||
//
|
||||
this._LogoWorker.WorkerSupportsCancellation = true;
|
||||
this._LogoWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.DoDownloadLogo);
|
||||
this._LogoWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.OnDownloadLogo);
|
||||
//
|
||||
// _ListWorker
|
||||
//
|
||||
this._ListWorker.WorkerSupportsCancellation = true;
|
||||
this._ListWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.DoDownloadList);
|
||||
this._ListWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.OnDownloadList);
|
||||
//
|
||||
// GamePicker
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@@ -226,7 +242,7 @@
|
||||
#endregion
|
||||
|
||||
private DoubleBufferedListView _GameListView;
|
||||
private System.Windows.Forms.ImageList _GameLogoImageList;
|
||||
private System.Windows.Forms.ImageList _LogoImageList;
|
||||
private System.Windows.Forms.Timer _CallbackTimer;
|
||||
private System.Windows.Forms.ToolStrip _PickerToolStrip;
|
||||
private System.Windows.Forms.ToolStripButton _RefreshGamesButton;
|
||||
@@ -240,6 +256,8 @@
|
||||
private System.Windows.Forms.StatusStrip _PickerStatusStrip;
|
||||
private System.Windows.Forms.ToolStripStatusLabel _DownloadStatusLabel;
|
||||
private System.Windows.Forms.ToolStripStatusLabel _PickerStatusLabel;
|
||||
private System.ComponentModel.BackgroundWorker _LogoWorker;
|
||||
private System.ComponentModel.BackgroundWorker _ListWorker;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
@@ -39,16 +40,16 @@ namespace SAM.Picker
|
||||
{
|
||||
private readonly API.Client _SteamClient;
|
||||
|
||||
private readonly WebClient _GameListDownloader = new WebClient();
|
||||
private readonly WebClient _LogoDownloader = new WebClient();
|
||||
private List<GameInfo> _Games = new List<GameInfo>();
|
||||
private readonly List<GameInfo> _Games;
|
||||
private readonly List<GameInfo> _FilteredGames;
|
||||
|
||||
public List<GameInfo> Games
|
||||
{
|
||||
get { return _Games; }
|
||||
}
|
||||
|
||||
private readonly List<GameInfo> _LogoQueue = new List<GameInfo>();
|
||||
private readonly List<string> _LogosAttempted;
|
||||
private readonly ConcurrentQueue<GameInfo> _LogoQueue;
|
||||
|
||||
// ReSharper disable PrivateFieldCanBeConvertedToLocalVariable
|
||||
private readonly API.Callbacks.AppDataChanged _AppDataChangedCallback;
|
||||
@@ -56,14 +57,20 @@ namespace SAM.Picker
|
||||
|
||||
public GamePicker(API.Client client)
|
||||
{
|
||||
this._Games = new List<GameInfo>();
|
||||
this._FilteredGames = new List<GameInfo>();
|
||||
this._LogosAttempted = new List<string>();
|
||||
this._LogoQueue = new ConcurrentQueue<GameInfo>();
|
||||
|
||||
this.InitializeComponent();
|
||||
|
||||
this._GameLogoImageList.Images.Add(
|
||||
"Blank",
|
||||
new Bitmap(this._GameLogoImageList.ImageSize.Width, this._GameLogoImageList.ImageSize.Height));
|
||||
var blank = new Bitmap(this._LogoImageList.ImageSize.Width, this._LogoImageList.ImageSize.Height);
|
||||
using (var g = Graphics.FromImage(blank))
|
||||
{
|
||||
g.Clear(Color.DimGray);
|
||||
}
|
||||
|
||||
this._GameListDownloader.DownloadDataCompleted += this.OnGameListDownload;
|
||||
this._LogoDownloader.DownloadDataCompleted += this.OnLogoDownload;
|
||||
this._LogoImageList.Images.Add("Blank", blank);
|
||||
|
||||
this._SteamClient = client;
|
||||
|
||||
@@ -81,39 +88,48 @@ namespace SAM.Picker
|
||||
{
|
||||
if (info.Id == param.Id)
|
||||
{
|
||||
info.Name = this._SteamClient.SteamApps001.GetAppData((uint)info.Id, "name");
|
||||
info.Name = this._SteamClient.SteamApps001.GetAppData(info.Id, "name");
|
||||
this.AddGameToLogoQueue(info);
|
||||
this._GameListView.Sort();
|
||||
this._GameListView.Update();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnGameListDownload(object sender, DownloadDataCompletedEventArgs e)
|
||||
private void DoDownloadList(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
var pairs = new List<KeyValuePair<uint, string>>();
|
||||
byte[] bytes;
|
||||
using (var downloader = new WebClient())
|
||||
{
|
||||
bytes = downloader.DownloadData(new Uri(string.Format("http://gib.me/sam/games.xml")));
|
||||
}
|
||||
using (var stream = new MemoryStream(bytes, false))
|
||||
{
|
||||
var document = new XPathDocument(stream);
|
||||
var navigator = document.CreateNavigator();
|
||||
var nodes = navigator.Select("/games/game");
|
||||
while (nodes.MoveNext())
|
||||
{
|
||||
string type = nodes.Current.GetAttribute("type", "");
|
||||
if (type == string.Empty)
|
||||
{
|
||||
type = "normal";
|
||||
}
|
||||
pairs.Add(new KeyValuePair<uint, string>((uint)nodes.Current.ValueAsLong, type));
|
||||
}
|
||||
}
|
||||
e.Result = pairs;
|
||||
}
|
||||
|
||||
private void OnDownloadList(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
if (e.Error == null && e.Cancelled == false)
|
||||
{
|
||||
using (var stream = new MemoryStream())
|
||||
var pairs = (List<KeyValuePair<uint, string>>)e.Result;
|
||||
foreach (var kv in pairs)
|
||||
{
|
||||
stream.Write(e.Result, 0, e.Result.Length);
|
||||
stream.Seek(0, SeekOrigin.Begin);
|
||||
|
||||
var document = new XPathDocument(stream);
|
||||
var navigator = document.CreateNavigator();
|
||||
var nodes = navigator.Select("/games/game");
|
||||
while (nodes.MoveNext())
|
||||
{
|
||||
string type = nodes.Current.GetAttribute("type", "");
|
||||
|
||||
if (type == string.Empty)
|
||||
{
|
||||
type = "normal";
|
||||
}
|
||||
|
||||
this.AddGame(nodes.Current.ValueAsLong, type);
|
||||
}
|
||||
this.AddGame(kv.Key, kv.Value);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -129,38 +145,31 @@ namespace SAM.Picker
|
||||
|
||||
private void RefreshGames()
|
||||
{
|
||||
this._GameListView.BeginUpdate();
|
||||
this._GameListView.Items.Clear();
|
||||
|
||||
foreach (GameInfo info in this._Games)
|
||||
this._FilteredGames.Clear();
|
||||
foreach (var info in this._Games.OrderBy(gi => gi.Name))
|
||||
{
|
||||
if (info.Type == "normal" &&
|
||||
_FilterGamesMenuItem.Checked == false)
|
||||
if (info.Type == "normal" && _FilterGamesMenuItem.Checked == false)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (info.Type == "demo" &&
|
||||
this._FilterDemosMenuItem.Checked == false)
|
||||
if (info.Type == "demo" && this._FilterDemosMenuItem.Checked == false)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (info.Type == "mod" &&
|
||||
this._FilterModsMenuItem.Checked == false)
|
||||
if (info.Type == "mod" && this._FilterModsMenuItem.Checked == false)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (info.Type == "junk" &&
|
||||
this._FilterJunkMenuItem.Checked == false)
|
||||
if (info.Type == "junk" && this._FilterJunkMenuItem.Checked == false)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
this._GameListView.Items.Add(info.Item);
|
||||
this._FilteredGames.Add(info);
|
||||
}
|
||||
|
||||
this._GameListView.BeginUpdate();
|
||||
this._GameListView.VirtualListSize = this._FilteredGames.Count;
|
||||
this._GameListView.RedrawItems(0, this._FilteredGames.Count - 1, true);
|
||||
this._GameListView.EndUpdate();
|
||||
this._PickerStatusLabel.Text = string.Format(
|
||||
"Displaying {0} games. Total {1} games.",
|
||||
@@ -168,34 +177,53 @@ namespace SAM.Picker
|
||||
this._Games.Count);
|
||||
}
|
||||
|
||||
private void OnLogoDownload(object sender, DownloadDataCompletedEventArgs e)
|
||||
private void OnGameListViewRetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
|
||||
{
|
||||
if (e.Error == null && e.Cancelled == false)
|
||||
{
|
||||
var info = e.UserState as GameInfo;
|
||||
if (info != null)
|
||||
{
|
||||
Image logo;
|
||||
try
|
||||
{
|
||||
using (var stream = new MemoryStream())
|
||||
{
|
||||
stream.Write(e.Result, 0, e.Result.Length);
|
||||
logo = new Bitmap(stream);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
logo = null;
|
||||
}
|
||||
e.Item = this._FilteredGames[e.ItemIndex].Item;
|
||||
}
|
||||
|
||||
if (logo != null)
|
||||
private void DoDownloadLogo(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
var info = (GameInfo)e.Argument;
|
||||
var logoPath = string.Format(
|
||||
"http://media.steamcommunity.com/steamcommunity/public/images/apps/{0}/{1}.jpg",
|
||||
info.Id,
|
||||
info.Logo);
|
||||
using (var downloader = new WebClient())
|
||||
{
|
||||
var data = downloader.DownloadData(new Uri(logoPath));
|
||||
|
||||
try
|
||||
{
|
||||
using (var stream = new MemoryStream(data, false))
|
||||
{
|
||||
info.ImageIndex = this._GameLogoImageList.Images.Count;
|
||||
this._GameLogoImageList.Images.Add(info.Logo, logo);
|
||||
this._GameListView.Update();
|
||||
var bitmap = new Bitmap(stream);
|
||||
e.Result = new LogoInfo(info.Id, bitmap);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
e.Result = new LogoInfo(info.Id, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDownloadLogo(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
if (e.Error != null || e.Cancelled == true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var logoInfo = (LogoInfo)e.Result;
|
||||
var gameInfo = this._Games.FirstOrDefault(gi => gi.Id == logoInfo.Id);
|
||||
if (gameInfo != null && logoInfo.Bitmap != null)
|
||||
{
|
||||
this._GameListView.BeginUpdate();
|
||||
var imageIndex = this._LogoImageList.Images.Count;
|
||||
this._LogoImageList.Images.Add(gameInfo.Logo, logoInfo.Bitmap);
|
||||
gameInfo.ImageIndex = imageIndex;
|
||||
this._GameListView.EndUpdate();
|
||||
}
|
||||
|
||||
this.DownloadNextLogo();
|
||||
@@ -203,14 +231,15 @@ namespace SAM.Picker
|
||||
|
||||
private void DownloadNextLogo()
|
||||
{
|
||||
if (this._LogoQueue.Count == 0)
|
||||
if (this._LogoWorker.IsBusy == true)
|
||||
{
|
||||
this._DownloadStatusLabel.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this._LogoDownloader.IsBusy)
|
||||
GameInfo info;
|
||||
if (this._LogoQueue.TryDequeue(out info) == false)
|
||||
{
|
||||
this._DownloadStatusLabel.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -219,19 +248,12 @@ namespace SAM.Picker
|
||||
this._LogoQueue.Count);
|
||||
this._DownloadStatusLabel.Visible = true;
|
||||
|
||||
GameInfo info = this._LogoQueue[0];
|
||||
this._LogoQueue.RemoveAt(0);
|
||||
|
||||
var logoPath = string.Format(
|
||||
"http://media.steamcommunity.com/steamcommunity/public/images/apps/{0}/{1}.jpg",
|
||||
info.Id,
|
||||
info.Logo);
|
||||
this._LogoDownloader.DownloadDataAsync(new Uri(logoPath), info);
|
||||
this._LogoWorker.RunWorkerAsync(info);
|
||||
}
|
||||
|
||||
private void AddGameToLogoQueue(GameInfo info)
|
||||
{
|
||||
string logo = this._SteamClient.SteamApps001.GetAppData((uint)info.Id, "logo");
|
||||
string logo = this._SteamClient.SteamApps001.GetAppData(info.Id, "logo");
|
||||
|
||||
if (logo == null)
|
||||
{
|
||||
@@ -240,24 +262,25 @@ namespace SAM.Picker
|
||||
|
||||
info.Logo = logo;
|
||||
|
||||
int imageIndex = this._GameLogoImageList.Images.IndexOfKey(logo);
|
||||
int imageIndex = this._LogoImageList.Images.IndexOfKey(logo);
|
||||
if (imageIndex >= 0)
|
||||
{
|
||||
info.ImageIndex = imageIndex;
|
||||
}
|
||||
else
|
||||
else if (this._LogosAttempted.Contains(logo) == false)
|
||||
{
|
||||
this._LogoQueue.Add(info);
|
||||
this._LogosAttempted.Add(logo);
|
||||
this._LogoQueue.Enqueue(info);
|
||||
this.DownloadNextLogo();
|
||||
}
|
||||
}
|
||||
|
||||
private bool OwnsGame(long id)
|
||||
private bool OwnsGame(uint id)
|
||||
{
|
||||
return this._SteamClient.SteamApps003.IsSubscribedApp(id);
|
||||
}
|
||||
|
||||
private void AddGame(long id, string type)
|
||||
private void AddGame(uint id, string type)
|
||||
{
|
||||
if (this._Games.Any(i => i.Id == id) == true)
|
||||
{
|
||||
@@ -270,7 +293,7 @@ namespace SAM.Picker
|
||||
}
|
||||
|
||||
var info = new GameInfo(id, type);
|
||||
info.Name = this._SteamClient.SteamApps001.GetAppData((uint)info.Id, "name");
|
||||
info.Name = this._SteamClient.SteamApps001.GetAppData(info.Id, "name");
|
||||
|
||||
this._Games.Add(info);
|
||||
this.AddGameToLogoQueue(info);
|
||||
@@ -278,10 +301,9 @@ namespace SAM.Picker
|
||||
|
||||
private void AddGames()
|
||||
{
|
||||
this._GameListView.Items.Clear();
|
||||
this._Games = new List<GameInfo>();
|
||||
this._GameListDownloader.DownloadDataAsync(new Uri(string.Format("http://gib.me/sam/games.xml")));
|
||||
this._Games.Clear();
|
||||
this._RefreshGamesButton.Enabled = false;
|
||||
this._ListWorker.RunWorkerAsync();
|
||||
}
|
||||
|
||||
private void AddDefaultGames()
|
||||
@@ -332,9 +354,9 @@ namespace SAM.Picker
|
||||
|
||||
private void OnAddGame(object sender, EventArgs e)
|
||||
{
|
||||
long id;
|
||||
uint id;
|
||||
|
||||
if (long.TryParse(this._AddGameTextBox.Text, out id) == false)
|
||||
if (uint.TryParse(this._AddGameTextBox.Text, out id) == false)
|
||||
{
|
||||
MessageBox.Show(
|
||||
this,
|
||||
@@ -352,8 +374,7 @@ namespace SAM.Picker
|
||||
}
|
||||
|
||||
this._AddGameTextBox.Text = "";
|
||||
this._GameListView.Items.Clear();
|
||||
this._Games = new List<GameInfo>();
|
||||
this._Games.Clear();
|
||||
this.AddGame(id, "normal");
|
||||
this._FilterGamesMenuItem.Checked = true;
|
||||
this.RefreshGames();
|
||||
|
||||
@@ -112,30 +112,36 @@
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="_ToolStripSeparator1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<metadata name="_ToolStripSeparator1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="_ToolStripSeparator2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<metadata name="_ToolStripSeparator2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="_GameLogoImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<metadata name="_LogoImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>542, 17</value>
|
||||
</metadata>
|
||||
<metadata name="_CallbackTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>678, 17</value>
|
||||
</metadata>
|
||||
<metadata name="_PickerToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="_CallbackTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>233, 17</value>
|
||||
<metadata name="_PickerStatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>155, 17</value>
|
||||
</metadata>
|
||||
<metadata name="_PickerToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>359, 17</value>
|
||||
<metadata name="_LogoWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>418, 17</value>
|
||||
</metadata>
|
||||
<metadata name="_PickerStatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>464, 17</value>
|
||||
<metadata name="_ListWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>303, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAMAEBAAAAEACABoBQAANgAAACAgAAABAAgAqAgAAJ4FAAAwMAAAAQAYAKgcAABGDgAAKAAAABAA
|
||||
|
||||
38
SAM.Picker/LogoInfo.cs
Normal file
38
SAM.Picker/LogoInfo.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would
|
||||
* be appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must not
|
||||
* be misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
*/
|
||||
|
||||
using System.Drawing;
|
||||
|
||||
namespace SAM.Picker
|
||||
{
|
||||
internal class LogoInfo
|
||||
{
|
||||
public readonly uint Id;
|
||||
public readonly Bitmap Bitmap;
|
||||
|
||||
public LogoInfo(uint id, Bitmap bitmap)
|
||||
{
|
||||
this.Id = id;
|
||||
this.Bitmap = bitmap;
|
||||
}
|
||||
}
|
||||
}
|
||||
14
SAM.Picker/Properties/Resources.Designer.cs
generated
14
SAM.Picker/Properties/Resources.Designer.cs
generated
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.1
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -60,6 +60,9 @@ namespace SAM.Picker.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Download {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Download", resourceCulture);
|
||||
@@ -67,6 +70,9 @@ namespace SAM.Picker.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Filter {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Filter", resourceCulture);
|
||||
@@ -74,6 +80,9 @@ namespace SAM.Picker.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Refresh {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Refresh", resourceCulture);
|
||||
@@ -81,6 +90,9 @@ namespace SAM.Picker.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap Search {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("Search", resourceCulture);
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>SAM.Picker</RootNamespace>
|
||||
<AssemblyName>SAM.Picker</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ApplicationIcon>SAM.ico</ApplicationIcon>
|
||||
<FileUpgradeFlags>
|
||||
@@ -32,6 +32,7 @@
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@@ -83,6 +84,7 @@
|
||||
<Compile Include="GamePicker.Designer.cs">
|
||||
<DependentUpon>GamePicker.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LogoInfo.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="GamePicker.resx">
|
||||
@@ -107,6 +109,7 @@
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="Resources\arrow-circle-double.png" />
|
||||
<None Include="Resources\magnifier.png" />
|
||||
<None Include="Resources\television-test.png" />
|
||||
|
||||
3
SAM.Picker/app.config
Normal file
3
SAM.Picker/app.config
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
||||
Reference in New Issue
Block a user