Started work on the 'Folder Roots'. Added the skeleton of this feature to the ProfileManager form.

This commit is contained in:
Admin
2020-11-09 00:37:55 -06:00
parent f59076d38a
commit 5468c1ad97
6 changed files with 168 additions and 25 deletions
+2 -1
View File
@@ -1,2 +1,3 @@
DataOrganizer/obj/Debug/
DataOrganizer/bin/
DataOrganizer/bin/
packages/
Binary file not shown.
+54
View File
@@ -7,6 +7,7 @@ using System.IO;
using Microsoft.Data.Sqlite;
using System.Reflection;
using System.Windows.Forms;
using System.Configuration;
namespace DataOrganizer
{
@@ -48,6 +49,7 @@ namespace DataOrganizer
public List<Profile> GetProfiles()
{
var query = "SELECT * FROM profile";
var profiles = new List<Profile>();
using (var connection = new SqliteConnection(ConnectionString))
@@ -68,6 +70,29 @@ namespace DataOrganizer
RowId = Convert.ToInt32(reader["profile_id"])
});
}
reader.Close();
command.CommandText = "SELECT root_id, name FROM folder_root WHERE profile_id = @ID";
foreach(var profile in profiles)
{
command.Parameters.Clear();
command.Parameters.AddWithValue("ID", profile.RowId);
reader = command.ExecuteReader();
while(reader.Read())
{
profile.FolderGroups.Add(new FolderGroup
{
Name = reader["name"].ToString(),
rowId = Convert.ToInt32(reader["root_id"])
});
reader.Close();
}
}
}
}
@@ -77,6 +102,7 @@ namespace DataOrganizer
public bool UpdateProfile(Profile profile)
{
var query = @"UPDATE main.profile SET machine_name = @MachineName, default_new_content_folder_name = @DefaultPath, profile_name = @Name WHERE profile_id = @ID";
using (var connection = new SqliteConnection(ConnectionString))
{
using (var command = new SqliteCommand(query, connection))
@@ -98,6 +124,7 @@ namespace DataOrganizer
public bool InsertNewProfile(Profile profile)
{
var query = @"INSERT INTO main.profile (machine_name, default_new_content_folder_name, profile_name) VALUES (@MachineName, @DefaultPath, @Name)";
using (var connection = new SqliteConnection(ConnectionString))
{
using (var command = new SqliteCommand(query, connection))
@@ -115,12 +142,39 @@ namespace DataOrganizer
return true;
}
public bool InsertNewFolderGroup(Profile profile, string name)
{
var query = @"INSERT INTO main.folder_root (name, profile_id) VALUES (@Name, @ProfileID)";
using (var connection = new SqliteConnection(ConnectionString))
{
using (var command = new SqliteCommand(query, connection))
{
command.Parameters.AddWithValue("ProfileID", profile.RowId);
command.Parameters.AddWithValue("Name", name);
connection.Open();
command.ExecuteNonQuery();
}
}
return true;
}
public struct Profile
{
public string Name;
public string DefaultNewContentFolder;
public string MachineName;
public int RowId;
public List<FolderGroup> FolderGroups;
}
public struct FolderGroup
{
public int rowId;
public string Name;
}
}
}
+1 -2
View File
@@ -29,8 +29,7 @@ namespace DataOrganizer
private void FolderSelectButton_Click(object sender, EventArgs e)
{
var form = new ProfileManager();
form.ShowDialog();
}
}
}
+72 -22
View File
@@ -44,6 +44,10 @@
this.label2 = new System.Windows.Forms.Label();
this.NewContentLocationTextBox = new System.Windows.Forms.TextBox();
this.DeleteProfileButton = new System.Windows.Forms.Button();
this.label5 = new System.Windows.Forms.Label();
this.FolderGroupNameTextBox = new System.Windows.Forms.TextBox();
this.InsertGroupName = new System.Windows.Forms.Button();
this.FolderGroupsTreeView = new System.Windows.Forms.TreeView();
this.MainLayoutPanel.SuspendLayout();
this.MainPanel.SuspendLayout();
this.ProfileInfoPanel.SuspendLayout();
@@ -54,16 +58,15 @@
//
this.MainLayoutPanel.ColumnCount = 1;
this.MainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.MainLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.MainLayoutPanel.Controls.Add(this.MainPanel, 0, 0);
this.MainLayoutPanel.Controls.Add(this.ProfileInfoPanel, 0, 1);
this.MainLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.MainLayoutPanel.Location = new System.Drawing.Point(0, 0);
this.MainLayoutPanel.Name = "MainLayoutPanel";
this.MainLayoutPanel.RowCount = 2;
this.MainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
this.MainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 75F));
this.MainLayoutPanel.Size = new System.Drawing.Size(718, 383);
this.MainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 15F));
this.MainLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 85F));
this.MainLayoutPanel.Size = new System.Drawing.Size(627, 725);
this.MainLayoutPanel.TabIndex = 0;
//
// MainPanel
@@ -73,14 +76,14 @@
this.MainPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.MainPanel.Location = new System.Drawing.Point(3, 3);
this.MainPanel.Name = "MainPanel";
this.MainPanel.Size = new System.Drawing.Size(712, 89);
this.MainPanel.Size = new System.Drawing.Size(621, 102);
this.MainPanel.TabIndex = 0;
//
// ProfilesComboBox
//
this.ProfilesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.ProfilesComboBox.FormattingEnabled = true;
this.ProfilesComboBox.Location = new System.Drawing.Point(190, 24);
this.ProfilesComboBox.Location = new System.Drawing.Point(201, 24);
this.ProfilesComboBox.Name = "ProfilesComboBox";
this.ProfilesComboBox.Size = new System.Drawing.Size(311, 28);
this.ProfilesComboBox.TabIndex = 0;
@@ -98,13 +101,17 @@
//
this.ProfileInfoPanel.Controls.Add(this.ProfileInfoGroupBox);
this.ProfileInfoPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.ProfileInfoPanel.Location = new System.Drawing.Point(3, 98);
this.ProfileInfoPanel.Location = new System.Drawing.Point(3, 111);
this.ProfileInfoPanel.Name = "ProfileInfoPanel";
this.ProfileInfoPanel.Size = new System.Drawing.Size(712, 282);
this.ProfileInfoPanel.Size = new System.Drawing.Size(621, 611);
this.ProfileInfoPanel.TabIndex = 1;
//
// ProfileInfoGroupBox
//
this.ProfileInfoGroupBox.Controls.Add(this.FolderGroupsTreeView);
this.ProfileInfoGroupBox.Controls.Add(this.InsertGroupName);
this.ProfileInfoGroupBox.Controls.Add(this.FolderGroupNameTextBox);
this.ProfileInfoGroupBox.Controls.Add(this.label5);
this.ProfileInfoGroupBox.Controls.Add(this.DeleteProfileButton);
this.ProfileInfoGroupBox.Controls.Add(this.MachineNameTextBox);
this.ProfileInfoGroupBox.Controls.Add(this.label4);
@@ -118,14 +125,14 @@
this.ProfileInfoGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.ProfileInfoGroupBox.Location = new System.Drawing.Point(0, 0);
this.ProfileInfoGroupBox.Name = "ProfileInfoGroupBox";
this.ProfileInfoGroupBox.Size = new System.Drawing.Size(712, 282);
this.ProfileInfoGroupBox.Size = new System.Drawing.Size(621, 611);
this.ProfileInfoGroupBox.TabIndex = 0;
this.ProfileInfoGroupBox.TabStop = false;
this.ProfileInfoGroupBox.Text = "Profile Information";
//
// MachineNameTextBox
//
this.MachineNameTextBox.Location = new System.Drawing.Point(190, 127);
this.MachineNameTextBox.Location = new System.Drawing.Point(201, 253);
this.MachineNameTextBox.Name = "MachineNameTextBox";
this.MachineNameTextBox.Size = new System.Drawing.Size(311, 26);
this.MachineNameTextBox.TabIndex = 4;
@@ -133,7 +140,7 @@
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(17, 130);
this.label4.Location = new System.Drawing.Point(19, 256);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(119, 20);
this.label4.TabIndex = 7;
@@ -141,7 +148,7 @@
//
// ProfileNameTextBox
//
this.ProfileNameTextBox.Location = new System.Drawing.Point(190, 41);
this.ProfileNameTextBox.Location = new System.Drawing.Point(201, 51);
this.ProfileNameTextBox.Name = "ProfileNameTextBox";
this.ProfileNameTextBox.Size = new System.Drawing.Size(311, 26);
this.ProfileNameTextBox.TabIndex = 1;
@@ -149,7 +156,7 @@
// MachineNameLabel
//
this.MachineNameLabel.AutoSize = true;
this.MachineNameLabel.Location = new System.Drawing.Point(17, 178);
this.MachineNameLabel.Location = new System.Drawing.Point(17, 185);
this.MachineNameLabel.Name = "MachineNameLabel";
this.MachineNameLabel.Size = new System.Drawing.Size(472, 20);
this.MachineNameLabel.TabIndex = 5;
@@ -158,10 +165,10 @@
// AddOrUpdateProfileButton
//
this.AddOrUpdateProfileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.AddOrUpdateProfileButton.Location = new System.Drawing.Point(625, 233);
this.AddOrUpdateProfileButton.Location = new System.Drawing.Point(518, 562);
this.AddOrUpdateProfileButton.Name = "AddOrUpdateProfileButton";
this.AddOrUpdateProfileButton.Size = new System.Drawing.Size(81, 40);
this.AddOrUpdateProfileButton.TabIndex = 5;
this.AddOrUpdateProfileButton.Size = new System.Drawing.Size(86, 40);
this.AddOrUpdateProfileButton.TabIndex = 7;
this.AddOrUpdateProfileButton.Text = "button1";
this.AddOrUpdateProfileButton.UseVisualStyleBackColor = true;
this.AddOrUpdateProfileButton.Click += new System.EventHandler(this.AddOrUpdateProfileButton_Click);
@@ -169,7 +176,7 @@
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(17, 44);
this.label1.Location = new System.Drawing.Point(17, 57);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(103, 20);
this.label1.TabIndex = 0;
@@ -177,7 +184,7 @@
//
// SelectNewContentLocationButton
//
this.SelectNewContentLocationButton.Location = new System.Drawing.Point(507, 82);
this.SelectNewContentLocationButton.Location = new System.Drawing.Point(518, 113);
this.SelectNewContentLocationButton.Name = "SelectNewContentLocationButton";
this.SelectNewContentLocationButton.Size = new System.Drawing.Size(50, 30);
this.SelectNewContentLocationButton.TabIndex = 3;
@@ -187,7 +194,7 @@
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(17, 85);
this.label2.Location = new System.Drawing.Point(19, 119);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(170, 20);
this.label2.TabIndex = 2;
@@ -195,7 +202,7 @@
//
// NewContentLocationTextBox
//
this.NewContentLocationTextBox.Location = new System.Drawing.Point(190, 82);
this.NewContentLocationTextBox.Location = new System.Drawing.Point(201, 113);
this.NewContentLocationTextBox.Name = "NewContentLocationTextBox";
this.NewContentLocationTextBox.Size = new System.Drawing.Size(311, 26);
this.NewContentLocationTextBox.TabIndex = 2;
@@ -204,18 +211,57 @@
//
this.DeleteProfileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.DeleteProfileButton.Enabled = false;
this.DeleteProfileButton.Location = new System.Drawing.Point(9, 233);
this.DeleteProfileButton.Location = new System.Drawing.Point(9, 562);
this.DeleteProfileButton.Name = "DeleteProfileButton";
this.DeleteProfileButton.Size = new System.Drawing.Size(75, 40);
this.DeleteProfileButton.TabIndex = 8;
this.DeleteProfileButton.TabStop = false;
this.DeleteProfileButton.Text = "Delete";
this.DeleteProfileButton.UseVisualStyleBackColor = true;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(19, 308);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(153, 20);
this.label5.TabIndex = 9;
this.label5.Text = "Folder Group Name:";
//
// FolderGroupNameTextBox
//
this.FolderGroupNameTextBox.Location = new System.Drawing.Point(201, 305);
this.FolderGroupNameTextBox.Name = "FolderGroupNameTextBox";
this.FolderGroupNameTextBox.Size = new System.Drawing.Size(311, 26);
this.FolderGroupNameTextBox.TabIndex = 5;
//
// InsertGroupName
//
this.InsertGroupName.Location = new System.Drawing.Point(518, 299);
this.InsertGroupName.Name = "InsertGroupName";
this.InsertGroupName.Size = new System.Drawing.Size(86, 39);
this.InsertGroupName.TabIndex = 6;
this.InsertGroupName.Text = "Insert";
this.InsertGroupName.UseVisualStyleBackColor = true;
this.InsertGroupName.Click += new System.EventHandler(this.InsertGroupName_Click);
//
// FolderGroupsTreeView
//
this.FolderGroupsTreeView.FullRowSelect = true;
this.FolderGroupsTreeView.LabelEdit = true;
this.FolderGroupsTreeView.Location = new System.Drawing.Point(23, 349);
this.FolderGroupsTreeView.Name = "FolderGroupsTreeView";
this.FolderGroupsTreeView.ShowPlusMinus = false;
this.FolderGroupsTreeView.ShowRootLines = false;
this.FolderGroupsTreeView.Size = new System.Drawing.Size(489, 188);
this.FolderGroupsTreeView.TabIndex = 10;
this.FolderGroupsTreeView.TabStop = false;
//
// ProfileManager
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(718, 383);
this.ClientSize = new System.Drawing.Size(627, 725);
this.Controls.Add(this.MainLayoutPanel);
this.MaximizeBox = false;
this.Name = "ProfileManager";
@@ -248,5 +294,9 @@
private System.Windows.Forms.TextBox MachineNameTextBox;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button DeleteProfileButton;
private System.Windows.Forms.Button InsertGroupName;
private System.Windows.Forms.TextBox FolderGroupNameTextBox;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TreeView FolderGroupsTreeView;
}
}
+39
View File
@@ -14,19 +14,46 @@ namespace DataOrganizer
{
private string MachineNameLabelText { get; } = "The Machine Name property determines what\r\nprofile will be loaded automatically (Currently: '{0}').";
private bool IsUpdating { get; set; }
private ContextMenu FolderGroupListContextMenu { get; set; } = new ContextMenu();
public ProfileManager()
{
InitializeComponent();
var renameMenuItem = new MenuItem("Rename");
var deleteMenuItem = new MenuItem("Delete");
FolderGroupListContextMenu.MenuItems.Add(renameMenuItem);
FolderGroupListContextMenu.MenuItems.Add(deleteMenuItem);
ProfilesComboBox.SelectedIndexChanged += ProfilesComboBox_SelectedIndexChanged;
ProfileNameTextBox.TextChanged += ToggleAddOrUpdateButton;
NewContentLocationTextBox.TextChanged += ToggleAddOrUpdateButton;
MachineNameTextBox.TextChanged += MachineNameTextBox_TextChanged;
FolderGroupsTreeView.NodeMouseClick += FolderGroupsTreeView_NodeMouseClick;
renameMenuItem.Click += RenameMenuItem_Click;
deleteMenuItem.Click += DeleteMenuItem_Click;
UpdateProfileComboBox();
}
private void FolderGroupsTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
FolderGroupListContextMenu.Show(FolderGroupsTreeView, e.Location);
}
}
private void DeleteMenuItem_Click(object sender, EventArgs e)
{
throw new NotImplementedException();
}
private void RenameMenuItem_Click(object sender, EventArgs e)
{
throw new NotImplementedException();
}
private void MachineNameTextBox_TextChanged(object sender, EventArgs e)
{
if (MachineNameTextBox.Text.Length > 0)
@@ -122,5 +149,17 @@ namespace DataOrganizer
AddOrUpdateProfileButton.Text = "Update";
IsUpdating = true;
}
private void InsertGroupName_Click(object sender, EventArgs e)
{
if(!string.IsNullOrEmpty(FolderGroupNameTextBox.Text))
{
if (!FolderGroupsTreeView.Nodes.ContainsKey(FolderGroupNameTextBox.Text))
FolderGroupsTreeView.Nodes.Add(FolderGroupNameTextBox.Text);
}
FolderGroupNameTextBox.Text = string.Empty;
FolderGroupNameTextBox.Focus();
}
}
}