Changed: session settings + layout panel init-size

This commit is contained in:
Ray 2020-05-17 19:52:37 +01:00
parent 3a2ee532c7
commit c49c9308c0
6 changed files with 93 additions and 46 deletions

View File

@ -55,6 +55,7 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Models\LauncherSession.cs" />
<Compile Include="Models\TileModel.cs" /> <Compile Include="Models\TileModel.cs" />
<Compile Include="MainForm.cs"> <Compile Include="MainForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>

3
MainForm.Designer.cs generated
View File

@ -178,7 +178,7 @@
this.flowLayoutPanel1.Location = new System.Drawing.Point(12, 58); this.flowLayoutPanel1.Location = new System.Drawing.Point(12, 58);
this.flowLayoutPanel1.Name = "flowLayoutPanel1"; this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(0, 0, 10, 0); this.flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(0, 0, 10, 0);
this.flowLayoutPanel1.Size = new System.Drawing.Size(620, 341); this.flowLayoutPanel1.Size = new System.Drawing.Size(620, 340);
this.flowLayoutPanel1.TabIndex = 27; this.flowLayoutPanel1.TabIndex = 27;
this.flowLayoutPanel1.WrapContents = false; this.flowLayoutPanel1.WrapContents = false;
// //
@ -202,6 +202,7 @@
this.ClientSize = new System.Drawing.Size(633, 400); this.ClientSize = new System.Drawing.Size(633, 400);
this.Controls.Add(this.flowLayoutPanel1); this.Controls.Add(this.flowLayoutPanel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MinimumSize = new System.Drawing.Size(633, 280);
this.Name = "MainForm"; this.Name = "MainForm";
this.Text = "Launcher"; this.Text = "Launcher";
this.TitleContextMenuStrip = this.contextMenuStrip1; this.TitleContextMenuStrip = this.contextMenuStrip1;

View File

@ -277,8 +277,8 @@ namespace AppLauncher
return; return;
} }
List<TileGroupModel> rs = JsonConvert.DeserializeObject<List<TileGroupModel>>(sourceCode); LauncherSession launcherSession = JsonConvert.DeserializeObject<LauncherSession>(sourceCode);
if (rs == null) if (launcherSession == null)
{ {
return; return;
} }
@ -286,15 +286,19 @@ namespace AppLauncher
int maxWidth = 0; int maxWidth = 0;
flowLayoutPanel1.Controls.Clear(); flowLayoutPanel1.Controls.Clear();
foreach (TileGroupModel item in rs) if (launcherSession.Groups != null)
{
foreach (TileGroupModel item in launcherSession.Groups)
{ {
TTilePanelLayout panel = new TTilePanelLayout(item); TTilePanelLayout panel = new TTilePanelLayout(item);
maxWidth = Math.Max(maxWidth, panel.Width); maxWidth = Math.Max(maxWidth, panel.Width);
flowLayoutPanel1.Controls.Add(panel); flowLayoutPanel1.Controls.Add(panel);
} }
}
this.Width = maxWidth + SystemInformation.VerticalScrollBarWidth + 20 + flowLayoutPanel1.Left; this.Width = maxWidth + SystemInformation.VerticalScrollBarWidth + 20 + flowLayoutPanel1.Left;
this.Height = launcherSession.DefaultHeight;
} }
protected void newSession() protected void newSession()
@ -335,7 +339,13 @@ namespace AppLauncher
isBusy = true; isBusy = true;
List<TileGroupModel> rs = new List<TileGroupModel>(); LauncherSession launcherSession = new LauncherSession()
{
DefaultHeight = this.Height,
Groups = new List<TileGroupModel>()
};
launcherSession.Groups = new List<TileGroupModel>();
for (int i = 0; i < flowLayoutPanel1.Controls.Count; i++) for (int i = 0; i < flowLayoutPanel1.Controls.Count; i++)
{ {
if (flowLayoutPanel1.Controls[i].GetType() != typeof(TTilePanelLayout)) if (flowLayoutPanel1.Controls[i].GetType() != typeof(TTilePanelLayout))
@ -344,12 +354,12 @@ namespace AppLauncher
} }
TTilePanelLayout container = flowLayoutPanel1.Controls[i] as TTilePanelLayout; TTilePanelLayout container = flowLayoutPanel1.Controls[i] as TTilePanelLayout;
rs.Add(container.Model); launcherSession.Groups.Add(container.Model);
} }
try try
{ {
File.WriteAllText(filename, JsonConvert.SerializeObject(rs)); File.WriteAllText(filename, JsonConvert.SerializeObject(launcherSession));
if (showNotices) if (showNotices)
{ {

10
Models/LauncherSession.cs Normal file
View File

@ -0,0 +1,10 @@
using System.Collections.Generic;
namespace AppLauncher.Models
{
public class LauncherSession
{
public int DefaultHeight { get; set; } = 280;
public List<TileGroupModel> Groups { get; set; } = new List<TileGroupModel>();
}
}

View File

@ -21,6 +21,7 @@ namespace AppLauncher.Windows.Forms
protected internal RyzStudio.Windows.Forms.TImageBox imageBox2; protected internal RyzStudio.Windows.Forms.TImageBox imageBox2;
protected internal RyzStudio.Windows.Forms.TImageBox imageBox1; protected internal RyzStudio.Windows.Forms.TImageBox imageBox1;
private NotifyIcon notifyIcon1; private NotifyIcon notifyIcon1;
private Panel panel1;
private IContainer components; private IContainer components;
public AForm() : base() public AForm() : base()
@ -38,17 +39,25 @@ namespace AppLauncher.Windows.Forms
{ {
base.OnLoad(e); base.OnLoad(e);
this.SuspendLayout(); this.SuspendLayout();
imageBox3.Left = this.DisplayRectangle.Width - imageBox3.Width - 17; imageBox3.Left = this.DisplayRectangle.Width - imageBox3.Width - 17;
imageBox3.Top = 18; imageBox3.Top = 18;
imageBox3.Anchor = (AnchorStyles.Top | AnchorStyles.Right); imageBox3.Anchor = (AnchorStyles.Top | AnchorStyles.Right);
imageBox2.Left = imageBox3.Left - imageBox2.Width - 8; imageBox2.Left = imageBox3.Left - imageBox2.Width - 8;
imageBox2.Top = 18; imageBox2.Top = 18;
imageBox2.Anchor = (AnchorStyles.Top | AnchorStyles.Right); imageBox2.Anchor = (AnchorStyles.Top | AnchorStyles.Right);
imageBox1.Left = imageBox2.Left - imageBox1.Width - 8; imageBox1.Left = imageBox2.Left - imageBox1.Width - 8;
imageBox1.Top = 18; imageBox1.Top = 18;
imageBox1.Anchor = (AnchorStyles.Top | AnchorStyles.Right); imageBox1.Anchor = (AnchorStyles.Top | AnchorStyles.Right);
panel1.Left = this.DisplayRectangle.Left;
panel1.Top = this.DisplayRectangle.Height - panel1.Height;
panel1.Width = this.DisplayRectangle.Width;
panel1.Anchor = (AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom);
this.ResumeLayout(); this.ResumeLayout();
} }
@ -182,6 +191,7 @@ namespace AppLauncher.Windows.Forms
this.imageBox2 = new RyzStudio.Windows.Forms.TImageBox(); this.imageBox2 = new RyzStudio.Windows.Forms.TImageBox();
this.imageBox1 = new RyzStudio.Windows.Forms.TImageBox(); this.imageBox1 = new RyzStudio.Windows.Forms.TImageBox();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.panel1 = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.imageBox3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.imageBox3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.imageBox2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.imageBox1)).BeginInit();
@ -249,9 +259,23 @@ namespace AppLauncher.Windows.Forms
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click); this.notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click);
// //
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Transparent;
this.panel1.Cursor = System.Windows.Forms.Cursors.SizeNS;
this.panel1.Location = new System.Drawing.Point(109, 114);
this.panel1.Margin = new System.Windows.Forms.Padding(0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(200, 2);
this.panel1.TabIndex = 149;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseDown);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseUp);
//
// AForm // AForm
// //
this.ClientSize = new System.Drawing.Size(421, 321); this.ClientSize = new System.Drawing.Size(421, 321);
this.Controls.Add(this.panel1);
this.Controls.Add(this.imageBox1); this.Controls.Add(this.imageBox1);
this.Controls.Add(this.imageBox2); this.Controls.Add(this.imageBox2);
this.Controls.Add(this.imageBox3); this.Controls.Add(this.imageBox3);
@ -302,5 +326,27 @@ namespace AppLauncher.Windows.Forms
notifyIcon1.Visible = !this.Visible; notifyIcon1.Visible = !this.Visible;
} }
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isDragging = true;
startPosition = e.Location;
}
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
isDragging = false;
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (isDragging)
{
this.Size = new Size(this.Width, e.Y - startPosition.Y + this.Height);
}
}
} }
} }

View File

@ -36,6 +36,7 @@ namespace AppLauncher.Windows.Forms
protected bool isAnimating = false; protected bool isAnimating = false;
protected bool isChecked = true; protected bool isChecked = true;
protected Point lastMousePosition = new Point(); protected Point lastMousePosition = new Point();
protected Point gridSize = new Point();
public TTilePanelLayout(TileGroupModel model) : base() public TTilePanelLayout(TileGroupModel model) : base()
{ {
@ -182,10 +183,11 @@ namespace AppLauncher.Windows.Forms
{ {
get get
{ {
int w = (int)Math.Floor(decimal.Divide(this.Width, this.TileSize)); //int w = (int)Math.Floor(decimal.Divide(this.Width, this.TileSize));
int h = (int)Math.Floor(decimal.Divide(this.Height - labelHeight, this.TileSize)); //int h = (int)Math.Floor(decimal.Divide(this.Height - labelHeight, this.TileSize));
return new Point(w, h); //return new Point(w, h);
return gridSize;
} }
} }
@ -308,20 +310,6 @@ namespace AppLauncher.Windows.Forms
}); });
} }
public async Task CollapseNow()
{
await Task.Run(() =>
{
if (isAnimating) return;
isAnimating = true;
ThreadControl.SetHeight(this, this.CollapseHeight);
isAnimating = false;
});
}
public async Task Expand() public async Task Expand()
{ {
await Task.Run(() => await Task.Run(() =>
@ -355,7 +343,7 @@ namespace AppLauncher.Windows.Forms
return new Point((x * this.TileSize), ((y * this.TileSize) + labelHeight)); return new Point((x * this.TileSize), ((y * this.TileSize) + labelHeight));
} }
public async Task InvalidateContainer(bool animate = true) public async Task InvalidateContainer()
{ {
if (isAnimating) if (isAnimating)
{ {
@ -367,16 +355,9 @@ namespace AppLauncher.Windows.Forms
await this.Expand(); await this.Expand();
} }
else else
{
if (animate)
{ {
await this.Collapse(); await this.Collapse();
} }
else
{
await this.CollapseNow();
}
}
} }
public void AddGroup() public void AddGroup()
@ -393,10 +374,7 @@ namespace AppLauncher.Windows.Forms
})); }));
} }
public void AddRow() public void AddRow() =>this.SetGridSize(groupInfo.GridSize.Width, (groupInfo.GridSize.Height + 1));
{
this.SetGridSize(groupInfo.GridSize.Width, (groupInfo.GridSize.Height + 1));
}
public void EditGroup() => EditGroupForm.ShowDialog(this); public void EditGroup() => EditGroupForm.ShowDialog(this);
@ -404,10 +382,9 @@ namespace AppLauncher.Windows.Forms
{ {
groupInfo = model; groupInfo = model;
this.SetGridSize(groupInfo.GridSize.Width, groupInfo.GridSize.Height);
isChecked = groupInfo.IsExpanded; isChecked = groupInfo.IsExpanded;
this.SetGridSize(groupInfo.GridSize.Width, groupInfo.GridSize.Height);
this.LoadTiles(model.Items); this.LoadTiles(model.Items);
this.Invalidate(); this.Invalidate();
@ -416,7 +393,7 @@ namespace AppLauncher.Windows.Forms
public void UpdateModel(TileGroupModel model) public void UpdateModel(TileGroupModel model)
{ {
groupInfo = model; groupInfo = model;
isChecked = groupInfo.IsExpanded; //isChecked = groupInfo.IsExpanded;
this.Invalidate(); this.Invalidate();
} }
@ -566,9 +543,12 @@ namespace AppLauncher.Windows.Forms
public void SetGridSize(int width, int height) public void SetGridSize(int width, int height)
{ {
gridSize = new Point(width, height);
expandedHeight = (this.TileSize * height) + labelHeight; expandedHeight = (this.TileSize * height) + labelHeight;
this.Size = new Size((this.TileSize * width), expandedHeight); //this.Size = new Size((this.TileSize * width), expandedHeight);
this.Size = new Size((this.TileSize * width), (isChecked ? this.ExpandedHeight : this.CollapseHeight));
} }
protected Point convertCoordToLocation(Point position) => new Point((position.X * this.TileSize), ((position.Y * this.TileSize) + labelHeight)); protected Point convertCoordToLocation(Point position) => new Point((position.X * this.TileSize), ((position.Y * this.TileSize) + labelHeight));
@ -768,6 +748,5 @@ namespace AppLauncher.Windows.Forms
private void removeGroupMenuItem3_Click(object sender, EventArgs e) => this.Remove(); private void removeGroupMenuItem3_Click(object sender, EventArgs e) => this.Remove();
} }
} }