Skip to content

Commit

Permalink
Automatically group on sort column. Update About dialog to support li…
Browse files Browse the repository at this point in the history
…nks.
  • Loading branch information
Teddy Zhang committed Mar 21, 2017
1 parent 05cd67d commit 2db39a7
Show file tree
Hide file tree
Showing 7 changed files with 147 additions and 60 deletions.
51 changes: 26 additions & 25 deletions Rapr/Core/AboutBox.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 25 additions & 1 deletion Rapr/Core/AboutBox.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Reflection;
Expand All @@ -14,7 +15,7 @@ public AboutBox()
{
InitializeComponent();
this.Text = String.Format("About {0}", AssemblyTitle);
this.labelVersion.Text = String.Format("v{0} [by Kannan Ramanathan, Teddy Zhang]", AssemblyVersion);
this.labelProductName.Text = string.Format("DriveStore Explorer v{0} [by Kannan Ramanathan, Teddy Zhang]", AssemblyVersion);
}

#region Assembly Attribute Accessors
Expand Down Expand Up @@ -96,5 +97,28 @@ public string AssemblyCompany
}
}
#endregion

private void labelLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
string url;
LinkLabel linkLabel = (LinkLabel)sender;

if (e.Link.LinkData != null)
{
url = e.Link.LinkData.ToString();
}
else
{
url = linkLabel.Text.Substring(e.Link.Start, e.Link.Length);
}

Process.Start(url);
linkLabel.LinkVisited = true;
}

private void textBoxDescription_LinkClicked(object sender, LinkClickedEventArgs e)
{
Process.Start(e.LinkText);
}
}
}
54 changes: 27 additions & 27 deletions Rapr/Core/AboutBox.resx
Expand Up @@ -601,33 +601,33 @@
</value>
</data>
<data name="textBoxDescription.Text" xml:space="preserve">
<value>This tool uses the excellent ObjectViewList (http://www.codeproject.com/KB/list/ObjectListView.aspx)

Changelog:
v0.81
- Add "Select Old Drivers" functionality.

v0.8
- Improve PnpUtil result parsing logic for Russian language and error handling.

v0.7
- Group the drivers by Driver Class. Fix sorting.
- Show estimated disk usage for drivers.

v0.6
- Now requires .Net 4.0.
- A few UI tweaks and code cleanup.

v0.5
- Added support to export to Excel.
- Merged in user submitted patch to fix issues with non-English Windows builds. Thanks jenta_.
- Added support for Maxmized window mode. Realigned the UI controls.

v0.1
- Support for all driver store operations (addition/deletion/enumeration)
- Supports force_deleting a package from the driver store.
- Supports installation (-i) of a package
- Supports selecting multiple items for deletion (batch deleting).
<value>This tool uses the excellent ObjectListView (http://objectlistview.sourceforge.net/).

Changelog:
v0.81
- Add "Select Old Drivers" functionality.

v0.8
- Improve PnpUtil result parsing logic for Russian language and error handling.

v0.7
- Group the drivers by Driver Class. Fix sorting.
- Show estimated disk usage for drivers.

v0.6
- Now requires .Net 4.0.
- A few UI tweaks and code cleanup.

v0.5
- Added support to export to Excel.
- Merged in user submitted patch to fix issues with non-English Windows builds. Thanks jenta_.
- Added support for Maxmized window mode. Realigned the UI controls.

v0.1
- Support for all driver store operations (addition/deletion/enumeration)
- Supports force_deleting a package from the driver store.
- Supports installation (-i) of a package
- Supports selecting multiple items for deletion (batch deleting).
- Doesn't use any undocumented API </value>
</data>
</root>
3 changes: 2 additions & 1 deletion Rapr/Core/DSEForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 31 additions & 4 deletions Rapr/Core/DSEForm.cs
Expand Up @@ -21,15 +21,42 @@ public partial class DSEForm : Form
public DSEForm()
{
InitializeComponent();
lstDriverStoreEntries.AlwaysGroupByColumn = this.driverClassColumn;
lstDriverStoreEntries.AlwaysGroupBySortOrder = SortOrder.Ascending;
lstDriverStoreEntries.PrimarySortColumn = this.driverInfColumn;

lstDriverStoreEntries.PrimarySortColumn = this.driverClassColumn;
lstDriverStoreEntries.PrimarySortOrder = SortOrder.Ascending;
lstDriverStoreEntries.SecondarySortColumn = this.driverVersionColumn;
lstDriverStoreEntries.SecondarySortColumn = this.driverDateColumn;
lstDriverStoreEntries.SecondarySortOrder = SortOrder.Descending;
lstDriverStoreEntries.CheckBoxes = isRunAsAdministrator;
driverSizeColumn.AspectToStringConverter = size => DriverStoreEntry.GetBytesReadable((long)size);

this.driverVersionColumn.GroupKeyGetter = delegate (object rowObject)
{
DriverStoreEntry driver = (DriverStoreEntry)rowObject;
return new Version(driver.DriverVersion.Major, driver.DriverVersion.Minor);
};

this.driverDateColumn.GroupKeyGetter = delegate (object rowObject)
{
DriverStoreEntry driver = (DriverStoreEntry)rowObject;
return new DateTime(driver.DriverDate.Year, driver.DriverDate.Month, 1);
};

this.driverDateColumn.GroupKeyToTitleConverter = delegate (object groupKey)
{
return ((DateTime)groupKey).ToString("yyyy-MM");
};

this.driverSizeColumn.GroupKeyGetter = delegate (object rowObject)
{
DriverStoreEntry driver = (DriverStoreEntry)rowObject;
return DriverStoreEntry.GetSizeRange(driver.DriverSize);
};

this.driverSizeColumn.GroupKeyToTitleConverter = delegate (object groupKey)
{
return DriverStoreEntry.GetSizeRangeName((long)groupKey);
};

AppContext.MainForm = this;
AppContext.EnableLogging();
driverStore = AppContext.GetDriverStoreHandler();
Expand Down
36 changes: 36 additions & 0 deletions Rapr/Core/PNPUtilLib/DriverStoreEntry.cs
Expand Up @@ -148,5 +148,41 @@ public static string GetBytesReadable(long i)
// Return formatted number with suffix
return readable.ToString("0 ") + suffix;
}

private static readonly Dictionary<long, string> SizeRangeToName = new Dictionary<long, string>
{
{ 10 * 1024, "0 - 10 KB" },
{ 100 * 1024, "10 - 100 KB" },
{ 1024 * 1024, "100 KB - 1 MB" },
{ 16 * 1024 * 1024, "1 - 16 MB" },
{ 128 * 1024 * 1024, "16 - 128 MB" },
{ long.MaxValue, "> 128 MB" },
};

public static long GetSizeRange(long size)
{
foreach (var item in SizeRangeToName)
{
if (size < item.Key)
{
return item.Key;
}
}

return -1;
}

public static string GetSizeRangeName(long size)
{
string name;
if (SizeRangeToName.TryGetValue(size, out name))
{
return name;
}
else
{
return string.Empty;
}
}
};
}
2 changes: 0 additions & 2 deletions RaprTests/Core/PNPUtilLib/PNPUtilTests.cs
@@ -1,9 +1,7 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Rapr.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rapr.Utils.Tests
{
Expand Down

0 comments on commit 2db39a7

Please sign in to comment.