Blame | Last modification | View Log | RSS feed
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Dolinay; // Imported class for drive insertion event handling
namespace DriveLogger
{
public struct DriveEntry
{
/// <summary>
/// Struct for storing the info on each drive that is inserted
/// </summary>
public DateTime time;
public string status;
public string drive;
public string label;
public string owner;
public string size;
}
public partial class MainForm : Form
{
private static List<DriveEntry> driveList = new List<DriveEntry>();
public MainForm()
{
// Clears the list of DriveEntry structs
driveList.Clear();
InitializeComponent();
DriveDetector driveDetector = new DriveDetector();
driveDetector.DeviceArrived += new DriveDetectorEventHandler(driveDetector_DeviceArrived);
driveDetector.DeviceRemoved += new DriveDetectorEventHandler(driveDetector_DeviceRemoved);
this.KeyPreview = true;
this.KeyPress += new KeyPressEventHandler(MainForm_KeyPress);
// Adds columns to the listview in the form
//this.listView_Drives.Columns.Add("Event", 60, HorizontalAlignment.Center);
this.listView_Drives.Columns.Add("Time", 125, HorizontalAlignment.Center);
this.listView_Drives.Columns.Add("Drive", 40, HorizontalAlignment.Center);
this.listView_Drives.Columns.Add("Label", 109, HorizontalAlignment.Center);
this.listView_Drives.Columns.Add("Size", 60, HorizontalAlignment.Center);
//this.listView_Drives.Columns.Add("Owner", 95, HorizontalAlignment.Center);
paintDriveListbox();
}
void MainForm_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case '?':
AboutBox window = new AboutBox();
window.ShowDialog();
break;
}
}
private void paintDriveListbox()
{
this.listView_Drives.BeginUpdate();
this.listView_Drives.Items.Clear();
// Adds each entry from the driveList into the listView
foreach (DriveEntry entry in driveList)
{
ListViewItem item = new ListViewItem();
//item.Text = entry.status;
item.Text = entry.time.ToString();
//ListViewItem.ListViewSubItem subTime = new ListViewItem.ListViewSubItem();
//subTime.Text = entry.time.ToString();
//item.SubItems.Add(subTime);
ListViewItem.ListViewSubItem subDrive = new ListViewItem.ListViewSubItem();
subDrive.Text = entry.drive;
item.SubItems.Add(subDrive);
ListViewItem.ListViewSubItem subLabel = new ListViewItem.ListViewSubItem();
subLabel.Text = entry.label;
item.SubItems.Add(subLabel);
ListViewItem.ListViewSubItem subSize = new ListViewItem.ListViewSubItem();
subSize.Text = entry.size;
item.SubItems.Add(subSize);
ListViewItem.ListViewSubItem subOwner = new ListViewItem.ListViewSubItem();
subOwner.Text = entry.owner;
item.SubItems.Add(subOwner);
this.listView_Drives.Items.Add(item);
}
this.listView_Drives.EndUpdate();
}
void driveDetector_DeviceArrived(object sender, DriveDetectorEventArgs e)
{
e.HookQueryRemove = true;
DriveEntry newEntry = new DriveEntry();
newEntry.status = "Inserted";
newEntry.time = DateTime.Now;
newEntry.drive = e.Drive;
DriveInfo tempDrive = null;
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo drive in allDrives)
{
if (drive.IsReady)
{
if (drive.Name == newEntry.drive)
{
tempDrive = drive;
break;
}
}
}
newEntry.label = tempDrive.VolumeLabel;
newEntry.size = (tempDrive.TotalSize / 1073741824).ToString() + " GB";
newEntry.owner = "";
driveList.Add(newEntry);
paintDriveListbox();
}
void driveDetector_DeviceRemoved(object sender, DriveDetectorEventArgs e)
{
DriveEntry entryToRemove = new DriveEntry();
foreach (DriveEntry entry in driveList)
{
if (e.Drive == entry.drive)
{
entryToRemove = entry;
break;
}
}
driveList.Remove(entryToRemove);
paintDriveListbox();
}
}
}