Initial commit
This commit is contained in:
36
.vs/GFATask/project-colors.json
Normal file
36
.vs/GFATask/project-colors.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"ProjectMap": {
|
||||
"bea96733-dfdb-4e00-9cd9-c3e9b1e1d031": {
|
||||
"ProjectGuid": "bea96733-dfdb-4e00-9cd9-c3e9b1e1d031",
|
||||
"DisplayName": "GFATask",
|
||||
"ColorIndex": 0
|
||||
},
|
||||
"a2fe74e1-b743-11d0-ae1a-00a0c90fffc3": {
|
||||
"ProjectGuid": "a2fe74e1-b743-11d0-ae1a-00a0c90fffc3",
|
||||
"DisplayName": "Sonstige Dateien",
|
||||
"ColorIndex": -1
|
||||
},
|
||||
"900e3b22-4f33-4922-906c-98cdd660e763": {
|
||||
"ProjectGuid": "900e3b22-4f33-4922-906c-98cdd660e763",
|
||||
"DisplayName": "CustomControls",
|
||||
"ColorIndex": 1
|
||||
},
|
||||
"2a54c8a7-b200-47a3-b50a-b69590e75287": {
|
||||
"ProjectGuid": "2a54c8a7-b200-47a3-b50a-b69590e75287",
|
||||
"DisplayName": "FormEx",
|
||||
"ColorIndex": 2
|
||||
},
|
||||
"d1fb006d-da04-4bd4-8827-c6899752a58e": {
|
||||
"ProjectGuid": "d1fb006d-da04-4bd4-8827-c6899752a58e",
|
||||
"DisplayName": "SystemManagement",
|
||||
"ColorIndex": 3
|
||||
},
|
||||
"04dde1a2-453d-4717-9221-5b9c5a49f010": {
|
||||
"ProjectGuid": "04dde1a2-453d-4717-9221-5b9c5a49f010",
|
||||
"DisplayName": "Models",
|
||||
"ColorIndex": 4
|
||||
}
|
||||
},
|
||||
"NextColorIndex": 5
|
||||
}
|
||||
BIN
.vs/GFATask/v16/.suo
Normal file
BIN
.vs/GFATask/v16/.suo
Normal file
Binary file not shown.
BIN
.vs/GFATask/v17/.suo
Normal file
BIN
.vs/GFATask/v17/.suo
Normal file
Binary file not shown.
71
GFATask.sln
Normal file
71
GFATask.sln
Normal file
@@ -0,0 +1,71 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.32014.148
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GFATask", "GFATask\GFATask.csproj", "{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomControls", "..\DLLs\CustomControls\CustomControls.csproj", "{900E3B22-4F33-4922-906C-98CDD660E763}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Models", "Models\Models.csproj", "{04DDE1A2-453D-4717-9221-5B9C5A49F010}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemManagement", "..\DLLs\SystemManagement\SystemManagement.csproj", "{D1FB006D-DA04-4BD4-8827-C6899752A58E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormEx", "..\DLLs\FormEx\FormEx.csproj", "{2A54C8A7-B200-47A3-B50A-B69590E75287}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}.Release|x64.Build.0 = Release|Any CPU
|
||||
{900E3B22-4F33-4922-906C-98CDD660E763}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{900E3B22-4F33-4922-906C-98CDD660E763}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{900E3B22-4F33-4922-906C-98CDD660E763}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{900E3B22-4F33-4922-906C-98CDD660E763}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{900E3B22-4F33-4922-906C-98CDD660E763}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{900E3B22-4F33-4922-906C-98CDD660E763}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{900E3B22-4F33-4922-906C-98CDD660E763}.Release|x64.ActiveCfg = Release|x64
|
||||
{900E3B22-4F33-4922-906C-98CDD660E763}.Release|x64.Build.0 = Release|x64
|
||||
{04DDE1A2-453D-4717-9221-5B9C5A49F010}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{04DDE1A2-453D-4717-9221-5B9C5A49F010}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{04DDE1A2-453D-4717-9221-5B9C5A49F010}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{04DDE1A2-453D-4717-9221-5B9C5A49F010}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{04DDE1A2-453D-4717-9221-5B9C5A49F010}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{04DDE1A2-453D-4717-9221-5B9C5A49F010}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{04DDE1A2-453D-4717-9221-5B9C5A49F010}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{04DDE1A2-453D-4717-9221-5B9C5A49F010}.Release|x64.Build.0 = Release|Any CPU
|
||||
{D1FB006D-DA04-4BD4-8827-C6899752A58E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D1FB006D-DA04-4BD4-8827-C6899752A58E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D1FB006D-DA04-4BD4-8827-C6899752A58E}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{D1FB006D-DA04-4BD4-8827-C6899752A58E}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{D1FB006D-DA04-4BD4-8827-C6899752A58E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D1FB006D-DA04-4BD4-8827-C6899752A58E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D1FB006D-DA04-4BD4-8827-C6899752A58E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{D1FB006D-DA04-4BD4-8827-C6899752A58E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2A54C8A7-B200-47A3-B50A-B69590E75287}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2A54C8A7-B200-47A3-B50A-B69590E75287}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2A54C8A7-B200-47A3-B50A-B69590E75287}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2A54C8A7-B200-47A3-B50A-B69590E75287}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2A54C8A7-B200-47A3-B50A-B69590E75287}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2A54C8A7-B200-47A3-B50A-B69590E75287}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2A54C8A7-B200-47A3-B50A-B69590E75287}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2A54C8A7-B200-47A3-B50A-B69590E75287}.Release|x64.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {0C3FA6D5-90AE-4305-8190-074C613D99D6}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
12
GFATask/App.config
Normal file
12
GFATask/App.config
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||
</startup>
|
||||
<!--Führt zu fehlerhafter Skalierung-->
|
||||
<System.Windows.Forms.ApplicationConfigurationSection>
|
||||
<add key="DpiAwareness" value="PerMonitorV2" />
|
||||
</System.Windows.Forms.ApplicationConfigurationSection>
|
||||
</configuration>
|
||||
124
GFATask/Classes/AlternateWebbrowser.cs
Normal file
124
GFATask/Classes/AlternateWebbrowser.cs
Normal file
@@ -0,0 +1,124 @@
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
/// <summary>
|
||||
/// Statische Klasse zum Auslesen der Registrierungseinträge für die installierten Internet Browser
|
||||
/// </summary>
|
||||
class AlternateWebbrowser
|
||||
{
|
||||
/// <summary>
|
||||
/// Gibt das Symbol des Internet Browsers aus
|
||||
/// </summary>
|
||||
/// <param name="browsername">Name des Internet Browsers</param>
|
||||
/// <returns></returns>
|
||||
public static Bitmap GetImage(string browsername = "default")
|
||||
{
|
||||
browsername = browsername == "default" ? Config.Main.DefaultWebBrowser : browsername;
|
||||
Bitmap icon = new Bitmap(1, 1);
|
||||
if (XObjects.WebBrowsers.Exists(browser => browser.Name == browsername))
|
||||
{
|
||||
var webbrowser = XObjects.WebBrowsers.Find(browser => browser.Name == browsername);
|
||||
try
|
||||
{
|
||||
using (FileStream fs = new FileStream(webbrowser.IconPath, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite))
|
||||
{
|
||||
icon = Icon.FromHandle(Icon.ExtractAssociatedIcon(fs.Name).Handle).ToBitmap();
|
||||
//icon = ((Icon)Icon.FromHandle(Icon.ExtractAssociatedIcon(fs.Name).Handle).Clone()).ToBitmap();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Webbrowser Icon nicht gefunden", LogClassification.LowError, ex);
|
||||
}
|
||||
}
|
||||
return icon;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Findet den Namen anhand des ausführenden Pfades des Internet Browsers. Die Informationen werden aus der Windows-Registrierung ausgelesen
|
||||
/// </summary>
|
||||
/// <param name="browserexec">Auszuführender Pfad des Internet Browsers</param>
|
||||
/// <returns></returns>
|
||||
public static string GetName(string browserexec)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(XObjects.WebBrowsers.Any(browser => browser.Path != "unknown" && browser.Path == browserexec))
|
||||
{
|
||||
return XObjects.WebBrowsers.Find(browser => browserexec == browser.Path).Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Ungültiger Registrierungseintrag für Browsernamen", LogClassification.CriticalError, ex);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt den auszuführenden Pfad des Internet Browsers anhand des Namens aus. Die Informationen werden aus der Windows-Registrierung ausgelesen
|
||||
/// </summary>
|
||||
/// <param name="browsername">Name des Internet Browsers</param>
|
||||
/// <returns></returns>
|
||||
public static string GetExec(string browsername = "default")
|
||||
{
|
||||
browsername = browsername == "default" ? Config.Main.DefaultWebBrowser : browsername;
|
||||
string browserexec = "";
|
||||
if(XObjects.WebBrowsers.Exists(browser => browser.Name == browsername))
|
||||
{
|
||||
try
|
||||
{
|
||||
browserexec = XObjects.WebBrowsers.Find(browser => browser.Name == browsername).Path;
|
||||
if(browserexec == "unknown")
|
||||
Log.EventLog.Write("Webbrowser nicht gefunden", LogClassification.LowError);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Webbrowser nicht gefunden", LogClassification.LowError, ex);
|
||||
}
|
||||
}
|
||||
return browserexec;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Zeichnet das Internet Browser Symbol des ausgewählten Browsers in die untere rechte Ecke des AppButton-Symbols
|
||||
/// </summary>
|
||||
/// <param name="appImage">Das AppButton-Symbol</param>
|
||||
/// <param name="browsername">Name des Internet Browsers</param>
|
||||
public static void DrawWebBrowserIcon(Image appImage, string browsername = "default", string appname = "")
|
||||
{
|
||||
browsername = browsername == "default" ? Config.Main.DefaultWebBrowser : browsername;
|
||||
if(XObjects.WebBrowsers.Exists(browser => browser.Name == browsername))
|
||||
{
|
||||
try
|
||||
{
|
||||
using (Graphics g = Graphics.FromImage(appImage))
|
||||
{
|
||||
g.DrawImage(GetImage(browsername), new Rectangle(appImage.Width / 2, appImage.Height / 2, appImage.Width / 2, appImage.Height / 2));
|
||||
g.Save();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write($"Konnte Webbrowser Icon nicht zeichnen [{appname}]", LogClassification.LowError, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
94
GFATask/Classes/AppExecution.cs
Normal file
94
GFATask/Classes/AppExecution.cs
Normal file
@@ -0,0 +1,94 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
/// <summary>
|
||||
/// Beinhaltet Methoden wie und welche App gestartet wird
|
||||
/// </summary>
|
||||
public class AppExecution
|
||||
{
|
||||
/// <summary>
|
||||
/// Startet die App vom bestimmten Pfad mit den gewünschten Argumenten
|
||||
/// </summary>
|
||||
/// <param name="command">Der auszuführende Befehl zum starten der App</param>
|
||||
/// <param name="args">Argumente mit der die App ausgeführt werden soll</param>
|
||||
public static bool FromApp(string name, string command, string args)
|
||||
{
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
stopwatch.Start();
|
||||
|
||||
try
|
||||
{
|
||||
// Handelt es sich weder um eine App Verlinkung, noch um eine SystemApp, wird die Ausführung normal durchgeführt
|
||||
if (!IsAppLink(name, command) && !StartSystemApp(command))
|
||||
{
|
||||
Process app = new Process();
|
||||
app.StartInfo.WorkingDirectory = EnvironmentManager.VariableConverter(Path.GetDirectoryName(command) == null ? command : Path.GetDirectoryName(command), true);
|
||||
app.StartInfo.FileName = EnvironmentManager.VariableConverter(command, true);
|
||||
app.StartInfo.Arguments = args;
|
||||
app.Start();
|
||||
stopwatch.Stop();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
stopwatch.Stop();
|
||||
Log.EventLog.Write(string.Format("Start der App {0} nach {1}ms fehlgeschlagen", name, (stopwatch.ElapsedMilliseconds).ToString()), LogClassification.Warning, ex);
|
||||
stopwatch = null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Prüft, ob es sich um eine verlinkte App handelt und führt den Befehl dieser App aus
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private static bool IsAppLink(string name, string command)
|
||||
{
|
||||
if (command.StartsWith("APPLNK:"))
|
||||
{
|
||||
Models.App applnk = Cast.ToAppLink(command).ToApp();
|
||||
foreach (var exec in applnk.Execute)
|
||||
if (FromApp(name, exec.Command, exec.Args))
|
||||
break;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static bool StartSystemApp(string name)
|
||||
{
|
||||
bool trueConditions = false;
|
||||
switch (name)
|
||||
{
|
||||
case "kill":
|
||||
SystemApps.Kill(out trueConditions);
|
||||
break;
|
||||
case "settings":
|
||||
SystemApps.Settings(out trueConditions);
|
||||
break;
|
||||
case "adm":
|
||||
SystemApps.Administration(out trueConditions);
|
||||
break;
|
||||
case "info":
|
||||
SystemApps.Info(out trueConditions);
|
||||
break;
|
||||
}
|
||||
return trueConditions;
|
||||
}
|
||||
}
|
||||
}
|
||||
350
GFATask/Classes/Casting_Classes.cs
Normal file
350
GFATask/Classes/Casting_Classes.cs
Normal file
@@ -0,0 +1,350 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
/// <summary>
|
||||
/// Eine Klasse zur Steuerung der Beliebtheit der App. Je höher der Klickanteil, desto weiter vorne wird der AppButton sortiert
|
||||
/// </summary>
|
||||
public class Prevalencia
|
||||
{
|
||||
private int _id = 0;
|
||||
/// <summary>
|
||||
/// Die eindeutige Identifikationsnummer der App
|
||||
/// </summary>
|
||||
public int ID { get => _id; set => _id = value; }
|
||||
|
||||
|
||||
private AppType _apptype = AppType.None;
|
||||
/// <summary>
|
||||
/// Der Apptyp
|
||||
/// </summary>
|
||||
public AppType AppType { get => _apptype; set => _apptype = value; }
|
||||
|
||||
|
||||
private int _countclicks = 0;
|
||||
/// <summary>
|
||||
/// Wie oft wurde der AppButton angeklickt
|
||||
/// </summary>
|
||||
public int CountClicks { get => _countclicks; set => _countclicks = value; }
|
||||
|
||||
|
||||
public Prevalencia() { }
|
||||
|
||||
/// <summary>
|
||||
/// Eine Struktur zur Steuerung der Beliebtheit der App. Je höher der Klickanteil, desto weiter vorne wird der AppButton sortiert
|
||||
/// </summary>
|
||||
/// <param name="id">Die eindeutige Identifikationsnummer der App</param>
|
||||
/// <param name="apptype">Der Apptyp</param>
|
||||
/// <param name="countclicks">Wie oft wurde der AppButton angeklickt</param>
|
||||
public Prevalencia(int id, AppType apptype, int countclicks)
|
||||
{
|
||||
ID = id;
|
||||
AppType = apptype;
|
||||
_countclicks = countclicks;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Zählt die Klicks hoch und aktualisiert die JSON-Prevalence Konfigurationsdatei
|
||||
/// </summary>
|
||||
public void CountUp()
|
||||
{
|
||||
int _id = ID;
|
||||
_countclicks++;
|
||||
((List<Models.Prevalence.AppPrevalenceProperties>)Config.Prevalence.GetType().GetProperty(AppType.ToString()).GetValue(Config.Prevalence)).Find(prev => prev.ID == _id).ClickCounts = CountClicks;
|
||||
JSON.Save(JSONConfig.Prevalence);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Eine Klasse zur Nachverfolgung der angeklickten Apps
|
||||
/// </summary>
|
||||
public class ClickCounter
|
||||
{
|
||||
private int _id = 0;
|
||||
/// <summary>
|
||||
/// Die eindeutige Identifikationsnummer der App
|
||||
/// </summary>
|
||||
public int ID { get => _id; set => _id = value; }
|
||||
|
||||
|
||||
private string _name = "";
|
||||
/// <summary>
|
||||
/// Der Name der App
|
||||
/// </summary>
|
||||
public string Name { get => _name; set => _name = value; }
|
||||
|
||||
|
||||
private DateTime _lastclicked;
|
||||
/// <summary>
|
||||
/// Wann wurde die App zuletzt genutzt
|
||||
/// </summary>
|
||||
public DateTime LastClicked { get => _lastclicked; set => _lastclicked = value; }
|
||||
|
||||
|
||||
private DateTime _firstclicked;
|
||||
/// <summary>
|
||||
/// Wann wurde die App das erste Mal genutzt
|
||||
/// </summary>
|
||||
public DateTime FirstClicked { get => _firstclicked; set => _firstclicked = value; }
|
||||
|
||||
|
||||
private AppType _apptype = AppType.None;
|
||||
/// <summary>
|
||||
/// Der Apptyp
|
||||
/// </summary>
|
||||
public AppType AppType { get => _apptype; set => _apptype = value; }
|
||||
|
||||
|
||||
private int _counts = 0;
|
||||
/// <summary>
|
||||
/// Wie oft wurde der AppButton angeklickt
|
||||
/// </summary>
|
||||
public int Counts { get => _counts; set => _counts = value; }
|
||||
|
||||
|
||||
public ClickCounter() { }
|
||||
|
||||
/// <summary>
|
||||
/// Eine Klasse zur Nachverfolgung der angeklickten Apps
|
||||
/// </summary>
|
||||
/// <param name="id">Die eindeutige Identifikationsnummer der App</param>
|
||||
/// <param name="apptype">Der Apptyp</param>
|
||||
/// <param name="name">Appname</param>
|
||||
/// <param name="counts">Anzahl der Benutzerklicks</param>
|
||||
public ClickCounter(int id, AppType apptype, string name, int counts, DateTime firstclicked)
|
||||
{
|
||||
ID = id;
|
||||
Name = name;
|
||||
AppType = apptype;
|
||||
_counts = counts;
|
||||
_firstclicked = firstclicked;
|
||||
_lastclicked = DateTime.Now;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Zählt die Klicks hoch und aktualisiert die JSON-AppClickCounter Konfigurationsdatei
|
||||
/// </summary>
|
||||
public void CountUp()
|
||||
{
|
||||
int _id = ID;
|
||||
string _name = Name;
|
||||
_counts++;
|
||||
Models.ClickCounter.AppCounter appcounter = ((List<Models.ClickCounter.AppCounter>)Config.AppClickCounter.GetType().GetProperty(AppType.ToString()).GetValue(Config.AppClickCounter)).Find(cc => cc.ID == _id);
|
||||
appcounter.Name = _name;
|
||||
appcounter.Counts = _counts;
|
||||
appcounter.LastClicked = DateTime.Now;
|
||||
JSON.Save(JSONConfig.AppClickCounter);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Wandelt das ausführbare Kommando einer verknüpften App in eine lesbare Klasse um
|
||||
/// </summary>
|
||||
public class AppLnk
|
||||
{
|
||||
private AppType _apptype = AppType.None;
|
||||
/// <summary>
|
||||
/// Der Apptyp zur verknüpften App
|
||||
/// </summary>
|
||||
public AppType AppType { get => _apptype; set => _apptype = value; }
|
||||
|
||||
|
||||
private int _id = 0;
|
||||
/// <summary>
|
||||
/// Die eindeutige Identifikationsnummer der verknüpften App
|
||||
/// </summary>
|
||||
public int ID { get => _id; set => _id = value; }
|
||||
|
||||
public AppLnk() { }
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die verknüpfte App aus
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public Models.App ToApp()
|
||||
{
|
||||
return Accessor.GetAppList(_apptype).Apps.Find(app => app.ID == _id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Eine Klasse zum Umwandeln in ein lesbares NewsFeed-Objekt
|
||||
/// </summary>
|
||||
public class ReadableNewsFeed
|
||||
{
|
||||
/// <summary>
|
||||
/// Bestimmt den Namen des NewsFeeds
|
||||
/// </summary>
|
||||
public string Name { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Bestimmt, ob das Objekt angezeigt werden soll
|
||||
/// </summary>
|
||||
public bool Aktiv { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gibt den Pfad zu dem Symbol an, das anstelle des Grünflächenamts-Logos angezeigt werden soll
|
||||
/// </summary>
|
||||
public string Symbol { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Das anzuzeigende Symbol
|
||||
/// </summary>
|
||||
public Bitmap Icon { get; }
|
||||
|
||||
/// <summary>
|
||||
/// An welchem Tag startet der NewFeed
|
||||
/// </summary>
|
||||
public int Starttag { get; }
|
||||
|
||||
/// <summary>
|
||||
/// In welchem Monat startet der NewsFeed
|
||||
/// </summary>
|
||||
public int Startmonat { get; }
|
||||
|
||||
/// <summary>
|
||||
/// An welchem Tag endet der NewsFeed
|
||||
/// </summary>
|
||||
public int Endtag { get; }
|
||||
|
||||
/// <summary>
|
||||
/// In welchem Monat endet der NewsFeed
|
||||
/// </summary>
|
||||
public int Endmonat { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Zeigt an, was in der Titelleiste dargestellt werden soll
|
||||
/// </summary>
|
||||
public string Titel { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Klasse zum Umwandeln in ein lesbares NewsFeed-Objekt
|
||||
/// </summary>
|
||||
/// <param name="newsfeed"></param>
|
||||
public ReadableNewsFeed(Models.NewsFeed newsfeed)
|
||||
{
|
||||
Name = newsfeed.Name;
|
||||
Aktiv = newsfeed.Enable;
|
||||
Symbol = newsfeed.Icon;
|
||||
if (File.Exists($"{Paths.NewsFeeds.Icons.Directory}{newsfeed.Icon}"))
|
||||
Icon = new Bitmap(Image.FromStream(File.OpenRead($"{Paths.NewsFeeds.Icons.Directory}{newsfeed.Icon}")), new Size(16, 16));
|
||||
else
|
||||
Icon = new Bitmap(1, 1);
|
||||
Starttag = newsfeed.Begin.Day;
|
||||
Startmonat = newsfeed.Begin.Month;
|
||||
Endtag = newsfeed.End.Day;
|
||||
Endmonat = newsfeed.End.Month;
|
||||
Titel = newsfeed.Title;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt Informationen einer Backupkonfiguration wieder
|
||||
/// </summary>
|
||||
public class ConfigBackup : IComparable<ConfigBackup>
|
||||
{
|
||||
private string _filename = "";
|
||||
/// <summary>
|
||||
/// Der Dateiname der im Programmpfad liegenden Backupdateien
|
||||
/// </summary>
|
||||
public string FileName { get => _filename; set => _filename = value; }
|
||||
|
||||
|
||||
private string _destination_file = "";
|
||||
/// <summary>
|
||||
/// Der Pfad zur Datei, die im Benutzerpfad ersetzt werden soll
|
||||
/// </summary>
|
||||
public string DestinationFile { get => _destination_file; set => _destination_file = value; }
|
||||
|
||||
|
||||
private DateTime _when = default(DateTime);
|
||||
/// <summary>
|
||||
/// Zu welcher Zeit wurde der Sicherungssatz erstellt
|
||||
/// </summary>
|
||||
public DateTime When { get => _when; set => _when = value; }
|
||||
|
||||
|
||||
private ConfigRecoveryType _recoverytype;
|
||||
/// <summary>
|
||||
/// Um welchen Typen von Sicherung handelt es sich
|
||||
/// </summary>
|
||||
public ConfigRecoveryType RecoveryType { get => _recoverytype; set => _recoverytype = value; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt Informationen einer Backupkonfiguration wieder
|
||||
/// </summary>
|
||||
public ConfigBackup() { }
|
||||
|
||||
/// <summary>
|
||||
/// Gibt Informationen einer Backupkonfiguration wieder
|
||||
/// </summary>
|
||||
/// <param name="filename">Dateiname der im Programmpfad liegenden Backupdateien</param>
|
||||
public ConfigBackup(string filename)
|
||||
{
|
||||
_filename = filename;
|
||||
|
||||
_recoverytype = _filename.EndsWith($"_{Path.GetFileNameWithoutExtension(Paths.UserConfig.FullName)}.bak") ? ConfigRecoveryType.UserConfig :
|
||||
_filename.EndsWith("_favorites.bak") ? ConfigRecoveryType.Favorites : ConfigRecoveryType.Prevalences;
|
||||
|
||||
_destination_file = _recoverytype == ConfigRecoveryType.UserConfig ? Paths.UserConfig.FullName :
|
||||
_recoverytype == ConfigRecoveryType.Favorites ? Paths.Favorites.Apps.FullName : Paths.Prevalence.FullName;
|
||||
|
||||
string tempdatetime = Path.GetFileNameWithoutExtension(_filename).Trim($"{Environment.UserName.ToLower()}_".ToCharArray());
|
||||
_when = DateTime.ParseExact(tempdatetime.Substring(0, 15), "yyyyMMdd-HHmmss", CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stellt das Backup wieder her
|
||||
/// </summary>
|
||||
public void Recover()
|
||||
{
|
||||
File.Copy(Paths.Bak.Directory + _filename, _destination_file, true);
|
||||
|
||||
//Creator.StreamCopy(Paths.Bak.Directory + _filename, _destination_file, null);
|
||||
}
|
||||
|
||||
|
||||
public int CompareTo(ConfigBackup other)
|
||||
{
|
||||
return this.When.CompareTo(other.When);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Klasse zum Auslesen eines GFATaskStreams, welche über die FrontEndRefresh-Klasse zwischen den gestarteten GFATask-Instanzen synchronisiert wird
|
||||
/// </summary>
|
||||
[XmlRoot("Object")]
|
||||
public class GFATaskStream
|
||||
{
|
||||
[XmlElement("PipeType")]
|
||||
public NetPipeType PipeType { get; set; }
|
||||
|
||||
|
||||
[XmlElement("ClickCounter")]
|
||||
public ClickCounter ClickCounter { get; set; }
|
||||
|
||||
|
||||
[XmlElement("AppType")]
|
||||
public AppType AppType { get; set; }
|
||||
|
||||
|
||||
[XmlElement("App")]
|
||||
public Models.App App { get; set; }
|
||||
}
|
||||
}
|
||||
92
GFATask/Classes/ConfigBackupClass.cs
Normal file
92
GFATask/Classes/ConfigBackupClass.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
/// <summary>
|
||||
/// Beinhaltet das Sichern und Laden von benutzerdefinierten Dateien
|
||||
/// </summary>
|
||||
class ConfigBackupClass
|
||||
{
|
||||
/// <summary>
|
||||
/// Erstellt eine Sicherung der benutzerdefinierten Einstellungen, App-Beliebtheit und Favoriten
|
||||
/// </summary>
|
||||
public static void Save()
|
||||
{
|
||||
Deploy.Templating(typeof(Models.Config.User), Paths.UserConfig.FullName, false, true);
|
||||
Deploy.AppListTemplate(DeployAppList.Prevalence, false, true);
|
||||
Deploy.AppListTemplate(DeployAppList.Favorites, false, true);
|
||||
XObjects.MessageBox("Sicherung der Konfigurationsdateien (Benutzereinstellungen, App-Beliebtheit und Favoriten) erfolgreich", NotifyButtons.OK, NotifyType.Message, new Size(300, 140), "Erfolgreiche Sicherung");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Lädt eine Sicherung der benutzerdefinierten Einstellungen, App-Beliebtheit und/oder Favoriten
|
||||
/// </summary>
|
||||
public static void Load()
|
||||
{
|
||||
DataTable backuptable = new DataTable("Backups");
|
||||
backuptable.Columns.Add("Wiederherstellen", typeof(bool));
|
||||
backuptable.Columns.Add(new DataColumn("Wiederherstellungstyp", typeof(string)));
|
||||
backuptable.Columns.Add("Datum", typeof(DateTime));
|
||||
backuptable.Columns.Add("Sicherungssatz", typeof(string));
|
||||
|
||||
foreach (string file in Directory.GetFiles(Paths.Bak.Directory, $"{Environment.UserName.ToLower()}_*"))
|
||||
{
|
||||
ConfigBackup backup = new ConfigBackup(file);
|
||||
backuptable.Rows.Add(false, backup.RecoveryType.GetDescription(), backup.When, Path.GetFileName(backup.FileName));
|
||||
}
|
||||
if (backuptable.Rows.Count == 0)
|
||||
if (XObjects.MessageBox("Es sind keine Sicherungssätze vorhanden", NotifyButtons.OK, NotifyType.Message, new Size(300, 120), "Keine Sicherungen vorhanden").Result == DialogResult.OK)
|
||||
return;
|
||||
backuptable = backuptable.Select("","Wiederherstellungstyp ASC, Datum DESC").CopyToDataTable();
|
||||
|
||||
|
||||
var msgbox = XObjects.MessageBox("", NotifyButtons.OkCancel, NotifyType.DataGrid, new Size(500, 350), "Sicherungen laden", Convert.ChangeType(backuptable, typeof(DataTable)));
|
||||
if (msgbox.Result == DialogResult.OK)
|
||||
{
|
||||
|
||||
Dictionary<ConfigRecoveryType, List<ConfigBackup>> selected_recoveries = new Dictionary<ConfigRecoveryType, List<ConfigBackup>>();
|
||||
|
||||
foreach (var recovery in backuptable.Rows.Cast<DataRow>().Where(row => (bool)row.ItemArray[0] == true))
|
||||
{
|
||||
ConfigBackup selected = new ConfigBackup(recovery.ItemArray.Last().ToString());
|
||||
|
||||
if (!selected_recoveries.ContainsKey(selected.RecoveryType))
|
||||
selected_recoveries.Add(selected.RecoveryType, new List<ConfigBackup>());
|
||||
|
||||
selected_recoveries[selected.RecoveryType].Add(selected);
|
||||
selected_recoveries[selected.RecoveryType].Sort();
|
||||
|
||||
if (selected_recoveries.ContainsKey(selected.RecoveryType) && selected_recoveries[selected.RecoveryType].Count > 1)
|
||||
{
|
||||
var msg = XObjects.MessageBox($"Es wurden mehrere {selected.RecoveryType.GetDescription()} zur Wiederherstellung ausgewählt.\n\n" +
|
||||
$"Soll die Datei vom {selected_recoveries[selected.RecoveryType].Last().When}\n" +
|
||||
$"Durch eine Ältere vom {selected.When} ersetzt werden", NotifyButtons.YesNoCancel, NotifyType.Message, new Size(350, 200), "Ersetzen");
|
||||
if (msg.Result == DialogResult.Yes)
|
||||
{
|
||||
selected.Recover();
|
||||
}
|
||||
else if (msg.Result == DialogResult.No)
|
||||
continue;
|
||||
else if (msg.Result == DialogResult.Cancel)
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
selected.Recover();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
162
GFATask/Classes/Deploy.cs
Normal file
162
GFATask/Classes/Deploy.cs
Normal file
@@ -0,0 +1,162 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
/// <summary>
|
||||
/// Eine Klasse die Werkzeuge zum Umgang mit den benötigten Programm-Dateien besitzt. Darunter Sicherungs-, Vorlagen- und Überschreibfunktionen
|
||||
/// </summary>
|
||||
public class Deploy
|
||||
{
|
||||
/// <summary>
|
||||
/// Erzeugt am gewünschten Ort eine neue Datei aus dem Vorlagentypen und überschreibt diese, falls bereits vorhanden.
|
||||
/// Bei Bedarf kann zuvor eine Sicherung dieser Datei mit Datumsangabe erstellt werden. Kann auch als reine Backup-Funktion genutzt werden.
|
||||
/// Sofern die Datei bereits vorhanden ist, kann die Variable overwrite auf "false" und dobackup auf "true" gesetzt werden.
|
||||
/// </summary>
|
||||
/// <param name="type">Gibt den Vorlagentypen an der erzeugt werden soll</param>
|
||||
/// <param name="target">Ist der gewünschte Pfad, an dem die Vorlage abgelegt wird</param>
|
||||
/// <param name="overwrite">Sofern bereits eine Datei mit diesem Namen vorhanden ist, wird diese überschrieben</param>
|
||||
/// <param name="dobackup">Gibt an, ob eine Sicherung der Datei erstellt werden soll</param>
|
||||
/// <returns></returns>
|
||||
public static bool Templating(Type type, string target, bool overwrite, bool dobackup)
|
||||
{
|
||||
var action = new Action(delegate
|
||||
{
|
||||
object o = Activator.CreateInstance(type);
|
||||
JSON.Serialize(o, target);
|
||||
});
|
||||
|
||||
if (File.Exists(target))
|
||||
{
|
||||
if (dobackup)
|
||||
{
|
||||
string filename = Path.GetFileNameWithoutExtension(target);
|
||||
string bak_datetime = DateTime.Now.ToString("yyyyMMdd-HHmmss");
|
||||
File.Copy(target, $@"{Paths.Bak.Directory}\{Environment.UserName.ToLower()}_{bak_datetime}_{filename}.bak");
|
||||
Log.EventLog.Write($"{filename} Backup erstellt", LogClassification.Success);
|
||||
}
|
||||
if (overwrite)
|
||||
{
|
||||
try
|
||||
{
|
||||
string filename = Path.GetFileName(target);
|
||||
string overwrite_datetime = DateTime.Now.ToString("yyyyMMdd-HHmmss");
|
||||
Log.EventLog.Write($"{filename} überschrieben", LogClassification.Success);
|
||||
action.Invoke();
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Vorlage nicht erstellt", LogClassification.Crash, ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
action.Invoke();
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Vorlage nicht erstellt", LogClassification.MediumError, ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Erzeugt im benutzerdefinierten Pfad (%APPDATA%\GFATASK) eine leere Typendatei. Kann auch als reine Backup-Funktion genutzt werden.
|
||||
/// Sofern die Datei bereits vorhanden ist, kann die Variable overwrite auf "false" und dobackup auf "true" gesetzt werden.
|
||||
/// </summary>
|
||||
/// <param name="deploytype">Gibt den Typen der AppList an</param>
|
||||
/// <param name="overwrite">Soll die Datei überschrieben werden</param>
|
||||
/// <param name="dobackup">Soll eine Sicherung der Datei erzeugt werden</param>
|
||||
/// <returns></returns>
|
||||
public static bool AppListTemplate(DeployAppList deploytype, bool overwrite, bool dobackup)
|
||||
{
|
||||
string targetpath = deploytype == DeployAppList.Prevalence ? Paths.Prevalence.FullName : Paths.Favorites.Apps.FullName;
|
||||
var action = new Func<bool>(delegate
|
||||
{
|
||||
try
|
||||
{
|
||||
string path = string.Empty;
|
||||
var list = new object();
|
||||
if (deploytype == DeployAppList.Prevalence)
|
||||
{
|
||||
list = new Models.Prevalence()
|
||||
{
|
||||
Admin = new List<Models.Prevalence.AppPrevalenceProperties>(),
|
||||
Citrix = new List<Models.Prevalence.AppPrevalenceProperties>(),
|
||||
Favorites = new List<Models.Prevalence.AppPrevalenceProperties>(),
|
||||
Menu = new List<Models.Prevalence.AppPrevalenceProperties>(),
|
||||
User = new List<Models.Prevalence.AppPrevalenceProperties>()
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
list = new Models.AppList<Models.App>() { Apps = new List<Models.App>(), Type = AppType.Favorites };
|
||||
}
|
||||
JSON.Serialize(list, targetpath);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Vorlage nicht erstellt", LogClassification.MediumError, ex);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
if (File.Exists(targetpath))
|
||||
{
|
||||
if (dobackup)
|
||||
{
|
||||
string filename = Path.GetFileNameWithoutExtension(targetpath);
|
||||
string bak_datetime = DateTime.Now.ToString("yyyyMMdd-HHmmss");
|
||||
File.Copy(targetpath, $@"{Paths.Bak.Directory}\{Environment.UserName.ToLower()}_{bak_datetime}_{filename}.bak");
|
||||
Config.User.Deploy.Backup = false;
|
||||
}
|
||||
if (overwrite)
|
||||
{
|
||||
Config.User.Deploy.Overwrite = false;
|
||||
return action.Invoke();
|
||||
}
|
||||
if(dobackup || overwrite)
|
||||
JSON.Save(JSONConfig.User);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return action.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Definiert die zu erzeugenden Listen
|
||||
/// </summary>
|
||||
public enum DeployAppList
|
||||
{
|
||||
/// <summary>
|
||||
/// Definiert die Prevalence-(Beliebtheits)-Datei
|
||||
/// </summary>
|
||||
Prevalence = 0,
|
||||
|
||||
/// <summary>
|
||||
/// Definiert die Favoriten-Datei
|
||||
/// </summary>
|
||||
Favorites = 1
|
||||
}
|
||||
}
|
||||
283
GFATask/Classes/FrontEndRefresh.cs
Normal file
283
GFATask/Classes/FrontEndRefresh.cs
Normal file
@@ -0,0 +1,283 @@
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
/// <summary>
|
||||
/// Stellt eine FrontEnd-Update Klasse dar, welche über eine Datei, Änderungen eines gewissen Typs(<T>) ausgibt
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Welcher Klassentyp wird in der Datei gespeichert</typeparam>
|
||||
public class FrontEndRefresh<T>
|
||||
{
|
||||
/// <summary>
|
||||
/// Löst ein Ereignis mit dem angegebenen Ereignis-Typen (<T>) aus, welches eine Veränderung in der Datei entdeckt hat
|
||||
/// </summary>
|
||||
public event EventHandler<FrontEndRefreshEventArgs<T>> Updated;
|
||||
|
||||
/// <summary>
|
||||
/// Löst ein Ereignis aus, sobald ein Fehler im Programmcode erzeugt wird
|
||||
/// </summary>
|
||||
public event EventHandler<FrontEndErrorEventArgs> Error;
|
||||
|
||||
/// <summary>
|
||||
/// Threadsichere Ausführung des Update-Ereignisses
|
||||
/// </summary>
|
||||
private SynchronizationContext synccontext;
|
||||
|
||||
/// <summary>
|
||||
/// Das FileSystemWatcher-Objekt
|
||||
/// </summary>
|
||||
private FileSystemWatcher fsw;
|
||||
|
||||
/// <summary>
|
||||
/// Pfad zur Datei die überwacht werden soll
|
||||
/// </summary>
|
||||
private string path;
|
||||
|
||||
/// <summary>
|
||||
/// Verhindert das mehrfache Ausführen einer geänderten Datei (Zugriff und Speichern werden immer als Änderung erkannt)
|
||||
/// </summary>
|
||||
private Dictionary<string, bool> acceptchange = new Dictionary<string, bool>();
|
||||
|
||||
|
||||
private bool _selfupdate = false;
|
||||
/// <summary>
|
||||
/// Bestimmt, ob das Update auch bei dem Host ausgeführt wird, der die Datei verändert hat
|
||||
/// </summary>
|
||||
public bool SelfUpdate
|
||||
{
|
||||
get => _selfupdate;
|
||||
set => _selfupdate = value;
|
||||
}
|
||||
|
||||
|
||||
private bool _active = true;
|
||||
/// <summary>
|
||||
/// Überprüft, ob Updates an FrontEnds gesendet werden sollen
|
||||
/// </summary>
|
||||
public bool Active
|
||||
{
|
||||
get => _active;
|
||||
set => _active = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stellt eine FrontEnd-Update Klasse dar, welche über eine Datei, Änderungen eines gewissen Typs(<T>) ausgibt
|
||||
/// </summary>
|
||||
/// <param name="filename">Gibt den Pfad zur überwachenden Datei an. Ist diese noch nicht vorhanden, wird sie erstellt</param>
|
||||
public FrontEndRefresh(string filename)
|
||||
{
|
||||
try
|
||||
{
|
||||
path = filename;
|
||||
if (!File.Exists(path))
|
||||
File.Create(path).Close();
|
||||
using(FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
|
||||
{
|
||||
fsw = new FileSystemWatcher(Path.GetDirectoryName(fs.Name), Path.GetFileName(fs.Name));
|
||||
fsw.Changed += Fsw_Changed;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Error?.Invoke(this, new FrontEndErrorEventArgs(ex));
|
||||
}
|
||||
}
|
||||
|
||||
private void Fsw_Changed(object sender, FileSystemEventArgs e)
|
||||
{
|
||||
// Diese Methode überspringt die Änderung beim ersten Mal
|
||||
if (acceptchange.ContainsKey(path))
|
||||
acceptchange[path] = true;
|
||||
else
|
||||
acceptchange.Add(path, false);
|
||||
if (acceptchange[path])
|
||||
{
|
||||
try
|
||||
{
|
||||
if (synccontext != null)
|
||||
{
|
||||
synccontext.Post(s =>
|
||||
{
|
||||
FrontEndObject o = this.DeserializeObject<FrontEndObject>();
|
||||
if (_selfupdate || (!_selfupdate && o.HostName != Dns.GetHostName()))
|
||||
{
|
||||
acceptchange.Remove(path);
|
||||
Updated?.Invoke(this, new FrontEndRefreshEventArgs<T>(o.Data, path, o.CurrentAssembly, o.HostName, o.IPv4, o.UpdateTime));
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
FrontEndObject o = this.DeserializeObject<FrontEndObject>();
|
||||
if (_selfupdate || (!_selfupdate && o.HostName != Dns.GetHostName()))
|
||||
{
|
||||
acceptchange.Remove(path);
|
||||
Updated?.Invoke(this, new FrontEndRefreshEventArgs<T>(o.Data, path, o.CurrentAssembly, o.HostName, o.IPv4, o.UpdateTime));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Schreibt das Objekt als XML-Model in die Datei
|
||||
/// </summary>
|
||||
/// <typeparam name="U"></typeparam>
|
||||
/// <param name="toSerialize"></param>
|
||||
private void SerializeObject<U>(U toSerialize)
|
||||
{
|
||||
synccontext = SynchronizationContext.Current;
|
||||
System.Serialization.Xml.SerializeToFile(path, toSerialize);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Liest das XML-Model als Objekt, aus der Datei aus
|
||||
/// </summary>
|
||||
/// <typeparam name="U"></typeparam>
|
||||
/// <returns></returns>
|
||||
private U DeserializeObject<U>()
|
||||
{
|
||||
synccontext = SynchronizationContext.Current;
|
||||
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
|
||||
{
|
||||
//if (Verifying.IsFileLocked(new FileInfo(fs.Name)))
|
||||
// return default(U);
|
||||
//else
|
||||
return System.Serialization.Xml.DeserializeFromFile<U>(fs.Name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Führt ein Update am FrontEnd und Remote-FrontEnds aus, sofern die Klasse aktiv / gestartet ist
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
public void Update(T data)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!_active)
|
||||
return;
|
||||
|
||||
FrontEndObject o = new FrontEndObject()
|
||||
{
|
||||
Data = data,
|
||||
CurrentAssembly = Assembly.GetExecutingAssembly().GetName().Name,
|
||||
HostName = Dns.GetHostName(),
|
||||
IPv4 = Net.GetIPv4(Dns.GetHostName()).ToString(),
|
||||
UpdateTime = DateTime.Now
|
||||
};
|
||||
this.SerializeObject(o);
|
||||
if (_selfupdate)
|
||||
{
|
||||
if (synccontext != null)
|
||||
synccontext.Post(s => Updated?.Invoke(this, new FrontEndRefreshEventArgs<T>(o.Data, path, o.CurrentAssembly, o.HostName, o.IPv4, o.UpdateTime)), null);
|
||||
else
|
||||
Updated?.Invoke(this, new FrontEndRefreshEventArgs<T>(o.Data, path, o.CurrentAssembly, o.HostName, o.IPv4, o.UpdateTime));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Error?.Invoke(this, new FrontEndErrorEventArgs(ex));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Startet die Überwachung
|
||||
/// </summary>
|
||||
public void Start()
|
||||
{
|
||||
fsw.EnableRaisingEvents = true;
|
||||
synccontext = SynchronizationContext.Current;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stopt die Überwachung
|
||||
/// </summary>
|
||||
public void Stop()
|
||||
{
|
||||
fsw.EnableRaisingEvents = false;
|
||||
}
|
||||
|
||||
|
||||
public class FrontEndObject
|
||||
{
|
||||
public T Data { get; set; }
|
||||
public int Length { get; set; }
|
||||
public string HostName { get; set; }
|
||||
public string IPv4 { get; set; }
|
||||
public DateTime UpdateTime { get; set; }
|
||||
public string CurrentAssembly { get; set; }
|
||||
|
||||
|
||||
public FrontEndObject() { }
|
||||
|
||||
new public string ToString()
|
||||
{
|
||||
return string.Join("\n", this.GetType().GetProperties().Select(prop => prop.Name + ": " + prop.GetValue(this)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class FrontEndRefreshEventArgs<T>
|
||||
{
|
||||
|
||||
[JsonProperty("assembly")]
|
||||
public string Assembly { get; set; }
|
||||
|
||||
[JsonProperty("host")]
|
||||
public string Host { get; set; }
|
||||
|
||||
[JsonProperty("ipv4")]
|
||||
public string IPv4 { get; set; }
|
||||
|
||||
[JsonProperty("updatetime")]
|
||||
public DateTime UpdateTime { get; set; } = DateTime.Now;
|
||||
|
||||
[JsonProperty("path")]
|
||||
public string Path { get; set; } = string.Empty;
|
||||
|
||||
[JsonProperty("data")]
|
||||
public T Data { get; set; }
|
||||
|
||||
public FrontEndRefreshEventArgs(T data, string path, string assembly, string host, string ipv4, DateTime updatetime)
|
||||
{
|
||||
Data = data;
|
||||
Path = path;
|
||||
Assembly = assembly;
|
||||
Host = host;
|
||||
IPv4 = ipv4;
|
||||
UpdateTime = updatetime;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class FrontEndErrorEventArgs
|
||||
{
|
||||
public Exception Ex { get; set; }
|
||||
|
||||
public FrontEndErrorEventArgs(Exception ex) =>
|
||||
Ex = ex;
|
||||
}
|
||||
}
|
||||
92
GFATask/Classes/FrontEndRefreshExecution.cs
Normal file
92
GFATask/Classes/FrontEndRefreshExecution.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public class FrontEndRefreshExecution
|
||||
{
|
||||
public static void Updated(object sender, FrontEndRefreshEventArgs<GFATaskStream> e)
|
||||
{
|
||||
if(e.Data.PipeType == NetPipeType.ErrorHandle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (e.Data.PipeType == NetPipeType.AppCounter_CountUp)
|
||||
{
|
||||
Forms.Administration.UcAdminAppClickCounter.RefreshList(e.Data.ClickCounter);
|
||||
}
|
||||
else if (e.Data.PipeType == NetPipeType.AppCounter_Reset)
|
||||
{
|
||||
Forms.Administration.UcAdminAppClickCounter.ResetAppCounter(e.Data.ClickCounter);
|
||||
}
|
||||
else if (e.Data.PipeType == NetPipeType.ClickCounter_Clear)
|
||||
{
|
||||
Config.AppClickCounter = JSON.Read<Models.ClickCounter>(Paths.AppClickCounter.FullName);
|
||||
Forms.Administration.UcAdminAppClickCounter.ClearAppClickCounterList();
|
||||
}
|
||||
else if (e.Data.PipeType == NetPipeType.MainConfig)
|
||||
{
|
||||
Config.Main = JSON.Read<Models.Config.Main>(Paths.MainConfig.FullName);
|
||||
Forms.Administration.UcAdminDesigns.SetWindowBorder();
|
||||
Forms.Administration.UcAdminDesigns.SetNewDesign();
|
||||
Application.OpenForms.OfType<FormEx>().ToList().ForEach(f => f.SetDefaultDesign());
|
||||
}
|
||||
else if(e.Data.PipeType == NetPipeType.Citrix)
|
||||
{
|
||||
Config.Main = JSON.Read<Models.Config.Main>(Paths.MainConfig.FullName);
|
||||
Forms.Administration.UcAdminGeneral.ChangeCitrix();
|
||||
}
|
||||
else if(e.Data.PipeType == NetPipeType.FrontEndUpdate)
|
||||
{
|
||||
Config.Main = JSON.Read<Models.Config.Main>(Paths.MainConfig.FullName);
|
||||
Forms.Administration.UcAdminGeneral.SetFrontEndUpdate();
|
||||
}
|
||||
else if (e.Data.PipeType == NetPipeType.ActiveDirectory)
|
||||
{
|
||||
Config.Main = JSON.Read<Models.Config.Main>(Paths.MainConfig.FullName);
|
||||
Forms.Administration.UcAdminGeneral.UseActiveDirectory();
|
||||
}
|
||||
else if (e.Data.PipeType == NetPipeType.MailAccount)
|
||||
{
|
||||
Config.Main = JSON.Read<Models.Config.Main>(Paths.MainConfig.FullName);
|
||||
}
|
||||
else if (e.Data.PipeType == NetPipeType.Edit && e.Data.AppType != System.AppType.Favorites)
|
||||
{
|
||||
var applist = Accessor.GetAppList(e.Data.AppType);
|
||||
Accessor.GetAppList(e.Data.AppType).Apps[Accessor.GetAppList(e.Data.AppType).Apps.FindIndex(app => app.ID == e.Data.App.ID)] = e.Data.App;
|
||||
|
||||
// BUGFIX - Wenn der Sender einen Button aus, oder in eine Gruppe verschiebt, wird dies nicht richtig übertragen...
|
||||
// Jetzt wird das gesamte AppListPanel erneuert - UNSCHÖN!
|
||||
//Accessor.GetAppListPanel(e.Data.AppType).ReplaceButton(e.Data.App);
|
||||
Creator.AppListPanel(Accessor.GetAppListPanel(e.Data.AppType), applist);
|
||||
}
|
||||
else if (e.Data.PipeType == NetPipeType.Delete && e.Data.AppType != System.AppType.Favorites)
|
||||
{
|
||||
var applist = Accessor.GetAppList(e.Data.AppType);
|
||||
applist.Apps.Remove(e.Data.App);
|
||||
Accessor.GetAppListPanel(e.Data.AppType).RemoveButton(e.Data.App);
|
||||
}
|
||||
else if (e.Data.PipeType == NetPipeType.Create && e.Data.AppType != System.AppType.Favorites)
|
||||
{
|
||||
var applist = Accessor.GetAppList(e.Data.AppType);
|
||||
applist.Apps.Add(e.Data.App);
|
||||
Accessor.GetAppListPanel(e.Data.AppType).AddAppButton(e.Data.App);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void OnError(object sender, FrontEndErrorEventArgs e)
|
||||
{
|
||||
//Log.EventLog.Write("Fehler in FrontEndRefresh", System.LogClassification.MediumError, e.Ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
131
GFATask/Classes/Hooks.cs
Normal file
131
GFATask/Classes/Hooks.cs
Normal file
@@ -0,0 +1,131 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public partial class Hooks
|
||||
{
|
||||
#region Mouse
|
||||
public static void Mouse_Up(MouseHook.MSLLHOOKSTRUCT mousestruct)
|
||||
{
|
||||
//Rectangle scaledbounds = new Rectangle((int)(Forms.Main.DesktopBounds.X * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))), (int)(Forms.Main.DesktopBounds.Y * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))), (int)(Forms.Main.Width * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))), (int)(Forms.Main.Height * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))));
|
||||
Rectangle scaledbounds = new Rectangle((int)(Forms.Main.DesktopBounds.X), (int)(Forms.Main.DesktopBounds.Y), (int)(Forms.Main.Width), (int)(Forms.Main.Height));
|
||||
//Rectangle scaledbounds = new Rectangle((int)(Forms.Main.Bounds.X * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))), (int)(Forms.Main.Bounds.Y * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))), (int)(Forms.Main.Width * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))), (int)(Forms.Main.Height * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))));
|
||||
Rectangle scaledappgroupbounds = new Rectangle((int)(Forms.AppButtonGroup.DesktopBounds.X * Win32API.GetScalingFactor(Screen.FromControl(Forms.AppButtonGroup))), (int)(Forms.AppButtonGroup.DesktopBounds.Y * Win32API.GetScalingFactor(Screen.FromControl(Forms.AppButtonGroup))), (int)(Forms.AppButtonGroup.Width * Win32API.GetScalingFactor(Screen.FromControl(Forms.AppButtonGroup))), (int)(Forms.AppButtonGroup.Height * Win32API.GetScalingFactor(Screen.FromControl(Forms.AppButtonGroup))));
|
||||
Rectangle scaledboundswithoutgrip = new Rectangle(scaledbounds.X + Forms.Main.GripSize - Forms.Main.BorderWidth, scaledbounds.Y, scaledbounds.Width - Forms.Main.GripSize, scaledbounds.Height - Forms.Main.GripSize + Forms.Main.BorderWidth);
|
||||
bool mouseover = scaledbounds.Contains(mousestruct.Location);
|
||||
bool mouseoverappgroup = scaledappgroupbounds.Contains(mousestruct.Location);
|
||||
bool countMAX = XObjects.Delay.Count == XObjects.Delay.MaxCounts;
|
||||
|
||||
if (Forms.Main.SysContextMenu.Visible || Forms.Info.Visible || Forms.Settings.Visible || Forms.Groups.Visible || Forms.AppCreator.Visible || Forms.Administration.Visible || XObjects.ContextMenuStrip.Visible)
|
||||
return;
|
||||
|
||||
if (Config.User.NecessaryClick)
|
||||
{
|
||||
if (scaledboundswithoutgrip.Contains(Cursor.Position))
|
||||
{
|
||||
XObjects.Delay.Waiting = new Delay.DelayTime(Config.User.NecessaryClick ? 0 : Config.User.Delay.Show, Config.User.Delay.Hide);
|
||||
XObjects.Delay.Increase();
|
||||
}
|
||||
}
|
||||
|
||||
if (!mouseoverappgroup && Forms.AppButtonGroup.Visible)
|
||||
{
|
||||
Forms.AppButtonGroup.Hide();
|
||||
if (!mouseover)
|
||||
{
|
||||
XObjects.Delay.Decrease();
|
||||
}
|
||||
}
|
||||
else if (!mouseover && Forms.Main.SysContextMenu.Visible)
|
||||
XObjects.Delay.Decrease();
|
||||
}
|
||||
|
||||
public static void Mouse_Move(MouseHook.MSLLHOOKSTRUCT mousestruct)
|
||||
{
|
||||
if (XObjects.PausedDelay || Forms.Main.SysContextMenu.Visible || Forms.Info.Visible || Forms.AppButtonGroup.Visible || Forms.Settings.Visible || Forms.Groups.Visible || Forms.AppCreator.Visible || Forms.Administration.Visible || XObjects.ContextMenuStrip.Visible)
|
||||
return;
|
||||
|
||||
// Wegen unbekannter Probleme versetzt sich der GFATask willkürlich in den Hintergrund.
|
||||
// Bei jeder Mausbewegung wird der GFATask sofort wieder an oberste Ebene versetzt, sodass er über allen anderen Fenstern steht.
|
||||
Win32API.SetWindowPos(Forms.Main.Handle, HWDN.TOPMOST, 0, 0, 0, 0, SWP.NOSIZE | SWP.NOMOVE);
|
||||
|
||||
//Rectangle scaledbounds = new Rectangle((int)(Forms.Main.DesktopBounds.X * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))), (int)(Forms.Main.DesktopBounds.Y * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))), (int)(Forms.Main.Width * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))), (int)(Forms.Main.Height * Win32API.GetScalingFactor(Screen.FromControl(Forms.Main))));
|
||||
Rectangle scaledbounds = new Rectangle((int)(Forms.Main.DesktopBounds.X), (int)(Forms.Main.DesktopBounds.Y), (int)(Forms.Main.Width), (int)(Forms.Main.Height));
|
||||
|
||||
// Hier muss Cursor.Position angewendet werden, da die HookStruct-Position der Maus die Bewegung angibt und nicht an welchem Punkt sich die Maus aktuell auf dem Desktop befindet
|
||||
bool mouseover = scaledbounds.Contains(Cursor.Position);
|
||||
bool mouseover_withoutgrip = new Rectangle(scaledbounds.X + Forms.Main.GripSize - Forms.Main.BorderWidth, scaledbounds.Y, scaledbounds.Width - Forms.Main.GripSize, scaledbounds.Height - Forms.Main.GripSize + Forms.Main.BorderWidth).Contains(Cursor.Position);
|
||||
bool countMIN = XObjects.Delay.Count >= -1 && XObjects.Delay.Count <= 0;
|
||||
bool countMAX = XObjects.Delay.Count >= XObjects.Delay.MaxCounts;
|
||||
Delay.Prevent direction = XObjects.Delay.IsProcessing;
|
||||
|
||||
// BUGFIX: Wenn der Mauszeiger kurz außerhalb des GFA-Task ist und sofort wieder einspringt, wird dieser nicht ausgeblendet
|
||||
if (mouseover && countMAX && !countMIN && direction == Delay.Prevent.Decrease)
|
||||
{
|
||||
XObjects.Delay.Waiting = new Delay.DelayTime(Config.User.NecessaryClick ? 0 : Config.User.Delay.Show, Config.User.Delay.Hide);
|
||||
XObjects.Delay.Increase();
|
||||
}
|
||||
// Wenn der Mausklick zum Einblenden benötigt wird, der Mauszeiger sich innerhalb des sichtbaren Fensters befindet und kein Delay durchgeführt wird
|
||||
else if (!Config.User.NecessaryClick && mouseover_withoutgrip && countMIN && direction == Delay.Prevent.None)
|
||||
{
|
||||
XObjects.Delay.Waiting = new Delay.DelayTime(Config.User.NecessaryClick ? 0 : Config.User.Delay.Show, Config.User.Delay.Hide);
|
||||
XObjects.Delay.Increase();
|
||||
}
|
||||
// Wenn der Mauszeiger nicht über dem GFA-Task ist, dieser komplett eingeblendet ist und kein Delay durchgeführt wird
|
||||
else if (!mouseover && countMAX && direction == Delay.Prevent.None)
|
||||
{
|
||||
XObjects.Delay.Decrease();
|
||||
}
|
||||
// Wenn der kein Mausklick zum Einblenden benötigt wird, der Mauszeiger sich innerhalb des GFA-Task befindet, dieser komplett eingeblendet ist und der Delay ausblendet
|
||||
else if (!Config.User.NecessaryClick && mouseover && countMAX && direction == Delay.Prevent.Decrease)
|
||||
{
|
||||
XObjects.Delay.Waiting = new Delay.DelayTime(Config.User.NecessaryClick ? 0 : Config.User.Delay.Show, Config.User.Delay.Hide);
|
||||
XObjects.Delay.Increase();
|
||||
}
|
||||
// Wenn der Mauszeiger sich nicht innerhalb des GFA-Task befindet, dieser komplett ausgeblendet ist und der Delay einblendet
|
||||
else if (!mouseover && countMIN && direction == Delay.Prevent.Increase)
|
||||
{
|
||||
XObjects.Delay.Decrease();
|
||||
}
|
||||
// Wenn der Mauszeiger sich innerhalb des sichtbaren Fensters befindet, der GFA-Task weder komplett ein- noch ausgeblendet ist und der GFA-Task sich im Ausblendprozess befindet
|
||||
else if (mouseover_withoutgrip && !countMIN && !countMAX && direction == Delay.Prevent.Decrease)
|
||||
{
|
||||
XObjects.Delay.Waiting = new Delay.DelayTime(0, Config.User.Delay.Hide);
|
||||
XObjects.Delay.Increase();
|
||||
}
|
||||
// Wenn der Mauszeiger nicht über dem GFA-Task ist, der GFA-Task weder komplett ein- noch ausgeblendet ist und der GFA-Task sich im Einblendprozess befindet
|
||||
else if (!mouseover && !countMIN && !countMAX && direction == Delay.Prevent.Increase)
|
||||
{
|
||||
XObjects.Delay.Decrease();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region KeyBoard
|
||||
public static void KeyBoard_Intercept_KeyPress(object sender, HotKeyEventArgs e)
|
||||
{
|
||||
var applist = Accessor.GetAppList(AppType.Menu);
|
||||
|
||||
if (e.Modifier == Modifier.CTRL)
|
||||
{
|
||||
if (e.Key == Keys.F1)
|
||||
{
|
||||
SystemApps.Info(out _);
|
||||
}
|
||||
if (e.Key == Keys.F2)
|
||||
{
|
||||
SystemApps.Settings(out _);
|
||||
}
|
||||
if (e.Key == Keys.F3)
|
||||
{
|
||||
SystemApps.Administration(out _);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
118
GFATask/Classes/InfoClass.cs
Normal file
118
GFATask/Classes/InfoClass.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
using Microsoft.VisualBasic.Devices;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public class InfoClass
|
||||
{
|
||||
/// <summary>
|
||||
/// Gibt den Titel des Programm-Assembly aus den Projekteigenschaften aus
|
||||
/// </summary>
|
||||
public static string ProgramName
|
||||
{
|
||||
get => ((AssemblyTitleAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyTitleAttribute), false))?.Title;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt den Codenamen des Programm-Assembly aus den Projekteigenschaften aus
|
||||
/// </summary>
|
||||
public static string ProgramCodeName
|
||||
{
|
||||
get => Application.ProductName;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt den Codenamen des Programm-Assembly aus den Projekteigenschaften aus
|
||||
/// </summary>
|
||||
public static string Copyright
|
||||
{
|
||||
get => $"{((AssemblyCopyrightAttribute)Assembly.GetExecutingAssembly().GetCustomAttribute(typeof(AssemblyCopyrightAttribute))).Copyright} {DateTime.Now.Year}";
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt eine benutzerdefinierte Version anhand der AssemblyInfo.cs aus
|
||||
/// </summary>
|
||||
public static string ProgramVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
Version version = Assembly.GetExecutingAssembly().GetName().Version;
|
||||
return string.Format("{0}.{1}.{2}", version.Major, version.Build.ToString()[0], version.Build.ToString()[1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die IP-Adresse des Computers als Zeichenkette aus
|
||||
/// </summary>
|
||||
public static string IPAdress
|
||||
{
|
||||
get
|
||||
{
|
||||
string ipadress = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList.First(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToString();
|
||||
return $"{ipadress}";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt Informationen wie den Computernamen, oder den Typen des Computers aus über den genutzten Computer aus
|
||||
/// </summary>
|
||||
public static string Computer
|
||||
{
|
||||
get
|
||||
{
|
||||
bool ica = (Environment.GetEnvironmentVariable("SessionName") ?? "").ToUpper().StartsWith("ICA");
|
||||
return $"{SystemInformation.ComputerName} {(ica ? "[Terminalserver]" : "")}";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Formattierter Programm-Name und -Version als Zeichenkette
|
||||
/// </summary>
|
||||
public static string Program { get => $"{ProgramName} {ProgramVersion}"; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die aktuell genutzte Windows-Version als Zeichenkette aus
|
||||
/// </summary>
|
||||
public static string OperatingSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
//string win_name = new ComputerInfo().OSFullName;
|
||||
|
||||
//string reg_win_version = Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\", "DisplayVersion", "").ToString();
|
||||
//string reg_win_installtype = Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\", "InstallationType", "").ToString();
|
||||
//return $"{win_name} {reg_win_version} [{reg_win_installtype}]";
|
||||
|
||||
var os = new System.Management.WMI.OSStructure();
|
||||
|
||||
return $"{os.Name} {os.ServicePackDisplayName} [{os.InstallType}]\nVersion {os.Version}";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die aktuell genutzte Windows-Version als Zeichenkette aus
|
||||
/// </summary>
|
||||
public static string Browsers
|
||||
{
|
||||
get
|
||||
{
|
||||
return $"{string.Join("\n", XObjects.WebBrowsers.Select(browser => $"{browser.Name} [{browser.Version}]"))}";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
202
GFATask/Classes/JSON.cs
Normal file
202
GFATask/Classes/JSON.cs
Normal file
@@ -0,0 +1,202 @@
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
/// <summary>
|
||||
/// Enthält Serialisierungsfunktionen zum Speichern und Auslesen von JSON-Strukturen
|
||||
/// </summary>
|
||||
public class JSON
|
||||
{
|
||||
/// <summary>
|
||||
/// Speichert das serialisierte Objekt in die angegebene Datei
|
||||
/// </summary>
|
||||
/// <param name="deserializedJsonObject">Das Objekt welches in die Datei geschrieben werden soll</param>
|
||||
/// <param name="path">Pfad zur Datei</param>
|
||||
public static void Serialize(object deserializedJsonObject, string path)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.WriteAllText(path, JsonConvert.SerializeObject(deserializedJsonObject, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Speichert die gewünschte(n) Appsdatei(en) ab
|
||||
/// </summary>
|
||||
/// <param name="jsonapp">Welche Apps-Datei soll gespeichert werden</param>
|
||||
public static void Save(JSONApp jsonapp)
|
||||
{
|
||||
try
|
||||
{
|
||||
jsonapp.GetFlags().ToList().ForEach(json =>
|
||||
{
|
||||
if ((JSONApp)json == JSONApp.User)
|
||||
{
|
||||
File.WriteAllText(Paths.Apps.Directory + "user.json", JsonConvert.SerializeObject(AppLists.User, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
else if ((JSONApp)json == JSONApp.Admin)
|
||||
{
|
||||
File.WriteAllText(Paths.Apps.Directory + "admin.json", JsonConvert.SerializeObject(AppLists.Admin, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
else if ((JSONApp)json == JSONApp.Menu)
|
||||
{
|
||||
File.WriteAllText(Paths.Apps.Directory + "menu.json", JsonConvert.SerializeObject(AppLists.Menu, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
else if ((JSONApp)json == JSONApp.Favorites)
|
||||
{
|
||||
File.WriteAllText(Paths.Favorites.Apps.FullName, JsonConvert.SerializeObject(AppLists.Favorites, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.EventLog.Write(string.Format("{0} nicht gespeichert", jsonapp.ToString()), LogClassification.CriticalError, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Speichert die gewünschte(n) Konfigurationsdatei(en) ab
|
||||
/// </summary>
|
||||
/// <param name="jsonconfig">Welche Konfigurationsdatei soll gespeichert werden</param>
|
||||
public static void Save(JSONConfig jsonconfig)
|
||||
{
|
||||
try
|
||||
{
|
||||
jsonconfig.GetFlags().ToList().ForEach(json =>
|
||||
{
|
||||
if((JSONConfig)json == JSONConfig.User)
|
||||
{
|
||||
File.WriteAllText(Paths.UserConfig.FullName, JsonConvert.SerializeObject(Config.User, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
else if ((JSONConfig)json == JSONConfig.Main)
|
||||
{
|
||||
File.WriteAllText(Paths.MainConfig.FullName, JsonConvert.SerializeObject(Config.Main, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
else if ((JSONConfig)json == JSONConfig.Prevalence)
|
||||
{
|
||||
File.WriteAllText(Paths.Prevalence.FullName, JsonConvert.SerializeObject(Config.Prevalence, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
else if ((JSONConfig)json == JSONConfig.NewsFeeds)
|
||||
{
|
||||
File.WriteAllText(Paths.NewsFeeds.Values.FullName, JsonConvert.SerializeObject(Config.NewsFeeds, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
else if ((JSONConfig)json == JSONConfig.AppClickCounter)
|
||||
{
|
||||
File.WriteAllText(Paths.AppClickCounter.FullName, JsonConvert.SerializeObject(Config.AppClickCounter, new JsonSerializerSettings() { Formatting = Formatting.Indented }));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.EventLog.Write(string.Format("{0} nicht gespeichert", jsonconfig.ToString()), LogClassification.CriticalError, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Führt eine Deserialisierung der Json-Datei anhand des Pfades durch
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Gibt das Model der Serialisierung an</typeparam>
|
||||
/// <param name="path">Der Pfad zur Json-Datei die zu einem Objekt serialisiert werden soll</param>
|
||||
/// <param name="array">Handelt es sich um eine Array-Datei</param>
|
||||
/// <returns>Serialisierter Json-Typ</returns>
|
||||
public static T Read<T>(string path, bool array = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (array)
|
||||
{
|
||||
var json = JArray.Parse(File.ReadAllText(path));
|
||||
return JsonConvert.DeserializeObject<T>(json.ToString(), new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Include, Formatting = Formatting.Indented });
|
||||
}
|
||||
else
|
||||
{
|
||||
string json = string.Concat(JObject.Parse(File.ReadAllText(path)));
|
||||
return JsonConvert.DeserializeObject<T>(json, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Include, Formatting = Formatting.Indented });
|
||||
}
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.EventLog.Write(string.Format("{0} nicht einlesbar", Path.GetFileName(path)), LogClassification.Crash, ex);
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool Exists(string path, string propertyname)
|
||||
{
|
||||
dynamic jsonobject = JsonConvert.DeserializeObject(string.Concat(JObject.Parse(File.ReadAllText(path))), new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Include, Formatting = Formatting.Indented });
|
||||
return ((JObject)jsonobject).Properties().Any(p => p.Name == propertyname);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Definiert den JSON-Konfigurations-Dateitypen
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum JSONConfig : int
|
||||
{
|
||||
/// <summary>
|
||||
/// Es handelt sich um die Benutzerdefinierte-Konfigurationsdatei
|
||||
/// </summary>
|
||||
User = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Es handelt sich um die Haupt-Konfigurationsdatei
|
||||
/// </summary>
|
||||
Main = 2,
|
||||
|
||||
/// <summary>
|
||||
/// Es handelt sich um die Beliebtheits-Konfigurationsdatei
|
||||
/// </summary>
|
||||
Prevalence = 4,
|
||||
|
||||
/// <summary>
|
||||
/// Es handelt sich um die Neuigkeiten-Konfigurationsdatei
|
||||
/// </summary>
|
||||
NewsFeeds = 8,
|
||||
|
||||
/// <summary>
|
||||
/// Es handelt sich um die AppClickCounter-Konfigurationsdatei
|
||||
/// </summary>
|
||||
AppClickCounter = 16
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Definiert den JSON-App-Dateitypen
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum JSONApp : int
|
||||
{
|
||||
/// <summary>
|
||||
/// Es handelt sich um die Benutzer-Apps Datei
|
||||
/// </summary>
|
||||
User = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Es handelt sich um die Admin-Apps Datei
|
||||
/// </summary>
|
||||
Admin = 2,
|
||||
|
||||
/// <summary>
|
||||
/// Es handelt sich um die Menü-Apps Datei
|
||||
/// </summary>
|
||||
Menu = 4,
|
||||
|
||||
/// <summary>
|
||||
/// Es handelt sich um die Favoriten-Apps Datei
|
||||
/// </summary>
|
||||
Favorites = 8
|
||||
}
|
||||
}
|
||||
285
GFATask/Classes/PreChanging.cs
Normal file
285
GFATask/Classes/PreChanging.cs
Normal file
@@ -0,0 +1,285 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
/// <summary>
|
||||
/// Eine Klasse zum zwischenspeichern von Einstellungen in den JSON-Models
|
||||
/// </summary>
|
||||
public class PreChanging
|
||||
{
|
||||
private Dictionary<Control, object> Temps { get; } = new Dictionary<Control, object>();
|
||||
|
||||
public Dictionary<Control, JsonChange> PreChanges { get; } = new Dictionary<Control, JsonChange>();
|
||||
|
||||
|
||||
public PreChanging() { }
|
||||
|
||||
public void GetTemps(IEnumerable<Control> tempedcontrols)
|
||||
{
|
||||
tempedcontrols.ToList().ForEach(control =>
|
||||
{
|
||||
object value = new object();
|
||||
if (control.GetType() == typeof(SwitchButton))
|
||||
{
|
||||
value = (control as SwitchButton).Checked;
|
||||
}
|
||||
else if (control.GetType() == typeof(NumericEx))
|
||||
{
|
||||
value = (control as NumericEx).Value;
|
||||
}
|
||||
else if (control.GetType() == typeof(ListBox))
|
||||
{
|
||||
value = (control as ListBox).SelectedItem;
|
||||
}
|
||||
else if (control.GetType() == typeof(ComboBox))
|
||||
{
|
||||
value = (control as ComboBox).SelectedItem;
|
||||
}
|
||||
else if (control.GetType() == typeof(AppListButton) && control.FindForm() != Forms.Settings)
|
||||
{
|
||||
value = (control as AppListButton).AnimateImageBackColor;
|
||||
}
|
||||
this.AddToTemp(control, value);
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Speichert Änderungen vorab in einer Auflistung. Änderungen werden erst mit der Funktion SaveAll wirksam
|
||||
/// </summary>
|
||||
/// <param name="dictionary"></param>
|
||||
/// <param name="property"></param>
|
||||
/// <param name="propname"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="controlname">Bei Model-Eigenschaften mit dem gleichen Namen (z.B. Grouping, oder Show in den List-Eigenschaften von Config.User), muss der Steuerlementname angegeben werden</param>
|
||||
/// <param name="action">Eine Methode, die eine individualisierte Aktion ausführt</param>
|
||||
public void Add(object t, string property, Control control, object value, Action<object> action)
|
||||
{
|
||||
if (PreChanges.ContainsKey(control))
|
||||
{
|
||||
PreChanges[control] = new JsonChange(property, t, GetProperty(t, property), value, action);
|
||||
PreChanges[control].Commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.AddToTemp(control, value);
|
||||
PreChanges.Add(control, new JsonChange(property, t, GetProperty(t, property), value, action));
|
||||
PreChanges[control].Commit();
|
||||
}
|
||||
}
|
||||
|
||||
private void AddToTemp(Control control, object value)
|
||||
{
|
||||
if (!Temps.ContainsKey(control))
|
||||
Temps.Add(control, value);
|
||||
}
|
||||
|
||||
|
||||
public PropertyInfo GetProperty(object t, string PropertyName)
|
||||
{
|
||||
if (t.GetType().GetProperties().Count(p => p.Name == PropertyName.Split('.')[0]) == 0)
|
||||
throw new ArgumentNullException(string.Format("Property {0}, is not exists in object {1}", PropertyName, t.ToString()));
|
||||
if (PropertyName.Split('.').Length == 1)
|
||||
return t.GetType().GetProperty(PropertyName);
|
||||
else
|
||||
return GetProperty(t.GetType().GetProperty(PropertyName.Split('.')[0]).GetValue(t, null), PropertyName.Split('.')[1]);
|
||||
}
|
||||
|
||||
|
||||
public void Reset(Control control)
|
||||
{
|
||||
if (Temps.ContainsKey(control))
|
||||
{
|
||||
if (control.GetType() == typeof(SwitchButton))
|
||||
{
|
||||
object value;
|
||||
if (Temps.TryGetValue(control, out value))
|
||||
{
|
||||
(control as SwitchButton).Checked = (bool)value;
|
||||
}
|
||||
}
|
||||
else if (control.GetType() == typeof(NumericEx))
|
||||
{
|
||||
object value;
|
||||
if (Temps.TryGetValue(control, out value))
|
||||
{
|
||||
(control as NumericEx).Value = decimal.Parse(value.ToString());
|
||||
}
|
||||
}
|
||||
else if (control.GetType() == typeof(ListBox))
|
||||
{
|
||||
object value;
|
||||
if (Temps.TryGetValue(control, out value))
|
||||
{
|
||||
(control as ListBox).SelectedItem = value;
|
||||
}
|
||||
}
|
||||
else if (control.GetType() == typeof(ComboBox))
|
||||
{
|
||||
object value;
|
||||
if (Temps.TryGetValue(control, out value))
|
||||
{
|
||||
(control as ComboBox).SelectedItem = value;
|
||||
}
|
||||
}
|
||||
else if (control.GetType() == typeof(AppListButton) && control.FindForm() != Forms.Settings)
|
||||
{
|
||||
object value;
|
||||
if (Temps.TryGetValue(control, out value))
|
||||
{
|
||||
(control as AppListButton).AnimateImageBackColor = (Color)value;
|
||||
}
|
||||
}
|
||||
PreChanges.Remove(control);
|
||||
}
|
||||
}
|
||||
|
||||
public void CommitAll()
|
||||
{
|
||||
// Anstatt Temps.Clear sollten die Steuerelement aus PreChanges die mit Temps übereinstimmen, den Wert aktualisiert bekommen
|
||||
this.DoItAll();
|
||||
this.PreChanges.ToList().ForEach(change => this.Temps[change.Key] = change.Value.Value );
|
||||
//this.Temps.Clear();
|
||||
this.PreChanges.Values.ToList().ForEach(change => change.Commit());
|
||||
this.PreChanges.Clear();
|
||||
}
|
||||
|
||||
|
||||
public void DoItAll()
|
||||
{
|
||||
// Anstatt Temps.Clear sollten die Steuerelement aus PreChanges die mit Temps übereinstimmen, den Wert aktualisiert bekommen
|
||||
this.PreChanges.ToList().ForEach(change =>
|
||||
{
|
||||
Temps[change.Key] = change.Value.Value;
|
||||
change.Value.DoIt();
|
||||
});
|
||||
}
|
||||
|
||||
public void Commit(Control control)
|
||||
{
|
||||
this.Temps[control] = this.PreChanges[control].Value;
|
||||
this.PreChanges[control].Commit();
|
||||
this.PreChanges.Remove(control);
|
||||
}
|
||||
|
||||
public void ResetAll()
|
||||
{
|
||||
Temps.ToList().ForEach(kv =>
|
||||
{
|
||||
Control control = kv.Key;
|
||||
if (control.GetType() == typeof(SwitchButton))
|
||||
{
|
||||
object value;
|
||||
if (Temps.TryGetValue(control, out value))
|
||||
{
|
||||
(control as SwitchButton).Checked = (bool)value;
|
||||
}
|
||||
}
|
||||
else if (control.GetType() == typeof(NumericEx))
|
||||
{
|
||||
object value;
|
||||
if (Temps.TryGetValue(control, out value))
|
||||
{
|
||||
(control as NumericEx).Value = decimal.Parse(value.ToString());
|
||||
}
|
||||
}
|
||||
else if (control.GetType() == typeof(ListBox))
|
||||
{
|
||||
object value;
|
||||
if (Temps.TryGetValue(control, out value))
|
||||
{
|
||||
(control as ListBox).SelectedItem = value;
|
||||
}
|
||||
}
|
||||
else if (control.GetType() == typeof(ComboBox))
|
||||
{
|
||||
object value;
|
||||
if (Temps.TryGetValue(control, out value))
|
||||
{
|
||||
if (value == null)
|
||||
return;
|
||||
(control as ComboBox).Text = value.ToString();
|
||||
}
|
||||
}
|
||||
});
|
||||
PreChanges.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Erzeugt eine Struktur von Änderungen in einer JSON-Datei, die vorab in einer Auflistung gespeichert werden
|
||||
/// </summary>
|
||||
public struct JsonChange
|
||||
{
|
||||
/// <summary>
|
||||
/// Eine Ausführbare Methode, die beim speichern des Elements ausgeführt werden kann
|
||||
/// </summary>
|
||||
public Action<object> Action { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Die Struktur des JSON-Models
|
||||
/// </summary>
|
||||
public string Property { get; set; }
|
||||
|
||||
|
||||
public object PropType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Name der Eigenschaft aus der JSON-Model-Struktur
|
||||
/// </summary>
|
||||
public PropertyInfo PropInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Neuer Wert
|
||||
/// </summary>
|
||||
public object Value { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Erzeugt eine Struktur von Änderungen in einer JSON-Datei, die vorab in einer Auflistung gespeichert werden
|
||||
/// </summary>
|
||||
/// <param name="property">Die Struktur des JSON-Models </param>
|
||||
/// <param name="propinfo">Name der Eigenschaft aus der JSON-Model-Struktur</param>
|
||||
/// <param name="value">Neuer Wert</param>
|
||||
public JsonChange(string property, object proptype, PropertyInfo propinfo, object value, Action<object> action)
|
||||
{
|
||||
Property = property;
|
||||
PropType = proptype;
|
||||
PropInfo = propinfo;
|
||||
Value = value;
|
||||
Action = action;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Übernimmt die Änderung bis zum abschließenden Speichern in die Laufzeit-Eigenschaft
|
||||
/// </summary>
|
||||
public void Commit()
|
||||
{
|
||||
try
|
||||
{
|
||||
PropInfo.SetValue(PropType, Value);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write(string.Format("Einstellung {0} nicht gespeichert", Property), LogClassification.CriticalError, ex);
|
||||
//Log.EventLog.Write(string.Format("Einstellung {0} nicht gespeichert", Property.ToString().Substring(0, Property.ToString().LastIndexOf("+")).Replace('+', '.') + "." + PropInfo.Name), LogClassification.CriticalError, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Führt eine individualisierte Aktion aus
|
||||
/// </summary>
|
||||
public void DoIt()
|
||||
{
|
||||
Action?.Invoke(Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
63
GFATask/Classes/SystemApps.cs
Normal file
63
GFATask/Classes/SystemApps.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Microsoft.VisualBasic.Devices;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
class SystemApps
|
||||
{
|
||||
public static void Restart(out bool conditions)
|
||||
{
|
||||
XObjects.Restart("-restart");
|
||||
conditions = true;
|
||||
}
|
||||
|
||||
public static void Kill(out bool conditions)
|
||||
{
|
||||
Environment.Exit(Environment.ExitCode);
|
||||
conditions = true;
|
||||
}
|
||||
|
||||
public static void Backup(out bool conditions)
|
||||
{
|
||||
ConfigBackupClass.Save();
|
||||
conditions = true;
|
||||
}
|
||||
|
||||
public static void LoadBackup(out bool conditions)
|
||||
{
|
||||
ConfigBackupClass.Load();
|
||||
conditions = true;
|
||||
}
|
||||
|
||||
public static void Settings(out bool conditions)
|
||||
{
|
||||
Forms.Main.Invoke(new MethodInvoker(delegate { Accessor.OpenForm("Settings"); }));
|
||||
conditions = true;
|
||||
}
|
||||
|
||||
public static void Administration(out bool conditions)
|
||||
{
|
||||
Forms.Main.Invoke(new MethodInvoker(delegate { Forms.Administration.Login(); }));
|
||||
conditions = true;
|
||||
}
|
||||
|
||||
public static void Info(out bool conditions)
|
||||
{
|
||||
if (Forms.Main.InvokeRequired)
|
||||
Forms.Main.Invoke(new MethodInvoker(delegate { Accessor.OpenForm("Info"); }));
|
||||
else
|
||||
Accessor.OpenForm("Info", closeifopen: true);
|
||||
|
||||
conditions = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
37
GFATask/Controls/AppButton.Designer.cs
generated
Normal file
37
GFATask/Controls/AppButton.Designer.cs
generated
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class AppButton
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
418
GFATask/Controls/AppButton.cs
Normal file
418
GFATask/Controls/AppButton.cs
Normal file
@@ -0,0 +1,418 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
[Browsable(false), ToolboxItem(false)]
|
||||
public partial class AppButton : AppListButton
|
||||
{
|
||||
private ContextMenuStrip _contextmenustrip = new ContextMenuStrip();
|
||||
public override ContextMenuStrip ContextMenuStrip
|
||||
{
|
||||
get
|
||||
{
|
||||
XObjects.ContextMenuStrip = _contextmenustrip;
|
||||
return _contextmenustrip;
|
||||
}
|
||||
set
|
||||
{
|
||||
_contextmenustrip = value;
|
||||
_contextmenustrip.Items.Clear();
|
||||
|
||||
if (AppType == AppType.Favorites || XObjects.IsAdmin.Result)
|
||||
{
|
||||
_contextmenustrip.Items.Add("Bearbeiten", null, (s, evt) =>
|
||||
{
|
||||
Forms.AppCreator.GetEditableItem(AppType, Accessor.GetAppList(AppType).Apps.Find(app => app.ID == this.ID));
|
||||
Accessor.OpenForm("AppCreator", Forms.Main);
|
||||
});
|
||||
|
||||
_contextmenustrip.Items.Add(new ToolStripSeparator());
|
||||
}
|
||||
|
||||
_contextmenustrip.Items.Add("Zulässige Berechtigungen", null, (s, evt) =>
|
||||
{
|
||||
XObjects.MessageBox(!Config.Main.UseActiveDirectoryGroups ? "Die Active Directory Berechtigungsfunktion für den GFATask ist nicht aktiviert.\nIhnen werden alle Apps angezeigt." : $"Diese App benötigt mindestens eine Mitgliedschaft in eine der aufgelisteten Gruppen:\n\n{(ActiveDirectoryGroups == null || ActiveDirectoryGroups.Length == 0 ? "Keine" : string.Join("\n", ActiveDirectoryGroups))}", NotifyButtons.OK, NotifyType.Message, new Size(280, !Config.Main.UseActiveDirectoryGroups ? 140 : 240), "Zulässige App-Berechtigungen", null);
|
||||
});
|
||||
_contextmenustrip.Items.Add("Wie oft wurde ich geklickt?", null, (s, evt) =>
|
||||
{
|
||||
XObjects.MessageBox($"Diese App wurde {Prevalence.CountClicks}x von Ihnen ausgeführt.", NotifyButtons.OK, NotifyType.Message, new Size(250, 150), "Wie oft wurde ich geklickt?", null);
|
||||
});
|
||||
if (AppType == AppType.Favorites || XObjects.IsAdmin.Result)
|
||||
{
|
||||
_contextmenustrip.Items.Add(new ToolStripSeparator());
|
||||
_contextmenustrip.Items.Add(new ToolStripMenuItem($"{this.Text} entfernen", null, (s, evt) =>
|
||||
{
|
||||
if (AppType != AppType.Favorites)
|
||||
{
|
||||
if (XObjects.MessageBox($"Soll {this.Text} entfernt werden", NotifyButtons.YesNo, NotifyType.Message, new Size(300, 120), $"{this.Text} entfernen").Result == DialogResult.Yes)
|
||||
Creator.RemoveApp(AppType, Accessor.GetAppList(AppType).Apps.Find(app => app.ID == this.ID));
|
||||
}
|
||||
else
|
||||
{
|
||||
Creator.RemoveApp(AppType, Accessor.GetAppList(AppType).Apps.Find(app => app.ID == this.ID));
|
||||
}
|
||||
})
|
||||
{ Name = "remove_applistbutton" });
|
||||
}
|
||||
else
|
||||
{
|
||||
_contextmenustrip.Items.Add(new ToolStripSeparator());
|
||||
_contextmenustrip.Items.Add(new ToolStripMenuItem($"{this.Text} zu Favoriten hinzufügen", null, (s, evt) =>
|
||||
{
|
||||
Models.App appnew = new Models.App()
|
||||
{
|
||||
ActiveDirectoryGroups = this.ActiveDirectoryGroups,
|
||||
Group = this.GroupName,
|
||||
ID = AppLists.Favorites.Apps == null || AppLists.Favorites.Apps.Count == 0 ? 1 : AppLists.Favorites.Apps.Max(app => app.ID) + 1,
|
||||
Icon = Accessor.GetAppList(AppType).Apps.Find(app => app.ID == this.ID).Icon,
|
||||
Name = this.Text,
|
||||
Execute = this.Execute
|
||||
};
|
||||
File.Copy($@"{Paths.Icons.Directory}\{appnew.Icon}", Paths.Favorites.Icons.Directory + @"\" + appnew.Icon, true);
|
||||
Creator.AddApp(AppType.Favorites, appnew);
|
||||
})
|
||||
{ Name = "to_favorites" });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string _description = "";
|
||||
public string Description
|
||||
{
|
||||
get => _description; set
|
||||
{
|
||||
_description = value;
|
||||
this.GetToolTipText();
|
||||
}
|
||||
}
|
||||
|
||||
public override AppType AppType
|
||||
{
|
||||
get => base.AppType;
|
||||
set
|
||||
{
|
||||
base.AppType = value;
|
||||
this.ContextMenuStrip = _contextmenustrip;
|
||||
}
|
||||
}
|
||||
|
||||
private DateTime _lastmodified = default(DateTime);
|
||||
public DateTime LastModified { get => _lastmodified; set => _lastmodified = value; }
|
||||
|
||||
private DateTime _creationtime = default(DateTime);
|
||||
public DateTime CreationTime { get => _creationtime; set => _creationtime = value; }
|
||||
|
||||
|
||||
private string _groupname = "";
|
||||
/// <summary>
|
||||
/// Sollte die App einer Gruppe zugeordnet sein, wird der Name hier angezeigt
|
||||
/// </summary>
|
||||
[
|
||||
Description("Sollte die App einer Gruppe zugeordnet sein, wird der Name hier angezeigt"),
|
||||
DefaultValue(0)
|
||||
]
|
||||
public string GroupName
|
||||
{
|
||||
get => _groupname;
|
||||
set => _groupname = value;
|
||||
}
|
||||
|
||||
|
||||
private Models.Execute[] _execute = new Models.Execute[0];
|
||||
/// <summary>
|
||||
/// Beinhaltet die ausführbaren Befehle für diese App
|
||||
/// </summary>
|
||||
public Models.Execute[] Execute
|
||||
{
|
||||
get => _execute;
|
||||
set
|
||||
{
|
||||
_execute = value;
|
||||
|
||||
if (_execute.Any(exec =>
|
||||
(exec.Command != null && (exec.Command.StartsWith("http") || exec.Command.StartsWith("www.") || exec.Command.StartsWith("intranet."))) ||
|
||||
(exec.Args != null && (exec.Args.StartsWith("http") || exec.Args.StartsWith("www.") || exec.Args.StartsWith("intranet."))) ||
|
||||
(XObjects.IsAppLnk(exec.Command) && Accessor.GetAppList(Cast.ToAppLink(exec.Command).AppType).Apps.Find(app => app.ID == Cast.ToAppLink(exec.Command).ID).Execute.Any(lnk => lnk.Command.StartsWith("http") || lnk.Command.StartsWith("www.") || lnk.Command.StartsWith("intranet.")))))
|
||||
{
|
||||
|
||||
string browsername = String.Empty;
|
||||
|
||||
if (XObjects.IsAppLnk(_execute[0].Command))
|
||||
{
|
||||
var applnk = Accessor.GetAppList(Cast.ToAppLink(_execute[0].Command).AppType).Apps.Find(app => app.ID == Cast.ToAppLink(_execute[0].Command).ID);
|
||||
browsername = applnk.Execute[0].Command.StartsWith("http") || applnk.Execute[0].Command.StartsWith("www.") || applnk.Execute[0].Command.StartsWith("internet.") ? "default" : AlternateWebbrowser.GetName(applnk.Execute[0].Command);
|
||||
}
|
||||
else
|
||||
{
|
||||
browsername = (_execute[0].Command.StartsWith("http") || _execute[0].Command.StartsWith("www.") || _execute[0].Command.StartsWith("intranet.")) ? "default" : AlternateWebbrowser.GetName(_execute[0].Command);
|
||||
}
|
||||
AlternateWebbrowser.DrawWebBrowserIcon(this.Image, browsername, this.Text);
|
||||
this.Invalidate();
|
||||
}
|
||||
|
||||
if (AppType == AppType.Favorites)
|
||||
{
|
||||
|
||||
if (_execute.Any(exec =>
|
||||
(exec.Command != null && (exec.Command.StartsWith("http") || exec.Command.StartsWith("www.") || exec.Command.StartsWith("intranet."))) ||
|
||||
(exec.Args != null && (exec.Args.StartsWith("http") || exec.Args.StartsWith("www.") || exec.Args.StartsWith("intranet.")))) && XObjects.WebBrowsers.Count > 0)
|
||||
{
|
||||
_contextmenustrip.Items.Insert(1, new ToolStripMenuItem("Öffnen mit", XObjects.WebBrowsers.Select(browser => AlternateWebbrowser.GetImage(browser.Name)).ToArray().Merge(_contextmenustrip.ImageScalingSize, 2), XObjects.WebBrowsers.Where(browser => browser.Path != "unknown").Select(browser =>
|
||||
{
|
||||
var browsericon = AlternateWebbrowser.GetImage(browser.Name);
|
||||
return new ToolStripMenuItem(browser.Name, browsericon, (s, evt) =>
|
||||
{
|
||||
var app = Accessor.GetAppList(AppType.Favorites).Apps.Find(listapp => listapp.ID == this.ID);
|
||||
|
||||
_execute.ToList().ForEach(exec =>
|
||||
{
|
||||
if (exec.Args == null || exec.Args == "")
|
||||
{
|
||||
string website = exec.Command;
|
||||
exec.Args = website;
|
||||
}
|
||||
exec.Command = AlternateWebbrowser.GetExec(browser.Name);
|
||||
_description = $"Öffnet die verlinkte Internetadresse {this.Text} mit dem {browser.Name} Browser";
|
||||
this.Image = Image.FromFile(Cast.IconPath(AppType.Favorites, app.Icon));
|
||||
AlternateWebbrowser.DrawWebBrowserIcon(this.Image, browser.Name);
|
||||
this.Invalidate();
|
||||
this.OnMouseClick(new MouseEventArgs(MouseButtons.Left, 0, 0, 0, 0));
|
||||
});
|
||||
app.Execute = _execute;
|
||||
app.Description = _description;
|
||||
JSON.Save(JSONApp.Favorites);
|
||||
});
|
||||
}).ToArray()));
|
||||
//_contextmenustrip.Items.Insert(1, new ToolStripMenuItem("Öffnen mit", AlternateWebbrowser.Installed.Select(browser => AlternateWebbrowser.GetImage(browser.Key)).ToArray().Merge(_contextmenustrip.ImageScalingSize, 2), AlternateWebbrowser.Installed.Select(browser =>
|
||||
// {
|
||||
// var browsericon = AlternateWebbrowser.GetImage(browser.Key);
|
||||
// return new ToolStripMenuItem(browser.Key, browsericon, (s, evt) =>
|
||||
// {
|
||||
// var app = Accessor.GetAppList(AppType.Favorites).Apps.Find(listapp => listapp.ID == this.ID);
|
||||
|
||||
// _execute.ToList().ForEach(exec =>
|
||||
// {
|
||||
// if (exec.Args == null || exec.Args == "")
|
||||
// {
|
||||
// string website = exec.Command;
|
||||
// exec.Args = website;
|
||||
// }
|
||||
// exec.Command = AlternateWebbrowser.GetExec(browser.Key);
|
||||
// _description = $"Öffnet die verlinkte Internetadresse {this.Text} mit dem {browser.Key} Browser";
|
||||
// this.Image = Image.FromFile(Cast.IconPath(AppType.Favorites, app.Icon));
|
||||
// AlternateWebbrowser.DrawWebBrowserIcon(this.Image, browser.Key);
|
||||
// this.Invalidate();
|
||||
// this.OnMouseClick(new MouseEventArgs(MouseButtons.Left, 0, 0, 0, 0));
|
||||
// });
|
||||
// app.Execute = _execute;
|
||||
// app.Description = _description;
|
||||
// JSON.Save(JSONApp.Favorites);
|
||||
// });
|
||||
// }).ToArray()));
|
||||
_contextmenustrip.SetDefaultDesign();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private int _id = 0;
|
||||
/// <summary>
|
||||
/// Die eindeutige Identifikationsnummer des AppButtons
|
||||
/// </summary>
|
||||
[
|
||||
Description("Die eindeutige Identifikationsnummer des AppButtons"),
|
||||
DefaultValue(0)
|
||||
]
|
||||
public int ID
|
||||
{
|
||||
get => _id;
|
||||
set => _id = value;
|
||||
}
|
||||
|
||||
|
||||
public AppButton()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.TextAlign = ContentAlignment.MiddleLeft;
|
||||
ContextMenuStrip.SetDefaultDesign();
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void OnHandleCreated(EventArgs e)
|
||||
{
|
||||
base.OnHandleCreated(e);
|
||||
this.GetToolTipText();
|
||||
}
|
||||
|
||||
protected override void OnResize(EventArgs e)
|
||||
{
|
||||
base.OnResize(e);
|
||||
this.Width = this.ImageOnly ? this.Height : this.ActualWidth;
|
||||
}
|
||||
|
||||
protected override void OnMouseHover(EventArgs e)
|
||||
{
|
||||
base.OnMouseHover(e);
|
||||
}
|
||||
|
||||
protected override void OnMouseLeave(EventArgs e)
|
||||
{
|
||||
base.OnMouseLeave(e);
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void OnTextChanged(EventArgs e)
|
||||
{
|
||||
base.OnTextChanged(e);
|
||||
|
||||
if (AppType == AppType.Favorites || XObjects.IsAdmin.Result)
|
||||
{
|
||||
if (_contextmenustrip.Items["remove_applistbutton"] != null)
|
||||
{
|
||||
_contextmenustrip.Items["remove_applistbutton"].Text = $"{this.Text} entfernen";
|
||||
_contextmenustrip.Items["remove_applistbutton"].Click += (sender, evt) =>
|
||||
{
|
||||
if(AppType != AppType.Favorites)
|
||||
{
|
||||
if (XObjects.MessageBox($"Soll {this.Text} entfernt werden", NotifyButtons.YesNo, NotifyType.Message, new Size(300, 120), $"{this.Text} entfernen").Result == DialogResult.Yes)
|
||||
Creator.RemoveApp(AppType, Accessor.GetAppList(AppType).Apps.Find(app => app.ID == this.ID));
|
||||
}
|
||||
else
|
||||
{
|
||||
Creator.RemoveApp(AppType, Accessor.GetAppList(AppType).Apps.Find(app => app.ID == this.ID));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected override void OnMouseClick(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseClick(e);
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
if (this.ClientRectangle.Contains(e.Location))
|
||||
{
|
||||
if(AppType == AppType.Admin || AppType == AppType.User || AppType == AppType.Menu)
|
||||
{
|
||||
Accessor.SetAppCounter(AppType, _id);
|
||||
}
|
||||
else if(AppType == AppType.Favorites)
|
||||
{
|
||||
if (XObjects.IsAppLnk(this.Execute[0].Command))
|
||||
{
|
||||
AppLnk lnk = Cast.ToAppLink(this.Execute[0].Command);
|
||||
Models.App applnk = lnk.ToApp();
|
||||
Accessor.SetAppCounter(lnk.AppType, lnk.ID);
|
||||
if (applnk.LastModified > this.LastModified)
|
||||
{
|
||||
var applist = Accessor.GetAppList(this.AppType);
|
||||
var app = applist.Apps[applist.Apps.FindIndex(appitem => appitem.ID == this.ID)];
|
||||
|
||||
if (!System.Drawing.Comparer.Image(Accessor.GetAppListPanel(lnk.AppType).SortedList.Find(button => button.Name == Cast.AppButtonName(lnk.AppType, applnk)).Image, this.Image))
|
||||
{
|
||||
File.Copy(Cast.IconPath(lnk.AppType, applnk.Icon), Cast.IconPath(AppType.Favorites, app.Icon), true);
|
||||
using (FileStream fs = new FileStream(Cast.IconPath(AppType.Favorites, app.Icon), FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
|
||||
{
|
||||
this.Image = Image.FromStream(fs);
|
||||
}
|
||||
}
|
||||
app.LastModified = DateTime.Now;
|
||||
this.LastModified = DateTime.Now;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Prevalence.CountUp();
|
||||
this.GetToolTipText();
|
||||
if (Config.User.Prevalence)
|
||||
{
|
||||
this.StepUpPrevalence(this.Parent.Controls.IndexOf(this) == 0 ? null : this.Parent.Controls[this.Parent.Controls.IndexOf(this) - 1]);
|
||||
}
|
||||
if (_execute != null && _execute.Length > 0)
|
||||
{
|
||||
new Thread(new ThreadStart(delegate
|
||||
{
|
||||
foreach (var exec in _execute)
|
||||
{
|
||||
if (AppExecution.FromApp(this.Text, exec.Command, exec.Args == null ? "" : string.Join(" ", exec.Args)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}))
|
||||
{ IsBackground = true, Priority = ThreadPriority.BelowNormal }.Start();
|
||||
}
|
||||
if (Forms.AppButtonGroup.Visible)
|
||||
{
|
||||
Forms.AppButtonGroup.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void GetToolTipText()
|
||||
{
|
||||
this.ToolTipText = $"{this.Text}\n\n{(_description != "" ? _description : "")}";
|
||||
//this.ToolTipText = $"App: {this.Text}\n" +
|
||||
// $"{(this.GroupName != null && this.GroupName != string.Empty ? $"Gruppe: {this.GroupName}\n" : "")}" +
|
||||
// $"Geklickt: {this.Prevalence.CountClicks}x";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Setzt den Index des AppButtons solange herunter, bis dieser richtig eingegliedert wurde
|
||||
/// </summary>
|
||||
/// <param name="next">Der nächste AppButton, links von diesem</param>
|
||||
private void StepUpPrevalence(Control next)
|
||||
{
|
||||
if(this.Parent.Parent != null && this.Parent.Parent.GetType() == typeof(FormAppButtonGroup))
|
||||
{
|
||||
var virtual_form = ((FormAppButtonGroup)this.Parent.Parent);
|
||||
var virtual_applist = ((FlowLayoutPanel)this.Parent);
|
||||
virtual_form.MyGroupButton.Prevalence = virtual_applist.Controls.OfType<AppButton>().ToList().Find(
|
||||
appbutton => appbutton.Prevalence.CountClicks == virtual_applist.Controls.OfType<AppButton>().ToList().Max(appbtn => appbtn.Prevalence.CountClicks)).Prevalence;
|
||||
var applistpanel = ((FlowContent)virtual_form.MyGroupButton.Parent);
|
||||
var groupbutton = virtual_form.MyGroupButton;
|
||||
var nextbutton = applistpanel.GetNextControl(virtual_form.MyGroupButton, false);
|
||||
|
||||
if (nextbutton != null && groupbutton.Prevalence.CountClicks >= ((AppListButton)nextbutton).Prevalence.CountClicks)
|
||||
{
|
||||
applistpanel.Controls.SetChildIndex(virtual_form.MyGroupButton, applistpanel.Controls.GetChildIndex(nextbutton));
|
||||
this.StepUpPrevalence(next);
|
||||
}
|
||||
}
|
||||
if (next != null)
|
||||
{
|
||||
if ((next.GetType() == typeof(AppButton) && this.Prevalence.CountClicks >= ((AppButton)next).Prevalence.CountClicks) ||
|
||||
(next.GetType() == typeof(GroupButton) && this.Prevalence.CountClicks >= ((GroupButton)next).Prevalence.CountClicks))
|
||||
{
|
||||
if(this.Parent.GetType() == typeof(FormAppButtonGroup))
|
||||
{
|
||||
// Neue Anordnung in der Gruppenliste
|
||||
((FlowLayoutPanel)this.Parent).Controls.SetChildIndex(this, ((FlowLayoutPanel)this.Parent).Controls.GetChildIndex(next));
|
||||
((FlowContent)this.Parent.Parent).Controls.SetChildIndex(((FormAppButtonGroup)this.Parent).MyGroupButton, ((FlowContent)this.Parent.Parent).Controls.GetChildIndex(next));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Neue Anordnung in der gesamten App-Liste
|
||||
this.Parent.Controls.SetChildIndex(this, this.Parent.Controls.GetChildIndex(next));
|
||||
this.StepUpPrevalence(this.Parent.Controls.IndexOf(this) == 0 ? null : this.Parent.Controls[this.Parent.Controls.IndexOf(this) - 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
37
GFATask/Controls/AppListButton.Designer.cs
generated
Normal file
37
GFATask/Controls/AppListButton.Designer.cs
generated
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class AppListButton
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
167
GFATask/Controls/AppListButton.cs
Normal file
167
GFATask/Controls/AppListButton.cs
Normal file
@@ -0,0 +1,167 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
[
|
||||
Browsable(false),
|
||||
ToolboxItem(false)
|
||||
]
|
||||
public partial class AppListButton : AnimationButton
|
||||
{
|
||||
internal string[] _activedirectorygroups = new string[] { };
|
||||
/// <summary>
|
||||
/// Sollte die App einer Gruppe zugeordnet sein, wird der Name hier angezeigt
|
||||
/// </summary>
|
||||
[
|
||||
Description("Sollte die App einer Gruppe zugeordnet sein, wird der Name hier angezeigt"),
|
||||
DefaultValue(typeof(string[]), "")
|
||||
]
|
||||
public string[] ActiveDirectoryGroups
|
||||
{
|
||||
get => _activedirectorygroups;
|
||||
set => _activedirectorygroups = value;
|
||||
}
|
||||
|
||||
|
||||
private AppType _apptype = AppType.None;
|
||||
/// <summary>
|
||||
/// Definiert den Apptypen des AppButtons
|
||||
/// </summary>
|
||||
[Description("Definiert den Apptypen des AppButtons")]
|
||||
virtual public AppType AppType
|
||||
{
|
||||
get => _apptype;
|
||||
set
|
||||
{
|
||||
_apptype = value;
|
||||
//this.AllowDrop = _apptype == AppType.Favorites;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private Prevalencia _prevelance = new Prevalencia();
|
||||
/// <summary>
|
||||
/// Erfasst die Häufigkeit der Klicks um die App nach Beliebtheit anzuordnen
|
||||
/// </summary>
|
||||
[
|
||||
Description("Erfasst die Häufigkeit der Klicks um die App nach Beliebtheit anzuordnen"),
|
||||
DefaultValue(true)
|
||||
]
|
||||
virtual public Prevalencia Prevalence
|
||||
{
|
||||
get => _prevelance;
|
||||
set => _prevelance = value;
|
||||
}
|
||||
|
||||
|
||||
private bool _imageonly = false;
|
||||
virtual public bool ImageOnly {
|
||||
get => _imageonly;
|
||||
set
|
||||
{
|
||||
_imageonly = value;
|
||||
OnImageOnlyChanged(new EventArgs());
|
||||
this.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void OnImageOnlyChanged(EventArgs e)
|
||||
{
|
||||
if (this.ImageOnly)
|
||||
{
|
||||
this.Width = this.Height;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Width = _actualwidth;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private int _actualwidth = 0;
|
||||
public int ActualWidth
|
||||
{
|
||||
get => _actualwidth;
|
||||
set
|
||||
{
|
||||
_actualwidth = value;
|
||||
OnImageOnlyChanged(new EventArgs());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public AppListButton()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
protected override void OnMouseHover(EventArgs e)
|
||||
{
|
||||
if (this.ContextMenuStrip != null && this.ContextMenuStrip.Items.Count > 0)
|
||||
{
|
||||
int menusize = (int)(this.BorderBounds.Height * 72 / this.CreateGraphics().DpiX / 2);
|
||||
}
|
||||
|
||||
base.OnMouseHover(e);
|
||||
}
|
||||
|
||||
|
||||
protected override void OnMouseDown(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDown(e);
|
||||
if(e.Button == MouseButtons.Right)
|
||||
{
|
||||
if (this.ContextMenuStrip != null && this.ContextMenuStrip.Items.Count > 0)
|
||||
this.ContextMenuStrip.Show(this, new Point(this.Padding.Left, this.ClientRectangle.Bottom));
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseEnter(EventArgs e)
|
||||
{
|
||||
ToolTip.ShowAlways = true;
|
||||
if(Config.User.NecessaryClick)
|
||||
ToolTip.SetToolTip(this, this.ToolTipText);
|
||||
else
|
||||
ToolTip.SetToolTip(this, this.ToolTipText);
|
||||
//ToolTip.Show(this.ToolTipText, this, new Point(0, this.Height));
|
||||
base.OnMouseEnter(e);
|
||||
}
|
||||
|
||||
protected override void OnSizeChanged(EventArgs e)
|
||||
{
|
||||
base.OnSizeChanged(e);
|
||||
this.ImageSize = new Size(this.BorderBounds.Height - this.Padding.Vertical - this.Margin.Vertical, this.BorderBounds.Height - this.Padding.Vertical - this.Margin.Vertical);
|
||||
}
|
||||
|
||||
protected override void OnMouseMove(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseMove(e);
|
||||
if (e.Button == MouseButtons.Left && !this.ClientRectangle.Contains(e.Location))
|
||||
{
|
||||
this.DoDragDrop(this, DragDropEffects.Copy);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs pe)
|
||||
{
|
||||
base.OnPaint(pe);
|
||||
|
||||
if (_imageonly)
|
||||
{
|
||||
//pe.Graphics.SetClip(new Rectangle(TextBounds.X + 3, TextBounds.Y, TextBounds.Width - 3, TextBounds.Height));
|
||||
//pe.Graphics.Clear(this.BackColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
45
GFATask/Controls/AppListPanel.Designer.cs
generated
Normal file
45
GFATask/Controls/AppListPanel.Designer.cs
generated
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class AppListPanel
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
this.SuspendLayout();
|
||||
flowcontent = new FlowContent();
|
||||
flowcontent.WrapContents = true;
|
||||
flowcontent.AutoScroll = true;
|
||||
flowcontent.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.Controls.Add(flowcontent);
|
||||
this.ResumeLayout(false);
|
||||
}
|
||||
FlowContent flowcontent;
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
1457
GFATask/Controls/AppListPanel.cs
Normal file
1457
GFATask/Controls/AppListPanel.cs
Normal file
File diff suppressed because it is too large
Load Diff
37
GFATask/Controls/GroupButton.Designer.cs
generated
Normal file
37
GFATask/Controls/GroupButton.Designer.cs
generated
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class GroupButton
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
309
GFATask/Controls/GroupButton.cs
Normal file
309
GFATask/Controls/GroupButton.cs
Normal file
@@ -0,0 +1,309 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
[Browsable(false), ToolboxItem(false)]
|
||||
public partial class GroupButton : AppListButton
|
||||
{
|
||||
private Collection<AppButton> _containedappbuttons = new Collection<AppButton>();
|
||||
public Collection<AppButton> ContainedAppButtons
|
||||
{
|
||||
get => _containedappbuttons;
|
||||
set
|
||||
{
|
||||
_containedappbuttons = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private List<Models.App> _containedapps = new List<Models.App>();
|
||||
public List<Models.App> ContainedApps
|
||||
{
|
||||
get => _containedapps;
|
||||
set
|
||||
{
|
||||
_containedapps = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private FormAppButtonGroup _appbuttongroup;
|
||||
public FormAppButtonGroup AppButtonGroup { get => _appbuttongroup; }
|
||||
|
||||
|
||||
private ContextMenuStrip _contextmenustrip = new ContextMenuStrip();
|
||||
new public ContextMenuStrip ContextMenuStrip
|
||||
{
|
||||
get
|
||||
{
|
||||
XObjects.ContextMenuStrip = _contextmenustrip;
|
||||
return _contextmenustrip;
|
||||
}
|
||||
set
|
||||
{
|
||||
_contextmenustrip = value;
|
||||
_contextmenustrip.Items.Clear();
|
||||
|
||||
if (AppType == AppType.Favorites)
|
||||
{
|
||||
_contextmenustrip.Items.Add(new ToolStripMenuItem("Umbennen", null, (sender, e) =>
|
||||
{
|
||||
var msgbox = XObjects.MessageBox($"{this.Text}", NotifyButtons.YesNo, NotifyType.TextBox, new Size(250, 150), $"{this.Text} umbenennen", this.Text);
|
||||
if(msgbox.Result == DialogResult.Yes)
|
||||
{
|
||||
_containedapps.ForEach(app =>
|
||||
{
|
||||
app.Group = msgbox.Value.ToString();
|
||||
Creator.ReplaceApp(AppType, app);
|
||||
});
|
||||
|
||||
this.Text = msgbox.Value.ToString();
|
||||
_contextmenustrip.Items["remove_applistbutton"].Text = $"{this.Text} entfernen";
|
||||
this.Name = Cast.GroupButtonName(AppType, this.Text);
|
||||
}
|
||||
}, "rename_applistbutton"));
|
||||
_contextmenustrip.Items.Add(new ToolStripMenuItem($"{this.Text} entfernen", null, (s, evt) =>
|
||||
{
|
||||
for (int i = _containedapps.Count - 1; i >= 0; i--)
|
||||
{
|
||||
Creator.RemoveApp(AppType, _containedapps[i]);
|
||||
}
|
||||
Accessor.GetAppListPanel(AppType).RemoveGroupButton(this.Name, true);
|
||||
}, "remove_applistbutton"));
|
||||
}
|
||||
else
|
||||
{
|
||||
_contextmenustrip.Items.Add(new ToolStripMenuItem($"{this.Text} zu Favoriten hinzufügen", null, (s, evt) =>
|
||||
{
|
||||
List<Models.App> clones = new List<Models.App>();
|
||||
string[] usedicons = new string[0];
|
||||
_containedapps.ForEach(app =>
|
||||
{
|
||||
app.ID = AppLists.Favorites.Apps.Max(listapp => listapp.ID) + 1;
|
||||
try
|
||||
{
|
||||
if (!usedicons.ToList().Exists(icon => icon == app.Icon) && app.Icon != "" && app.Icon != null)
|
||||
{
|
||||
File.Copy($@"{Paths.Icons.Directory}\{app.Icon}", Paths.Favorites.Icons.Directory + @"\" + app.Icon, true);
|
||||
Array.Resize(ref usedicons, usedicons.Length + 1);
|
||||
usedicons[usedicons.Length - 1] = app.Icon;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Bild nicht gespeichert", LogClassification.LowError, ex);
|
||||
}
|
||||
clones.Add(app);
|
||||
Creator.AddApp(AppType.Favorites, app);
|
||||
});
|
||||
usedicons = null;
|
||||
Accessor.GetAppListPanel(AppType.Favorites).AddGroupButton(clones.ToArray());
|
||||
}, "to_favorites"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override AppType AppType
|
||||
{
|
||||
get => base.AppType; set
|
||||
{
|
||||
base.AppType = value;
|
||||
this.ContextMenuStrip = _contextmenustrip;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public GroupButton()
|
||||
{
|
||||
InitializeComponent();
|
||||
_containedappbuttons.CollectionChanged += _containedappbuttons_CollectionChanged;
|
||||
ContextMenuStrip.SetDefaultDesign();
|
||||
this.ToolTipText = "Apps: ";
|
||||
}
|
||||
|
||||
|
||||
public void RemoveApp(Models.App app)
|
||||
{
|
||||
if(_containedappbuttons.ToList().Exists(appbutton => appbutton.Name == Cast.AppButtonName(AppType, app)))
|
||||
_containedappbuttons.Remove(_containedappbuttons.First(appbutton => appbutton.Name == Cast.AppButtonName(AppType, app)));
|
||||
_containedapps.Remove(app);
|
||||
if(_appbuttongroup != null)
|
||||
{
|
||||
if(_appbuttongroup.MyGroupButton == this)
|
||||
{
|
||||
_appbuttongroup.RemoveButton(app);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void _containedappbuttons_CollectionChanged(object sender, System.Collections.Events.CollectionChangedEventArgs<AppButton> e)
|
||||
{
|
||||
|
||||
if (e.ChangeType == CollectionChangeType.Add)
|
||||
{
|
||||
foreach (var adgroup in e.Element.ActiveDirectoryGroups != null ? e.Element.ActiveDirectoryGroups : new string[] { "" })
|
||||
{
|
||||
if (!_activedirectorygroups.Contains(adgroup))
|
||||
{
|
||||
Array.Resize(ref _activedirectorygroups, _activedirectorygroups.Length + 1);
|
||||
_activedirectorygroups[_activedirectorygroups.Length - 1] = adgroup;
|
||||
}
|
||||
}
|
||||
e.Element.MouseDown += Element_MouseDown;
|
||||
}
|
||||
else if (e.ChangeType == CollectionChangeType.Remove)
|
||||
{
|
||||
e.Element.MouseDown -= Element_MouseDown;
|
||||
if (_containedappbuttons.Count == 1)
|
||||
{
|
||||
Accessor.GetAppListPanel(AppType).RemoveGroupButtonIfNeeded(this.Name);
|
||||
if (_appbuttongroup != null && _appbuttongroup.Visible)
|
||||
{
|
||||
_appbuttongroup.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Config.User.Prevalence)
|
||||
this.Image = _containedappbuttons
|
||||
.Where(button => button.Visible)
|
||||
.OrderBy(button => button.Prevalence.CountClicks)
|
||||
.Take(4)
|
||||
.Select(button => new Bitmap(button.Image)).ToArray()
|
||||
.Merge(new Size(this.ImageSize.Width + 2, this.ImageSize.Height + 2), 2);
|
||||
else
|
||||
this.Image = _containedappbuttons
|
||||
.Where(button => button.Visible)
|
||||
.OrderBy(button => button.Text)
|
||||
.Take(4)
|
||||
.Select(button => new Bitmap(button.Image)).ToArray()
|
||||
.Merge(new Size(this.ImageSize.Width + 2, this.ImageSize.Height + 2), 2);
|
||||
|
||||
|
||||
this.Invalidate();
|
||||
}
|
||||
|
||||
private void Element_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
Prevalence = Accessor.GetPrevalencia(AppType, _containedappbuttons.ToList().Find(app => app.Prevalence.CountClicks == _containedappbuttons.Max(appbutton => appbutton.Prevalence.CountClicks)).ID );
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
base.OnPaint(e);
|
||||
string appcountstring = _containedapps.Count(app => Cast.AppVisibility(app)).ToString();
|
||||
GraphicsPath appCountRect;
|
||||
appCountRect = Visualization.RoundedRectangle.Create(new Rectangle(
|
||||
new Point(ImageBounds.Right - (int)(e.Graphics.MeasureString(appcountstring, this.Font).Width / 4) - 3, this.BorderBounds.Y + this.BorderSize),
|
||||
new Size((int)e.Graphics.MeasureString(appcountstring, this.Font).Height - 1, (int)e.Graphics.MeasureString(appcountstring, this.Font).Height - 1)), 5);
|
||||
e.Graphics.SetClip(new Rectangle(this.TextBounds.Location, new Size(this.TextBounds.Width , this.TextBounds.Height)));
|
||||
e.Graphics.Clear(this.BackColor);
|
||||
|
||||
e.Graphics.SetClip(this.ClientRectangle);
|
||||
e.Graphics.FillPath(Brushes.Red, appCountRect);
|
||||
e.Graphics.DrawString(appcountstring, this.Font, Brushes.White, appCountRect.GetBounds(), new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center, FormatFlags = StringFormatFlags.NoClip | StringFormatFlags.NoWrap, Trimming = StringTrimming.None });
|
||||
|
||||
|
||||
if (!this.ImageOnly)
|
||||
{
|
||||
e.Graphics.DrawString(Text, this.Font, new SolidBrush(this.ForeColor), new Rectangle((int)appCountRect.GetBounds().Right, this.TextBounds.Y + this.BorderSize + this.Radius, this.BorderBounds.Right - (int)appCountRect.GetBounds().Right - this.BorderSize - this.Radius, this.TextBounds.Height - (this.Radius * 2) - (this.BorderSize * 2)), new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, FormatFlags = StringFormatFlags.NoClip | StringFormatFlags.NoWrap, Trimming = StringTrimming.EllipsisCharacter });
|
||||
//e.Graphics.DrawString(Text, this.Font, new SolidBrush(this.ForeColor), new Rectangle((int)appCountRect.GetBounds().Right, this.TextBounds.Y + this.BorderSize + this.Radius, this.BorderBounds.Right - (int)appCountRect.GetBounds().Right - this.BorderSize - this.Radius, this.TextBounds.Height - (this.Radius * 2) - (this.BorderSize * 2)), new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center, FormatFlags = StringFormatFlags.NoClip | StringFormatFlags.NoWrap, Trimming = StringTrimming.None });
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Width = (int)appCountRect.GetBounds().Right;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnSizeChanged(EventArgs e)
|
||||
{
|
||||
base.OnSizeChanged(e);
|
||||
|
||||
this.ImageSize = new Size(this.BorderBounds.Height - this.Padding.Vertical - this.Margin.Vertical, this.BorderBounds.Height - this.Padding.Vertical - this.Margin.Vertical);
|
||||
}
|
||||
|
||||
|
||||
protected override void OnLocationChanged(EventArgs e)
|
||||
{
|
||||
base.OnLocationChanged(e);
|
||||
if (_appbuttongroup != null && _appbuttongroup.MyGroupButton == this)
|
||||
{
|
||||
// Wenn der obere Bereich des GroupButtons, oben aus dem AppListPanel austritt
|
||||
if (this.Top < 0)
|
||||
{
|
||||
// Wenn der untere Bereich des GroupButtons, oben aus dem AppListPanel austritt
|
||||
if (this.Bottom < 0)
|
||||
{
|
||||
_appbuttongroup.DesktopLocation = new Point(_appbuttongroup.Left, this.Parent.RectangleToScreen(this.Parent.Bounds).Top - this.Parent.Margin.Top - this.Parent.Parent.Padding.Top - _appbuttongroup.GripSize + 1);
|
||||
}
|
||||
// Oder, wenn der untere Bereich des GroupButtons noch sichtbar ist
|
||||
else
|
||||
{
|
||||
_appbuttongroup.DesktopLocation = new Point(_appbuttongroup.Left, this.Parent.RectangleToScreen(this.Bounds).Bottom - _appbuttongroup.GripSize + 1);
|
||||
}
|
||||
}
|
||||
// Wenn der obere Bereich des GroupButtons, im AppListPanel sichtbar ist
|
||||
else if (this.Top > 0)
|
||||
{
|
||||
// Aber der untere Bereich des GroupButtons, unten aus dem AppListPanel austritt
|
||||
if (this.Bottom > this.Parent.Bottom)
|
||||
_appbuttongroup.DesktopLocation = new Point(_appbuttongroup.Left, this.Parent.RectangleToScreen(this.Parent.Bounds).Bottom - this.Parent.Padding.Vertical);
|
||||
// Oder, wenn der untere Bereich des GroupButtons, unten aus dem GFATask austritt
|
||||
else if (RectangleToScreen(this.DisplayRectangle).Bottom > Forms.Main.DesktopBounds.Bottom - Forms.Main.GripSize)
|
||||
_appbuttongroup.DesktopLocation = new Point(_appbuttongroup.Left, Forms.Main.DesktopBounds.Bottom - Forms.Main.GripSize - _appbuttongroup.GripSize + 1 + Forms.Main.BorderWidth);
|
||||
// Alle anderen Möglichkeiten korrigieren die Position des ButtonGroup-Fensters unterhalb des GroupButtons
|
||||
else
|
||||
_appbuttongroup.DesktopLocation = new Point(_appbuttongroup.Left, this.Parent.RectangleToScreen(this.Bounds).Bottom - _appbuttongroup.GripSize + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected override void OnMouseUp(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseUp(e);
|
||||
if (e.Button == MouseButtons.Left && !Forms.AppButtonGroup.Visible)
|
||||
{
|
||||
_appbuttongroup = Forms.AppButtonGroup;
|
||||
_appbuttongroup.MyGroupButton = this;
|
||||
_appbuttongroup.Text = this.Text;
|
||||
_appbuttongroup.Icon = Icon.FromHandle(new Bitmap(this.Image).GetHicon());
|
||||
_appbuttongroup.DesktopLocation = this.PointToScreen(new Point(0 - _appbuttongroup.GripSize + 1, this.Height - _appbuttongroup.GripSize + 1));
|
||||
_appbuttongroup.TopMost = true;
|
||||
Accessor.OpenForm("AppButtonGroup", owner: Forms.Main, closeifopen: true);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseEnter(EventArgs e)
|
||||
{
|
||||
this.ToolTipText = $"Apps:\n{string.Join("\n", _containedapps.OrderBy(app => app.Name).Select(app => app.Name))}";
|
||||
base.OnMouseEnter(e);
|
||||
}
|
||||
|
||||
protected override void OnMouseDown(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDown(e);
|
||||
if (this.ClientRectangle.Contains(e.Location) && e.Button == MouseButtons.Right )
|
||||
{
|
||||
try
|
||||
{
|
||||
this.ContextMenuStrip.Show(this, new Point(this.Padding.Left, this.ClientRectangle.Bottom));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write($"Kontextmenü des GroupButtons {this.Text} fehlerhaft", LogClassification.LowError, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
216
GFATask/Forms/FormAdmin.Designer.cs
generated
Normal file
216
GFATask/Forms/FormAdmin.Designer.cs
generated
Normal file
@@ -0,0 +1,216 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class FormAdmin
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.panelUC = new System.Windows.Forms.Panel();
|
||||
this.flpAdminMenu = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.abtnApps = new System.Windows.Forms.AnimationButton();
|
||||
this.abtnGeneral = new System.Windows.Forms.AnimationButton();
|
||||
this.abtnSettings = new System.Windows.Forms.AnimationButton();
|
||||
this.abtnFeatures = new System.Windows.Forms.AnimationButton();
|
||||
this.abtnAppClickCounter = new System.Windows.Forms.AnimationButton();
|
||||
this.animationButton1 = new System.Windows.Forms.AnimationButton();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.flpAdminMenu.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 1;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.panelUC, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.flpAdminMenu, 0, 0);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(10, 39);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 2;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(980, 401);
|
||||
this.tableLayoutPanel1.TabIndex = 1;
|
||||
//
|
||||
// panelUC
|
||||
//
|
||||
this.panelUC.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panelUC.Location = new System.Drawing.Point(3, 48);
|
||||
this.panelUC.Name = "panelUC";
|
||||
this.panelUC.Size = new System.Drawing.Size(974, 350);
|
||||
this.panelUC.TabIndex = 3;
|
||||
//
|
||||
// flpAdminMenu
|
||||
//
|
||||
this.flpAdminMenu.Controls.Add(this.abtnApps);
|
||||
this.flpAdminMenu.Controls.Add(this.abtnGeneral);
|
||||
this.flpAdminMenu.Controls.Add(this.abtnSettings);
|
||||
this.flpAdminMenu.Controls.Add(this.abtnFeatures);
|
||||
this.flpAdminMenu.Controls.Add(this.abtnAppClickCounter);
|
||||
this.flpAdminMenu.Controls.Add(this.animationButton1);
|
||||
this.flpAdminMenu.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.flpAdminMenu.Location = new System.Drawing.Point(3, 3);
|
||||
this.flpAdminMenu.Name = "flpAdminMenu";
|
||||
this.flpAdminMenu.Size = new System.Drawing.Size(974, 39);
|
||||
this.flpAdminMenu.TabIndex = 4;
|
||||
//
|
||||
// abtnApps
|
||||
//
|
||||
this.abtnApps.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.abtnApps.AutoSizeWidth = false;
|
||||
this.abtnApps.Image = null;
|
||||
this.abtnApps.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnApps.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnApps.Location = new System.Drawing.Point(3, 0);
|
||||
this.abtnApps.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
||||
this.abtnApps.Name = "abtnApps";
|
||||
this.abtnApps.Size = new System.Drawing.Size(140, 35);
|
||||
this.abtnApps.TabIndex = 3;
|
||||
this.abtnApps.Tag = "ucAdminApps";
|
||||
this.abtnApps.Text = "Apps";
|
||||
this.abtnApps.TextBounds = new System.Drawing.Rectangle(1, 1, 138, 33);
|
||||
this.abtnApps.ToolTipText = "";
|
||||
//
|
||||
// abtnGeneral
|
||||
//
|
||||
this.abtnGeneral.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.abtnGeneral.AutoSizeWidth = false;
|
||||
this.abtnGeneral.Image = null;
|
||||
this.abtnGeneral.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnGeneral.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnGeneral.Location = new System.Drawing.Point(149, 0);
|
||||
this.abtnGeneral.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
||||
this.abtnGeneral.Name = "abtnGeneral";
|
||||
this.abtnGeneral.Size = new System.Drawing.Size(140, 35);
|
||||
this.abtnGeneral.TabIndex = 4;
|
||||
this.abtnGeneral.Tag = "ucAdminGeneral";
|
||||
this.abtnGeneral.Text = "Allgemein";
|
||||
this.abtnGeneral.TextBounds = new System.Drawing.Rectangle(1, 1, 138, 33);
|
||||
this.abtnGeneral.ToolTipText = "";
|
||||
//
|
||||
// abtnSettings
|
||||
//
|
||||
this.abtnSettings.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.abtnSettings.AutoSizeWidth = false;
|
||||
this.abtnSettings.Image = null;
|
||||
this.abtnSettings.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnSettings.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnSettings.Location = new System.Drawing.Point(295, 0);
|
||||
this.abtnSettings.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
||||
this.abtnSettings.Name = "abtnSettings";
|
||||
this.abtnSettings.Size = new System.Drawing.Size(140, 35);
|
||||
this.abtnSettings.TabIndex = 6;
|
||||
this.abtnSettings.Tag = "ucAdminDesigns";
|
||||
this.abtnSettings.Text = "Designs";
|
||||
this.abtnSettings.TextBounds = new System.Drawing.Rectangle(1, 1, 138, 33);
|
||||
this.abtnSettings.ToolTipText = "";
|
||||
this.abtnSettings.WordWrap = true;
|
||||
//
|
||||
// abtnFeatures
|
||||
//
|
||||
this.abtnFeatures.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.abtnFeatures.AutoSizeWidth = false;
|
||||
this.abtnFeatures.Image = null;
|
||||
this.abtnFeatures.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnFeatures.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnFeatures.Location = new System.Drawing.Point(441, 0);
|
||||
this.abtnFeatures.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
||||
this.abtnFeatures.Name = "abtnFeatures";
|
||||
this.abtnFeatures.Size = new System.Drawing.Size(140, 35);
|
||||
this.abtnFeatures.TabIndex = 5;
|
||||
this.abtnFeatures.Tag = "ucAdminNewsFeeds";
|
||||
this.abtnFeatures.Text = "News Feeds";
|
||||
this.abtnFeatures.TextBounds = new System.Drawing.Rectangle(1, 1, 138, 33);
|
||||
this.abtnFeatures.ToolTipText = "";
|
||||
this.abtnFeatures.WordWrap = true;
|
||||
//
|
||||
// abtnAppClickCounter
|
||||
//
|
||||
this.abtnAppClickCounter.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.abtnAppClickCounter.AutoSizeWidth = false;
|
||||
this.abtnAppClickCounter.Image = null;
|
||||
this.abtnAppClickCounter.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnAppClickCounter.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnAppClickCounter.Location = new System.Drawing.Point(587, 0);
|
||||
this.abtnAppClickCounter.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
||||
this.abtnAppClickCounter.Name = "abtnAppClickCounter";
|
||||
this.abtnAppClickCounter.Size = new System.Drawing.Size(140, 35);
|
||||
this.abtnAppClickCounter.TabIndex = 8;
|
||||
this.abtnAppClickCounter.Tag = "ucAdminAppClickCounter";
|
||||
this.abtnAppClickCounter.Text = "App Click Counter";
|
||||
this.abtnAppClickCounter.TextBounds = new System.Drawing.Rectangle(1, 1, 138, 33);
|
||||
this.abtnAppClickCounter.ToolTipText = "";
|
||||
//
|
||||
// animationButton1
|
||||
//
|
||||
this.animationButton1.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.animationButton1.AutoSizeWidth = false;
|
||||
this.animationButton1.Image = null;
|
||||
this.animationButton1.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.animationButton1.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.animationButton1.Location = new System.Drawing.Point(733, 0);
|
||||
this.animationButton1.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
|
||||
this.animationButton1.Name = "animationButton1";
|
||||
this.animationButton1.Size = new System.Drawing.Size(140, 35);
|
||||
this.animationButton1.TabIndex = 7;
|
||||
this.animationButton1.Tag = "ucAdminHelp";
|
||||
this.animationButton1.Text = "Hilfethemen";
|
||||
this.animationButton1.TextBounds = new System.Drawing.Rectangle(1, 1, 138, 33);
|
||||
this.animationButton1.ToolTipText = "";
|
||||
//
|
||||
// FormAdmin
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.ClientSize = new System.Drawing.Size(1000, 450);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.DesktopAnchor = System.Windows.Forms.DesktopAnchor.Center;
|
||||
this.Name = "FormAdmin";
|
||||
this.Padding = new System.Windows.Forms.Padding(10, 39, 10, 10);
|
||||
this.RegionBounds = new System.Drawing.Rectangle(19, 19, 1000, 450);
|
||||
this.Text = "Administration";
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.flpAdminMenu.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.Panel panelUC;
|
||||
private System.Windows.Forms.FlowLayoutPanel flpAdminMenu;
|
||||
private System.Windows.Forms.AnimationButton abtnApps;
|
||||
private System.Windows.Forms.AnimationButton abtnGeneral;
|
||||
private System.Windows.Forms.AnimationButton abtnFeatures;
|
||||
private System.Windows.Forms.AnimationButton abtnSettings;
|
||||
private System.Windows.Forms.AnimationButton animationButton1;
|
||||
private System.Windows.Forms.AnimationButton abtnAppClickCounter;
|
||||
}
|
||||
}
|
||||
142
GFATask/Forms/FormAdmin.cs
Normal file
142
GFATask/Forms/FormAdmin.cs
Normal file
@@ -0,0 +1,142 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public partial class FormAdmin : FormEx
|
||||
{
|
||||
public ucAdminApps UcAdminApps { get; } = new ucAdminApps() { Dock = DockStyle.Fill };
|
||||
public ucAdminGeneral UcAdminGeneral { get; } = new ucAdminGeneral() { Dock = DockStyle.Fill };
|
||||
public ucAdminNewsFeeds UcAdminNewsFeeds { get; } = new ucAdminNewsFeeds() { Dock = DockStyle.Fill };
|
||||
public ucAdminDesigns UcAdminDesigns { get; } = new ucAdminDesigns() { Dock = DockStyle.Fill };
|
||||
public ucAdminHelp UcAdminHelp { get; } = new ucAdminHelp() { Dock = DockStyle.Fill };
|
||||
public ucAdminAppClickCounter UcAdminAppClickCounter { get; } = new ucAdminAppClickCounter() { Dock = DockStyle.Fill };
|
||||
|
||||
private AnimationButton clickedbutton = null;
|
||||
|
||||
int loginfails = 0;
|
||||
|
||||
public FormAdmin()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.SetDefaultDesign();
|
||||
|
||||
|
||||
panelUC.Controls.AddRange(new Control[] { UcAdminApps, UcAdminGeneral, UcAdminNewsFeeds, UcAdminDesigns, UcAdminHelp, UcAdminAppClickCounter });
|
||||
this.Icon = Icon.FromHandle(new Bitmap(File.OpenRead(Paths.Icons.Directory + @"System\administration.png")).GetHicon());
|
||||
Accumulations.Controls(flpAdminMenu).OfType<AnimationButton>().ToList().ForEach(button =>
|
||||
{
|
||||
button.MouseClick += OpenUserControl;
|
||||
button.Paint += Button_Paint;
|
||||
});
|
||||
OpenUserControl(abtnApps, new MouseEventArgs(MouseButtons.Left, 0, 0, 0, 0));
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void Button_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
if((clickedbutton != null && (sender as AnimationButton).Equals(clickedbutton) && (sender as AnimationButton).BorderSize == 0))
|
||||
{
|
||||
e.Graphics.DrawLine(new Pen(Config.Main.Colors.Apps.Hover.Border, 3), new Point(0, e.ClipRectangle.Bottom - 3 ), new Point(e.ClipRectangle.Right, e.ClipRectangle.Bottom - 3));
|
||||
}
|
||||
}
|
||||
|
||||
private void OpenUserControl(object sender, MouseEventArgs e)
|
||||
{
|
||||
if(e.Button == MouseButtons.Left)
|
||||
{
|
||||
var button = sender as AnimationButton;
|
||||
clickedbutton = button;
|
||||
Accumulations.Controls(this).OfType<AnimationButton>().ToList().ForEach(btn => btn.Invalidate());
|
||||
if (button.BorderSize > 0 || button.BorderColor == button.BackColor)
|
||||
{
|
||||
button.BorderColor = Color.Green;
|
||||
Accumulations.Controls(this).OfType<AnimationButton>().Where(btn => btn != button).ToList().ForEach(btn => btn.BorderColor = Config.Main.Colors.Apps.Default.Border);
|
||||
}
|
||||
panelUC.Controls[button.Tag.ToString()].Dock = DockStyle.Fill;
|
||||
panelUC.Controls[button.Tag.ToString()].BringToFront();
|
||||
panelUC.Controls[button.Tag.ToString()].Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void Login()
|
||||
{
|
||||
Task.Run(delegate
|
||||
{
|
||||
Forms.Main.Invoke(new MethodInvoker(async delegate
|
||||
{
|
||||
if (Forms.AppButtonGroup != null && Forms.AppButtonGroup.Visible)
|
||||
Forms.AppButtonGroup.Close();
|
||||
|
||||
if (await XObjects.IsAdmin)
|
||||
{
|
||||
this.Visible = true;
|
||||
return;
|
||||
}
|
||||
|
||||
var msgbox = XObjects.MessageBox(
|
||||
loginfails == 0 ? "Administratorkennwort" :
|
||||
$"Das Kennwort war falsch. Nochmal!", NotifyButtons.OkCancel, NotifyType.Login, new Size(250, 200), "Administrationsbereich", null);
|
||||
|
||||
if (msgbox.Result == DialogResult.OK)
|
||||
{
|
||||
if (msgbox.Value.ToString() == new string(Config.Main.Administration.Accounts.Login.SecurePassword.Select(chr => (char)chr).ToArray()))
|
||||
{
|
||||
this.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
loginfails++;
|
||||
this.Login();
|
||||
}
|
||||
}
|
||||
else if (msgbox.Result == DialogResult.Cancel)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
protected override void OnVisibleChanged(EventArgs e)
|
||||
{
|
||||
base.OnVisibleChanged(e);
|
||||
if (this.Visible)
|
||||
{
|
||||
XObjects.Delay.Increase();
|
||||
this.TopMost = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected override void OnBackColorChanged(EventArgs e)
|
||||
{
|
||||
base.OnBackColorChanged(e);
|
||||
|
||||
flpAdminMenu.SetDefaultDesign();
|
||||
flpAdminMenu.Controls.OfType<AnimationButton>().ToList().ForEach(abtn => abtn.SetDefaultDesign());
|
||||
}
|
||||
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
if(e.CloseReason == CloseReason.UserClosing)
|
||||
this.Visible = false;
|
||||
e.Cancel = e.CloseReason == CloseReason.UserClosing;
|
||||
base.OnFormClosing(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/Forms/FormAdmin.resx
Normal file
120
GFATask/Forms/FormAdmin.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
71
GFATask/Forms/FormAppButtonGroup.Designer.cs
generated
Normal file
71
GFATask/Forms/FormAppButtonGroup.Designer.cs
generated
Normal file
@@ -0,0 +1,71 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class FormAppButtonGroup
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.flpAppbuttons = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// flpAppbuttons
|
||||
//
|
||||
this.flpAppbuttons.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.flpAppbuttons.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.flpAppbuttons.Location = new System.Drawing.Point(10, 39);
|
||||
this.flpAppbuttons.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.flpAppbuttons.Name = "flpAppbuttons";
|
||||
this.flpAppbuttons.Size = new System.Drawing.Size(288, 178);
|
||||
this.flpAppbuttons.TabIndex = 1;
|
||||
//
|
||||
// FormAppButtonGroup
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(120F, 120F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.ClientSize = new System.Drawing.Size(308, 227);
|
||||
this.Controls.Add(this.flpAppbuttons);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Moveable = false;
|
||||
this.Name = "FormAppButtonGroup";
|
||||
this.Padding = new System.Windows.Forms.Padding(10, 39, 10, 10);
|
||||
this.RegionBounds = new System.Drawing.Rectangle(15, 15, 308, 227);
|
||||
this.Resizable = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
this.SystemMenu = false;
|
||||
this.Text = "FormAppButtonGroup";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.FlowLayoutPanel flpAppbuttons;
|
||||
}
|
||||
}
|
||||
152
GFATask/Forms/FormAppButtonGroup.cs
Normal file
152
GFATask/Forms/FormAppButtonGroup.cs
Normal file
@@ -0,0 +1,152 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public partial class FormAppButtonGroup : FormEx
|
||||
{
|
||||
private GroupButton _mygroupbutton = null;
|
||||
public GroupButton MyGroupButton
|
||||
{
|
||||
get => _mygroupbutton;
|
||||
set
|
||||
{
|
||||
_mygroupbutton = value;
|
||||
_apptype = _mygroupbutton.AppType;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private AppType _apptype;
|
||||
public AppType AppType { get => _apptype; set => _apptype = value; }
|
||||
|
||||
|
||||
public FormAppButtonGroup()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
|
||||
protected override void OnVisibleChanged(EventArgs e)
|
||||
{
|
||||
if (this.Visible)
|
||||
{
|
||||
flpAppbuttons.Controls.AddRange(_mygroupbutton.ContainedAppButtons.ToArray<Control>());
|
||||
Comparer.SortAllButtons(flpAppbuttons.Controls, Config.User.Prevalence);
|
||||
this.Sizing();
|
||||
this.SetDefaultDesign();
|
||||
}
|
||||
else
|
||||
{
|
||||
flpAppbuttons.Controls.Clear();
|
||||
}
|
||||
base.OnVisibleChanged(e);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void Sizing()
|
||||
{
|
||||
if (_mygroupbutton != null)
|
||||
{
|
||||
int appcounts = _mygroupbutton.ContainedAppButtons.Where(appbutton => appbutton.Visible).ToList().Count;
|
||||
int columns = Config.User.GroupListColumnCount;
|
||||
int border = this.Padding.Horizontal;
|
||||
int vborder = this.Padding.Vertical;
|
||||
Size appsize = new Size((Config.User.Apps.ImageOnly ? Config.User.Apps.Size.Height : Config.User.Apps.Size.Width) + (Config.User.Apps.Margin * 2), Config.User.Apps.Size.Height + (Config.User.Apps.Margin * 2));
|
||||
|
||||
int width, height;
|
||||
|
||||
width = (appsize.Width * (appcounts < columns ? appcounts : columns)) < ((TextRenderer.MeasureText(this.Text, this.Font).Width + (this.TitlebarHeight * 4) + this.Icon.Size.Width) / appsize.Width) * appsize.Width ?
|
||||
(((TextRenderer.MeasureText(this.Text, this.Font).Width + (this.TitlebarHeight * 4) + this.Icon.Size.Width) / appsize.Width) * appsize.Width) + border :
|
||||
(appsize.Width * (appcounts < columns ? appcounts : columns)) + border;
|
||||
|
||||
height = (((int)Math.Ceiling((appsize.Width * appcounts) / (double)width)) * appsize.Height) + vborder;
|
||||
this.Size = new Size(width, height);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Löscht einen AppButton aus einem AppListPanel anhand des Apptypen und der App aus der JSON-Datei
|
||||
/// </summary>
|
||||
/// <param name="apptype">Findet anhand des Typen das gewünschte AppListPanel</param>
|
||||
/// <param name="app">Die JSON-App mit der der AppButton gefunden und entfernt wird</param>
|
||||
public void RemoveButton(Models.App app)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (_mygroupbutton != null)
|
||||
{
|
||||
|
||||
if (flpAppbuttons.Controls.ContainsKey(app.ID + "_" + _apptype.ToString() + "_" + app.Name))
|
||||
{
|
||||
Control appbutton = flpAppbuttons.Controls.Find(Cast.AppButtonName(_apptype, app), false)[0];
|
||||
flpAppbuttons.Controls.Remove(appbutton);
|
||||
_mygroupbutton.ContainedApps.Remove(app);
|
||||
_mygroupbutton.ContainedAppButtons.Remove(appbutton as AppButton);
|
||||
//if(_mygroupbutton.ContainedApps.Exists(_app => _app.ID == app.ID))
|
||||
// _mygroupbutton.ContainedAppButtons.Remove((AppButton)appbutton);
|
||||
}
|
||||
|
||||
if (_mygroupbutton.ContainedAppButtons.Count <= 1 && flpAppbuttons.Controls.Count > 0)
|
||||
{
|
||||
AppListPanel panel = Accessor.GetAppListPanel(_apptype);
|
||||
panel.RemoveGroupButton(_mygroupbutton.Name);
|
||||
this.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
this.Sizing();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("FormAppButtonGroup RemoveButton-Fehler", LogClassification.CriticalError, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public bool ReplaceButton(Models.App replacing_app) =>
|
||||
this.ReplaceButton(_apptype, replacing_app);
|
||||
|
||||
|
||||
public bool ReplaceButton(AppType apptype, Models.App replacing_app)
|
||||
{
|
||||
if (apptype == AppType.None)
|
||||
return false;
|
||||
Models.App existing_app = Accessor.GetAppList(apptype).Apps.Find(app => app.ID == _mygroupbutton.ContainedAppButtons.ToList().Find(button => button.Name == Cast.AppButtonName(apptype, replacing_app)).ID);
|
||||
if (existing_app != null)
|
||||
{
|
||||
AppButton appbutton = _mygroupbutton.ContainedAppButtons.Select(button => button).ToList().Find(button => button.Name == Cast.AppButtonName(apptype, existing_app));
|
||||
int cur_index = _mygroupbutton.ContainedAppButtons.ToList().IndexOf(appbutton);
|
||||
appbutton.Name = Cast.AppButtonName(apptype, replacing_app);
|
||||
appbutton.Text = replacing_app.Name;
|
||||
appbutton.ActiveDirectoryGroups = replacing_app.ActiveDirectoryGroups;
|
||||
appbutton.Prevalence = Accessor.GetPrevalencia(apptype, replacing_app.ID);
|
||||
appbutton.Execute = replacing_app.Execute;
|
||||
appbutton.Visible = Cast.AppVisibility(replacing_app);
|
||||
appbutton.Image = Image.FromStream(File.OpenRead(Cast.IconPath(apptype, replacing_app.Icon)));
|
||||
_mygroupbutton.ContainedAppButtons[cur_index] = appbutton;
|
||||
Comparer.SortAllButtons(flpAppbuttons.Controls, Config.User.Prevalence);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
this.Visible = false;
|
||||
e.Cancel = e.CloseReason == CloseReason.UserClosing;
|
||||
base.OnFormClosing(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/Forms/FormAppButtonGroup.resx
Normal file
120
GFATask/Forms/FormAppButtonGroup.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
500
GFATask/Forms/FormAppCreator.Designer.cs
generated
Normal file
500
GFATask/Forms/FormAppCreator.Designer.cs
generated
Normal file
@@ -0,0 +1,500 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class FormAppCreator
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.tbAppname = new System.Windows.Forms.TextBox();
|
||||
this.tbGroup = new System.Windows.Forms.TextBox();
|
||||
this.rtbADGroups = new System.Windows.Forms.RichTextBox();
|
||||
this.dgvExecutes = new System.Windows.Forms.DataGridView();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.picbox = new System.Windows.Forms.PictureBox();
|
||||
this.lIconPath = new System.Windows.Forms.Label();
|
||||
this.abtnCheckADGroupName = new System.Windows.Forms.AnimationButton();
|
||||
this.abtnSave = new System.Windows.Forms.AnimationButton();
|
||||
this.abtnCancel = new System.Windows.Forms.AnimationButton();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.abtnIconPath = new System.Windows.Forms.AnimationButton();
|
||||
this.cbAppType = new System.Windows.Forms.ComboBox();
|
||||
this.switchPrototype = new System.Windows.Forms.SwitchButton();
|
||||
this.labelPrototype = new System.Windows.Forms.Label();
|
||||
this.lID = new System.Windows.Forms.Label();
|
||||
this.lIsNew = new System.Windows.Forms.Label();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.tbDescription = new System.Windows.Forms.TextBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvExecutes)).BeginInit();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picbox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(65, 96);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(57, 13);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "App Name";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(36, 191);
|
||||
this.label2.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(86, 13);
|
||||
this.label2.TabIndex = 2;
|
||||
this.label2.Text = "Gruppieren nach";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(56, 285);
|
||||
this.label3.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(66, 13);
|
||||
this.label3.TabIndex = 3;
|
||||
this.label3.Text = "AD Gruppen";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(67, 385);
|
||||
this.label4.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(55, 13);
|
||||
this.label4.TabIndex = 4;
|
||||
this.label4.Text = "Ausführen";
|
||||
//
|
||||
// tbAppname
|
||||
//
|
||||
this.tbAppname.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbAppname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.tbAppname, 4);
|
||||
this.tbAppname.Location = new System.Drawing.Point(127, 92);
|
||||
this.tbAppname.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
||||
this.tbAppname.Name = "tbAppname";
|
||||
this.tbAppname.Size = new System.Drawing.Size(388, 20);
|
||||
this.tbAppname.TabIndex = 2;
|
||||
//
|
||||
// tbGroup
|
||||
//
|
||||
this.tbGroup.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbGroup.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.tbGroup, 4);
|
||||
this.tbGroup.Location = new System.Drawing.Point(127, 187);
|
||||
this.tbGroup.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
||||
this.tbGroup.Name = "tbGroup";
|
||||
this.tbGroup.Size = new System.Drawing.Size(388, 20);
|
||||
this.tbGroup.TabIndex = 4;
|
||||
//
|
||||
// rtbADGroups
|
||||
//
|
||||
this.rtbADGroups.AutoWordSelection = true;
|
||||
this.rtbADGroups.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.rtbADGroups, 4);
|
||||
this.rtbADGroups.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.rtbADGroups.Location = new System.Drawing.Point(127, 285);
|
||||
this.rtbADGroups.Margin = new System.Windows.Forms.Padding(5, 0, 0, 40);
|
||||
this.rtbADGroups.Name = "rtbADGroups";
|
||||
this.rtbADGroups.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.None;
|
||||
this.rtbADGroups.Size = new System.Drawing.Size(388, 60);
|
||||
this.rtbADGroups.TabIndex = 6;
|
||||
this.rtbADGroups.Text = "";
|
||||
//
|
||||
// dgvExecutes
|
||||
//
|
||||
this.dgvExecutes.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
|
||||
this.dgvExecutes.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
|
||||
this.dgvExecutes.BackgroundColor = System.Drawing.Color.White;
|
||||
this.dgvExecutes.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.dgvExecutes.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
|
||||
this.dgvExecutes.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.dgvExecutes, 5);
|
||||
this.dgvExecutes.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvExecutes.GridColor = System.Drawing.SystemColors.ControlDarkDark;
|
||||
this.dgvExecutes.Location = new System.Drawing.Point(127, 390);
|
||||
this.dgvExecutes.Margin = new System.Windows.Forms.Padding(5);
|
||||
this.dgvExecutes.MultiSelect = false;
|
||||
this.dgvExecutes.Name = "dgvExecutes";
|
||||
this.dgvExecutes.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
|
||||
this.dgvExecutes.RowHeadersWidth = 24;
|
||||
this.dgvExecutes.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;
|
||||
this.dgvExecutes.RowTemplate.Height = 24;
|
||||
this.dgvExecutes.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
|
||||
this.dgvExecutes.Size = new System.Drawing.Size(549, 90);
|
||||
this.dgvExecutes.TabIndex = 8;
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 6;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 122F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 103F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 70F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 84F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 45.18272F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 54.81728F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.dgvExecutes, 1, 9);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label3, 0, 8);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label4, 0, 9);
|
||||
this.tableLayoutPanel1.Controls.Add(this.rtbADGroups, 1, 8);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label6, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label5, 0, 10);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picbox, 3, 10);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lIconPath, 4, 10);
|
||||
this.tableLayoutPanel1.Controls.Add(this.abtnCheckADGroupName, 5, 8);
|
||||
this.tableLayoutPanel1.Controls.Add(this.abtnSave, 5, 11);
|
||||
this.tableLayoutPanel1.Controls.Add(this.abtnCancel, 4, 11);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label7, 0, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.abtnIconPath, 1, 10);
|
||||
this.tableLayoutPanel1.Controls.Add(this.tbGroup, 1, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.tbAppname, 1, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cbAppType, 1, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.switchPrototype, 1, 6);
|
||||
this.tableLayoutPanel1.Controls.Add(this.labelPrototype, 0, 6);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lID, 1, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lIsNew, 2, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label8, 0, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.tbDescription, 1, 4);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(10, 39);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 13;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 60F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 100F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 100F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(681, 571);
|
||||
this.tableLayoutPanel1.TabIndex = 10;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(104, 26);
|
||||
this.label6.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(18, 13);
|
||||
this.label6.TabIndex = 13;
|
||||
this.label6.Text = "ID";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(81, 496);
|
||||
this.label5.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(41, 13);
|
||||
this.label5.TabIndex = 10;
|
||||
this.label5.Text = "Symbol";
|
||||
//
|
||||
// picbox
|
||||
//
|
||||
this.picbox.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.picbox.Location = new System.Drawing.Point(321, 487);
|
||||
this.picbox.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.picbox.Name = "picbox";
|
||||
this.picbox.Size = new System.Drawing.Size(32, 30);
|
||||
this.picbox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.picbox.TabIndex = 15;
|
||||
this.picbox.TabStop = false;
|
||||
this.picbox.Paint += new System.Windows.Forms.PaintEventHandler(this.picbox_Paint);
|
||||
//
|
||||
// lIconPath
|
||||
//
|
||||
this.lIconPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lIconPath.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.lIconPath, 2);
|
||||
this.lIconPath.Location = new System.Drawing.Point(379, 496);
|
||||
this.lIconPath.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.lIconPath.Name = "lIconPath";
|
||||
this.lIconPath.Size = new System.Drawing.Size(302, 13);
|
||||
this.lIconPath.TabIndex = 11;
|
||||
this.lIconPath.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// abtnCheckADGroupName
|
||||
//
|
||||
this.abtnCheckADGroupName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.abtnCheckADGroupName.AutoSizeWidth = false;
|
||||
this.abtnCheckADGroupName.Image = null;
|
||||
this.abtnCheckADGroupName.ImageAutoSize = System.Windows.Forms.ImageAutoSizeDirection.Manual;
|
||||
this.abtnCheckADGroupName.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnCheckADGroupName.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnCheckADGroupName.ImageMargin = 3;
|
||||
this.abtnCheckADGroupName.ImagePadding = 0;
|
||||
this.abtnCheckADGroupName.Location = new System.Drawing.Point(520, 285);
|
||||
this.abtnCheckADGroupName.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
||||
this.abtnCheckADGroupName.Name = "abtnCheckADGroupName";
|
||||
this.abtnCheckADGroupName.Padding = new System.Windows.Forms.Padding(0, 0, 15, 0);
|
||||
this.abtnCheckADGroupName.Size = new System.Drawing.Size(161, 50);
|
||||
this.abtnCheckADGroupName.TabIndex = 7;
|
||||
this.abtnCheckADGroupName.Text = "Namen überprüfen";
|
||||
this.abtnCheckADGroupName.TextBounds = new System.Drawing.Rectangle(2, 2, 142, 46);
|
||||
this.abtnCheckADGroupName.ToolTipText = "";
|
||||
this.abtnCheckADGroupName.WordWrap = true;
|
||||
this.abtnCheckADGroupName.Click += new System.EventHandler(this.abtnCheckADGroupName_Click);
|
||||
//
|
||||
// abtnSave
|
||||
//
|
||||
this.abtnSave.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.abtnSave.AutoSizeWidth = false;
|
||||
this.abtnSave.Image = null;
|
||||
this.abtnSave.ImageAutoSize = System.Windows.Forms.ImageAutoSizeDirection.Manual;
|
||||
this.abtnSave.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnSave.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnSave.ImageMargin = 3;
|
||||
this.abtnSave.ImagePadding = 0;
|
||||
this.abtnSave.Location = new System.Drawing.Point(532, 522);
|
||||
this.abtnSave.Margin = new System.Windows.Forms.Padding(5, 0, 20, 0);
|
||||
this.abtnSave.Name = "abtnSave";
|
||||
this.abtnSave.Padding = new System.Windows.Forms.Padding(0, 0, 15, 0);
|
||||
this.abtnSave.Size = new System.Drawing.Size(129, 30);
|
||||
this.abtnSave.TabIndex = 11;
|
||||
this.abtnSave.Text = "Speichern";
|
||||
this.abtnSave.TextBounds = new System.Drawing.Rectangle(1, 1, 107, 28);
|
||||
this.abtnSave.ToolTipText = "";
|
||||
this.abtnSave.Click += new System.EventHandler(this.abtnSave_Click);
|
||||
//
|
||||
// abtnCancel
|
||||
//
|
||||
this.abtnCancel.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.abtnCancel.AutoSizeWidth = false;
|
||||
this.abtnCancel.Image = null;
|
||||
this.abtnCancel.ImageAutoSize = System.Windows.Forms.ImageAutoSizeDirection.Manual;
|
||||
this.abtnCancel.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnCancel.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnCancel.ImageMargin = 3;
|
||||
this.abtnCancel.ImagePadding = 0;
|
||||
this.abtnCancel.Location = new System.Drawing.Point(384, 522);
|
||||
this.abtnCancel.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
||||
this.abtnCancel.Name = "abtnCancel";
|
||||
this.abtnCancel.Padding = new System.Windows.Forms.Padding(0, 0, 15, 0);
|
||||
this.abtnCancel.Size = new System.Drawing.Size(131, 30);
|
||||
this.abtnCancel.TabIndex = 10;
|
||||
this.abtnCancel.Text = "Abbrechen";
|
||||
this.abtnCancel.TextBounds = new System.Drawing.Rectangle(2, 2, 112, 26);
|
||||
this.abtnCancel.ToolTipText = "";
|
||||
this.abtnCancel.Click += new System.EventHandler(this.abtnCancel_Click);
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(71, 61);
|
||||
this.label7.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(51, 13);
|
||||
this.label7.TabIndex = 18;
|
||||
this.label7.Text = "App Liste";
|
||||
//
|
||||
// abtnIconPath
|
||||
//
|
||||
this.abtnIconPath.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.abtnIconPath.AutoSizeWidth = false;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.abtnIconPath, 2);
|
||||
this.abtnIconPath.Image = global::GFATask.Properties.Resources.magnifier;
|
||||
this.abtnIconPath.ImageAutoSize = System.Windows.Forms.ImageAutoSizeDirection.Height;
|
||||
this.abtnIconPath.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnIconPath.ImageBounds = new System.Drawing.Rectangle(5, 5, 20, 20);
|
||||
this.abtnIconPath.ImageMargin = 3;
|
||||
this.abtnIconPath.ImagePadding = 0;
|
||||
this.abtnIconPath.ImageSize = new System.Drawing.Size(20, 20);
|
||||
this.abtnIconPath.Location = new System.Drawing.Point(127, 487);
|
||||
this.abtnIconPath.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
||||
this.abtnIconPath.Name = "abtnIconPath";
|
||||
this.abtnIconPath.Size = new System.Drawing.Size(168, 30);
|
||||
this.abtnIconPath.TabIndex = 9;
|
||||
this.abtnIconPath.Text = "Symbol suchen";
|
||||
this.abtnIconPath.TextBounds = new System.Drawing.Rectangle(25, 2, 141, 26);
|
||||
this.abtnIconPath.ToolTipText = "";
|
||||
this.abtnIconPath.Click += new System.EventHandler(this.abtnIconPath_Click);
|
||||
//
|
||||
// cbAppType
|
||||
//
|
||||
this.cbAppType.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.cbAppType, 2);
|
||||
this.cbAppType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbAppType.FormattingEnabled = true;
|
||||
this.cbAppType.Location = new System.Drawing.Point(127, 57);
|
||||
this.cbAppType.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
||||
this.cbAppType.Name = "cbAppType";
|
||||
this.cbAppType.Size = new System.Drawing.Size(121, 21);
|
||||
this.cbAppType.TabIndex = 1;
|
||||
this.cbAppType.SelectedIndexChanged += new System.EventHandler(this.cbAppType_SelectedIndexChanged);
|
||||
//
|
||||
// switchPrototype
|
||||
//
|
||||
this.switchPrototype.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.switchPrototype.BackColor = System.Drawing.Color.White;
|
||||
this.switchPrototype.ButtonWidth = 35;
|
||||
this.switchPrototype.CheckThreeState = false;
|
||||
this.switchPrototype.ColorActive = System.Drawing.Color.DarkSeaGreen;
|
||||
this.switchPrototype.ColorInactive = System.Drawing.Color.OrangeRed;
|
||||
this.switchPrototype.Location = new System.Drawing.Point(135, 237);
|
||||
this.switchPrototype.Margin = new System.Windows.Forms.Padding(13, 5, 4, 5);
|
||||
this.switchPrototype.Name = "switchPrototype";
|
||||
this.switchPrototype.RoundedButton = true;
|
||||
this.tableLayoutPanel1.SetRowSpan(this.switchPrototype, 2);
|
||||
this.switchPrototype.ShowBoarder = false;
|
||||
this.switchPrototype.Size = new System.Drawing.Size(80, 25);
|
||||
this.switchPrototype.TabIndex = 5;
|
||||
this.switchPrototype.Text = "switchButton1";
|
||||
//
|
||||
// labelPrototype
|
||||
//
|
||||
this.labelPrototype.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.labelPrototype.AutoSize = true;
|
||||
this.labelPrototype.Location = new System.Drawing.Point(76, 243);
|
||||
this.labelPrototype.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.labelPrototype.Name = "labelPrototype";
|
||||
this.tableLayoutPanel1.SetRowSpan(this.labelPrototype, 2);
|
||||
this.labelPrototype.Size = new System.Drawing.Size(46, 13);
|
||||
this.labelPrototype.TabIndex = 27;
|
||||
this.labelPrototype.Text = "Prototyp";
|
||||
//
|
||||
// lID
|
||||
//
|
||||
this.lID.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.lID.AutoSize = true;
|
||||
this.lID.Location = new System.Drawing.Point(127, 26);
|
||||
this.lID.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
||||
this.lID.Name = "lID";
|
||||
this.lID.Size = new System.Drawing.Size(18, 13);
|
||||
this.lID.TabIndex = 14;
|
||||
this.lID.Text = "ID";
|
||||
//
|
||||
// lIsNew
|
||||
//
|
||||
this.lIsNew.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.lIsNew.AutoSize = true;
|
||||
this.lIsNew.Location = new System.Drawing.Point(230, 26);
|
||||
this.lIsNew.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
||||
this.lIsNew.Name = "lIsNew";
|
||||
this.lIsNew.Size = new System.Drawing.Size(33, 13);
|
||||
this.lIsNew.TabIndex = 20;
|
||||
this.lIsNew.Text = "[Neu]";
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(50, 130);
|
||||
this.label8.Margin = new System.Windows.Forms.Padding(0, 10, 0, 0);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(72, 13);
|
||||
this.label8.TabIndex = 28;
|
||||
this.label8.Text = "Beschreibung";
|
||||
//
|
||||
// tbDescription
|
||||
//
|
||||
this.tbDescription.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.tbDescription, 4);
|
||||
this.tbDescription.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tbDescription.Location = new System.Drawing.Point(127, 130);
|
||||
this.tbDescription.Margin = new System.Windows.Forms.Padding(5, 10, 0, 10);
|
||||
this.tbDescription.Multiline = true;
|
||||
this.tbDescription.Name = "tbDescription";
|
||||
this.tbDescription.Size = new System.Drawing.Size(388, 40);
|
||||
this.tbDescription.TabIndex = 3;
|
||||
//
|
||||
// FormAppCreator
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.ClientSize = new System.Drawing.Size(701, 620);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.DesktopAnchor = System.Windows.Forms.DesktopAnchor.Center;
|
||||
this.Name = "FormAppCreator";
|
||||
this.Padding = new System.Windows.Forms.Padding(10, 39, 10, 10);
|
||||
this.RegionBounds = new System.Drawing.Rectangle(19, 19, 701, 620);
|
||||
this.Resizable = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.SystemMenu = false;
|
||||
this.Text = "Erstellen, oder editieren einer App";
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvExecutes)).EndInit();
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picbox)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.TextBox tbAppname;
|
||||
private System.Windows.Forms.TextBox tbGroup;
|
||||
private System.Windows.Forms.RichTextBox rtbADGroups;
|
||||
private System.Windows.Forms.AnimationButton abtnCheckADGroupName;
|
||||
private System.Windows.Forms.DataGridView dgvExecutes;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.AnimationButton abtnIconPath;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label lIconPath;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Label lID;
|
||||
private System.Windows.Forms.PictureBox picbox;
|
||||
private System.Windows.Forms.AnimationButton abtnSave;
|
||||
private System.Windows.Forms.AnimationButton abtnCancel;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.ComboBox cbAppType;
|
||||
private System.Windows.Forms.Label lIsNew;
|
||||
private System.Windows.Forms.SwitchButton switchPrototype;
|
||||
private System.Windows.Forms.Label labelPrototype;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.TextBox tbDescription;
|
||||
}
|
||||
}
|
||||
249
GFATask/Forms/FormAppCreator.cs
Normal file
249
GFATask/Forms/FormAppCreator.cs
Normal file
@@ -0,0 +1,249 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.DirectoryServices;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public partial class FormAppCreator : FormEx
|
||||
{
|
||||
public FormAppCreator()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.ResetControls();
|
||||
cbAppType.Items.AddRange(Enum.GetNames(typeof(AppType)).Where(name => name != "None" || name != "Citrix").ToArray());
|
||||
|
||||
if (!dgvExecutes.Columns.Contains("colBefehl")) dgvExecutes.Columns.Add("colBefehl", "Befehl");
|
||||
if (!dgvExecutes.Columns.Contains("colArgumente")) dgvExecutes.Columns.Add("colArgumente", "Argumente");
|
||||
this.Icon = Icon.FromHandle(new Bitmap(File.OpenRead(Paths.Icons.Directory + @"System\new.png")).GetHicon());
|
||||
this.DesktopAnchor = DesktopAnchor.Center;
|
||||
this.SetDefaultDesign();
|
||||
dgvExecutes.BackgroundColor = this.BackColor;
|
||||
dgvExecutes.DefaultCellStyle.BackColor = this.BackColor;
|
||||
dgvExecutes.EnableHeadersVisualStyles = false;
|
||||
dgvExecutes.RowHeadersDefaultCellStyle.BackColor = this.BackColor;
|
||||
dgvExecutes.DefaultCellStyle.ForeColor = this.ForeColor;
|
||||
dgvExecutes.DefaultCellStyle.Font = this.Font;
|
||||
}
|
||||
|
||||
private void abtnCheckADGroupName_Click(object sender, EventArgs e)
|
||||
{
|
||||
rtbADGroups.Text.Split(';').ToList().ForEach(groupname =>
|
||||
{
|
||||
var settledgroupname = groupname.Replace(" ", "");
|
||||
if (ActiveDirectory.GroupExists(settledgroupname).Item1)
|
||||
rtbADGroups.Text = rtbADGroups.Text.Replace(settledgroupname, ActiveDirectory.GroupExists(settledgroupname).Item2) + Environment.NewLine;
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fügt den entsprechenden Steuerelementen die Informationen der App hinzu um diese editieren zu können
|
||||
/// </summary>
|
||||
/// <param name="app"></param>
|
||||
public void GetEditableItem(AppType apptype, Models.App app)
|
||||
{
|
||||
this.ResetControls();
|
||||
cbAppType.Text = apptype.ToString();
|
||||
lID.Text = app.ID.ToString();
|
||||
lIsNew.Text = string.Empty;
|
||||
tbAppname.Text = app.Name;
|
||||
tbDescription.Text = app.Description;
|
||||
tbGroup.Text = app.Group;
|
||||
switchPrototype.Checked = app.Prototype;
|
||||
if (apptype != AppType.Favorites)
|
||||
{
|
||||
labelPrototype.Visible = true;
|
||||
switchPrototype.Visible = true;
|
||||
rtbADGroups.Enabled = true;
|
||||
abtnCheckADGroupName.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
labelPrototype.Visible = false;
|
||||
switchPrototype.Checked = false;
|
||||
switchPrototype.Visible = false;
|
||||
rtbADGroups.Enabled = false;
|
||||
abtnCheckADGroupName.Enabled = false;
|
||||
}
|
||||
|
||||
cbAppType.Enabled = false;
|
||||
if (app.ActiveDirectoryGroups != null)
|
||||
rtbADGroups.Text = string.Join("; ", app.ActiveDirectoryGroups);
|
||||
app.Execute.ToList().ForEach(exec =>
|
||||
{
|
||||
dgvExecutes.Rows.Add(exec.Command, exec.Args);
|
||||
});
|
||||
lIconPath.Tag = Cast.IconPath(apptype, app.Icon);
|
||||
lIconPath.Text = Path.GetFileName(app.Icon);
|
||||
if (File.Exists(lIconPath.Tag.ToString()))
|
||||
{
|
||||
using (FileStream fs = new FileStream(lIconPath.Tag.ToString(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
|
||||
{
|
||||
picbox.Image = Image.FromStream(fs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void abtnIconPath_Click(object sender, EventArgs e)
|
||||
{
|
||||
var ofd = new OpenFileDialog() { Multiselect = false, Filter = "Image Files(.JPG; .JPEG; .JPE; .BMP; .GIF; .PNG)|*.JPG;*.JPEG;*.JPE;*.BMP;*.GIF;*.PNG" };
|
||||
if (lIconPath.Tag != null && lIconPath.Text != string.Empty)
|
||||
ofd.InitialDirectory = Path.GetDirectoryName(lIconPath.Tag.ToString());
|
||||
else
|
||||
{
|
||||
ofd.InitialDirectory = Paths.Icons.Directory;
|
||||
lIconPath.Text = "[Kein Symbol]";
|
||||
}
|
||||
|
||||
if (ofd.ShowDialog(this) == DialogResult.OK)
|
||||
{
|
||||
lIconPath.Text = ofd.SafeFileName;
|
||||
lIconPath.Tag = ofd.FileName;
|
||||
using (FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
|
||||
{
|
||||
picbox.Image = Image.FromStream(fs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
if (e.CloseReason == CloseReason.UserClosing)
|
||||
{
|
||||
this.Visible = false;
|
||||
e.Cancel = true;
|
||||
}
|
||||
base.OnFormClosing(e);
|
||||
}
|
||||
|
||||
|
||||
public void ResetControls()
|
||||
{
|
||||
labelPrototype.Visible = true;
|
||||
switchPrototype.Visible = true;
|
||||
lIsNew.Text = "[Neu]";
|
||||
lID.Text = string.Empty;
|
||||
tbAppname.Clear();
|
||||
tbDescription.Clear();
|
||||
tbGroup.Clear();
|
||||
cbAppType.Enabled = true;
|
||||
switchPrototype.Checked = true;
|
||||
cbAppType.Text = string.Empty;
|
||||
rtbADGroups.Clear();
|
||||
dgvExecutes.Rows.Clear();
|
||||
picbox.Image = new Bitmap(picbox.Width, picbox.Height);
|
||||
lIconPath.Text = "[Kein Symbol]";
|
||||
}
|
||||
|
||||
private void abtnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void abtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (cbAppType.Text == "")
|
||||
{
|
||||
XObjects.MessageBox("App Liste auswählen", NotifyButtons.OK, NotifyType.Message, new Size(125, 100), "App Liste", null);
|
||||
}
|
||||
else
|
||||
{
|
||||
Models.AppList<Models.App> applist = Accessor.GetAppList(cbAppType.Text);
|
||||
// Ersetzt vorhandene App
|
||||
if (int.TryParse(lID.Text, out _) && applist.Apps.Exists(app => app.ID == int.Parse(lID.Text)))
|
||||
{
|
||||
Models.App appitem = applist.Apps.Find(app => app.ID == int.Parse(lID.Text)).Copy();
|
||||
appitem.Name = tbAppname.Text;
|
||||
appitem.Group = tbGroup.Text;
|
||||
appitem.Description = tbDescription.Text;
|
||||
appitem.Prototype = switchPrototype.Checked;
|
||||
appitem.ActiveDirectoryGroups = rtbADGroups.Text.Split(';').Length == 0 || rtbADGroups.Text == "" ? null : rtbADGroups.Text.Split(';');
|
||||
appitem.Execute = dgvExecutes.Rows.Cast<DataGridViewRow>().Where(row => !row.IsNewRow).Select(row =>
|
||||
new Models.Execute()
|
||||
{
|
||||
Command = row.Cells[0].Value == null ? null : row.Cells[0].Value.ToString(),
|
||||
Args = row.Cells[1].Value == null ? null : row.Cells[1].Value.ToString()
|
||||
}).ToArray();
|
||||
if(lIconPath.Text != string.Empty)
|
||||
{
|
||||
if((AppType)Enum.Parse(typeof(AppType), cbAppType.Text, true) == AppType.Favorites)
|
||||
{
|
||||
if (lIconPath.Tag.ToString() != Cast.IconPath(AppType.Favorites, lIconPath.Text))
|
||||
Creator.StreamCopy(lIconPath.Tag.ToString(), Cast.IconPath(AppType.Favorites, lIconPath.Text), null);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lIconPath.Tag != null && !File.Exists($"{Paths.Icons.Directory}{lIconPath.Text}") && File.Exists(lIconPath.Tag.ToString()))
|
||||
Creator.StreamCopy(lIconPath.Tag.ToString(), $"{Paths.Icons.Directory}{lIconPath.Text}", (fs) =>
|
||||
{
|
||||
Forms.Administration.UcAdminApps.imageList.Images.Add(Path.GetFileName(fs.Name), Image.FromStream(fs));
|
||||
});
|
||||
}
|
||||
appitem.Icon = lIconPath.Text;
|
||||
}
|
||||
Creator.ReplaceApp(cbAppType.Text, appitem);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Erstellt neue App
|
||||
Models.App app_new = new Models.App()
|
||||
{
|
||||
ID = applist.Apps.Max(app => app.ID) + 1,
|
||||
Name = tbAppname.Text,
|
||||
Description = tbDescription.Text,
|
||||
Group = tbGroup.Text,
|
||||
Icon = lIconPath.Text,
|
||||
Created = DateTime.Now,
|
||||
LastModified = DateTime.Now,
|
||||
Prototype = switchPrototype.Checked,
|
||||
ActiveDirectoryGroups = rtbADGroups.Text.Split(';').Length == 0 ? null : rtbADGroups.Text.Split(';'),
|
||||
Execute = dgvExecutes.Rows.Cast<DataGridViewRow>().Where(row => !row.IsNewRow).Select(row =>
|
||||
new Models.Execute()
|
||||
{
|
||||
Command = row.Cells[0].Value == null ? null : row.Cells[0].Value.ToString(),
|
||||
Args = row.Cells[1].Value == null ? null : row.Cells[1].Value.ToString()
|
||||
}).ToArray()
|
||||
};
|
||||
|
||||
|
||||
if (lIconPath.Tag != null && !File.Exists($"{Paths.Icons.Directory}{lIconPath.Text}"))
|
||||
Creator.StreamCopy(lIconPath.Tag.ToString(), $"{Paths.Icons.Directory}{lIconPath.Text}", (fs) =>
|
||||
{
|
||||
Forms.Administration.UcAdminApps.imageList.Images.Add(Path.GetFileName(fs.Name), Image.FromStream(fs));
|
||||
});
|
||||
//File.Copy(lIconPath.Tag.ToString(), $"{Paths.Icons.Directory}{lIconPath.Text}", true);
|
||||
|
||||
Creator.AddApp(cbAppType.Text, app_new);
|
||||
}
|
||||
|
||||
|
||||
this.ResetControls();
|
||||
this.Close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void picbox_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void cbAppType_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if(this.Created)
|
||||
{
|
||||
lID.Text = (Accessor.GetAppList(cbAppType.Text).Apps.Max(app => app.ID) + 1).ToString();
|
||||
rtbADGroups.Enabled = cbAppType.Text != AppType.Favorites.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/Forms/FormAppCreator.resx
Normal file
120
GFATask/Forms/FormAppCreator.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
177
GFATask/Forms/FormGroups.Designer.cs
generated
Normal file
177
GFATask/Forms/FormGroups.Designer.cs
generated
Normal file
@@ -0,0 +1,177 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class FormGroups
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
GFATask.Prevalencia prevalencia1 = new GFATask.Prevalencia();
|
||||
this.lLoading = new System.Windows.Forms.Label();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.abtnRefresh = new GFATask.AppListButton();
|
||||
this.lvGroups = new System.Windows.Forms.ListViewEx();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// lLoading
|
||||
//
|
||||
this.lLoading.Location = new System.Drawing.Point(7, 7);
|
||||
this.lLoading.Margin = new System.Windows.Forms.Padding(7, 6, 7, 6);
|
||||
this.lLoading.Name = "lLoading";
|
||||
this.lLoading.Size = new System.Drawing.Size(539, 30);
|
||||
this.lLoading.TabIndex = 3;
|
||||
this.lLoading.Text = "Loading";
|
||||
this.lLoading.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(10, 39);
|
||||
this.splitContainer1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.abtnRefresh);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lLoading);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.lvGroups);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1424, 299);
|
||||
this.splitContainer1.SplitterDistance = 36;
|
||||
this.splitContainer1.SplitterWidth = 5;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// abtnRefresh
|
||||
//
|
||||
this.abtnRefresh.ActiveDirectoryGroups = new string[0];
|
||||
this.abtnRefresh.ActualWidth = 0;
|
||||
this.abtnRefresh.AppType = System.AppType.None;
|
||||
this.abtnRefresh.AutoSizeWidth = false;
|
||||
this.abtnRefresh.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.abtnRefresh.Font = new System.Drawing.Font("Microsoft Sans Serif", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.abtnRefresh.Image = global::GFATask.Properties.Resources.magnifier;
|
||||
this.abtnRefresh.ImageAutoSize = System.Windows.Forms.ImageAutoSizeDirection.Manual;
|
||||
this.abtnRefresh.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnRefresh.ImageBounds = new System.Drawing.Rectangle(5, 1, 34, 34);
|
||||
this.abtnRefresh.ImageMargin = 3;
|
||||
this.abtnRefresh.ImageOnly = false;
|
||||
this.abtnRefresh.ImagePadding = 0;
|
||||
this.abtnRefresh.ImageSize = new System.Drawing.Size(34, 34);
|
||||
this.abtnRefresh.Location = new System.Drawing.Point(1232, 0);
|
||||
this.abtnRefresh.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.abtnRefresh.Name = "abtnRefresh";
|
||||
prevalencia1.AppType = System.AppType.None;
|
||||
prevalencia1.CountClicks = 0;
|
||||
prevalencia1.ID = 0;
|
||||
this.abtnRefresh.Prevalence = prevalencia1;
|
||||
this.abtnRefresh.Size = new System.Drawing.Size(192, 36);
|
||||
this.abtnRefresh.TabIndex = 4;
|
||||
this.abtnRefresh.Text = "Wiederhole Suche";
|
||||
this.abtnRefresh.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.abtnRefresh.TextBounds = new System.Drawing.Rectangle(39, 2, 151, 32);
|
||||
this.abtnRefresh.ToolTipText = "";
|
||||
this.abtnRefresh.Click += new System.EventHandler(this.abtnRefresh_Click);
|
||||
//
|
||||
// lvGroups
|
||||
//
|
||||
this.lvGroups.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.lvGroups.ColumnFont = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this.lvGroups.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1,
|
||||
this.columnHeader2,
|
||||
this.columnHeader3});
|
||||
this.lvGroups.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lvGroups.HideSelection = false;
|
||||
this.lvGroups.Location = new System.Drawing.Point(0, 0);
|
||||
this.lvGroups.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.lvGroups.Name = "lvGroups";
|
||||
this.lvGroups.Size = new System.Drawing.Size(1424, 258);
|
||||
this.lvGroups.Sorting = System.Windows.Forms.SortOrder.Ascending;
|
||||
this.lvGroups.TabIndex = 2;
|
||||
this.lvGroups.UseCompatibleStateImageBehavior = false;
|
||||
this.lvGroups.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// columnHeader1
|
||||
//
|
||||
this.columnHeader1.Text = "Name";
|
||||
this.columnHeader1.Width = 345;
|
||||
//
|
||||
// columnHeader2
|
||||
//
|
||||
this.columnHeader2.Text = "SID";
|
||||
this.columnHeader2.Width = 248;
|
||||
//
|
||||
// columnHeader3
|
||||
//
|
||||
this.columnHeader3.Text = "Beschreibung";
|
||||
this.columnHeader3.Width = 463;
|
||||
//
|
||||
// FormGroups
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.ClientSize = new System.Drawing.Size(1444, 348);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FormGroups";
|
||||
this.Padding = new System.Windows.Forms.Padding(10, 39, 10, 10);
|
||||
this.RegionBounds = new System.Drawing.Rectangle(19, 19, 1444, 348);
|
||||
this.ShowIcon = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.SystemMenu = false;
|
||||
this.Text = "Meine Gruppen";
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label lLoading;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private AppListButton abtnRefresh;
|
||||
private System.Windows.Forms.ListViewEx lvGroups;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader2;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader3;
|
||||
}
|
||||
}
|
||||
95
GFATask/Forms/FormGroups.cs
Normal file
95
GFATask/Forms/FormGroups.cs
Normal file
@@ -0,0 +1,95 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.DirectoryServices.AccountManagement;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
|
||||
public partial class FormGroups : FormEx
|
||||
{
|
||||
public FormGroups()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
lvGroups.DoubleBuffer(true);
|
||||
// Lädt das Layout des GFATask
|
||||
this.SetDefaultDesign();
|
||||
lvGroups.SortByColumn(0);
|
||||
}
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
lLoading.ForeColor = Coloring.GetReadableForeColor(lLoading.BackColor);
|
||||
|
||||
}
|
||||
|
||||
public void AddADGroup(GroupPrincipal group)
|
||||
{
|
||||
var item = new ListViewItem(new string[] { group.Name, group.Sid.Value, group.Description });
|
||||
var subSID = new ListViewItem.ListViewSubItem(item, group.Sid.Value);
|
||||
var subDescription = new ListViewItem.ListViewSubItem(item, group.Description);
|
||||
item.SubItems.AddRange(new ListViewItem.ListViewSubItem[] { subSID, subDescription });
|
||||
|
||||
if (lvGroups.InvokeRequired)
|
||||
{
|
||||
lvGroups.Invoke(new MethodInvoker(delegate
|
||||
{
|
||||
lvGroups.Items.Add(item);
|
||||
lvGroups.Update();
|
||||
lvGroups.Invalidate();
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
lvGroups.Items.Add(item);
|
||||
lvGroups.Update();
|
||||
lvGroups.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Durchsucht die Domäne nach Active Directory Gruppen
|
||||
/// </summary>
|
||||
/// <param name="local">Befindet sich der PC in einer Domäne, dann false, andernfalls true</param>
|
||||
public void Loading(bool local = false)
|
||||
{
|
||||
if (lvGroups.InvokeRequired)
|
||||
{
|
||||
lvGroups.Invoke(new MethodInvoker( delegate { lvGroups.Items.Clear(); }));
|
||||
}
|
||||
else
|
||||
{
|
||||
lvGroups.Items.Clear();
|
||||
}
|
||||
if (!local)
|
||||
{
|
||||
lLoading.Loading("Suche nach Gruppen", "Suche abgeschlossen", AD.GetGroups);
|
||||
}
|
||||
else
|
||||
lLoading.Loading("Suche nach Gruppen", "Keine Domäne gefunden", null);
|
||||
}
|
||||
|
||||
|
||||
protected override void OnClosing(CancelEventArgs e)
|
||||
{
|
||||
this.Visible = false;
|
||||
e.Cancel = true;
|
||||
base.OnClosing(e);
|
||||
}
|
||||
|
||||
private void abtnRefresh_Click(object sender, EventArgs e)
|
||||
{
|
||||
lvGroups.Items.Clear();
|
||||
this.Loading();
|
||||
}
|
||||
}
|
||||
}
|
||||
123
GFATask/Forms/FormGroups.resx
Normal file
123
GFATask/Forms/FormGroups.resx
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>81</value>
|
||||
</metadata>
|
||||
</root>
|
||||
238
GFATask/Forms/FormInfo.Designer.cs
generated
Normal file
238
GFATask/Forms/FormInfo.Designer.cs
generated
Normal file
@@ -0,0 +1,238 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class FormInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.lCopyright = new System.Windows.Forms.Label();
|
||||
this.lOS = new System.Windows.Forms.Label();
|
||||
this.lComputer = new System.Windows.Forms.Label();
|
||||
this.lText = new System.Windows.Forms.Label();
|
||||
this.picLOGO = new System.Windows.Forms.PictureBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.lWebBrowser = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picLOGO)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 4;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 112F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.label4, 2, 6);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lCopyright, 1, 9);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lOS, 1, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lComputer, 1, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lText, 1, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.picLOGO, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label5, 2, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label1, 2, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label2, 2, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lWebBrowser, 1, 7);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(10, 33);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 10;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 42F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 56F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(503, 412);
|
||||
this.tableLayoutPanel1.TabIndex = 1;
|
||||
//
|
||||
// lCopyright
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.lCopyright, 3);
|
||||
this.lCopyright.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lCopyright.Location = new System.Drawing.Point(115, 384);
|
||||
this.lCopyright.Name = "lCopyright";
|
||||
this.lCopyright.Size = new System.Drawing.Size(385, 28);
|
||||
this.lCopyright.TabIndex = 24;
|
||||
this.lCopyright.Text = "InfoClass.Copyright";
|
||||
this.lCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// lOS
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.lOS, 3);
|
||||
this.lOS.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lOS.Location = new System.Drawing.Point(115, 140);
|
||||
this.lOS.Name = "lOS";
|
||||
this.lOS.Size = new System.Drawing.Size(385, 42);
|
||||
this.lOS.TabIndex = 8;
|
||||
this.lOS.Text = "InfoClass.OS";
|
||||
this.lOS.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lComputer
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.lComputer, 3);
|
||||
this.lComputer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lComputer.Location = new System.Drawing.Point(115, 84);
|
||||
this.lComputer.Name = "lComputer";
|
||||
this.lComputer.Size = new System.Drawing.Size(385, 28);
|
||||
this.lComputer.TabIndex = 7;
|
||||
this.lComputer.Text = "InfoClass.Computer";
|
||||
this.lComputer.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lText
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.lText, 3);
|
||||
this.lText.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lText.Location = new System.Drawing.Point(115, 28);
|
||||
this.lText.Name = "lText";
|
||||
this.lText.Size = new System.Drawing.Size(385, 28);
|
||||
this.lText.TabIndex = 5;
|
||||
this.lText.Text = "InfoClass.Program+ProgramCodeName";
|
||||
this.lText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// picLOGO
|
||||
//
|
||||
this.picLOGO.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.picLOGO.Location = new System.Drawing.Point(6, 41);
|
||||
this.picLOGO.Name = "picLOGO";
|
||||
this.tableLayoutPanel1.SetRowSpan(this.picLOGO, 6);
|
||||
this.picLOGO.Size = new System.Drawing.Size(100, 100);
|
||||
this.picLOGO.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.picLOGO.TabIndex = 6;
|
||||
this.picLOGO.TabStop = false;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label5.Location = new System.Drawing.Point(209, 0);
|
||||
this.label5.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(195, 28);
|
||||
this.label5.TabIndex = 20;
|
||||
this.label5.Text = "Version";
|
||||
this.label5.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(209, 56);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(195, 28);
|
||||
this.label1.TabIndex = 21;
|
||||
this.label1.Text = "Ihr Computer";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label2.Location = new System.Drawing.Point(209, 112);
|
||||
this.label2.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(195, 28);
|
||||
this.label2.TabIndex = 22;
|
||||
this.label2.Text = "Ihr Betriebssystem";
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// lWebBrowser
|
||||
//
|
||||
this.lWebBrowser.AutoSize = true;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.lWebBrowser, 3);
|
||||
this.lWebBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lWebBrowser.Location = new System.Drawing.Point(115, 210);
|
||||
this.lWebBrowser.Name = "lWebBrowser";
|
||||
this.lWebBrowser.Size = new System.Drawing.Size(385, 56);
|
||||
this.lWebBrowser.TabIndex = 25;
|
||||
this.lWebBrowser.Text = "InfoClass.Browsers";
|
||||
this.lWebBrowser.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label4.Location = new System.Drawing.Point(209, 182);
|
||||
this.label4.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(195, 28);
|
||||
this.label4.TabIndex = 26;
|
||||
this.label4.Text = "Verfügbare Webbrowser";
|
||||
this.label4.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// FormInfo
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(523, 455);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.DesktopAnchor = System.Windows.Forms.DesktopAnchor.Center;
|
||||
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FormInfo";
|
||||
this.Padding = new System.Windows.Forms.Padding(10, 33, 10, 10);
|
||||
this.RegionBounds = new System.Drawing.Rectangle(15, 15, 523, 455);
|
||||
this.Resizable = false;
|
||||
this.ShowIcon = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
this.Text = "";
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picLOGO)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.Label lText;
|
||||
private System.Windows.Forms.PictureBox picLOGO;
|
||||
private System.Windows.Forms.Label lComputer;
|
||||
private System.Windows.Forms.Label lOS;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label lCopyright;
|
||||
private System.Windows.Forms.Label lWebBrowser;
|
||||
private System.Windows.Forms.Label label4;
|
||||
}
|
||||
}
|
||||
63
GFATask/Forms/FormInfo.cs
Normal file
63
GFATask/Forms/FormInfo.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public partial class FormInfo : FormEx
|
||||
{
|
||||
LoadingPanel panel = XObjects.LoadingPanel.Clone();
|
||||
|
||||
public FormInfo()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.SetDefaultDesign();
|
||||
picLOGO.Image = Image.FromStream(File.OpenRead(Paths.Icons.Directory + @"\System\GFA.png"));
|
||||
lText.Text = $"{InfoClass.Program} [Codename {InfoClass.ProgramCodeName}]";
|
||||
lComputer.Text = $"{InfoClass.Computer } [{InfoClass.IPAdress}]";
|
||||
lOS.Text = InfoClass.OperatingSystem;
|
||||
lCopyright.Text = InfoClass.Copyright;
|
||||
|
||||
label1.Paint += Designer.DrawHeaderLabel;
|
||||
label2.Paint += Designer.DrawHeaderLabel;
|
||||
label4.Paint += Designer.DrawHeaderLabel;
|
||||
label5.Paint += Designer.DrawHeaderLabel;
|
||||
|
||||
lWebBrowser.Text = InfoClass.Browsers;
|
||||
}
|
||||
|
||||
protected override void OnVisibleChanged(EventArgs e)
|
||||
{
|
||||
base.OnVisibleChanged(e);
|
||||
if(this.Visible)
|
||||
{
|
||||
panel = XObjects.LoadingPanel.Clone();
|
||||
panel.Loading = true;
|
||||
this.tableLayoutPanel1.Controls.Add(panel, 1, this.tableLayoutPanel1.RowCount -2);
|
||||
this.tableLayoutPanel1.SetColumnSpan(panel, this.tableLayoutPanel1.ColumnCount - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
panel.Loading = this.Visible;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
if(e.CloseReason == CloseReason.UserClosing)
|
||||
{
|
||||
this.Visible = false;
|
||||
e.Cancel = true;
|
||||
}
|
||||
base.OnFormClosing(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/Forms/FormInfo.resx
Normal file
120
GFATask/Forms/FormInfo.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
184
GFATask/Forms/FormMain.Designer.cs
generated
Normal file
184
GFATask/Forms/FormMain.Designer.cs
generated
Normal file
@@ -0,0 +1,184 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class FormMain
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Windows Form-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.applistpanelUser = new GFATask.AppListPanel();
|
||||
this.applistpanelMenu = new GFATask.AppListPanel();
|
||||
this.applistpanelAdmin = new GFATask.AppListPanel();
|
||||
this.applistpanelFavorites = new GFATask.AppListPanel();
|
||||
this.applistpanelCitrix = new GFATask.AppListPanel();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// applistpanelUser
|
||||
//
|
||||
this.applistpanelUser.AppType = System.AppType.User;
|
||||
this.applistpanelUser.AutoScroll = true;
|
||||
this.applistpanelUser.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.applistpanelUser.Border = new System.Drawing.Point(2, 2);
|
||||
this.applistpanelUser.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.applistpanelUser.Font = new System.Drawing.Font("Calibri", 10F);
|
||||
this.applistpanelUser.Grouping = false;
|
||||
this.applistpanelUser.IsLast = false;
|
||||
this.applistpanelUser.ListName = "Apps";
|
||||
this.applistpanelUser.Location = new System.Drawing.Point(10, 328);
|
||||
this.applistpanelUser.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.applistpanelUser.MinimumSize = new System.Drawing.Size(0, 42);
|
||||
this.applistpanelUser.Name = "applistpanelUser";
|
||||
this.applistpanelUser.Padding = new System.Windows.Forms.Padding(31, 7, 2, 2);
|
||||
this.applistpanelUser.Resizing = false;
|
||||
this.applistpanelUser.Showing = false;
|
||||
this.applistpanelUser.Size = new System.Drawing.Size(720, 82);
|
||||
this.applistpanelUser.TabIndex = 7;
|
||||
this.applistpanelUser.Tag = "user";
|
||||
//
|
||||
// applistpanelMenu
|
||||
//
|
||||
this.applistpanelMenu.AppType = System.AppType.Menu;
|
||||
this.applistpanelMenu.AutoScroll = true;
|
||||
this.applistpanelMenu.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.applistpanelMenu.Border = new System.Drawing.Point(2, 2);
|
||||
this.applistpanelMenu.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.applistpanelMenu.Font = new System.Drawing.Font("Calibri", 10F);
|
||||
this.applistpanelMenu.Grouping = false;
|
||||
this.applistpanelMenu.IsLast = false;
|
||||
this.applistpanelMenu.ListName = "Menü";
|
||||
this.applistpanelMenu.Location = new System.Drawing.Point(10, 40);
|
||||
this.applistpanelMenu.Margin = new System.Windows.Forms.Padding(0, 0, 0, 2);
|
||||
this.applistpanelMenu.MinimumSize = new System.Drawing.Size(0, 49);
|
||||
this.applistpanelMenu.Name = "applistpanelMenu";
|
||||
this.applistpanelMenu.Padding = new System.Windows.Forms.Padding(31, 7, 2, 7);
|
||||
this.applistpanelMenu.Showing = false;
|
||||
this.applistpanelMenu.Size = new System.Drawing.Size(720, 61);
|
||||
this.applistpanelMenu.TabIndex = 3;
|
||||
this.applistpanelMenu.Tag = "menu";
|
||||
//
|
||||
// applistpanelAdmin
|
||||
//
|
||||
this.applistpanelAdmin.AppType = System.AppType.Admin;
|
||||
this.applistpanelAdmin.AutoScroll = true;
|
||||
this.applistpanelAdmin.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.applistpanelAdmin.Border = new System.Drawing.Point(2, 2);
|
||||
this.applistpanelAdmin.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.applistpanelAdmin.Font = new System.Drawing.Font("Calibri", 10F);
|
||||
this.applistpanelAdmin.Grouping = false;
|
||||
this.applistpanelAdmin.IsLast = false;
|
||||
this.applistpanelAdmin.ListName = "Admin";
|
||||
this.applistpanelAdmin.Location = new System.Drawing.Point(10, 257);
|
||||
this.applistpanelAdmin.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.applistpanelAdmin.MinimumSize = new System.Drawing.Size(0, 52);
|
||||
this.applistpanelAdmin.Name = "applistpanelAdmin";
|
||||
this.applistpanelAdmin.Padding = new System.Windows.Forms.Padding(31, 7, 2, 7);
|
||||
this.applistpanelAdmin.Showing = false;
|
||||
this.applistpanelAdmin.Size = new System.Drawing.Size(720, 71);
|
||||
this.applistpanelAdmin.TabIndex = 6;
|
||||
this.applistpanelAdmin.Tag = "admin";
|
||||
//
|
||||
// applistpanelFavorites
|
||||
//
|
||||
this.applistpanelFavorites.AppType = System.AppType.Favorites;
|
||||
this.applistpanelFavorites.AutoScroll = true;
|
||||
this.applistpanelFavorites.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.applistpanelFavorites.Border = new System.Drawing.Point(2, 2);
|
||||
this.applistpanelFavorites.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.applistpanelFavorites.Font = new System.Drawing.Font("Calibri", 10F);
|
||||
this.applistpanelFavorites.Grouping = false;
|
||||
this.applistpanelFavorites.IsLast = false;
|
||||
this.applistpanelFavorites.ListName = "Favoriten";
|
||||
this.applistpanelFavorites.Location = new System.Drawing.Point(10, 172);
|
||||
this.applistpanelFavorites.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.applistpanelFavorites.MinimumSize = new System.Drawing.Size(0, 73);
|
||||
this.applistpanelFavorites.Name = "applistpanelFavorites";
|
||||
this.applistpanelFavorites.Padding = new System.Windows.Forms.Padding(31, 7, 2, 7);
|
||||
this.applistpanelFavorites.Showing = false;
|
||||
this.applistpanelFavorites.Size = new System.Drawing.Size(720, 85);
|
||||
this.applistpanelFavorites.TabIndex = 5;
|
||||
this.applistpanelFavorites.Tag = "favorites";
|
||||
//
|
||||
// applistpanelCitrix
|
||||
//
|
||||
this.applistpanelCitrix.AppType = System.AppType.Citrix;
|
||||
this.applistpanelCitrix.AutoScroll = true;
|
||||
this.applistpanelCitrix.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||
this.applistpanelCitrix.Border = new System.Drawing.Point(2, 2);
|
||||
this.applistpanelCitrix.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.applistpanelCitrix.Font = new System.Drawing.Font("Calibri", 10F);
|
||||
this.applistpanelCitrix.Grouping = false;
|
||||
this.applistpanelCitrix.IsLast = false;
|
||||
this.applistpanelCitrix.ListName = "Citrix";
|
||||
this.applistpanelCitrix.Location = new System.Drawing.Point(10, 101);
|
||||
this.applistpanelCitrix.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
||||
this.applistpanelCitrix.MinimumSize = new System.Drawing.Size(0, 44);
|
||||
this.applistpanelCitrix.Name = "applistpanelCitrix";
|
||||
this.applistpanelCitrix.Padding = new System.Windows.Forms.Padding(31, 7, 2, 7);
|
||||
this.applistpanelCitrix.Showing = false;
|
||||
this.applistpanelCitrix.Size = new System.Drawing.Size(720, 71);
|
||||
this.applistpanelCitrix.TabIndex = 4;
|
||||
this.applistpanelCitrix.Tag = "citrix";
|
||||
//
|
||||
// FormMain
|
||||
//
|
||||
this.AllowDrop = true;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(716, 387);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.applistpanelUser);
|
||||
this.Controls.Add(this.applistpanelMenu);
|
||||
this.Controls.Add(this.applistpanelAdmin);
|
||||
this.Controls.Add(this.applistpanelFavorites);
|
||||
this.Controls.Add(this.applistpanelCitrix);
|
||||
this.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Moveable = false;
|
||||
this.Name = "FormMain";
|
||||
this.Opacity = 0.5D;
|
||||
this.Padding = new System.Windows.Forms.Padding(10, 38, 10, 10);
|
||||
this.RegionBounds = new System.Drawing.Rectangle(15, 15, 716, 387);
|
||||
this.Resizable = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
|
||||
this.Text = "GFATask";
|
||||
this.TextAlign = System.Drawing.StringAlignment.Center;
|
||||
this.TitlebarHeight = 28;
|
||||
this.TopMost = true;
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private AppListPanel applistpanelMenu;
|
||||
private AppListPanel applistpanelCitrix;
|
||||
private AppListPanel applistpanelFavorites;
|
||||
private AppListPanel applistpanelAdmin;
|
||||
private AppListPanel applistpanelUser;
|
||||
}
|
||||
}
|
||||
|
||||
647
GFATask/Forms/FormMain.cs
Normal file
647
GFATask/Forms/FormMain.cs
Normal file
@@ -0,0 +1,647 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public partial class FormMain : FormEx
|
||||
{
|
||||
/// <summary>
|
||||
/// Gibt den aktuell fokusierten Bildschirm aus, auf dem sich der GFA-Task befindet
|
||||
/// </summary>
|
||||
private Screen currentscreen = null;
|
||||
|
||||
/// <summary>
|
||||
/// Darstellung des Aktionsbereichs des GFA-Task
|
||||
/// </summary>
|
||||
Rectangle actionregion = new Rectangle();
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die absoluten Y-Koordinaten für das Aus[0]- und Einblenden[1] an
|
||||
/// </summary>
|
||||
private int[] start_stop_y = new int[2];
|
||||
|
||||
/// <summary>
|
||||
/// Speichert den Wert einer einzelnen Einheit ab, die den GFA-Task parallel zum hoch- und runterfahren ein- und ausblendet.
|
||||
/// Damit endet der Ein- und Ausblendevorgang zeitgleich mit dem hoch- und runterfahren
|
||||
/// </summary>
|
||||
private double opacitystep;
|
||||
|
||||
|
||||
private int _actionregionheight = 1;
|
||||
/// <summary>
|
||||
/// Zeichenbreite der Aktionslinie des Hauptfensters
|
||||
/// </summary>
|
||||
public int ActionRegionHeight
|
||||
{
|
||||
get => _actionregionheight; set
|
||||
{
|
||||
_actionregionheight = value;
|
||||
this.SetActionRegion();
|
||||
this.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public FormMain()
|
||||
{
|
||||
|
||||
|
||||
if (Config.User.ErrorHandle)
|
||||
Log.EventLog.StartLoggingUI(Config.Main.LoggerAppPath, "");
|
||||
Log.EventLog.SetAutoHandleException(true);
|
||||
|
||||
#region Erstellung der Forms zur Laufzeit / in der selben AppDomain
|
||||
Forms.Main = this;
|
||||
Forms.Info = new FormInfo();
|
||||
Forms.Groups = new FormGroups();
|
||||
Forms.Settings = new FormSettings();
|
||||
Forms.Administration = new FormAdmin();
|
||||
Forms.AppCreator = new FormAppCreator();
|
||||
Forms.AppButtonGroup = new FormAppButtonGroup();
|
||||
#endregion
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
this.UseNewsFeeds();
|
||||
Accumulations.Controls(this).Reverse().OfType<AppListPanel>().ToList().ForEach(applistpanel =>
|
||||
{
|
||||
XObjects.AllAppListPanels.Add(applistpanel);
|
||||
});
|
||||
|
||||
#region Configs
|
||||
try
|
||||
{
|
||||
// Lädt das Layout des GFATask
|
||||
this.SetDefaultDesign();
|
||||
this.Size = Config.User.Window.Size.Height < this.MinimumSize.Height ? new Size(Config.User.Window.Size.Width, this.MinimumSize.Height) : Config.User.Window.Size;
|
||||
_actionregionheight = Config.User.Window.ActionRegionHeight;
|
||||
this.SetStartValue();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Auslesefehler des Layouts", LogClassification.CriticalError, ex);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Lädt die Größe des GFATask
|
||||
XObjects.Delay = new Delay(Config.User.NecessaryClick ? 0 : Config.User.Delay.Show, Config.User.Delay.Hide, Config.User.Delay.Speed == 100 ? 99 : Config.User.Delay.Speed, start_stop_y[0], start_stop_y[1]);
|
||||
XObjects.Delay.ValueChanged += Delay_ValueChanged;
|
||||
this.SetOpacityStep();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Delay nicht erstellt", LogClassification.CriticalError, ex);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Richtet den GFATask am Bildschirm aus
|
||||
this.DesktopAlign();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Fehler in GFATask-Koordinaten", LogClassification.MediumError, ex);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region AppListPanels / Apperstellung
|
||||
// Richtet im Falle einer Falschsortierung die AppListPanels richtig aus
|
||||
this.Controls.SetChildIndex(applistpanelMenu, 4);
|
||||
this.Controls.SetChildIndex(applistpanelCitrix, 3);
|
||||
this.Controls.SetChildIndex(applistpanelFavorites, 2);
|
||||
this.Controls.SetChildIndex(applistpanelAdmin, 1);
|
||||
this.Controls.SetChildIndex(applistpanelUser, 0);
|
||||
|
||||
// Lädt die Größe der entsprechenden Appliste aus der Config.User Datei
|
||||
XObjects.AllAppListPanels.ForEach(panel =>
|
||||
{
|
||||
try
|
||||
{
|
||||
panel.Height = Accessor.GetListProperties(panel.AppType).Height;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write(string.Format("Größenfehler in AppListPanel {0}", panel.Tag.ToString().First().ToString() + panel.Tag.ToString().Skip(1).ToString().ToLower()), LogClassification.CriticalError, ex);
|
||||
}
|
||||
});
|
||||
|
||||
this.CreateAppListPanels();
|
||||
|
||||
Accessor.SetLastAppListPanel();
|
||||
#endregion
|
||||
|
||||
#region Active Directory Groups
|
||||
try
|
||||
{
|
||||
// Lädt die Active Directory-Gruppen in das FormGroup
|
||||
Forms.Groups.Loading();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("AD Gruppen konnten nicht ausgelesen werden", LogClassification.CriticalError, ex);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Systemkontextmenü
|
||||
this.RemoveSysMenuItem(SystemContextMenuEntry.Maximieren | SystemContextMenuEntry.Minimieren | SystemContextMenuEntry.Schließen | SystemContextMenuEntry.Seperator);
|
||||
this.AddSysMenuItem(new ToolStripMenuItem("Meine Gruppen", null, (sender, e) => Accessor.OpenForm("Groups")));
|
||||
this.AddSysMenuItem(new ToolStripMenuItem("Info", null, (sender, e) => { SystemApps.Info(out _); }));
|
||||
this.InsertSysMenuItem(2, new ToolStripMenuItem("Einstellungen", null, (sender, e) => { SystemApps.Settings(out _); }));
|
||||
this.InsertSysMenuItem(3, new ToolStripSeparator());
|
||||
this.InsertSysMenuItem(4, new ToolStripMenuItem("Konfiguration sichern", null, (sender, e) => { SystemApps.Backup(out _); }));
|
||||
this.InsertSysMenuItem(5, new ToolStripMenuItem("Konfiguration laden", null, (sender, e) => { SystemApps.LoadBackup(out _); }));
|
||||
this.InsertSysMenuItem(6, new ToolStripSeparator());
|
||||
Task.Run(async delegate
|
||||
{
|
||||
if (await XObjects.IsADGroupFinish)
|
||||
{
|
||||
if (AD.Groups.Select(group => group.Name).Contains(Config.Main.Administration.ActiveDirectoryGroup))
|
||||
{
|
||||
Forms.Main.Invoke(new MethodInvoker(delegate
|
||||
{
|
||||
this.InsertSysMenuItem(7, new ToolStripMenuItem("Administration", null, (sender, e) => { Accessor.OpenForm("Administration"); }));
|
||||
this.InsertSysMenuItem(8, new ToolStripSeparator());
|
||||
this.InsertSysMenuItem(this.SysContextMenu.Items.Count, new ToolStripMenuItem("Beenden", null, (sender, e) => { SystemApps.Kill(out _); }));
|
||||
}));
|
||||
}
|
||||
}
|
||||
});
|
||||
this.InsertSysMenuItem(this.SysContextMenu.Items.Count, new ToolStripMenuItem("Neustart", null, (sender, e) => { SystemApps.Restart(out _); }));
|
||||
#endregion
|
||||
|
||||
#region Globale Hooks
|
||||
try
|
||||
{
|
||||
// Installiert die Mouse-Hooks
|
||||
Hooks.Mouse.Install();
|
||||
Hooks.Mouse.MouseMove += Hooks.Mouse_Move;
|
||||
Hooks.Mouse.LeftButtonDown += Hooks.Mouse_Up;
|
||||
Hooks.Mouse.RightButtonDown += Hooks.Mouse_Up;
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Konnte Mouse-Hook nicht installieren", LogClassification.Crash, ex);
|
||||
throw;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Installiert die Tastatur-Hooks für die System-Apps und die SearchBox
|
||||
// Fängt die Tastenkombinationen ab, sodass sie für Windows nicht mehr erreichbar sind, solange das Programm läuft
|
||||
Hooks.KeyBoard.Interceptor.RegisterHotKey(Modifier.CTRL, Keys.F1, "info");
|
||||
Hooks.KeyBoard.Interceptor.RegisterHotKey(Modifier.CTRL, Keys.F2, "settings");
|
||||
Hooks.KeyBoard.Interceptor.RegisterHotKey(Modifier.CTRL, Keys.F3, "admin");
|
||||
Hooks.KeyBoard.Interceptor.KeyPressed += Hooks.KeyBoard_Intercept_KeyPress;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("HotKeys konnten nicht registriert werden", LogClassification.MediumError, ex);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Erstellt die App- und GoupButtons in den AppListPanels
|
||||
/// </summary>
|
||||
public void CreateAppListPanels()
|
||||
{
|
||||
try
|
||||
{
|
||||
Creator.AppListPanel(applistpanelMenu, AppLists.Menu);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Apps in Menü-Liste nicht erstellt", LogClassification.CriticalError, ex);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Creator.AppListPanel(applistpanelCitrix, AppLists.Citrix);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Apps in Citrix-Liste nicht erstellt", LogClassification.CriticalError, ex);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Creator.AppListPanel(applistpanelFavorites, AppLists.Favorites);
|
||||
//Creator.AppListPanel(applistpanelFavorites, AppLists.Favorites);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Apps in Favoriten-Liste nicht erstellt", LogClassification.CriticalError, ex);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Creator.AppListPanel(applistpanelAdmin, AppLists.Admin);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Apps in Admin-Liste nicht erstellt", LogClassification.CriticalError, ex);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Creator.AppListPanel(applistpanelUser, AppLists.User);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Apps in User-Apps-Liste nicht erstellt", LogClassification.CriticalError, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Richtet den GFA-Task mittig am oberen Rand des angegebenen Bildschirms aus
|
||||
/// </summary>
|
||||
public void DesktopAlign()
|
||||
{
|
||||
try
|
||||
{
|
||||
this.SetStartValue();
|
||||
this.DesktopLocation = new Point(Desktop.Anchor(this, currentscreen, DesktopAnchor.Top).X, start_stop_y[0]);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Ausrichtungsfehler am Bildschirm", LogClassification.CriticalError,
|
||||
new Exception(string.Format("{0}\n\n{1}", "Der Bildschirm auf dem der GFA-Task ausgerichtet werden soll, konnte nicht gefunden werden.", ex.Message), ex.InnerException));
|
||||
|
||||
//if (Notify.Show("Der ausgewählte Bildschirm konnte nicht gefunden werden. Der GFA-Task wird auf dem Hauptbildschirm dargestellt.\n\n" +
|
||||
// "Um den eigentlichen Bildschirm wiederherzustellen, öffnen Sie die App \"Einstellungen\" in der Menüliste und wählen dort einen geeigneten Bildschirm aus", NotifyButtons.OK, NotifyType.Message, Designer.Notify(300, 200), null, "SelfService").Result == DialogResult.OK)
|
||||
//{
|
||||
// int primary_id = Array.IndexOf(Screen.AllScreens, Screen.AllScreens.First(scr => scr.Primary)) + 1;
|
||||
// this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size;
|
||||
// this.DesktopLocation = Desktop.Anchor(this, primary_id, DesktopAnchor.Top, (int)-XObjects.Delay.StartValue);
|
||||
// Config.User.Screen = Screen.AllScreens[ primary_id -1].DeviceName;
|
||||
// JSON.Save(JSONConfig.User);
|
||||
//}
|
||||
}
|
||||
XObjects.Delay.Decrease();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Lädt die Symbole der internationalen Welttage, abhängig von den aktivierten Welttages-Zeiträumen im Administrationsbereich
|
||||
/// </summary>
|
||||
public void UseNewsFeeds()
|
||||
{
|
||||
// Der Programmname mit dynamischer Versionierung
|
||||
this.Text = $"{InfoClass.Program}";
|
||||
|
||||
// Ist heute mindestens ein internationaler Welttag aktiviert
|
||||
if (Config.NewsFeeds.Exists(this.GetCurrentNewsFeed()))
|
||||
{
|
||||
// Liest alle heutigen internationalen Welttage aus der worldday.json aus
|
||||
var newsfeeds = Config.NewsFeeds.FindAll(this.GetCurrentNewsFeed());
|
||||
newsfeeds.ForEach(newsfeed => this.Text += $" | {newsfeed.Title.Replace("\\n", "\n")}");
|
||||
|
||||
// Sind heute internationale Welttage aktiv, besitzen diese jedoch keine Symbole, dann wird das Grünflächenamt Logo angezeigt
|
||||
if (newsfeeds.All(news => news.Icon == null || news.Icon == ""))
|
||||
{
|
||||
this.Icon = Icon.FromHandle(new Bitmap(Paths.Icons.Directory + @"\System\GFA.png").GetHicon());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Ist heute nur ein internationaler Welttag in der worldday.json Datei aktiv, oder gibt es nur ein Symbol, wird dieses angezeigt
|
||||
if (newsfeeds.Count == 1 || newsfeeds.Count(news => news.Icon != null && news.Icon != "") == 1)
|
||||
{
|
||||
this.Icon = Icon.FromHandle(new Bitmap(Paths.NewsFeeds.Icons.Directory + newsfeeds.Find(w => w.Icon != null && w.Icon != "").Icon).GetHicon());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sind mehrere aktiv, so werden diese in einem Symbol zusammengeführt
|
||||
this.Icon = Icon.FromHandle(newsfeeds.Where(w => w.Icon != null && System.IO.File.Exists(Paths.NewsFeeds.Icons.Directory + w.Icon)).Select(w => new Bitmap(Paths.NewsFeeds.Icons.Directory + w.Icon)).ToArray().Merge(this.Icon.Size, 2).GetHicon());
|
||||
}
|
||||
}
|
||||
}
|
||||
// Sind heute keine internationalen Welttage aktiv, dann wird das Grünflächenamt Logo angezeigt
|
||||
else
|
||||
{
|
||||
this.Text = $"{InfoClass.Program} | Herzlich Willkommen";
|
||||
this.Icon = Icon.FromHandle(new Bitmap(Paths.Icons.Directory + @"\System\GFA.png").GetHicon());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Berechnet einen Schritt um beim Abschluss der Delay Funktion den richtigen Transparenzwert zu erhalten
|
||||
/// </summary>
|
||||
public void SetOpacityStep() =>
|
||||
opacitystep = XObjects.Delay.GetSteps(Config.User.Window.Opacity - .5D);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Definiert die Start- und Stop-Y-Koordinate für das Erscheinen und Ausblenden des GFATask
|
||||
/// </summary>
|
||||
public void SetStartValue()
|
||||
{
|
||||
// Wenn es den Bildschirm nicht gibt, dann soll der Primäre genommen werden,
|
||||
// ansonsten wird geprüft, ob der ausgewählte Bildschirm den obersten Punkt aller Bildschirme enthält.
|
||||
// Wenn nicht, wird der Bildschirm mit dem gerinsten Y-Koordinaten-Wert genutzt
|
||||
|
||||
//if(Config.User.Screen == "DYNAMIC")
|
||||
//{
|
||||
// currentscreen = Screen.FromPoint(Cursor.Position);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
|
||||
if (!Screen.AllScreens.ToList().Exists(scr => scr.DeviceName.Replace(@"\\.\", "") == Config.User.Screen))
|
||||
{
|
||||
currentscreen = Screen.PrimaryScreen;
|
||||
}
|
||||
else
|
||||
{
|
||||
Screen tempscreen = Screen.AllScreens.ToList().Find(scr => scr.DeviceName.Replace(@"\\.\", "") == Config.User.Screen);
|
||||
if (tempscreen.Bounds.Y != Screen.AllScreens.Min(scr => scr.Bounds.Y) && (tempscreen.Bounds.Right <= Screen.PrimaryScreen.Bounds.Left && tempscreen.Bounds.Left <= Screen.PrimaryScreen.Bounds.Right))
|
||||
{
|
||||
currentscreen = Screen.AllScreens.ToList().Find(scr => scr.Bounds.Y == Screen.AllScreens.Min(s => s.Bounds.Y));
|
||||
}
|
||||
else
|
||||
{
|
||||
currentscreen = tempscreen;
|
||||
}
|
||||
}
|
||||
|
||||
//currentscreen = Screen.AllScreens.ToList().Find(scr => scr.DeviceName.Replace(@"\\.\", "") == Config.User.Screen) == null ?
|
||||
//Screen.PrimaryScreen :
|
||||
//Screen.AllScreens.ToList().Find(scr => scr.DeviceName.Replace(@"\\.\", "") == Config.User.Screen).Bounds.Y == Screen.AllScreens.Min(scr => scr.Bounds.Y) ?
|
||||
//Screen.AllScreens.ToList().Find(scr => scr.DeviceName.Replace(@"\\.\", "") == Config.User.Screen) :
|
||||
//Screen.AllScreens.ToList().Find(scr => scr.Bounds.Y == Screen.AllScreens.Min(s => s.Bounds.Y));
|
||||
//}
|
||||
|
||||
start_stop_y = new int[]
|
||||
{
|
||||
Screen.PrimaryScreen.Bounds.Top +currentscreen.Bounds.Top - (Config.User.Window.Size.Height < this.MinimumSize.Height ? this.MinimumSize.Height : this.Height) + this.GripSize +_actionregionheight - this.BorderWidth,
|
||||
Screen.PrimaryScreen.Bounds.Top +currentscreen.Bounds.Top - this.GripSize - (this.BorderWidth == 0 ? 1 : this.BorderWidth)
|
||||
};
|
||||
|
||||
|
||||
//start_stop_y = new int[]
|
||||
//{
|
||||
// (int)Math.Floor((currentscreen.Bounds.Y) * (decimal)Win32API.GetScalingFactor(currentscreen)) - (Config.User.Window.Size.Height < this.MinimumSize.Height ? this.MinimumSize.Height : this.Height) + this.GripSize +_actionregionheight - this.BorderWidth,
|
||||
// (int)Math.Floor((currentscreen.Bounds.Y) * (decimal)Win32API.GetScalingFactor(currentscreen)) - this.GripSize - (this.BorderWidth == 0 ? 1 : this.BorderWidth)
|
||||
//};
|
||||
|
||||
// Eingeklappte Y-Koordinate
|
||||
XObjects.Delay.StartValue = start_stop_y[0];
|
||||
|
||||
// Ausgeklappte Y-Koordinate
|
||||
XObjects.Delay.EndValue = start_stop_y[1];
|
||||
|
||||
this.SetActionRegion();
|
||||
this.SetMaximumSize();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Anhand der Mindesthöhe der AppListPanels Steuerelemente wird mit dieser Methode die Mindesthöhe des GFATask berechnet
|
||||
/// </summary>
|
||||
public void SetMinimumSize()
|
||||
{
|
||||
this.MinimumSize = new Size(200, XObjects.AllAppListPanels.Where(panel => panel.Showing).Sum(panel => panel.IsLast ? panel.MinimumSize.Height : panel.Height) + this.Padding.Vertical + _actionregionheight);
|
||||
this.Size = Config.User.Window.Size.Height < this.MinimumSize.Height ? new Size(Config.User.Window.Size.Width, this.MinimumSize.Height + _actionregionheight) : Config.User.Window.Size;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Richtet sich nach der Auflösung des Bildschirms. Der GFATask kann bis maximal zur Taskleiste, abzüglich der GripSize vergrößert werden
|
||||
/// </summary>
|
||||
public void SetMaximumSize()
|
||||
{
|
||||
try
|
||||
{
|
||||
this.MaximumSize = new Size(currentscreen.WorkingArea.Width - (this.GripSize * 2), start_stop_y[1] + currentscreen.WorkingArea.Height - this.GripSize);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Fehler beim skalieren der maximalen Größe", LogClassification.MediumError, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Darstellung des farbigen Elements, welches im unteren Bereich des GFATask dargestellt wird
|
||||
/// </summary>
|
||||
public void SetActionRegion()
|
||||
{
|
||||
// Erstellt das zu zeichnende farbige Element
|
||||
actionregion = new Rectangle(this.borderbounds.Left, this.borderbounds.Bottom - _actionregionheight + this.BorderWidth, this.borderbounds.Width + this.BorderWidth, _actionregionheight);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Führt das Ein- und Ausblenden des GFATask aus. In der Hook-Klasse wird die Methode angestoßen
|
||||
/// </summary>
|
||||
public void Delay_ValueChanged(object sender, DelayEventArgs e)
|
||||
{
|
||||
switch (e.Direction)
|
||||
{
|
||||
case Delay.Prevent.Increase:
|
||||
this.Invoke(new MethodInvoker(delegate
|
||||
{
|
||||
if (this.DesktopLocation.Y < (int)XObjects.Delay.EndValue - XObjects.Delay.Steps)
|
||||
{
|
||||
this.DesktopLocation = new Point(this.DesktopLocation.X, this.DesktopLocation.Y + (int)Math.Ceiling(e.Step));
|
||||
this.Opacity += opacitystep;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.DesktopLocation = new Point(this.DesktopLocation.X, (int)XObjects.Delay.EndValue);
|
||||
this.Opacity = Config.User.Window.Opacity;
|
||||
}
|
||||
}));
|
||||
break;
|
||||
case Delay.Prevent.Decrease:
|
||||
if (this.Created)
|
||||
{
|
||||
this.Invoke(new MethodInvoker(delegate
|
||||
{
|
||||
if (this.DesktopLocation.Y > (int)XObjects.Delay.StartValue + XObjects.Delay.Steps)
|
||||
{
|
||||
this.DesktopLocation = new Point(this.DesktopLocation.X, this.DesktopLocation.Y - (int)Math.Ceiling(e.Step));
|
||||
this.Opacity -= opacitystep;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.DesktopLocation = new Point(this.DesktopLocation.X, (int)XObjects.Delay.StartValue);
|
||||
this.Opacity = .5;
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
if (e.CurrentCount == XObjects.Delay.MaxCounts)
|
||||
{
|
||||
this.Resizable = true;
|
||||
this.DesktopLocation = new Point(this.DesktopLocation.X, (int)XObjects.Delay.EndValue);
|
||||
}
|
||||
else if (e.CurrentCount == 0)
|
||||
{
|
||||
this.Resizable = false;
|
||||
this.DesktopLocation = new Point(this.DesktopLocation.X, (int)XObjects.Delay.StartValue);
|
||||
this.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Überprüft, ob für heute ein internationaler Welttag in den Neuigkeiten newsfeeds.json vorhanden ist
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private Predicate<Models.NewsFeed> GetCurrentNewsFeed()
|
||||
{
|
||||
return new Predicate<Models.NewsFeed>(feed =>
|
||||
{
|
||||
if (feed.Begin.Day > DateTime.DaysInMonth(DateTime.Now.Year, feed.Begin.Month))
|
||||
{
|
||||
feed.Begin.Day = DateTime.DaysInMonth(DateTime.Now.Year, feed.Begin.Month);
|
||||
JSON.Save(JSONConfig.NewsFeeds);
|
||||
}
|
||||
if (feed.End.Day > DateTime.DaysInMonth(DateTime.Now.Year, feed.End.Month))
|
||||
{
|
||||
feed.End.Day = DateTime.DaysInMonth(DateTime.Now.Year, feed.End.Month);
|
||||
JSON.Save(JSONConfig.NewsFeeds);
|
||||
}
|
||||
return feed.Enable && Verifying.BetweenDate(new DateTime(DateTime.Now.Year, feed.Begin.Month, feed.Begin.Day), new DateTime(DateTime.Now.Year, feed.End.Month, feed.End.Day));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Bei einem Drag'n Drop-Vorgang wird der GFA-Task sofort ausgeklappt
|
||||
/// </summary>
|
||||
/// <param name="drgevent"></param>
|
||||
protected override void OnDragEnter(DragEventArgs drgevent)
|
||||
{
|
||||
XObjects.Delay.Waiting = new Delay.DelayTime(0, Config.User.Delay.Hide);
|
||||
XObjects.Delay.Increase();
|
||||
base.OnDragEnter(drgevent);
|
||||
this.Invalidate();
|
||||
}
|
||||
|
||||
|
||||
protected override void OnSizeChanged(EventArgs e)
|
||||
{
|
||||
this.Update();
|
||||
if (this.Created)
|
||||
XObjects.AllAppListPanels.ForEach(applist => applist.FlowContent.Update());
|
||||
base.OnSizeChanged(e);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Beim Ändern der Schriftart, wird die neue minimale Höhe ermittelt
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
protected override void OnFontChanged(EventArgs e)
|
||||
{
|
||||
base.OnFontChanged(e);
|
||||
this.SetMinimumSize();
|
||||
}
|
||||
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
|
||||
#region Startet die Ladeanimation
|
||||
try
|
||||
{
|
||||
// Animiert das Ladefenster zu Beginn der App. Schließt dieses, sobald in der AppListe all Apps geladen wurden
|
||||
XObjects.LoadingPanel.Location = new Point(this.Padding.Left, this.Padding.Top);
|
||||
XObjects.LoadingPanel.Size = new Size(this.Width - this.Padding.Horizontal, this.Height - this.Padding.Vertical - _actionregionheight);
|
||||
this.Controls.Add(XObjects.LoadingPanel);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Kann Ladeanimation nicht starten", LogClassification.LowError, ex);
|
||||
}
|
||||
#endregion
|
||||
|
||||
this.SetMinimumSize();
|
||||
this.SetStartValue();
|
||||
|
||||
XObjects.FrontEndRefresh = new FrontEndRefresh<GFATaskStream>(Paths.FrontEndRefresh.FullName) { SelfUpdate = false };
|
||||
if(Config.Main.Administration.RemoteFrontEndUpdate)
|
||||
XObjects.FrontEndRefresh.Start();
|
||||
XObjects.FrontEndRefresh.Updated += FrontEndRefreshExecution.Updated;
|
||||
XObjects.FrontEndRefresh.Error += FrontEndRefreshExecution.OnError;
|
||||
}
|
||||
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
base.OnPaint(e);
|
||||
e.Graphics.FillPath(new SolidBrush(Config.Main.Colors.Window.Action), actionregion.ToRoundedRectangle(this.Radius, RectangleCorners.BottomLeft | RectangleCorners.BottomRight));
|
||||
|
||||
//e.Graphics.FillRectangle(Brushes.AliceBlue, RegionBounds);
|
||||
}
|
||||
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
// Beginnt mit dem Vergrößerungsprozess des GFA-Task
|
||||
if (m.Msg == (int)WM.ENTERSIZEMOVE)
|
||||
{
|
||||
XObjects.AllAppListPanels.ForEach(applist => applist.DoubleBuffer(true));
|
||||
XObjects.Delay.Increase();
|
||||
|
||||
}
|
||||
// Beendet den Vergrößerungsprozess des GFA-Task
|
||||
if (m.Msg == (int)WM.EXITSIZEMOVE)
|
||||
{
|
||||
XObjects.AllAppListPanels.ForEach(applist => applist.DoubleBuffer(false));
|
||||
this.DesktopLocation = new Point(Desktop.Anchor(this, currentscreen, DesktopAnchor.Top).X, start_stop_y[1]);
|
||||
//this.Invoke(new MethodInvoker(delegate { this.DesktopAnchor = new Point(Desktop.Anchor(this, DesktopAnchor.Top, -this.GripSize).X, start_stop_y[1]); }));
|
||||
Config.User.Window.Size = this.Size;
|
||||
JSON.Save(JSONConfig.User);
|
||||
|
||||
Accessor.SetLastAppListPanel();
|
||||
this.SetMinimumSize();
|
||||
this.SetStartValue();
|
||||
this.Invalidate(true);
|
||||
}
|
||||
base.WndProc(ref m);
|
||||
}
|
||||
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
if (e.CloseReason == CloseReason.UserClosing)
|
||||
{
|
||||
e.Cancel = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Environment.Exit(Environment.ExitCode);
|
||||
}
|
||||
base.OnFormClosing(e);
|
||||
}
|
||||
|
||||
|
||||
protected override CreateParams CreateParams
|
||||
{
|
||||
get
|
||||
{
|
||||
var cp = base.CreateParams;
|
||||
cp.ExStyle |= (int)WS_EX.WS_EX_TOOLWINDOW | (int)WS_EX.WS_EX_TOPMOST;
|
||||
return cp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/Forms/FormMain.resx
Normal file
120
GFATask/Forms/FormMain.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
1323
GFATask/Forms/FormSettings.Designer.cs
generated
Normal file
1323
GFATask/Forms/FormSettings.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
838
GFATask/Forms/FormSettings.cs
Normal file
838
GFATask/Forms/FormSettings.cs
Normal file
@@ -0,0 +1,838 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public partial class FormSettings : FormEx
|
||||
{
|
||||
/// <summary>
|
||||
/// Gibt den aktuell fokusierten Bildschirm aus, auf dem sich das Einstellungsfenster befindet.
|
||||
/// </summary>
|
||||
Screen currentscreen = null;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Eine Auflistung von gezeichneten Rechtecken, die in Größe, Farbe und Form einem AppButton entsprechen und ringsum um die TestApp angefügt werden
|
||||
/// </summary>
|
||||
Rectangle[] dummyapps = new Rectangle[0];
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Eine Auflistung der veränderten Steuerelemente. Dadurch lassen sich einzelne Änderungen rückgängig machen
|
||||
/// </summary>
|
||||
public List<TableControlChange> ControlChanges { get; } = new List<TableControlChange>();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Erstellt die ToolTips für die Steuerelemente
|
||||
/// </summary>
|
||||
private void SetToolTips()
|
||||
{
|
||||
tooltip.SetDefaultDesign();
|
||||
switch_darkmode.MouseEnter += (sender, e) => tooltip.Show("Die Farben des GFATask werden umgekehrt und Text wird mit weißer Schrift auf schwarzem Hintergrund gezeigt", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switch_group_admin .MouseEnter += (sender, e) => tooltip.Show("Sollen die Apps in der Administrator-Liste gruppiert werden", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switch_show_admin.MouseEnter += (sender, e) => tooltip.Show("Soll die Administrator-Liste angezeigt werden", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switch_group_citrix.MouseEnter += (sender, e) => tooltip.Show("Sollen die Apps in der Citrix-Liste gruppiert werden", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switch_show_citrix.MouseEnter += (sender, e) => tooltip.Show("Soll die Citrix-Liste angezeigt werden", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switch_group_favorites.MouseEnter += (sender, e) => tooltip.Show("Sollen die Apps in der Favoriten-Liste gruppiert werden", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switch_show_favorites.MouseEnter += (sender, e) => tooltip.Show("Soll die Favoriten-Liste angezeigt werden", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switch_group_menu.MouseEnter += (sender, e) => tooltip.Show("Sollen die Apps in der Menü-Liste gruppiert werden", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switch_group_user.MouseEnter += (sender, e) => tooltip.Show("Sollen die Apps in der Apps-Liste gruppiert werden", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switch_show_user.MouseEnter += (sender, e) => tooltip.Show("Soll die Apps-Liste angezeigt werden", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numAppBorder.MouseEnter += (sender, e) => tooltip.Show("Zeichnet einen Rahmen um die Apps", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numAppHeight.MouseEnter += (sender, e) => tooltip.Show("Verändert die Apps in der Höhe", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numAppRadius.MouseEnter += (sender, e) => tooltip.Show("Rundet die App ab", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numAppImageRadius.MouseEnter += (sender, e) => tooltip.Show("Rundet den Symbolhintergrund innerhalb der App ab", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numAppMargin.MouseEnter += (sender, e) => tooltip.Show("Verändert den Abstand zwischen den Apps", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numAppWidth.MouseEnter += (sender, e) => tooltip.Show("Verändert die Apps in der Breite", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numDelayHide.MouseEnter += (sender, e) => tooltip.Show("Wartet die angegebene Zeit in Millisekunden, bis der GFA-Task ausgeblendet wird", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numDelayShow.MouseEnter += (sender, e) => tooltip.Show("Wartet die angegebene Zeit in Millisekunden, bis der GFA-Task eingeblendet wird." +
|
||||
"\nWird ignoriert wenn der GFA-Task per Klick eingeblendet wird", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numDelaySpeed.MouseEnter += (sender, e) => tooltip.Show("Verändert die Geschwindigkeit des GFA-Task die er zum Ein- und Ausblenden benötigt", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numFontSize.MouseEnter += (sender, e) => tooltip.Show("Verändert die Schriftgröße des GFA-Task", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numGrouplistapps.MouseEnter += (sender, e) => tooltip.Show("Wenn eine App-Gruppe geöffnet wird, bestimmt dieser Wert die Anzahl der Apps in einer Zeile.\n" +
|
||||
"Kann vom eigentlichen Wert abweichen, wenn die Anzahl der gruppierten Apps nicht an die angegebene Zahl heranreicht,\n" +
|
||||
"oder die Breite der Apps nicht der Mindestbreite des Gruppenfensters entspricht", sender as Control, new Point(0, (sender as Control).Height));
|
||||
numOpacity.MouseEnter += (sender, e) => tooltip.Show("Verändert die maximale Transparenz des GFA-Task nachdem diese komplett eingeblendet wird", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switchNecessaryClick.MouseEnter += (sender, e) => tooltip.Show("Benötigt zum Anzeigen des GFA-Task einen Mausklick am oberen Bildschirmrand", sender as Control, new Point(0, (sender as Control).Height) );
|
||||
cbAppSorting.MouseEnter += (sender, e) => tooltip.Show("Sortiert die Apps in den Listen nach" +
|
||||
"\n\t- Beliebtheit: Sortiert die Apps nach der Nutzung" +
|
||||
"\n\t- Name: Sortiert die Apps alphabetisch aufsteigend", sender as Control, new Point(0, (sender as Control).Height) );
|
||||
numActionRegionWidth.MouseEnter += (sender, e) => tooltip.Show("Setzt die Breite der Linie, am unteren Rand des GFATask", sender as Control, new Point(0, (sender as Control).Height));
|
||||
cbScreen.MouseEnter += (sender, e) => tooltip.Show("Wählt den Bildschirm aus, auf dem der GFA-Task angezeigt werden soll", sender as Control, new Point(0, (sender as Control).Height));
|
||||
switchOnlyImage.MouseEnter += (sender, e) => tooltip.Show("Die App wird mit Bild, aber ohne Text angezeigt", sender as Control, new Point(0, (sender as Control).Height));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Zeichnet einen weichen transparenten Übergang
|
||||
/// </summary>
|
||||
/// <param name="rec">Der Bereich</param>
|
||||
/// <param name="fromcolor">100% Transparenz</param>
|
||||
/// <param name="tocolor">0% Transparenz</param>
|
||||
/// <param name="wrap">Richtung des Übergangs</param>
|
||||
/// <returns></returns>
|
||||
private LinearGradientBrush SetBrush(Rectangle rec, Color fromcolor, Color tocolor, WrapMode wrap) =>
|
||||
new LinearGradientBrush(new Rectangle(0, 0, rec.Width <= 0 ? 1 : rec.Width, (int)(rec.Height * .5) <= 0 ? 1 : (int)(rec.Height * .5)), fromcolor, tocolor, 0, false) { WrapMode = wrap };
|
||||
|
||||
|
||||
#region Erstellt die Bindings und EventHandler
|
||||
/// <summary>
|
||||
/// Erstellt die Bindings und EventHandler für die Listeneinstellungen
|
||||
/// </summary>
|
||||
private void CreateAppListBindings()
|
||||
{
|
||||
switch_group_menu.Checked = Config.User.Lists.Menu.Grouping;
|
||||
switch_group_menu.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Lists.Menu, "Grouping", (sender as SwitchButton), (sender as SwitchButton).Checked, DoIt_Menu_Grouping);
|
||||
};
|
||||
|
||||
switch_group_citrix.Checked = Config.User.Lists.Citrix.Grouping;
|
||||
switch_group_citrix.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Lists.Citrix, "Grouping", (sender as SwitchButton), (sender as SwitchButton).Checked, DoIt_Citrix_Grouping);
|
||||
};
|
||||
|
||||
switch_show_citrix.Checked = Config.User.Lists.Citrix.Show;
|
||||
switch_show_citrix.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Lists.Citrix, "Show", (sender as SwitchButton), (sender as SwitchButton).Checked, DoIt_Citrix_Showing);
|
||||
};
|
||||
|
||||
switch_group_favorites.Checked = Config.User.Lists.Favorites.Grouping;
|
||||
switch_group_favorites.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Lists.Favorites, "Grouping", (sender as SwitchButton), (sender as SwitchButton).Checked, DoIt_Favorites_Grouping);
|
||||
};
|
||||
|
||||
switch_show_favorites.Checked = Config.User.Lists.Favorites.Show;
|
||||
switch_show_favorites.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Lists.Favorites, "Show", (sender as SwitchButton), (sender as SwitchButton).Checked, DoIt_Favorites_Showing);
|
||||
};
|
||||
|
||||
Task.Run(async delegate
|
||||
{
|
||||
switch_group_admin.Enabled = (await XObjects.IsAdmin);
|
||||
switch_show_admin.Enabled = (await XObjects.IsAdmin);
|
||||
|
||||
switch_group_admin.Checked = Config.User.Lists.Admin.Grouping;
|
||||
switch_group_admin.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Lists.Admin, "Grouping", (sender as SwitchButton), (sender as SwitchButton).Checked, DoIt_Admin_Grouping);
|
||||
};
|
||||
|
||||
switch_show_admin.Checked = Config.User.Lists.Admin.Show;
|
||||
switch_show_admin.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Lists.Admin, "Show", (sender as SwitchButton), (sender as SwitchButton).Checked, DoIt_Admin_Showing);
|
||||
};
|
||||
});
|
||||
|
||||
switch_group_user.Checked = Config.User.Lists.User.Grouping;
|
||||
switch_group_user.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Lists.User, "Grouping", (sender as SwitchButton), (sender as SwitchButton).Checked, DoIt_User_Grouping);
|
||||
};
|
||||
|
||||
switch_show_user.Checked = Config.User.Lists.User.Show;
|
||||
switch_show_user.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Lists.User, "Show", (sender as SwitchButton), (sender as SwitchButton).Checked, DoIt_User_Showing);
|
||||
};
|
||||
|
||||
numGrouplistapps.Value = Config.User.GroupListColumnCount;
|
||||
numGrouplistapps.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User, "GroupListColumnCount", (sender as NumericEx), (int)(sender as NumericEx).Value, DoIt_GroupListColumnCount);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Erstellt die Bindings und EventHandler für die erweiterten Einstellungen
|
||||
/// </summary>
|
||||
private void CreateExtendedBindings()
|
||||
{
|
||||
cbAppSorting.DataSource = new List<object>(new object[] { new { name = "Name", value = false }, new { name = "Beliebtheit", value = true } });
|
||||
cbAppSorting.DisplayMember = "name";
|
||||
cbAppSorting.ValueMember = "value";
|
||||
cbAppSorting.SelectedValue = Config.User.Prevalence;
|
||||
cbAppSorting.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.User, "Prevalence", cbAppSorting, (bool)cbAppSorting.SelectedValue, DoIt_Prevalence); };
|
||||
|
||||
numOpacity.Value = (decimal)Config.User.Window.Opacity;
|
||||
numOpacity.ValueChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.User.Window, "Opacity", numOpacity, (double)(sender as NumericUpDown).Value, DoIt_Opacity); };
|
||||
|
||||
numActionRegionWidth.Value = (decimal)Config.User.Window.ActionRegionHeight;
|
||||
numActionRegionWidth.ValueChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.User.Window, "ActionRegionHeight", numActionRegionWidth, (int)(sender as NumericUpDown).Value, DoIt_ActionRegionWidth); };
|
||||
|
||||
numFontSize.Value = (decimal)Config.User.Window.FontSize;
|
||||
numFontSize.ValueChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.User.Window, "FontSize", numFontSize, (float)(sender as NumericUpDown).Value, DoIt_FontSize); } ;
|
||||
|
||||
switch_darkmode.Checked = Config.User.DarkMode;
|
||||
switch_darkmode.CheckStateChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.User, "DarkMode", switch_darkmode, bool.Parse(switch_darkmode.Checked.ToString()), DoIt_DarkMode); };
|
||||
|
||||
|
||||
this.LoadDisplays();
|
||||
cbScreen.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.User, "Screen", cbScreen, cbScreen.Text.Replace(" [Dieser Monitor]","").Replace(" ",""), DoIt_ScreenChange); };
|
||||
cbScreen.DropDown += (sender , e) => {
|
||||
if (this.Created)
|
||||
cbScreen.SelectedIndex = Screen.AllScreens.Select(scr => scr.DeviceName.Substring(scr.DeviceName.LastIndexOf("\\") + 1)).ToList().FindIndex(scr => scr == Config.User.Screen);
|
||||
};
|
||||
cbScreen.SelectedIndex = Screen.AllScreens.Select(scr => scr.DeviceName.Substring(scr.DeviceName.LastIndexOf("\\") + 1)).ToList().FindIndex(scr => scr == Config.User.Screen);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Erstellt die Bindings und EventHandler für die Verzögerungseinstellungen
|
||||
/// </summary>
|
||||
public void CreateMouseFunctions()
|
||||
{
|
||||
switchNecessaryClick.Checked = Config.User.NecessaryClick;
|
||||
switchNecessaryClick.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User, "NecessaryClick", switchNecessaryClick, switchNecessaryClick.Checked, DoIt_NecessaryClick);
|
||||
};
|
||||
|
||||
numDelayShow.Value = Config.User.NecessaryClick ? 0 : (decimal)Config.User.Delay.Show;
|
||||
numDelayShow.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Delay, "Show", numDelayShow, (float)(sender as NumericUpDown).Value, DoIt_DelayShow);
|
||||
};
|
||||
|
||||
numDelayHide.Value = (decimal)Config.User.Delay.Hide;
|
||||
numDelayHide.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Delay, "Hide", (Control)sender, (float)(sender as NumericUpDown).Value, DoIt_DelayHide);
|
||||
};
|
||||
|
||||
numDelaySpeed.Value = Config.User.Delay.Speed;
|
||||
numDelaySpeed.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Delay, "Speed", numDelaySpeed, (int)(sender as NumericUpDown).Value, DoIt_Speed);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Erstellt die Bindings und EventHandler für die App-Darstellung
|
||||
/// </summary>
|
||||
private void CreateDeciptionBindings()
|
||||
{
|
||||
abtnTestApp.ActualWidth = Config.User.Apps.Size.Width;
|
||||
abtnTestApp.SizeChanged += abtnTestApp_SizeChanged;
|
||||
abtnTestApp.ImageOnly = Config.User.Apps.ImageOnly;
|
||||
abtnTestApp.Invalidate();
|
||||
|
||||
switchOnlyImage.Checked = Config.User.Apps.ImageOnly;
|
||||
switchOnlyImage.CheckStateChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created)
|
||||
{
|
||||
numAppWidth.Enabled = !switchOnlyImage.Checked;
|
||||
abtnTestApp.ImageOnly = switchOnlyImage.Checked;
|
||||
this.SetTestAppPanel();
|
||||
|
||||
XObjects.PreChanging.Add(Config.User.Apps, "ImageOnly", (Control)sender, switchOnlyImage.Checked, DoIt_AppImageOnly);
|
||||
}
|
||||
};
|
||||
|
||||
numAppWidth.Enabled = !switchOnlyImage.Checked;
|
||||
numAppWidth.Value = Config.User.Apps.Size.Width;
|
||||
numAppWidth.Maximum = panelMargin.Width - 2;
|
||||
numAppWidth.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created && !Config.User.Apps.ImageOnly)
|
||||
{
|
||||
abtnTestApp.Width = (int)numAppWidth.Value;
|
||||
abtnTestApp.ActualWidth = (int)numAppWidth.Value;
|
||||
XObjects.PreChanging.Add(Config.User.Apps.Size, "Width", (Control)sender, (int)numAppWidth.Value, DoIt_AppWidth);
|
||||
}
|
||||
};
|
||||
|
||||
numAppHeight.Value = Config.User.Apps.Size.Height;
|
||||
numAppHeight.Maximum = panelMargin.Height - 3;
|
||||
numAppHeight.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created)
|
||||
{
|
||||
abtnTestApp.Height = (int)numAppHeight.Value;
|
||||
XObjects.PreChanging.Add(Config.User.Apps.Size, "Height", (Control)sender, (int)numAppHeight.Value, DoIt_AppHeight);
|
||||
}
|
||||
};
|
||||
|
||||
numAppBorder.Value = Config.User.Apps.Border;
|
||||
numAppBorder.ValueChanged += NumAppBorder_ValueChanged;
|
||||
numAppBorder.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Apps, "Border", (Control)sender, (int)numAppBorder.Value, DoIt_AppBorder);
|
||||
};
|
||||
|
||||
numAppRadius.Value = Config.User.Apps.Radius.Button;
|
||||
numAppRadius.ValueChanged += NumAppRadius_ValueChanged;
|
||||
numAppRadius.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Apps.Radius, "Button", (Control)sender, (int)numAppRadius.Value, DoIt_AppRadius);
|
||||
};
|
||||
|
||||
numAppImageRadius.Value = Config.User.Apps.Radius.Button;
|
||||
numAppImageRadius.ValueChanged += NumAppImageRadius_ValueChanged;
|
||||
numAppImageRadius.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Apps.Radius, "Image", (Control)sender, (int)numAppImageRadius.Value, DoIt_AppImageRadius);
|
||||
};
|
||||
|
||||
numAppMargin.Value = Config.User.Apps.Margin;
|
||||
numAppMargin.ValueChanged += NumAppMargin_ValueChanged;
|
||||
numAppMargin.ValueChanged += (sender, e) =>
|
||||
{
|
||||
if (this.Created) XObjects.PreChanging.Add(Config.User.Apps, "Margin", (Control)sender, (int)numAppMargin.Value, DoIt_AppMargin);
|
||||
};
|
||||
|
||||
panelMargin.Paint += PanelMargin_Paint;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region DoIt Methoden
|
||||
private void DoIt_Prevalence(object value)
|
||||
{
|
||||
Config.User.Prevalence = (bool)value;
|
||||
XObjects.AllAppListPanels.ForEach(panel =>
|
||||
{
|
||||
Comparer.SortAllButtons(panel.FlowContent.Controls, Config.User.Prevalence);
|
||||
});
|
||||
}
|
||||
|
||||
private void DoIt_Opacity(object value)
|
||||
{
|
||||
Config.User.Window.Opacity = (double)value;
|
||||
Config.User.Window.Size = Forms.Main.Size;
|
||||
Forms.Main.Opacity = (double)value;
|
||||
Forms.Main.SetOpacityStep();
|
||||
}
|
||||
|
||||
private void DoIt_ActionRegionWidth(object value)
|
||||
{
|
||||
Config.User.Window.ActionRegionHeight = (int)value;
|
||||
Forms.Main.ActionRegionHeight = Config.User.Window.ActionRegionHeight;
|
||||
Forms.Main.SetStartValue();
|
||||
Forms.Main.SetOpacityStep();
|
||||
XObjects.Delay.Increase();
|
||||
}
|
||||
|
||||
|
||||
private void DoIt_FontSize(object value)
|
||||
{
|
||||
try
|
||||
{
|
||||
Config.User.Window.FontSize = Convert.ToSingle(value);
|
||||
Forms.Administration.SetDefaultDesign();
|
||||
Forms.AppButtonGroup.SetDefaultDesign();
|
||||
Forms.AppCreator.SetDefaultDesign();
|
||||
Forms.Groups.SetDefaultDesign();
|
||||
Forms.Settings.SetDefaultDesign();
|
||||
Task.Run(delegate
|
||||
{
|
||||
Forms.Main.Invoke(new MethodInvoker(delegate
|
||||
{
|
||||
Forms.Main.SetDefaultDesign();
|
||||
Win32API.SendMessage(Forms.Main.Handle, (int)WM.EXITSIZEMOVE, 0, 0);
|
||||
|
||||
Forms.Main.SetOpacityStep();
|
||||
Forms.Main.Invalidate(true);
|
||||
}));
|
||||
});
|
||||
XObjects.AllAppListPanels.ForEach(panel => panel.Invalidate(true));
|
||||
|
||||
Config.User.Window.Size = Forms.Main.Size;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.EventLog.Write("Fehlerhaft Einstellung - FontSize", LogClassification.LowError, ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void DoIt_DarkMode(object value)
|
||||
{
|
||||
typeof(Forms).GetProperties().ToList().ForEach(prop =>
|
||||
{
|
||||
FormEx f = (FormEx)prop.GetValue(typeof(Forms));
|
||||
f.SetDefaultDesign();
|
||||
});
|
||||
}
|
||||
|
||||
private void DoIt_ScreenChange(object value)
|
||||
{
|
||||
Config.User.Screen = value.ToString();
|
||||
Accessor.SetLastAppListPanel();
|
||||
Forms.Main.SetMinimumSize();
|
||||
Forms.Main.SetStartValue();
|
||||
Forms.Main.DesktopAlign();
|
||||
}
|
||||
|
||||
private void DoIt_GroupListColumnCount(object value)
|
||||
{
|
||||
Config.User.GroupListColumnCount = (int)value;
|
||||
//Config.User = JSON.Read<Models.Config.User>(Paths.UserConfig.FullName);
|
||||
}
|
||||
|
||||
private void DoIt_Menu_Grouping(object value) =>
|
||||
Creator.AppListPanel(Accessor.GetAppListPanel(AppType.Menu), Accessor.GetAppList(AppType.Menu));
|
||||
|
||||
private void DoIt_Citrix_Grouping(object value) =>
|
||||
Creator.AppListPanel(Accessor.GetAppListPanel(AppType.Citrix), Accessor.GetAppList(AppType.Citrix));
|
||||
|
||||
private void DoIt_Favorites_Grouping(object value) =>
|
||||
Creator.AppListPanel(Accessor.GetAppListPanel(AppType.Favorites), Accessor.GetAppList(AppType.Favorites));
|
||||
|
||||
private void DoIt_Admin_Grouping(object value) =>
|
||||
Creator.AppListPanel(Accessor.GetAppListPanel(AppType.Admin), Accessor.GetAppList(AppType.Admin));
|
||||
|
||||
private void DoIt_User_Grouping(object value) =>
|
||||
Creator.AppListPanel(Accessor.GetAppListPanel(AppType.User), Accessor.GetAppList(AppType.User));
|
||||
|
||||
private void DoIt_Citrix_Showing(object value)
|
||||
{
|
||||
Accessor.GetAppListPanel(AppType.Citrix).Showing = (bool)value;
|
||||
Accessor.SetLastAppListPanel();
|
||||
}
|
||||
|
||||
private void DoIt_Favorites_Showing(object value)
|
||||
{
|
||||
Accessor.GetAppListPanel(AppType.Favorites).Showing = (bool)value;
|
||||
Accessor.SetLastAppListPanel();
|
||||
}
|
||||
|
||||
private void DoIt_Admin_Showing(object value)
|
||||
{
|
||||
Accessor.GetAppListPanel(AppType.Admin).Showing = (bool)value;
|
||||
Accessor.SetLastAppListPanel();
|
||||
}
|
||||
|
||||
private void DoIt_User_Showing(object value)
|
||||
{
|
||||
Accessor.GetAppListPanel(AppType.User).Showing = (bool)value;
|
||||
Accessor.SetLastAppListPanel();
|
||||
}
|
||||
|
||||
private void DoIt_Speed(object value)
|
||||
{
|
||||
XObjects.Delay.Reset(Config.User.Delay.Show, Config.User.Delay.Hide, XObjects.Delay.StartValue, XObjects.Delay.EndValue, (int)numDelaySpeed.Value);
|
||||
Forms.Main.SetOpacityStep();
|
||||
Win32API.SendMessage(Forms.Main.Handle, (int)WM.EXITSIZEMOVE, 0, 0);
|
||||
}
|
||||
|
||||
private void DoIt_NecessaryClick(object value) =>
|
||||
Forms.Main.SetActionRegion();
|
||||
|
||||
|
||||
private void DoIt_DelayShow(object value)
|
||||
{
|
||||
XObjects.Delay.Reset((float)value, Config.User.Delay.Hide, XObjects.Delay.StartValue, XObjects.Delay.EndValue, Config.User.Delay.Speed);
|
||||
}
|
||||
|
||||
private void DoIt_DelayHide(object value)
|
||||
{
|
||||
XObjects.Delay.Reset(Config.User.Delay.Show, (float)value, XObjects.Delay.StartValue, XObjects.Delay.EndValue, Config.User.Delay.Speed);
|
||||
}
|
||||
|
||||
private void DoIt_AppBorder(object value)
|
||||
{
|
||||
Config.User.Apps.Border = (int)value;
|
||||
typeof(Forms).GetProperties().ToList().ForEach(prop =>
|
||||
{
|
||||
FormEx f = (FormEx)prop.GetValue(typeof(Forms));
|
||||
f.SetDefaultDesign();
|
||||
});
|
||||
XObjects.AllAppListPanels.ForEach(panel =>
|
||||
panel.FlowContent.Controls.OfType<AppListButton>().ToList().ForEach(button => button.BorderSize = (int)value));
|
||||
}
|
||||
|
||||
private void DoIt_AppRadius(object value)
|
||||
{
|
||||
Config.User.Apps.Radius.Button = (int)value;
|
||||
this.SetDefaultDesign();
|
||||
XObjects.AllAppListPanels.ForEach(panel =>
|
||||
panel.FlowContent.Controls.OfType<AnimationButton>().ToList().ForEach(button => button.Radius = (int)value));
|
||||
Forms.Administration.SetDefaultDesign();
|
||||
}
|
||||
|
||||
private void DoIt_AppImageRadius(object value)
|
||||
{
|
||||
Config.User.Apps.Radius.Image = (int)value;
|
||||
this.SetDefaultDesign();
|
||||
XObjects.AllAppListPanels.ForEach(panel =>
|
||||
panel.FlowContent.Controls.OfType<AnimationButton>().ToList().ForEach(button => button.ImageRadius = (int)value));
|
||||
Forms.Administration.SetDefaultDesign();
|
||||
}
|
||||
|
||||
private void DoIt_AppMargin(object value)
|
||||
{
|
||||
Config.User.Apps.Margin = (int)value;
|
||||
this.SetDefaultDesign();
|
||||
XObjects.AllAppListPanels.ForEach(panel =>
|
||||
panel.FlowContent.Controls.OfType<AnimationButton>().ToList().ForEach(button => button.Margin = new Padding((int)value)));
|
||||
Forms.Administration.SetDefaultDesign();
|
||||
}
|
||||
|
||||
private void DoIt_AppImageOnly(object value)
|
||||
{
|
||||
this.SetDefaultDesign();
|
||||
XObjects.AllAppListPanels.ForEach(panel =>
|
||||
|
||||
panel.FlowContent.Controls.OfType<AppListButton>().ToList().ForEach(button =>
|
||||
{
|
||||
if (button.GetType() == typeof(GroupButton))
|
||||
{
|
||||
((GroupButton)button).ContainedAppButtons.ToList().ForEach(cbtn =>
|
||||
{
|
||||
cbtn.ImageOnly = (bool)value;
|
||||
cbtn.ImageMargin = (bool)value ? 0 : 3;
|
||||
cbtn.ImageAutoSize = ImageAutoSizeDirection.Height;
|
||||
cbtn.Invalidate();
|
||||
});
|
||||
}
|
||||
button.ImageOnly = (bool)value;
|
||||
button.ImageMargin = (bool)value ? 0 : 3;
|
||||
button.ImageAutoSize = ImageAutoSizeDirection.Height;
|
||||
button.Invalidate();
|
||||
}));
|
||||
Forms.Administration.SetDefaultDesign();
|
||||
}
|
||||
|
||||
private void DoIt_AppWidth(object value)
|
||||
{
|
||||
if (!switchOnlyImage.Checked)
|
||||
Config.User.Apps.Size = new Size((int)value, Config.User.Apps.Size.Height);
|
||||
this.SetDefaultDesign();
|
||||
XObjects.AllAppListPanels.ForEach(panel =>
|
||||
panel.FlowContent.Controls.OfType<AppListButton>().ToList().ForEach(button =>
|
||||
{
|
||||
if(button.GetType() == typeof(GroupButton))
|
||||
{
|
||||
((GroupButton)button).ContainedAppButtons.ToList().ForEach(cbtn =>
|
||||
{
|
||||
cbtn.ActualWidth = (int)value;
|
||||
cbtn.Width = (int)value;
|
||||
cbtn.SetDefaultDesign();
|
||||
});
|
||||
}
|
||||
button.ActualWidth = (int)value;
|
||||
button.Width = (int)value;
|
||||
button.SetDefaultDesign();
|
||||
}));
|
||||
|
||||
if (Forms.AppButtonGroup.Visible)
|
||||
Forms.AppButtonGroup.Sizing();
|
||||
|
||||
Forms.Administration.SetDefaultDesign();
|
||||
}
|
||||
|
||||
private void DoIt_AppHeight(object value)
|
||||
{
|
||||
Config.User.Apps.Size = new Size(Config.User.Apps.Size.Width, (int)value);
|
||||
this.SetDefaultDesign();
|
||||
XObjects.AllAppListPanels.ForEach(panel =>
|
||||
{
|
||||
panel.FlowContent.Controls.OfType<AppListButton>().ToList().ForEach(button => button.Height = (int)value);
|
||||
panel.FlowContent.Controls.OfType<GroupButton>().ToList().ForEach(button => button.ContainedAppButtons.ToList().ForEach(cbtn => cbtn.Height = (int)value));
|
||||
});
|
||||
|
||||
if (Forms.AppButtonGroup.Visible)
|
||||
Forms.AppButtonGroup.Sizing();
|
||||
|
||||
Forms.Administration.SetDefaultDesign();
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
private void SetTestAppPanel()
|
||||
{
|
||||
abtnTestApp.Size = switchOnlyImage.Checked ? new Size((int)numAppHeight.Value, (int)numAppHeight.Value) : Config.User.Apps.Size;
|
||||
abtnTestApp.Animation = true;
|
||||
abtnTestApp.Location = new Point((panelMargin.Width / 2) - (abtnTestApp.Width / 2), (panelMargin.Height / 2) - (abtnTestApp.Height / 2));
|
||||
abtnTestApp.AnimationRegion = AnimationRgn.Both;
|
||||
abtnTestApp.ImageMargin = switchOnlyImage.Checked ? 0 : 3;
|
||||
abtnTestApp.ImageAutoSize = ImageAutoSizeDirection.Height;
|
||||
this.InvalidateDummyApps();
|
||||
}
|
||||
|
||||
public void LoadDisplays()
|
||||
{
|
||||
cbScreen.DataSource = Screen.AllScreens.Select(scr => new { key = Array.IndexOf(Screen.AllScreens, scr) + 1, value = $"{scr.DeviceName.Substring(scr.DeviceName.LastIndexOf("\\") + 1)} {(scr.Bounds.Contains(this.Bounds.Location) ? "[Dieser Monitor]" : "")}" }).ToList();
|
||||
// Fügt das Element DYNAMIC hinzu, was bewirkt, dass der GFATask an dem Bildschirm angeheftet wird, auf dem sich der Mauszeiger befindet - Hat noch nicht so richtig funktioniert
|
||||
//cbScreen.DataSource = Screen.AllScreens.Select(scr => new { key = Array.IndexOf(Screen.AllScreens, scr) + 1, value = $"{scr.DeviceName.Substring(scr.DeviceName.LastIndexOf("\\") + 1)} {(scr.Bounds.Contains(this.Bounds.Location) ? "[Dieser Monitor]" : "")}" }).Union(new[] { new { key = -2, value = "DYNAMIC" } }).ToList();
|
||||
cbScreen.DisplayMember = "Value";
|
||||
cbScreen.ValueMember = "Key";
|
||||
}
|
||||
|
||||
public FormSettings()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.SetDefaultDesign();
|
||||
|
||||
this.CreateAppListBindings();
|
||||
this.CreateExtendedBindings();
|
||||
this.CreateDeciptionBindings();
|
||||
this.CreateMouseFunctions();
|
||||
this.SetTestAppPanel();
|
||||
|
||||
abtnAnwenden.TextAlign = ContentAlignment.MiddleCenter;
|
||||
abtnSubmit.TextAlign = ContentAlignment.MiddleCenter;
|
||||
abtnVerwerfen.TextAlign = ContentAlignment.MiddleCenter;
|
||||
|
||||
this.Icon = Icon.FromHandle(new Bitmap(File.Open(Paths.Icons.Directory + "optionen.png", FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete)).GetHicon());
|
||||
this.DesktopAnchor(DesktopAnchor.Center, this.GripSize);
|
||||
|
||||
tableGeneral.Controls.Cast<Control>().Where(ctl => ctl.GetType() != typeof(Label) && ctl.GetType() != typeof(AnimationButton)).ToList().ForEach(ctl =>
|
||||
{
|
||||
if (typeof(NumericEx) == ctl.GetType())
|
||||
{
|
||||
(ctl as NumericEx).ValueChanged += (s, evt) =>
|
||||
{
|
||||
AddResetButton(ctl);
|
||||
};
|
||||
}
|
||||
else if (typeof(SwitchButton) == ctl.GetType())
|
||||
{
|
||||
(ctl as SwitchButton).CheckStateChanged += (s, evt) =>
|
||||
{
|
||||
AddResetButton(ctl);
|
||||
};
|
||||
}
|
||||
else if (typeof(ListBox) == ctl.GetType())
|
||||
{
|
||||
(ctl as ListBox).SelectedIndexChanged += (s, evt) =>
|
||||
{
|
||||
AddResetButton(ctl);
|
||||
};
|
||||
}
|
||||
else if (typeof(ComboBox) == ctl.GetType())
|
||||
{
|
||||
(ctl as ComboBox).SelectionChangeCommitted += (s, evt) =>
|
||||
{
|
||||
AddResetButton(ctl);
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
label3.Paint += Designer.DrawHeaderLabel;
|
||||
label5.Paint += Designer.DrawHeaderLabel;
|
||||
label7.Paint += Designer.DrawHeaderLabel;
|
||||
label21.Paint += Designer.DrawHeaderLabel;
|
||||
this.InvalidateDummyApps();
|
||||
this.SetToolTips();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Fügt der "Zurücksetzen"-Auflistung das Steuerelement hinzu, damit der alte Wert wiederhergestellt werden kann
|
||||
/// </summary>
|
||||
/// <param name="control"></param>
|
||||
private void AddResetButton(Control control)
|
||||
{
|
||||
if (!this.ControlChanges.Select(change => change.Control).Contains(control))
|
||||
{
|
||||
TableControlChange change = new TableControlChange(tableGeneral, control.Location, 25);
|
||||
change.Click += (sender, e) =>
|
||||
{
|
||||
XObjects.PreChanging.Reset(change.Control);
|
||||
(sender as TableControlChange).Clear();
|
||||
this.ControlChanges.Remove(change);
|
||||
tableGeneral.Invalidate();
|
||||
};
|
||||
this.ControlChanges.Add(change);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Zeichnet die umliegenden AppButtons im Test-Panel neu
|
||||
/// </summary>
|
||||
private void InvalidateDummyApps()
|
||||
{
|
||||
int margin = (int)(numAppMargin.Value + (numAppMargin.Value == 0 ? 0 : 3));
|
||||
Size size = new Size(abtnTestApp.ClientSize.Width - 1, abtnTestApp.ClientSize.Height - 1);
|
||||
dummyapps = new Rectangle[]
|
||||
{
|
||||
// Left
|
||||
new Rectangle(new Point(abtnTestApp.Location.X - abtnTestApp.Width - margin , abtnTestApp.Location.Y ), size),
|
||||
// TopLeft
|
||||
new Rectangle(new Point(abtnTestApp.Location.X - abtnTestApp.Width - margin , abtnTestApp.Location.Y - abtnTestApp.Height - margin), size ),
|
||||
// Top
|
||||
new Rectangle(new Point(abtnTestApp.Location.X , abtnTestApp.Location.Y - abtnTestApp.Height - margin), size ),
|
||||
// TopRight
|
||||
new Rectangle(new Point(abtnTestApp.Location.X + abtnTestApp.Width + margin , abtnTestApp.Location.Y - abtnTestApp.Height - margin), size ),
|
||||
// Right
|
||||
new Rectangle(new Point(abtnTestApp.Location.X + abtnTestApp.Width + margin , abtnTestApp.Location.Y ), size ),
|
||||
// BottomRight
|
||||
new Rectangle(new Point(abtnTestApp.Location.X + abtnTestApp.Width + margin , abtnTestApp.Location.Y + abtnTestApp.Height + margin), size ),
|
||||
// Bottom
|
||||
new Rectangle(new Point(abtnTestApp.Location.X , abtnTestApp.Location.Y + abtnTestApp.Height + margin), size ),
|
||||
// BottomLeft
|
||||
new Rectangle(new Point(abtnTestApp.Location.X - abtnTestApp.Width - margin , abtnTestApp.Location.Y + abtnTestApp.Height + margin), size ),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Übernimmt alle vorläufigen Speicherungen in die JSON-Config
|
||||
/// </summary>
|
||||
/// <param name="json">Gibt die JSON-Config Datei an</param>
|
||||
private void SaveAll(JSONConfig json)
|
||||
{
|
||||
XObjects.PreChanging.CommitAll();
|
||||
this.ControlChanges.ForEach(change => change.Clear());
|
||||
this.ControlChanges.Clear();
|
||||
JSON.Save(json);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Leert die vorläufigen Speicherungen aus der Auflistung
|
||||
/// </summary>
|
||||
private void ResetAll()
|
||||
{
|
||||
XObjects.PreChanging.ResetAll();
|
||||
this.ControlChanges.ForEach(change => change.Clear());
|
||||
this.ControlChanges.Clear();
|
||||
tableGeneral.Invalidate();
|
||||
}
|
||||
|
||||
|
||||
protected override void OnShown(EventArgs e)
|
||||
{
|
||||
base.OnShown(e);
|
||||
// Fügt der Auflistung der vorläufigen Änderungen die aktuellen Anfangswerte hinzu, damit diese wiederhergestellt werden können
|
||||
XObjects.PreChanging.GetTemps(Accumulations.Controls(this));
|
||||
}
|
||||
|
||||
protected override void OnLocationChanged(EventArgs e)
|
||||
{
|
||||
base.OnLocationChanged(e);
|
||||
if (currentscreen != null || Screen.FromPoint(this.DesktopLocation) != currentscreen)
|
||||
{
|
||||
this.LoadDisplays();
|
||||
}
|
||||
}
|
||||
|
||||
private void NumAppBorder_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!this.Created) return;
|
||||
this.InvalidateDummyApps();
|
||||
abtnTestApp.BorderSize = (int)numAppBorder.Value;
|
||||
panelMargin.Invalidate();
|
||||
}
|
||||
|
||||
private void NumAppRadius_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!this.Created) return;
|
||||
this.InvalidateDummyApps();
|
||||
abtnTestApp.Radius = (int)numAppRadius.Value;
|
||||
panelMargin.Invalidate();
|
||||
}
|
||||
|
||||
private void NumAppImageRadius_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!this.Created) return;
|
||||
this.InvalidateDummyApps();
|
||||
abtnTestApp.ImageRadius = (int)numAppImageRadius.Value;
|
||||
panelMargin.Invalidate();
|
||||
}
|
||||
|
||||
private void NumAppMargin_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!this.Created) return;
|
||||
this.InvalidateDummyApps();
|
||||
panelMargin.Invalidate();
|
||||
}
|
||||
|
||||
private void PanelMargin_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
int border = (int)numAppBorder.Value;
|
||||
int margin = (int)numAppMargin.Value * 2;
|
||||
|
||||
dummyapps.ToList().ForEach(dummyapp =>
|
||||
{
|
||||
e.Graphics.FillPath(new SolidBrush(this.BackColor), dummyapp.ToRoundedRectangle(abtnTestApp.Radius, RectangleCorners.All));
|
||||
e.Graphics.DrawPath(new Pen(border == 0 ? Color.Empty : Config.Main.Colors.Apps.Default.Border, border) { Alignment = PenAlignment.Outset }, dummyapp.ToRoundedRectangle(abtnTestApp.Radius, RectangleCorners.All));
|
||||
e.Graphics.DrawString("Test App", abtnTestApp.Font, new SolidBrush(abtnTestApp.ForeColor), dummyapp, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
||||
});
|
||||
|
||||
e.Graphics.FillRectangle(this.SetBrush(e.ClipRectangle, this.BackColor, Color.FromArgb(0, 0, 0, 0), WrapMode.Tile), new Rectangle(e.ClipRectangle.Location, new Size(e.ClipRectangle.Width / 2, e.ClipRectangle.Height)));
|
||||
e.Graphics.FillRectangle(this.SetBrush(e.ClipRectangle, Color.FromArgb(0, 0, 0, 0), this.BackColor, WrapMode.TileFlipX), new Rectangle(new Point(e.ClipRectangle.X + e.ClipRectangle.Width / 2, e.ClipRectangle.Y), new Size(e.ClipRectangle.Width / 2, e.ClipRectangle.Height)));
|
||||
|
||||
if (border > 0 && margin > 0)
|
||||
{
|
||||
e.Graphics.DrawPath(new Pen(Color.Red, 2),
|
||||
new Rectangle(abtnTestApp.Right - border - (margin == 0 ? border : margin), abtnTestApp.Bottom - border - margin, (margin * 3) + (border * 3), (margin * 3) + (border * 3)).ToRoundedRectangle(border + margin, RectangleCorners.All));
|
||||
}
|
||||
}
|
||||
|
||||
private void abtnTestApp_SizeChanged(object sender, EventArgs e)
|
||||
{
|
||||
var _this = sender as AppListButton;
|
||||
//if (!switchOnlyImage.Checked)
|
||||
// numAppWidth.Value = _this.Width;
|
||||
//else
|
||||
// numAppWidth.Value = Config.User.Apps.Size.Width;
|
||||
numAppHeight.Value = (decimal)_this.Height;
|
||||
|
||||
_this.Width = _this.ImageOnly ? _this.Height : _this.ActualWidth;
|
||||
|
||||
this.InvalidateDummyApps();
|
||||
panelMargin.Invalidate();
|
||||
}
|
||||
|
||||
protected override void OnClosing(CancelEventArgs e)
|
||||
{
|
||||
this.ResetAll();
|
||||
this.Visible = false;
|
||||
e.Cancel = true;
|
||||
base.OnClosing(e);
|
||||
}
|
||||
|
||||
protected override void OnVisibleChanged(EventArgs e)
|
||||
{
|
||||
base.OnVisibleChanged(e);
|
||||
if (this.Visible)
|
||||
XObjects.Delay.Increase();
|
||||
}
|
||||
|
||||
private void abtnAnwenden_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.SaveAll(JSONConfig.User);
|
||||
this.ResetAll();
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void abtnVerwerfen_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.ResetAll();
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void abtnSubmit_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.SaveAll(JSONConfig.User);
|
||||
this.ResetAll();
|
||||
}
|
||||
|
||||
private void FormSettings_DpiChanged(object sender, DpiChangedEventArgs e)
|
||||
{
|
||||
e.Cancel = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
126
GFATask/Forms/FormSettings.resx
Normal file
126
GFATask/Forms/FormSettings.resx
Normal file
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>160, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
BIN
GFATask/GFA.ico
Normal file
BIN
GFATask/GFA.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
324
GFATask/GFATask.csproj
Normal file
324
GFATask/GFATask.csproj
Normal file
@@ -0,0 +1,324 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{BEA96733-DFDB-4E00-9CD9-C3E9B1E1D031}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>GFATask</RootNamespace>
|
||||
<AssemblyName>GFATask</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>false</Deterministic>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>GFA.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignManifests>false</SignManifests>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CustomControls">
|
||||
<HintPath>..\..\DLLs\CustomControls\bin\Debug\CustomControls.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="CustomGraphics">
|
||||
<HintPath>..\..\DLLs\CustomGraphics\bin\Debug\CustomGraphics.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ExScreen">
|
||||
<HintPath>..\..\DLLs\ExScreen\bin\Debug\ExScreen.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Extensions">
|
||||
<HintPath>..\..\DLLs\Extensions\bin\Debug\Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="FormEx, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\DLLs\FormEx\bin\Debug\FormEx.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ILog">
|
||||
<HintPath>..\..\Interfaces\ILog\bin\Debug\ILog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Logging">
|
||||
<HintPath>..\..\DLLs\Logging\bin\Debug\Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualBasic" />
|
||||
<Reference Include="Microsoft.VisualStudio.DebuggerVisualizers, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
||||
<Reference Include="Models">
|
||||
<HintPath>..\Models\bin\Debug\Models.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.DirectoryServices.AccountManagement" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="SystemManagement">
|
||||
<HintPath>..\..\DLLs\SystemManagement\bin\Debug\SystemManagement.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Win32API">
|
||||
<HintPath>..\..\DLLs\Win32API\bin\Debug\Win32API.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="XObjects, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\DLLs\XObjects\bin\Debug\XObjects.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Classes\AlternateWebbrowser.cs" />
|
||||
<Compile Include="Classes\AppExecution.cs" />
|
||||
<Compile Include="Classes\ConfigBackupClass.cs" />
|
||||
<Compile Include="Controls\AppButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\AppButton.Designer.cs">
|
||||
<DependentUpon>AppButton.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\AppListButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\AppListButton.Designer.cs">
|
||||
<DependentUpon>AppListButton.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\AppListPanel.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\AppListPanel.Designer.cs">
|
||||
<DependentUpon>AppListPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Classes\Deploy.cs" />
|
||||
<Compile Include="Forms\FormAppButtonGroup.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormAppButtonGroup.Designer.cs">
|
||||
<DependentUpon>FormAppButtonGroup.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormAppCreator.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormAppCreator.Designer.cs">
|
||||
<DependentUpon>FormAppCreator.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormAdmin.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormAdmin.Designer.cs">
|
||||
<DependentUpon>FormAdmin.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormInfo.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormInfo.Designer.cs">
|
||||
<DependentUpon>FormInfo.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormSettings.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormSettings.Designer.cs">
|
||||
<DependentUpon>FormSettings.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormGroups.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormGroups.Designer.cs">
|
||||
<DependentUpon>FormGroups.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormMain.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\FormMain.Designer.cs">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\GroupButton.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\GroupButton.Designer.cs">
|
||||
<DependentUpon>GroupButton.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Classes\InfoClass.cs" />
|
||||
<Compile Include="Classes\Casting_Classes.cs" />
|
||||
<Compile Include="Classes\FrontEndRefreshExecution.cs" />
|
||||
<Compile Include="Classes\FrontEndRefresh.cs" />
|
||||
<Compile Include="UserControls\ucAdminAppClickCounter.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminAppClickCounter.Designer.cs">
|
||||
<DependentUpon>ucAdminAppClickCounter.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminHelp.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminHelp.Designer.cs">
|
||||
<DependentUpon>ucAdminHelp.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminNewsFeeds.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminNewsFeeds.Designer.cs">
|
||||
<DependentUpon>ucAdminNewsFeeds.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminApps.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminApps.Designer.cs">
|
||||
<DependentUpon>ucAdminApps.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Classes\Hooks.cs" />
|
||||
<Compile Include="Classes\JSON.cs" />
|
||||
<Compile Include="Classes\PreChanging.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Statics.cs" />
|
||||
<Compile Include="Classes\SystemApps.cs" />
|
||||
<Compile Include="SystemChanges.cs" />
|
||||
<Compile Include="UserControls\ucAdminDesigns.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminDesigns.Designer.cs">
|
||||
<DependentUpon>ucAdminDesigns.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminGeneral.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\ucAdminGeneral.Designer.cs">
|
||||
<DependentUpon>ucAdminGeneral.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Forms\FormAppButtonGroup.resx">
|
||||
<DependentUpon>FormAppButtonGroup.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormAppCreator.resx">
|
||||
<DependentUpon>FormAppCreator.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormAdmin.resx">
|
||||
<DependentUpon>FormAdmin.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormGroups.resx">
|
||||
<DependentUpon>FormGroups.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormInfo.resx">
|
||||
<DependentUpon>FormInfo.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormMain.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\FormSettings.resx">
|
||||
<DependentUpon>FormSettings.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControls\ucAdminAppClickCounter.resx">
|
||||
<DependentUpon>ucAdminAppClickCounter.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControls\ucAdminApps.resx">
|
||||
<DependentUpon>ucAdminApps.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControls\ucAdminHelp.resx">
|
||||
<DependentUpon>ucAdminHelp.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControls\ucAdminNewsFeeds.resx">
|
||||
<DependentUpon>ucAdminNewsFeeds.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControls\ucAdminDesigns.resx">
|
||||
<DependentUpon>ucAdminDesigns.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UserControls\ucAdminGeneral.resx">
|
||||
<DependentUpon>ucAdminGeneral.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="app.manifest" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\magnifier.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="bin\Debug\Icons\System\GFA.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="GFA.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.8 %28x86 und x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
13
GFATask/GFATask.csproj.user
Normal file
13
GFATask/GFATask.csproj.user
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishUrlHistory>publish\</PublishUrlHistory>
|
||||
<InstallUrlHistory />
|
||||
<SupportUrlHistory />
|
||||
<UpdateUrlHistory />
|
||||
<BootstrapperUrlHistory />
|
||||
<ErrorReportUrlHistory />
|
||||
<FallbackCulture>de-DE</FallbackCulture>
|
||||
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
64
GFATask/Program.cs
Normal file
64
GFATask/Program.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// Der Haupteinstiegspunkt für die Anwendung.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
using (Mutex mutexSingleInstance = new Mutex(true, "bea96733-dfdb-4e00-9cd9-c3e9b1e1d031"))
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
if (Environment.CommandLine.Contains("-restart") || mutexSingleInstance.WaitOne(TimeSpan.Zero, true) && (Environment.GetEnvironmentVariable("RUN_GFATASK", EnvironmentVariableTarget.Machine) == null || Environment.GetEnvironmentVariable("RUN_GFATASK", EnvironmentVariableTarget.Machine) == "1"))
|
||||
{
|
||||
|
||||
// Prüft ob die Datei user.json vorhanden ist. Wenn nicht, wird sie automatisch erstellt. Falls doch und nur nötige Eigenschaften fehlen, werden diese angefügt.
|
||||
Deploy.Templating(
|
||||
typeof(Models.Config.User),
|
||||
Paths.UserConfig.FullName,
|
||||
File.Exists(Paths.UserConfig.FullName) ? JSON.Exists(Paths.UserConfig.FullName, "deploy") ? Config.User.Deploy.Overwrite : true : true,
|
||||
File.Exists(Paths.UserConfig.FullName) ? JSON.Exists(Paths.UserConfig.FullName, "deploy") ? Config.User.Deploy.Backup : true : true);
|
||||
|
||||
// Prüft ob die Prevalence/Favoriten-Datei im benutzerdefinierten Verzeichnis vorhanden ist. Wenn nicht wird sie automatisch erstellt. Wenn doch, wird geprüft,
|
||||
// ob die user.json Datei bereits existiert. Falls ja, wird nach der Eigenschaft Overwrite verfahren, andernfalls wird sie ebenfalls automatisch erstellt
|
||||
Deploy.AppListTemplate(DeployAppList.Prevalence, File.Exists(Paths.Prevalence.FullName) ? Config.User.Deploy.Overwrite : true, File.Exists(Paths.Prevalence.FullName) ? Config.User.Deploy.Backup : false);
|
||||
Deploy.AppListTemplate(DeployAppList.Favorites, File.Exists(Paths.Favorites.Apps.FullName) ? Config.User.Deploy.Overwrite : true, File.Exists(Paths.Favorites.Apps.FullName) ? Config.User.Deploy.Backup : false);
|
||||
|
||||
|
||||
// Prüft die Eigenschaften-Strukturen der angegebenen json-Dateien
|
||||
if (Models.Compare.StructureUserConfig(Paths.UserConfig.FullName).Any())
|
||||
JSON.Save(JSONConfig.User);
|
||||
if(Models.Compare.Structure<Models.AppList<Models.App>>(Paths.Favorites.Apps.FullName).Any())
|
||||
JSON.Save(JSONApp.Favorites);
|
||||
if (Models.Compare.Structure<Models.Prevalence>(Paths.Prevalence.FullName).Any())
|
||||
JSON.Save(JSONConfig.Prevalence);
|
||||
|
||||
try
|
||||
{
|
||||
Forms.Main = new FormMain();
|
||||
XObjects.SystemChanges.Load();
|
||||
Application.Run(Forms.Main);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
36
GFATask/Properties/AssemblyInfo.cs
Normal file
36
GFATask/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
|
||||
// die einer Assembly zugeordnet sind.
|
||||
[assembly: AssemblyTitle("GFATask")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Flammenbaum")]
|
||||
[assembly: AssemblyCopyright("Copyright © Grünflächenamt")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
|
||||
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
|
||||
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
|
||||
[assembly: Guid("bea96733-dfdb-4e00-9cd9-c3e9b1e1d031")]
|
||||
|
||||
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
//
|
||||
// Hauptversion
|
||||
// Nebenversion
|
||||
// Buildnummer
|
||||
// Revision
|
||||
//
|
||||
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
|
||||
// indem Sie "*" wie unten gezeigt eingeben:
|
||||
[assembly: AssemblyVersion("4.0.*")]
|
||||
//[assembly: AssemblyVersion(version: "4.0.*")]
|
||||
//[assembly: AssemblyVersion("4.0.*")]
|
||||
83
GFATask/Properties/Resources.Designer.cs
generated
Normal file
83
GFATask/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,83 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Dieser Code wurde von einem Tool generiert.
|
||||
// Laufzeitversion:4.0.30319.42000
|
||||
//
|
||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
// der Code erneut generiert wird.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace GFATask.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
|
||||
/// </summary>
|
||||
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
|
||||
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
|
||||
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
|
||||
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GFATask.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
|
||||
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap GFA {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("GFA", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap magnifier {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("magnifier", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
127
GFATask/Properties/Resources.resx
Normal file
127
GFATask/Properties/Resources.resx
Normal file
@@ -0,0 +1,127 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="magnifier" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\magnifier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="GFA" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\bin\Debug\Icons\System\GFA.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
26
GFATask/Properties/Settings.Designer.cs
generated
Normal file
26
GFATask/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Dieser Code wurde von einem Tool generiert.
|
||||
// Laufzeitversion:4.0.30319.42000
|
||||
//
|
||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
// der Code erneut generiert wird.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace GFATask.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
5
GFATask/Properties/Settings.settings
Normal file
5
GFATask/Properties/Settings.settings
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles />
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
BIN
GFATask/Resources/magnifier.png
Normal file
BIN
GFATask/Resources/magnifier.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 615 B |
1992
GFATask/Statics.cs
Normal file
1992
GFATask/Statics.cs
Normal file
File diff suppressed because it is too large
Load Diff
82
GFATask/SystemChanges.cs
Normal file
82
GFATask/SystemChanges.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public class SystemChanges
|
||||
{
|
||||
public SystemChanges() { }
|
||||
public void Load()
|
||||
{
|
||||
AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;
|
||||
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
|
||||
SystemEvents.EventsThreadShutdown += SystemEvents_EventsThreadShutdown;
|
||||
SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
|
||||
SystemEvents.DisplaySettingsChanging += SystemEvents_DisplaySettingsChanging;
|
||||
SystemEvents.UserPreferenceChanged += SystemEvents_UserPreferenceChanged;
|
||||
SystemEvents.SessionEnding += SystemEvents_SessionEnding;
|
||||
NetworkChange.NetworkAvailabilityChanged += NetworkChange_NetworkAvailabilityChanged;
|
||||
}
|
||||
|
||||
private void CurrentDomain_ProcessExit(object sender, EventArgs e)
|
||||
{
|
||||
XObjects.Delay.Break(Delay.Prevent.Decrease);
|
||||
SystemApps.Kill(out _);
|
||||
}
|
||||
|
||||
private void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
|
||||
{
|
||||
//XObjects.MessageBox = Feed.Show("Netzwerkverbindung " + (e.IsAvailable ? "hergestellt" : "getrennt"), NotifyButtons.OK, NotifyType.Message, Designer.Feed(150, 150), null, "Netzwerk");
|
||||
if (e.IsAvailable)
|
||||
{
|
||||
AD.GetGroups();
|
||||
Forms.Main.CreateAppListPanels();
|
||||
}
|
||||
}
|
||||
|
||||
private void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
|
||||
{
|
||||
//if (e.Category == UserPreferenceCategory.General)
|
||||
//{
|
||||
// MessageBox.Show(e.Category.ToString());
|
||||
// Forms.Main.BackColor = WindowsColors.Accent.StartMenuBackColor;
|
||||
// Forms.Main.BorderColor = WindowsColors.Accent.BackColor;
|
||||
// Forms.Main.TitlebarForeColor = Coloring.GetReadableForeColor(Forms.Main.BorderColor);
|
||||
//}
|
||||
}
|
||||
|
||||
private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
|
||||
{
|
||||
Forms.Main.SetMaximumSize();
|
||||
//Forms.Main.DesktopAlign();
|
||||
}
|
||||
|
||||
private void SystemEvents_DisplaySettingsChanging(object sender, EventArgs e)
|
||||
{
|
||||
Forms.Settings.LoadDisplays();
|
||||
Win32API.SendMessage(Forms.Main.Handle, (int)WM.ENTERSIZEMOVE, 0, 0);
|
||||
Forms.Main.DesktopAlign();
|
||||
}
|
||||
|
||||
private void SystemEvents_EventsThreadShutdown(object sender, EventArgs e)
|
||||
{
|
||||
SystemApps.Kill(out _);
|
||||
}
|
||||
|
||||
private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
|
||||
{
|
||||
SystemApps.Kill(out _);
|
||||
}
|
||||
|
||||
private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
||||
{
|
||||
if(e.Mode == PowerModes.Resume)
|
||||
{
|
||||
SystemApps.Restart(out _);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
149
GFATask/UserControls/ucAdminAppClickCounter.Designer.cs
generated
Normal file
149
GFATask/UserControls/ucAdminAppClickCounter.Designer.cs
generated
Normal file
@@ -0,0 +1,149 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class ucAdminAppClickCounter
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.abtnReset = new System.Windows.Forms.AnimationButton();
|
||||
this.table = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.lvAppClickCounter = new System.Windows.Forms.ListViewEx();
|
||||
this.colID = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colAppName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colCounts = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colDateLast = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colDateFirst = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.table.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// abtnReset
|
||||
//
|
||||
this.abtnReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.abtnReset.AutoSizeWidth = false;
|
||||
this.abtnReset.Image = null;
|
||||
this.abtnReset.ImageAlign = System.Windows.Forms.AnchorStyles.None;
|
||||
this.abtnReset.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnReset.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnReset.ImageSize = new System.Drawing.Size(1, 1);
|
||||
this.abtnReset.Location = new System.Drawing.Point(699, 382);
|
||||
this.abtnReset.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.abtnReset.Name = "abtnReset";
|
||||
this.abtnReset.Size = new System.Drawing.Size(234, 23);
|
||||
this.abtnReset.TabIndex = 0;
|
||||
this.abtnReset.Text = "Alle Click Counts zurücksetzen";
|
||||
this.abtnReset.TextBoxAlign = System.Windows.Forms.AnchorStyles.None;
|
||||
this.abtnReset.ToolTipText = "";
|
||||
this.abtnReset.Click += new System.EventHandler(this.abtnReset_Click);
|
||||
//
|
||||
// table
|
||||
//
|
||||
this.table.ColumnCount = 1;
|
||||
this.table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.table.Controls.Add(this.abtnReset, 0, 1);
|
||||
this.table.Controls.Add(this.lvAppClickCounter, 0, 0);
|
||||
this.table.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.table.Location = new System.Drawing.Point(0, 0);
|
||||
this.table.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.table.Name = "table";
|
||||
this.table.RowCount = 2;
|
||||
this.table.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.table.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
|
||||
this.table.Size = new System.Drawing.Size(935, 407);
|
||||
this.table.TabIndex = 2;
|
||||
//
|
||||
// lvAppClickCounter
|
||||
//
|
||||
this.lvAppClickCounter.ColumnFont = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this.lvAppClickCounter.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.colID,
|
||||
this.colAppName,
|
||||
this.colCounts,
|
||||
this.colDateLast,
|
||||
this.colDateFirst});
|
||||
this.lvAppClickCounter.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lvAppClickCounter.FullRowSelect = true;
|
||||
this.lvAppClickCounter.GridLines = true;
|
||||
this.lvAppClickCounter.HideSelection = false;
|
||||
this.lvAppClickCounter.Location = new System.Drawing.Point(0, 0);
|
||||
this.lvAppClickCounter.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.lvAppClickCounter.Name = "lvAppClickCounter";
|
||||
this.lvAppClickCounter.OwnerDraw = true;
|
||||
this.lvAppClickCounter.Size = new System.Drawing.Size(935, 379);
|
||||
this.lvAppClickCounter.TabIndex = 1;
|
||||
this.lvAppClickCounter.UseCompatibleStateImageBehavior = false;
|
||||
this.lvAppClickCounter.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// colID
|
||||
//
|
||||
this.colID.Text = "ID";
|
||||
//
|
||||
// colAppName
|
||||
//
|
||||
this.colAppName.Text = "App";
|
||||
this.colAppName.Width = 409;
|
||||
//
|
||||
// colCounts
|
||||
//
|
||||
this.colCounts.Text = "Benutzerklicks";
|
||||
this.colCounts.Width = 120;
|
||||
//
|
||||
// colDateLast
|
||||
//
|
||||
this.colDateLast.Text = "Zuletzt geklick";
|
||||
this.colDateLast.Width = 160;
|
||||
//
|
||||
// colDateFirst
|
||||
//
|
||||
this.colDateFirst.Text = "Erste Ausführung";
|
||||
this.colDateFirst.Width = 160;
|
||||
//
|
||||
// ucAdminAppClickCounter
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.Controls.Add(this.table);
|
||||
this.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.Name = "ucAdminAppClickCounter";
|
||||
this.Size = new System.Drawing.Size(935, 407);
|
||||
this.table.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.AnimationButton abtnReset;
|
||||
private System.Windows.Forms.TableLayoutPanel table;
|
||||
private System.Windows.Forms.ListViewEx lvAppClickCounter;
|
||||
private System.Windows.Forms.ColumnHeader colID;
|
||||
private System.Windows.Forms.ColumnHeader colAppName;
|
||||
private System.Windows.Forms.ColumnHeader colCounts;
|
||||
private System.Windows.Forms.ColumnHeader colDateLast;
|
||||
private System.Windows.Forms.ColumnHeader colDateFirst;
|
||||
}
|
||||
}
|
||||
143
GFATask/UserControls/ucAdminAppClickCounter.cs
Normal file
143
GFATask/UserControls/ucAdminAppClickCounter.cs
Normal file
@@ -0,0 +1,143 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
[Browsable(false), ToolboxItem(false)]
|
||||
public partial class ucAdminAppClickCounter : UserControl
|
||||
{
|
||||
public ContextMenuStrip CMS
|
||||
{
|
||||
get
|
||||
{
|
||||
return new ContextMenuStrip();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public ucAdminAppClickCounter()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.SetDefaultDesign();
|
||||
lvAppClickCounter.SortByColumn(1, SortOrder.Ascending);
|
||||
lvAppClickCounter.ContextMenuStrip = CMS;
|
||||
|
||||
lvAppClickCounter.MouseClick += LvAppClickCounter_MouseClick;
|
||||
Config.AppClickCounter.GetType().GetProperties().ToList().ForEach(applist =>
|
||||
{
|
||||
ListViewGroup group = new ListViewGroup(applist.Name, applist.Name);
|
||||
lvAppClickCounter.Groups.Add(group);
|
||||
var apps = ((List<Models.ClickCounter.AppCounter>)applist.GetValue(Config.AppClickCounter));
|
||||
lvAppClickCounter.Items.AddRange(apps.Select(app => new ListViewItem(new string[] { app.ID.ToString(), app.Name, app.Counts.ToString(), app.LastClicked.ToEuropeDateCulture(), app.FirstClicked.ToEuropeDateCulture() }, group)).ToArray());
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void LvAppClickCounter_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if(e.Button == MouseButtons.Right)
|
||||
{
|
||||
var item = lvAppClickCounter.HitTest(e.Location).Item;
|
||||
if(item != null && item.GetType() != typeof(ColumnHeader) && item.GetType() != typeof(ListViewGroup))
|
||||
{
|
||||
if (lvAppClickCounter.ContextMenuStrip != null)
|
||||
{
|
||||
lvAppClickCounter.ContextMenuStrip.Items.Clear();
|
||||
ToolStripMenuItem item_reset = new ToolStripMenuItem("Zurücksetzen", null, (s, evt) =>
|
||||
{
|
||||
AppType apptype = (AppType)Enum.Parse(typeof(AppType), item.Group.Header, true);
|
||||
int id = int.Parse(item.Text);
|
||||
ClickCounter clickcounter = Accessor.GetAppCounter(apptype, id).ToClickCounter(apptype);
|
||||
ResetAppCounter(clickcounter);
|
||||
JSON.Save(JSONConfig.AppClickCounter);
|
||||
XObjects.FrontEndRefresh.Update(new GFATaskStream() { PipeType = NetPipeType.AppCounter_Reset, AppType = apptype, ClickCounter = clickcounter });
|
||||
});
|
||||
lvAppClickCounter.ContextMenuStrip.Items.Add(item_reset);
|
||||
lvAppClickCounter.ContextMenuStrip.Show(this, new Point(e.X, lvAppClickCounter.GetItemRect(item.Index).Bottom));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void ResetAppCounter(ClickCounter clickcounter)
|
||||
{
|
||||
Models.ClickCounter.AppCounter appcounter = ((List<Models.ClickCounter.AppCounter>)Config.AppClickCounter.GetType().GetProperty(clickcounter.AppType.ToString()).GetValue(Config.AppClickCounter)).Find(appc => appc.ID == clickcounter.ID);
|
||||
appcounter.Counts = 0;
|
||||
appcounter.FirstClicked = DateTime.Now;
|
||||
appcounter.LastClicked = DateTime.Now;
|
||||
clickcounter.Counts = 0;
|
||||
clickcounter.FirstClicked = DateTime.Now;
|
||||
clickcounter.LastClicked = DateTime.Now;
|
||||
ListViewItem replacing_item = clickcounter.AsLvItem();
|
||||
replacing_item.Group = lvAppClickCounter.Groups[clickcounter.AppType.ToString()];
|
||||
lvAppClickCounter.Items[lvAppClickCounter.Items.Cast<ListViewItem>().ToList().FindIndex(lvitem => lvitem.Text == clickcounter.ID.ToString())] = replacing_item;
|
||||
}
|
||||
|
||||
|
||||
private void abtnReset_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(XObjects.MessageBox("Setzt die gezählten Klicks pro App zurück", NotifyButtons.OkCancel, NotifyType.Message, new Size(350,150), "ClickCounter zurücksetzen").Result == DialogResult.OK)
|
||||
{
|
||||
Config.AppClickCounter = new Models.ClickCounter()
|
||||
{
|
||||
Admin = new List<Models.ClickCounter.AppCounter>(),
|
||||
Menu = new List<Models.ClickCounter.AppCounter>(),
|
||||
User = new List<Models.ClickCounter.AppCounter>()
|
||||
};
|
||||
JSON.Save(JSONConfig.AppClickCounter);
|
||||
ClearAppClickCounterList();
|
||||
XObjects.FrontEndRefresh.Update(new GFATaskStream() { PipeType = NetPipeType.ClickCounter_Clear });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void ClearAppClickCounterList()
|
||||
{
|
||||
lvAppClickCounter.Items.Clear();
|
||||
}
|
||||
|
||||
|
||||
public void RefreshList(ClickCounter clickcounter)
|
||||
{
|
||||
ListViewItem item = clickcounter.AsLvItem();
|
||||
item.Group = lvAppClickCounter.Groups.Cast<ListViewGroup>().First(group => group.Header == clickcounter.AppType.ToString());
|
||||
|
||||
if (lvAppClickCounter.Items.Cast<ListViewItem>().ToList().Exists(lvitem => lvitem.Text == clickcounter.ID.ToString()))
|
||||
{
|
||||
lvAppClickCounter.Items[lvAppClickCounter.Items.Cast<ListViewItem>().ToList().FindIndex(lvitem => lvitem.Text == clickcounter.ID.ToString())] = item;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
lvAppClickCounter.Items.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
internal static class Extensions
|
||||
{
|
||||
public static ListViewItem AsLvItem(this ClickCounter clickcounter)
|
||||
{
|
||||
ListViewItem item = new ListViewItem(clickcounter.ID.ToString());
|
||||
ListViewItem.ListViewSubItem subName = new ListViewItem.ListViewSubItem(item, clickcounter.Name) { Name = "colAppName" };
|
||||
ListViewItem.ListViewSubItem subCounts = new ListViewItem.ListViewSubItem(item, clickcounter.Counts.ToString()) { Name = "colCounts" };
|
||||
ListViewItem.ListViewSubItem subLastClicked = new ListViewItem.ListViewSubItem(item, clickcounter.LastClicked.ToEuropeDateCulture()) { Name = "colDateLast" };
|
||||
ListViewItem.ListViewSubItem subFirstClicked = new ListViewItem.ListViewSubItem(item, clickcounter.FirstClicked.ToEuropeDateCulture()) { Name = "colDateFirst" };
|
||||
item.SubItems.AddRange(new ListViewItem.ListViewSubItem [] { subName, subCounts, subLastClicked, subFirstClicked }.ToArray());
|
||||
return item;
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/UserControls/ucAdminAppClickCounter.resx
Normal file
120
GFATask/UserControls/ucAdminAppClickCounter.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
105
GFATask/UserControls/ucAdminApps.Designer.cs
generated
Normal file
105
GFATask/UserControls/ucAdminApps.Designer.cs
generated
Normal file
@@ -0,0 +1,105 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class ucAdminApps
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.lvApps = new System.Windows.Forms.ListViewEx();
|
||||
this.abtnCreate = new System.Windows.Forms.AnimationButton();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// lvApps
|
||||
//
|
||||
this.lvApps.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.lvApps.ColumnFont = new System.Drawing.Font("Segoe UI", 9F);
|
||||
this.lvApps.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lvApps.FullRowSelect = true;
|
||||
this.lvApps.GridLines = true;
|
||||
this.lvApps.HideSelection = false;
|
||||
this.lvApps.Location = new System.Drawing.Point(3, 3);
|
||||
this.lvApps.Name = "lvApps";
|
||||
this.lvApps.OwnerDraw = true;
|
||||
this.lvApps.Size = new System.Drawing.Size(852, 468);
|
||||
this.lvApps.TabIndex = 2;
|
||||
this.lvApps.TileSize = new System.Drawing.Size(228, 120);
|
||||
this.lvApps.UseCompatibleStateImageBehavior = false;
|
||||
this.lvApps.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// abtnCreate
|
||||
//
|
||||
this.abtnCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.abtnCreate.AutoSizeWidth = false;
|
||||
this.abtnCreate.Image = null;
|
||||
this.abtnCreate.ImageAutoSize = System.Windows.Forms.ImageAutoSizeDirection.Manual;
|
||||
this.abtnCreate.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnCreate.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnCreate.Location = new System.Drawing.Point(708, 477);
|
||||
this.abtnCreate.Name = "abtnCreate";
|
||||
this.abtnCreate.Size = new System.Drawing.Size(147, 29);
|
||||
this.abtnCreate.TabIndex = 0;
|
||||
this.abtnCreate.Text = "App erstellen";
|
||||
this.abtnCreate.ToolTipText = "";
|
||||
this.abtnCreate.Click += new System.EventHandler(this.abtnCreate_Click);
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 1;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.lvApps, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.abtnCreate, 0, 1);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 2;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(858, 509);
|
||||
this.tableLayoutPanel1.TabIndex = 2;
|
||||
//
|
||||
// ucAdminApps
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(120F, 120F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.Name = "ucAdminApps";
|
||||
this.Size = new System.Drawing.Size(858, 509);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.AnimationButton abtnCreate;
|
||||
private System.Windows.Forms.ListViewEx lvApps;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
}
|
||||
}
|
||||
188
GFATask/UserControls/ucAdminApps.cs
Normal file
188
GFATask/UserControls/ucAdminApps.cs
Normal file
@@ -0,0 +1,188 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
[Browsable(false), ToolboxItem(false)]
|
||||
public partial class ucAdminApps : UserControl
|
||||
{
|
||||
public ImageList imageList = new ImageList();
|
||||
private int sortcolumn = 0;
|
||||
|
||||
public ucAdminApps()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.SetDefaultDesign();
|
||||
|
||||
this.ContextMenuStrip = new ContextMenuStrip();
|
||||
this.ContextMenuStrip.Items.Add("Bearbeiten", null, SetEditableItem);
|
||||
this.ContextMenuStrip.Items.Add("Schnelles kopieren", null, FastCopyApp);
|
||||
this.ContextMenuStrip.Items.Add("Löschen", null, RemoveApp);
|
||||
lvApps.MouseDoubleClick += SetEditableItem;
|
||||
|
||||
|
||||
imageList.ImageSize = new Size(24,24);
|
||||
imageList.Images.Add("", new Bitmap(imageList.ImageSize.Width, imageList.ImageSize.Height));
|
||||
var files = XObjects.GetFiles(Paths.Icons.Directory, "*.png|*.jpg|*.ico|*.jpeg|*.bmp|*.gif");
|
||||
foreach (var file in files)
|
||||
{
|
||||
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
|
||||
{
|
||||
imageList.Images.Add(Path.GetFileName(file), Image.FromFile(fs.Name));
|
||||
}
|
||||
}
|
||||
|
||||
lvApps.DoubleBuffer(true);
|
||||
lvApps.SmallImageList = lvApps.LargeImageList = imageList;
|
||||
lvApps.Columns.Add("Name");
|
||||
lvApps.Columns.Add("ID");
|
||||
lvApps.Columns.Add("Gruppen");
|
||||
lvApps.Columns.Add("Symbol");
|
||||
lvApps.Columns.Add("Prototyp");
|
||||
lvApps.Columns.Add("AD Gruppen");
|
||||
lvApps.Columns.Add("Zuletzt geändert");
|
||||
lvApps.Columns.Add("Erstellt am");
|
||||
typeof(AppLists).GetProperties().Select(prop => (Models.AppList<Models.App>)prop.GetValue(typeof(AppLists))).ToList().ForEach(applist =>
|
||||
{
|
||||
if (applist.Apps != null && applist.Type != AppType.Citrix && applist.Type != AppType.Favorites)
|
||||
{
|
||||
ListViewGroup group = new ListViewGroup(applist.Type.ToString(), applist.Type.ToString());
|
||||
lvApps.Groups.Add(group);
|
||||
lvApps.Items.AddRange(applist.Apps.Select(app =>
|
||||
{
|
||||
var ad_groups = app.ActiveDirectoryGroups == null ? new string[] { "Keine" } : app.ActiveDirectoryGroups;
|
||||
var item = new ListViewItem(new string[] { app.Name, app.ID.ToString(), app.Group, app.Icon, app.Prototype == true ? "✓" : "❌", string.Join(",", ad_groups), app.LastModified.ToEuropeDateCulture(), app.Created.ToEuropeDateCulture() }, Path.GetFileName(app.Icon), group);
|
||||
return item;
|
||||
}).ToArray());
|
||||
}
|
||||
});
|
||||
|
||||
lvApps.SortByColumn(sortcolumn);
|
||||
lvApps.ColumnClick += (sender, e) => sortcolumn = e.Column;
|
||||
lvApps.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
|
||||
lvApps.AutoFillColumn(lvApps.Columns.Count -1);
|
||||
}
|
||||
|
||||
public void AddAppToList(AppType apptype, Models.App app)
|
||||
{
|
||||
AddAppToList(apptype.ToString(), app);
|
||||
}
|
||||
|
||||
|
||||
public void AddAppToList(string apptype, Models.App app)
|
||||
{
|
||||
ListViewGroup group = lvApps.Groups[apptype];
|
||||
var ad_groups = app.ActiveDirectoryGroups == null ? new string[] { "Keine" } : app.ActiveDirectoryGroups;
|
||||
var item = new ListViewItem(new string[] { app.Name, app.ID.ToString(), app.Group, app.Icon, app.Prototype == true ? "✓" : "❌", string.Join(",", ad_groups), app.LastModified.ToEuropeDateCulture(), app.Created.ToEuropeDateCulture() }, Path.GetFileName(app.Icon), group);
|
||||
lvApps.Items.Add(item);
|
||||
}
|
||||
|
||||
public void ReplaceAppInList(AppType apptype, Models.App app)
|
||||
{
|
||||
ListViewGroup group = lvApps.Groups[apptype.ToString()];
|
||||
var ad_groups = app.ActiveDirectoryGroups == null ? new string[] { "Keine" } : app.ActiveDirectoryGroups;
|
||||
var lvitem = group.Items.Cast<ListViewItem>().First(item => int.Parse(item.SubItems[1].Text) == app.ID && item.Group.Name == apptype.ToString());
|
||||
lvApps.Items.Remove(lvitem);
|
||||
lvitem = new ListViewItem(new string[] { app.Name, app.ID.ToString(), app.Group, app.Icon, app.Prototype == true ? "✓" : "❌", string.Join(",", ad_groups), app.LastModified.ToEuropeDateCulture(), app.Created.ToEuropeDateCulture() }, Path.GetFileName(app.Icon), group);
|
||||
lvApps.Items.Add(lvitem);
|
||||
lvApps.Invalidate();
|
||||
lvApps.ListViewItemSorter = new ListViewItemComparer(sortcolumn);
|
||||
}
|
||||
|
||||
public void ReplaceAppInList(string apptype, Models.App app)
|
||||
{
|
||||
this.ReplaceAppInList((AppType)Enum.Parse(typeof(AppType), apptype, true), app);
|
||||
}
|
||||
|
||||
|
||||
public void RemoveAppFromList(AppType apptype, Models.App app)
|
||||
{
|
||||
ListViewGroup group = lvApps.Groups[apptype.ToString()];
|
||||
ListViewItem lvitem = group.Items.Cast<ListViewItem>().ToList().Find(item => int.Parse(item.SubItems[1].Text) == app.ID);
|
||||
lvApps.Items.Remove(lvitem);
|
||||
}
|
||||
|
||||
public void RemoveAppFromList(string apptype, Models.App app)
|
||||
{
|
||||
RemoveAppFromList((AppType)Enum.Parse(typeof(AppType), apptype, true), app);
|
||||
}
|
||||
|
||||
private void RemoveApp(object sender, EventArgs e)
|
||||
{
|
||||
var lvitem = lvApps.SelectedItems[0];
|
||||
var msgbox = XObjects.MessageBox("Soll die App " + lvitem.Text + " wirklich gelöscht werden", NotifyButtons.YesNo, NotifyType.Message, new Size(200, 200), "App Löschen", null);
|
||||
if (msgbox.Result == DialogResult.Yes)
|
||||
{
|
||||
AppType apptype = (AppType)Enum.Parse(typeof(AppType), lvitem.Group.Name, true);
|
||||
Models.AppList<Models.App> applist = Accessor.GetAppList(apptype);
|
||||
Models.App app = applist.Apps.Find(listapp => listapp.ID == int.Parse(lvitem.SubItems[1].Text));
|
||||
Creator.RemoveApp(lvitem.Group.Name, app);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void abtnCreate_Click(object sender, EventArgs e)
|
||||
{
|
||||
Forms.AppCreator.ResetControls();
|
||||
Accessor.OpenForm("AppCreator");
|
||||
}
|
||||
|
||||
private void FastCopyApp(object sender, EventArgs e)
|
||||
{
|
||||
var lvitem = lvApps.SelectedItems[0];
|
||||
if (lvitem != null)
|
||||
{
|
||||
string typefromgroup = Enum.Parse(typeof(AppType), lvitem.Group.Name, true).ToString();
|
||||
Models.AppList<Models.App> applist = (Models.AppList<Models.App>)typeof(AppLists).GetProperty(lvitem.Group.Name).GetValue(typeof(Models.AppList<Models.App>));
|
||||
Models.App app_copy = applist.Apps.Find(app => app.ID == int.Parse(lvitem.SubItems[1].Text)).Copy();
|
||||
app_copy.Name = app_copy.Name + " (Kopie " + applist.Apps.Count(app => app.Name == app_copy.Name) + ")";
|
||||
app_copy.ID = applist.Apps.Max(app => app.ID) + 1;
|
||||
app_copy.Created = DateTime.Now;
|
||||
app_copy.LastModified = DateTime.Now;
|
||||
Creator.AddApp(lvitem.Group.Name, app_copy);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetEditableItem(object sender, EventArgs e)
|
||||
{
|
||||
var item = lvApps.SelectedItems[0];
|
||||
if (item != null)
|
||||
{
|
||||
string typefromgroup = Enum.Parse(typeof(AppType), item.Group.Name, true).ToString();
|
||||
Models.AppList<Models.App> applist = (Models.AppList<Models.App>)typeof(AppLists).GetProperty(item.Group.Name).GetValue(typeof(Models.AppList<Models.App>));
|
||||
Models.App appitem = applist.Apps.Find(app => app.ID == int.Parse(item.SubItems[1].Text));
|
||||
Forms.AppCreator.GetEditableItem(applist.Type, appitem);
|
||||
Accessor.OpenForm("AppCreator", Forms.Administration);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class ListViewItemComparer : IComparer
|
||||
{
|
||||
private int col;
|
||||
public ListViewItemComparer()
|
||||
{
|
||||
col = 0;
|
||||
}
|
||||
|
||||
public ListViewItemComparer(int column)
|
||||
{
|
||||
col = column;
|
||||
}
|
||||
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/UserControls/ucAdminApps.resx
Normal file
120
GFATask/UserControls/ucAdminApps.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
936
GFATask/UserControls/ucAdminDesigns.Designer.cs
generated
Normal file
936
GFATask/UserControls/ucAdminDesigns.Designer.cs
generated
Normal file
@@ -0,0 +1,936 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class ucAdminDesigns
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.tableDesign = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.label18 = new System.Windows.Forms.Label();
|
||||
this.label17 = new System.Windows.Forms.Label();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.numAppListX = new System.Windows.Forms.NumericEx();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.label27 = new System.Windows.Forms.Label();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.cbWindowTitlebarColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbWindowBorderColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbWindowActionColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbWindowBackColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbGroupBackColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbGroupBorderColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbGroupTitlebarColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbGroupActionColor = new System.Windows.Forms.ComboBox();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.numAppListY = new System.Windows.Forms.NumericEx();
|
||||
this.cbFontFamily = new System.Windows.Forms.ComboBox();
|
||||
this.numWindowRadius = new System.Windows.Forms.NumericEx();
|
||||
this.numWindowBorder = new System.Windows.Forms.NumericEx();
|
||||
this.cbAppDefaultForeColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbAppDefaultBackColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbAppDefaultBorder = new System.Windows.Forms.ComboBox();
|
||||
this.cbAppDefaultImage = new System.Windows.Forms.ComboBox();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.abtnVerwerfen = new System.Windows.Forms.AnimationButton();
|
||||
this.abtnAnwenden = new System.Windows.Forms.AnimationButton();
|
||||
this.cbListBorderColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbLoadingDot3 = new System.Windows.Forms.ComboBox();
|
||||
this.label19 = new System.Windows.Forms.Label();
|
||||
this.cbLoadingDot1 = new System.Windows.Forms.ComboBox();
|
||||
this.label20 = new System.Windows.Forms.Label();
|
||||
this.label22 = new System.Windows.Forms.Label();
|
||||
this.label21 = new System.Windows.Forms.Label();
|
||||
this.cbAppHoverForeColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbAppHoverBackColor = new System.Windows.Forms.ComboBox();
|
||||
this.cbAppHoverBorder = new System.Windows.Forms.ComboBox();
|
||||
this.cbAppHoverImage = new System.Windows.Forms.ComboBox();
|
||||
this.cbLoadingDot4 = new System.Windows.Forms.ComboBox();
|
||||
this.cbLoadingDot2 = new System.Windows.Forms.ComboBox();
|
||||
this.tableDesign.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAppListX)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAppListY)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numWindowRadius)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numWindowBorder)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableDesign
|
||||
//
|
||||
this.tableDesign.ColumnCount = 17;
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 130F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 10F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 10F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 130F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 10F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 130F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 10F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 130F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 10F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 130F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 10F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 130F));
|
||||
this.tableDesign.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableDesign.Controls.Add(this.label18, 1, 7);
|
||||
this.tableDesign.Controls.Add(this.label17, 13, 8);
|
||||
this.tableDesign.Controls.Add(this.label16, 11, 8);
|
||||
this.tableDesign.Controls.Add(this.numAppListX, 3, 6);
|
||||
this.tableDesign.Controls.Add(this.label13, 1, 6);
|
||||
this.tableDesign.Controls.Add(this.label12, 15, 3);
|
||||
this.tableDesign.Controls.Add(this.label11, 1, 2);
|
||||
this.tableDesign.Controls.Add(this.label10, 1, 5);
|
||||
this.tableDesign.Controls.Add(this.label27, 7, 3);
|
||||
this.tableDesign.Controls.Add(this.label9, 3, 3);
|
||||
this.tableDesign.Controls.Add(this.label3, 1, 4);
|
||||
this.tableDesign.Controls.Add(this.label5, 11, 3);
|
||||
this.tableDesign.Controls.Add(this.label6, 13, 3);
|
||||
this.tableDesign.Controls.Add(this.label4, 7, 7);
|
||||
this.tableDesign.Controls.Add(this.label1, 7, 9);
|
||||
this.tableDesign.Controls.Add(this.label2, 7, 10);
|
||||
this.tableDesign.Controls.Add(this.label7, 9, 3);
|
||||
this.tableDesign.Controls.Add(this.cbWindowTitlebarColor, 15, 4);
|
||||
this.tableDesign.Controls.Add(this.cbWindowBorderColor, 13, 4);
|
||||
this.tableDesign.Controls.Add(this.cbWindowActionColor, 9, 4);
|
||||
this.tableDesign.Controls.Add(this.cbWindowBackColor, 11, 4);
|
||||
this.tableDesign.Controls.Add(this.cbGroupBackColor, 11, 5);
|
||||
this.tableDesign.Controls.Add(this.cbGroupBorderColor, 13, 5);
|
||||
this.tableDesign.Controls.Add(this.cbGroupTitlebarColor, 15, 5);
|
||||
this.tableDesign.Controls.Add(this.cbGroupActionColor, 9, 5);
|
||||
this.tableDesign.Controls.Add(this.label8, 1, 1);
|
||||
this.tableDesign.Controls.Add(this.numAppListY, 5, 6);
|
||||
this.tableDesign.Controls.Add(this.cbFontFamily, 3, 1);
|
||||
this.tableDesign.Controls.Add(this.numWindowRadius, 7, 4);
|
||||
this.tableDesign.Controls.Add(this.numWindowBorder, 3, 4);
|
||||
this.tableDesign.Controls.Add(this.cbAppDefaultForeColor, 9, 9);
|
||||
this.tableDesign.Controls.Add(this.cbAppDefaultBackColor, 11, 9);
|
||||
this.tableDesign.Controls.Add(this.cbAppDefaultBorder, 13, 9);
|
||||
this.tableDesign.Controls.Add(this.cbAppDefaultImage, 15, 9);
|
||||
this.tableDesign.Controls.Add(this.label14, 9, 8);
|
||||
this.tableDesign.Controls.Add(this.label15, 15, 8);
|
||||
this.tableDesign.Controls.Add(this.abtnVerwerfen, 13, 12);
|
||||
this.tableDesign.Controls.Add(this.abtnAnwenden, 15, 12);
|
||||
this.tableDesign.Controls.Add(this.cbListBorderColor, 13, 6);
|
||||
this.tableDesign.Controls.Add(this.cbLoadingDot3, 3, 9);
|
||||
this.tableDesign.Controls.Add(this.label19, 1, 8);
|
||||
this.tableDesign.Controls.Add(this.cbLoadingDot1, 1, 9);
|
||||
this.tableDesign.Controls.Add(this.label20, 3, 8);
|
||||
this.tableDesign.Controls.Add(this.label22, 3, 10);
|
||||
this.tableDesign.Controls.Add(this.label21, 1, 10);
|
||||
this.tableDesign.Controls.Add(this.cbAppHoverForeColor, 9, 10);
|
||||
this.tableDesign.Controls.Add(this.cbAppHoverBackColor, 11, 10);
|
||||
this.tableDesign.Controls.Add(this.cbAppHoverBorder, 13, 10);
|
||||
this.tableDesign.Controls.Add(this.cbAppHoverImage, 15, 10);
|
||||
this.tableDesign.Controls.Add(this.cbLoadingDot4, 3, 11);
|
||||
this.tableDesign.Controls.Add(this.cbLoadingDot2, 1, 11);
|
||||
this.tableDesign.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableDesign.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableDesign.Name = "tableDesign";
|
||||
this.tableDesign.RowCount = 14;
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||
this.tableDesign.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableDesign.Size = new System.Drawing.Size(985, 377);
|
||||
this.tableDesign.TabIndex = 11;
|
||||
//
|
||||
// label18
|
||||
//
|
||||
this.label18.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tableDesign.SetColumnSpan(this.label18, 5);
|
||||
this.label18.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label18.Location = new System.Drawing.Point(12, 186);
|
||||
this.label18.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label18.Name = "label18";
|
||||
this.label18.Size = new System.Drawing.Size(260, 25);
|
||||
this.label18.TabIndex = 107;
|
||||
this.label18.Text = "Animation (Laden)";
|
||||
this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label17
|
||||
//
|
||||
this.label17.AutoSize = true;
|
||||
this.label17.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label17.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label17.Location = new System.Drawing.Point(702, 211);
|
||||
this.label17.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label17.Name = "label17";
|
||||
this.label17.Size = new System.Drawing.Size(130, 30);
|
||||
this.label17.TabIndex = 105;
|
||||
this.label17.Text = "Rahmen";
|
||||
this.label17.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label16.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label16.Location = new System.Drawing.Point(562, 211);
|
||||
this.label16.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(130, 30);
|
||||
this.label16.TabIndex = 104;
|
||||
this.label16.Text = "Hintergrund";
|
||||
this.label16.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// numAppListX
|
||||
//
|
||||
this.numAppListX.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.numAppListX.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.numAppListX.Location = new System.Drawing.Point(172, 161);
|
||||
this.numAppListX.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
|
||||
this.numAppListX.Maximum = new decimal(new int[] {
|
||||
5,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAppListX.Name = "numAppListX";
|
||||
this.numAppListX.Size = new System.Drawing.Size(30, 20);
|
||||
this.numAppListX.TabIndex = 89;
|
||||
this.numAppListX.ValueChanged += new System.EventHandler(this.numAppListX_ValueChanged);
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label13.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label13.Location = new System.Drawing.Point(12, 156);
|
||||
this.label13.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(130, 30);
|
||||
this.label13.TabIndex = 88;
|
||||
this.label13.Text = "App-Listen (X,Y)";
|
||||
this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label12.Location = new System.Drawing.Point(842, 71);
|
||||
this.label12.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(130, 25);
|
||||
this.label12.TabIndex = 82;
|
||||
this.label12.Text = "Titelleiste";
|
||||
this.label12.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label11
|
||||
//
|
||||
this.label11.AutoSize = true;
|
||||
this.tableDesign.SetColumnSpan(this.label11, 15);
|
||||
this.label11.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label11.Location = new System.Drawing.Point(12, 46);
|
||||
this.label11.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(960, 25);
|
||||
this.label11.TabIndex = 81;
|
||||
this.label11.Text = "Fenster";
|
||||
this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label10.Location = new System.Drawing.Point(12, 126);
|
||||
this.label10.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(130, 30);
|
||||
this.label10.TabIndex = 80;
|
||||
this.label10.Text = "Gruppenfenster";
|
||||
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// label27
|
||||
//
|
||||
this.label27.AutoSize = true;
|
||||
this.label27.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label27.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label27.Location = new System.Drawing.Point(282, 71);
|
||||
this.label27.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label27.Name = "label27";
|
||||
this.label27.Size = new System.Drawing.Size(130, 25);
|
||||
this.label27.TabIndex = 65;
|
||||
this.label27.Text = "Abrundung";
|
||||
this.label27.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.tableDesign.SetColumnSpan(this.label9, 3);
|
||||
this.label9.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label9.Location = new System.Drawing.Point(162, 71);
|
||||
this.label9.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(110, 25);
|
||||
this.label9.TabIndex = 74;
|
||||
this.label9.Text = "Rahmenbreite";
|
||||
this.label9.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label3.Location = new System.Drawing.Point(12, 96);
|
||||
this.label3.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(130, 30);
|
||||
this.label3.TabIndex = 13;
|
||||
this.label3.Text = "Hauptfenster";
|
||||
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label5.Location = new System.Drawing.Point(562, 71);
|
||||
this.label5.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(130, 25);
|
||||
this.label5.TabIndex = 66;
|
||||
this.label5.Text = "Hintergrund";
|
||||
this.label5.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label6.Location = new System.Drawing.Point(702, 71);
|
||||
this.label6.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(130, 25);
|
||||
this.label6.TabIndex = 67;
|
||||
this.label6.Text = "Rahmen";
|
||||
this.label6.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.tableDesign.SetColumnSpan(this.label4, 9);
|
||||
this.label4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label4.Location = new System.Drawing.Point(282, 186);
|
||||
this.label4.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(690, 25);
|
||||
this.label4.TabIndex = 16;
|
||||
this.label4.Text = "Apps";
|
||||
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(282, 241);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(130, 30);
|
||||
this.label1.TabIndex = 14;
|
||||
this.label1.Text = "Normal";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label2.Location = new System.Drawing.Point(282, 271);
|
||||
this.label2.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(130, 30);
|
||||
this.label2.TabIndex = 15;
|
||||
this.label2.Text = "Maus drauf";
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label7.Location = new System.Drawing.Point(422, 71);
|
||||
this.label7.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(130, 25);
|
||||
this.label7.TabIndex = 68;
|
||||
this.label7.Text = "Aktionsfarbe";
|
||||
this.label7.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// cbWindowTitlebarColor
|
||||
//
|
||||
this.cbWindowTitlebarColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbWindowTitlebarColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbWindowTitlebarColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbWindowTitlebarColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbWindowTitlebarColor.Location = new System.Drawing.Point(857, 100);
|
||||
this.cbWindowTitlebarColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbWindowTitlebarColor.Name = "cbWindowTitlebarColor";
|
||||
this.cbWindowTitlebarColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbWindowTitlebarColor.TabIndex = 83;
|
||||
//
|
||||
// cbWindowBorderColor
|
||||
//
|
||||
this.cbWindowBorderColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbWindowBorderColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbWindowBorderColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbWindowBorderColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbWindowBorderColor.Location = new System.Drawing.Point(717, 100);
|
||||
this.cbWindowBorderColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbWindowBorderColor.Name = "cbWindowBorderColor";
|
||||
this.cbWindowBorderColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbWindowBorderColor.TabIndex = 78;
|
||||
//
|
||||
// cbWindowActionColor
|
||||
//
|
||||
this.cbWindowActionColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbWindowActionColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbWindowActionColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbWindowActionColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbWindowActionColor.Location = new System.Drawing.Point(437, 100);
|
||||
this.cbWindowActionColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbWindowActionColor.Name = "cbWindowActionColor";
|
||||
this.cbWindowActionColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbWindowActionColor.TabIndex = 79;
|
||||
//
|
||||
// cbWindowBackColor
|
||||
//
|
||||
this.cbWindowBackColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbWindowBackColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbWindowBackColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbWindowBackColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbWindowBackColor.Location = new System.Drawing.Point(577, 100);
|
||||
this.cbWindowBackColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbWindowBackColor.Name = "cbWindowBackColor";
|
||||
this.cbWindowBackColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbWindowBackColor.TabIndex = 77;
|
||||
//
|
||||
// cbGroupBackColor
|
||||
//
|
||||
this.cbGroupBackColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbGroupBackColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbGroupBackColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbGroupBackColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbGroupBackColor.Location = new System.Drawing.Point(577, 130);
|
||||
this.cbGroupBackColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbGroupBackColor.Name = "cbGroupBackColor";
|
||||
this.cbGroupBackColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbGroupBackColor.TabIndex = 84;
|
||||
//
|
||||
// cbGroupBorderColor
|
||||
//
|
||||
this.cbGroupBorderColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbGroupBorderColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbGroupBorderColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbGroupBorderColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbGroupBorderColor.Location = new System.Drawing.Point(717, 130);
|
||||
this.cbGroupBorderColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbGroupBorderColor.Name = "cbGroupBorderColor";
|
||||
this.cbGroupBorderColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbGroupBorderColor.TabIndex = 85;
|
||||
//
|
||||
// cbGroupTitlebarColor
|
||||
//
|
||||
this.cbGroupTitlebarColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbGroupTitlebarColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbGroupTitlebarColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbGroupTitlebarColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbGroupTitlebarColor.Location = new System.Drawing.Point(857, 130);
|
||||
this.cbGroupTitlebarColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbGroupTitlebarColor.Name = "cbGroupTitlebarColor";
|
||||
this.cbGroupTitlebarColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbGroupTitlebarColor.TabIndex = 86;
|
||||
//
|
||||
// cbGroupActionColor
|
||||
//
|
||||
this.cbGroupActionColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbGroupActionColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbGroupActionColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbGroupActionColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbGroupActionColor.Location = new System.Drawing.Point(437, 130);
|
||||
this.cbGroupActionColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbGroupActionColor.Name = "cbGroupActionColor";
|
||||
this.cbGroupActionColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbGroupActionColor.TabIndex = 87;
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(83, 24);
|
||||
this.label8.Margin = new System.Windows.Forms.Padding(3, 0, 10, 0);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(49, 13);
|
||||
this.label8.TabIndex = 70;
|
||||
this.label8.Text = "Schriftart";
|
||||
//
|
||||
// numAppListY
|
||||
//
|
||||
this.numAppListY.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.numAppListY.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.numAppListY.Location = new System.Drawing.Point(232, 161);
|
||||
this.numAppListY.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
|
||||
this.numAppListY.Maximum = new decimal(new int[] {
|
||||
3,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAppListY.Name = "numAppListY";
|
||||
this.numAppListY.Size = new System.Drawing.Size(30, 20);
|
||||
this.numAppListY.TabIndex = 90;
|
||||
this.numAppListY.ValueChanged += new System.EventHandler(this.numAppListY_ValueChanged);
|
||||
//
|
||||
// cbFontFamily
|
||||
//
|
||||
this.cbFontFamily.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.cbFontFamily.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
|
||||
this.cbFontFamily.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
|
||||
this.cbFontFamily.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.tableDesign.SetColumnSpan(this.cbFontFamily, 5);
|
||||
this.cbFontFamily.DropDownHeight = 150;
|
||||
this.cbFontFamily.DropDownWidth = 214;
|
||||
this.cbFontFamily.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbFontFamily.FormattingEnabled = true;
|
||||
this.cbFontFamily.IntegralHeight = false;
|
||||
this.cbFontFamily.ItemHeight = 13;
|
||||
this.cbFontFamily.Location = new System.Drawing.Point(162, 20);
|
||||
this.cbFontFamily.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbFontFamily.Name = "cbFontFamily";
|
||||
this.cbFontFamily.Size = new System.Drawing.Size(250, 21);
|
||||
this.cbFontFamily.TabIndex = 76;
|
||||
//
|
||||
// numWindowRadius
|
||||
//
|
||||
this.numWindowRadius.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.numWindowRadius.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.numWindowRadius.Location = new System.Drawing.Point(324, 116);
|
||||
this.numWindowRadius.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
|
||||
this.numWindowRadius.Maximum = new decimal(new int[] {
|
||||
15,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numWindowRadius.Name = "numWindowRadius";
|
||||
this.tableDesign.SetRowSpan(this.numWindowRadius, 2);
|
||||
this.numWindowRadius.Size = new System.Drawing.Size(45, 20);
|
||||
this.numWindowRadius.TabIndex = 64;
|
||||
this.numWindowRadius.ValueChanged += new System.EventHandler(this.numWindowRadius_ValueChanged);
|
||||
//
|
||||
// numWindowBorder
|
||||
//
|
||||
this.numWindowBorder.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.numWindowBorder.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tableDesign.SetColumnSpan(this.numWindowBorder, 3);
|
||||
this.numWindowBorder.Location = new System.Drawing.Point(194, 116);
|
||||
this.numWindowBorder.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
|
||||
this.numWindowBorder.Maximum = new decimal(new int[] {
|
||||
5,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numWindowBorder.Name = "numWindowBorder";
|
||||
this.tableDesign.SetRowSpan(this.numWindowBorder, 2);
|
||||
this.numWindowBorder.Size = new System.Drawing.Size(45, 20);
|
||||
this.numWindowBorder.TabIndex = 73;
|
||||
this.numWindowBorder.ValueChanged += new System.EventHandler(this.numWindowBorder_ValueChanged);
|
||||
//
|
||||
// cbAppDefaultForeColor
|
||||
//
|
||||
this.cbAppDefaultForeColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbAppDefaultForeColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbAppDefaultForeColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbAppDefaultForeColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbAppDefaultForeColor.Location = new System.Drawing.Point(437, 245);
|
||||
this.cbAppDefaultForeColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbAppDefaultForeColor.Name = "cbAppDefaultForeColor";
|
||||
this.cbAppDefaultForeColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbAppDefaultForeColor.TabIndex = 91;
|
||||
//
|
||||
// cbAppDefaultBackColor
|
||||
//
|
||||
this.cbAppDefaultBackColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbAppDefaultBackColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbAppDefaultBackColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbAppDefaultBackColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbAppDefaultBackColor.Location = new System.Drawing.Point(577, 245);
|
||||
this.cbAppDefaultBackColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbAppDefaultBackColor.Name = "cbAppDefaultBackColor";
|
||||
this.cbAppDefaultBackColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbAppDefaultBackColor.TabIndex = 93;
|
||||
//
|
||||
// cbAppDefaultBorder
|
||||
//
|
||||
this.cbAppDefaultBorder.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbAppDefaultBorder.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbAppDefaultBorder.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbAppDefaultBorder.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbAppDefaultBorder.Location = new System.Drawing.Point(717, 245);
|
||||
this.cbAppDefaultBorder.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbAppDefaultBorder.Name = "cbAppDefaultBorder";
|
||||
this.cbAppDefaultBorder.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbAppDefaultBorder.TabIndex = 95;
|
||||
//
|
||||
// cbAppDefaultImage
|
||||
//
|
||||
this.cbAppDefaultImage.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbAppDefaultImage.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbAppDefaultImage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbAppDefaultImage.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbAppDefaultImage.Location = new System.Drawing.Point(857, 245);
|
||||
this.cbAppDefaultImage.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbAppDefaultImage.Name = "cbAppDefaultImage";
|
||||
this.cbAppDefaultImage.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbAppDefaultImage.TabIndex = 97;
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label14.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label14.Location = new System.Drawing.Point(422, 211);
|
||||
this.label14.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(130, 30);
|
||||
this.label14.TabIndex = 99;
|
||||
this.label14.Text = "Schrift";
|
||||
this.label14.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.AutoSize = true;
|
||||
this.label15.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label15.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label15.Location = new System.Drawing.Point(842, 211);
|
||||
this.label15.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(130, 30);
|
||||
this.label15.TabIndex = 100;
|
||||
this.label15.Text = "Symbol";
|
||||
this.label15.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// abtnVerwerfen
|
||||
//
|
||||
this.abtnVerwerfen.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.abtnVerwerfen.AutoSizeWidth = false;
|
||||
this.abtnVerwerfen.Image = null;
|
||||
this.abtnVerwerfen.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnVerwerfen.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnVerwerfen.Location = new System.Drawing.Point(717, 333);
|
||||
this.abtnVerwerfen.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.abtnVerwerfen.Name = "abtnVerwerfen";
|
||||
this.abtnVerwerfen.Size = new System.Drawing.Size(100, 25);
|
||||
this.abtnVerwerfen.TabIndex = 103;
|
||||
this.abtnVerwerfen.Text = "Verwerfen";
|
||||
this.abtnVerwerfen.TextBounds = new System.Drawing.Rectangle(1, 1, 98, 23);
|
||||
this.abtnVerwerfen.ToolTipText = "";
|
||||
this.abtnVerwerfen.Click += new System.EventHandler(this.abtnVerwerfen_Click);
|
||||
//
|
||||
// abtnAnwenden
|
||||
//
|
||||
this.abtnAnwenden.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.abtnAnwenden.AutoSizeWidth = false;
|
||||
this.abtnAnwenden.Image = null;
|
||||
this.abtnAnwenden.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnAnwenden.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnAnwenden.Location = new System.Drawing.Point(857, 333);
|
||||
this.abtnAnwenden.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.abtnAnwenden.Name = "abtnAnwenden";
|
||||
this.abtnAnwenden.Size = new System.Drawing.Size(100, 25);
|
||||
this.abtnAnwenden.TabIndex = 101;
|
||||
this.abtnAnwenden.Text = "Anwenden";
|
||||
this.abtnAnwenden.TextBounds = new System.Drawing.Rectangle(1, 1, 98, 23);
|
||||
this.abtnAnwenden.ToolTipText = "";
|
||||
this.abtnAnwenden.Click += new System.EventHandler(this.abtnAnwenden_Click);
|
||||
//
|
||||
// cbListBorderColor
|
||||
//
|
||||
this.cbListBorderColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbListBorderColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbListBorderColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbListBorderColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbListBorderColor.Location = new System.Drawing.Point(717, 160);
|
||||
this.cbListBorderColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbListBorderColor.Name = "cbListBorderColor";
|
||||
this.cbListBorderColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbListBorderColor.TabIndex = 106;
|
||||
//
|
||||
// cbLoadingDot3
|
||||
//
|
||||
this.cbLoadingDot3.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbLoadingDot3.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.tableDesign.SetColumnSpan(this.cbLoadingDot3, 3);
|
||||
this.cbLoadingDot3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbLoadingDot3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbLoadingDot3.Location = new System.Drawing.Point(167, 245);
|
||||
this.cbLoadingDot3.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbLoadingDot3.Name = "cbLoadingDot3";
|
||||
this.cbLoadingDot3.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbLoadingDot3.TabIndex = 108;
|
||||
//
|
||||
// label19
|
||||
//
|
||||
this.label19.AutoSize = true;
|
||||
this.label19.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label19.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label19.Location = new System.Drawing.Point(12, 211);
|
||||
this.label19.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label19.Name = "label19";
|
||||
this.label19.Size = new System.Drawing.Size(130, 30);
|
||||
this.label19.TabIndex = 112;
|
||||
this.label19.Text = "Punkt 1";
|
||||
this.label19.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// cbLoadingDot1
|
||||
//
|
||||
this.cbLoadingDot1.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbLoadingDot1.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbLoadingDot1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbLoadingDot1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbLoadingDot1.Location = new System.Drawing.Point(27, 245);
|
||||
this.cbLoadingDot1.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbLoadingDot1.Name = "cbLoadingDot1";
|
||||
this.cbLoadingDot1.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbLoadingDot1.TabIndex = 111;
|
||||
//
|
||||
// label20
|
||||
//
|
||||
this.label20.AutoSize = true;
|
||||
this.tableDesign.SetColumnSpan(this.label20, 3);
|
||||
this.label20.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label20.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label20.Location = new System.Drawing.Point(162, 211);
|
||||
this.label20.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label20.Name = "label20";
|
||||
this.label20.Size = new System.Drawing.Size(110, 30);
|
||||
this.label20.TabIndex = 113;
|
||||
this.label20.Text = "Punkt 3";
|
||||
this.label20.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label22
|
||||
//
|
||||
this.label22.AutoSize = true;
|
||||
this.tableDesign.SetColumnSpan(this.label22, 3);
|
||||
this.label22.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label22.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label22.Location = new System.Drawing.Point(162, 271);
|
||||
this.label22.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label22.Name = "label22";
|
||||
this.label22.Size = new System.Drawing.Size(110, 30);
|
||||
this.label22.TabIndex = 115;
|
||||
this.label22.Text = "Punkt 4";
|
||||
this.label22.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// label21
|
||||
//
|
||||
this.label21.AutoSize = true;
|
||||
this.label21.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label21.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label21.Location = new System.Drawing.Point(12, 271);
|
||||
this.label21.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.label21.Name = "label21";
|
||||
this.label21.Size = new System.Drawing.Size(130, 30);
|
||||
this.label21.TabIndex = 114;
|
||||
this.label21.Text = "Punkt 2";
|
||||
this.label21.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// cbAppHoverForeColor
|
||||
//
|
||||
this.cbAppHoverForeColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbAppHoverForeColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbAppHoverForeColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbAppHoverForeColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbAppHoverForeColor.Location = new System.Drawing.Point(437, 275);
|
||||
this.cbAppHoverForeColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbAppHoverForeColor.Name = "cbAppHoverForeColor";
|
||||
this.cbAppHoverForeColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbAppHoverForeColor.TabIndex = 92;
|
||||
//
|
||||
// cbAppHoverBackColor
|
||||
//
|
||||
this.cbAppHoverBackColor.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbAppHoverBackColor.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbAppHoverBackColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbAppHoverBackColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbAppHoverBackColor.Location = new System.Drawing.Point(577, 275);
|
||||
this.cbAppHoverBackColor.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbAppHoverBackColor.Name = "cbAppHoverBackColor";
|
||||
this.cbAppHoverBackColor.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbAppHoverBackColor.TabIndex = 94;
|
||||
//
|
||||
// cbAppHoverBorder
|
||||
//
|
||||
this.cbAppHoverBorder.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbAppHoverBorder.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbAppHoverBorder.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbAppHoverBorder.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbAppHoverBorder.Location = new System.Drawing.Point(717, 275);
|
||||
this.cbAppHoverBorder.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbAppHoverBorder.Name = "cbAppHoverBorder";
|
||||
this.cbAppHoverBorder.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbAppHoverBorder.TabIndex = 96;
|
||||
//
|
||||
// cbAppHoverImage
|
||||
//
|
||||
this.cbAppHoverImage.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.cbAppHoverImage.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbAppHoverImage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbAppHoverImage.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbAppHoverImage.Location = new System.Drawing.Point(857, 275);
|
||||
this.cbAppHoverImage.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.cbAppHoverImage.Name = "cbAppHoverImage";
|
||||
this.cbAppHoverImage.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbAppHoverImage.TabIndex = 98;
|
||||
//
|
||||
// cbLoadingDot4
|
||||
//
|
||||
this.cbLoadingDot4.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||
this.cbLoadingDot4.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.tableDesign.SetColumnSpan(this.cbLoadingDot4, 3);
|
||||
this.cbLoadingDot4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbLoadingDot4.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbLoadingDot4.Location = new System.Drawing.Point(167, 304);
|
||||
this.cbLoadingDot4.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
|
||||
this.cbLoadingDot4.Name = "cbLoadingDot4";
|
||||
this.tableDesign.SetRowSpan(this.cbLoadingDot4, 2);
|
||||
this.cbLoadingDot4.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbLoadingDot4.TabIndex = 110;
|
||||
//
|
||||
// cbLoadingDot2
|
||||
//
|
||||
this.cbLoadingDot2.Anchor = System.Windows.Forms.AnchorStyles.Top;
|
||||
this.cbLoadingDot2.BackColor = System.Drawing.SystemColors.ScrollBar;
|
||||
this.cbLoadingDot2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cbLoadingDot2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.cbLoadingDot2.Location = new System.Drawing.Point(27, 304);
|
||||
this.cbLoadingDot2.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
|
||||
this.cbLoadingDot2.Name = "cbLoadingDot2";
|
||||
this.tableDesign.SetRowSpan(this.cbLoadingDot2, 2);
|
||||
this.cbLoadingDot2.Size = new System.Drawing.Size(100, 21);
|
||||
this.cbLoadingDot2.TabIndex = 109;
|
||||
//
|
||||
// ucAdminDesigns
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.Controls.Add(this.tableDesign);
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.Name = "ucAdminDesigns";
|
||||
this.Size = new System.Drawing.Size(985, 377);
|
||||
this.tableDesign.ResumeLayout(false);
|
||||
this.tableDesign.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAppListX)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAppListY)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numWindowRadius)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numWindowBorder)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.TableLayoutPanel tableDesign;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label27;
|
||||
private System.Windows.Forms.NumericEx numWindowRadius;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.NumericEx numWindowBorder;
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.ComboBox cbFontFamily;
|
||||
private System.Windows.Forms.ComboBox cbWindowBackColor;
|
||||
private System.Windows.Forms.ComboBox cbWindowBorderColor;
|
||||
private System.Windows.Forms.ComboBox cbWindowActionColor;
|
||||
private System.Windows.Forms.Label label11;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.ComboBox cbWindowTitlebarColor;
|
||||
private System.Windows.Forms.ComboBox cbGroupBackColor;
|
||||
private System.Windows.Forms.ComboBox cbGroupBorderColor;
|
||||
private System.Windows.Forms.ComboBox cbGroupTitlebarColor;
|
||||
private System.Windows.Forms.ComboBox cbGroupActionColor;
|
||||
private System.Windows.Forms.NumericEx numAppListX;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.NumericEx numAppListY;
|
||||
private System.Windows.Forms.ComboBox cbAppDefaultForeColor;
|
||||
private System.Windows.Forms.ComboBox cbAppHoverForeColor;
|
||||
private System.Windows.Forms.ComboBox cbAppDefaultBackColor;
|
||||
private System.Windows.Forms.ComboBox cbAppHoverBackColor;
|
||||
private System.Windows.Forms.ComboBox cbAppDefaultBorder;
|
||||
private System.Windows.Forms.ComboBox cbAppHoverBorder;
|
||||
private System.Windows.Forms.ComboBox cbAppDefaultImage;
|
||||
private System.Windows.Forms.ComboBox cbAppHoverImage;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.AnimationButton abtnVerwerfen;
|
||||
private System.Windows.Forms.AnimationButton abtnAnwenden;
|
||||
private System.Windows.Forms.Label label17;
|
||||
private System.Windows.Forms.Label label16;
|
||||
private System.Windows.Forms.ComboBox cbListBorderColor;
|
||||
private System.Windows.Forms.Label label18;
|
||||
private System.Windows.Forms.ComboBox cbLoadingDot3;
|
||||
private System.Windows.Forms.ComboBox cbLoadingDot1;
|
||||
private System.Windows.Forms.ComboBox cbLoadingDot2;
|
||||
private System.Windows.Forms.ComboBox cbLoadingDot4;
|
||||
private System.Windows.Forms.Label label19;
|
||||
private System.Windows.Forms.Label label20;
|
||||
private System.Windows.Forms.Label label22;
|
||||
private System.Windows.Forms.Label label21;
|
||||
}
|
||||
}
|
||||
512
GFATask/UserControls/ucAdminDesigns.cs
Normal file
512
GFATask/UserControls/ucAdminDesigns.cs
Normal file
@@ -0,0 +1,512 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Text;
|
||||
using System.Linq;
|
||||
using System.Net.Mail;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
[Browsable(false), ToolboxItem(false)]
|
||||
public partial class ucAdminDesigns : UserControl
|
||||
{
|
||||
private List<string> FontFamilies { get => FontFamily.Families.Select(f => f.Name).OrderBy(f => f).ToList(); }
|
||||
|
||||
private ColorDialog ColorDialog { get; set; } = new ColorDialog() { AllowFullOpen = true, AnyColor = true, FullOpen = true };
|
||||
|
||||
public List<TableControlChange> ControlChanges { get; } = new List<TableControlChange>();
|
||||
|
||||
|
||||
|
||||
private void DoFontFamily(object value)
|
||||
{
|
||||
Config.Main.FontFamily = value.ToString();
|
||||
typeof(Forms).GetProperties().ToList().ForEach(prop =>
|
||||
{
|
||||
FormEx form = (FormEx)prop.GetValue(typeof(Forms));
|
||||
Font font = new Font((string)value, Config.User.Window.FontSize);
|
||||
form.Font = font;
|
||||
Accumulations.Controls(form).ToList().ForEach(ctl => ctl.Font = font);
|
||||
});
|
||||
Win32API.SendMessage(Forms.Main.Handle, (int)WM.ENTERSIZEMOVE, 0, 0);
|
||||
Win32API.SendMessage(Forms.Main.Handle, (int)WM.EXITSIZEMOVE, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
private void DoWindowRadius(object value)
|
||||
{
|
||||
Config.Main.Sizes.Window.Radius = int.Parse(value.ToString());
|
||||
}
|
||||
|
||||
|
||||
private void DoListBorderX(object value)
|
||||
{
|
||||
Config.Main.Sizes.List.Border = new Point(int.Parse(value.ToString()), Config.Main.Sizes.List.Border.Y);
|
||||
}
|
||||
|
||||
private void DoListBorderY(object value)
|
||||
{
|
||||
Config.Main.Sizes.List.Border = new Point(Config.Main.Sizes.List.Border.X, int.Parse(value.ToString()));
|
||||
}
|
||||
|
||||
private void CreateGeneralBindings()
|
||||
{
|
||||
cbFontFamily.DrawItem += LbFontFamily_DrawItem;
|
||||
cbFontFamily.Items.AddRange(FontFamilies.ToArray());
|
||||
|
||||
cbFontFamily.SelectedItem = Config.Main.FontFamily;
|
||||
cbFontFamily.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main, "FontFamily", (sender as ComboBox), (sender as ComboBox).SelectedItem, this.DoFontFamily); };
|
||||
}
|
||||
|
||||
private void LbFontFamily_DrawItem(object sender, DrawItemEventArgs e)
|
||||
{
|
||||
string fontfamilyitem = (string)(sender as ListBox).Items[e.Index];
|
||||
e.DrawBackground();
|
||||
e.DrawFocusRectangle();
|
||||
e.Graphics.DrawString(fontfamilyitem, new Font(fontfamilyitem, Config.User.Window.FontSize), new SolidBrush((sender as ListBox).ForeColor), e.Bounds);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Fügt der "Zurücksetzen"-Auflistung das Steuerelement hinzu, damit der alte Wert wiederhergestellt werden kann
|
||||
/// </summary>
|
||||
/// <param name="control"></param>
|
||||
private void AddResetButton(Control control)
|
||||
{
|
||||
if (!this.ControlChanges.Select(change => change.Control).Contains(control))
|
||||
{
|
||||
TableControlChange change = new TableControlChange(tableDesign, control.Location, 25);
|
||||
change.Click += (sender, e) =>
|
||||
{
|
||||
XObjects.PreChanging.Reset(change.Control);
|
||||
(sender as TableControlChange).Clear();
|
||||
this.ControlChanges.Remove(change);
|
||||
tableDesign.Invalidate();
|
||||
};
|
||||
this.ControlChanges.Add(change);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void CreateSizeBindings()
|
||||
{
|
||||
numWindowRadius.Value = (decimal)Config.Main.Sizes.Window.Radius;
|
||||
numWindowRadius.ValueChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Sizes.Window, "Radius", (sender as NumericEx), (int)(sender as NumericEx).Value, this.DoWindowRadius); };
|
||||
|
||||
numWindowBorder.Value = (decimal)Config.Main.Sizes.Window.Border;
|
||||
numWindowBorder.ValueChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Sizes.Window, "Border", (sender as NumericEx), (int)(sender as NumericEx).Value, this.DoWindowBorder); };
|
||||
|
||||
numAppListX.Value = (decimal)Config.Main.Sizes.List.Border.X;
|
||||
numAppListX.ValueChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Sizes.List.Border, "X", (sender as NumericEx), (int)(sender as NumericEx).Value, this.DoListBorderX); };
|
||||
|
||||
numAppListY.Value = (decimal)Config.Main.Sizes.List.Border.Y;
|
||||
numAppListY.ValueChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Sizes.List.Border, "Y", (sender as NumericEx), (int)(sender as NumericEx).Value, this.DoListBorderY); };
|
||||
}
|
||||
|
||||
|
||||
public void DoWindowBackColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Window.BackColor = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoWindowBorderColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Window.Border = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoWindowAction(object value)
|
||||
{
|
||||
Config.Main.Colors.Window.Action = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoWindowTitlebarBackColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Window.TitlebarBackColor = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoGroupAction(object value)
|
||||
{
|
||||
Config.Main.Colors.Window.Action = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
private void DoGroupBorderColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Window.Border = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
private void DoGroupBackColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Window.BackColor = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
private void DoGroupTitlebarBackColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Window.TitlebarBackColor = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoListBorderColor(object value)
|
||||
{
|
||||
Config.Main.Colors.List.Border = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoAppDefaultBackColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Apps.Default.BackColor = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoAppDefaultBorderColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Apps.Default.Border = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoAppDefaultForeColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Apps.Default.ForeColor = (Color)value;
|
||||
}
|
||||
|
||||
private void DoAppDefaultImage(object value)
|
||||
{
|
||||
Config.Main.Colors.Apps.Default.Image = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoAppHoverBackColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Apps.Hover.BackColor = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoAppHoverBorderColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Apps.Hover.Border = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoAppHoverForeColor(object value)
|
||||
{
|
||||
Config.Main.Colors.Apps.Hover.ForeColor = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoAppHoverImage(object value)
|
||||
{
|
||||
Config.Main.Colors.Apps.Hover.Image = (Color)value;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoWindowBorder(object value)
|
||||
{
|
||||
Config.Main.Sizes.Window.Border = int.Parse(value.ToString());
|
||||
this.SetWindowBorder();
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoLoadingAnimationDot1(object value)
|
||||
{
|
||||
Config.Main.Colors.LoadingAnimation.Dot1 = (Color)value;
|
||||
XObjects.LoadingPanel.MovingPoints[0].Fill = Config.Main.Colors.LoadingAnimation.Dot1;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoLoadingAnimationDot2(object value)
|
||||
{
|
||||
Config.Main.Colors.LoadingAnimation.Dot2 = (Color)value;
|
||||
XObjects.LoadingPanel.MovingPoints[1].Fill = Config.Main.Colors.LoadingAnimation.Dot2;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoLoadingAnimationDot3(object value)
|
||||
{
|
||||
Config.Main.Colors.LoadingAnimation.Dot3 = (Color)value;
|
||||
XObjects.LoadingPanel.MovingPoints[2].Fill = Config.Main.Colors.LoadingAnimation.Dot3;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
private void DoLoadingAnimationDot4(object value)
|
||||
{
|
||||
Config.Main.Colors.LoadingAnimation.Dot4 = (Color)value;
|
||||
XObjects.LoadingPanel.MovingPoints[3].Fill = Config.Main.Colors.LoadingAnimation.Dot4;
|
||||
this.SetNewDesign();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void CreateColorBindings()
|
||||
{
|
||||
this.DesignComboBoxes(cbWindowBackColor, Config.Main.Colors.Window.BackColor);
|
||||
cbWindowBackColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Window, "BackColor", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoWindowBackColor); };
|
||||
|
||||
this.DesignComboBoxes(cbWindowBorderColor, Config.Main.Colors.Window.Border);
|
||||
cbWindowBorderColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Window, "Border", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoWindowBorderColor); };
|
||||
|
||||
this.DesignComboBoxes(cbWindowActionColor, Config.Main.Colors.Window.Action);
|
||||
cbWindowActionColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Window, "Action", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoWindowAction); };
|
||||
|
||||
this.DesignComboBoxes(cbWindowTitlebarColor, Config.Main.Colors.Window.TitlebarBackColor);
|
||||
cbWindowTitlebarColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Window, "TitlebarBackColor", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoWindowTitlebarBackColor); };
|
||||
|
||||
this.DesignComboBoxes(cbGroupActionColor, Config.Main.Colors.GroupWindow.Action);
|
||||
cbGroupActionColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.GroupWindow, "Action", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoGroupAction); };
|
||||
|
||||
this.DesignComboBoxes(cbGroupBackColor, Config.Main.Colors.GroupWindow.BackColor);
|
||||
cbGroupBackColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.GroupWindow, "BackColor", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoGroupBackColor); };
|
||||
|
||||
this.DesignComboBoxes(cbGroupBorderColor, Config.Main.Colors.GroupWindow.Border);
|
||||
cbGroupBorderColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.GroupWindow, "Border", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoGroupBorderColor); };
|
||||
|
||||
this.DesignComboBoxes(cbGroupTitlebarColor, Config.Main.Colors.GroupWindow.TitlebarBackColor);
|
||||
cbGroupTitlebarColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.GroupWindow, "TitlebarBackColor", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoGroupTitlebarBackColor); };
|
||||
|
||||
this.DesignComboBoxes(cbListBorderColor, Config.Main.Colors.List.Border);
|
||||
cbListBorderColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.List, "Border", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoListBorderColor); };
|
||||
|
||||
this.DesignComboBoxes(cbAppDefaultBackColor, Config.Main.Colors.Apps.Default.BackColor);
|
||||
cbAppDefaultBackColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Apps.Default, "BackColor", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoAppDefaultBackColor); };
|
||||
|
||||
this.DesignComboBoxes(cbAppDefaultForeColor, Config.Main.Colors.Apps.Default.ForeColor);
|
||||
cbAppDefaultForeColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Apps.Default, "ForeColor", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoAppDefaultForeColor); };
|
||||
|
||||
this.DesignComboBoxes(cbAppDefaultBorder, Config.Main.Colors.Apps.Default.Border);
|
||||
cbAppDefaultBorder.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Apps.Default, "Border", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoAppDefaultBorderColor); };
|
||||
|
||||
this.DesignComboBoxes(cbAppDefaultImage, Config.Main.Colors.Apps.Default.Image);
|
||||
cbAppDefaultImage.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Apps.Default, "Image", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoAppDefaultImage); };
|
||||
|
||||
this.DesignComboBoxes(cbAppHoverBackColor, Config.Main.Colors.Apps.Hover.BackColor);
|
||||
cbAppHoverBackColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Apps.Hover, "BackColor", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoAppHoverBackColor); };
|
||||
|
||||
this.DesignComboBoxes(cbAppHoverForeColor, Config.Main.Colors.Apps.Hover.ForeColor);
|
||||
cbAppHoverForeColor.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Apps.Hover, "ForeColor", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoAppHoverForeColor); };
|
||||
|
||||
this.DesignComboBoxes(cbAppHoverBorder, Config.Main.Colors.Apps.Hover.Border);
|
||||
cbAppHoverBorder.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Apps.Hover, "Border", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoAppHoverBorderColor); };
|
||||
|
||||
this.DesignComboBoxes(cbAppHoverImage, Config.Main.Colors.Apps.Hover.Image);
|
||||
cbAppHoverImage.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.Apps.Hover, "Image", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoAppHoverImage); };
|
||||
|
||||
this.DesignComboBoxes(cbLoadingDot1, Config.Main.Colors.LoadingAnimation.Dot1);
|
||||
cbLoadingDot1.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.LoadingAnimation, "Dot1", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoLoadingAnimationDot1); };
|
||||
|
||||
this.DesignComboBoxes(cbLoadingDot2, Config.Main.Colors.LoadingAnimation.Dot2);
|
||||
cbLoadingDot2.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.LoadingAnimation, "Dot2", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoLoadingAnimationDot2); };
|
||||
|
||||
this.DesignComboBoxes(cbLoadingDot3, Config.Main.Colors.LoadingAnimation.Dot3);
|
||||
cbLoadingDot3.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.LoadingAnimation, "Dot3", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoLoadingAnimationDot3); };
|
||||
|
||||
this.DesignComboBoxes(cbLoadingDot4, Config.Main.Colors.LoadingAnimation.Dot4);
|
||||
cbLoadingDot4.SelectedIndexChanged += (sender, e) => { if (this.Created) XObjects.PreChanging.Add(Config.Main.Colors.LoadingAnimation, "Dot4", (sender as ComboBox), ToColor((sender as ComboBox).SelectedItem.ToString()), this.DoLoadingAnimationDot4); };
|
||||
}
|
||||
|
||||
|
||||
private Color ToColor(string comboboxitem)
|
||||
{
|
||||
int[] rgb = new int[] { int.Parse(comboboxitem.Split(';')[0]), int.Parse(comboboxitem.Split(';')[1]), int.Parse(comboboxitem.Split(';')[2]) };
|
||||
return Color.FromArgb(rgb[0], rgb[1], rgb[2]);
|
||||
}
|
||||
|
||||
private void DesignComboBoxes(ComboBox cb, Color color)
|
||||
{
|
||||
cb.BackColor = color;
|
||||
cb.ForeColor = Coloring.GetReadableForeColor(cb.BackColor);
|
||||
cb.Items.Add($"{color.R};{color.G};{color.B}");
|
||||
cb.SelectedIndex = 0;
|
||||
cb.MouseClick += cbColor_MouseClick;
|
||||
cb.SelectedIndexChanged += cbColor_SelectedIndexChanged;
|
||||
}
|
||||
|
||||
private void cbColor_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
ComboBox _this = sender as ComboBox;
|
||||
if (this.Created)
|
||||
{
|
||||
_this.BackColor = Color.FromArgb(int.Parse(_this.Text.Split(';')[0]), int.Parse(_this.Text.Split(';')[1]), int.Parse(_this.Text.Split(';')[2]));
|
||||
_this.ForeColor = Coloring.GetReadableForeColor(_this.BackColor);
|
||||
}
|
||||
}
|
||||
|
||||
private void cbColor_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
ComboBox _this = sender as ComboBox;
|
||||
ColorDialog.Color = _this.BackColor;
|
||||
if (ColorDialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
_this.BackColor = ColorDialog.Color;
|
||||
_this.ForeColor = Coloring.GetReadableForeColor(_this.BackColor);
|
||||
_this.Items.Add($"{ColorDialog.Color.R};{ColorDialog.Color.G};{ColorDialog.Color.B}");
|
||||
_this.SelectedIndex = _this.Items.Count- 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public ucAdminDesigns()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.SetDefaultDesign();
|
||||
|
||||
this.CreateGeneralBindings();
|
||||
this.CreateSizeBindings();
|
||||
this.CreateColorBindings();
|
||||
|
||||
|
||||
XObjects.PreChanging.GetTemps(Accumulations.Controls(this));
|
||||
|
||||
|
||||
tableDesign.Controls.Cast<Control>().Where(ctl => ctl.GetType() != typeof(Label) && ctl.GetType() != typeof(AnimationButton)).ToList().ForEach(ctl =>
|
||||
{
|
||||
if (typeof(NumericEx) == ctl.GetType())
|
||||
{
|
||||
(ctl as NumericEx).ValueChanged += (s, evt) =>
|
||||
{
|
||||
AddResetButton(ctl);
|
||||
};
|
||||
}
|
||||
else if (typeof(ComboBox) == ctl.GetType())
|
||||
{
|
||||
(ctl as ComboBox).SelectedIndexChanged += (s, evt) =>
|
||||
{
|
||||
AddResetButton(ctl);
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
label11.Paint += Designer.DrawHeaderLabel;
|
||||
label4.Paint += Designer.DrawHeaderLabel;
|
||||
label18.Paint += Designer.DrawHeaderLabel;
|
||||
}
|
||||
|
||||
|
||||
private void numWindowRadius_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if(this.Created)
|
||||
{
|
||||
typeof(Forms).GetProperties().ToList().ForEach(prop =>
|
||||
{
|
||||
FormEx form = ((FormEx)prop.GetValue(typeof(Forms)));
|
||||
|
||||
form.Radius = (int)numWindowRadius.Value;
|
||||
if (form.Name == Forms.Main.Name)
|
||||
((FormMain)form).SetActionRegion();
|
||||
form.Invalidate();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void numWindowBorder_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (this.Created)
|
||||
{
|
||||
this.SetWindowBorder();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetNewDesign()
|
||||
{
|
||||
JSON.Save(JSONConfig.Main);
|
||||
Config.Main = JSON.Read<Models.Config.Main>(Paths.MainConfig.FullName);
|
||||
|
||||
XObjects.LoadingPanel.MovingPoints[0].Fill = Config.Main.Colors.LoadingAnimation.Dot1;
|
||||
XObjects.LoadingPanel.MovingPoints[1].Fill = Config.Main.Colors.LoadingAnimation.Dot2;
|
||||
XObjects.LoadingPanel.MovingPoints[2].Fill = Config.Main.Colors.LoadingAnimation.Dot3;
|
||||
XObjects.LoadingPanel.MovingPoints[3].Fill = Config.Main.Colors.LoadingAnimation.Dot4;
|
||||
|
||||
typeof(Forms).GetProperties().ToList().ForEach(prop =>
|
||||
{
|
||||
FormEx form = ((FormEx)prop.GetValue(typeof(Forms)));
|
||||
form.SetDefaultDesign();
|
||||
form.Invalidate();
|
||||
});
|
||||
}
|
||||
|
||||
public void SetWindowBorder()
|
||||
{
|
||||
typeof(Forms).GetProperties().ToList().ForEach(prop =>
|
||||
{
|
||||
FormEx form = ((FormEx)prop.GetValue(typeof(Forms)));
|
||||
|
||||
form.BorderWidth = (int)numWindowBorder.Value;
|
||||
if (form.Name == Forms.Main.Name)
|
||||
{
|
||||
((FormMain)form).SetOpacityStep();
|
||||
((FormMain)form).SetStartValue();
|
||||
}
|
||||
form.Invalidate();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Übernimmt alle vorläufigen Speicherungen in die JSON-Config
|
||||
/// </summary>
|
||||
/// <param name="json">Gibt die JSON-Config Datei an</param>
|
||||
private void SaveAll(JSONConfig json)
|
||||
{
|
||||
XObjects.PreChanging.CommitAll();
|
||||
this.ControlChanges.ForEach(change => change.Clear());
|
||||
this.ControlChanges.Clear();
|
||||
JSON.Save(json);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Leert die vorläufigen Speicherungen aus der Auflistung
|
||||
/// </summary>
|
||||
private void ResetAll()
|
||||
{
|
||||
XObjects.PreChanging.ResetAll();
|
||||
this.ControlChanges.ForEach(change => change.Clear());
|
||||
this.ControlChanges.Clear();
|
||||
tableDesign.Invalidate();
|
||||
}
|
||||
|
||||
private void abtnAnwenden_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.SaveAll(JSONConfig.Main);
|
||||
this.ResetAll();
|
||||
XObjects.FrontEndRefresh.Update(new GFATaskStream() { PipeType = NetPipeType.MainConfig });
|
||||
}
|
||||
|
||||
private void abtnVerwerfen_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.ResetAll();
|
||||
}
|
||||
|
||||
private void numAppListX_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
XObjects.AllAppListPanels.ForEach(applist =>
|
||||
{
|
||||
applist.Border = new Point(int.Parse(numAppListX.Value.ToString()), applist.Border.Y);
|
||||
applist.Invalidate(true);
|
||||
});
|
||||
}
|
||||
|
||||
private void numAppListY_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
XObjects.AllAppListPanels.ForEach(applist =>
|
||||
{
|
||||
int bottom = applist.Padding.Bottom < int.Parse(numAppListY.Value.ToString()) ? int.Parse(numAppListY.Value.ToString()) : applist.Padding.Bottom;
|
||||
applist.Padding = new Padding(applist.Padding.Left, applist.Padding.Top, applist.Padding.Right, bottom);
|
||||
applist.Padding = new Padding(applist.Padding.Left, applist.Padding.Top, applist.Padding.Right, bottom);
|
||||
applist.Border = new Point(applist.Border.X, int.Parse(numAppListY.Value.ToString()));
|
||||
applist.Invalidate(true);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/UserControls/ucAdminDesigns.resx
Normal file
120
GFATask/UserControls/ucAdminDesigns.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
782
GFATask/UserControls/ucAdminGeneral.Designer.cs
generated
Normal file
782
GFATask/UserControls/ucAdminGeneral.Designer.cs
generated
Normal file
@@ -0,0 +1,782 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class ucAdminGeneral
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.tableGeneral = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.tbUserDomain = new System.Windows.Forms.TextBox();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.label9 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.rtbDomains = new System.Windows.Forms.RichTextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.switch_use_ad_groups = new System.Windows.Forms.SwitchButton();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.tbAdGroupAdmins = new System.Windows.Forms.TextBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.abtnAcceptDomains = new System.Windows.Forms.AnimationButton();
|
||||
this.label18 = new System.Windows.Forms.Label();
|
||||
this.abtnConfirmAD = new System.Windows.Forms.AnimationButton();
|
||||
this.tbMailAccountUser = new System.Windows.Forms.TextBox();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.tbMailAccountPwd = new System.Windows.Forms.TextBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.tbMailAccountHost = new System.Windows.Forms.TextBox();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.numMailAccountPort = new System.Windows.Forms.NumericEx();
|
||||
this.abtnConfirmMailAccount = new System.Windows.Forms.AnimationButton();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.mtbPwd = new System.Windows.Forms.MaskedTextBox();
|
||||
this.abtnChangePwd = new System.Windows.Forms.AnimationButton();
|
||||
this.label19 = new System.Windows.Forms.Label();
|
||||
this.tbCTXxmlNode = new System.Windows.Forms.TextBox();
|
||||
this.label20 = new System.Windows.Forms.Label();
|
||||
this.tbCTXIconPath = new System.Windows.Forms.TextBox();
|
||||
this.label21 = new System.Windows.Forms.Label();
|
||||
this.label22 = new System.Windows.Forms.Label();
|
||||
this.tbCTXicaSelfService = new System.Windows.Forms.TextBox();
|
||||
this.tbCTXappsLocation = new System.Windows.Forms.TextBox();
|
||||
this.abtnConfirmCitrix = new System.Windows.Forms.AnimationButton();
|
||||
this.tbMailMessageTo = new System.Windows.Forms.TextBox();
|
||||
this.label17 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.tbMailMessageFrom = new System.Windows.Forms.TextBox();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.tbMailMessageDisplayName = new System.Windows.Forms.TextBox();
|
||||
this.tooltip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.switch_frontendupdate = new System.Windows.Forms.SwitchButton();
|
||||
this.label23 = new System.Windows.Forms.Label();
|
||||
this.tableGeneral.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numMailAccountPort)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableGeneral
|
||||
//
|
||||
this.tableGeneral.ColumnCount = 9;
|
||||
this.tableGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 110F));
|
||||
this.tableGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 128F));
|
||||
this.tableGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 118F));
|
||||
this.tableGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 147F));
|
||||
this.tableGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 118F));
|
||||
this.tableGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 157F));
|
||||
this.tableGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 150F));
|
||||
this.tableGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableGeneral.Controls.Add(this.tbUserDomain, 6, 4);
|
||||
this.tableGeneral.Controls.Add(this.label15, 3, 7);
|
||||
this.tableGeneral.Controls.Add(this.label9, 1, 7);
|
||||
this.tableGeneral.Controls.Add(this.label4, 7, 1);
|
||||
this.tableGeneral.Controls.Add(this.label3, 5, 1);
|
||||
this.tableGeneral.Controls.Add(this.label11, 1, 1);
|
||||
this.tableGeneral.Controls.Add(this.rtbDomains, 7, 3);
|
||||
this.tableGeneral.Controls.Add(this.label5, 7, 2);
|
||||
this.tableGeneral.Controls.Add(this.switch_use_ad_groups, 6, 2);
|
||||
this.tableGeneral.Controls.Add(this.label14, 5, 2);
|
||||
this.tableGeneral.Controls.Add(this.tbAdGroupAdmins, 6, 3);
|
||||
this.tableGeneral.Controls.Add(this.label6, 5, 3);
|
||||
this.tableGeneral.Controls.Add(this.abtnAcceptDomains, 7, 7);
|
||||
this.tableGeneral.Controls.Add(this.label18, 5, 4);
|
||||
this.tableGeneral.Controls.Add(this.abtnConfirmAD, 5, 5);
|
||||
this.tableGeneral.Controls.Add(this.tbMailAccountUser, 4, 2);
|
||||
this.tableGeneral.Controls.Add(this.label8, 3, 2);
|
||||
this.tableGeneral.Controls.Add(this.tbMailAccountPwd, 4, 3);
|
||||
this.tableGeneral.Controls.Add(this.label10, 3, 3);
|
||||
this.tableGeneral.Controls.Add(this.tbMailAccountHost, 4, 4);
|
||||
this.tableGeneral.Controls.Add(this.label12, 3, 4);
|
||||
this.tableGeneral.Controls.Add(this.label13, 3, 5);
|
||||
this.tableGeneral.Controls.Add(this.numMailAccountPort, 4, 5);
|
||||
this.tableGeneral.Controls.Add(this.abtnConfirmMailAccount, 1, 6);
|
||||
this.tableGeneral.Controls.Add(this.label1, 1, 8);
|
||||
this.tableGeneral.Controls.Add(this.mtbPwd, 2, 8);
|
||||
this.tableGeneral.Controls.Add(this.abtnChangePwd, 1, 9);
|
||||
this.tableGeneral.Controls.Add(this.label19, 3, 8);
|
||||
this.tableGeneral.Controls.Add(this.tbCTXxmlNode, 4, 8);
|
||||
this.tableGeneral.Controls.Add(this.label20, 3, 9);
|
||||
this.tableGeneral.Controls.Add(this.tbCTXIconPath, 4, 9);
|
||||
this.tableGeneral.Controls.Add(this.label21, 5, 8);
|
||||
this.tableGeneral.Controls.Add(this.label22, 5, 9);
|
||||
this.tableGeneral.Controls.Add(this.tbCTXicaSelfService, 6, 8);
|
||||
this.tableGeneral.Controls.Add(this.tbCTXappsLocation, 6, 9);
|
||||
this.tableGeneral.Controls.Add(this.abtnConfirmCitrix, 3, 10);
|
||||
this.tableGeneral.Controls.Add(this.tbMailMessageTo, 2, 2);
|
||||
this.tableGeneral.Controls.Add(this.label17, 1, 2);
|
||||
this.tableGeneral.Controls.Add(this.label2, 1, 3);
|
||||
this.tableGeneral.Controls.Add(this.tbMailMessageFrom, 2, 3);
|
||||
this.tableGeneral.Controls.Add(this.label16, 1, 4);
|
||||
this.tableGeneral.Controls.Add(this.tbMailMessageDisplayName, 2, 4);
|
||||
this.tableGeneral.Controls.Add(this.switch_frontendupdate, 7, 10);
|
||||
this.tableGeneral.Controls.Add(this.label23, 7, 9);
|
||||
this.tableGeneral.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableGeneral.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableGeneral.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.tableGeneral.Name = "tableGeneral";
|
||||
this.tableGeneral.RowCount = 13;
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableGeneral.Size = new System.Drawing.Size(940, 380);
|
||||
this.tableGeneral.TabIndex = 0;
|
||||
//
|
||||
// tbUserDomain
|
||||
//
|
||||
this.tbUserDomain.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbUserDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbUserDomain.Location = new System.Drawing.Point(627, 110);
|
||||
this.tbUserDomain.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbUserDomain.Name = "tbUserDomain";
|
||||
this.tbUserDomain.Size = new System.Drawing.Size(147, 20);
|
||||
this.tbUserDomain.TabIndex = 129;
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.AutoSize = true;
|
||||
this.tableGeneral.SetColumnSpan(this.label15, 4);
|
||||
this.label15.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label15.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label15.Location = new System.Drawing.Point(249, 208);
|
||||
this.label15.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(530, 35);
|
||||
this.label15.TabIndex = 124;
|
||||
this.label15.Text = "Citrix";
|
||||
this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.tableGeneral.SetColumnSpan(this.label9, 2);
|
||||
this.label9.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))));
|
||||
this.label9.Location = new System.Drawing.Point(6, 208);
|
||||
this.label9.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(228, 35);
|
||||
this.label9.TabIndex = 106;
|
||||
this.label9.Text = "Admin-Login";
|
||||
this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label4.Location = new System.Drawing.Point(789, -2);
|
||||
this.label4.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(140, 35);
|
||||
this.label4.TabIndex = 84;
|
||||
this.label4.Text = "Sonstiges";
|
||||
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.tableGeneral.SetColumnSpan(this.label3, 2);
|
||||
this.label3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label3.Location = new System.Drawing.Point(514, -2);
|
||||
this.label3.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(265, 35);
|
||||
this.label3.TabIndex = 83;
|
||||
this.label3.Text = "Active Directory";
|
||||
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label11
|
||||
//
|
||||
this.label11.AutoSize = true;
|
||||
this.tableGeneral.SetColumnSpan(this.label11, 4);
|
||||
this.label11.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label11.Location = new System.Drawing.Point(11, -2);
|
||||
this.label11.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(493, 35);
|
||||
this.label11.TabIndex = 82;
|
||||
this.label11.Text = "Mail-Accounts";
|
||||
this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// rtbDomains
|
||||
//
|
||||
this.rtbDomains.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.rtbDomains.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.rtbDomains.Location = new System.Drawing.Point(794, 68);
|
||||
this.rtbDomains.Margin = new System.Windows.Forms.Padding(10, 0, 0, 0);
|
||||
this.rtbDomains.Name = "rtbDomains";
|
||||
this.tableGeneral.SetRowSpan(this.rtbDomains, 4);
|
||||
this.rtbDomains.Size = new System.Drawing.Size(140, 140);
|
||||
this.rtbDomains.TabIndex = 59;
|
||||
this.rtbDomains.Text = "";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(809, 44);
|
||||
this.label5.Margin = new System.Windows.Forms.Padding(10, 0, 0, 0);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(109, 13);
|
||||
this.label5.TabIndex = 103;
|
||||
this.label5.Text = "Favoriten gültige TLD";
|
||||
this.label5.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// switch_use_ad_groups
|
||||
//
|
||||
this.switch_use_ad_groups.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.switch_use_ad_groups.BackColor = System.Drawing.Color.White;
|
||||
this.switch_use_ad_groups.ButtonWidth = 35;
|
||||
this.switch_use_ad_groups.Checked = false;
|
||||
this.switch_use_ad_groups.CheckState = System.Windows.Forms.CheckState.Unchecked;
|
||||
this.switch_use_ad_groups.CheckThreeState = false;
|
||||
this.switch_use_ad_groups.ColorActive = System.Drawing.Color.DarkSeaGreen;
|
||||
this.switch_use_ad_groups.ColorInactive = System.Drawing.Color.OrangeRed;
|
||||
this.switch_use_ad_groups.Location = new System.Drawing.Point(627, 38);
|
||||
this.switch_use_ad_groups.Margin = new System.Windows.Forms.Padding(0, 5, 4, 5);
|
||||
this.switch_use_ad_groups.Name = "switch_use_ad_groups";
|
||||
this.switch_use_ad_groups.RoundedButton = true;
|
||||
this.switch_use_ad_groups.ShowBoarder = false;
|
||||
this.switch_use_ad_groups.Size = new System.Drawing.Size(80, 25);
|
||||
this.switch_use_ad_groups.TabIndex = 58;
|
||||
this.switch_use_ad_groups.Text = "switchButton1";
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Location = new System.Drawing.Point(537, 44);
|
||||
this.label14.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(85, 13);
|
||||
this.label14.TabIndex = 57;
|
||||
this.label14.Text = "AD-Gruppenfilter";
|
||||
//
|
||||
// tbAdGroupAdmins
|
||||
//
|
||||
this.tbAdGroupAdmins.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbAdGroupAdmins.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbAdGroupAdmins.Location = new System.Drawing.Point(627, 75);
|
||||
this.tbAdGroupAdmins.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbAdGroupAdmins.Name = "tbAdGroupAdmins";
|
||||
this.tbAdGroupAdmins.Size = new System.Drawing.Size(147, 20);
|
||||
this.tbAdGroupAdmins.TabIndex = 105;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(553, 79);
|
||||
this.label6.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(69, 13);
|
||||
this.label6.TabIndex = 104;
|
||||
this.label6.Text = "Admingruppe";
|
||||
this.label6.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// abtnAcceptDomains
|
||||
//
|
||||
this.abtnAcceptDomains.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.abtnAcceptDomains.AutoSizeWidth = false;
|
||||
this.abtnAcceptDomains.Image = null;
|
||||
this.abtnAcceptDomains.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnAcceptDomains.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnAcceptDomains.Location = new System.Drawing.Point(794, 211);
|
||||
this.abtnAcceptDomains.Margin = new System.Windows.Forms.Padding(10, 0, 0, 0);
|
||||
this.abtnAcceptDomains.Name = "abtnAcceptDomains";
|
||||
this.abtnAcceptDomains.Size = new System.Drawing.Size(140, 29);
|
||||
this.abtnAcceptDomains.TabIndex = 102;
|
||||
this.abtnAcceptDomains.Text = "TLD übernehmen";
|
||||
this.abtnAcceptDomains.TextBounds = new System.Drawing.Rectangle(1, 1, 138, 27);
|
||||
this.abtnAcceptDomains.ToolTipText = "";
|
||||
this.abtnAcceptDomains.WordWrap = true;
|
||||
//
|
||||
// label18
|
||||
//
|
||||
this.label18.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label18.AutoSize = true;
|
||||
this.label18.Location = new System.Drawing.Point(559, 114);
|
||||
this.label18.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label18.Name = "label18";
|
||||
this.label18.Size = new System.Drawing.Size(63, 13);
|
||||
this.label18.TabIndex = 130;
|
||||
this.label18.Text = "Userdomain";
|
||||
this.label18.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// abtnConfirmAD
|
||||
//
|
||||
this.abtnConfirmAD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.abtnConfirmAD.AutoSizeWidth = false;
|
||||
this.tableGeneral.SetColumnSpan(this.abtnConfirmAD, 2);
|
||||
this.abtnConfirmAD.Image = null;
|
||||
this.abtnConfirmAD.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnConfirmAD.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnConfirmAD.Location = new System.Drawing.Point(519, 145);
|
||||
this.abtnConfirmAD.Margin = new System.Windows.Forms.Padding(10, 0, 0, 0);
|
||||
this.abtnConfirmAD.Name = "abtnConfirmAD";
|
||||
this.abtnConfirmAD.Size = new System.Drawing.Size(265, 21);
|
||||
this.abtnConfirmAD.TabIndex = 135;
|
||||
this.abtnConfirmAD.Text = "AD Änderungen übernehmen";
|
||||
this.abtnConfirmAD.TextBounds = new System.Drawing.Rectangle(1, 1, 263, 19);
|
||||
this.abtnConfirmAD.ToolTipText = "";
|
||||
this.abtnConfirmAD.WordWrap = true;
|
||||
this.abtnConfirmAD.Click += new System.EventHandler(this.abtnConfirmAD_Click);
|
||||
//
|
||||
// tbMailAccountUser
|
||||
//
|
||||
this.tbMailAccountUser.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbMailAccountUser.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbMailAccountUser.Location = new System.Drawing.Point(362, 40);
|
||||
this.tbMailAccountUser.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbMailAccountUser.Name = "tbMailAccountUser";
|
||||
this.tbMailAccountUser.Size = new System.Drawing.Size(137, 20);
|
||||
this.tbMailAccountUser.TabIndex = 111;
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(308, 44);
|
||||
this.label8.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(49, 13);
|
||||
this.label8.TabIndex = 109;
|
||||
this.label8.Text = "Benutzer";
|
||||
//
|
||||
// tbMailAccountPwd
|
||||
//
|
||||
this.tbMailAccountPwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbMailAccountPwd.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbMailAccountPwd.Location = new System.Drawing.Point(362, 75);
|
||||
this.tbMailAccountPwd.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbMailAccountPwd.Name = "tbMailAccountPwd";
|
||||
this.tbMailAccountPwd.Size = new System.Drawing.Size(137, 20);
|
||||
this.tbMailAccountPwd.TabIndex = 108;
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(307, 79);
|
||||
this.label10.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(50, 13);
|
||||
this.label10.TabIndex = 110;
|
||||
this.label10.Text = "Passwort";
|
||||
//
|
||||
// tbMailAccountHost
|
||||
//
|
||||
this.tbMailAccountHost.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbMailAccountHost.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbMailAccountHost.Location = new System.Drawing.Point(362, 110);
|
||||
this.tbMailAccountHost.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbMailAccountHost.Name = "tbMailAccountHost";
|
||||
this.tbMailAccountHost.Size = new System.Drawing.Size(137, 20);
|
||||
this.tbMailAccountHost.TabIndex = 122;
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Location = new System.Drawing.Point(328, 114);
|
||||
this.label12.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(29, 13);
|
||||
this.label12.TabIndex = 112;
|
||||
this.label12.Text = "Host";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(308, 149);
|
||||
this.label13.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(49, 13);
|
||||
this.label13.TabIndex = 113;
|
||||
this.label13.Text = "SSL Port";
|
||||
//
|
||||
// numMailAccountPort
|
||||
//
|
||||
this.numMailAccountPort.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.numMailAccountPort.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.numMailAccountPort.Location = new System.Drawing.Point(362, 145);
|
||||
this.numMailAccountPort.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.numMailAccountPort.Maximum = new decimal(new int[] {
|
||||
99999999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numMailAccountPort.Name = "numMailAccountPort";
|
||||
this.numMailAccountPort.Size = new System.Drawing.Size(45, 20);
|
||||
this.numMailAccountPort.TabIndex = 123;
|
||||
this.numMailAccountPort.Value = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
//
|
||||
// abtnConfirmMailAccount
|
||||
//
|
||||
this.abtnConfirmMailAccount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.abtnConfirmMailAccount.AutoSizeWidth = false;
|
||||
this.tableGeneral.SetColumnSpan(this.abtnConfirmMailAccount, 4);
|
||||
this.abtnConfirmMailAccount.Image = null;
|
||||
this.abtnConfirmMailAccount.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnConfirmMailAccount.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnConfirmMailAccount.Location = new System.Drawing.Point(16, 180);
|
||||
this.abtnConfirmMailAccount.Margin = new System.Windows.Forms.Padding(10, 0, 0, 0);
|
||||
this.abtnConfirmMailAccount.Name = "abtnConfirmMailAccount";
|
||||
this.abtnConfirmMailAccount.Size = new System.Drawing.Size(493, 21);
|
||||
this.abtnConfirmMailAccount.TabIndex = 136;
|
||||
this.abtnConfirmMailAccount.Text = "Mail-Account Änderungen übernehmen";
|
||||
this.abtnConfirmMailAccount.TextBounds = new System.Drawing.Rectangle(1, 1, 491, 19);
|
||||
this.abtnConfirmMailAccount.ToolTipText = "";
|
||||
this.abtnConfirmMailAccount.WordWrap = true;
|
||||
this.abtnConfirmMailAccount.Click += new System.EventHandler(this.abtnConfirmMailAccount_Click);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(25, 254);
|
||||
this.label1.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(86, 13);
|
||||
this.label1.TabIndex = 52;
|
||||
this.label1.Text = "Passwort ändern";
|
||||
//
|
||||
// mtbPwd
|
||||
//
|
||||
this.mtbPwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.mtbPwd.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.mtbPwd.Location = new System.Drawing.Point(116, 250);
|
||||
this.mtbPwd.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.mtbPwd.Name = "mtbPwd";
|
||||
this.mtbPwd.PasswordChar = '⬤';
|
||||
this.mtbPwd.Size = new System.Drawing.Size(118, 20);
|
||||
this.mtbPwd.TabIndex = 54;
|
||||
//
|
||||
// abtnChangePwd
|
||||
//
|
||||
this.abtnChangePwd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.abtnChangePwd.AutoSizeWidth = false;
|
||||
this.tableGeneral.SetColumnSpan(this.abtnChangePwd, 2);
|
||||
this.abtnChangePwd.Image = null;
|
||||
this.abtnChangePwd.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnChangePwd.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnChangePwd.Location = new System.Drawing.Point(6, 281);
|
||||
this.abtnChangePwd.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.abtnChangePwd.Name = "abtnChangePwd";
|
||||
this.abtnChangePwd.Size = new System.Drawing.Size(228, 29);
|
||||
this.abtnChangePwd.TabIndex = 56;
|
||||
this.abtnChangePwd.Text = "Passwort ändern";
|
||||
this.abtnChangePwd.TextBounds = new System.Drawing.Rectangle(1, 1, 226, 27);
|
||||
this.abtnChangePwd.ToolTipText = "";
|
||||
this.abtnChangePwd.Click += new System.EventHandler(this.abtnChangePwd_Click);
|
||||
//
|
||||
// label19
|
||||
//
|
||||
this.label19.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label19.AutoSize = true;
|
||||
this.label19.Location = new System.Drawing.Point(273, 254);
|
||||
this.label19.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label19.Name = "label19";
|
||||
this.label19.Size = new System.Drawing.Size(84, 13);
|
||||
this.label19.TabIndex = 131;
|
||||
this.label19.Text = "XML-Root-Node";
|
||||
this.label19.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// tbCTXxmlNode
|
||||
//
|
||||
this.tbCTXxmlNode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbCTXxmlNode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbCTXxmlNode.Location = new System.Drawing.Point(362, 250);
|
||||
this.tbCTXxmlNode.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbCTXxmlNode.Name = "tbCTXxmlNode";
|
||||
this.tbCTXxmlNode.Size = new System.Drawing.Size(137, 20);
|
||||
this.tbCTXxmlNode.TabIndex = 125;
|
||||
//
|
||||
// label20
|
||||
//
|
||||
this.label20.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label20.AutoSize = true;
|
||||
this.label20.Location = new System.Drawing.Point(295, 289);
|
||||
this.label20.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label20.Name = "label20";
|
||||
this.label20.Size = new System.Drawing.Size(62, 13);
|
||||
this.label20.TabIndex = 132;
|
||||
this.label20.Text = "Symbolpfad";
|
||||
this.label20.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// tbCTXIconPath
|
||||
//
|
||||
this.tbCTXIconPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbCTXIconPath.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbCTXIconPath.Location = new System.Drawing.Point(362, 285);
|
||||
this.tbCTXIconPath.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbCTXIconPath.Name = "tbCTXIconPath";
|
||||
this.tbCTXIconPath.Size = new System.Drawing.Size(137, 20);
|
||||
this.tbCTXIconPath.TabIndex = 126;
|
||||
//
|
||||
// label21
|
||||
//
|
||||
this.label21.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label21.AutoSize = true;
|
||||
this.label21.Location = new System.Drawing.Point(541, 254);
|
||||
this.label21.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label21.Name = "label21";
|
||||
this.label21.Size = new System.Drawing.Size(81, 13);
|
||||
this.label21.TabIndex = 133;
|
||||
this.label21.Text = "SelfService.exe";
|
||||
this.label21.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// label22
|
||||
//
|
||||
this.label22.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label22.AutoSize = true;
|
||||
this.label22.Location = new System.Drawing.Point(547, 289);
|
||||
this.label22.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label22.Name = "label22";
|
||||
this.label22.Size = new System.Drawing.Size(75, 13);
|
||||
this.label22.TabIndex = 134;
|
||||
this.label22.Text = "Apps-Location";
|
||||
this.label22.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// tbCTXicaSelfService
|
||||
//
|
||||
this.tbCTXicaSelfService.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbCTXicaSelfService.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbCTXicaSelfService.Location = new System.Drawing.Point(627, 250);
|
||||
this.tbCTXicaSelfService.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbCTXicaSelfService.Name = "tbCTXicaSelfService";
|
||||
this.tbCTXicaSelfService.Size = new System.Drawing.Size(147, 20);
|
||||
this.tbCTXicaSelfService.TabIndex = 127;
|
||||
//
|
||||
// tbCTXappsLocation
|
||||
//
|
||||
this.tbCTXappsLocation.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbCTXappsLocation.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbCTXappsLocation.Location = new System.Drawing.Point(627, 285);
|
||||
this.tbCTXappsLocation.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbCTXappsLocation.Name = "tbCTXappsLocation";
|
||||
this.tbCTXappsLocation.Size = new System.Drawing.Size(147, 20);
|
||||
this.tbCTXappsLocation.TabIndex = 128;
|
||||
//
|
||||
// abtnConfirmCitrix
|
||||
//
|
||||
this.abtnConfirmCitrix.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.abtnConfirmCitrix.AutoSizeWidth = false;
|
||||
this.tableGeneral.SetColumnSpan(this.abtnConfirmCitrix, 4);
|
||||
this.abtnConfirmCitrix.Image = null;
|
||||
this.abtnConfirmCitrix.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnConfirmCitrix.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnConfirmCitrix.Location = new System.Drawing.Point(254, 316);
|
||||
this.abtnConfirmCitrix.Margin = new System.Windows.Forms.Padding(10, 0, 0, 0);
|
||||
this.abtnConfirmCitrix.Name = "abtnConfirmCitrix";
|
||||
this.abtnConfirmCitrix.Size = new System.Drawing.Size(530, 29);
|
||||
this.abtnConfirmCitrix.TabIndex = 137;
|
||||
this.abtnConfirmCitrix.Text = "Citrix-Einstellungen übernehmen";
|
||||
this.abtnConfirmCitrix.TextBounds = new System.Drawing.Rectangle(1, 1, 528, 27);
|
||||
this.abtnConfirmCitrix.ToolTipText = "";
|
||||
this.abtnConfirmCitrix.WordWrap = true;
|
||||
this.abtnConfirmCitrix.Click += new System.EventHandler(this.abtnConfirmCitrix_Click);
|
||||
//
|
||||
// tbMailMessageTo
|
||||
//
|
||||
this.tbMailMessageTo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbMailMessageTo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbMailMessageTo.Location = new System.Drawing.Point(116, 40);
|
||||
this.tbMailMessageTo.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbMailMessageTo.Name = "tbMailMessageTo";
|
||||
this.tbMailMessageTo.Size = new System.Drawing.Size(118, 20);
|
||||
this.tbMailMessageTo.TabIndex = 121;
|
||||
//
|
||||
// label17
|
||||
//
|
||||
this.label17.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label17.AutoSize = true;
|
||||
this.label17.Location = new System.Drawing.Point(52, 44);
|
||||
this.label17.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label17.Name = "label17";
|
||||
this.label17.Size = new System.Drawing.Size(59, 13);
|
||||
this.label17.TabIndex = 117;
|
||||
this.label17.Text = "Senden an";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(85, 79);
|
||||
this.label2.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(26, 13);
|
||||
this.label2.TabIndex = 115;
|
||||
this.label2.Text = "Von";
|
||||
//
|
||||
// tbMailMessageFrom
|
||||
//
|
||||
this.tbMailMessageFrom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbMailMessageFrom.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbMailMessageFrom.Location = new System.Drawing.Point(116, 75);
|
||||
this.tbMailMessageFrom.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbMailMessageFrom.Name = "tbMailMessageFrom";
|
||||
this.tbMailMessageFrom.Size = new System.Drawing.Size(118, 20);
|
||||
this.tbMailMessageFrom.TabIndex = 119;
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.Location = new System.Drawing.Point(33, 114);
|
||||
this.label16.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(78, 13);
|
||||
this.label16.TabIndex = 116;
|
||||
this.label16.Text = "Absendername";
|
||||
//
|
||||
// tbMailMessageDisplayName
|
||||
//
|
||||
this.tbMailMessageDisplayName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbMailMessageDisplayName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tbMailMessageDisplayName.Location = new System.Drawing.Point(116, 110);
|
||||
this.tbMailMessageDisplayName.Margin = new System.Windows.Forms.Padding(0, 0, 10, 0);
|
||||
this.tbMailMessageDisplayName.Name = "tbMailMessageDisplayName";
|
||||
this.tbMailMessageDisplayName.Size = new System.Drawing.Size(118, 20);
|
||||
this.tbMailMessageDisplayName.TabIndex = 120;
|
||||
//
|
||||
// switch_frontendupdate
|
||||
//
|
||||
this.switch_frontendupdate.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.switch_frontendupdate.BackColor = System.Drawing.Color.White;
|
||||
this.switch_frontendupdate.ButtonWidth = 35;
|
||||
this.switch_frontendupdate.Checked = false;
|
||||
this.switch_frontendupdate.CheckState = System.Windows.Forms.CheckState.Unchecked;
|
||||
this.switch_frontendupdate.CheckThreeState = false;
|
||||
this.switch_frontendupdate.ColorActive = System.Drawing.Color.DarkSeaGreen;
|
||||
this.switch_frontendupdate.ColorInactive = System.Drawing.Color.OrangeRed;
|
||||
this.switch_frontendupdate.Location = new System.Drawing.Point(822, 318);
|
||||
this.switch_frontendupdate.Margin = new System.Windows.Forms.Padding(10, 5, 4, 5);
|
||||
this.switch_frontendupdate.Name = "switch_frontendupdate";
|
||||
this.switch_frontendupdate.RoundedButton = true;
|
||||
this.switch_frontendupdate.ShowBoarder = false;
|
||||
this.switch_frontendupdate.Size = new System.Drawing.Size(80, 25);
|
||||
this.switch_frontendupdate.TabIndex = 138;
|
||||
this.switch_frontendupdate.Text = "switchButton1";
|
||||
this.switch_frontendupdate.CheckStateChanged += new System.EventHandler<System.Windows.Forms.CheckStateEventArgs>(this.switch_frontendupdate_CheckStateChanged);
|
||||
//
|
||||
// label23
|
||||
//
|
||||
this.label23.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.label23.AutoSize = true;
|
||||
this.label23.Location = new System.Drawing.Point(821, 289);
|
||||
this.label23.Margin = new System.Windows.Forms.Padding(10, 0, 0, 0);
|
||||
this.label23.Name = "label23";
|
||||
this.label23.Size = new System.Drawing.Size(85, 13);
|
||||
this.label23.TabIndex = 140;
|
||||
this.label23.Text = "FrontEndUpdate";
|
||||
this.label23.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
//
|
||||
// ucAdminGeneral
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
|
||||
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.Controls.Add(this.tableGeneral);
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.Name = "ucAdminGeneral";
|
||||
this.Size = new System.Drawing.Size(940, 380);
|
||||
this.tableGeneral.ResumeLayout(false);
|
||||
this.tableGeneral.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numMailAccountPort)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TableLayoutPanel tableGeneral;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.MaskedTextBox mtbPwd;
|
||||
private System.Windows.Forms.AnimationButton abtnChangePwd;
|
||||
private System.Windows.Forms.SwitchButton switch_use_ad_groups;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.RichTextBox rtbDomains;
|
||||
private System.Windows.Forms.Label label11;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.AnimationButton abtnAcceptDomains;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.TextBox tbAdGroupAdmins;
|
||||
private System.Windows.Forms.Label label9;
|
||||
private System.Windows.Forms.TextBox tbMailAccountPwd;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.TextBox tbMailAccountUser;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label16;
|
||||
private System.Windows.Forms.Label label17;
|
||||
private System.Windows.Forms.TextBox tbMailMessageFrom;
|
||||
private System.Windows.Forms.TextBox tbMailMessageDisplayName;
|
||||
private System.Windows.Forms.TextBox tbMailMessageTo;
|
||||
private System.Windows.Forms.TextBox tbMailAccountHost;
|
||||
private System.Windows.Forms.NumericEx numMailAccountPort;
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.TextBox tbCTXappsLocation;
|
||||
private System.Windows.Forms.TextBox tbCTXicaSelfService;
|
||||
private System.Windows.Forms.TextBox tbCTXIconPath;
|
||||
private System.Windows.Forms.TextBox tbCTXxmlNode;
|
||||
private System.Windows.Forms.TextBox tbUserDomain;
|
||||
private System.Windows.Forms.Label label18;
|
||||
private System.Windows.Forms.Label label19;
|
||||
private System.Windows.Forms.Label label20;
|
||||
private System.Windows.Forms.Label label21;
|
||||
private System.Windows.Forms.Label label22;
|
||||
private System.Windows.Forms.AnimationButton abtnConfirmAD;
|
||||
private System.Windows.Forms.AnimationButton abtnConfirmMailAccount;
|
||||
private System.Windows.Forms.AnimationButton abtnConfirmCitrix;
|
||||
private System.Windows.Forms.ToolTip tooltip;
|
||||
private System.Windows.Forms.SwitchButton switch_frontendupdate;
|
||||
private System.Windows.Forms.Label label23;
|
||||
}
|
||||
}
|
||||
171
GFATask/UserControls/ucAdminGeneral.cs
Normal file
171
GFATask/UserControls/ucAdminGeneral.cs
Normal file
@@ -0,0 +1,171 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Net.Mail;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
[Browsable(false), ToolboxItem(false)]
|
||||
public partial class ucAdminGeneral : UserControl
|
||||
{
|
||||
|
||||
private void CreateGeneralBindings()
|
||||
{
|
||||
switch_use_ad_groups.Checked = Config.Main.UseActiveDirectoryGroups;
|
||||
switch_frontendupdate.Checked = Config.Main.Administration.RemoteFrontEndUpdate;
|
||||
rtbDomains.Lines = Config.Main.WebDomains;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Erstellt die ToolTips für die Steuerelemente
|
||||
/// </summary>
|
||||
private void SetToolTips()
|
||||
{
|
||||
switch_use_ad_groups.MouseEnter += (sender, e) => tooltip.Show("Nutzt die Active Directory Gruppen, um die Apps aus den Listen zu filtern. Wenn nicht aktiv, werden alle Apps (außer die Admin-Liste) angezeigt", sender as Control);
|
||||
switch_frontendupdate.MouseEnter += (sender, e) => tooltip.Show("Aktiviert, oder deaktiviert das Aktualisieren aller GFATask Remote-FrontEnds", sender as Control);
|
||||
rtbDomains.MouseEnter += (sender, e) => tooltip.Show("Alle aufgeführten Top-Level-Domains in der Liste werden für die Favoriten-Liste als Webseite erkannt", sender as Control);
|
||||
mtbPwd.MouseEnter += (sender, e) => tooltip.Show("Ändert das Passwort für den Adminbereich für Nicht-Administratoren", sender as Control);
|
||||
}
|
||||
|
||||
|
||||
public ucAdminGeneral()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.SetDefaultDesign();
|
||||
|
||||
this.CreateGeneralBindings();
|
||||
tbAdGroupAdmins.Text = Config.Main.Administration.ActiveDirectoryGroup;
|
||||
tbUserDomain.Text = Config.Main.DomainName;
|
||||
|
||||
tbMailAccountPwd.Text = new string(Config.Main.Administration.Accounts.Mail.SecurePassword.Select(chr => (char)chr).ToArray());
|
||||
tbMailAccountUser.Text = Config.Main.Administration.Accounts.Mail.UserName;
|
||||
tbMailAccountHost.Text = Config.Main.Administration.Accounts.Mail.Host;
|
||||
numMailAccountPort.Value = Config.Main.Administration.Accounts.Mail.SSLPort;
|
||||
|
||||
tbMailMessageFrom.Text = Config.Main.Administration.Accounts.Mail.MailMessage.From.Address;
|
||||
tbMailMessageDisplayName.Text = Config.Main.Administration.Accounts.Mail.MailMessage.From.DisplayName;
|
||||
tbMailMessageTo.Text = Config.Main.Administration.Accounts.Mail.MailMessage.To;
|
||||
|
||||
tbCTXxmlNode.Text = Config.Main.Citrix.XMLNodes;
|
||||
tbCTXicaSelfService.Text = Config.Main.Citrix.ICASelfService;
|
||||
tbCTXIconPath.Text = Config.Main.Citrix.Icons;
|
||||
tbCTXappsLocation.Text = Config.Main.Citrix.AppsLocation;
|
||||
|
||||
label9.Paint += Designer.DrawHeaderLabel;
|
||||
label15.Paint += Designer.DrawHeaderLabel;
|
||||
label11.Paint += Designer.DrawHeaderLabel;
|
||||
label4.Paint += Designer.DrawHeaderLabel;
|
||||
label3.Paint += Designer.DrawHeaderLabel;
|
||||
|
||||
this.SetToolTips();
|
||||
}
|
||||
|
||||
|
||||
private void abtnChangePwd_Click(object sender, EventArgs e)
|
||||
{
|
||||
string oldpw = new string(Config.Main.Administration.Accounts.Login.SecurePassword.Select(chr => (char)chr).ToArray());
|
||||
Config.Main.Administration.Accounts.Login.SecurePassword = mtbPwd.Text.ToArray().Select(chr => (int)chr).ToArray();
|
||||
JSON.Save(JSONConfig.Main);
|
||||
|
||||
XObjects.MailService.Send(
|
||||
new MailAddress(
|
||||
Config.Main.Administration.Accounts.Mail.MailMessage.From.Address,
|
||||
Config.Main.Administration.Accounts.Mail.MailMessage.From.DisplayName, Encoding.UTF8),
|
||||
new MailAddress(Config.Main.Administration.Accounts.Mail.MailMessage.To),
|
||||
"GFATask Kennwortänderung des Adminbereichs",
|
||||
$"<body style=\"font-family:Segoe UI\">" +
|
||||
$"Das Administartionskennwort wurde\n" +
|
||||
$"durch den Benutzer <b>{Environment.UserDomainName + @"\" + Environment.UserName}</b>" +
|
||||
$"<br> von \"{"<b>" + oldpw + "</b>"}\"" +
|
||||
$"<br> in \"{"<b>" + mtbPwd.Text + "</b>"}\" geändert" +
|
||||
$"<br><br>" +
|
||||
$"Ihr GFATask Administrator" +
|
||||
$"</body>"
|
||||
);
|
||||
}
|
||||
|
||||
private void abtnConfirmCitrix_Click(object sender, EventArgs e)
|
||||
{
|
||||
Config.Main.Citrix = new Models.Config.Main.CitrixProperties()
|
||||
{
|
||||
AppsLocation = tbCTXappsLocation.Text,
|
||||
ICASelfService = tbCTXicaSelfService.Text,
|
||||
Icons = tbCTXIconPath.Text,
|
||||
XMLNodes = tbCTXxmlNode.Text
|
||||
};
|
||||
JSON.Save(JSONConfig.Main);
|
||||
XObjects.FrontEndRefresh.Update(new GFATaskStream() { PipeType = NetPipeType.Citrix });
|
||||
}
|
||||
|
||||
private void abtnConfirmAD_Click(object sender, EventArgs e)
|
||||
{
|
||||
Config.Main.UseActiveDirectoryGroups = switch_use_ad_groups.Checked;
|
||||
JSON.Save(JSONConfig.Main);
|
||||
this.UseActiveDirectory();
|
||||
XObjects.FrontEndRefresh.Update(new GFATaskStream() { PipeType = NetPipeType.ActiveDirectory });
|
||||
}
|
||||
|
||||
|
||||
public void UseActiveDirectory()
|
||||
{
|
||||
if (this.Created)
|
||||
{
|
||||
Forms.Main.CreateAppListPanels();
|
||||
Accessor.SetLastAppListPanel();
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeCitrix()
|
||||
{
|
||||
if (this.Created)
|
||||
{
|
||||
Creator.AppListPanel(XObjects.AllAppListPanels.Find(panel => panel.AppType == AppType.Citrix), AppLists.Citrix);
|
||||
}
|
||||
}
|
||||
|
||||
private void abtnConfirmMailAccount_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (this.Created)
|
||||
{
|
||||
Config.Main.Administration.Accounts.Mail = new Models.Config.Main.AdministrationProperties.AccountProperties.MailAccount()
|
||||
{
|
||||
Host = tbMailAccountHost.Text,
|
||||
MailMessage = new Models.Config.Main.AdministrationProperties.AccountProperties.MailAccount.MailMessageProperties()
|
||||
{
|
||||
From = new Models.Config.Main.AdministrationProperties.AccountProperties.MailAccount.MailMessageProperties.FromProperties()
|
||||
{
|
||||
Address = tbMailMessageFrom.Text,
|
||||
DisplayName = tbMailMessageDisplayName.Text
|
||||
},
|
||||
To = tbMailMessageTo.Text,
|
||||
},
|
||||
SSLPort = (int)numMailAccountPort.Value,
|
||||
SecurePassword = tbMailAccountPwd.Text.ToArray().Select(chr => (int)chr).ToArray(),
|
||||
UserName = tbMailAccountUser.Text
|
||||
};
|
||||
JSON.Save(JSONConfig.Main);
|
||||
XObjects.FrontEndRefresh.Update(new GFATaskStream() { PipeType = NetPipeType.MailAccount });
|
||||
}
|
||||
}
|
||||
|
||||
public void SetFrontEndUpdate()
|
||||
{
|
||||
XObjects.FrontEndRefresh.Active = Config.Main.Administration.RemoteFrontEndUpdate;
|
||||
}
|
||||
|
||||
private void switch_frontendupdate_CheckStateChanged(object sender, CheckStateEventArgs e)
|
||||
{
|
||||
Config.Main.Administration.RemoteFrontEndUpdate = switch_frontendupdate.Checked;
|
||||
JSON.Save(JSONConfig.Main);
|
||||
this.SetFrontEndUpdate();
|
||||
XObjects.FrontEndRefresh.Update(new GFATaskStream() { PipeType = NetPipeType.FrontEndUpdate });
|
||||
}
|
||||
}
|
||||
}
|
||||
123
GFATask/UserControls/ucAdminGeneral.resx
Normal file
123
GFATask/UserControls/ucAdminGeneral.resx
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
64
GFATask/UserControls/ucAdminHelp.Designer.cs
generated
Normal file
64
GFATask/UserControls/ucAdminHelp.Designer.cs
generated
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class ucAdminHelp
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.webBrowser = new System.Windows.Forms.WebBrowser();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// webBrowser
|
||||
//
|
||||
this.webBrowser.AllowNavigation = false;
|
||||
this.webBrowser.AllowWebBrowserDrop = false;
|
||||
this.webBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.webBrowser.IsWebBrowserContextMenuEnabled = false;
|
||||
this.webBrowser.Location = new System.Drawing.Point(0, 0);
|
||||
this.webBrowser.MinimumSize = new System.Drawing.Size(20, 20);
|
||||
this.webBrowser.Name = "webBrowser";
|
||||
this.webBrowser.Size = new System.Drawing.Size(858, 509);
|
||||
this.webBrowser.TabIndex = 0;
|
||||
//
|
||||
// ucAdminHelp
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(120F, 120F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.Controls.Add(this.webBrowser);
|
||||
this.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.Name = "ucAdminHelp";
|
||||
this.Size = new System.Drawing.Size(858, 509);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.WebBrowser webBrowser;
|
||||
}
|
||||
}
|
||||
34
GFATask/UserControls/ucAdminHelp.cs
Normal file
34
GFATask/UserControls/ucAdminHelp.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Navigation;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public partial class ucAdminHelp : UserControl
|
||||
{
|
||||
public ucAdminHelp()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
webBrowser.Url = new Uri(Paths.Help.Administration.FullName);
|
||||
}
|
||||
|
||||
protected override void OnInvalidated(InvalidateEventArgs e)
|
||||
{
|
||||
base.OnInvalidated(e);
|
||||
webBrowser.Refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/UserControls/ucAdminHelp.resx
Normal file
120
GFATask/UserControls/ucAdminHelp.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
129
GFATask/UserControls/ucAdminNewsFeeds.Designer.cs
generated
Normal file
129
GFATask/UserControls/ucAdminNewsFeeds.Designer.cs
generated
Normal file
@@ -0,0 +1,129 @@
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
partial class ucAdminNewsFeeds
|
||||
{
|
||||
/// <summary>
|
||||
/// Erforderliche Designervariable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Verwendete Ressourcen bereinigen.
|
||||
/// </summary>
|
||||
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Vom Komponenten-Designer generierter Code
|
||||
|
||||
/// <summary>
|
||||
/// Erforderliche Methode für die Designerunterstützung.
|
||||
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.dgvNewsFeeds = new System.Windows.Forms.DataGridView();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.abtnAnwenden = new System.Windows.Forms.AnimationButton();
|
||||
this.abtnVerwerfen = new System.Windows.Forms.AnimationButton();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvNewsFeeds)).BeginInit();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// dgvNewsFeeds
|
||||
//
|
||||
this.dgvNewsFeeds.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.dgvNewsFeeds, 3);
|
||||
this.dgvNewsFeeds.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dgvNewsFeeds.Location = new System.Drawing.Point(3, 3);
|
||||
this.dgvNewsFeeds.Name = "dgvNewsFeeds";
|
||||
this.dgvNewsFeeds.RowHeadersWidth = 51;
|
||||
this.dgvNewsFeeds.RowTemplate.Height = 24;
|
||||
this.dgvNewsFeeds.Size = new System.Drawing.Size(852, 468);
|
||||
this.dgvNewsFeeds.TabIndex = 0;
|
||||
this.dgvNewsFeeds.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvNewsFeeds_CellClick);
|
||||
this.dgvNewsFeeds.RowsRemoved += new System.Windows.Forms.DataGridViewRowsRemovedEventHandler(this.dgvWorldDays_RowsRemoved);
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 3;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 63.63636F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 18.18182F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 18.18182F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.dgvNewsFeeds, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.abtnAnwenden, 2, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.abtnVerwerfen, 1, 1);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 2;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(858, 509);
|
||||
this.tableLayoutPanel1.TabIndex = 1;
|
||||
//
|
||||
// abtnAnwenden
|
||||
//
|
||||
this.abtnAnwenden.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.abtnAnwenden.AutoSizeWidth = false;
|
||||
this.abtnAnwenden.Image = null;
|
||||
this.abtnAnwenden.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnAnwenden.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnAnwenden.Location = new System.Drawing.Point(728, 474);
|
||||
this.abtnAnwenden.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.abtnAnwenden.Name = "abtnAnwenden";
|
||||
this.abtnAnwenden.Size = new System.Drawing.Size(102, 34);
|
||||
this.abtnAnwenden.TabIndex = 60;
|
||||
this.abtnAnwenden.Text = "Anwenden";
|
||||
this.abtnAnwenden.ToolTipText = "";
|
||||
this.abtnAnwenden.Click += new System.EventHandler(this.abtnAnwenden_Click);
|
||||
//
|
||||
// abtnVerwerfen
|
||||
//
|
||||
this.abtnVerwerfen.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||
this.abtnVerwerfen.AutoSizeWidth = false;
|
||||
this.abtnVerwerfen.Image = null;
|
||||
this.abtnVerwerfen.ImageBackColor = System.Drawing.Color.Empty;
|
||||
this.abtnVerwerfen.ImageBounds = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.abtnVerwerfen.Location = new System.Drawing.Point(568, 474);
|
||||
this.abtnVerwerfen.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.abtnVerwerfen.Name = "abtnVerwerfen";
|
||||
this.abtnVerwerfen.Size = new System.Drawing.Size(110, 35);
|
||||
this.abtnVerwerfen.TabIndex = 61;
|
||||
this.abtnVerwerfen.Text = "Verwerfen";
|
||||
this.abtnVerwerfen.ToolTipText = "";
|
||||
this.abtnVerwerfen.Click += new System.EventHandler(this.abtnVerwerfen_Click);
|
||||
//
|
||||
// ucAdminNewsFeeds
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(120F, 120F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.DoubleBuffered = true;
|
||||
this.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.Name = "ucAdminNewsFeeds";
|
||||
this.Size = new System.Drawing.Size(858, 509);
|
||||
this.Tag = "ucAdminNewsFeeds";
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvNewsFeeds)).EndInit();
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.DataGridView dgvNewsFeeds;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.AnimationButton abtnAnwenden;
|
||||
private System.Windows.Forms.AnimationButton abtnVerwerfen;
|
||||
}
|
||||
}
|
||||
101
GFATask/UserControls/ucAdminNewsFeeds.cs
Normal file
101
GFATask/UserControls/ucAdminNewsFeeds.cs
Normal file
@@ -0,0 +1,101 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace GFATask
|
||||
{
|
||||
public partial class ucAdminNewsFeeds : UserControl
|
||||
{
|
||||
public ucAdminNewsFeeds()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.SetDefaultDesign();
|
||||
dgvNewsFeeds.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
|
||||
|
||||
List<ReadableNewsFeed> converted_newsfeedlist = Config.NewsFeeds.Select(w => new ReadableNewsFeed(w) ).ToList();
|
||||
DataTable dt = new DataTable();
|
||||
dt.Columns.AddRange(converted_newsfeedlist[0].GetType().GetProperties().Select(prop => new DataColumn(prop.Name, prop.PropertyType)).ToArray());
|
||||
converted_newsfeedlist.ForEach(w => dt.Rows.Add(w.Name, w.Aktiv, w.Symbol, w.Icon, w.Starttag, w.Startmonat, w.Endtag, w.Endmonat, w.Titel));
|
||||
dgvNewsFeeds.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
|
||||
dgvNewsFeeds.DataSource = dt;
|
||||
dgvNewsFeeds.CellEndEdit += DgvWorldDays_CellEndEdit;
|
||||
dgvNewsFeeds.CellBeginEdit += DgvWorldDays_CellBeginEdit;
|
||||
}
|
||||
|
||||
private void DgvWorldDays_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
|
||||
{
|
||||
//if(dgvNewsFeeds.Columns["Symbol"].Index == e.ColumnIndex || dgvNewsFeeds.Columns["Icon"].Index == e.ColumnIndex)
|
||||
//{
|
||||
// var ofd = new OpenFileDialog() { Multiselect = false };
|
||||
// if(ofd.ShowDialog() == DialogResult.OK)
|
||||
// {
|
||||
// dgvNewsFeeds.CurrentCell.Value = ofd.SafeFileName;
|
||||
// dgvNewsFeeds.Rows[dgvNewsFeeds.CurrentRow.Index].Cells["Icon"].Value = new Bitmap(Image.FromStream(File.OpenRead(ofd.FileName)), new Size(16,16));
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
private void DgvWorldDays_CellEndEdit(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
dgvNewsFeeds.CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange);
|
||||
dgvNewsFeeds.BindingContext[dgvNewsFeeds.DataSource].EndCurrentEdit();
|
||||
}
|
||||
|
||||
private void abtnAnwenden_Click(object sender, EventArgs e)
|
||||
{
|
||||
List<Models.NewsFeed> return_newsfeedlist = ((DataTable)dgvNewsFeeds.DataSource).Rows.Cast<DataRow>().Select(w => new Models.NewsFeed() {
|
||||
Name = w[0].ToString(),
|
||||
Enable = (bool)w[1],
|
||||
Icon = w[2] == null ? "" : w[2].ToString(),
|
||||
Begin = new Models.NewsFeed.Date() { Day = (int)w[4], Month = (int)w[5]},
|
||||
End = new Models.NewsFeed.Date() { Day = (int)w[6], Month = (int)w[7]},
|
||||
Title = w[8].ToString()
|
||||
}).ToList();
|
||||
Config.NewsFeeds = return_newsfeedlist;
|
||||
JSON.Save(JSONConfig.NewsFeeds);
|
||||
|
||||
Forms.Main.UseNewsFeeds();
|
||||
}
|
||||
|
||||
private void abtnVerwerfen_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void dgvWorldDays_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void dgvNewsFeeds_CellClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
if (dgvNewsFeeds.Columns["Symbol"].Index == e.ColumnIndex || dgvNewsFeeds.Columns["Icon"].Index == e.ColumnIndex)
|
||||
{
|
||||
var ofd = new OpenFileDialog() { Multiselect = false };
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if(ofd.FileName == "[Kein Icon]")
|
||||
{
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Creator.StreamCopy(ofd.FileName, Paths.NewsFeeds.Icons.Directory + ofd.SafeFileName, (fs) =>
|
||||
{
|
||||
dgvNewsFeeds[dgvNewsFeeds.Columns["Symbol"].Index, e.RowIndex].Value = ofd.SafeFileName == "[Kein Icon]" ? null : Path.GetFileName(fs.Name);
|
||||
dgvNewsFeeds.Rows[dgvNewsFeeds.CurrentRow.Index].Cells["Icon"].Value = ofd.SafeFileName == "[Kein Icon]" ? null : new Bitmap(Image.FromStream(fs), new Size(16, 16));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
120
GFATask/UserControls/ucAdminNewsFeeds.resx
Normal file
120
GFATask/UserControls/ucAdminNewsFeeds.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
79
GFATask/app.manifest
Normal file
79
GFATask/app.manifest
Normal file
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC-Manifestoptionen
|
||||
Wenn Sie die Ebene der Benutzerkontensteuerung für Windows ändern möchten, ersetzen Sie den
|
||||
Knoten "requestedExecutionLevel" wie folgt.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Durch Angabe des Elements "requestedExecutionLevel" wird die Datei- und Registrierungsvirtualisierung deaktiviert.
|
||||
Entfernen Sie dieses Element, wenn diese Virtualisierung aus Gründen der Abwärtskompatibilität
|
||||
für die Anwendung erforderlich ist.
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Eine Liste der Windows-Versionen, unter denen diese Anwendung getestet
|
||||
und für die sie entwickelt wurde. Wenn Sie die Auskommentierung der entsprechenden Elemente aufheben,
|
||||
wird von Windows automatisch die kompatibelste Umgebung ausgewählt. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!--Windows 10
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Gibt an, dass die Anwendung mit DPI-Werten kompatibel ist und von Windows nicht automatisch auf höhere
|
||||
DPI-Werte skaliert wird. WPF-Anwendungen (Windows Presentation Foundation) sind automatisch mit DPI-Werten kompatibel, eine Aktivierung
|
||||
ist nicht erforderlich. Für Windows Forms-Anwendungen für .NET Framework 4.6, die diese Einstellung aktivieren, muss
|
||||
auch die Einstellung "'EnableWindowsFormsHighDpiAutoResizing" in der Datei "app.config" auf TRUE festgelegt werden.
|
||||
|
||||
Hierdurch können für die Anwendung lange Pfade verwendet werden. Weitere Informationen finden Sie unter https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation.-->
|
||||
|
||||
<!--Führt zu fehlerhafter Skalierung-->
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
|
||||
<!-- Designs für allgemeine Windows-Steuerelemente und -Dialogfelder (Windows XP und höher) aktivieren -->
|
||||
<!--
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
</assembly>
|
||||
867
GFATask/bin/Debug/Apps/admin.json
Normal file
867
GFATask/bin/Debug/Apps/admin.json
Normal file
@@ -0,0 +1,867 @@
|
||||
{
|
||||
"type": 2,
|
||||
"apps": [
|
||||
{
|
||||
"id": 1,
|
||||
"description": null,
|
||||
"name": "StoreFront",
|
||||
"group": "Citrix",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\storefront.a67001.ffm\\",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Citrix SF Logo.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"description": null,
|
||||
"name": "VCSA",
|
||||
"group": "vSphere",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\a670wms0008.a67001.ffm:5480\\#\\login?locale=de",
|
||||
"args": ""
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\a670wms0008.a67001.ffm:5480\\#\\login?locale=de"
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\a670wms0008.a67001.ffm:5480\\#\\login?locale=de"
|
||||
}
|
||||
],
|
||||
"icon": "edge.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"description": null,
|
||||
"name": "ActiveRoles",
|
||||
"group": "Amt 16",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\ars.city.net.ffm\\AD-Verwaltung\\",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "edge.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"description": "",
|
||||
"name": "Exchange Admin",
|
||||
"group": "Amt 16",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\webmail.stadt-frankfurt.de\\ecp",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Exchange Admin.png",
|
||||
"lastmodified": "2022-01-21T09:07:41.9400123+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"description": null,
|
||||
"name": "SafeQ",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\a670wps0003.a67001.ffm\\",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "SafeQ.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"description": null,
|
||||
"name": "Sophos",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\a670lpx0001\\",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Sophos.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"description": "",
|
||||
"name": "Confluence Dashboard",
|
||||
"group": "Jira",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\confluence.a67001.ffm:8443\\display\\6733\\67.33+Dashboard",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "jira_atlassian.png",
|
||||
"lastmodified": "2021-12-23T05:27:12.8420767+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"description": "",
|
||||
"name": "Confluence KnowledgeBase",
|
||||
"group": "Jira",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\confluence.a67001.ffm:8443\\display\\IKT\\Start+67.33+KB",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "jira_atlassian.png",
|
||||
"lastmodified": "2021-12-23T05:27:20.435887+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"description": "",
|
||||
"name": "Confluence",
|
||||
"group": "Jira",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\confluence.a67001.ffm:8443\\#all-updates",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "jira_atlassian.png",
|
||||
"lastmodified": "2021-12-23T05:27:06.1017967+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"description": null,
|
||||
"name": "Insight",
|
||||
"group": "Jira",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\servicedesk.a67001.ffm\\secure\\ObjectSchema.jspa?id=7&typeId=70&objectId=4550",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "jira_logo.png",
|
||||
"lastmodified": "2021-12-01T05:25:02.5469055+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"description": null,
|
||||
"name": "JSD Dashboard",
|
||||
"group": "Jira",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\servicedesk.a67001.ffm\\secure\\Dashboard.jspa",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "jira_atlassian.png",
|
||||
"lastmodified": "2021-12-01T05:24:42.8894648+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"description": null,
|
||||
"name": "Apps",
|
||||
"group": "Webseiten Amt",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\apps.gfa-ffm.de\\adm",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "edge.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"description": null,
|
||||
"name": "Friedhof Frankfurt",
|
||||
"group": "Webseiten Amt",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\friedhof-frankfurt.de\\adm",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "edge.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"description": null,
|
||||
"name": "Grünflächenamt",
|
||||
"group": "Webseiten Amt",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\gruenflaechenamt.de\\adm",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "edge.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"description": null,
|
||||
"name": "Stadtwaldhaus Frankfurt",
|
||||
"group": "Webseiten Amt",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\stadtwaldhaus-frankfurt.de\\adm",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "edge.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"description": null,
|
||||
"name": "Trauerwald Frankfurt",
|
||||
"group": "Webseiten Amt",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\trauerwald-frankfurt.de\\wp-admin",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "edge.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"description": null,
|
||||
"name": "Arriba Admin",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "\\\\DellNAS\\Install$\\UsrTools\\RDP\\Arriba_V14.3_admin.rdp",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Arriba.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"description": null,
|
||||
"name": "Austauschsystem",
|
||||
"group": "Freigaben",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "\\\\citywap1023.city.net.ffm\\amt_67$\\Austausch",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Austauschsystem.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"description": null,
|
||||
"name": "EgoSecure Management",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "\\\\a670wfs0002\\d$\\Administrative_Software\\Tools\\EgoSecureConsole.exe",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "EgoSecure Management.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"description": "Passwortmanager zum Verwalten von Anmeldeinformationen",
|
||||
"name": "KeePass",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "\\\\dellnas\\d$\\admin\\install\\Programme\\KeePass\\KeePass.exe",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "KeePass.png",
|
||||
"lastmodified": "2021-12-02T07:03:38.1005383+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"description": null,
|
||||
"name": "Veeam Backup Enterprise",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\a670wms0012.a67001.ffm:9443\\",
|
||||
"args": ""
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\a670wms0012.a67001.ffm:9443\\"
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\a670wms0012.a67001.ffm:9443\\"
|
||||
}
|
||||
],
|
||||
"icon": "Veeam Enterprise.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"description": null,
|
||||
"name": "Metastorm (TK Auftragssystem)",
|
||||
"group": "Amt 16",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\tk-workflow.city.net.ffm\\metastorm\\",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Metastorm.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"description": null,
|
||||
"name": "Bookmarks",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\A670WTS6733\\",
|
||||
"args": ""
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "http:\\\\A670WTS6733\\"
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "http:\\\\A670WTS6733\\"
|
||||
}
|
||||
],
|
||||
"icon": "bookmark.png",
|
||||
"lastmodified": "2021-12-01T05:54:57.0348952+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"description": "",
|
||||
"name": "Confluence Doku",
|
||||
"group": "Jira",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\confluence.a67001.ffm:8443\\display\\ITDoku",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "jira_atlassian.png",
|
||||
"lastmodified": "2021-12-23T05:26:58.8329972+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"description": null,
|
||||
"name": "eKom21 Shop",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\shop.ekom21.de\\home\\login\\signin",
|
||||
"args": ""
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\shop.ekom21.de\\home\\login\\signin"
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\shop.ekom21.de\\home\\login\\signin"
|
||||
}
|
||||
],
|
||||
"icon": "eKom21_shop.png",
|
||||
"lastmodified": "2021-12-01T06:13:53.1272746+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"description": null,
|
||||
"name": "vSphere Client",
|
||||
"group": "vSphere",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\a670wms0008.a67001.ffm\\ui",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "VI Client.png",
|
||||
"lastmodified": "2021-12-01T05:55:20.270436+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"description": "",
|
||||
"name": "SynoNAS DSM",
|
||||
"group": "Synology",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\10.114.107.13:6733",
|
||||
"args": ""
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\10.114.107.13:6733"
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\10.114.107.13:6733"
|
||||
}
|
||||
],
|
||||
"icon": "Synology.png",
|
||||
"lastmodified": "2022-02-10T07:34:42.4528891+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"description": null,
|
||||
"name": "Hosting-Umgebung Amt 16",
|
||||
"group": "Amt 16",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\hosting.city.net.ffm",
|
||||
"args": ""
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\hosting.city.net.ffm"
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "\\\\dellnas\\install$\\UsrTools\\Programme\\Mozilla Firefox\\firefox.exe\thttps:\\\\hosting.city.net.ffm"
|
||||
}
|
||||
],
|
||||
"icon": "edge.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"description": null,
|
||||
"name": "A670WWW6701 Freigabe",
|
||||
"group": "Freigaben",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "\\\\a670www6701.city.net.ffm\\backup$",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Net Drive.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"description": "",
|
||||
"name": "Service Management Portal Amt 16",
|
||||
"group": "Amt 16",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\serviceportal.city.net.ffm\\",
|
||||
"args": "https:\\\\serviceportal.city.net.ffm\\"
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\serviceportal.city.net.ffm\\"
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\serviceportal.city.net.ffm\\"
|
||||
}
|
||||
],
|
||||
"icon": "Windows10.png",
|
||||
"lastmodified": "2021-12-22T10:03:59.9636909+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"description": null,
|
||||
"name": "PRTG",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\a670wms0010.a67001.ffm\\public\\login.htm",
|
||||
"args": ""
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\a670wms0010.a67001.ffm\\public\\login.htm"
|
||||
},
|
||||
{
|
||||
"cmd": "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
|
||||
"args": "https:\\\\a670wms0010.a67001.ffm\\public\\login.htm"
|
||||
}
|
||||
],
|
||||
"icon": "PRTG.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"description": null,
|
||||
"name": "APPTEC360 EMMConsole",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\www.emmconsole.com\\",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "apptec360.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"description": null,
|
||||
"name": "McAfee MOVE Web-Console",
|
||||
"group": "Amt 16",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\citywap0022.city.net.ffm:55083\\core\\orionSplashScreen.do",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "mcafee.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"description": null,
|
||||
"name": "Director",
|
||||
"group": "Citrix",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https://director.a67001.ffm/director/",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Citrix SF Logo.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"description": "",
|
||||
"name": "SysAdmins",
|
||||
"group": "Amt 16",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https://sysadmins.stadt-frankfurt.de/default.aspx",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "sharepoint.png",
|
||||
"lastmodified": "2021-12-22T09:56:48.6208021+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"description": "",
|
||||
"name": "RDP a670www6701.city.Net.ffm",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "mstsc",
|
||||
"args": "/v:A670WWW6701.CITY.NET.FFM"
|
||||
}
|
||||
],
|
||||
"icon": "mstsc.png",
|
||||
"lastmodified": "2022-01-17T09:34:30.6285739+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"description": null,
|
||||
"name": "ProfileSpy",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "\\\\a670wfs0002\\d$\\Administrative_Software\\ProfileSpy\\runas.exe.lnk",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "profilespy.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"description": null,
|
||||
"name": "IGEL UMS Web",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https://a670wms0014:8443/webapp",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "igel_logo.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"description": null,
|
||||
"name": "FSP Explorer",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "\\\\a670wfs0002\\d$\\Administrative_Software\\FSP_Explorer\\FSP_Explorer.exe",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "acl_explorer.png",
|
||||
"lastmodified": "2021-11-17T08:19:26.8944052+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"description": "Protokollierungsserver zum Erstellen Abteilungs-/Sachgebiets-/Teamrelevanter Protokolle ",
|
||||
"name": "4Minitz - Protokollserver",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http://a670lww0002.a67001.ffm:3100",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "4minitz.png",
|
||||
"lastmodified": "2021-12-02T06:09:07.0119391+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"description": "Öffnet die Weboberfläche der IT-Ticketbearbeitung",
|
||||
"name": "Ticket Warteschlange",
|
||||
"group": "Jira",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https://servicedesk.a67001.ffm/projects/IKT/queues/custom/16",
|
||||
"args": null
|
||||
}
|
||||
],
|
||||
"icon": "jira_ticket.png",
|
||||
"lastmodified": "2021-12-20T05:21:51.4654552+01:00",
|
||||
"created": "2021-12-20T05:20:09.5247551+01:00"
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"description": "TreeSize ist eine Software-Produktfamilie, die dem Management des Festplattenplatzes dient und beim Aufräumen und Finden von Platzverschwendern und überflüssigen Dateien hilft",
|
||||
"name": "TreeSize Pro",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "\\\\a670wfs0002\\d$\\Administrative_Software\\TreeSize Professional Portable\\TreeSize.exe",
|
||||
"args": null
|
||||
}
|
||||
],
|
||||
"icon": "TreeSize.png",
|
||||
"lastmodified": "2021-12-23T05:48:12.5560903+01:00",
|
||||
"created": "2021-12-23T05:46:47.9397041+01:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
158
GFATask/bin/Debug/Apps/menu.json
Normal file
158
GFATask/bin/Debug/Apps/menu.json
Normal file
@@ -0,0 +1,158 @@
|
||||
{
|
||||
"type": 4,
|
||||
"apps": [
|
||||
{
|
||||
"id": 1,
|
||||
"description": "Öffnet die Einstellungen des GFATask",
|
||||
"name": "Einstellungen",
|
||||
"group": "",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "settings",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "optionen.png",
|
||||
"lastmodified": "2021-12-02T05:56:49.3539203+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"description": "Zeigt Informationen über PC, GFATask Version und Betriebssystem an",
|
||||
"name": "Computer",
|
||||
"group": "",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "info",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Computer.png",
|
||||
"lastmodified": "2021-12-02T05:56:35.2899512+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"description": "Öffnet das JIRA Ticketsystem, zum Melden von Problemen, Dateiberechtigungen, \r\nFachanwendungsanforderungen, Benutzerneuzugängen, Abwesenheitsassistenten, \r\nUmzügen und Löschen von Benutzerzugängen",
|
||||
"name": "Ticket erstellen",
|
||||
"group": "Ticketsystem",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https://servicedesk.a67001.ffm/servicedesk/customer/portal/1",
|
||||
"args": null
|
||||
}
|
||||
],
|
||||
"icon": "jira_ticket.png",
|
||||
"lastmodified": "2022-01-12T10:48:16.0942275+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"description": "Öffnet die AZE Online zur Einsicht und Bearbeitung der Arbeitszeiten",
|
||||
"name": "AZE Online",
|
||||
"group": "",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https://aze.stadt-frankfurt.de/WebClient/iflx/login.jsp?userlocale=de",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "AZE Online.png",
|
||||
"lastmodified": "2021-12-02T05:55:31.8366809+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"description": "Startet das webbasierte Telefonbuch der Stadtverwaltung",
|
||||
"name": "eWuf",
|
||||
"group": "",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\ewuf.city.net.ffm\\#",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "eWuf.png",
|
||||
"lastmodified": "2021-12-02T05:57:09.6799311+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"description": "Bedienungsanleitung des GFATask",
|
||||
"name": "Anleitung GFATask",
|
||||
"group": "Anleitung",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https://confluence.a67001.ffm:8443/display/IKT/GFATask",
|
||||
"args": null
|
||||
}
|
||||
],
|
||||
"icon": "GFA.png",
|
||||
"lastmodified": "2021-12-22T10:28:03.7707586+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"description": "Öffnet das Hilfedokument zum Passwort SelfService",
|
||||
"name": "Anleitung Passwort Self Service",
|
||||
"group": "Anleitung",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https:\\\\sysadmins.stadt-frankfurt.de\\Dokumente\\Passwort%20Self-Service%20Benutzerhandbuch.pdf",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "pw_selfservice.png",
|
||||
"lastmodified": "2021-12-03T21:36:06.6480633+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"description": "Zeigt die von - 67.33 IKT - aufgestellten Verhaltensregeln, Richlinien und Empfehlungen für den Dateiserver an",
|
||||
"name": "Richtlinien, Verhaltsregeln und Empfehlungen",
|
||||
"group": "",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https://confluence.a67001.ffm:8443/display/IKT/Dateiserver+-+Richtlinien+Verhaltensregeln+und+Empfehlungen",
|
||||
"args": null
|
||||
}
|
||||
],
|
||||
"icon": "fileserver.png",
|
||||
"lastmodified": "2021-12-03T21:19:54.1597858+01:00",
|
||||
"created": "2021-11-17T08:19:26.8944052+01:00"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"description": "Erstellt einen neuen Benutzerzugang über das Ticketsystem",
|
||||
"name": "Neuer Mitarbeiterzugang (Serviceportal)",
|
||||
"group": "Ticketsystem",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "http:\\\\servicedesk.a67001.ffm\\projects\\PERS\\issues\\?filter=allissues",
|
||||
"args": null
|
||||
}
|
||||
],
|
||||
"icon": "jira_new_user.png",
|
||||
"lastmodified": "2021-12-20T07:31:35.2203413+01:00",
|
||||
"created": "2021-12-20T07:31:10.7747444+01:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
1111
GFATask/bin/Debug/Apps/user.json
Normal file
1111
GFATask/bin/Debug/Apps/user.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"darkmode": true,
|
||||
"necessary_click": true,
|
||||
"prevalence": false,
|
||||
"autostart_eventlogger": false,
|
||||
"deploy": {
|
||||
"overwrite": false,
|
||||
"backup": false
|
||||
},
|
||||
"screen": "DISPLAY9",
|
||||
"delay": {
|
||||
"speed": 76,
|
||||
"show": 0.5,
|
||||
"hide": 0.5
|
||||
},
|
||||
"window": {
|
||||
"size": "1206, 542",
|
||||
"actionregionheight": 3,
|
||||
"font": 8.5,
|
||||
"opacity": 0.95
|
||||
},
|
||||
"apps": {
|
||||
"imageonly": false,
|
||||
"border": 0,
|
||||
"size": "155, 36",
|
||||
"margin": 3,
|
||||
"radius": {
|
||||
"button": 3,
|
||||
"image": 5
|
||||
}
|
||||
},
|
||||
"lists": {
|
||||
"menu": {
|
||||
"height": 57,
|
||||
"show": true,
|
||||
"grouping": true
|
||||
},
|
||||
"citrix": {
|
||||
"height": 100,
|
||||
"show": false,
|
||||
"grouping": true
|
||||
},
|
||||
"favorites": {
|
||||
"height": 73,
|
||||
"show": true,
|
||||
"grouping": true
|
||||
},
|
||||
"admin": {
|
||||
"height": 182,
|
||||
"show": true,
|
||||
"grouping": true
|
||||
},
|
||||
"user": {
|
||||
"height": 100,
|
||||
"show": true,
|
||||
"grouping": true
|
||||
}
|
||||
},
|
||||
"grouplistcolumncount": 3
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"type": 3,
|
||||
"apps": [
|
||||
{
|
||||
"id": 1,
|
||||
"description": "Öffnet die verlinkte Internetadresse mit dem Microsoft Edge Browser",
|
||||
"name": "Projekt Dateiserver",
|
||||
"group": "Dateiserver",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "https://projekte.stadt-frankfurt.de/sites/00171/_layouts/15/start.aspx#/",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "sharepoint.png",
|
||||
"lastmodified": "2022-01-13T13:26:37.907103+01:00",
|
||||
"created": "2022-01-13T13:23:30.7428744+01:00"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"description": "Öffnet die Access-Liste der Lesebestätigungen der Richlinien, Verhaltensregeln und Empfehlungen für den Dateiserver",
|
||||
"name": "Dateiserver Bestätigungen",
|
||||
"group": "Dateiserver",
|
||||
"activedirectory_groups": null,
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "O:\\67.3\\67.33\\Projekte\\Dateiserver\\Kontakte.mdb",
|
||||
"args": ""
|
||||
}
|
||||
],
|
||||
"icon": "Kontakte(mdb).png",
|
||||
"lastmodified": "2022-01-13T13:26:24.6982103+01:00",
|
||||
"created": "2022-01-13T13:24:47.511978+01:00"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"description": "Passwortmanager zum Verwalten von Anmeldeinformationen",
|
||||
"name": "KeePass",
|
||||
"group": "",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "APPLNK:2|24",
|
||||
"args": null
|
||||
}
|
||||
],
|
||||
"icon": "KeePass.png",
|
||||
"lastmodified": "2022-01-13T13:55:56.3233086+01:00",
|
||||
"created": "2022-01-13T13:55:56.3233086+01:00"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"description": null,
|
||||
"name": "Director",
|
||||
"group": "Citrix",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "APPLNK:2|43",
|
||||
"args": null
|
||||
}
|
||||
],
|
||||
"icon": "Citrix SF Logo.png",
|
||||
"lastmodified": "2022-01-14T06:09:17.0136404+01:00",
|
||||
"created": "2022-01-14T06:09:17.0136404+01:00"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"description": null,
|
||||
"name": "StoreFront",
|
||||
"group": "Citrix",
|
||||
"activedirectory_groups": [
|
||||
"A670S-BenutzerAdmins"
|
||||
],
|
||||
"prototype": false,
|
||||
"exec": [
|
||||
{
|
||||
"cmd": "APPLNK:2|1",
|
||||
"args": null
|
||||
}
|
||||
],
|
||||
"icon": "Citrix SF Logo.png",
|
||||
"lastmodified": "2022-01-17T05:14:08.2802844+01:00",
|
||||
"created": "2022-01-17T05:14:08.2802844+01:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,572 @@
|
||||
{
|
||||
"menu": [
|
||||
{
|
||||
"id": 1,
|
||||
"clickcounts": 77
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"clickcounts": 1
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"clickcounts": 1
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"clickcounts": 1
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"clickcounts": 1
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"clickcounts": 0
|
||||
}
|
||||
],
|
||||
"admin": [
|
||||
{
|
||||
"id": 1,
|
||||
"clickcounts": 1
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"clickcounts": 1
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"clickcounts": 1
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"clickcounts": 2
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"clickcounts": 0
|
||||
}
|
||||
],
|
||||
"user": [
|
||||
{
|
||||
"id": 2,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 54,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 55,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 59,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 61,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 62,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 79,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 71,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 72,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 78,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 52,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 77,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 73,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 74,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 75,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 68,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 69,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 70,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 80,
|
||||
"clickcounts": 0
|
||||
}
|
||||
],
|
||||
"citrix": [
|
||||
{
|
||||
"id": 1,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"clickcounts": 0
|
||||
}
|
||||
],
|
||||
"favorites": [
|
||||
{
|
||||
"id": 2,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"clickcounts": 1
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"clickcounts": 0
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"clickcounts": 1
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"clickcounts": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
204
GFATask/bin/Debug/Configs/appclickcounter.json
Normal file
204
GFATask/bin/Debug/Configs/appclickcounter.json
Normal file
@@ -0,0 +1,204 @@
|
||||
{
|
||||
"menu": [
|
||||
{
|
||||
"app_id": 7,
|
||||
"app_name": "Passwort Hilfe",
|
||||
"counts": 1,
|
||||
"lastclicked": "2021-12-03T21:20:01.6836995+01:00",
|
||||
"firstclicked": "2021-12-03T21:20:01.681694+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 1,
|
||||
"app_name": "Einstellungen",
|
||||
"counts": 184,
|
||||
"lastclicked": "2022-02-04T05:52:30.3468008+01:00",
|
||||
"firstclicked": "2021-12-06T06:40:14.6225027+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 2,
|
||||
"app_name": "Computer",
|
||||
"counts": 11,
|
||||
"lastclicked": "2021-12-22T11:14:19.543039+01:00",
|
||||
"firstclicked": "2021-12-06T10:10:17.6515061+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 5,
|
||||
"app_name": "eWuf",
|
||||
"counts": 3,
|
||||
"lastclicked": "2022-01-17T08:24:14.7368424+01:00",
|
||||
"firstclicked": "2021-12-20T09:28:21.8468189+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 4,
|
||||
"app_name": "AZE Online",
|
||||
"counts": 9,
|
||||
"lastclicked": "2022-01-17T14:19:18.0801469+01:00",
|
||||
"firstclicked": "2021-12-20T12:49:58.7954857+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 6,
|
||||
"app_name": "Anleitung GFATask",
|
||||
"counts": 12,
|
||||
"lastclicked": "2022-01-11T14:17:14.1709182+01:00",
|
||||
"firstclicked": "2021-12-21T09:12:34.7328556+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 3,
|
||||
"app_name": "Ticket erstellen",
|
||||
"counts": 1,
|
||||
"lastclicked": "2022-01-11T14:17:17.2208021+01:00",
|
||||
"firstclicked": "2022-01-11T14:17:17.2208021+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 9,
|
||||
"app_name": "Richtlinien, Verhaltsregeln und Empfehlungen",
|
||||
"counts": 1,
|
||||
"lastclicked": "2022-01-11T14:18:21.016702+01:00",
|
||||
"firstclicked": "2022-01-11T14:18:21.0154595+01:00"
|
||||
}
|
||||
],
|
||||
"admin": [
|
||||
{
|
||||
"app_id": 27,
|
||||
"app_name": "Veeam Backup Enterprise",
|
||||
"counts": 1,
|
||||
"lastclicked": "2021-12-02T11:17:00.7470212+01:00",
|
||||
"firstclicked": "2021-12-02T11:17:00.7460556+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 31,
|
||||
"app_name": "Confluence Doku",
|
||||
"counts": 1,
|
||||
"lastclicked": "2021-12-06T09:13:24.6316255+01:00",
|
||||
"firstclicked": "2021-12-06T09:13:24.6306282+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 43,
|
||||
"app_name": "Director",
|
||||
"counts": 1,
|
||||
"lastclicked": "2021-12-20T06:58:11.9850184+01:00",
|
||||
"firstclicked": "2021-12-20T06:58:11.9850184+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 49,
|
||||
"app_name": "4Minitz - Protokollserver",
|
||||
"counts": 4,
|
||||
"lastclicked": "2022-01-20T10:29:53.8182597+01:00",
|
||||
"firstclicked": "2021-12-21T09:11:10.9916645+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 24,
|
||||
"app_name": "KeePass",
|
||||
"counts": 1,
|
||||
"lastclicked": "2021-12-21T12:36:02.1994037+01:00",
|
||||
"firstclicked": "2021-12-21T12:36:02.1994037+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 44,
|
||||
"app_name": "SysAdmins",
|
||||
"counts": 1,
|
||||
"lastclicked": "2021-12-22T09:26:30.8543963+01:00",
|
||||
"firstclicked": "2021-12-22T09:26:30.8543963+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 50,
|
||||
"app_name": "test",
|
||||
"counts": 1,
|
||||
"lastclicked": "2021-12-23T15:29:38.6412668+01:00",
|
||||
"firstclicked": "2021-12-23T15:29:38.6402694+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 48,
|
||||
"app_name": "FSP Explorer",
|
||||
"counts": 1,
|
||||
"lastclicked": "2022-01-11T13:37:41.8644546+01:00",
|
||||
"firstclicked": "2022-01-11T13:37:41.863418+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 46,
|
||||
"app_name": "ProfileSpy",
|
||||
"counts": 1,
|
||||
"lastclicked": "2022-01-11T13:38:51.4535756+01:00",
|
||||
"firstclicked": "2022-01-11T13:38:51.4535756+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 5,
|
||||
"app_name": "ActiveRoles",
|
||||
"counts": 1,
|
||||
"lastclicked": "2022-01-14T09:01:45.4268362+01:00",
|
||||
"firstclicked": "2022-01-14T09:01:45.4268362+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 11,
|
||||
"app_name": "Confluence",
|
||||
"counts": 1,
|
||||
"lastclicked": "2022-01-14T09:08:48.4292606+01:00",
|
||||
"firstclicked": "2022-01-14T09:08:48.4292606+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 20,
|
||||
"app_name": "Arriba Admin",
|
||||
"counts": 1,
|
||||
"lastclicked": "2022-01-14T12:24:14.9488912+01:00",
|
||||
"firstclicked": "2022-01-14T12:24:14.9478966+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 1,
|
||||
"app_name": "StoreFront",
|
||||
"counts": 2,
|
||||
"lastclicked": "2022-01-19T05:24:45.8798769+01:00",
|
||||
"firstclicked": "2022-01-17T05:14:10.1051723+01:00"
|
||||
}
|
||||
],
|
||||
"user": [
|
||||
{
|
||||
"app_id": 79,
|
||||
"app_name": "Taschenrechner",
|
||||
"counts": 2,
|
||||
"lastclicked": "2021-12-21T13:11:40.5807592+01:00",
|
||||
"firstclicked": "2021-12-21T13:06:08.6129682+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 80,
|
||||
"app_name": "Snipping Tool",
|
||||
"counts": 13,
|
||||
"lastclicked": "2021-12-21T13:15:19.9443117+01:00",
|
||||
"firstclicked": "2021-12-21T13:07:48.8079741+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 5,
|
||||
"app_name": "Spontanbuchung [HowTo]",
|
||||
"counts": 1,
|
||||
"lastclicked": "2021-12-21T14:32:07.2196638+01:00",
|
||||
"firstclicked": "2021-12-21T14:32:07.2196638+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 55,
|
||||
"app_name": "Bedarfsverwaltung",
|
||||
"counts": 2,
|
||||
"lastclicked": "2021-12-22T13:00:56.559886+01:00",
|
||||
"firstclicked": "2021-12-22T07:33:07.7515293+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 36,
|
||||
"app_name": "WinfriedSE TerminPlaner",
|
||||
"counts": 2,
|
||||
"lastclicked": "2022-01-11T07:47:01.721756+01:00",
|
||||
"firstclicked": "2022-01-11T07:46:37.4381432+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 6,
|
||||
"app_name": "Fahrzeugbuchung",
|
||||
"counts": 1,
|
||||
"lastclicked": "2022-01-11T10:05:58.9677903+01:00",
|
||||
"firstclicked": "2022-01-11T10:05:58.9667971+01:00"
|
||||
},
|
||||
{
|
||||
"app_id": 28,
|
||||
"app_name": "Vergabe@Work",
|
||||
"counts": 1,
|
||||
"lastclicked": "2022-02-04T05:03:05.3621629+01:00",
|
||||
"firstclicked": "2022-02-04T05:03:05.3621629+01:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
106
GFATask/bin/Debug/Configs/main.json
Normal file
106
GFATask/bin/Debug/Configs/main.json
Normal file
@@ -0,0 +1,106 @@
|
||||
{
|
||||
"defaultwebbrowser": "Microsoft Edge",
|
||||
"webdomains": [
|
||||
".de",
|
||||
".com",
|
||||
".org",
|
||||
"a67001.ffm",
|
||||
"city.net.ffm",
|
||||
".co.uk",
|
||||
".net"
|
||||
],
|
||||
"domainname": "city",
|
||||
"loggerapppath": "D://Anwendungsentwicklung//C#//LoggingUI//bin//Release//LoggingUI.exe",
|
||||
"citrix": {
|
||||
"xmlnodes": "/resources/resource",
|
||||
"icons": "%appdata%/Citrix/SelfService/Icons/",
|
||||
"icaselfservice": "%programfiles(x86)%/Citrix/ICA Client/SelfServicePlugin/SelfService.exe",
|
||||
"appslocation": "%localappdata%/Citrix/SelfService/"
|
||||
},
|
||||
"use_ad_groups": true,
|
||||
"administration": {
|
||||
"remote_frontend_update": true,
|
||||
"ad_group": "A670S-BenutzerAdmins",
|
||||
"accounts": {
|
||||
"mailaccount": {
|
||||
"host": "mail.stadt-frankfurt.de",
|
||||
"sslport": 25,
|
||||
"username": "mailservice.amt67",
|
||||
"securepassword": [
|
||||
81,
|
||||
80,
|
||||
116,
|
||||
65,
|
||||
51,
|
||||
121,
|
||||
122,
|
||||
56
|
||||
],
|
||||
"mailmessage": {
|
||||
"to": "manuel.sowada@stadt-frankfurt.de",
|
||||
"from": {
|
||||
"address": "A670V-IT-Administration@stadt-frankfurt.de",
|
||||
"displayname": "GFATask Admin"
|
||||
}
|
||||
}
|
||||
},
|
||||
"adminlogin": {
|
||||
"securepassword": [
|
||||
103,
|
||||
102,
|
||||
97,
|
||||
102,
|
||||
102,
|
||||
109
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"font": "Microsoft YaHei",
|
||||
"colors": {
|
||||
"loadinganimation": {
|
||||
"dot1": "230, 230, 230",
|
||||
"dot2": "183, 193, 174",
|
||||
"dot3": "65, 155, 81",
|
||||
"dot4": "DarkSeaGreen"
|
||||
},
|
||||
"list": {
|
||||
"border": "45, 45, 45"
|
||||
},
|
||||
"window": {
|
||||
"backcolor": "White",
|
||||
"action": "255, 127, 32",
|
||||
"titlebarbackcolor": "82, 153, 86",
|
||||
"border": "45, 45, 45"
|
||||
},
|
||||
"groupwindow": {
|
||||
"backcolor": "White",
|
||||
"action": "255, 127, 32",
|
||||
"titlebarbackcolor": "82, 153, 86",
|
||||
"border": "45, 45, 45"
|
||||
},
|
||||
"apps": {
|
||||
"default": {
|
||||
"backcolor": "White",
|
||||
"forecolor": "Black",
|
||||
"border": "Silver",
|
||||
"image": "CornflowerBlue"
|
||||
},
|
||||
"hover": {
|
||||
"backcolor": "201, 201, 201",
|
||||
"forecolor": "Black",
|
||||
"border": "29, 98, 145",
|
||||
"image": "128, 167, 240"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sizes": {
|
||||
"window": {
|
||||
"radius": 4,
|
||||
"border": 1
|
||||
},
|
||||
"list": {
|
||||
"border": "1, 1"
|
||||
}
|
||||
}
|
||||
}
|
||||
100
GFATask/bin/Debug/Configs/newsfeeds.json
Normal file
100
GFATask/bin/Debug/Configs/newsfeeds.json
Normal file
@@ -0,0 +1,100 @@
|
||||
[
|
||||
{
|
||||
"name": "Xmas",
|
||||
"enable": false,
|
||||
"icon": "santa.png",
|
||||
"title": "Frohe Weihnachtszeit",
|
||||
"begin": {
|
||||
"day": 1,
|
||||
"month": 12
|
||||
},
|
||||
"end": {
|
||||
"day": 26,
|
||||
"month": 12
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Halloween",
|
||||
"enable": false,
|
||||
"icon": "jack.png",
|
||||
"title": "Happy Halloween",
|
||||
"begin": {
|
||||
"day": 25,
|
||||
"month": 10
|
||||
},
|
||||
"end": {
|
||||
"day": 31,
|
||||
"month": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Easter",
|
||||
"enable": false,
|
||||
"icon": "bunny.png",
|
||||
"title": "Frohe Ostern",
|
||||
"begin": {
|
||||
"day": 14,
|
||||
"month": 3
|
||||
},
|
||||
"end": {
|
||||
"day": 31,
|
||||
"month": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "SysAdminDay",
|
||||
"enable": false,
|
||||
"icon": "the_bat.png",
|
||||
"title": "Ehre Deinen Admin - Heute ist SysAdminDay -",
|
||||
"begin": {
|
||||
"day": 29,
|
||||
"month": 7
|
||||
},
|
||||
"end": {
|
||||
"day": 29,
|
||||
"month": 7
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ToDo",
|
||||
"enable": true,
|
||||
"icon": "wrench_orange.png",
|
||||
"title": "Bildschirmwechsel fehlerhaft + Padding der Apps, wenn Schriftgröße verändert wird",
|
||||
"begin": {
|
||||
"day": 1,
|
||||
"month": 1
|
||||
},
|
||||
"end": {
|
||||
"day": 31,
|
||||
"month": 12
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "AprilApril",
|
||||
"enable": false,
|
||||
"icon": "emoticon_happy.png",
|
||||
"title": "Eine bundesweite Deflation ist in Aussicht - April April",
|
||||
"begin": {
|
||||
"day": 1,
|
||||
"month": 4
|
||||
},
|
||||
"end": {
|
||||
"day": 1,
|
||||
"month": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Release",
|
||||
"enable": false,
|
||||
"icon": "version_release.png",
|
||||
"title": "Der GFATask wurde am 03.12.2021 auf Version 4.8.0 aktualisiert!",
|
||||
"begin": {
|
||||
"day": 2,
|
||||
"month": 12
|
||||
},
|
||||
"end": {
|
||||
"day": 10,
|
||||
"month": 12
|
||||
}
|
||||
}
|
||||
]
|
||||
BIN
GFATask/bin/Debug/CustomControls.dll
Normal file
BIN
GFATask/bin/Debug/CustomControls.dll
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/CustomControls.pdb
Normal file
BIN
GFATask/bin/Debug/CustomControls.pdb
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/CustomGraphics.dll
Normal file
BIN
GFATask/bin/Debug/CustomGraphics.dll
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/CustomGraphics.pdb
Normal file
BIN
GFATask/bin/Debug/CustomGraphics.pdb
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/ExScreen.dll
Normal file
BIN
GFATask/bin/Debug/ExScreen.dll
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/ExScreen.pdb
Normal file
BIN
GFATask/bin/Debug/ExScreen.pdb
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/Extensions.dll
Normal file
BIN
GFATask/bin/Debug/Extensions.dll
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/Extensions.pdb
Normal file
BIN
GFATask/bin/Debug/Extensions.pdb
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/FormEx.dll
Normal file
BIN
GFATask/bin/Debug/FormEx.dll
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/FormEx.pdb
Normal file
BIN
GFATask/bin/Debug/FormEx.pdb
Normal file
Binary file not shown.
BIN
GFATask/bin/Debug/GFATask.exe
Normal file
BIN
GFATask/bin/Debug/GFATask.exe
Normal file
Binary file not shown.
12
GFATask/bin/Debug/GFATask.exe.config
Normal file
12
GFATask/bin/Debug/GFATask.exe.config
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||
</startup>
|
||||
<!--Führt zu fehlerhafter Skalierung-->
|
||||
<System.Windows.Forms.ApplicationConfigurationSection>
|
||||
<add key="DpiAwareness" value="PerMonitorV2" />
|
||||
</System.Windows.Forms.ApplicationConfigurationSection>
|
||||
</configuration>
|
||||
BIN
GFATask/bin/Debug/GFATask.pdb
Normal file
BIN
GFATask/bin/Debug/GFATask.pdb
Normal file
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<a:clrMap xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user