Changed: add new tiles positions
This commit is contained in:
parent
2c116af5aa
commit
4e322b9fe9
13
MainForm.Designer.cs
generated
13
MainForm.Designer.cs
generated
@ -35,7 +35,6 @@
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.contextMenuStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@ -90,16 +89,6 @@
|
||||
this.flowLayoutPanel1.TabIndex = 27;
|
||||
this.flowLayoutPanel1.WrapContents = false;
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Location = new System.Drawing.Point(722, 355);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(78, 40);
|
||||
this.button3.TabIndex = 28;
|
||||
this.button3.Text = "button3";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Click += new System.EventHandler(this.button3_Click);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@ -107,7 +96,6 @@
|
||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(83)))), ((int)(((byte)(93)))));
|
||||
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.ClientSize = new System.Drawing.Size(1088, 440);
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.flowLayoutPanel1);
|
||||
this.Controls.Add(this.titlePanel1);
|
||||
this.Name = "MainForm";
|
||||
@ -122,7 +110,6 @@
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
||||
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
}
|
||||
|
23
MainForm.cs
23
MainForm.cs
@ -42,6 +42,8 @@ namespace AppLauncher
|
||||
{
|
||||
loadSession(jsonfigFilename);
|
||||
}
|
||||
|
||||
this.Width = flowLayoutPanel1.Width + (flowLayoutPanel1.Left * 2);
|
||||
}
|
||||
|
||||
private async void button1_Click(object sender, EventArgs e)
|
||||
@ -204,32 +206,19 @@ namespace AppLauncher
|
||||
return;
|
||||
}
|
||||
|
||||
int maxWidth = 0;
|
||||
flowLayoutPanel1.Controls.Clear();
|
||||
|
||||
foreach (TileGroupModel item in rs)
|
||||
{
|
||||
TileContainer panel = new TileContainer(item);
|
||||
flowLayoutPanel1.Controls.Add(panel);
|
||||
maxWidth = Math.Max(maxWidth, panel.Width);
|
||||
|
||||
if (item.IsExpanded)
|
||||
{
|
||||
//await panel.Expand();
|
||||
}
|
||||
flowLayoutPanel1.Controls.Add(panel);
|
||||
}
|
||||
|
||||
flowLayoutPanel1.Width = maxWidth;
|
||||
}
|
||||
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
// loadSession(Application.StartupPath.TrimEnd('\\') + "\\test1.jsonfig");
|
||||
|
||||
}
|
||||
|
||||
private void button1_Click_1(object sender, EventArgs e)
|
||||
{
|
||||
EditTileForm addTileForm = new EditTileForm();
|
||||
addTileForm.ShowDialog();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -358,14 +358,7 @@ namespace AppLauncher.Windows.Forms
|
||||
ProcessAsAdmin = (pickerBox2.ComboBox.SelectedIndex == 1)
|
||||
};
|
||||
|
||||
//parentPanel.LoadInfo(model);
|
||||
|
||||
//parentPanel.Info.Title = textBox1.Text?.Trim();
|
||||
//parentPanel.Info.ProcessFilename = textBox2.Text?.Trim();
|
||||
//parentPanel.Info.ProcessArgument = textBox3.Text?.Trim();
|
||||
//parentPanel.Info.ProcessWorkingDirectory = textBox4.Text?.Trim();
|
||||
//parentPanel.Info.ProcessWindowStyle = (System.Diagnostics.ProcessWindowStyle) pickerBox1.ComboBox.SelectedIndex;
|
||||
//parentPanel.Info.ProcessAsAdmin = (pickerBox2.ComboBox.SelectedIndex == 1);
|
||||
parentPanel.AddTile(model);
|
||||
|
||||
this.Close();
|
||||
}
|
||||
|
@ -1,14 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using AppLauncher.Models;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Threading;
|
||||
using AppLauncher.Models;
|
||||
|
||||
namespace AppLauncher.Windows.Forms
|
||||
{
|
||||
@ -32,8 +27,10 @@ namespace AppLauncher.Windows.Forms
|
||||
|
||||
label1.TitleText = groupInfo.Title;
|
||||
panel1.SetGridSize(groupInfo.GridSize.Width, groupInfo.GridSize.Height);
|
||||
this.Width = panel1.Width;
|
||||
label1.Checked = groupInfo.IsExpanded;
|
||||
panel1.LoadTiles(model.Items);
|
||||
panel1.Resize += panel1_Resize;
|
||||
}
|
||||
|
||||
protected override async void OnLoad(EventArgs e)
|
||||
@ -44,14 +41,20 @@ namespace AppLauncher.Windows.Forms
|
||||
|
||||
this.Margin = new Padding(0, 0, 0, 0);
|
||||
this.Padding = new Padding(0, 0, 0, 20);
|
||||
this.MaximumSize = new Size(panel1.Width, expandedHeight);
|
||||
this.MinimumSize = new Size(panel1.Width, label1.Height);
|
||||
this.Size = this.MaximumSize;
|
||||
//this.MaximumSize = new Size(panel1.Width, ExpandedHeight);
|
||||
//this.MinimumSize = new Size(panel1.Width, label1.Height);
|
||||
//this.Size = this.MaximumSize;
|
||||
this.Size = new Size(panel1.Width, this.ExpandedHeight);
|
||||
}
|
||||
|
||||
protected int collapseHeight => label1.Height + panel1.CollapseHeight;
|
||||
private async void panel1_Resize(object sender, EventArgs e)
|
||||
{
|
||||
await this.InvalidateContainer();
|
||||
}
|
||||
|
||||
protected int expandedHeight => label1.Height + panel1.ExpandedHeight + this.Padding.Top + this.Padding.Bottom;
|
||||
public int CollapseHeight => label1.Height + panel1.CollapseHeight;
|
||||
|
||||
public int ExpandedHeight => label1.Height + panel1.ExpandedHeight + this.Padding.Top + this.Padding.Bottom;
|
||||
|
||||
public bool IsAnimating => isAnimating;
|
||||
|
||||
@ -63,7 +66,7 @@ namespace AppLauncher.Windows.Forms
|
||||
|
||||
isAnimating = true;
|
||||
|
||||
while (this.Height > collapseHeight)
|
||||
while (this.Height > this.CollapseHeight)
|
||||
{
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
@ -94,12 +97,12 @@ namespace AppLauncher.Windows.Forms
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
this.Invoke(new MethodInvoker(() => {
|
||||
this.Height = collapseHeight;
|
||||
this.Height = this.CollapseHeight;
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Height = collapseHeight;
|
||||
this.Height = this.CollapseHeight;
|
||||
}
|
||||
|
||||
isAnimating = false;
|
||||
@ -114,7 +117,7 @@ namespace AppLauncher.Windows.Forms
|
||||
|
||||
isAnimating = true;
|
||||
|
||||
while (this.Height < expandedHeight)
|
||||
while (this.Height < this.ExpandedHeight)
|
||||
{
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
|
@ -1,13 +1,8 @@
|
||||
using AppLauncher.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AppLauncher.Windows.Forms
|
||||
{
|
||||
@ -50,6 +45,24 @@ namespace AppLauncher.Windows.Forms
|
||||
}
|
||||
}
|
||||
|
||||
public TileContainer TileContainer
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.Parent == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (this.Parent.GetType() != typeof(TileContainer))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return (TileContainer)this.Parent;
|
||||
}
|
||||
}
|
||||
|
||||
public int TileSize => (tileSize + margin);
|
||||
|
||||
public int CollapseHeight => collapseHeight;
|
||||
@ -58,7 +71,32 @@ namespace AppLauncher.Windows.Forms
|
||||
|
||||
public void AddTile(TileModel tile)
|
||||
{
|
||||
Point gridSize = this.GridSize;
|
||||
|
||||
if (items.Count >= (gridSize.X * gridSize.Y))
|
||||
{
|
||||
this.SetGridSize(gridSize.X, (gridSize.Y + 1));
|
||||
}
|
||||
|
||||
Point? newCoord = findLastFreeCoord();
|
||||
if (newCoord == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
tile.Position = newCoord.Value;
|
||||
|
||||
TilePanel panel = new TilePanel();
|
||||
panel.LoadInfo(tile);
|
||||
panel.Location = convertCoordToLocation(tile.Position);
|
||||
|
||||
items.Add(new Item()
|
||||
{
|
||||
Tile = panel,
|
||||
Coord = tile.Position
|
||||
});
|
||||
|
||||
this.Controls.Add(panel);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
@ -66,21 +104,6 @@ namespace AppLauncher.Windows.Forms
|
||||
this.Controls.Clear();
|
||||
}
|
||||
|
||||
//public Point GetTileCoord(Point location) => this.GetTileCoord(location.X, location.Y);
|
||||
|
||||
//public Point GetTileCoord(int posX, int posY)
|
||||
//{
|
||||
// int x = (int)Math.Round(decimal.Divide(posX, this.TileSize));
|
||||
// int y = (int)Math.Round(decimal.Divide(posY, this.TileSize));
|
||||
|
||||
// if (x < 0) x = 0;
|
||||
// if (y < 0) y = 0;
|
||||
|
||||
// return new Point(x, y);
|
||||
//}
|
||||
|
||||
//public Point GetTilePosition(Point location) => this.GetTilePosition(location.X, location.Y);
|
||||
|
||||
public Point GetTilePosition(int posX, int posY)
|
||||
{
|
||||
int x = (int)Math.Round(decimal.Divide(posX, this.TileSize));
|
||||
@ -193,6 +216,65 @@ namespace AppLauncher.Windows.Forms
|
||||
return new Point(x, y);
|
||||
}
|
||||
|
||||
protected Point? findLastFreeCoord()
|
||||
{
|
||||
Point gridSize = this.GridSize;
|
||||
|
||||
// none available
|
||||
if (items.Count >= (gridSize.X * gridSize.Y))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// only one available
|
||||
if (items.Count >= ((gridSize.X * gridSize.Y) - 1))
|
||||
{
|
||||
return findFirstFreeCoord();
|
||||
}
|
||||
|
||||
Point? rv = null;
|
||||
|
||||
for (int y = (gridSize.Y - 1); y >= 0; y--)
|
||||
{
|
||||
for (int x = (gridSize.X - 1); x >= 0; x--)
|
||||
{
|
||||
if (hasTile(new Point(x, y)))
|
||||
{
|
||||
if (rv.HasValue)
|
||||
{
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = new Point(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected Point? findFirstFreeCoord()
|
||||
{
|
||||
Point gridSize = this.GridSize;
|
||||
|
||||
for (int y = 0; y < gridSize.Y; y++)
|
||||
{
|
||||
for (int x = 0; x < gridSize.X; x++)
|
||||
{
|
||||
if (hasTile(new Point(x, y)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
return new Point(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected Point? resolveCoord(Point coord)
|
||||
{
|
||||
if (!isTileInBounds(coord))
|
||||
|
Reference in New Issue
Block a user