mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-05-19 03:42:37 +12:00
[Feature] Show loading menu (#161), version 1.0.19.4
This commit is contained in:
parent
a0cbd533cc
commit
b5d35ea0d5
|
@ -123,7 +123,27 @@ namespace SystemTrayMenu.Business
|
||||||
menus[rowData.MenuLevel + 1].Tag as RowData != rowData))
|
menus[rowData.MenuLevel + 1].Tag as RowData != rowData))
|
||||||
{
|
{
|
||||||
loadingRowData = rowData;
|
loadingRowData = rowData;
|
||||||
LoadStarted();
|
|
||||||
|
CreateAndShowLoadingMenu(rowData);
|
||||||
|
void CreateAndShowLoadingMenu(RowData rowData)
|
||||||
|
{
|
||||||
|
MenuData menuDataLoading = new MenuData
|
||||||
|
{
|
||||||
|
RowDatas = new List<RowData>(),
|
||||||
|
Validity = MenuDataValidity.Valid,
|
||||||
|
Level = rowData.MenuLevel + 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
Menu menuLoading = Create(menuDataLoading, Path.GetFileName(Config.Path));
|
||||||
|
menuLoading.IsLoadingMenu = true;
|
||||||
|
AdjustMenusSizeAndLocation();
|
||||||
|
menus[rowData.MenuLevel + 1] = menuLoading;
|
||||||
|
menuLoading.Tag = menuDataLoading.RowDataParent = rowData;
|
||||||
|
menuDataLoading.RowDataParent.SubMenu = menuLoading;
|
||||||
|
menuLoading.SetTypeLoading();
|
||||||
|
ShowSubMenu(menuLoading);
|
||||||
|
}
|
||||||
|
|
||||||
BackgroundWorker workerSubMenu = workersSubMenu.
|
BackgroundWorker workerSubMenu = workersSubMenu.
|
||||||
Where(w => !w.IsBusy).FirstOrDefault();
|
Where(w => !w.IsBusy).FirstOrDefault();
|
||||||
if (workerSubMenu == null)
|
if (workerSubMenu == null)
|
||||||
|
@ -142,10 +162,23 @@ namespace SystemTrayMenu.Business
|
||||||
|
|
||||||
void LoadSubMenuCompleted(object senderCompleted, RunWorkerCompletedEventArgs e)
|
void LoadSubMenuCompleted(object senderCompleted, RunWorkerCompletedEventArgs e)
|
||||||
{
|
{
|
||||||
LoadStopped();
|
|
||||||
MenuData menuData = (MenuData)e.Result;
|
MenuData menuData = (MenuData)e.Result;
|
||||||
if (menus[0].IsUsable &&
|
if (menuData.Validity == MenuDataValidity.AbortedOrUnknown)
|
||||||
menuData.Validity != MenuDataValidity.AbortedOrUnknown)
|
{
|
||||||
|
CloseLoadingMenu();
|
||||||
|
void CloseLoadingMenu()
|
||||||
|
{
|
||||||
|
if (loadingRowData != null)
|
||||||
|
{
|
||||||
|
Menu menuLoading = menus[loadingRowData.MenuLevel + 1];
|
||||||
|
if (menuLoading != null && menuLoading.IsLoadingMenu)
|
||||||
|
{
|
||||||
|
CloseMenu(loadingRowData.MenuLevel + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (menus[0].IsUsable)
|
||||||
{
|
{
|
||||||
Menu menu = Create(menuData);
|
Menu menu = Create(menuData);
|
||||||
switch (menuData.Validity)
|
switch (menuData.Validity)
|
||||||
|
|
|
@ -39,5 +39,5 @@ using System.Runtime.InteropServices;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.0.19.3")]
|
[assembly: AssemblyVersion("1.0.19.4")]
|
||||||
[assembly: AssemblyFileVersion("1.0.19.3")]
|
[assembly: AssemblyFileVersion("1.0.19.4")]
|
||||||
|
|
|
@ -199,10 +199,10 @@
|
||||||
<data name="ic_fluent_folder_arrow_right_48_regular" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="ic_fluent_folder_arrow_right_48_regular" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\ic_fluent_folder_arrow_right_48_regular.svg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>..\Resources\ic_fluent_folder_arrow_right_48_regular.svg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Loading" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\Loading.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="NotFound" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="NotFound" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\NotFound.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\NotFound.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Loading" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Loading.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
Binary file not shown.
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
9
Resources/lang.Designer.cs
generated
9
Resources/lang.Designer.cs
generated
|
@ -411,6 +411,15 @@ namespace SystemTrayMenu.Resources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to loading.
|
||||||
|
/// </summary>
|
||||||
|
internal static string loading {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("loading", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Log File.
|
/// Looks up a localized string similar to Log File.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Nastavit jako složku SystemTrayMenu</value>
|
<value>Nastavit jako složku SystemTrayMenu</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>načítání</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Als SystemTrayMenu-Ordner festlegen</value>
|
<value>Als SystemTrayMenu-Ordner festlegen</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>Wird geladen</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Establecer como carpeta SystemTrayMenu</value>
|
<value>Establecer como carpeta SystemTrayMenu</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>cargando</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Définir comme dossier SystemTrayMenu</value>
|
<value>Définir comme dossier SystemTrayMenu</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>Chargement en cours</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Imposta come cartella SystemTrayMenu</value>
|
<value>Imposta come cartella SystemTrayMenu</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>Caricamento in corso</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>SystemTrayMenuフォルダーとして設定</value>
|
<value>SystemTrayMenuフォルダーとして設定</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>読み込み中</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>SystemTrayMenu 폴더로 설정</value>
|
<value>SystemTrayMenu 폴더로 설정</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>로딩</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Instellen als SystemTrayMenu-map</value>
|
<value>Instellen als SystemTrayMenu-map</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>bezig met laden</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Definir como pasta SystemTrayMenu</value>
|
<value>Definir como pasta SystemTrayMenu</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>Carregando</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Set as SystemTrayMenu folder</value>
|
<value>Set as SystemTrayMenu folder</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>loading</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Установить как папку SystemTrayMenu</value>
|
<value>Установить как папку SystemTrayMenu</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>загрузка</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>Đặt làm thư mục SystemTrayMenu</value>
|
<value>Đặt làm thư mục SystemTrayMenu</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>Đang tải</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -336,4 +336,7 @@
|
||||||
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
<data name="Set as SystemTrayMenu folder" xml:space="preserve">
|
||||||
<value>设置为 SystemTrayMenu 文件夹</value>
|
<value>设置为 SystemTrayMenu 文件夹</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="loading" xml:space="preserve">
|
||||||
|
<value>加载</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -126,7 +126,6 @@ namespace SystemTrayMenu.UserInterface
|
||||||
{
|
{
|
||||||
if (DateTime.Now - timeLoadingStart > new TimeSpan(0, 0, 0, 0, 500))
|
if (DateTime.Now - timeLoadingStart > new TimeSpan(0, 0, 0, 0, 500))
|
||||||
{
|
{
|
||||||
Cursor.Current = Cursors.WaitCursor;
|
|
||||||
notifyIcon.Icon = bitmapsLoading[loadCount++ % indexLoad];
|
notifyIcon.Icon = bitmapsLoading[loadCount++ % indexLoad];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,8 @@ namespace SystemTrayMenu.UserInterface
|
||||||
|
|
||||||
internal partial class Menu
|
internal partial class Menu
|
||||||
{
|
{
|
||||||
|
public bool IsLoadingMenu { get; internal set; }
|
||||||
|
|
||||||
private void InitializeComponentControlsTheDesignerRemoves()
|
private void InitializeComponentControlsTheDesignerRemoves()
|
||||||
{
|
{
|
||||||
DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle();
|
DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle();
|
||||||
|
|
|
@ -7,6 +7,7 @@ namespace SystemTrayMenu.UserInterface
|
||||||
using System;
|
using System;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
@ -19,10 +20,12 @@ namespace SystemTrayMenu.UserInterface
|
||||||
|
|
||||||
internal partial class Menu : Form
|
internal partial class Menu : Form
|
||||||
{
|
{
|
||||||
|
private static readonly Icon LoadingIcon = Properties.Resources.Loading;
|
||||||
private static readonly Icon Search = Properties.Resources.search;
|
private static readonly Icon Search = Properties.Resources.search;
|
||||||
private readonly Fading fading = new Fading();
|
private readonly Fading fading = new Fading();
|
||||||
private bool isShowing;
|
private bool isShowing;
|
||||||
private bool directionToRight;
|
private bool directionToRight;
|
||||||
|
private int rotationAngle;
|
||||||
|
|
||||||
internal Menu()
|
internal Menu()
|
||||||
{
|
{
|
||||||
|
@ -178,6 +181,7 @@ namespace SystemTrayMenu.UserInterface
|
||||||
Empty,
|
Empty,
|
||||||
NoAccess,
|
NoAccess,
|
||||||
MaxReached,
|
MaxReached,
|
||||||
|
Loading,
|
||||||
}
|
}
|
||||||
|
|
||||||
internal enum StartLocation
|
internal enum StartLocation
|
||||||
|
@ -223,6 +227,11 @@ namespace SystemTrayMenu.UserInterface
|
||||||
SetType(MenuType.NoAccess);
|
SetType(MenuType.NoAccess);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void SetTypeLoading()
|
||||||
|
{
|
||||||
|
SetType(MenuType.Loading);
|
||||||
|
}
|
||||||
|
|
||||||
internal void SetType(MenuType type)
|
internal void SetType(MenuType type)
|
||||||
{
|
{
|
||||||
if (type != MenuType.Main)
|
if (type != MenuType.Main)
|
||||||
|
@ -232,6 +241,8 @@ namespace SystemTrayMenu.UserInterface
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
case MenuType.Main:
|
||||||
|
break;
|
||||||
case MenuType.Sub:
|
case MenuType.Sub:
|
||||||
break;
|
break;
|
||||||
case MenuType.Empty:
|
case MenuType.Empty:
|
||||||
|
@ -255,7 +266,18 @@ namespace SystemTrayMenu.UserInterface
|
||||||
textBoxSearch.Visible = false;
|
textBoxSearch.Visible = false;
|
||||||
tableLayoutPanelSearch.Visible = false;
|
tableLayoutPanelSearch.Visible = false;
|
||||||
break;
|
break;
|
||||||
case MenuType.Main:
|
case MenuType.Loading:
|
||||||
|
SetTitle(Translator.GetText("loading"));
|
||||||
|
pictureBoxSearch.Visible = false;
|
||||||
|
textBoxSearch.Visible = false;
|
||||||
|
tableLayoutPanelSearch.Visible = false;
|
||||||
|
pictureBoxOpenFolder.Visible = false;
|
||||||
|
pictureBoxMenuAlwaysOpen.Paint -= PictureBoxMenuAlwaysOpen_Paint;
|
||||||
|
pictureBoxMenuAlwaysOpen.Paint += LoadingMenu_Paint;
|
||||||
|
timerUpdateIcons.Tick -= TimerUpdateIcons_Tick;
|
||||||
|
timerUpdateIcons.Tick += TimerUpdateLoadingMenu_Tick;
|
||||||
|
timerUpdateIcons.Interval = 15;
|
||||||
|
pictureBoxMenuAlwaysOpen.Visible = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -769,6 +791,50 @@ namespace SystemTrayMenu.UserInterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void TimerUpdateLoadingMenu_Tick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
pictureBoxMenuAlwaysOpen.Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadingMenu_Paint(object sender, PaintEventArgs e)
|
||||||
|
{
|
||||||
|
PictureBox pictureBox = (PictureBox)sender;
|
||||||
|
rotationAngle = rotationAngle + 5;
|
||||||
|
e.Graphics.DrawImage(
|
||||||
|
RotateImage(LoadingIcon.ToBitmap(), rotationAngle),
|
||||||
|
new Rectangle(Point.Empty, new Size(pictureBox.ClientSize.Width - 2, pictureBox.ClientSize.Height - 2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Image RotateImage(Image img, float rotationAngle)
|
||||||
|
{
|
||||||
|
// create an empty Bitmap image
|
||||||
|
Bitmap bmp = new Bitmap(img.Width, img.Height);
|
||||||
|
|
||||||
|
// turn the Bitmap into a Graphics object
|
||||||
|
Graphics gfx = Graphics.FromImage(bmp);
|
||||||
|
|
||||||
|
// now we set the rotation point to the center of our image
|
||||||
|
gfx.TranslateTransform(0.5f + ((float)bmp.Width / 2), 0.5f + ((float)bmp.Height / 2));
|
||||||
|
|
||||||
|
// now rotate the image
|
||||||
|
gfx.RotateTransform(rotationAngle);
|
||||||
|
|
||||||
|
gfx.TranslateTransform(0.5f - ((float)bmp.Width / 2), 0.5f - ((float)bmp.Height / 2));
|
||||||
|
|
||||||
|
// set the InterpolationMode to HighQualityBicubic so to ensure a high
|
||||||
|
// quality image once it is transformed to the specified size
|
||||||
|
gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||||
|
|
||||||
|
// now draw our new image onto the graphics object
|
||||||
|
gfx.DrawImage(img, new Point(0, 0));
|
||||||
|
|
||||||
|
// dispose of our Graphics object
|
||||||
|
gfx.Dispose();
|
||||||
|
|
||||||
|
// return the image
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
|
||||||
private void PictureBoxMenuOpenFolder_Paint(object sender, PaintEventArgs e)
|
private void PictureBoxMenuOpenFolder_Paint(object sender, PaintEventArgs e)
|
||||||
{
|
{
|
||||||
PictureBox pictureBox = (PictureBox)sender;
|
PictureBox pictureBox = (PictureBox)sender;
|
||||||
|
|
Loading…
Reference in a new issue