From fdf3ccbc1d92a27e653e2724e1dc5540eb7c2d0e Mon Sep 17 00:00:00 2001
From: Ray <sympatheticfire@gmail.com>
Date: Sat, 14 Nov 2020 15:36:46 +0000
Subject: [PATCH 1/3] Added: toggle animation

---
 .../RyzStudio/Windows/Forms/ThreadControl.cs  | 14 +++++
 MainForm.Designer.cs                          | 28 +++++++---
 MainForm.cs                                   | 55 ++++++++++++++-----
 Models/LauncherSession.cs                     | 19 ++-----
 Properties/AssemblyInfo.cs                    |  2 +-
 5 files changed, 80 insertions(+), 38 deletions(-)

diff --git a/FizzyLauncher.UI/RyzStudio/Windows/Forms/ThreadControl.cs b/FizzyLauncher.UI/RyzStudio/Windows/Forms/ThreadControl.cs
index 6b14670..1a0e228 100644
--- a/FizzyLauncher.UI/RyzStudio/Windows/Forms/ThreadControl.cs
+++ b/FizzyLauncher.UI/RyzStudio/Windows/Forms/ThreadControl.cs
@@ -355,6 +355,20 @@ namespace RyzStudio.Windows.Forms
             }
         }
 
+        public static void SetLocation(Control control, Point value)
+        {
+            if (control.InvokeRequired)
+            {
+                control.Invoke(new MethodInvoker(() => {
+                    control.Location = value;
+                }));
+            }
+            else
+            {
+                control.Location = value;
+            }
+        }
+
         public static void SetSize(Control control, int width, int height) => SetSize(control, new Size(width, height));
 
         public static void SetSize(Control control, Size value)
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 8a17426..f05390d 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -55,6 +55,7 @@
             this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
             this.contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components);
             this.exitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem();
             this.contextMenuStrip1.SuspendLayout();
             this.contextMenuStrip2.SuspendLayout();
             this.SuspendLayout();
@@ -67,7 +68,7 @@
             this.toolStripMenuItem9,
             this.helpToolStripMenuItem});
             this.contextMenuStrip1.Name = "contextMenuStrip1";
-            this.contextMenuStrip1.Size = new System.Drawing.Size(102, 92);
+            this.contextMenuStrip1.Size = new System.Drawing.Size(181, 114);
             this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening);
             // 
             // toolStripMenuItem4
@@ -83,7 +84,7 @@
             this.toolStripMenuItem10,
             this.exitToolStripMenuItem});
             this.toolStripMenuItem4.Name = "toolStripMenuItem4";
-            this.toolStripMenuItem4.Size = new System.Drawing.Size(101, 22);
+            this.toolStripMenuItem4.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem4.Text = "&File";
             // 
             // toolStripMenuItem5
@@ -146,15 +147,16 @@
             // toolStripMenuItem3
             // 
             this.toolStripMenuItem3.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem11,
             this.toolStripMenuItem1});
             this.toolStripMenuItem3.Name = "toolStripMenuItem3";
-            this.toolStripMenuItem3.Size = new System.Drawing.Size(101, 22);
+            this.toolStripMenuItem3.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem3.Text = "&View";
             // 
             // toolStripMenuItem1
             // 
             this.toolStripMenuItem1.Name = "toolStripMenuItem1";
-            this.toolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
+            this.toolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem1.Text = "Always On &Top";
             this.toolStripMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem1_Click);
             // 
@@ -163,7 +165,7 @@
             this.toolStripMenuItem9.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.optionToolStripMenuItem});
             this.toolStripMenuItem9.Name = "toolStripMenuItem9";
-            this.toolStripMenuItem9.Size = new System.Drawing.Size(101, 22);
+            this.toolStripMenuItem9.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem9.Text = "&Tools";
             // 
             // optionToolStripMenuItem
@@ -180,7 +182,7 @@
             this.toolStripSeparator1,
             this.aboutToolStripMenuItem});
             this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
-            this.helpToolStripMenuItem.Size = new System.Drawing.Size(101, 22);
+            this.helpToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
             this.helpToolStripMenuItem.Text = "&Help";
             // 
             // viewHelpToolStripMenuItem
@@ -240,15 +242,22 @@
             this.contextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.exitToolStripMenuItem1});
             this.contextMenuStrip2.Name = "contextMenuStrip2";
-            this.contextMenuStrip2.Size = new System.Drawing.Size(181, 48);
+            this.contextMenuStrip2.Size = new System.Drawing.Size(94, 26);
             // 
             // exitToolStripMenuItem1
             // 
             this.exitToolStripMenuItem1.Name = "exitToolStripMenuItem1";
-            this.exitToolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
+            this.exitToolStripMenuItem1.Size = new System.Drawing.Size(93, 22);
             this.exitToolStripMenuItem1.Text = "E&xit";
             this.exitToolStripMenuItem1.Click += new System.EventHandler(this.exitToolStripMenuItem1_Click);
             // 
+            // toolStripMenuItem11
+            // 
+            this.toolStripMenuItem11.Name = "toolStripMenuItem11";
+            this.toolStripMenuItem11.Size = new System.Drawing.Size(180, 22);
+            this.toolStripMenuItem11.Text = "Enable &Animation";
+            this.toolStripMenuItem11.Click += new System.EventHandler(this.toolStripMenuItem11_Click);
+            // 
             // MainForm
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -258,7 +267,7 @@
             this.ClientSize = new System.Drawing.Size(633, 400);
             this.Controls.Add(this.flowLayoutPanel1);
             this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-            this.MinimumSize = new System.Drawing.Size(633, 280);
+            this.MinimumSize = new System.Drawing.Size(420, 280);
             this.Name = "MainForm";
             this.Text = "Launcher";
             this.TitleContextMenuStrip = this.contextMenuStrip1;
@@ -294,6 +303,7 @@
         private System.Windows.Forms.NotifyIcon notifyIcon1;
         private System.Windows.Forms.ContextMenuStrip contextMenuStrip2;
         private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem1;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11;
     }
 }
 
diff --git a/MainForm.cs b/MainForm.cs
index 01a34f2..57a4714 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -63,6 +63,7 @@ namespace AppLauncher
             else
             {
                 this.CurrentSession = new LauncherSession();
+                ThreadControl.SetSize(this, this.MinimumSize);
                 ThreadControl.SetVisible(this, true);
             }
         }
@@ -373,24 +374,24 @@ namespace AppLauncher
                     return;
                 }
 
-                LauncherSession loadedSession = JsonConvert.DeserializeObject<LauncherSession>(sourceCode);
-                if (loadedSession == null)
-                {
-                    return;
-                }
-
                 // load options
-                this.CurrentSession = loadedSession.ToSimple();
+                this.CurrentSession = JsonConvert.DeserializeObject<LauncherSession>(sourceCode);
+                if (this.CurrentSession == null)
+                {
+                    this.CurrentSession = new LauncherSession();
+                }
 
                 // load tiles
                 int maxWidth = 0;
                 ThreadControl.Clear(flowLayoutPanel1);
 
-                if (loadedSession.Groups != null)
+                if (this.CurrentSession.Groups != null)
                 {
-                    foreach (TileGroupModel item in loadedSession.Groups)
+                    foreach (TileGroupModel item in this.CurrentSession.Groups)
                     {
                         TTilePanelLayout panel = new TTilePanelLayout(item);
+                        panel.EnableAnimation = this.CurrentSession.EnableAnimation;
+
                         maxWidth = Math.Max(maxWidth, panel.Width);
 
                         ThreadControl.Add(flowLayoutPanel1, panel);
@@ -399,6 +400,7 @@ namespace AppLauncher
 
                 // ui
                 ThreadControl.SetSize(this, (maxWidth + SystemInformation.VerticalScrollBarWidth + 20 + flowLayoutPanel1.Left), this.CurrentSession.DefaultHeight);
+                if (!this.CurrentSession.StartPosition.IsEmpty) ThreadControl.SetLocation(this, this.CurrentSession.StartPosition);
 
                 //
                 ThreadControl.SetTopMost(this, this.CurrentSession.AlwaysOnTop);
@@ -460,12 +462,17 @@ namespace AppLauncher
             isBusy = true;
 
             // update session
+            if (this.CurrentSession == null)
+            {
+                this.CurrentSession = new LauncherSession();
+            }
+
             this.CurrentSession.DefaultHeight = this.Height;
             this.CurrentSession.AlwaysOnTop = this.TopMost;
+            this.CurrentSession.StartPosition = this.Location;
 
             // save
-            LauncherSession saveSession = this.CurrentSession.ToSimple();
-            saveSession.Groups = new List<TileGroupModel>();
+            this.CurrentSession.Groups = new List<TileGroupModel>();
             for (int i = 0; i < flowLayoutPanel1.Controls.Count; i++)
             {
                 if (flowLayoutPanel1.Controls[i].GetType() != typeof(TTilePanelLayout))
@@ -474,12 +481,12 @@ namespace AppLauncher
                 }
 
                 TTilePanelLayout container = flowLayoutPanel1.Controls[i] as TTilePanelLayout;
-                saveSession.Groups.Add(container.Model);
+                this.CurrentSession.Groups.Add(container.Model);
             }
 
             try
             {
-                File.WriteAllText(filename, JsonConvert.SerializeObject(saveSession));
+                File.WriteAllText(filename, JsonConvert.SerializeObject(this.CurrentSession));
 
                 if (showNotices)
                 {
@@ -553,5 +560,25 @@ namespace AppLauncher
             this.Close();
         }
 
+        private void toolStripMenuItem11_Click(object sender, EventArgs e)
+        {
+            if (this.CurrentSession == null) return;
+
+            this.CurrentSession.EnableAnimation = !this.CurrentSession.EnableAnimation;
+
+            toolStripMenuItem11.Checked = this.CurrentSession.EnableAnimation;
+
+            for (int i = 0; i < flowLayoutPanel1.Controls.Count; i++)
+            {
+                if (flowLayoutPanel1.Controls[i].GetType() != typeof(TTilePanelLayout))
+                {
+                    continue;
+                }
+
+                TTilePanelLayout container = flowLayoutPanel1.Controls[i] as TTilePanelLayout;
+                container.EnableAnimation = this.CurrentSession.EnableAnimation;
+            }
+        }
+
     }
-}
+}
\ No newline at end of file
diff --git a/Models/LauncherSession.cs b/Models/LauncherSession.cs
index f23c889..6a1721a 100644
--- a/Models/LauncherSession.cs
+++ b/Models/LauncherSession.cs
@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Drawing;
 
 namespace AppLauncher.Models
 {
@@ -25,25 +26,15 @@ namespace AppLauncher.Models
 
         public int DefaultHeight { get; set; } = 280;
         public HotKeyOptions HotKey { get; set; } = null;
+
         public bool AlwaysOnTop { get; set; } = false;
+        public bool EnableAnimation { get; set; } = false;
+
         public bool HideOnClose { get; set; } = false;
         public bool HideOnClick { get; set; } = false;
         public AutoSaveOption AutoSave { get; set; } =  AutoSaveOption.Prompt;
         public List<TileGroupModel> Groups { get; set; } = new List<TileGroupModel>();
-
-        public LauncherSession ToSimple()
-        {
-            return new LauncherSession()
-            {
-                DefaultHeight = this.DefaultHeight,
-                HotKey = this.HotKey,
-                AlwaysOnTop = this.AlwaysOnTop,
-                HideOnClose = this.HideOnClose,
-                HideOnClick = this.HideOnClick,
-                AutoSave = this.AutoSave,
-                Groups = null
-            };
-        }
+        public Point StartPosition { get; set; } = Point.Empty;
 
     }
 }
\ No newline at end of file
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
index 5fb28ec..0c3a60f 100644
--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@ using System.Runtime.InteropServices;
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("0.1.1.144")]
+[assembly: AssemblyFileVersion("0.1.1.153")]

From eb334fe00c65d16d00b398a33234575b3ff3992a Mon Sep 17 00:00:00 2001
From: Ray <sympatheticfire@gmail.com>
Date: Sat, 14 Nov 2020 15:58:10 +0000
Subject: [PATCH 2/3] Added: drag-drop file in folder support

---
 Windows/Forms/Tile/TTilePanel.cs       | 78 ++++++++++++++++++++
 Windows/Forms/Tile/TTilePanelLayout.cs | 98 ++++++++++++++------------
 2 files changed, 130 insertions(+), 46 deletions(-)

diff --git a/Windows/Forms/Tile/TTilePanel.cs b/Windows/Forms/Tile/TTilePanel.cs
index 00e144c..7b3e45a 100644
--- a/Windows/Forms/Tile/TTilePanel.cs
+++ b/Windows/Forms/Tile/TTilePanel.cs
@@ -24,6 +24,7 @@ namespace AppLauncher.Windows.Forms
             this.BackColor = Color.FromArgb(250, 250, 250);
             this.ContextMenuStrip = contextMenuStrip1;
             this.DoubleBuffered = true;
+            this.AllowDrop = true;
 
             label1.ForeColor = Color.FromArgb(99, 105, 119);
             label1.Font = new Font(this.Font.FontFamily, 8.25F);
@@ -76,6 +77,83 @@ namespace AppLauncher.Windows.Forms
             }
         }
 
+        protected override void OnDragDrop(DragEventArgs e)
+        {
+            string[] fileList = e.Data.GetData(DataFormats.FileDrop) as string[];
+
+            if (this.ModelInfo.IsGroup)
+            {
+                this.DropFileList(fileList);
+
+                this.LoadInfo(this.ModelInfo);
+            }
+            else
+            {
+                if (this.PanelContainer != null)
+                {
+                    this.PanelContainer.DropFileList(fileList);
+                }
+            }
+        }
+
+        protected override void OnDragOver(DragEventArgs e)
+        {
+            base.OnDragDrop(e);
+
+            e.Effect = (e.Data.GetDataPresent(DataFormats.FileDrop)) ? DragDropEffects.Link : DragDropEffects.None;
+        }
+
+        public void DropFileList(string[] fileList)
+        {
+            if (fileList == null)
+            {
+                return;
+            }
+
+            if (fileList.Length <= 0)
+            {
+                return;
+            }
+
+            if (string.IsNullOrWhiteSpace(fileList[0]))
+            {
+                return;
+            }
+
+            TileModel model = new TileModel()
+            {
+                ProcessFilename = fileList[0],
+                Title = Path.GetFileName(fileList[0])
+            };
+
+            // exe
+            if (Path.GetExtension(fileList[0]).Equals(".exe", StringComparison.CurrentCultureIgnoreCase))
+            {
+                if (File.Exists(fileList[0]))
+                {
+                    try
+                    {
+                        FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(fileList[0]);
+                        if (fvi != null)
+                        {
+                            model.Title = fvi.ProductName;
+                        }
+                    }
+                    catch
+                    {
+                        // do nothing
+                    }
+                }
+
+                if (string.IsNullOrWhiteSpace(model.Title))
+                {
+                    model.Title = Path.GetFileNameWithoutExtension(fileList[0]);
+                }
+            }
+
+            this.ModelInfo.Items.Add(model);
+        }
+
         public void LoadInfo(TileModel model)
         {
             this.modelInfo = model;
diff --git a/Windows/Forms/Tile/TTilePanelLayout.cs b/Windows/Forms/Tile/TTilePanelLayout.cs
index 53e62a8..98c9125 100644
--- a/Windows/Forms/Tile/TTilePanelLayout.cs
+++ b/Windows/Forms/Tile/TTilePanelLayout.cs
@@ -55,53 +55,8 @@ namespace AppLauncher.Windows.Forms
         protected override void OnDragDrop(DragEventArgs e)
         {
             string[] fileList = e.Data.GetData(DataFormats.FileDrop) as string[];
-            if (fileList == null)
-            {
-                return;
-            }
 
-            if (fileList.Length <= 0)
-            {
-                return;
-            }
-
-            if (string.IsNullOrWhiteSpace(fileList[0]))
-            {
-                return;
-            }
-
-            TileModel model = new TileModel()
-            {
-                ProcessFilename = fileList[0],
-                Title = Path.GetFileName(fileList[0])
-            };
-
-            // exe
-            if (Path.GetExtension(fileList[0]).Equals(".exe", StringComparison.CurrentCultureIgnoreCase))
-            {
-                if (File.Exists(fileList[0]))
-                {
-                    try
-                    {
-                        FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(fileList[0]);
-                        if (fvi != null)
-                        {
-                            model.Title = fvi.ProductName;
-                        }
-                    }
-                    catch
-                    {
-                        // do nothing
-                    }
-                }
-
-                if (string.IsNullOrWhiteSpace(model.Title))
-                {
-                    model.Title = Path.GetFileNameWithoutExtension(fileList[0]);
-                }
-            }
-
-            this.AddTile(model);
+            this.DropFileList(fileList);
         }
 
         protected override void OnDragOver(DragEventArgs e)
@@ -180,6 +135,57 @@ namespace AppLauncher.Windows.Forms
 
         public int ExpandedHeight => expandedHeight + this.Padding.Bottom;
 
+        public void DropFileList(string[] fileList)
+        {
+            if (fileList == null)
+            {
+                return;
+            }
+
+            if (fileList.Length <= 0)
+            {
+                return;
+            }
+
+            if (string.IsNullOrWhiteSpace(fileList[0]))
+            {
+                return;
+            }
+
+            TileModel model = new TileModel()
+            {
+                ProcessFilename = fileList[0],
+                Title = Path.GetFileName(fileList[0])
+            };
+
+            // exe
+            if (Path.GetExtension(fileList[0]).Equals(".exe", StringComparison.CurrentCultureIgnoreCase))
+            {
+                if (File.Exists(fileList[0]))
+                {
+                    try
+                    {
+                        FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(fileList[0]);
+                        if (fvi != null)
+                        {
+                            model.Title = fvi.ProductName;
+                        }
+                    }
+                    catch
+                    {
+                        // do nothing
+                    }
+                }
+
+                if (string.IsNullOrWhiteSpace(model.Title))
+                {
+                    model.Title = Path.GetFileNameWithoutExtension(fileList[0]);
+                }
+            }
+
+            this.AddTile(model);
+        }
+
         public TileGroupModel Model
         {
             get

From 71480592d29dee70846f5c955211dc4ceaeded0d Mon Sep 17 00:00:00 2001
From: Ray <sympatheticfire@gmail.com>
Date: Sat, 14 Nov 2020 16:47:52 +0000
Subject: [PATCH 3/3] Added: big icon support

---
 .../RyzStudio/Windows/Forms/ThreadControl.cs  | 15 +++++++
 MainForm.Designer.cs                          | 24 ++++++++---
 MainForm.cs                                   | 19 ++++----
 Models/LauncherSession.cs                     |  1 +
 Windows/Forms/Tile/TTilePanel.cs              | 29 ++++++++++++-
 Windows/Forms/Tile/TTilePanelLayout.cs        | 43 ++++++++++++++++++-
 6 files changed, 111 insertions(+), 20 deletions(-)

diff --git a/FizzyLauncher.UI/RyzStudio/Windows/Forms/ThreadControl.cs b/FizzyLauncher.UI/RyzStudio/Windows/Forms/ThreadControl.cs
index 1a0e228..4c9c89e 100644
--- a/FizzyLauncher.UI/RyzStudio/Windows/Forms/ThreadControl.cs
+++ b/FizzyLauncher.UI/RyzStudio/Windows/Forms/ThreadControl.cs
@@ -290,6 +290,21 @@ namespace RyzStudio.Windows.Forms
             return rv;
         }
 
+        public static void SetChecked(ToolStripMenuItem control, bool value)
+        {
+            if (control.GetCurrentParent().InvokeRequired)
+            {
+                control.GetCurrentParent().Invoke(new MethodInvoker(() =>
+                {
+                    control.Checked = value;
+                }));
+            }
+            else
+            {
+                control.Checked = value;
+            }
+        }
+
         public static void SetEnable(Control control, bool value)
         {
             if (control.InvokeRequired)
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index f05390d..b7ff7d2 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -42,6 +42,7 @@
             this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripSeparator();
             this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem();
             this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
             this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem();
             this.optionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -55,7 +56,7 @@
             this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
             this.contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components);
             this.exitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
-            this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem();
+            this.toolStripMenuItem12 = new System.Windows.Forms.ToolStripMenuItem();
             this.contextMenuStrip1.SuspendLayout();
             this.contextMenuStrip2.SuspendLayout();
             this.SuspendLayout();
@@ -147,16 +148,24 @@
             // toolStripMenuItem3
             // 
             this.toolStripMenuItem3.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripMenuItem12,
             this.toolStripMenuItem11,
             this.toolStripMenuItem1});
             this.toolStripMenuItem3.Name = "toolStripMenuItem3";
             this.toolStripMenuItem3.Size = new System.Drawing.Size(180, 22);
             this.toolStripMenuItem3.Text = "&View";
             // 
+            // toolStripMenuItem11
+            // 
+            this.toolStripMenuItem11.Name = "toolStripMenuItem11";
+            this.toolStripMenuItem11.Size = new System.Drawing.Size(222, 22);
+            this.toolStripMenuItem11.Text = "Enable &Animation";
+            this.toolStripMenuItem11.Click += new System.EventHandler(this.toolStripMenuItem11_Click);
+            // 
             // toolStripMenuItem1
             // 
             this.toolStripMenuItem1.Name = "toolStripMenuItem1";
-            this.toolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
+            this.toolStripMenuItem1.Size = new System.Drawing.Size(222, 22);
             this.toolStripMenuItem1.Text = "Always On &Top";
             this.toolStripMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem1_Click);
             // 
@@ -251,12 +260,12 @@
             this.exitToolStripMenuItem1.Text = "E&xit";
             this.exitToolStripMenuItem1.Click += new System.EventHandler(this.exitToolStripMenuItem1_Click);
             // 
-            // toolStripMenuItem11
+            // toolStripMenuItem12
             // 
-            this.toolStripMenuItem11.Name = "toolStripMenuItem11";
-            this.toolStripMenuItem11.Size = new System.Drawing.Size(180, 22);
-            this.toolStripMenuItem11.Text = "Enable &Animation";
-            this.toolStripMenuItem11.Click += new System.EventHandler(this.toolStripMenuItem11_Click);
+            this.toolStripMenuItem12.Name = "toolStripMenuItem12";
+            this.toolStripMenuItem12.Size = new System.Drawing.Size(222, 22);
+            this.toolStripMenuItem12.Text = "Enable &Big Icons (In Folders)";
+            this.toolStripMenuItem12.Click += new System.EventHandler(this.toolStripMenuItem12_Click);
             // 
             // MainForm
             // 
@@ -304,6 +313,7 @@
         private System.Windows.Forms.ContextMenuStrip contextMenuStrip2;
         private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem1;
         private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11;
+        private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem12;
     }
 }
 
diff --git a/MainForm.cs b/MainForm.cs
index 57a4714..94f5260 100644
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -390,7 +390,6 @@ namespace AppLauncher
                     foreach (TileGroupModel item in this.CurrentSession.Groups)
                     {
                         TTilePanelLayout panel = new TTilePanelLayout(item);
-                        panel.EnableAnimation = this.CurrentSession.EnableAnimation;
 
                         maxWidth = Math.Max(maxWidth, panel.Width);
 
@@ -405,6 +404,8 @@ namespace AppLauncher
                 //
                 ThreadControl.SetTopMost(this, this.CurrentSession.AlwaysOnTop);
                 ThreadControl.SetVisible(this, true);
+                ThreadControl.SetChecked(toolStripMenuItem11, this.CurrentSession.EnableAnimation);
+                ThreadControl.SetChecked(toolStripMenuItem12, this.CurrentSession.EnableBigIconInFolder);
 
                 if (this.InvokeRequired)
                 {
@@ -567,17 +568,15 @@ namespace AppLauncher
             this.CurrentSession.EnableAnimation = !this.CurrentSession.EnableAnimation;
 
             toolStripMenuItem11.Checked = this.CurrentSession.EnableAnimation;
+        }
 
-            for (int i = 0; i < flowLayoutPanel1.Controls.Count; i++)
-            {
-                if (flowLayoutPanel1.Controls[i].GetType() != typeof(TTilePanelLayout))
-                {
-                    continue;
-                }
+        private void toolStripMenuItem12_Click(object sender, EventArgs e)
+        {
+            if (this.CurrentSession == null) return;
 
-                TTilePanelLayout container = flowLayoutPanel1.Controls[i] as TTilePanelLayout;
-                container.EnableAnimation = this.CurrentSession.EnableAnimation;
-            }
+            this.CurrentSession.EnableBigIconInFolder = !this.CurrentSession.EnableBigIconInFolder;
+
+            toolStripMenuItem12.Checked = this.CurrentSession.EnableBigIconInFolder;
         }
 
     }
diff --git a/Models/LauncherSession.cs b/Models/LauncherSession.cs
index 6a1721a..e007df4 100644
--- a/Models/LauncherSession.cs
+++ b/Models/LauncherSession.cs
@@ -29,6 +29,7 @@ namespace AppLauncher.Models
 
         public bool AlwaysOnTop { get; set; } = false;
         public bool EnableAnimation { get; set; } = false;
+        public bool EnableBigIconInFolder { get; set; } = false;
 
         public bool HideOnClose { get; set; } = false;
         public bool HideOnClick { get; set; } = false;
diff --git a/Windows/Forms/Tile/TTilePanel.cs b/Windows/Forms/Tile/TTilePanel.cs
index 7b3e45a..dd28ad7 100644
--- a/Windows/Forms/Tile/TTilePanel.cs
+++ b/Windows/Forms/Tile/TTilePanel.cs
@@ -85,7 +85,7 @@ namespace AppLauncher.Windows.Forms
             {
                 this.DropFileList(fileList);
 
-                this.LoadInfo(this.ModelInfo);
+                invalidateGroupMenu(this.ModelInfo);
             }
             else
             {
@@ -227,6 +227,8 @@ namespace AppLauncher.Windows.Forms
                 {
                     if (groupContextMenu != null)
                     {
+                        invalidateGroupMenuSize();
+
                         groupContextMenu.Show(this, e.Location);
                     }
                 }
@@ -341,7 +343,11 @@ namespace AppLauncher.Windows.Forms
 
         protected void invalidateGroupMenu(TileModel model)
         {
-            if (groupContextMenu == null) groupContextMenu = new ContextMenuStrip();
+            if (groupContextMenu == null)
+            {
+                groupContextMenu = new ContextMenuStrip();
+            }
+
             groupContextMenu.Items.Clear();
 
             if (model.Items == null)
@@ -356,7 +362,26 @@ namespace AppLauncher.Windows.Forms
                 toolItem.Tag = item;
                 toolItem.Click += toolItem_Click;
             }
+        }
 
+        protected void invalidateGroupMenuSize()
+        {
+            if (this.PanelContainer != null)
+            {
+                if (this.PanelContainer.MainForm != null)
+                {
+                    if (this.PanelContainer.MainForm.CurrentSession != null)
+                    {
+                        if (this.PanelContainer.MainForm.CurrentSession.EnableBigIconInFolder)
+                        {
+                            groupContextMenu.ImageScalingSize = new Size(24, 24);
+                            return;
+                        }
+                    }
+                }
+            }
+
+            groupContextMenu.ImageScalingSize = new Size(16, 16);
         }
 
         protected MainForm findMainForm()
diff --git a/Windows/Forms/Tile/TTilePanelLayout.cs b/Windows/Forms/Tile/TTilePanelLayout.cs
index 98c9125..283efbf 100644
--- a/Windows/Forms/Tile/TTilePanelLayout.cs
+++ b/Windows/Forms/Tile/TTilePanelLayout.cs
@@ -129,7 +129,24 @@ namespace AppLauncher.Windows.Forms
             }
         }
 
-        public bool EnableAnimation { get; set; } = true;
+        public bool EnableAnimation
+        {
+            get
+            {
+                MainForm mainForm = this.MainForm;
+                if (mainForm == null)
+                {
+                    return false;
+                }
+
+                if (mainForm.CurrentSession == null)
+                {
+                    return false;
+                }
+
+                return mainForm.CurrentSession.EnableAnimation;
+            }
+        }
 
         public int CollapseHeight => labelHeight + collapseHeight;
 
@@ -221,6 +238,30 @@ namespace AppLauncher.Windows.Forms
             }
         }
 
+        public MainForm MainForm
+        {
+            get
+            {
+                FlowLayoutPanel layoutPanel = this.FlowLayoutPanel;
+                if (layoutPanel == null)
+                {
+                    return null;
+                }
+
+                if (layoutPanel.Parent == null)
+                {
+                    return null;
+                }
+
+                if (layoutPanel.Parent.GetType() != typeof(MainForm))
+                {
+                    return null;
+                }
+
+                return layoutPanel.Parent as MainForm;
+            }
+        }
+
         public List<TileModel> Tiles
         {
             get