using AppLauncher.Models; using AppLauncher.Windows.Forms; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Text; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace AppLauncher { public partial class MainForm : AForm { protected int collapsedWidth = 40; protected int expandedWidth = 800; public MainForm() : base() { InitializeComponent(); } //protected override void OnLoad(EventArgs e) //{ // base.OnLoad(e); //} protected override void OnShown(EventArgs e) { base.OnShown(e); string jsonfigFilename = Path.ChangeExtension(Application.ExecutablePath, "jsonfig"); if (File.Exists(jsonfigFilename)) { loadSession(jsonfigFilename); } this.Width = flowLayoutPanel1.Width + (flowLayoutPanel1.Left * 2); } private async void button1_Click(object sender, EventArgs e) { //if (this.Width > collapsedWidth) //{ // await collapseWindow(collapsedWidth, 6); //} //else //{ // await expandWindow(expandedWidth, 8); //} } private void button2_Click(object sender, EventArgs e) { //List groupList = new List(); //TileGroupModel group1 = new TileGroupModel() //{ // Title = "Featured", // IsExpanded = true, // Items = new List(), // GridSize = new Size(8, 2) //}; //group1.Items.Add(new TileModel() //{ // Title = "CubicExplorer", // Icon = null, // Position = new Point(0, 0), // ProcessFilename = @"C:\B\Portable Files\CubicExplorer\v0.95.1\CubicExplorer.exe", // ProcessWorkingDirectory = @"N:\D" //}); //group1.Items.Add(new TileModel() //{ // Title = "VeraCrypt", // Icon = null, // Position = new Point(1, 0), // ProcessFilename = @"C:\B\Portable Files\VeraCrypt\VeraCrypt-x64.exe", // ProcessWorkingDirectory = @"L:\" //}); //groupList.Add(group1); //File.WriteAllText(Application.StartupPath.TrimEnd('\\') + "\\test1.jsonfig", JsonConvert.SerializeObject(groupList)); //ProcessStartInfo process = new ProcessStartInfo(); //process.FileName = @"C:\B\Portable Files (pure)\Build and Deploy Utility\v0.2.0.046 alpha\badutil.exe"; //process.Arguments = ""; //process.WindowStyle = ProcessWindowStyle.Normal; //process.Verb = "runas"; //Process.Start(process); //richTextBox1.Text += tilePanelContainer1.GridSize.ToString() + Environment.NewLine; //tilePanelContainer1.Controls.Add(tilePanel1); //tilePanel1.Location = new Point(0, 0); //tilePanelContainer1.Controls.Add(tilePanel2); //tilePanel2.Location = new Point(0, 0); } public async Task ToggleSize() { if (this.Width > collapsedWidth) { flowLayoutPanel1.Visible = false; titlePanel1.LabelVisible = false; await collapseWindow(collapsedWidth, 6); } else { await expandWindow(expandedWidth, 8); flowLayoutPanel1.Visible = true; titlePanel1.LabelVisible = true; } } protected async Task collapseWindow(int width, int increment = 6) { await Task.Run(() => { while (this.Width > width) { if (this.InvokeRequired) { this.Invoke(new MethodInvoker(() => { this.Width -= increment; })); } else { this.Width -= increment; } Application.DoEvents(); } }); } protected async Task expandWindow(int width, int increment = 8) { await Task.Run(() => { while (this.Width < width) { if (this.InvokeRequired) { this.Invoke(new MethodInvoker(() => { this.Width += increment; //this.Invalidate(); })); } else { this.Width += increment; //this.Invalidate(); } Application.DoEvents(); } }); } private void toolStripMenuItem1_Click(object sender, EventArgs e) { this.TopMost = !this.TopMost; toolStripMenuItem1.Checked = this.TopMost; } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } protected async void loadSession(string filename) { string sourceCode = File.ReadAllText(filename); if (string.IsNullOrWhiteSpace(sourceCode)) { return; } List rs = JsonConvert.DeserializeObject>(sourceCode); if (rs == null) { return; } int maxWidth = 0; flowLayoutPanel1.Controls.Clear(); foreach (TileGroupModel item in rs) { TileContainer panel = new TileContainer(item); maxWidth = Math.Max(maxWidth, panel.Width); flowLayoutPanel1.Controls.Add(panel); } flowLayoutPanel1.Width = maxWidth; } } }