mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-06-09 14:04:50 +12:00
Feature: Detection of inaccessible folders
When a folder cannot be accessed due to rights management, it will show 'inaccessible' instead of 'empty'
This commit is contained in:
parent
c2845ee3f3
commit
5dd5e68d3d
|
@ -20,6 +20,7 @@ namespace SystemTrayMenu
|
|||
Main,
|
||||
Sub,
|
||||
Empty,
|
||||
NoAccess,
|
||||
MaxReached
|
||||
}
|
||||
|
||||
|
@ -69,6 +70,10 @@ namespace SystemTrayMenu
|
|||
{
|
||||
SetType(Type.Empty);
|
||||
}
|
||||
public void SetTypeNoAccess()
|
||||
{
|
||||
SetType(Type.NoAccess);
|
||||
}
|
||||
|
||||
public void SetType(Type type)
|
||||
{
|
||||
|
@ -84,6 +89,10 @@ namespace SystemTrayMenu
|
|||
SetTitle(Program.Translate("Folder empty"));
|
||||
labelTitle.BackColor = MenuDefines.Background;
|
||||
break;
|
||||
case Type.NoAccess:
|
||||
SetTitle(Program.Translate("Folder inaccessible"));
|
||||
labelTitle.BackColor = MenuDefines.Background;
|
||||
break;
|
||||
case Type.MaxReached:
|
||||
SetTitle($"Max {MenuDefines.MenusMax - 1} Menus");
|
||||
labelTitle.BackColor = MenuDefines.Background;
|
||||
|
|
|
@ -15,10 +15,17 @@ using TAFactory.IconPack;
|
|||
|
||||
namespace SystemTrayMenu.Controls
|
||||
{
|
||||
public enum MenuDataValidity
|
||||
{
|
||||
Valid,
|
||||
Invalid,
|
||||
NoAccess
|
||||
}
|
||||
|
||||
public struct MenuData
|
||||
{
|
||||
public List<RowData> RowDatas;
|
||||
public bool Valid;
|
||||
public MenuDataValidity Validity;
|
||||
public int Level;
|
||||
};
|
||||
}
|
9
Resources/lang.Designer.cs
generated
9
Resources/lang.Designer.cs
generated
|
@ -177,6 +177,15 @@ namespace SystemTrayMenu.Resources {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Folder inaccessible ähnelt.
|
||||
/// </summary>
|
||||
internal static string Folder_inaccessible {
|
||||
get {
|
||||
return ResourceManager.GetString("Folder inaccessible", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Zeichenfolge, die Deutsch ähnelt.
|
||||
/// </summary>
|
||||
|
|
|
@ -135,6 +135,33 @@
|
|||
<data name="Folder" xml:space="preserve">
|
||||
<value>Ordner</value>
|
||||
</data>
|
||||
<data name="Folder empty" xml:space="preserve">
|
||||
<value>Ordner leer</value>
|
||||
</data>
|
||||
<data name="ALT" xml:space="preserve">
|
||||
<value>ALT</value>
|
||||
</data>
|
||||
<data name="CTRL" xml:space="preserve">
|
||||
<value>STRG</value>
|
||||
</data>
|
||||
<data name="English" xml:space="preserve">
|
||||
<value>English</value>
|
||||
</data>
|
||||
<data name="(e.g. F12)" xml:space="preserve">
|
||||
<value>(z.B. F12)</value>
|
||||
</data>
|
||||
<data name="buttonDetails" xml:space="preserve">
|
||||
<value>Details</value>
|
||||
</data>
|
||||
<data name="buttonSystemInfo" xml:space="preserve">
|
||||
<value>System Info</value>
|
||||
</data>
|
||||
<data name="Folder inaccessible" xml:space="preserve">
|
||||
<value>Ordner unzugänglich</value>
|
||||
</data>
|
||||
<data name="German" xml:space="preserve">
|
||||
<value>Deutsch</value>
|
||||
</data>
|
||||
<data name="HintDragDropText" xml:space="preserve">
|
||||
<value>Ziehe das Notify-Icon per DragDrop vom SystemTray in die Taskleiste</value>
|
||||
</data>
|
||||
|
@ -150,31 +177,7 @@
|
|||
<data name="Restart" xml:space="preserve">
|
||||
<value>Neustart</value>
|
||||
</data>
|
||||
<data name="Folder empty" xml:space="preserve">
|
||||
<value>Ordner leer</value>
|
||||
</data>
|
||||
<data name="ALT" xml:space="preserve">
|
||||
<value>ALT</value>
|
||||
</data>
|
||||
<data name="CTRL" xml:space="preserve">
|
||||
<value>STRG</value>
|
||||
</data>
|
||||
<data name="Shortcut key" xml:space="preserve">
|
||||
<value>Tastenkombination</value>
|
||||
</data>
|
||||
<data name="English" xml:space="preserve">
|
||||
<value>English</value>
|
||||
</data>
|
||||
<data name="German" xml:space="preserve">
|
||||
<value>Deutsch</value>
|
||||
</data>
|
||||
<data name="(e.g. F12)" xml:space="preserve">
|
||||
<value>(z.B. F12)</value>
|
||||
</data>
|
||||
<data name="buttonDetails" xml:space="preserve">
|
||||
<value>Details</value>
|
||||
</data>
|
||||
<data name="buttonSystemInfo" xml:space="preserve">
|
||||
<value>System Info</value>
|
||||
</data>
|
||||
</root>
|
|
@ -138,6 +138,27 @@
|
|||
<data name="Folder" xml:space="preserve">
|
||||
<value>Folder</value>
|
||||
</data>
|
||||
<data name="Folder empty" xml:space="preserve">
|
||||
<value>Folder empty</value>
|
||||
</data>
|
||||
<data name="ALT" xml:space="preserve">
|
||||
<value>ALT</value>
|
||||
</data>
|
||||
<data name="CTRL" xml:space="preserve">
|
||||
<value>CTRL</value>
|
||||
</data>
|
||||
<data name="(e.g. F12)" xml:space="preserve">
|
||||
<value>(e.g. F12)</value>
|
||||
</data>
|
||||
<data name="buttonDetails" xml:space="preserve">
|
||||
<value>Details</value>
|
||||
</data>
|
||||
<data name="buttonSystemInfo" xml:space="preserve">
|
||||
<value>System Info</value>
|
||||
</data>
|
||||
<data name="Folder inaccessible" xml:space="preserve">
|
||||
<value>Folder inaccessible</value>
|
||||
</data>
|
||||
<data name="German" xml:space="preserve">
|
||||
<value>Deutsch</value>
|
||||
</data>
|
||||
|
@ -156,25 +177,7 @@
|
|||
<data name="Restart" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
</data>
|
||||
<data name="Folder empty" xml:space="preserve">
|
||||
<value>Folder empty</value>
|
||||
</data>
|
||||
<data name="ALT" xml:space="preserve">
|
||||
<value>ALT</value>
|
||||
</data>
|
||||
<data name="CTRL" xml:space="preserve">
|
||||
<value>CTRL</value>
|
||||
</data>
|
||||
<data name="Shortcut key" xml:space="preserve">
|
||||
<value>Shortcut key</value>
|
||||
</data>
|
||||
<data name="(e.g. F12)" xml:space="preserve">
|
||||
<value>(e.g. F12)</value>
|
||||
</data>
|
||||
<data name="buttonDetails" xml:space="preserve">
|
||||
<value>Details</value>
|
||||
</data>
|
||||
<data name="buttonSystemInfo" xml:space="preserve">
|
||||
<value>System Info</value>
|
||||
</data>
|
||||
</root>
|
|
@ -160,7 +160,7 @@ namespace SystemTrayMenu
|
|||
ResetSelectedByKey();
|
||||
menuNotifyIcon.LoadingStop();
|
||||
MenuData menuData = (MenuData)e.Result;
|
||||
if (menuData.Valid)
|
||||
if (menuData.Validity == MenuDataValidity.Valid)
|
||||
{
|
||||
menus[0] = CreateMenu(menuData, Path.GetFileName(Config.Path));
|
||||
menus[0].AdjustLocationAndSize(screen);
|
||||
|
@ -397,7 +397,7 @@ namespace SystemTrayMenu
|
|||
{
|
||||
MenuData menuData = new MenuData();
|
||||
menuData.RowDatas = new List<RowData>();
|
||||
menuData.Valid = false;
|
||||
menuData.Validity = MenuDataValidity.Invalid;
|
||||
menuData.Level = level;
|
||||
if (!worker.CancellationPending)
|
||||
{
|
||||
|
@ -440,10 +440,15 @@ namespace SystemTrayMenu
|
|||
Array.Sort(files, new WindowsExplorerSort());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if ((uint)ex.HResult == 0x80070005) // E_ACCESSDENIED
|
||||
menuData.Validity = MenuDataValidity.NoAccess;
|
||||
else
|
||||
{
|
||||
log.Info($"path:'{path}'");
|
||||
log.Error($"{ex.ToString()}");
|
||||
}
|
||||
}
|
||||
|
||||
foreach (string file in files)
|
||||
{
|
||||
|
@ -468,7 +473,8 @@ namespace SystemTrayMenu
|
|||
|
||||
if (!worker.CancellationPending)
|
||||
{
|
||||
menuData.Valid = true;
|
||||
if (menuData.Validity == MenuDataValidity.Invalid)
|
||||
menuData.Validity = MenuDataValidity.Valid;
|
||||
}
|
||||
|
||||
return menuData;
|
||||
|
@ -1064,13 +1070,17 @@ namespace SystemTrayMenu
|
|||
{
|
||||
menuNotifyIcon.LoadingStop();
|
||||
menuNotifyIcon.LoadWait();
|
||||
if (menuData.Valid)
|
||||
if (menuData.Validity != MenuDataValidity.Invalid)
|
||||
{
|
||||
menu = CreateMenu(menuData);
|
||||
if (menuData.RowDatas.Count > 0)
|
||||
{
|
||||
menu.SetTypeSub();
|
||||
}
|
||||
else if (menuData.Validity == MenuDataValidity.NoAccess)
|
||||
{
|
||||
menu.SetTypeNoAccess();
|
||||
}
|
||||
else
|
||||
{
|
||||
menu.SetTypeEmpty();
|
||||
|
|
Loading…
Reference in a new issue