Refactoring
This commit is contained in:
parent
88adda5e76
commit
d7123f6dc5
|
@ -0,0 +1,4 @@
|
|||
[*.cs]
|
||||
|
||||
# CS8618: Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||
dotnet_diagnostic.CS8618.severity = suggestion
|
Binary file not shown.
|
@ -10,7 +10,42 @@
|
|||
"ProjectGuid": "a2fe74e1-b743-11d0-ae1a-00a0c90fffc3",
|
||||
"DisplayName": "Miscellaneous Files",
|
||||
"ColorIndex": -1
|
||||
},
|
||||
"14ea4223-1f26-42b0-aa2b-2eea8c47543d": {
|
||||
"ProjectGuid": "14ea4223-1f26-42b0-aa2b-2eea8c47543d",
|
||||
"DisplayName": "doc",
|
||||
"ColorIndex": 1
|
||||
},
|
||||
"e95d303a-9855-4bc6-a25f-e1fc08a3381d": {
|
||||
"ProjectGuid": "e95d303a-9855-4bc6-a25f-e1fc08a3381d",
|
||||
"DisplayName": "Superlocal.Agile.Infrastructure",
|
||||
"ColorIndex": 2
|
||||
},
|
||||
"b36d8eae-3a2c-45cc-a4ca-85057ac7125e": {
|
||||
"ProjectGuid": "b36d8eae-3a2c-45cc-a4ca-85057ac7125e",
|
||||
"DisplayName": "Superlocal.Agile.Domain",
|
||||
"ColorIndex": 3
|
||||
},
|
||||
"6524ad6e-4a33-4051-a751-7d08b7ab0d9c": {
|
||||
"ProjectGuid": "6524ad6e-4a33-4051-a751-7d08b7ab0d9c",
|
||||
"DisplayName": "Superlocal.Agile.Tests",
|
||||
"ColorIndex": 4
|
||||
},
|
||||
"36915115-0c09-41fb-8b6f-ff786b88a2d1": {
|
||||
"ProjectGuid": "36915115-0c09-41fb-8b6f-ff786b88a2d1",
|
||||
"DisplayName": "Superlocal.Agile.WinApp",
|
||||
"ColorIndex": 5
|
||||
},
|
||||
"7ca284de-c6a3-484b-9605-066134ac571b": {
|
||||
"ProjectGuid": "7ca284de-c6a3-484b-9605-066134ac571b",
|
||||
"DisplayName": "Superlocal.Agile.Application",
|
||||
"ColorIndex": 6
|
||||
},
|
||||
"376bbf07-2e54-44d5-9b80-649b0798240e": {
|
||||
"ProjectGuid": "376bbf07-2e54-44d5-9b80-649b0798240e",
|
||||
"DisplayName": "Superlocal.Agile.Domain",
|
||||
"ColorIndex": 7
|
||||
}
|
||||
},
|
||||
"NextColorIndex": 1
|
||||
"NextColorIndex": 8
|
||||
}
|
Binary file not shown.
Binary file not shown.
10
README.md
10
README.md
|
@ -2,4 +2,12 @@
|
|||
|
||||
Helper for devs on an agile team.
|
||||
|
||||
## Test
|
||||
## Features
|
||||
|
||||
- Integration with
|
||||
- Redmine
|
||||
- Gitlab
|
||||
|
||||
### Windows only
|
||||
|
||||
- Tracks your time in different apps and let you sync with project management tools
|
|
@ -1,333 +0,0 @@
|
|||
namespace Superlocal.Agile.WinApp
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.treeView1 = new System.Windows.Forms.TreeView();
|
||||
this.listBox2 = new System.Windows.Forms.ListBox();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.materialCheckbox1 = new MaterialSkin.Controls.MaterialCheckbox();
|
||||
this.materialCheckbox2 = new MaterialSkin.Controls.MaterialCheckbox();
|
||||
this.materialCheckbox3 = new MaterialSkin.Controls.MaterialCheckbox();
|
||||
this.materialCheckbox4 = new MaterialSkin.Controls.MaterialCheckbox();
|
||||
this.materialDrawer1 = new MaterialSkin.Controls.MaterialDrawer();
|
||||
this.materialTabControl1 = new MaterialSkin.Controls.MaterialTabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.materialCard1 = new MaterialSkin.Controls.MaterialCard();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.materialExpansionPanel1 = new MaterialSkin.Controls.MaterialExpansionPanel();
|
||||
this.materialLabel1 = new MaterialSkin.Controls.MaterialLabel();
|
||||
this.materialCheckedListBox1 = new MaterialSkin.Controls.MaterialCheckedListBox();
|
||||
this.materialDivider1 = new MaterialSkin.Controls.MaterialDivider();
|
||||
this.materialTextBox1 = new MaterialSkin.Controls.MaterialTextBox();
|
||||
this.materialTabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.tabPage2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(1056, 76);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 1;
|
||||
this.button1.Text = "button1";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// treeView1
|
||||
//
|
||||
this.treeView1.Location = new System.Drawing.Point(12, 106);
|
||||
this.treeView1.Name = "treeView1";
|
||||
this.treeView1.Size = new System.Drawing.Size(1119, 603);
|
||||
this.treeView1.TabIndex = 2;
|
||||
//
|
||||
// listBox2
|
||||
//
|
||||
this.listBox2.FormattingEnabled = true;
|
||||
this.listBox2.ItemHeight = 15;
|
||||
this.listBox2.Location = new System.Drawing.Point(12, 715);
|
||||
this.listBox2.Name = "listBox2";
|
||||
this.listBox2.Size = new System.Drawing.Size(1119, 64);
|
||||
this.listBox2.TabIndex = 3;
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Location = new System.Drawing.Point(12, 77);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(521, 23);
|
||||
this.textBox1.TabIndex = 4;
|
||||
//
|
||||
// materialCheckbox1
|
||||
//
|
||||
this.materialCheckbox1.AutoSize = true;
|
||||
this.materialCheckbox1.Depth = 0;
|
||||
this.materialCheckbox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.materialCheckbox1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.materialCheckbox1.MouseLocation = new System.Drawing.Point(-1, -1);
|
||||
this.materialCheckbox1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCheckbox1.Name = "materialCheckbox1";
|
||||
this.materialCheckbox1.ReadOnly = false;
|
||||
this.materialCheckbox1.Ripple = true;
|
||||
this.materialCheckbox1.Size = new System.Drawing.Size(10, 10);
|
||||
this.materialCheckbox1.TabIndex = 0;
|
||||
this.materialCheckbox1.Text = "materialCheckbox1";
|
||||
this.materialCheckbox1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialCheckbox2
|
||||
//
|
||||
this.materialCheckbox2.AutoSize = true;
|
||||
this.materialCheckbox2.Depth = 0;
|
||||
this.materialCheckbox2.Location = new System.Drawing.Point(0, 0);
|
||||
this.materialCheckbox2.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.materialCheckbox2.MouseLocation = new System.Drawing.Point(-1, -1);
|
||||
this.materialCheckbox2.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCheckbox2.Name = "materialCheckbox2";
|
||||
this.materialCheckbox2.ReadOnly = false;
|
||||
this.materialCheckbox2.Ripple = true;
|
||||
this.materialCheckbox2.Size = new System.Drawing.Size(10, 10);
|
||||
this.materialCheckbox2.TabIndex = 0;
|
||||
this.materialCheckbox2.Text = "materialCheckbox2";
|
||||
this.materialCheckbox2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialCheckbox3
|
||||
//
|
||||
this.materialCheckbox3.AutoSize = true;
|
||||
this.materialCheckbox3.Depth = 0;
|
||||
this.materialCheckbox3.Location = new System.Drawing.Point(0, 0);
|
||||
this.materialCheckbox3.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.materialCheckbox3.MouseLocation = new System.Drawing.Point(-1, -1);
|
||||
this.materialCheckbox3.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCheckbox3.Name = "materialCheckbox3";
|
||||
this.materialCheckbox3.ReadOnly = false;
|
||||
this.materialCheckbox3.Ripple = true;
|
||||
this.materialCheckbox3.Size = new System.Drawing.Size(10, 10);
|
||||
this.materialCheckbox3.TabIndex = 0;
|
||||
this.materialCheckbox3.Text = "materialCheckbox3";
|
||||
this.materialCheckbox3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialCheckbox4
|
||||
//
|
||||
this.materialCheckbox4.AutoSize = true;
|
||||
this.materialCheckbox4.Depth = 0;
|
||||
this.materialCheckbox4.Location = new System.Drawing.Point(0, 0);
|
||||
this.materialCheckbox4.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.materialCheckbox4.MouseLocation = new System.Drawing.Point(-1, -1);
|
||||
this.materialCheckbox4.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCheckbox4.Name = "materialCheckbox4";
|
||||
this.materialCheckbox4.ReadOnly = false;
|
||||
this.materialCheckbox4.Ripple = true;
|
||||
this.materialCheckbox4.Size = new System.Drawing.Size(10, 10);
|
||||
this.materialCheckbox4.TabIndex = 0;
|
||||
this.materialCheckbox4.Text = "materialCheckbox4";
|
||||
this.materialCheckbox4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialDrawer1
|
||||
//
|
||||
this.materialDrawer1.AutoHide = false;
|
||||
this.materialDrawer1.AutoShow = false;
|
||||
this.materialDrawer1.BackgroundWithAccent = false;
|
||||
this.materialDrawer1.BaseTabControl = null;
|
||||
this.materialDrawer1.Depth = 0;
|
||||
this.materialDrawer1.HighlightWithAccent = true;
|
||||
this.materialDrawer1.IndicatorWidth = 0;
|
||||
this.materialDrawer1.IsOpen = false;
|
||||
this.materialDrawer1.Location = new System.Drawing.Point(-103, 20);
|
||||
this.materialDrawer1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialDrawer1.Name = "materialDrawer1";
|
||||
this.materialDrawer1.ShowIconsWhenHidden = false;
|
||||
this.materialDrawer1.Size = new System.Drawing.Size(103, 548);
|
||||
this.materialDrawer1.TabIndex = 6;
|
||||
this.materialDrawer1.Text = "materialDrawer1";
|
||||
this.materialDrawer1.UseColors = false;
|
||||
//
|
||||
// materialTabControl1
|
||||
//
|
||||
this.materialTabControl1.Controls.Add(this.tabPage1);
|
||||
this.materialTabControl1.Controls.Add(this.tabPage2);
|
||||
this.materialTabControl1.Depth = 0;
|
||||
this.materialTabControl1.Location = new System.Drawing.Point(321, 154);
|
||||
this.materialTabControl1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialTabControl1.Multiline = true;
|
||||
this.materialTabControl1.Name = "materialTabControl1";
|
||||
this.materialTabControl1.SelectedIndex = 0;
|
||||
this.materialTabControl1.Size = new System.Drawing.Size(517, 310);
|
||||
this.materialTabControl1.TabIndex = 7;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Controls.Add(this.materialCard1);
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 24);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage1.Size = new System.Drawing.Size(509, 282);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialCard1
|
||||
//
|
||||
this.materialCard1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
|
||||
this.materialCard1.Depth = 0;
|
||||
this.materialCard1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.materialCard1.Location = new System.Drawing.Point(21, 33);
|
||||
this.materialCard1.Margin = new System.Windows.Forms.Padding(14);
|
||||
this.materialCard1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCard1.Name = "materialCard1";
|
||||
this.materialCard1.Padding = new System.Windows.Forms.Padding(14);
|
||||
this.materialCard1.Size = new System.Drawing.Size(200, 100);
|
||||
this.materialCard1.TabIndex = 0;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Controls.Add(this.materialExpansionPanel1);
|
||||
this.tabPage2.Controls.Add(this.materialLabel1);
|
||||
this.tabPage2.Controls.Add(this.materialCheckedListBox1);
|
||||
this.tabPage2.Controls.Add(this.materialDivider1);
|
||||
this.tabPage2.Controls.Add(this.materialTextBox1);
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 24);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(509, 282);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialExpansionPanel1
|
||||
//
|
||||
this.materialExpansionPanel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
|
||||
this.materialExpansionPanel1.Depth = 0;
|
||||
this.materialExpansionPanel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
|
||||
this.materialExpansionPanel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.materialExpansionPanel1.Location = new System.Drawing.Point(50, 154);
|
||||
this.materialExpansionPanel1.Margin = new System.Windows.Forms.Padding(3, 16, 3, 16);
|
||||
this.materialExpansionPanel1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialExpansionPanel1.Name = "materialExpansionPanel1";
|
||||
this.materialExpansionPanel1.Padding = new System.Windows.Forms.Padding(24, 64, 24, 16);
|
||||
this.materialExpansionPanel1.Size = new System.Drawing.Size(480, 240);
|
||||
this.materialExpansionPanel1.TabIndex = 4;
|
||||
//
|
||||
// materialLabel1
|
||||
//
|
||||
this.materialLabel1.AutoSize = true;
|
||||
this.materialLabel1.Depth = 0;
|
||||
this.materialLabel1.Font = new System.Drawing.Font("Roboto", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
|
||||
this.materialLabel1.Location = new System.Drawing.Point(335, 23);
|
||||
this.materialLabel1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialLabel1.Name = "materialLabel1";
|
||||
this.materialLabel1.Size = new System.Drawing.Size(107, 19);
|
||||
this.materialLabel1.TabIndex = 3;
|
||||
this.materialLabel1.Text = "materialLabel1";
|
||||
//
|
||||
// materialCheckedListBox1
|
||||
//
|
||||
this.materialCheckedListBox1.AutoScroll = true;
|
||||
this.materialCheckedListBox1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.materialCheckedListBox1.Depth = 0;
|
||||
this.materialCheckedListBox1.Location = new System.Drawing.Point(70, 41);
|
||||
this.materialCheckedListBox1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCheckedListBox1.Name = "materialCheckedListBox1";
|
||||
this.materialCheckedListBox1.Size = new System.Drawing.Size(200, 100);
|
||||
this.materialCheckedListBox1.Striped = false;
|
||||
this.materialCheckedListBox1.StripeDarkColor = System.Drawing.Color.Empty;
|
||||
this.materialCheckedListBox1.TabIndex = 2;
|
||||
//
|
||||
// materialDivider1
|
||||
//
|
||||
this.materialDivider1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.materialDivider1.Depth = 0;
|
||||
this.materialDivider1.Location = new System.Drawing.Point(413, 99);
|
||||
this.materialDivider1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialDivider1.Name = "materialDivider1";
|
||||
this.materialDivider1.Size = new System.Drawing.Size(75, 23);
|
||||
this.materialDivider1.TabIndex = 1;
|
||||
this.materialDivider1.Text = "materialDivider1";
|
||||
//
|
||||
// materialTextBox1
|
||||
//
|
||||
this.materialTextBox1.AnimateReadOnly = false;
|
||||
this.materialTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.materialTextBox1.Depth = 0;
|
||||
this.materialTextBox1.Font = new System.Drawing.Font("Roboto", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
|
||||
this.materialTextBox1.LeadingIcon = null;
|
||||
this.materialTextBox1.Location = new System.Drawing.Point(303, 99);
|
||||
this.materialTextBox1.MaxLength = 50;
|
||||
this.materialTextBox1.MouseState = MaterialSkin.MouseState.OUT;
|
||||
this.materialTextBox1.Multiline = false;
|
||||
this.materialTextBox1.Name = "materialTextBox1";
|
||||
this.materialTextBox1.Size = new System.Drawing.Size(100, 50);
|
||||
this.materialTextBox1.TabIndex = 0;
|
||||
this.materialTextBox1.Text = "";
|
||||
this.materialTextBox1.TrailingIcon = null;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1162, 794);
|
||||
this.Controls.Add(this.materialTabControl1);
|
||||
this.Controls.Add(this.materialDrawer1);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.listBox2);
|
||||
this.Controls.Add(this.treeView1);
|
||||
this.Controls.Add(this.button1);
|
||||
this.DrawerIsOpen = true;
|
||||
this.DrawerTabControl = this.materialTabControl1;
|
||||
this.Name = "Form1";
|
||||
this.Text = "Form1";
|
||||
this.materialTabControl1.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.tabPage2.ResumeLayout(false);
|
||||
this.tabPage2.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private Button button1;
|
||||
private TreeView treeView1;
|
||||
private ListBox listBox2;
|
||||
private TextBox textBox1;
|
||||
private MaterialSkin.Controls.MaterialCheckbox materialCheckbox1;
|
||||
private MaterialSkin.Controls.MaterialCheckbox materialCheckbox2;
|
||||
private MaterialSkin.Controls.MaterialCheckbox materialCheckbox3;
|
||||
private MaterialSkin.Controls.MaterialCheckbox materialCheckbox4;
|
||||
private MaterialSkin.Controls.MaterialDrawer materialDrawer1;
|
||||
private MaterialSkin.Controls.MaterialTabControl materialTabControl1;
|
||||
private TabPage tabPage1;
|
||||
private MaterialSkin.Controls.MaterialCard materialCard1;
|
||||
private TabPage tabPage2;
|
||||
private MaterialSkin.Controls.MaterialExpansionPanel materialExpansionPanel1;
|
||||
private MaterialSkin.Controls.MaterialLabel materialLabel1;
|
||||
private MaterialSkin.Controls.MaterialCheckedListBox materialCheckedListBox1;
|
||||
private MaterialSkin.Controls.MaterialDivider materialDivider1;
|
||||
private MaterialSkin.Controls.MaterialTextBox materialTextBox1;
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
namespace Superlocal.Agile.WinApp
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
ApplicationConfiguration.Initialize();
|
||||
Application.Run(new Form1());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net6.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MaterialSkin.2" Version="2.3.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="PInvoke.User32" Version="0.7.104" />
|
||||
<PackageReference Include="PInvoke.Windows.Core" Version="0.7.104" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Controls\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -1,12 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
<ItemGroup>
|
||||
<Compile Update="DebugControl.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Update="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,89 +0,0 @@
|
|||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"D:\\fch\\dev\\code\\superlocal\\Superlocal.Agile\\Superlocal.Agile.WinApp\\Superlocal.Agile.WinApp.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"D:\\fch\\dev\\code\\superlocal\\Superlocal.Agile\\Superlocal.Agile.WinApp\\Superlocal.Agile.WinApp.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "D:\\fch\\dev\\code\\superlocal\\Superlocal.Agile\\Superlocal.Agile.WinApp\\Superlocal.Agile.WinApp.csproj",
|
||||
"projectName": "Superlocal.Agile.WinApp",
|
||||
"projectPath": "D:\\fch\\dev\\code\\superlocal\\Superlocal.Agile\\Superlocal.Agile.WinApp\\Superlocal.Agile.WinApp.csproj",
|
||||
"packagesPath": "C:\\Users\\fch\\.nuget\\packages\\",
|
||||
"outputPath": "D:\\fch\\dev\\code\\superlocal\\Superlocal.Agile\\Superlocal.Agile.WinApp\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages",
|
||||
"C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet\\"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\fch\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net6.0-windows7.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0-windows7.0": {
|
||||
"targetAlias": "net6.0-windows",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0-windows7.0": {
|
||||
"targetAlias": "net6.0-windows",
|
||||
"dependencies": {
|
||||
"MaterialSkin.2": {
|
||||
"target": "Package",
|
||||
"version": "[2.3.1, )"
|
||||
},
|
||||
"Newtonsoft.Json": {
|
||||
"target": "Package",
|
||||
"version": "[13.0.1, )"
|
||||
},
|
||||
"PInvoke.User32": {
|
||||
"target": "Package",
|
||||
"version": "[0.7.104, )"
|
||||
},
|
||||
"PInvoke.Windows.Core": {
|
||||
"target": "Package",
|
||||
"version": "[0.7.104, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
},
|
||||
"Microsoft.WindowsDesktop.App.WindowsForms": {
|
||||
"privateAssets": "none"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.100\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\fch\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages;C:\Program Files (x86)\Microsoft\Xamarin\NuGet\</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.0.1</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="C:\Users\fch\.nuget\packages\" />
|
||||
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
|
||||
<SourceRoot Include="C:\Program Files (x86)\Microsoft\Xamarin\NuGet\" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<PkgValidation Condition=" '$(PkgValidation)' == '' ">C:\Users\fch\.nuget\packages\validation\2.4.15</PkgValidation>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -1,2 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
|
@ -1,414 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net6.0-windows7.0": {
|
||||
"MaterialSkin.2/2.3.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net5.0-windows7.0/MaterialSkin.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0-windows7.0/MaterialSkin.dll": {}
|
||||
},
|
||||
"frameworkReferences": [
|
||||
"Microsoft.WindowsDesktop.App.WindowsForms"
|
||||
]
|
||||
},
|
||||
"Newtonsoft.Json/13.0.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {}
|
||||
}
|
||||
},
|
||||
"PInvoke.Kernel32/0.7.104": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"PInvoke.Windows.Core": "0.7.104",
|
||||
"System.Threading.Tasks.Extensions": "4.5.4"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/PInvoke.Kernel32.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/PInvoke.Kernel32.dll": {}
|
||||
}
|
||||
},
|
||||
"PInvoke.User32/0.7.104": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"PInvoke.Kernel32": "0.7.104",
|
||||
"PInvoke.Windows.Core": "0.7.104",
|
||||
"PInvoke.Windows.ShellScalingApi": "0.7.104",
|
||||
"Validation": "2.4.15"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/PInvoke.User32.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/PInvoke.User32.dll": {}
|
||||
}
|
||||
},
|
||||
"PInvoke.Windows.Core/0.7.104": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.4"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/PInvoke.Windows.Core.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/PInvoke.Windows.Core.dll": {}
|
||||
}
|
||||
},
|
||||
"PInvoke.Windows.ShellScalingApi/0.7.104": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"PInvoke.Windows.Core": "0.7.104"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/PInvoke.Windows.ShellScalingApi.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/PInvoke.Windows.ShellScalingApi.dll": {}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.4": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.1/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.1/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Threading.Tasks.Extensions/4.5.4": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.1/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.1/_._": {}
|
||||
}
|
||||
},
|
||||
"Validation/2.4.15": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard1.3/Validation.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard1.3/Validation.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"MaterialSkin.2/2.3.1": {
|
||||
"sha512": "w2vFxLNk4InCDU7pXDfBqPfv55HhBtuu8HRfEqQpeS3sNTS1pUzDs/hS0b5JW2/tKvt+P1of9OINP8a9omWDBg==",
|
||||
"type": "package",
|
||||
"path": "materialskin.2/2.3.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"README.md",
|
||||
"lib/net45/MaterialSkin.dll",
|
||||
"lib/net461/MaterialSkin.dll",
|
||||
"lib/net48/MaterialSkin.dll",
|
||||
"lib/net5.0-windows7.0/MaterialSkin.dll",
|
||||
"materialskin.2.2.3.1.nupkg.sha512",
|
||||
"materialskin.2.nuspec",
|
||||
"nugetIcon.png"
|
||||
]
|
||||
},
|
||||
"Newtonsoft.Json/13.0.1": {
|
||||
"sha512": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
||||
"type": "package",
|
||||
"path": "newtonsoft.json/13.0.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.md",
|
||||
"lib/net20/Newtonsoft.Json.dll",
|
||||
"lib/net20/Newtonsoft.Json.xml",
|
||||
"lib/net35/Newtonsoft.Json.dll",
|
||||
"lib/net35/Newtonsoft.Json.xml",
|
||||
"lib/net40/Newtonsoft.Json.dll",
|
||||
"lib/net40/Newtonsoft.Json.xml",
|
||||
"lib/net45/Newtonsoft.Json.dll",
|
||||
"lib/net45/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.xml",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.xml",
|
||||
"newtonsoft.json.13.0.1.nupkg.sha512",
|
||||
"newtonsoft.json.nuspec",
|
||||
"packageIcon.png"
|
||||
]
|
||||
},
|
||||
"PInvoke.Kernel32/0.7.104": {
|
||||
"sha512": "xU9Wp22ej6NcVg4Uqelnhz27X6HdHaroAPOk5IsG8nTi82zHOznTOW2KIYCdpAGf67rHpQW6UtmjrG+5HPlnvA==",
|
||||
"type": "package",
|
||||
"path": "pinvoke.kernel32/0.7.104",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net45/PInvoke.Kernel32.dll",
|
||||
"lib/net45/PInvoke.Kernel32.xml",
|
||||
"lib/net46/PInvoke.Kernel32.dll",
|
||||
"lib/net46/PInvoke.Kernel32.xml",
|
||||
"lib/netstandard2.0/PInvoke.Kernel32.dll",
|
||||
"lib/netstandard2.0/PInvoke.Kernel32.xml",
|
||||
"lib/uap10.0.16299/PInvoke.Kernel32.dll",
|
||||
"lib/uap10.0.16299/PInvoke.Kernel32.pri",
|
||||
"lib/uap10.0.16299/PInvoke.Kernel32.xml",
|
||||
"pinvoke.kernel32.0.7.104.nupkg.sha512",
|
||||
"pinvoke.kernel32.nuspec"
|
||||
]
|
||||
},
|
||||
"PInvoke.User32/0.7.104": {
|
||||
"sha512": "MPJICVOtkCCuLY0hbu7tgBFE3S3WHVrym5ZF2NjGAMluhKdkWFSIOi+wadnMwX2PI7nhCQ4bPK/REKZtfYdgaQ==",
|
||||
"type": "package",
|
||||
"path": "pinvoke.user32/0.7.104",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net45/PInvoke.User32.dll",
|
||||
"lib/net45/PInvoke.User32.xml",
|
||||
"lib/netstandard2.0/PInvoke.User32.dll",
|
||||
"lib/netstandard2.0/PInvoke.User32.xml",
|
||||
"lib/uap10.0.16299/PInvoke.User32.dll",
|
||||
"lib/uap10.0.16299/PInvoke.User32.pri",
|
||||
"lib/uap10.0.16299/PInvoke.User32.xml",
|
||||
"pinvoke.user32.0.7.104.nupkg.sha512",
|
||||
"pinvoke.user32.nuspec"
|
||||
]
|
||||
},
|
||||
"PInvoke.Windows.Core/0.7.104": {
|
||||
"sha512": "WI8ht+k0nk7YmeWD6OewGI+TzRdgtJSaO+e+PMPeYSBVwU9jl4ZlelizZNz271ZY4k4J8lk+mTWg5bo+I71mTA==",
|
||||
"type": "package",
|
||||
"path": "pinvoke.windows.core/0.7.104",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net45/PInvoke.Windows.Core.dll",
|
||||
"lib/net45/PInvoke.Windows.Core.xml",
|
||||
"lib/netstandard2.0/PInvoke.Windows.Core.dll",
|
||||
"lib/netstandard2.0/PInvoke.Windows.Core.xml",
|
||||
"lib/uap10.0.16299/PInvoke.Windows.Core.dll",
|
||||
"lib/uap10.0.16299/PInvoke.Windows.Core.pri",
|
||||
"lib/uap10.0.16299/PInvoke.Windows.Core.xml",
|
||||
"pinvoke.windows.core.0.7.104.nupkg.sha512",
|
||||
"pinvoke.windows.core.nuspec"
|
||||
]
|
||||
},
|
||||
"PInvoke.Windows.ShellScalingApi/0.7.104": {
|
||||
"sha512": "rgCP4i9U6oEHlBY1uOGEuw+aaS5U9zfNMs1Vj6dlgCgW5Rq1fazENQuAvf6GCHSAl4Cann4A90z+fCcXbwLqtg==",
|
||||
"type": "package",
|
||||
"path": "pinvoke.windows.shellscalingapi/0.7.104",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net45/PInvoke.Windows.ShellScalingApi.dll",
|
||||
"lib/net45/PInvoke.Windows.ShellScalingApi.xml",
|
||||
"lib/netstandard2.0/PInvoke.Windows.ShellScalingApi.dll",
|
||||
"lib/netstandard2.0/PInvoke.Windows.ShellScalingApi.xml",
|
||||
"lib/uap10.0.16299/PInvoke.Windows.ShellScalingApi.dll",
|
||||
"lib/uap10.0.16299/PInvoke.Windows.ShellScalingApi.pri",
|
||||
"lib/uap10.0.16299/PInvoke.Windows.ShellScalingApi.xml",
|
||||
"pinvoke.windows.shellscalingapi.0.7.104.nupkg.sha512",
|
||||
"pinvoke.windows.shellscalingapi.nuspec"
|
||||
]
|
||||
},
|
||||
"System.Memory/4.5.4": {
|
||||
"sha512": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
|
||||
"type": "package",
|
||||
"path": "system.memory/4.5.4",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net461/System.Memory.dll",
|
||||
"lib/net461/System.Memory.xml",
|
||||
"lib/netcoreapp2.1/_._",
|
||||
"lib/netstandard1.1/System.Memory.dll",
|
||||
"lib/netstandard1.1/System.Memory.xml",
|
||||
"lib/netstandard2.0/System.Memory.dll",
|
||||
"lib/netstandard2.0/System.Memory.xml",
|
||||
"ref/netcoreapp2.1/_._",
|
||||
"system.memory.4.5.4.nupkg.sha512",
|
||||
"system.memory.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"System.Threading.Tasks.Extensions/4.5.4": {
|
||||
"sha512": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
|
||||
"type": "package",
|
||||
"path": "system.threading.tasks.extensions/4.5.4",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/MonoAndroid10/_._",
|
||||
"lib/MonoTouch10/_._",
|
||||
"lib/net461/System.Threading.Tasks.Extensions.dll",
|
||||
"lib/net461/System.Threading.Tasks.Extensions.xml",
|
||||
"lib/netcoreapp2.1/_._",
|
||||
"lib/netstandard1.0/System.Threading.Tasks.Extensions.dll",
|
||||
"lib/netstandard1.0/System.Threading.Tasks.Extensions.xml",
|
||||
"lib/netstandard2.0/System.Threading.Tasks.Extensions.dll",
|
||||
"lib/netstandard2.0/System.Threading.Tasks.Extensions.xml",
|
||||
"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll",
|
||||
"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml",
|
||||
"lib/xamarinios10/_._",
|
||||
"lib/xamarinmac20/_._",
|
||||
"lib/xamarintvos10/_._",
|
||||
"lib/xamarinwatchos10/_._",
|
||||
"ref/MonoAndroid10/_._",
|
||||
"ref/MonoTouch10/_._",
|
||||
"ref/netcoreapp2.1/_._",
|
||||
"ref/xamarinios10/_._",
|
||||
"ref/xamarinmac20/_._",
|
||||
"ref/xamarintvos10/_._",
|
||||
"ref/xamarinwatchos10/_._",
|
||||
"system.threading.tasks.extensions.4.5.4.nupkg.sha512",
|
||||
"system.threading.tasks.extensions.nuspec",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"Validation/2.4.15": {
|
||||
"sha512": "KQFOtJKKhaXzuSiZhkFaFzQEdYsA+EN/XqKZDYwsGDOrS0Nxu6qzCvNTsDF4xtkiZbBA6u7I59QnsuP2O2fZgg==",
|
||||
"type": "package",
|
||||
"path": "validation/2.4.15",
|
||||
"hasTools": true,
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"README.md",
|
||||
"lib/net20/Validation.dll",
|
||||
"lib/net20/Validation.xml",
|
||||
"lib/net40/Validation.dll",
|
||||
"lib/net40/Validation.xml",
|
||||
"lib/net45/Validation.dll",
|
||||
"lib/net45/Validation.xml",
|
||||
"lib/netstandard1.0/Validation.dll",
|
||||
"lib/netstandard1.0/Validation.xml",
|
||||
"lib/netstandard1.3/Validation.dll",
|
||||
"lib/netstandard1.3/Validation.xml",
|
||||
"lib/portable-net40+sl5+win8+wp8+wpa81/Validation.dll",
|
||||
"lib/portable-net40+sl5+win8+wp8+wpa81/Validation.xml",
|
||||
"lib/portable-net45+win8+wp8+wpa81/Validation.dll",
|
||||
"lib/portable-net45+win8+wp8+wpa81/Validation.xml",
|
||||
"tools/2013/RequiresNotNull.snippet",
|
||||
"tools/2013/RequiresNotNullOrEmpty.snippet",
|
||||
"tools/2015/RequiresNotNull.snippet",
|
||||
"tools/2015/RequiresNotNullOrEmpty.snippet",
|
||||
"tools/install_snippets.cmd",
|
||||
"tools/uninstall_snippets.cmd",
|
||||
"validation.2.4.15.nupkg.sha512",
|
||||
"validation.nuspec"
|
||||
]
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net6.0-windows7.0": [
|
||||
"MaterialSkin.2 >= 2.3.1",
|
||||
"Newtonsoft.Json >= 13.0.1",
|
||||
"PInvoke.User32 >= 0.7.104",
|
||||
"PInvoke.Windows.Core >= 0.7.104"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"C:\\Users\\fch\\.nuget\\packages\\": {},
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {},
|
||||
"C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet\\": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "D:\\fch\\dev\\code\\superlocal\\Superlocal.Agile\\Superlocal.Agile.WinApp\\Superlocal.Agile.WinApp.csproj",
|
||||
"projectName": "Superlocal.Agile.WinApp",
|
||||
"projectPath": "D:\\fch\\dev\\code\\superlocal\\Superlocal.Agile\\Superlocal.Agile.WinApp\\Superlocal.Agile.WinApp.csproj",
|
||||
"packagesPath": "C:\\Users\\fch\\.nuget\\packages\\",
|
||||
"outputPath": "D:\\fch\\dev\\code\\superlocal\\Superlocal.Agile\\Superlocal.Agile.WinApp\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages",
|
||||
"C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet\\"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\fch\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Xamarin.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net6.0-windows7.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0-windows7.0": {
|
||||
"targetAlias": "net6.0-windows",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0-windows7.0": {
|
||||
"targetAlias": "net6.0-windows",
|
||||
"dependencies": {
|
||||
"MaterialSkin.2": {
|
||||
"target": "Package",
|
||||
"version": "[2.3.1, )"
|
||||
},
|
||||
"Newtonsoft.Json": {
|
||||
"target": "Package",
|
||||
"version": "[13.0.1, )"
|
||||
},
|
||||
"PInvoke.User32": {
|
||||
"target": "Package",
|
||||
"version": "[0.7.104, )"
|
||||
},
|
||||
"PInvoke.Windows.Core": {
|
||||
"target": "Package",
|
||||
"version": "[0.7.104, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
},
|
||||
"Microsoft.WindowsDesktop.App.WindowsForms": {
|
||||
"privateAssets": "none"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\6.0.100\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "UAQCboT4WaHqFZGweBG/1hD20QM4tP0IKjrCrVSyCbQ8A2mmAI2tLrpLDTkYy+7oXgb2RFvNSYGr11UUTzgD+Q==",
|
||||
"success": true,
|
||||
"projectFilePath": "D:\\fch\\dev\\code\\superlocal\\Superlocal.Agile\\Superlocal.Agile.WinApp\\Superlocal.Agile.WinApp.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"C:\\Users\\fch\\.nuget\\packages\\materialskin.2\\2.3.1\\materialskin.2.2.3.1.nupkg.sha512",
|
||||
"C:\\Users\\fch\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512",
|
||||
"C:\\Users\\fch\\.nuget\\packages\\pinvoke.kernel32\\0.7.104\\pinvoke.kernel32.0.7.104.nupkg.sha512",
|
||||
"C:\\Users\\fch\\.nuget\\packages\\pinvoke.user32\\0.7.104\\pinvoke.user32.0.7.104.nupkg.sha512",
|
||||
"C:\\Users\\fch\\.nuget\\packages\\pinvoke.windows.core\\0.7.104\\pinvoke.windows.core.0.7.104.nupkg.sha512",
|
||||
"C:\\Users\\fch\\.nuget\\packages\\pinvoke.windows.shellscalingapi\\0.7.104\\pinvoke.windows.shellscalingapi.0.7.104.nupkg.sha512",
|
||||
"C:\\Users\\fch\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512",
|
||||
"C:\\Users\\fch\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512",
|
||||
"C:\\Users\\fch\\.nuget\\packages\\validation\\2.4.15\\validation.2.4.15.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
|
@ -3,7 +3,32 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.31919.166
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Superlocal.Agile.WinApp", "Superlocal.Agile.WinApp\Superlocal.Agile.WinApp.csproj", "{C649167F-241E-41D2-8DDE-7EA56C4DF414}"
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{AE77267E-504F-4E69-89F4-A360CC23CD11}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ui", "ui", "{6F2B93E2-A129-4289-B38D-5FD691AD3780}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lib", "lib", "{F5C307F1-4695-4981-8806-3ADBC6B00000}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{14EA4223-1F26-42B0-AA2B-2EEA8C47543D}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{A07BA421-AC02-4420-8435-59EF367CC107}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Superlocal.Agile.Infrastructure", "src\lib\Superlocal.Agile.Infrastructure\Superlocal.Agile.Infrastructure.csproj", "{E95D303A-9855-4BC6-A25F-E1FC08A3381D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Superlocal.Agile.Tests", "tests\Superlocal.Agile.Tests\Superlocal.Agile.Tests.csproj", "{6524AD6E-4A33-4051-A751-7D08B7AB0D9C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Superlocal.Agile.Domain", "src\lib\Superlocal.Agile.Domain\Superlocal.Agile.Domain.csproj", "{376BBF07-2E54-44D5-9B80-649B0798240E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Superlocal.Agile.WinApp", "src\ui\Superlocal.Agile.WinApp\Superlocal.Agile.WinApp.csproj", "{36915115-0C09-41FB-8B6F-FF786B88A2D1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Superlocal.Agile.Application", "src\lib\Superlocal.Agile.Application\Superlocal.Agile.Application.csproj", "{7CA284DE-C6A3-484B-9605-066134AC571B}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{97C5D9A4-73BE-464C-9E04-79FAF8EAAE2F}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.editorconfig = .editorconfig
|
||||
LICENSE = LICENSE
|
||||
README.md = README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
@ -11,14 +36,39 @@ Global
|
|||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{C649167F-241E-41D2-8DDE-7EA56C4DF414}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C649167F-241E-41D2-8DDE-7EA56C4DF414}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C649167F-241E-41D2-8DDE-7EA56C4DF414}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C649167F-241E-41D2-8DDE-7EA56C4DF414}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E95D303A-9855-4BC6-A25F-E1FC08A3381D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E95D303A-9855-4BC6-A25F-E1FC08A3381D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E95D303A-9855-4BC6-A25F-E1FC08A3381D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E95D303A-9855-4BC6-A25F-E1FC08A3381D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{6524AD6E-4A33-4051-A751-7D08B7AB0D9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6524AD6E-4A33-4051-A751-7D08B7AB0D9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6524AD6E-4A33-4051-A751-7D08B7AB0D9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6524AD6E-4A33-4051-A751-7D08B7AB0D9C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{376BBF07-2E54-44D5-9B80-649B0798240E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{376BBF07-2E54-44D5-9B80-649B0798240E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{376BBF07-2E54-44D5-9B80-649B0798240E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{376BBF07-2E54-44D5-9B80-649B0798240E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{36915115-0C09-41FB-8B6F-FF786B88A2D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{36915115-0C09-41FB-8B6F-FF786B88A2D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{36915115-0C09-41FB-8B6F-FF786B88A2D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{36915115-0C09-41FB-8B6F-FF786B88A2D1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7CA284DE-C6A3-484B-9605-066134AC571B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7CA284DE-C6A3-484B-9605-066134AC571B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7CA284DE-C6A3-484B-9605-066134AC571B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7CA284DE-C6A3-484B-9605-066134AC571B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{6F2B93E2-A129-4289-B38D-5FD691AD3780} = {AE77267E-504F-4E69-89F4-A360CC23CD11}
|
||||
{F5C307F1-4695-4981-8806-3ADBC6B00000} = {AE77267E-504F-4E69-89F4-A360CC23CD11}
|
||||
{E95D303A-9855-4BC6-A25F-E1FC08A3381D} = {F5C307F1-4695-4981-8806-3ADBC6B00000}
|
||||
{6524AD6E-4A33-4051-A751-7D08B7AB0D9C} = {A07BA421-AC02-4420-8435-59EF367CC107}
|
||||
{376BBF07-2E54-44D5-9B80-649B0798240E} = {F5C307F1-4695-4981-8806-3ADBC6B00000}
|
||||
{36915115-0C09-41FB-8B6F-FF786B88A2D1} = {6F2B93E2-A129-4289-B38D-5FD691AD3780}
|
||||
{7CA284DE-C6A3-484B-9605-066134AC571B} = {F5C307F1-4695-4981-8806-3ADBC6B00000}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B9990170-CF12-4BAF-8CDD-65FF14245F91}
|
||||
EndGlobalSection
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Services\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,20 @@
|
|||
namespace Superlocal.Agile.Domain.Models
|
||||
{
|
||||
public interface IAppWindowInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// App window title
|
||||
/// </summary>
|
||||
string Title { get; }
|
||||
|
||||
/// <summary>
|
||||
/// When user interacted with app window
|
||||
/// </summary>
|
||||
DateTimeOffset Start { get; }
|
||||
|
||||
/// <summary>
|
||||
/// When user moved to another app
|
||||
/// </summary>
|
||||
DateTimeOffset End { get; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
namespace Superlocal.Agile.Domain.Models;
|
||||
|
||||
public partial interface IProcessInfo
|
||||
{
|
||||
int LastCapturedId { get; }
|
||||
|
||||
string Name { get; }
|
||||
|
||||
string? Path { get; }
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
# Domain
|
||||
|
||||
Add info about DDD and Clean Archictecture
|
||||
|
||||
## Model
|
||||
|
||||
People often confuse entity with model. However, these two are quite different.
|
||||
|
||||
A model typically represents a real world object that is related to the problem or domain space.
|
||||
While programming, we create classes to represent them. These classes, known as models,
|
||||
have some properties and methods (defining their behavior) in a particular domain space.
|
||||
For instance, in any customer oriented problem, we may have a customer class that has some properties and methods.
|
||||
|
||||
In some ORM (Object Relational Mapper) frameworks, a model is tightly bound to an entity.
|
||||
This means that every scalar property maps to an entity attribute.
|
||||
However, if you are familiar with Entity Framework, you must know that, not all properties in your domain class map to an entity column.
|
||||
And that's one way in which an entity is different from a model.
|
||||
|
||||
### References
|
||||
|
||||
https://www.c-sharpcorner.com/blogs/entity-vs-model-vs-viewmodel-vs-datamodel
|
|
@ -0,0 +1,9 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,22 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using Superlocal.Agile.Infrastructure.Entities;
|
||||
|
||||
namespace Superlocal.Agile.Infrastructure.Database
|
||||
{
|
||||
public class SqliteDbContext : DbContext
|
||||
{
|
||||
public DbSet<ProcessInfo> ProcessInfos { get; set; }
|
||||
|
||||
public DbSet<AppWindowInfo> AppWindowInfos { get; set; }
|
||||
|
||||
public SqliteDbContext(DbContextOptions<SqliteDbContext> options) : base(options)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//protected override void OnConfiguring(DbContextOptionsBuilder options)
|
||||
//{
|
||||
// base.OnConfiguring(options);
|
||||
//}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Superlocal.Agile.Infrastructure.Entities;
|
||||
|
||||
public class AppWindowInfo : IAppWindowInfo
|
||||
{
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
|
||||
public ProcessInfo ProcessInfo { get; set; }
|
||||
|
||||
public string Title { get; set; }
|
||||
|
||||
public DateTimeOffset Start { get; set; }
|
||||
|
||||
public DateTimeOffset End { get; set; }
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Superlocal.Agile.Infrastructure.Entities;
|
||||
|
||||
public class ProcessInfo : IProcessInfo
|
||||
{
|
||||
[Key]
|
||||
public Guid Guid { get; set; }
|
||||
|
||||
public int LastCapturedId { get; set; }
|
||||
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
|
||||
public string? Path { get; set; }
|
||||
|
||||
public virtual IEnumerable<AppWindowInfo> AppWindowsInfo { get; set; }
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
global using Superlocal.Agile.Domain.Models;
|
||||
|
||||
namespace Superlocal.Agile.Infrastructure;
|
87
src/lib/Superlocal.Agile.Infrastructure/Migrations/20211223171100_First migration.Designer.cs
generated
Normal file
87
src/lib/Superlocal.Agile.Infrastructure/Migrations/20211223171100_First migration.Designer.cs
generated
Normal file
|
@ -0,0 +1,87 @@
|
|||
// <auto-generated />
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Superlocal.Agile.Infrastructure.Database;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Superlocal.Agile.Infrastructure.Migrations
|
||||
{
|
||||
[DbContext(typeof(SqliteDbContext))]
|
||||
[Migration("20211223171100_First migration")]
|
||||
partial class Firstmigration
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder.HasAnnotation("ProductVersion", "6.0.1");
|
||||
|
||||
modelBuilder.Entity("Superlocal.Agile.Infrastructure.Entities.AppWindowInfo", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<DateTimeOffset>("End")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<Guid>("ProcessInfoGuid")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<DateTimeOffset>("Start")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ProcessInfoGuid");
|
||||
|
||||
b.ToTable("AppWindowInfos");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Superlocal.Agile.Infrastructure.Entities.ProcessInfo", b =>
|
||||
{
|
||||
b.Property<Guid>("Guid")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("LastCapturedId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Path")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Guid");
|
||||
|
||||
b.ToTable("ProcessInfos");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Superlocal.Agile.Infrastructure.Entities.AppWindowInfo", b =>
|
||||
{
|
||||
b.HasOne("Superlocal.Agile.Infrastructure.Entities.ProcessInfo", "ProcessInfo")
|
||||
.WithMany("AppWindowsInfo")
|
||||
.HasForeignKey("ProcessInfoGuid")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("ProcessInfo");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Superlocal.Agile.Infrastructure.Entities.ProcessInfo", b =>
|
||||
{
|
||||
b.Navigation("AppWindowsInfo");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Superlocal.Agile.Infrastructure.Migrations
|
||||
{
|
||||
public partial class Firstmigration : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ProcessInfos",
|
||||
columns: table => new
|
||||
{
|
||||
Guid = table.Column<Guid>(type: "TEXT", nullable: false),
|
||||
LastCapturedId = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
Name = table.Column<string>(type: "TEXT", nullable: false),
|
||||
Path = table.Column<string>(type: "TEXT", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ProcessInfos", x => x.Guid);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "AppWindowInfos",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
ProcessInfoGuid = table.Column<Guid>(type: "TEXT", nullable: false),
|
||||
Title = table.Column<string>(type: "TEXT", nullable: false),
|
||||
Start = table.Column<DateTimeOffset>(type: "TEXT", nullable: false),
|
||||
End = table.Column<DateTimeOffset>(type: "TEXT", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_AppWindowInfos", x => x.Id);
|
||||
table.ForeignKey(
|
||||
name: "FK_AppWindowInfos_ProcessInfos_ProcessInfoGuid",
|
||||
column: x => x.ProcessInfoGuid,
|
||||
principalTable: "ProcessInfos",
|
||||
principalColumn: "Guid",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_AppWindowInfos_ProcessInfoGuid",
|
||||
table: "AppWindowInfos",
|
||||
column: "ProcessInfoGuid");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "AppWindowInfos");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "ProcessInfos");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
// <auto-generated />
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Superlocal.Agile.Infrastructure.Database;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Superlocal.Agile.Infrastructure.Migrations
|
||||
{
|
||||
[DbContext(typeof(SqliteDbContext))]
|
||||
partial class SqliteDbContextModelSnapshot : ModelSnapshot
|
||||
{
|
||||
protected override void BuildModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder.HasAnnotation("ProductVersion", "6.0.1");
|
||||
|
||||
modelBuilder.Entity("Superlocal.Agile.Infrastructure.Entities.AppWindowInfo", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<DateTimeOffset>("End")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<Guid>("ProcessInfoGuid")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<DateTimeOffset>("Start")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ProcessInfoGuid");
|
||||
|
||||
b.ToTable("AppWindowInfos");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Superlocal.Agile.Infrastructure.Entities.ProcessInfo", b =>
|
||||
{
|
||||
b.Property<Guid>("Guid")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("LastCapturedId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Path")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Guid");
|
||||
|
||||
b.ToTable("ProcessInfos");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Superlocal.Agile.Infrastructure.Entities.AppWindowInfo", b =>
|
||||
{
|
||||
b.HasOne("Superlocal.Agile.Infrastructure.Entities.ProcessInfo", "ProcessInfo")
|
||||
.WithMany("AppWindowsInfo")
|
||||
.HasForeignKey("ProcessInfoGuid")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("ProcessInfo");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Superlocal.Agile.Infrastructure.Entities.ProcessInfo", b =>
|
||||
{
|
||||
b.Navigation("AppWindowsInfo");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Repositories\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="..\..\..\.editorconfig" Link=".editorconfig" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Superlocal.Agile.Domain\Superlocal.Agile.Domain.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,187 @@
|
|||
namespace Superlocal.Agile.WinApp
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.treeView1 = new System.Windows.Forms.TreeView();
|
||||
this.listBox2 = new System.Windows.Forms.ListBox();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.materialCheckbox1 = new MaterialSkin.Controls.MaterialCheckbox();
|
||||
this.materialCheckbox2 = new MaterialSkin.Controls.MaterialCheckbox();
|
||||
this.materialCheckbox3 = new MaterialSkin.Controls.MaterialCheckbox();
|
||||
this.materialCheckbox4 = new MaterialSkin.Controls.MaterialCheckbox();
|
||||
this.materialDrawer1 = new MaterialSkin.Controls.MaterialDrawer();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(1056, 76);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 1;
|
||||
this.button1.Text = "button1";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// treeView1
|
||||
//
|
||||
this.treeView1.Location = new System.Drawing.Point(12, 106);
|
||||
this.treeView1.Name = "treeView1";
|
||||
this.treeView1.Size = new System.Drawing.Size(1119, 603);
|
||||
this.treeView1.TabIndex = 2;
|
||||
//
|
||||
// listBox2
|
||||
//
|
||||
this.listBox2.FormattingEnabled = true;
|
||||
this.listBox2.ItemHeight = 15;
|
||||
this.listBox2.Location = new System.Drawing.Point(12, 715);
|
||||
this.listBox2.Name = "listBox2";
|
||||
this.listBox2.Size = new System.Drawing.Size(1119, 64);
|
||||
this.listBox2.TabIndex = 3;
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Location = new System.Drawing.Point(12, 77);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(521, 23);
|
||||
this.textBox1.TabIndex = 4;
|
||||
//
|
||||
// materialCheckbox1
|
||||
//
|
||||
this.materialCheckbox1.AutoSize = true;
|
||||
this.materialCheckbox1.Depth = 0;
|
||||
this.materialCheckbox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.materialCheckbox1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.materialCheckbox1.MouseLocation = new System.Drawing.Point(-1, -1);
|
||||
this.materialCheckbox1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCheckbox1.Name = "materialCheckbox1";
|
||||
this.materialCheckbox1.ReadOnly = false;
|
||||
this.materialCheckbox1.Ripple = true;
|
||||
this.materialCheckbox1.Size = new System.Drawing.Size(10, 10);
|
||||
this.materialCheckbox1.TabIndex = 0;
|
||||
this.materialCheckbox1.Text = "materialCheckbox1";
|
||||
this.materialCheckbox1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialCheckbox2
|
||||
//
|
||||
this.materialCheckbox2.AutoSize = true;
|
||||
this.materialCheckbox2.Depth = 0;
|
||||
this.materialCheckbox2.Location = new System.Drawing.Point(0, 0);
|
||||
this.materialCheckbox2.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.materialCheckbox2.MouseLocation = new System.Drawing.Point(-1, -1);
|
||||
this.materialCheckbox2.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCheckbox2.Name = "materialCheckbox2";
|
||||
this.materialCheckbox2.ReadOnly = false;
|
||||
this.materialCheckbox2.Ripple = true;
|
||||
this.materialCheckbox2.Size = new System.Drawing.Size(10, 10);
|
||||
this.materialCheckbox2.TabIndex = 0;
|
||||
this.materialCheckbox2.Text = "materialCheckbox2";
|
||||
this.materialCheckbox2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialCheckbox3
|
||||
//
|
||||
this.materialCheckbox3.AutoSize = true;
|
||||
this.materialCheckbox3.Depth = 0;
|
||||
this.materialCheckbox3.Location = new System.Drawing.Point(0, 0);
|
||||
this.materialCheckbox3.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.materialCheckbox3.MouseLocation = new System.Drawing.Point(-1, -1);
|
||||
this.materialCheckbox3.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCheckbox3.Name = "materialCheckbox3";
|
||||
this.materialCheckbox3.ReadOnly = false;
|
||||
this.materialCheckbox3.Ripple = true;
|
||||
this.materialCheckbox3.Size = new System.Drawing.Size(10, 10);
|
||||
this.materialCheckbox3.TabIndex = 0;
|
||||
this.materialCheckbox3.Text = "materialCheckbox3";
|
||||
this.materialCheckbox3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialCheckbox4
|
||||
//
|
||||
this.materialCheckbox4.AutoSize = true;
|
||||
this.materialCheckbox4.Depth = 0;
|
||||
this.materialCheckbox4.Location = new System.Drawing.Point(0, 0);
|
||||
this.materialCheckbox4.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.materialCheckbox4.MouseLocation = new System.Drawing.Point(-1, -1);
|
||||
this.materialCheckbox4.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialCheckbox4.Name = "materialCheckbox4";
|
||||
this.materialCheckbox4.ReadOnly = false;
|
||||
this.materialCheckbox4.Ripple = true;
|
||||
this.materialCheckbox4.Size = new System.Drawing.Size(10, 10);
|
||||
this.materialCheckbox4.TabIndex = 0;
|
||||
this.materialCheckbox4.Text = "materialCheckbox4";
|
||||
this.materialCheckbox4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// materialDrawer1
|
||||
//
|
||||
this.materialDrawer1.AutoHide = false;
|
||||
this.materialDrawer1.AutoShow = false;
|
||||
this.materialDrawer1.BackgroundWithAccent = false;
|
||||
this.materialDrawer1.BaseTabControl = null;
|
||||
this.materialDrawer1.Depth = 0;
|
||||
this.materialDrawer1.HighlightWithAccent = true;
|
||||
this.materialDrawer1.IndicatorWidth = 0;
|
||||
this.materialDrawer1.IsOpen = false;
|
||||
this.materialDrawer1.Location = new System.Drawing.Point(-103, 20);
|
||||
this.materialDrawer1.MouseState = MaterialSkin.MouseState.HOVER;
|
||||
this.materialDrawer1.Name = "materialDrawer1";
|
||||
this.materialDrawer1.ShowIconsWhenHidden = false;
|
||||
this.materialDrawer1.Size = new System.Drawing.Size(103, 548);
|
||||
this.materialDrawer1.TabIndex = 6;
|
||||
this.materialDrawer1.Text = "materialDrawer1";
|
||||
this.materialDrawer1.UseColors = false;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1162, 794);
|
||||
this.Controls.Add(this.materialDrawer1);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.listBox2);
|
||||
this.Controls.Add(this.treeView1);
|
||||
this.Controls.Add(this.button1);
|
||||
this.DrawerIsOpen = true;
|
||||
this.Name = "Form1";
|
||||
this.Text = "Form1";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private Button button1;
|
||||
private TreeView treeView1;
|
||||
private ListBox listBox2;
|
||||
private TextBox textBox1;
|
||||
private MaterialSkin.Controls.MaterialCheckbox materialCheckbox1;
|
||||
private MaterialSkin.Controls.MaterialCheckbox materialCheckbox2;
|
||||
private MaterialSkin.Controls.MaterialCheckbox materialCheckbox3;
|
||||
private MaterialSkin.Controls.MaterialCheckbox materialCheckbox4;
|
||||
private MaterialSkin.Controls.MaterialDrawer materialDrawer1;
|
||||
}
|
||||
}
|
|
@ -3,12 +3,15 @@ using Superlocal.Agile.WinApp.Records;
|
|||
using Superlocal.Agile.WinApp.Entities;
|
||||
using MaterialSkin.Controls;
|
||||
using MaterialSkin;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Superlocal.Agile.Infrastructure.Database;
|
||||
|
||||
namespace Superlocal.Agile.WinApp
|
||||
{
|
||||
public partial class Form1 : MaterialForm
|
||||
public partial class MainForm : MaterialForm
|
||||
{
|
||||
|
||||
private readonly ILogger _logger;
|
||||
private readonly SqliteDbContext _dbContext;
|
||||
private WindowInfo? _activeWindowsInfo;
|
||||
private readonly SynchronizationContext? synchronizationContext;
|
||||
|
||||
|
@ -16,14 +19,16 @@ namespace Superlocal.Agile.WinApp
|
|||
private List<ApplicationInfo> Applications = new List<ApplicationInfo>();
|
||||
private List<WindowInfo> WindowsInfo = new List<WindowInfo>();
|
||||
|
||||
public Form1()
|
||||
public MainForm(ILogger<MainForm> logger, SqliteDbContext dbContext)
|
||||
{
|
||||
_logger = logger;
|
||||
_dbContext = dbContext;
|
||||
InitializeComponent();
|
||||
var materialSkinManager = MaterialSkinManager.Instance;
|
||||
materialSkinManager.AddFormToManage(this);
|
||||
materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT;
|
||||
materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.LightBlue200, TextShade.WHITE);
|
||||
materialTabControl1.TabPages.Add(new TabPage());
|
||||
|
||||
synchronizationContext = SynchronizationContext.Current; //context from UI thread
|
||||
Task.Run(() =>
|
||||
{
|
||||
|
@ -35,89 +40,6 @@ namespace Superlocal.Agile.WinApp
|
|||
});
|
||||
}
|
||||
|
||||
//private void GetActiveWindow()
|
||||
//{
|
||||
// int processId;
|
||||
// Span<char> Buff = new Span<char>();
|
||||
|
||||
// IntPtr handle = PInvoke.User32.GetForegroundWindow();
|
||||
|
||||
// PInvoke.User32.GetWindowThreadProcessId(handle, out processId);
|
||||
// Process process = Process.GetProcessById(processId);
|
||||
// var processName = "";
|
||||
// string? processExecutable = "";
|
||||
// int programId = 0;
|
||||
|
||||
// if (process != null)
|
||||
// {
|
||||
// processName = process.ProcessName;
|
||||
// if (process.MainModule != null)
|
||||
// {
|
||||
// processExecutable = process.MainModule.FileName;
|
||||
// programId = !string.IsNullOrWhiteSpace(processExecutable) ? processExecutable.GetHashCode() : 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
// var hasText = PInvoke.User32.GetWindowText(handle, Buff) > 0;
|
||||
// string windowTitle = hasText ? Buff.ToString() : process != null ? process.ProcessName : "Untitled";
|
||||
|
||||
// if (handle == IntPtr.Zero || (handle == ActiveWindowHandle && windowTitle == ActiveWindowTitle))
|
||||
// return;
|
||||
|
||||
// List<TimePeriod>? timeSheet = null;
|
||||
|
||||
// void CloseTimeEntry(string key)
|
||||
// {
|
||||
// if (key == null || !timeSpent.ContainsKey(key))
|
||||
// return;
|
||||
|
||||
// timeSheet = timeSpent[key];
|
||||
// var v = timeSheet.FirstOrDefault(x => x.End.Equals(DateTime.MaxValue));
|
||||
// if (v != null)
|
||||
// v.End = DateTime.Now;
|
||||
// }
|
||||
|
||||
// void AddNewEntry(string key)
|
||||
// {
|
||||
// ActiveWindowHandle = handle;
|
||||
// ActiveWindowTitle = key;
|
||||
// if (timeSpent.ContainsKey(key))
|
||||
// {
|
||||
// timeSheet = timeSpent[key];
|
||||
// timeSheet.Add(new TimePeriod(DateTime.Now));
|
||||
// timeSpent[ActiveWindowTitle] = timeSheet;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// timeSheet = new List<TimePeriod>();
|
||||
// timeSheet.Add(new TimePeriod(DateTime.Now));
|
||||
// timeSpent.Add(ActiveWindowTitle, timeSheet);
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
// CloseTimeEntry(ActiveWindowTitle);
|
||||
// AddNewEntry(windowTitle);
|
||||
|
||||
|
||||
// synchronizationContext.Post(new SendOrPostCallback(o =>
|
||||
// {
|
||||
|
||||
// textBox1.Text = o != null ? o.ToString() : "Untitled";
|
||||
|
||||
// treeView1.Nodes.Clear();
|
||||
// foreach (var entry in timeSpent)
|
||||
// {
|
||||
// var p = treeView1.Nodes.Add(entry.Key);
|
||||
// foreach (var time in entry.Value)
|
||||
// {
|
||||
// p.Nodes.Add(time.Start.ToString() + " - " + time.End.ToString() + ": " + time.End.Subtract(time.Start).TotalMinutes);
|
||||
// }
|
||||
// }
|
||||
// treeView1.ExpandAll();
|
||||
// }), Buff.ToString());
|
||||
//}
|
||||
|
||||
private void WatchActiveWindow()
|
||||
{
|
||||
var windowInfo = WindowInfoHelper.GetActiveWindowInfo();
|
||||
|
@ -128,6 +50,8 @@ namespace Superlocal.Agile.WinApp
|
|||
if (!WindowsInfo.Contains(windowInfo))
|
||||
WindowsInfo.Add(windowInfo);
|
||||
|
||||
_logger.LogDebug(JsonConvert.SerializeObject(WindowsInfo));
|
||||
|
||||
StopRunningWindow();
|
||||
StartWindowActivation(windowInfo);
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
namespace Superlocal.Agile.WinApp.Models
|
||||
{
|
||||
internal class Settings
|
||||
{
|
||||
public string DbPath { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Superlocal.Agile.Infrastructure.Database;
|
||||
using Superlocal.Agile.WinApp.Models;
|
||||
|
||||
namespace Superlocal.Agile.WinApp
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public static Settings Settings { get; private set; }
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
ApplicationConfiguration.Initialize();
|
||||
|
||||
IConfiguration config = new ConfigurationBuilder()
|
||||
.AddJsonFile("appsettings.json")
|
||||
.AddEnvironmentVariables()
|
||||
.Build();
|
||||
|
||||
Settings = config.GetRequiredSection("Settings").Get<Settings>();
|
||||
|
||||
var dbPath = Settings.DbPath;
|
||||
if (string.IsNullOrWhiteSpace(Path.GetDirectoryName(dbPath)))
|
||||
{
|
||||
dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Superlocal.Agile", dbPath);
|
||||
}
|
||||
var connectionString = string.Format("Data Source={0};", dbPath);
|
||||
|
||||
var builder = new HostBuilder()
|
||||
.ConfigureServices((hostContext, services) =>
|
||||
{
|
||||
services.AddSingleton<MainForm>()
|
||||
.AddLogging(configure => configure.AddConsole())
|
||||
.AddDbContext<SqliteDbContext>(options => options.UseSqlite(connectionString))
|
||||
;
|
||||
});
|
||||
|
||||
var host = builder.Build();
|
||||
|
||||
using (var serviceScope = host.Services.CreateScope())
|
||||
{
|
||||
var services = serviceScope.ServiceProvider;
|
||||
try
|
||||
{
|
||||
var mainForm = services.GetRequiredService<MainForm>();
|
||||
Application.Run(mainForm);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Error Occured");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -55,8 +55,17 @@ namespace Superlocal.Agile.WinApp.Records
|
|||
int processId;
|
||||
PInvoke.User32.GetWindowThreadProcessId(handle, out processId);
|
||||
var process = ProcessInfoHelper.GetProcessInfo(processId);
|
||||
var s = PInvoke.User32.GetWindowText(handle);
|
||||
string windowTitle = !string.IsNullOrWhiteSpace(s) ? s.ToString() : process != null && !string.IsNullOrEmpty(process.ProcessName) ? process.ProcessName : "Untitled";
|
||||
var windowTitle = string.Empty;
|
||||
try
|
||||
{
|
||||
windowTitle = PInvoke.User32.GetWindowText(handle);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// TODO add logger
|
||||
}
|
||||
|
||||
windowTitle = !string.IsNullOrWhiteSpace(windowTitle) ? windowTitle.ToString() : process != null && !string.IsNullOrEmpty(process.ProcessName) ? process.ProcessName : "Untitled";
|
||||
|
||||
return new WindowInfo(handle, windowTitle, process);
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net6.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="appsettings.json" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="appsettings.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MaterialSkin.2" Version="2.3.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="6.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="PInvoke.User32" Version="0.7.104" />
|
||||
<PackageReference Include="PInvoke.Windows.Core" Version="0.7.104" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Controls\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\lib\Superlocal.Agile.Application\Superlocal.Agile.Application.csproj" />
|
||||
<ProjectReference Include="..\..\lib\Superlocal.Agile.Domain\Superlocal.Agile.Domain.csproj" />
|
||||
<ProjectReference Include="..\..\lib\Superlocal.Agile.Infrastructure\Superlocal.Agile.Infrastructure.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"Settings": {
|
||||
"DbPath": "superlocal_agile.db"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
# References
|
||||
|
||||
https://www.lambdatest.com/blog/nunit-vs-xunit-vs-mstest/
|
|
@ -0,0 +1,23 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector" Version="3.1.0">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,13 @@
|
|||
using Xunit;
|
||||
|
||||
namespace Superlocal.Agile.Tests
|
||||
{
|
||||
public class UnitTest1
|
||||
{
|
||||
[Fact]
|
||||
public void Test1()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue