Add Notes field

This commit is contained in:
Disassembler 2024-11-15 20:21:32 +01:00
parent ab54e937f5
commit 6010249694
Signed by: Disassembler
GPG Key ID: 524BD33A0EE29499
15 changed files with 281 additions and 45 deletions

View File

@ -107,6 +107,7 @@
// //
// buttonConfig // buttonConfig
// //
this.buttonConfig.ContextMenuStrip = this.contextMenuNotifyIcon;
this.buttonConfig.Image = global::RCM.Properties.Resources.ConfigIcon; this.buttonConfig.Image = global::RCM.Properties.Resources.ConfigIcon;
this.buttonConfig.Location = new System.Drawing.Point(3, 1); this.buttonConfig.Location = new System.Drawing.Point(3, 1);
this.buttonConfig.Name = "buttonConfig"; this.buttonConfig.Name = "buttonConfig";

View File

@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="contextMenuNotifyIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>416, 17</value>
</metadata>
<metadata name="timerDataSourceRefresh.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="timerDataSourceRefresh.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
@ -126,9 +129,6 @@
<metadata name="notifyIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="notifyIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>310, 17</value> <value>310, 17</value>
</metadata> </metadata>
<metadata name="contextMenuNotifyIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>416, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="notifyIcon.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="notifyIcon.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>

View File

@ -1,10 +1,10 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // Tento kód byl generován nástrojem.
// Runtime Version:4.0.30319.42000 // Verze modulu runtime:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // Změny tohoto souboru mohou způsobit nesprávné chování a budou ztraceny,
// the code is regenerated. // dojde-li k novému generování kódu.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -13,13 +13,13 @@ namespace RCM.Properties {
/// <summary> /// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc. /// Třída prostředků se silnými typy pro vyhledávání lokalizovaných řetězců atp.
/// </summary> /// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder // Tato třída byla automaticky generována třídou StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio. // pomocí nástroje podobného aplikaci ResGen nebo Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen // Chcete-li přidat nebo odebrat člena, upravte souboru .ResX a pak znovu spusťte aplikaci ResGen
// with the /str option, or rebuild your VS project. // s parametrem /str nebo znovu sestavte projekt aplikace Visual Studio.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources { internal class Resources {
@ -33,7 +33,7 @@ namespace RCM.Properties {
} }
/// <summary> /// <summary>
/// Returns the cached ResourceManager instance used by this class. /// Vrací instanci ResourceManager uloženou v mezipaměti použitou touto třídou.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager { internal static global::System.Resources.ResourceManager ResourceManager {
@ -47,8 +47,8 @@ namespace RCM.Properties {
} }
/// <summary> /// <summary>
/// Overrides the current thread's CurrentUICulture property for all /// Potlačí vlastnost CurrentUICulture aktuálního vlákna pro všechna
/// resource lookups using this strongly typed resource class. /// vyhledání prostředků pomocí třídy prostředků se silnými typy.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture { internal static global::System.Globalization.CultureInfo Culture {
@ -61,7 +61,7 @@ namespace RCM.Properties {
} }
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Vyhledává lokalizovaný prostředek typu System.Drawing.Bitmap.
/// </summary> /// </summary>
internal static System.Drawing.Bitmap ConfigIcon { internal static System.Drawing.Bitmap ConfigIcon {
get { get {

View File

@ -8,12 +8,13 @@
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<RootNamespace>RCM</RootNamespace> <RootNamespace>RCM</RootNamespace>
<AssemblyName>RCM</AssemblyName> <AssemblyName>RCM</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<NuGetPackageImportStamp> <NuGetPackageImportStamp>
</NuGetPackageImportStamp> </NuGetPackageImportStamp>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@ -58,26 +59,49 @@
<ApplicationIcon>Program.ico</ApplicationIcon> <ApplicationIcon>Program.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Google.Protobuf"> <Reference Include="Google.Protobuf, Version=3.28.3.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>..\packages\Google.Protobuf.3.10.1\lib\net45\Google.Protobuf.dll</HintPath> <HintPath>..\packages\Google.Protobuf.3.28.3\lib\net45\Google.Protobuf.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.VisualBasic" /> <Reference Include="Microsoft.VisualBasic" />
<Reference Include="MySql.Data, Version=8.0.15.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL"> <Reference Include="MySql.Data, Version=8.0.15.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.15\lib\net452\MySql.Data.dll</HintPath> <HintPath>..\packages\MySql.Data.8.0.15\lib\net452\MySql.Data.dll</HintPath>
</Reference> </Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath> <HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Data.SQLite, Version=1.0.110.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> <Reference Include="System.Data.SQLite, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.Core.1.0.110.0\lib\net46\System.Data.SQLite.dll</HintPath> <HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\lib\net46\System.Data.SQLite.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Drawing.Design" /> <Reference Include="System.Drawing.Design" />
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.6.0\lib\net462\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.6.0\lib\net462\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.0\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.Windows" /> <Reference Include="System.Windows" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="ConfigFormTab.cs"> <Compile Include="ConfigFormTab.cs">
@ -224,6 +248,9 @@
<DependentUpon>WebSite.cs</DependentUpon> <DependentUpon>WebSite.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Record\WebSite\WebsiteControl.resx">
<DependentUpon>WebSiteControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Record\WinBox\WinBox.resx"> <EmbeddedResource Include="Record\WinBox\WinBox.resx">
<DependentUpon>WinBox.cs</DependentUpon> <DependentUpon>WinBox.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>
@ -247,11 +274,11 @@
<Content Include="Program.ico" /> <Content Include="Program.ico" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\System.Data.SQLite.Core.1.0.110.0\build\net46\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.110.0\build\net46\System.Data.SQLite.Core.targets')" /> <Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup> <PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> <ErrorText>Tenhle projekt odkazuje na balíčky NuGet, které nejsou v tomhle počítači k dispozici. Když je chcete stáhnout, použijte funkci obnovení balíčků NuGet. Další informace najdete na adrese http://go.microsoft.com/fwlink/?LinkID=322105. Chybějícím souborem je soubor {0}.</ErrorText>
</PropertyGroup> </PropertyGroup>
<Error Condition="!Exists('..\packages\System.Data.SQLite.Core.1.0.110.0\build\net46\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Data.SQLite.Core.1.0.110.0\build\net46\System.Data.SQLite.Core.targets'))" /> <Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
</Target> </Target>
</Project> </Project>

View File

@ -12,6 +12,7 @@ namespace RCM {
public string Host { get; set; } public string Host { get; set; }
public string Username { get; set; } public string Username { get; set; }
public string Password { get; set; } public string Password { get; set; }
public string Notes { get; set; }
[NonSerialized] [NonSerialized]
private SimpleHostControl _control; private SimpleHostControl _control;
[NonSerialized] [NonSerialized]
@ -26,7 +27,7 @@ namespace RCM {
public UserControl GetControl() { public UserControl GetControl() {
if (_control == null || _control.IsDisposed) { if (_control == null || _control.IsDisposed) {
_control = new SimpleHostControl(Host, Username, Password); _control = new SimpleHostControl(Host, Username, Password, Notes);
} }
return _control; return _control;
} }
@ -35,10 +36,7 @@ namespace RCM {
Host = _control.textBoxHostAddress.Text; Host = _control.textBoxHostAddress.Text;
Username = _control.textBoxUsername.Text; Username = _control.textBoxUsername.Text;
Password = _control.textBoxPassword.Text; Password = _control.textBoxPassword.Text;
} Notes = _control.textBoxNotes.Text;
public static void Init() {
} }
} }
} }

View File

@ -11,6 +11,7 @@ namespace RCM {
public string Host { get; set; } public string Host { get; set; }
public string Username { get; set; } public string Username { get; set; }
public string Password { get; set; } public string Password { get; set; }
public string Notes { get; set; }
[NonSerialized] [NonSerialized]
private SimpleHostControl _control; private SimpleHostControl _control;
[NonSerialized] [NonSerialized]
@ -25,7 +26,7 @@ namespace RCM {
public UserControl GetControl() { public UserControl GetControl() {
if (_control == null || _control.IsDisposed) { if (_control == null || _control.IsDisposed) {
_control = new SimpleHostControl(Host, Username, Password); _control = new SimpleHostControl(Host, Username, Password, Notes);
} }
return _control; return _control;
} }
@ -34,6 +35,7 @@ namespace RCM {
Host = _control.textBoxHostAddress.Text; Host = _control.textBoxHostAddress.Text;
Username = _control.textBoxUsername.Text; Username = _control.textBoxUsername.Text;
Password = _control.textBoxPassword.Text; Password = _control.textBoxPassword.Text;
Notes = _control.textBoxNotes.Text;
} }
} }
} }

View File

@ -11,6 +11,7 @@ namespace RCM {
public string URL { get; set; } public string URL { get; set; }
public string Username { get; set; } public string Username { get; set; }
public string Password { get; set; } public string Password { get; set; }
public string Notes { get; set; }
[NonSerialized] [NonSerialized]
private WebSiteControl _control; private WebSiteControl _control;
[NonSerialized] [NonSerialized]
@ -34,6 +35,7 @@ namespace RCM {
URL = _control.textBoxURL.Text; URL = _control.textBoxURL.Text;
Username = _control.textBoxUsername.Text; Username = _control.textBoxUsername.Text;
Password = _control.textBoxPassword.Text; Password = _control.textBoxPassword.Text;
Notes = _control.textBoxNotes.Text;
} }
} }
} }

View File

@ -30,6 +30,8 @@
this.labelPassword = new System.Windows.Forms.Label(); this.labelPassword = new System.Windows.Forms.Label();
this.labelUsername = new System.Windows.Forms.Label(); this.labelUsername = new System.Windows.Forms.Label();
this.labelURL = new System.Windows.Forms.Label(); this.labelURL = new System.Windows.Forms.Label();
this.textBoxNotes = new System.Windows.Forms.TextBox();
this.labelNotes = new System.Windows.Forms.Label();
this.SuspendLayout(); this.SuspendLayout();
// //
// buttonUnmaskPassword // buttonUnmaskPassword
@ -91,10 +93,30 @@
this.labelURL.TabIndex = 12; this.labelURL.TabIndex = 12;
this.labelURL.Text = "URL:"; this.labelURL.Text = "URL:";
// //
// WebsiteControl // textBoxNotes
//
this.textBoxNotes.Location = new System.Drawing.Point(120, 79);
this.textBoxNotes.Multiline = true;
this.textBoxNotes.Name = "textBoxNotes";
this.textBoxNotes.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.textBoxNotes.Size = new System.Drawing.Size(175, 64);
this.textBoxNotes.TabIndex = 5;
//
// labelNotes
//
this.labelNotes.AutoSize = true;
this.labelNotes.Location = new System.Drawing.Point(0, 82);
this.labelNotes.Name = "labelNotes";
this.labelNotes.Size = new System.Drawing.Size(38, 13);
this.labelNotes.TabIndex = 17;
this.labelNotes.Text = "Notes:";
//
// WebSiteControl
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.textBoxNotes);
this.Controls.Add(this.labelNotes);
this.Controls.Add(this.buttonUnmaskPassword); this.Controls.Add(this.buttonUnmaskPassword);
this.Controls.Add(this.textBoxPassword); this.Controls.Add(this.textBoxPassword);
this.Controls.Add(this.textBoxUsername); this.Controls.Add(this.textBoxUsername);
@ -102,8 +124,8 @@
this.Controls.Add(this.labelPassword); this.Controls.Add(this.labelPassword);
this.Controls.Add(this.labelUsername); this.Controls.Add(this.labelUsername);
this.Controls.Add(this.labelURL); this.Controls.Add(this.labelURL);
this.Name = "WebsiteControl"; this.Name = "WebSiteControl";
this.Size = new System.Drawing.Size(300, 77); this.Size = new System.Drawing.Size(300, 150);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -118,5 +140,7 @@
public System.Windows.Forms.TextBox textBoxURL; public System.Windows.Forms.TextBox textBoxURL;
public System.Windows.Forms.TextBox textBoxUsername; public System.Windows.Forms.TextBox textBoxUsername;
public System.Windows.Forms.TextBox textBoxPassword; public System.Windows.Forms.TextBox textBoxPassword;
public System.Windows.Forms.TextBox textBoxNotes;
private System.Windows.Forms.Label labelNotes;
} }
} }

View File

@ -8,6 +8,7 @@ namespace RCM {
textBoxURL.Text = website.URL; textBoxURL.Text = website.URL;
textBoxUsername.Text = website.Username; textBoxUsername.Text = website.Username;
textBoxPassword.Text = website.Password; textBoxPassword.Text = website.Password;
textBoxNotes.Text = website.Notes;
} }
private void ButtonUnmaskPassword_Click(object sender, EventArgs e) { private void ButtonUnmaskPassword_Click(object sender, EventArgs e) {

View 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>

View File

@ -14,6 +14,7 @@ namespace RCM {
public string Host { get; set; } public string Host { get; set; }
public string Username { get; set; } public string Username { get; set; }
public string Password { get; set; } public string Password { get; set; }
public string Notes { get; set; }
[NonSerialized] [NonSerialized]
private SimpleHostControl _control; private SimpleHostControl _control;
[NonSerialized] [NonSerialized]
@ -28,7 +29,7 @@ namespace RCM {
public UserControl GetControl() { public UserControl GetControl() {
if (_control == null || _control.IsDisposed) { if (_control == null || _control.IsDisposed) {
_control = new SimpleHostControl(Host, Username, Password); _control = new SimpleHostControl(Host, Username, Password, Notes);
} }
return _control; return _control;
} }
@ -37,6 +38,7 @@ namespace RCM {
Host = _control.textBoxHostAddress.Text; Host = _control.textBoxHostAddress.Text;
Username = _control.textBoxUsername.Text; Username = _control.textBoxUsername.Text;
Password = _control.textBoxPassword.Text; Password = _control.textBoxPassword.Text;
Notes = _control.textBoxNotes.Text;
} }
} }
} }

View File

@ -30,6 +30,8 @@
this.labelPassword = new System.Windows.Forms.Label(); this.labelPassword = new System.Windows.Forms.Label();
this.labelUsername = new System.Windows.Forms.Label(); this.labelUsername = new System.Windows.Forms.Label();
this.labelHostAddress = new System.Windows.Forms.Label(); this.labelHostAddress = new System.Windows.Forms.Label();
this.labelNotes = new System.Windows.Forms.Label();
this.textBoxNotes = new System.Windows.Forms.TextBox();
this.SuspendLayout(); this.SuspendLayout();
// //
// buttonUnmaskPassword // buttonUnmaskPassword
@ -91,10 +93,30 @@
this.labelHostAddress.TabIndex = 12; this.labelHostAddress.TabIndex = 12;
this.labelHostAddress.Text = "Host address:"; this.labelHostAddress.Text = "Host address:";
// //
// labelNotes
//
this.labelNotes.AutoSize = true;
this.labelNotes.Location = new System.Drawing.Point(0, 82);
this.labelNotes.Name = "labelNotes";
this.labelNotes.Size = new System.Drawing.Size(38, 13);
this.labelNotes.TabIndex = 15;
this.labelNotes.Text = "Notes:";
//
// textBoxNotes
//
this.textBoxNotes.Location = new System.Drawing.Point(120, 79);
this.textBoxNotes.Multiline = true;
this.textBoxNotes.Name = "textBoxNotes";
this.textBoxNotes.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.textBoxNotes.Size = new System.Drawing.Size(175, 64);
this.textBoxNotes.TabIndex = 5;
//
// SimpleHostControl // SimpleHostControl
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.textBoxNotes);
this.Controls.Add(this.labelNotes);
this.Controls.Add(this.buttonUnmaskPassword); this.Controls.Add(this.buttonUnmaskPassword);
this.Controls.Add(this.textBoxPassword); this.Controls.Add(this.textBoxPassword);
this.Controls.Add(this.textBoxUsername); this.Controls.Add(this.textBoxUsername);
@ -103,7 +125,7 @@
this.Controls.Add(this.labelUsername); this.Controls.Add(this.labelUsername);
this.Controls.Add(this.labelHostAddress); this.Controls.Add(this.labelHostAddress);
this.Name = "SimpleHostControl"; this.Name = "SimpleHostControl";
this.Size = new System.Drawing.Size(300, 75); this.Size = new System.Drawing.Size(300, 150);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -118,5 +140,7 @@
public System.Windows.Forms.TextBox textBoxHostAddress; public System.Windows.Forms.TextBox textBoxHostAddress;
public System.Windows.Forms.TextBox textBoxUsername; public System.Windows.Forms.TextBox textBoxUsername;
public System.Windows.Forms.TextBox textBoxPassword; public System.Windows.Forms.TextBox textBoxPassword;
private System.Windows.Forms.Label labelNotes;
public System.Windows.Forms.TextBox textBoxNotes;
} }
} }

View File

@ -3,11 +3,12 @@ using System.Windows.Forms;
namespace RCM { namespace RCM {
public partial class SimpleHostControl : UserControl { public partial class SimpleHostControl : UserControl {
public SimpleHostControl(string host, string username, string password) { public SimpleHostControl(string host, string username, string password, string notes) {
InitializeComponent(); InitializeComponent();
textBoxHostAddress.Text = host; textBoxHostAddress.Text = host;
textBoxUsername.Text = username; textBoxUsername.Text = username;
textBoxPassword.Text = password; textBoxPassword.Text = password;
textBoxNotes.Text = notes;
} }
private void ButtonUnmaskPassword_Click(object sender, EventArgs e) { private void ButtonUnmaskPassword_Click(object sender, EventArgs e) {

View File

@ -4,8 +4,36 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral" /> <assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.10.1.0" newVersion="3.10.1.0" /> <bindingRedirect oldVersion="0.0.0.0-3.28.3.0" newVersion="3.28.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ZstdSharp" publicKeyToken="8d151af33a4ad5cf" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.8.2.0" newVersion="0.8.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="K4os.Compression.LZ4.Streams" publicKeyToken="2186fa9121ef231d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.8.0" newVersion="1.3.8.0" />
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
</configuration> <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup></configuration>

View File

@ -1,7 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Google.Protobuf" version="3.10.1" targetFramework="net461" /> <package id="Google.Protobuf" version="3.28.3" targetFramework="net48" />
<package id="MySql.Data" version="8.0.15" targetFramework="net461" /> <package id="MySql.Data" version="8.0.15" targetFramework="net48" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" /> <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
<package id="System.Data.SQLite.Core" version="1.0.110.0" targetFramework="net461" /> <package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.119.0" targetFramework="net48" />
<package id="System.Buffers" version="4.6.0" targetFramework="net48" />
<package id="System.Data.SQLite.Core" version="1.0.119.0" targetFramework="net48" />
<package id="System.Memory" version="4.6.0" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.6.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.0" targetFramework="net48" />
<package id="System.Threading.Tasks.Extensions" version="4.6.0" targetFramework="net48" />
</packages> </packages>