Added project "Scheduler"

This commit is contained in:
Micke Prag 2008-02-14 10:53:09 +00:00
parent 396ca1e72b
commit 809659ea17
64 changed files with 27338 additions and 0 deletions

View file

@ -0,0 +1,47 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{292E034F-C3B8-4CED-87DD-479040094118}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DeviceHandler</RootNamespace>
<AssemblyName>DeviceHandler</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Handler.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -0,0 +1,176 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
namespace DeviceHandler
{
public class Handler
{
#region Unmanaged Code
[DllImport("TellUsbD101.dll")]
private static extern bool devTurnOn(int value);
[DllImport("TellUsbD101.dll")]
private static extern bool devTurnOff(int value);
[DllImport("TellUsbD101.dll")]
private static extern int devGetDeviceId(int value);
[DllImport("TellUsbD101.dll")]
private static extern string devGetName(int value);
[DllImport("TellUsbD101.dll")]
private static extern string devGetVendor(int value);
[DllImport("TellUsbD101.dll")]
private static extern int devGetNumberOfDevices();
#endregion
private List<Device> m_Devices = new List<Device>();
public Device Find(int deviceID)
{
foreach (Device item in m_Devices)
{
if (item.ID == deviceID)
return item;
}
return null;
}
/// <summary>
/// Turns off a specific device.
/// </summary>
/// <param name="item">The item in question.</param>
/// <returns>True if the command was successfull and false if not.</returns>
public bool TurnOff(Device item)
{
return devTurnOff(item.ID);
}
public bool TurnOffWithDelay(Device item)
{
bool result = devTurnOff(item.ID);
System.Threading.Thread.Sleep(1000);
return result;
}
/// <summary>
/// Turns on a specific device.
/// </summary>
/// <param name="item">The device in question.</param>
/// <returns>True if the command was successfull.</returns>
public bool TurnOn(Device item)
{
return devTurnOn(item.ID);
}
public bool TurnOnWithDelay(Device item)
{
//Makesure that we halt for 1 second so that the Telldus stick have time to send the signal.
bool result = devTurnOn(item.ID);
System.Threading.Thread.Sleep(1000);
return result;
}
/// <summary>
/// Loads all known devices into a collection.
/// </summary>
/// <returns>True if the process was successfull.</returns>
public bool Load()
{
try
{
m_Devices.Clear();
int count = devGetNumberOfDevices() - 1;
for (int i = 0; i <= count; i++)
{
//Collect information from the driver.
int deviceID = devGetDeviceId(i);
string deviceName = devGetName(deviceID);
string deviceVendor = devGetVendor(deviceID);
m_Devices.Add(new Device(deviceID, deviceName, deviceVendor));
}
return true;
}
catch
{
return false;
}
}
public List<Device> Devices
{
get
{
if (m_Devices.Count == 0)
Load();
return m_Devices;
}
set { m_Devices = value; }
}
}
[Serializable]
public class Device:ISerializable
{
private int m_ID = -1;
private string m_Name = "";
private string m_Vendor = "";
public Device(SerializationInfo info,StreamingContext cntx)
{
}
public Device(int id, string name,string vendor)
{
m_ID = id;
m_Name = name;
m_Vendor = vendor;
}
public int ID
{
get { return m_ID; }
set { m_ID = value; }
}
public string Name
{
get { return m_Name; }
set { m_Name = value; }
}
public string Vendor
{
get { return m_Vendor; }
set { m_Vendor = value; }
}
public override string ToString()
{
return m_Name;
}
#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
throw new Exception("The method or operation is not implemented.");
}
#endregion
}
}

View file

@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DeviceHandler")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Telldus Technologies")]
[assembly: AssemblyProduct("DeviceHandler")]
[assembly: AssemblyCopyright("Copyright © Telldus Technologies 2007")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("f38b6a0f-16f2-4be8-9e86-8706f5335778")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2007.1.*")]
[assembly: AssemblyFileVersion("2007.1.*")]

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings>
</TableUISettings>
</DataSetUISetting>

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DataStorage" targetNamespace="http://tempuri.org/DataStorage.xsd" xmlns:mstns="http://tempuri.org/DataStorage.xsd" xmlns="http://tempuri.org/DataStorage.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
</Connections>
<Tables>
</Tables>
<Sources>
</Sources>
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DataStorage" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DataStorage" msprop:Generator_DataSetName="DataStorage">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Job" msprop:Generator_UserTableName="Job" msprop:Generator_RowDeletedName="JobRowDeleted" msprop:Generator_RowChangedName="JobRowChanged" msprop:Generator_RowClassName="JobRow" msprop:Generator_RowChangingName="JobRowChanging" msprop:Generator_RowEvArgName="JobRowChangeEvent" msprop:Generator_RowEvHandlerName="JobRowChangeEventHandler" msprop:Generator_TableClassName="JobDataTable" msprop:Generator_TableVarName="tableJob" msprop:Generator_RowDeletingName="JobRowDeleting" msprop:Generator_TablePropName="Job">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_UserColumnName="ID" msprop:Generator_ColumnVarNameInTable="columnID" msprop:Generator_ColumnPropNameInRow="ID" msprop:Generator_ColumnPropNameInTable="IDColumn" type="xs:int" />
<xs:element name="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnVarNameInTable="columnName" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnPropNameInTable="NameColumn" type="xs:string" />
<xs:element name="Description" msprop:Generator_UserColumnName="Description" msprop:Generator_ColumnVarNameInTable="columnDescription" msprop:Generator_ColumnPropNameInRow="Description" msprop:Generator_ColumnPropNameInTable="DescriptionColumn" type="xs:string" minOccurs="0" />
<xs:element name="JobName" msprop:Generator_UserColumnName="JobName" msprop:Generator_ColumnVarNameInTable="columnJobName" msprop:Generator_ColumnPropNameInRow="JobName" msprop:Generator_ColumnPropNameInTable="JobNameColumn" type="xs:string" minOccurs="0" />
<xs:element name="Username" msprop:Generator_UserColumnName="Username" msprop:Generator_ColumnVarNameInTable="columnUsername" msprop:Generator_ColumnPropNameInRow="Username" msprop:Generator_ColumnPropNameInTable="UsernameColumn" type="xs:string" minOccurs="0" />
<xs:element name="Password" msprop:Generator_UserColumnName="Password" msprop:Generator_ColumnVarNameInTable="columnPassword" msprop:Generator_ColumnPropNameInRow="Password" msprop:Generator_ColumnPropNameInTable="PasswordColumn" type="xs:string" minOccurs="0" />
<xs:element name="StartTime" msprop:Generator_UserColumnName="StartTime" msprop:Generator_ColumnPropNameInRow="StartTime" msprop:Generator_ColumnVarNameInTable="columnStartTime" msprop:Generator_ColumnPropNameInTable="StartTimeColumn" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="JobActions" msprop:Generator_UserTableName="JobActions" msprop:Generator_RowDeletedName="JobActionsRowDeleted" msprop:Generator_RowChangedName="JobActionsRowChanged" msprop:Generator_RowClassName="JobActionsRow" msprop:Generator_RowChangingName="JobActionsRowChanging" msprop:Generator_RowEvArgName="JobActionsRowChangeEvent" msprop:Generator_RowEvHandlerName="JobActionsRowChangeEventHandler" msprop:Generator_TableClassName="JobActionsDataTable" msprop:Generator_TableVarName="tableJobActions" msprop:Generator_RowDeletingName="JobActionsRowDeleting" msprop:Generator_TablePropName="JobActions">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_UserColumnName="ID" msprop:Generator_ColumnVarNameInTable="columnID" msprop:Generator_ColumnPropNameInRow="ID" msprop:Generator_ColumnPropNameInTable="IDColumn" type="xs:int" />
<xs:element name="JobID" msprop:Generator_UserColumnName="JobID" msprop:Generator_ColumnVarNameInTable="columnJobID" msprop:Generator_ColumnPropNameInRow="JobID" msprop:Generator_ColumnPropNameInTable="JobIDColumn" type="xs:int" minOccurs="0" />
<xs:element name="DeviceID" msprop:Generator_UserColumnName="DeviceID" msprop:Generator_ColumnVarNameInTable="columnDeviceID" msprop:Generator_ColumnPropNameInRow="DeviceID" msprop:Generator_ColumnPropNameInTable="DeviceIDColumn" type="xs:int" minOccurs="0" />
<xs:element name="TurnOn" msprop:Generator_UserColumnName="TurnOn" msprop:Generator_ColumnVarNameInTable="columnTurnOn" msprop:Generator_ColumnPropNameInRow="TurnOn" msprop:Generator_ColumnPropNameInTable="TurnOnColumn" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:Job" />
<xs:field xpath="mstns:ID" />
</xs:unique>
<xs:unique name="Constraint2">
<xs:selector xpath=".//mstns:Job" />
<xs:field xpath="mstns:Name" />
</xs:unique>
<xs:unique name="JobActionsKey1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:JobActions" />
<xs:field xpath="mstns:ID" />
</xs:unique>
</xs:element>
<xs:annotation>
<xs:appinfo>
<msdata:Relationship name="Job_JobActions" msdata:parent="Job" msdata:child="JobActions" msdata:parentkey="ID" msdata:childkey="JobID" msprop:Generator_UserRelationName="Job_JobActions" msprop:Generator_RelationVarName="relationJob_JobActions" msprop:Generator_UserChildTable="JobActions" msprop:Generator_UserParentTable="Job" msprop:Generator_ParentPropName="JobRow" msprop:Generator_ChildPropName="GetJobActionsRows" />
</xs:appinfo>
</xs:annotation>
</xs:schema>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-10" ViewPortY="-47" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:Job" ZOrder="3" X="154" Y="115" Height="162" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="24" SplitterPosition="158" />
<Shape ID="DesignTable:JobActions" ZOrder="2" X="390" Y="113" Height="220" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="216" />
</Shapes>
<Connectors>
<Connector ID="DesignRelation:Job_JobActions" ZOrder="1" LineWidth="11">
<RoutePoints>
<Point>
<X>304</X>
<Y>129</Y>
</Point>
<Point>
<X>390</X>
<Y>129</Y>
</Point>
</RoutePoints>
</Connector>
</Connectors>
</DiagramLayout>

View file

@ -0,0 +1,242 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{8B613D91-8906-4A60-BAF7-328DA437DF01}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DeviceScheduler</RootNamespace>
<AssemblyName>DeviceScheduler</AssemblyName>
<ApplicationIcon>Alarm.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Design" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="TaskScheduler, Version=1.1.2826.33653, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>References\TaskScheduler.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="DataStorage.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>DataStorage.xsd</DependentUpon>
</Compile>
<Compile Include="EncryptDecrypt.cs" />
<Compile Include="frmAbout.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmAbout.Designer.cs">
<DependentUpon>frmAbout.cs</DependentUpon>
</Compile>
<Compile Include="frmAskSecurityPolicy.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmAskSecurityPolicy.Designer.cs">
<DependentUpon>frmAskSecurityPolicy.cs</DependentUpon>
</Compile>
<Compile Include="frmAskUsername.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmAskUsername.Designer.cs">
<DependentUpon>frmAskUsername.cs</DependentUpon>
</Compile>
<Compile Include="frmMain.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmMain.Designer.cs">
<DependentUpon>frmMain.cs</DependentUpon>
</Compile>
<Compile Include="frmSchedule.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSchedule.Designer.cs">
<DependentUpon>frmSchedule.cs</DependentUpon>
</Compile>
<Compile Include="frmScheduleAddDevice.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmScheduleAddDevice.Designer.cs">
<DependentUpon>frmScheduleAddDevice.cs</DependentUpon>
</Compile>
<Compile Include="frmSelectDevice.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSelectDevice.Designer.cs">
<DependentUpon>frmSelectDevice.cs</DependentUpon>
</Compile>
<Compile Include="frmSplash.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmSplash.Designer.cs">
<DependentUpon>frmSplash.cs</DependentUpon>
</Compile>
<Compile Include="Languages\Localization.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="frmAbout.resx">
<SubType>Designer</SubType>
<DependentUpon>frmAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmAskSecurityPolicy.resx">
<SubType>Designer</SubType>
<DependentUpon>frmAskSecurityPolicy.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmAskUsername.resx">
<SubType>Designer</SubType>
<DependentUpon>frmAskUsername.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmMain.en.resx">
<SubType>Designer</SubType>
<DependentUpon>frmMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmMain.resx">
<SubType>Designer</SubType>
<DependentUpon>frmMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmMain.sv.resx">
<SubType>Designer</SubType>
<DependentUpon>frmMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSchedule.resx">
<SubType>Designer</SubType>
<DependentUpon>frmSchedule.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmScheduleAddDevice.resx">
<SubType>Designer</SubType>
<DependentUpon>frmScheduleAddDevice.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSelectDevice.resx">
<SubType>Designer</SubType>
<DependentUpon>frmSelectDevice.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSplash.resx">
<SubType>Designer</SubType>
<DependentUpon>frmSplash.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="DataStorage.xsc">
<DependentUpon>DataStorage.xsd</DependentUpon>
</None>
<None Include="DataStorage.xsd">
<SubType>Designer</SubType>
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>DataStorage.Designer.cs</LastGenOutput>
</None>
<None Include="DataStorage.xss">
<DependentUpon>DataStorage.xsd</DependentUpon>
</None>
<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>
<Compile Include="Languages\WinFormStrings.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>WinFormStrings.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DeviceHandler\DeviceHandler.csproj">
<Project>{292E034F-C3B8-4CED-87DD-479040094118}</Project>
<Name>DeviceHandler</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="Alarm.ico" />
<EmbeddedResource Include="frmAbout.en.resx">
<SubType>Designer</SubType>
<DependentUpon>frmAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmAbout.sv.resx">
<SubType>Designer</SubType>
<DependentUpon>frmAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmAskSecurityPolicy.en.resx">
<SubType>Designer</SubType>
<DependentUpon>frmAskSecurityPolicy.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmAskSecurityPolicy.sv.resx">
<SubType>Designer</SubType>
<DependentUpon>frmAskSecurityPolicy.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmAskUsername.en.resx">
<SubType>Designer</SubType>
<DependentUpon>frmAskUsername.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmAskUsername.sv.resx">
<SubType>Designer</SubType>
<DependentUpon>frmAskUsername.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSchedule.en.resx">
<SubType>Designer</SubType>
<DependentUpon>frmSchedule.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmSchedule.sv.resx">
<SubType>Designer</SubType>
<DependentUpon>frmSchedule.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmScheduleAddDevice.en.resx">
<SubType>Designer</SubType>
<DependentUpon>frmScheduleAddDevice.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Languages\WinFormStrings.en.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Languages\WinFormStrings.resx">
<SubType>Designer</SubType>
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>WinFormStrings.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Languages\WinFormStrings.sv.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -0,0 +1,338 @@
using System;
using System.IO;
using System.Security.Cryptography;
namespace DeviceScheduler
{
/// <summary>
/// Summary description for EncryptDecrypt.
/// </summary>
public class EncryptDecrypt
{
public EncryptDecrypt()
{
//
// TODO: Add constructor logic here
//
}
// Encrypt a byte array into a byte array using a key and an IV
public static byte[] Encrypt(byte[] clearData, byte[] Key, byte[] IV)
{
// Create a MemoryStream that is going to accept the encrypted bytes
MemoryStream ms = new MemoryStream();
// Create a symmetric algorithm.
// We are going to use Rijndael because it is strong and available on all platforms.
// You can use other algorithms, to do so substitute the next line with something like
// TripleDES alg = TripleDES.Create();
Rijndael alg = Rijndael.Create();
// Now set the key and the IV.
// We need the IV (Initialization Vector) because the algorithm is operating in its default
// mode called CBC (Cipher Block Chaining). The IV is XORed with the first block (8 byte)
// of the data before it is encrypted, and then each encrypted block is XORed with the
// following block of plaintext. This is done to make encryption more secure.
// There is also a mode called ECB which does not need an IV, but it is much less secure.
alg.Key = Key;
alg.IV = IV;
// Create a CryptoStream through which we are going to be pumping our data.
// CryptoStreamMode.Write means that we are going to be writing data to the stream
// and the output will be written in the MemoryStream we have provided.
CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);
// Write the data and make it do the encryption
cs.Write(clearData, 0, clearData.Length);
// Close the crypto stream (or do FlushFinalBlock).
// This will tell it that we have done our encryption and there is no more data coming in,
// and it is now a good time to apply the padding and finalize the encryption process.
cs.Close();
// Now get the encrypted data from the MemoryStream.
// Some people make a mistake of using GetBuffer() here, which is not the right way.
byte[] encryptedData = ms.ToArray();
return encryptedData;
}
//
//
/// <summary>
/// Encrypt a string into a string using a password
/// Uses Encrypt(byte[], byte[], byte[])
/// </summary>
/// <param name="clearText">The text to encrypt.</param>
/// <param name="Password">The password to use.</param>
/// <returns>An encrypted string.</returns>
public static string Encrypt(string clearText, string Password)
{
// First we need to turn the input string into a byte array.
byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
// Then, we need to turn the password into Key and IV
// We are using salt to make it harder to guess our key using a dictionary attack -
// trying to guess a password by enumerating all possible words.
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
// Now get the key/IV and do the encryption using the function that accepts byte arrays.
// Using PasswordDeriveBytes object we are first getting 32 bytes for the Key
// (the default Rijndael key length is 256bit = 32bytes) and then 16 bytes for the IV.
// IV should always be the block size, which is by default 16 bytes (128 bit) for Rijndael.
// If you are using DES/TripleDES/RC2 the block size is 8 bytes and so should be the IV size.
// You can also read KeySize/BlockSize properties off the algorithm to find out the sizes.
byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));
// Now we need to turn the resulting byte array into a string.
// A common mistake would be to use an Encoding class for that. It does not work
// because not all byte values can be represented by characters.
// We are going to be using Base64 encoding that is designed exactly for what we are
// trying to do.
return Convert.ToBase64String(encryptedData);
}
// Encrypt bytes into bytes using a password
// Uses Encrypt(byte[], byte[], byte[])
public static byte[] Encrypt(byte[] clearData, string Password)
{
// We need to turn the password into Key and IV.
// We are using salt to make it harder to guess our key using a dictionary attack -
// trying to guess a password by enumerating all possible words.
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
// Now get the key/IV and do the encryption using the function that accepts byte arrays.
// Using PasswordDeriveBytes object we are first getting 32 bytes for the Key
// (the default Rijndael key length is 256bit = 32bytes) and then 16 bytes for the IV.
// IV should always be the block size, which is by default 16 bytes (128 bit) for Rijndael.
// If you are using DES/TripleDES/RC2 the block size is 8 bytes and so should be the IV size.
// You can also read KeySize/BlockSize properties off the algorithm to find out the sizes.
return Encrypt(clearData, pdb.GetBytes(32), pdb.GetBytes(16));
}
// Encrypt a file into another file using a password
public static void Encrypt(string fileIn, string fileOut, string Password)
{
// First we are going to open the file streams
FileStream fsIn = new FileStream(fileIn, FileMode.Open, FileAccess.Read);
FileStream fsOut = new FileStream(fileOut, FileMode.OpenOrCreate, FileAccess.Write);
// Then we are going to derive a Key and an IV from the Password and create an algorithm
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
Rijndael alg = Rijndael.Create();
alg.Key = pdb.GetBytes(32);
alg.IV = pdb.GetBytes(16);
// Now create a crypto stream through which we are going to be pumping data.
// Our fileOut is going to be receiving the encrypted bytes.
CryptoStream cs = new CryptoStream(fsOut, alg.CreateEncryptor(), CryptoStreamMode.Write);
// Now will will initialize a buffer and will be processing the input file in chunks.
// This is done to avoid reading the whole file (which can be huge) into memory.
int bufferLen = 4096;
byte[] buffer = new byte[bufferLen];
int bytesRead;
do
{
// read a chunk of data from the input file
bytesRead = fsIn.Read(buffer, 0, bufferLen);
// encrypt it
cs.Write(buffer, 0, bytesRead);
} while(bytesRead != 0);
// close everything
cs.Close(); // this will also close the unrelying fsOut stream
fsIn.Close();
}
// Decrypt a byte array into a byte array using a key and an IV
public static byte[] Decrypt(byte[] cipherData, byte[] Key, byte[] IV)
{
// Create a MemoryStream that is going to accept the decrypted bytes
MemoryStream ms = new MemoryStream();
// Create a symmetric algorithm.
// We are going to use Rijndael because it is strong and available on all platforms.
// You can use other algorithms, to do so substitute the next line with something like
// TripleDES alg = TripleDES.Create();
Rijndael alg = Rijndael.Create();
// Now set the key and the IV.
// We need the IV (Initialization Vector) because the algorithm is operating in its default
// mode called CBC (Cipher Block Chaining). The IV is XORed with the first block (8 byte)
// of the data after it is decrypted, and then each decrypted block is XORed with the previous
// cipher block. This is done to make encryption more secure.
// There is also a mode called ECB which does not need an IV, but it is much less secure.
alg.Key = Key;
alg.IV = IV;
// Create a CryptoStream through which we are going to be pumping our data.
// CryptoStreamMode.Write means that we are going to be writing data to the stream
// and the output will be written in the MemoryStream we have provided.
CryptoStream cs = new CryptoStream(ms, alg.CreateDecryptor(), CryptoStreamMode.Write);
// Write the data and make it do the decryption
cs.Write(cipherData, 0, cipherData.Length);
// Close the crypto stream (or do FlushFinalBlock).
// This will tell it that we have done our decryption and there is no more data coming in,
// and it is now a good time to remove the padding and finalize the decryption process.
cs.Close();
// Now get the decrypted data from the MemoryStream.
// Some people make a mistake of using GetBuffer() here, which is not the right way.
byte[] decryptedData = ms.ToArray();
return decryptedData;
}
/// <summary>
/// Decrypt a string into a string using a password.
/// Uses Decrypt(byte[], byte[], byte[])
/// </summary>
/// <param name="cipherText">The text to decrypt.</param>
/// <param name="Password">The password to use.</param>
/// <returns>A decrypted string.</returns>
public static string Decrypt(string cipherText, string Password)
{
// First we need to turn the input string into a byte array.
// We presume that Base64 encoding was used
byte[] cipherBytes = Convert.FromBase64String(cipherText);
// Then, we need to turn the password into Key and IV
// We are using salt to make it harder to guess our key using a dictionary attack -
// trying to guess a password by enumerating all possible words.
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
// Now get the key/IV and do the decryption using the function that accepts byte arrays.
// Using PasswordDeriveBytes object we are first getting 32 bytes for the Key
// (the default Rijndael key length is 256bit = 32bytes) and then 16 bytes for the IV.
// IV should always be the block size, which is by default 16 bytes (128 bit) for Rijndael.
// If you are using DES/TripleDES/RC2 the block size is 8 bytes and so should be the IV size.
// You can also read KeySize/BlockSize properties off the algorithm to find out the sizes.
byte[] decryptedData = Decrypt(cipherBytes, pdb.GetBytes(32), pdb.GetBytes(16));
// Now we need to turn the resulting byte array into a string.
// A common mistake would be to use an Encoding class for that. It does not work
// because not all byte values can be represented by characters.
// We are going to be using Base64 encoding that is designed exactly for what we are
// trying to do.
return System.Text.Encoding.Unicode.GetString(decryptedData);
}
// Decrypt bytes into bytes using a password
// Uses Decrypt(byte[], byte[], byte[])
public static byte[] Decrypt(byte[] cipherData, string Password)
{
// We need to turn the password into Key and IV.
// We are using salt to make it harder to guess our key using a dictionary attack -
// trying to guess a password by enumerating all possible words.
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
// Now get the key/IV and do the Decryption using the function that accepts byte arrays.
// Using PasswordDeriveBytes object we are first getting 32 bytes for the Key
// (the default Rijndael key length is 256bit = 32bytes) and then 16 bytes for the IV.
// IV should always be the block size, which is by default 16 bytes (128 bit) for Rijndael.
// If you are using DES/TripleDES/RC2 the block size is 8 bytes and so should be the IV size.
// You can also read KeySize/BlockSize properties off the algorithm to find out the sizes.
return Decrypt(cipherData, pdb.GetBytes(32), pdb.GetBytes(16));
}
// Decrypt a file into another file using a password
public static void Decrypt(string fileIn, string fileOut, string Password)
{
// First we are going to open the file streams
FileStream fsIn = new FileStream(fileIn, FileMode.Open, FileAccess.Read);
FileStream fsOut = new FileStream(fileOut, FileMode.OpenOrCreate, FileAccess.Write);
// Then we are going to derive a Key and an IV from the Password and create an algorithm
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
Rijndael alg = Rijndael.Create();
alg.Key = pdb.GetBytes(32);
alg.IV = pdb.GetBytes(16);
// Now create a crypto stream through which we are going to be pumping data.
// Our fileOut is going to be receiving the Decrypted bytes.
CryptoStream cs = new CryptoStream(fsOut, alg.CreateDecryptor(), CryptoStreamMode.Write);
// Now will will initialize a buffer and will be processing the input file in chunks.
// This is done to avoid reading the whole file (which can be huge) into memory.
int bufferLen = 4096;
byte[] buffer = new byte[bufferLen];
int bytesRead;
do
{
// read a chunk of data from the input file
bytesRead = fsIn.Read(buffer, 0, bufferLen);
// Decrypt it
cs.Write(buffer, 0, bytesRead);
} while(bytesRead != 0);
// close everything
cs.Close(); // this will also close the unrelying fsOut stream
fsIn.Close();
}
}
}

View file

@ -0,0 +1,100 @@
using System;
using System.IO;
using System.Data;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Resources;
using System.Reflection;
namespace DeviceScheduler
{
public enum eLanguage
{
Swedish=1053,
English=1033
}
/// <summary>
/// This class handles all localization such as retrieving specific strings and changing standard locale.
/// </summary>
class Localization
{
private static ResourceManager m_Mngr = null;
private static Assembly m_Assembly = null;
private static eLanguage m_SelectedLanguage = eLanguage.English;
public static Assembly Assembly
{
get { return m_Assembly; }
set { m_Assembly = value; }
}
public static void GetSelectedLanguage()
{
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Telldus");
if (key != null)
{
if (key.GetValue("Language") != null)
{
m_SelectedLanguage = (eLanguage)Enum.Parse(typeof(eLanguage), key.GetValue("Language").ToString());
}
key.Close();
}
}
private static ResourceManager ResMngr
{
get
{
if (m_Mngr == null)
m_Mngr = new ResourceManager("DeviceScheduler.Languages.WinFormStrings", m_Assembly);
return m_Mngr;
}
}
public static string GetString(string name)
{
try
{
return ResMngr.GetString(name);
}
catch (Exception ex)
{
return "";
}
}
public static void ChangeLanguage()
{
ChangeLanguage(m_SelectedLanguage);
}
public static void ChangeLanguage(eLanguage language)
{
m_SelectedLanguage = language;
if (language == eLanguage.English)
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");//en
}
else if (language == eLanguage.Swedish)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("sv-SE");//sv
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("sv-SE");
}
}
}
}

View file

@ -0,0 +1,144 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="FailedToNameSchedule" xml:space="preserve">
<value>You have to name the schedule.</value>
</data>
<data name="FailedToSelectUnits" xml:space="preserve">
<value>You have not selected any units.</value>
</data>
<data name="FailedToSetPassword" xml:space="preserve">
<value>lication failed to set accountinformation (such as username and password) on the current schedule.</value>
</data>
<data name="msg1" xml:space="preserve">
<value>An unhandeld error has occurred in the application.</value>
</data>
<data name="msg2" xml:space="preserve">
<value>Do you want to remove selected schedule?</value>
</data>
<data name="msg3" xml:space="preserve">
<value>Do you want to remove the selected unit from the list?</value>
</data>
<data name="unitoff" xml:space="preserve">
<value>Off</value>
</data>
<data name="uniton" xml:space="preserve">
<value>On</value>
</data>
</root>

View file

@ -0,0 +1,144 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="FailedToNameSchedule" xml:space="preserve">
<value>Du måste ge schemaläggningen ett namn.</value>
</data>
<data name="FailedToSelectUnits" xml:space="preserve">
<value>Du har inte valt några enheter.</value>
</data>
<data name="FailedToSetPassword" xml:space="preserve">
<value>Programmet misslyckades med att sätta kontouppgifter (användarnamn och lösenord) på schemaläggningen.</value>
</data>
<data name="msg1" xml:space="preserve">
<value>Ett ohanterat fel har uppstått i programmet.</value>
</data>
<data name="msg2" xml:space="preserve">
<value>Vill du ta bort markerad schemaläggning?</value>
</data>
<data name="msg3" xml:space="preserve">
<value>Vill du ta bort markerad enhet?</value>
</data>
<data name="unitoff" xml:space="preserve">
<value>Av</value>
</data>
<data name="uniton" xml:space="preserve">
<value>På</value>
</data>
</root>

View file

@ -0,0 +1,144 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="FailedToNameSchedule" xml:space="preserve">
<value>Du måste ge schemaläggningen ett namn.</value>
</data>
<data name="FailedToSelectUnits" xml:space="preserve">
<value>Du har inte valt några enheter.</value>
</data>
<data name="FailedToSetPassword" xml:space="preserve">
<value>Programmet misslyckades med att sätta kontouppgifter (användarnamn och lösenord) på schemaläggningen.</value>
</data>
<data name="msg1" xml:space="preserve">
<value>Ett ohanterat fel har uppstått i programmet.</value>
</data>
<data name="msg2" xml:space="preserve">
<value>Vill du ta bort markerad schemaläggning?</value>
</data>
<data name="msg3" xml:space="preserve">
<value>Vill du ta bort markerad enhet?</value>
</data>
<data name="unitoff" xml:space="preserve">
<value>Av</value>
</data>
<data name="uniton" xml:space="preserve">
<value>På</value>
</data>
</root>

View file

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace DeviceScheduler
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
private static DeviceHandler.Handler m_Handler = new DeviceHandler.Handler();
public static DeviceHandler.Handler DeviceHandler
{
get
{
if (m_Handler == null)
{
m_Handler = new DeviceHandler.Handler();
}
return m_Handler;
}
set
{
m_Handler = value;
}
}
}
}

View file

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DeviceScheduler")]
[assembly: AssemblyDescription("Program for scheduling Telldus devices.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Telldus Technologies")]
[assembly: AssemblyProduct("DeviceScheduler")]
[assembly: AssemblyCopyright("Copyright © Telldus Technologies 2007")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("604d814a-5ace-4cf6-9212-f84cd90058f5")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("2007.1.*")]
[assembly: AssemblyFileVersion("2007.1.*")]

View file

@ -0,0 +1,117 @@
<?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.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: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" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View file

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace DeviceScheduler
{
class Tasks
{
}
}

View file

@ -0,0 +1,184 @@
namespace DeviceScheduler
{
partial class frmAbout
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmAbout));
this.cmdClose = new System.Windows.Forms.Button();
this.lnkInternet = new System.Windows.Forms.LinkLabel();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.lblVersion = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.label7 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// cmdClose
//
this.cmdClose.AccessibleDescription = null;
this.cmdClose.AccessibleName = null;
resources.ApplyResources(this.cmdClose, "cmdClose");
this.cmdClose.BackgroundImage = null;
this.cmdClose.Font = null;
this.cmdClose.Name = "cmdClose";
this.cmdClose.UseVisualStyleBackColor = true;
this.cmdClose.Click += new System.EventHandler(this.cmdClose_Click);
//
// lnkInternet
//
this.lnkInternet.AccessibleDescription = null;
this.lnkInternet.AccessibleName = null;
resources.ApplyResources(this.lnkInternet, "lnkInternet");
this.lnkInternet.BackColor = System.Drawing.Color.Transparent;
this.lnkInternet.Font = null;
this.lnkInternet.Name = "lnkInternet";
this.lnkInternet.TabStop = true;
this.lnkInternet.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// label2
//
this.label2.AccessibleDescription = null;
this.label2.AccessibleName = null;
resources.ApplyResources(this.label2, "label2");
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.Font = null;
this.label2.Name = "label2";
//
// label3
//
this.label3.AccessibleDescription = null;
this.label3.AccessibleName = null;
resources.ApplyResources(this.label3, "label3");
this.label3.BackColor = System.Drawing.Color.Transparent;
this.label3.Font = null;
this.label3.Name = "label3";
//
// label4
//
this.label4.AccessibleDescription = null;
this.label4.AccessibleName = null;
resources.ApplyResources(this.label4, "label4");
this.label4.BackColor = System.Drawing.Color.Transparent;
this.label4.Font = null;
this.label4.Name = "label4";
//
// label5
//
this.label5.AccessibleDescription = null;
this.label5.AccessibleName = null;
resources.ApplyResources(this.label5, "label5");
this.label5.BackColor = System.Drawing.Color.Transparent;
this.label5.Font = null;
this.label5.Name = "label5";
//
// lblVersion
//
this.lblVersion.AccessibleDescription = null;
this.lblVersion.AccessibleName = null;
resources.ApplyResources(this.lblVersion, "lblVersion");
this.lblVersion.BackColor = System.Drawing.Color.Transparent;
this.lblVersion.Font = null;
this.lblVersion.Name = "lblVersion";
//
// label6
//
this.label6.AccessibleDescription = null;
this.label6.AccessibleName = null;
resources.ApplyResources(this.label6, "label6");
this.label6.BackColor = System.Drawing.Color.Transparent;
this.label6.Font = null;
this.label6.Name = "label6";
//
// linkLabel1
//
this.linkLabel1.AccessibleDescription = null;
this.linkLabel1.AccessibleName = null;
resources.ApplyResources(this.linkLabel1, "linkLabel1");
this.linkLabel1.BackColor = System.Drawing.Color.Transparent;
this.linkLabel1.Font = null;
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true;
this.linkLabel1.Tag = "http://www.vistaico.com/link_to_us.htm";
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked_1);
//
// label7
//
this.label7.AccessibleDescription = null;
this.label7.AccessibleName = null;
resources.ApplyResources(this.label7, "label7");
this.label7.BackColor = System.Drawing.Color.Transparent;
this.label7.Font = null;
this.label7.Name = "label7";
//
// frmAbout
//
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.label7);
this.Controls.Add(this.linkLabel1);
this.Controls.Add(this.label6);
this.Controls.Add(this.lblVersion);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.lnkInternet);
this.Controls.Add(this.cmdClose);
this.Font = null;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = null;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmAbout";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.Load += new System.EventHandler(this.frmAbout_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button cmdClose;
private System.Windows.Forms.LinkLabel lnkInternet;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label lblVersion;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.Label label7;
}
}

View file

@ -0,0 +1,142 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Reflection;
namespace DeviceScheduler
{
partial class frmAbout : Form
{
public frmAbout()
{
Localization.ChangeLanguage();
InitializeComponent();
// Initialize the AboutBox to display the product information from the assembly information.
// Change assembly information settings for your application through either:
// - Project->Properties->Application->Assembly Information
// - AssemblyInfo.cs
this.lblVersion.Text = AssemblyVersion;
}
#region Assembly Attribute Accessors
public string AssemblyTitle
{
get
{
// Get all Title attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
// If there is at least one Title attribute
if (attributes.Length > 0)
{
// Select the first one
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
// If it is not an empty string, return it
if (titleAttribute.Title != "")
return titleAttribute.Title;
}
// If there was no Title attribute, or if the Title attribute was the empty string, return the .exe name
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
public string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
public string AssemblyDescription
{
get
{
// Get all Description attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
// If there aren't any Description attributes, return an empty string
if (attributes.Length == 0)
return "";
// If there is a Description attribute, return its value
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
}
}
public string AssemblyProduct
{
get
{
// Get all Product attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
// If there aren't any Product attributes, return an empty string
if (attributes.Length == 0)
return "";
// If there is a Product attribute, return its value
return ((AssemblyProductAttribute)attributes[0]).Product;
}
}
public string AssemblyCopyright
{
get
{
// Get all Copyright attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
// If there aren't any Copyright attributes, return an empty string
if (attributes.Length == 0)
return "";
// If there is a Copyright attribute, return its value
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
}
}
public string AssemblyCompany
{
get
{
// Get all Company attributes on this assembly
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
// If there aren't any Company attributes, return an empty string
if (attributes.Length == 0)
return "";
// If there is a Company attribute, return its value
return ((AssemblyCompanyAttribute)attributes[0]).Company;
}
}
#endregion
private void cmdClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = lnkInternet.Text;
proc.StartInfo.UseShellExecute = true;
proc.Start();
}
private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = linkLabel1.Tag.ToString();
proc.StartInfo.UseShellExecute = true;
proc.Start();
}
private void frmAbout_Load(object sender, EventArgs e)
{
}
}
}

View file

@ -0,0 +1,942 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="cmdClose.Text" xml:space="preserve">
<value>Close</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lnkInternet.Location" type="System.Drawing.Point, System.Drawing">
<value>294, 187</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>230, 26</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>This software is developed by Mattias Dahlgren
for Telldus Technologies.</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>197, 26</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>© Copyright Telldus Technologies 2008.
All rights reserved.</value>
</data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>237, 187</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 13</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Website:</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 13</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>This software is using icons from VistaIcons:</value>
</data>
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 26</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>In accordance with the Creative Commons Attribution
3.0 license</value>
</data>
<data name="$this.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
r1zYpv3VXAAAAABJRU5ErkJggg==
</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>About</value>
</data>
</root>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,897 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
r1zYpv3VXAAAAABJRU5ErkJggg==
</value>
</data>
</root>

View file

@ -0,0 +1,172 @@
namespace DeviceScheduler
{
partial class frmAskSecurityPolicy
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmAskSecurityPolicy));
this.label1 = new System.Windows.Forms.Label();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.cmdYes = new System.Windows.Forms.Button();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.panel1 = new System.Windows.Forms.Panel();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.chkHide = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AccessibleDescription = null;
this.label1.AccessibleName = null;
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// linkLabel1
//
this.linkLabel1.AccessibleDescription = null;
this.linkLabel1.AccessibleName = null;
resources.ApplyResources(this.linkLabel1, "linkLabel1");
this.linkLabel1.Font = null;
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true;
this.linkLabel1.Tag = "http://support.microsoft.com/kb/310715/sv";
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// cmdYes
//
this.cmdYes.AccessibleDescription = null;
this.cmdYes.AccessibleName = null;
resources.ApplyResources(this.cmdYes, "cmdYes");
this.cmdYes.BackgroundImage = null;
this.cmdYes.Font = null;
this.cmdYes.Name = "cmdYes";
this.cmdYes.UseVisualStyleBackColor = true;
this.cmdYes.Click += new System.EventHandler(this.cmdYes_Click);
//
// pictureBox1
//
this.pictureBox1.AccessibleDescription = null;
this.pictureBox1.AccessibleName = null;
resources.ApplyResources(this.pictureBox1, "pictureBox1");
this.pictureBox1.BackgroundImage = null;
this.pictureBox1.Font = null;
this.pictureBox1.ImageLocation = null;
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.TabStop = false;
//
// panel1
//
this.panel1.AccessibleDescription = null;
this.panel1.AccessibleName = null;
resources.ApplyResources(this.panel1, "panel1");
this.panel1.BackColor = System.Drawing.Color.White;
this.panel1.BackgroundImage = null;
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Controls.Add(this.label1);
this.panel1.Font = null;
this.panel1.Name = "panel1";
//
// label3
//
this.label3.AccessibleDescription = null;
this.label3.AccessibleName = null;
resources.ApplyResources(this.label3, "label3");
this.label3.Font = null;
this.label3.Name = "label3";
//
// label2
//
this.label2.AccessibleDescription = null;
this.label2.AccessibleName = null;
resources.ApplyResources(this.label2, "label2");
this.label2.Font = null;
this.label2.Name = "label2";
//
// label4
//
this.label4.AccessibleDescription = null;
this.label4.AccessibleName = null;
resources.ApplyResources(this.label4, "label4");
this.label4.Font = null;
this.label4.Name = "label4";
//
// chkHide
//
this.chkHide.AccessibleDescription = null;
this.chkHide.AccessibleName = null;
resources.ApplyResources(this.chkHide, "chkHide");
this.chkHide.BackgroundImage = null;
this.chkHide.Font = null;
this.chkHide.Name = "chkHide";
this.chkHide.UseVisualStyleBackColor = true;
//
// frmAskSecurityPolicy
//
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.Controls.Add(this.chkHide);
this.Controls.Add(this.label4);
this.Controls.Add(this.label2);
this.Controls.Add(this.panel1);
this.Controls.Add(this.cmdYes);
this.Controls.Add(this.linkLabel1);
this.Font = null;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = null;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmAskSecurityPolicy";
this.Load += new System.EventHandler(this.frmAskSecurityPolicy_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.Button cmdYes;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.CheckBox chkHide;
}
}

View file

@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace DeviceScheduler
{
public partial class frmAskSecurityPolicy : Form
{
public frmAskSecurityPolicy()
{
Localization.ChangeLanguage();
InitializeComponent();
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
info.FileName = linkLabel1.Tag.ToString();
info.UseShellExecute = true;
System.Diagnostics.Process.Start(info);
}
private void cmdYes_Click(object sender, EventArgs e)
{
SaveCheckbox();
this.DialogResult = DialogResult.Yes;
this.Hide();
}
private void SaveCheckbox()
{
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Telldus\Scheduler\Settings",true);
key.SetValue("AskSecurityPolicy", !chkHide.Checked);
key.Close();
}
private void cmdNo_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.No;
this.Hide();
}
private void frmAskSecurityPolicy_Load(object sender, EventArgs e)
{
}
}
}

View file

@ -0,0 +1,222 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>248, 13</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Important information regarding scheduling</value>
</data>
<data name="linkLabel1.Text" xml:space="preserve">
<value>Scheduled tasks can not be performed with a blank password.</value>
</data>
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
gf8DCdMeTzy5zwoAAAAASUVORK5CYII=
</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 13</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Carefully read the information below.</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>The application has detected that the security policy for Windows Accounts with blank password is activated. If your account does not have a password, then you are recommended to turn of the security policy due to the fact that scheduling can not be performed with a Windows account that lacks password.</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>306, 13</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>For more information about this, see Microsofts knowledgebase:</value>
</data>
<data name="chkHide.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 17</value>
</data>
<data name="chkHide.Text" xml:space="preserve">
<value>Don't show this message again.</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Important information about Telldus Scheduler</value>
</data>
</root>

View file

@ -0,0 +1,446 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>301, 13</value>
</data>
<data name="&gt;&gt;pictureBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="cmdYes.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 242</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;pictureBox1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>316, 13</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAADllJREFUaEPtWQlw
VGW2Fp0HTI3jNgOOMw4PQQQZRKUAHy5RCDwXomFxBtEkLKOOOuorS6pwfFSJC6UoIAxIYMIiQmBI2ELC
lpCYfd/3pdPdSaeTdGfvpJfb995z3ncu6ZSUzNTMPBSsmlSd+u/t+9/7n++c7yz/n2uu+fffpS1QVFR0
d15e3mKMIY2NjTf+oOxUXl5+W3Nzc6Kqqma/329yOBy72tvbf/yDAQEA7+u67iUiTQTXbqfT+cYPAgAo
M72/v98GpUkEfyyjoii2jo6OsVc1iMrKypHgeyyUhs4XA5Afenp6dkOuvWpBwPoR4L1r0OqsqSprmspy
P/hbP7ww76oEUFBQMKatra00QBvF3UfuTgsNdJjZN9AToBMNDAxkd3V1XX9VgcjJyRmWm5u7SYO5BYCm
+tnbaSa9t4H0njr2OOtIVSSmjXjwd3Z2/s9VBeDs2bOP9fb2OgAAlNHY3dXCalcN691VkArWOsu439Eg
yhsyGNB3XBUgzp07d0NhYeFZKEXI+eTt7yFveznrXaWkdxZDClnrKCCvPZc8vU4BSBC9u7t7F6h05QM6
Njb2j0ibHp/Pxz6vh1z2CtKcBaw58zDmkO7MYs2RQVpbKvWYs1j1KwJApBcF7soG9FdffTWpqqqq1u12
s8fj4d62Rlbs2ay3Z0LSIamQZEgS621n2dd0mntslQEqEYCnIyv99IpQ6csvv7wuOjo6CtzXXC4X9XY5
2WVOJ601BXKetbZEWP0s5BSu4/HbCdJajnFX1VHyurolKwmdfKjQVyagN27cGGI2mzvBYwKfqaM+m/3N
50i1nSWfq411BalTgaJKN657yW1PIs12kBXzfmqrOC0UMuIB1DODSuO+Vy9ERUWNio+PT0eDxlicWxsr
eaAhnrXmOFaa4gw6ffNP0mdX03lWbXtYa4rinrLt3G2rMTLWYEDvRGr9/gJ6x44df2ppafG1trZyS7OV
HGWghzmWNeth8lkOk8SEJH0j8eNPRqclgVT7DgDYRmrDZmrO3M4+z4DhCWSvLhjj+wno3bt3319WVtaI
qssAwdaSRPbWRbPeeIB1y1fsNe9jVNtvecBhPsJq2xbWbZtYa/yEXYV/YktONKP1EKG+vr4kePOG75RK
SJkj4uLiDkF5gvXJWlvKnUV7SGvYS5ppN2uWKPKa/0IuV99FHpDqbKlYS2rTs6zVzSG16H5SMqZweeR4
eKaMEQcSC24AeOU7BYC0uRQblT4B0GJrJmvWPlaqd5JWvwMAIkGh7eS1bKOenq6LAIiFq/PDSG2ZzZo5
iLSqWaQWzGBX4lTK27U4AECoV41vj/9OQBw/fvx2bBELJHCF+6aCs+wq3sJqzZ9h1S2sNazH+Dr3VzzD
9harQaFAV+r1erm6MBzF7SnW7Y+DbsGsVQSxP28Wm6MnsyknVtoLEUIwb0Vqve6ygkC7cC2yzsdwsSrW
b2qoItvXn5JauYHV8jXkL3wetIB1q+dSf83j8I7JSJHSWkhGklRbUxJOWu9i1jsXkN4SAto9zmrZbPJm
PcT5X8yi/t5O2fQwwHZe9oBOSEh4xGq12mEZbmtrpbrzO8iduxo8XshK+iPkz59NasXjoMfTNGAJJXNj
lQQyocgRlJdgp9ryCNIHXmByLSW947ekNy9grfYpUovnsvPUA1R2Yq0BQOIBAZ0MY12eg4D09PTr0awl
iBVR9rkuN57tR+ezL+khVlJBg9xgWPJJUCgU9Pgtu1uXcE11AYMKLIClTiBuuL56GZNvBZNnOet94aw7
nkPMLGK1OoSVgnlcHjWNnZZyg0oAoeC9y7OHTktL+wMqrUeqrc1cx7mbppPnzEOkpDxK/uxg9hc/SVpt
KKrs70CPMPJ0RFB5WRaDBgQlRLipqYlMdcuJ/C8xKS8SeVZir7AMLcZS0hoXs1oRQq60OZS3eymU90pG
koA24xsT/l+xkJ2dPQHWq4ZLGdannC//yB1HZ5Iv+VHQJxjcf5LVKihv/R3pjjBYdiVa5pVUXp4h1heP
SVACgIXMphU4n3iFSX2FSHmZaOD3aLmXoT9aylr9IvKXzCdzzANsyo41AIjA61H4xr8W0KWlpdehYEWC
yzq4zKbCRK6KnArqBLGSNhvUkSB8mjXTs6y3vsB6z3Im90vsdb3IVZUZEriGCIC6ukq2mEEf7VVmERVA
vC+z7lrJuhPZyboEVAplb94TnBf5GLt6OgJUkpT9xL/khfz8/KfQZXYZwdjdyTl/nkf9CbNYSQkiJXMO
+YueILXmGbQGCMiOF0h3AYD39+TrX0mVlWkI9jZC4FNDQwOXlORSkyUCHngZHoD1/S8R+V5kGgCVuiNY
sz+HrLSQ1LL57DzzCJUce48k9Q4GdBaodNM/BQLWvwWLZ8gH8CGqOLWRW/bfQ77E/0LgPkz+3Mew2H9j
0RAsvoj0riVE/cgwnnBSXC9Q8vloTk5OJpGvv/4a1/Fkt2KOEoEYABBfBLE3HADCEAtLsV94ljTLM6RW
PclK/hwqj7qPWhuKAwVORRyt+qcAFBcXr4byqmSErpYGLt40ib2n7mMlaTr70x9gteBh1irnsG5GUWqb
z9QdivS4kHlgEWuuRVxf8TznpC3j7NQwjOFckreU+xyhzJ7FF8QNwVzqh/QuAI2eZr0ZmawWGa04iF3J
Mzn3L4tZmkLZ6aGW2FE87/qHQCBl3gfeNl9IZ17Kj1pCvbF3se/MZFKS72F/5v0oWjNIq5lFujUIAGYT
dQYT98yFMvNIxFz7EbKQlTqcrdTZ0cI2Syx5HJjTN4+pD3Mg3Itrmd89Fyl1Dum2R0mvf4i1spnkz5lG
lgMTuCbtgGQjCWiJpwPwxI/+LgicaY6ora2NEeoIAHNODJm230a+k2NZOTOO/MkTWM2eRFrJb5A67yXd
Mg25fzpR+wxi50ymjpmkOWZSdWmkUX0HNztsqs+kzvppxB0X5ogY106MjhlMrdNJb5oGAPexVj6F1Ny7
yYu18rZMpS5Hi9Geg8puxNXTfxcADqeex2S3KN+PTJD/2SR2x4xmJe4XrJy+jf3JvwKAX7NWPJb16nGs
m+5ksk5gaobYLojWNIEr8jdKHTAykEhFaSI7ysYNzQnMHRrxjt54J+u141grHctq7hj2p97OzphbufDw
KkYyMTZJGIsA4uZLgsCx4C9tNltVIAc3pu/l9qjryXfkBlKO38jKqZvIn3Qzqxm3kJb/M9JKf0565SjW
a0aTXgupG80QUGs0VYD7ycnnKTU11Qji1DPrqLtg1NAcmReYj3cvfKMKz8tGsVb4c1KzfkZqys3sO30T
FW8YTR3tdlFe+iodNFrzLQBQfhhkIyYMFZHWghju3vUf5IsZTsqx4azEDyf/uRGspowgLROSO5L0gpGs
FY0kEb0Y18UXrrvTf8xFMb+mzAPjKSt6LNfG3UjevG/MwbzAfGOUbxRC8nCdNYLU1BHkTxzBSsIIMm27
hVptVpZOQEAgrXcgoCdfBAJHg4/A1d3iJkmbRvr0uNmRso6c0Q+Q89BUdh6eSs7Yqew4NpUcJ6ZS+0lD
uO3kPSTSGjeF7XFTyH7iN2Q7PpmtRyeTOfZuyCS2xE4i65GJIri+iywxIhO48fCdZPrreIaQ6dB4ajw0
ni2HJpD14F3UHD2Rm/bdQ3WJm0l2ftKWCAgcxUiVPwIqXQhoNGsjq6urU2UbGDjfGSwiRgob7NO/Ncoz
mSfvyEelWkvllQZO9gugI1ssFpZChsTAOHpnVHZGimbEGmNvwVlZWZySksJJSUmGnD9/ntF7MQxqzMOZ
E9fX1xvfGQTBOJ4XOinorxYbAHDCcAesr0EJcY8oJFwbqoSBjPTNMRAngyCMVDcIwsg8xkkFtpzoowhH
LwKCampqUKErGUWSQFcSEDgQpszMTAFBACBiFECAIDxDBS8hgKBBEGS320kMBBBS4RMMAAsWLPglbryi
gMilPPG3vDDY+g55QrKFWEgyzyAIo5UeBMEAwRUVFQKCAYLRrggIzsjIEMWHPCHXYIbxDCAYDDE8ge6A
AUIaSz5w4EDC559/PuyaoKCgn7z33ns2uJTkw6gFYimSl8RqGGnQ9cZzeSa/gxaGZcS6JpOJ8J8ZUZTg
bhFxu3EtyuOZMUfmy7viAaEPhIQusjbAGF4BdWQddLTlxlqyvgCX9wJelPffeOONrYYHZsyY8aOwsLCc
d955h959910GGFq3bh19+umnvGHDBvrkk09o9erV/Prrr9OqVav4/fffp/Xr1xNO5mjLli28fft2Ag0J
R41iFTp8+DAdPXqUT5w4QSdPniRsRVlGEZxoME42aNOmTYT1GOvRhx9+yHL/xRdfEI5s+ODBg3TkyBFj
7uA7dOzYMY6JiSEcZdLOnTtZ1li+fPlqA8C99947LCQkZDeUEoVZlIqMjORdu3bx3r17Gcrxxx9/zGvW
rGFZbOvWrcazffv2yWKiEMtip0+fNoIQud8ITnG/UESsGhC5F7rgdINhGBYjwQDGPRRkASv0kbgIvCsj
9iVGcMv3YRhj3pIlS54bSqW33nrrjPnz52e+9tprTW+//XY7LNMLT3g/+OADbe3atfpbb71Fr776Kr35
5pviJcJv9NFHHxGA0WeffUabN2+mbdu2EYAb3tizZw8BIO3fv/8igaJiZcPD8k2sRTCM8S35DoxHOPUz
3pe5eF/HqOLeC8v3wHhtWLNp5cqVaVOmTBk7BGDMmDHDJk6ceNuDDz748Ny5c5fDI5tCQ0NPI8BLFi5c
WHslBToUQZd4GHh9cHBw2KxZsx6cPHnyL75VjaH4tRERET9dtmzZeIzBGJdD3oa8C/nfKySy9lvQJwLj
YxjuQLz+BLoOu2Q/hEnDMGk4xhswjkag3L5ixYoxGP/zSoisDV1+BV1GiXHDw8OHQy6t/D+0Wfj3pMtv
gf8DCdMeTzy5zwoAAAAASUVORK5CYII=
</value>
</data>
<data name="&gt;&gt;chkHide.Name" xml:space="preserve">
<value>chkHide</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>435, 277</value>
</data>
<data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 156</value>
</data>
<data name="cmdYes.Text" xml:space="preserve">
<value>OK</value>
</data>
<data name="chkHide.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="chkHide.Text" xml:space="preserve">
<value>Visa inte detta meddelande i fortsättningen.</value>
</data>
<data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Viktig information Telldus Schemaläggare</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>För mer info kring begränsningen se Microsofts kunskapsdatabas:</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="chkHide.Size" type="System.Drawing.Size, System.Drawing">
<value>229, 17</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;cmdYes.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 13</value>
</data>
<data name="&gt;&gt;linkLabel1.Name" xml:space="preserve">
<value>linkLabel1</value>
</data>
<data name="pictureBox1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="&gt;&gt;linkLabel1.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 92</value>
</data>
<data name="&gt;&gt;chkHide.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="chkHide.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 59</value>
</data>
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Programmet har upptäckt att säkerhetsprincipen för Windows konton med blanka lösenord är aktiverad. Om du inte har något lösenord på ditt Windows konto rekommenderas du att stänga av säkerhetsprincipen då schemläggning inte kan utföras med Windows konto som saknar lösenord.</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 48</value>
</data>
<data name="&gt;&gt;pictureBox1.Name" xml:space="preserve">
<value>pictureBox1</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>216, 13</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Läs noga igenom nedanstående information.</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmAskSecurityPolicy</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="cmdYes.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 18</value>
</data>
<data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>label4</value>
</data>
<data name="&gt;&gt;cmdYes.Name" xml:space="preserve">
<value>cmdYes</value>
</data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
<value>-3, -3</value>
</data>
<data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="pictureBox1.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="linkLabel1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="label4.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="linkLabel1.Text" xml:space="preserve">
<value>Schemalagda aktiviteter kan inte utföras med ett tomt lösenord</value>
</data>
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="linkLabel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cmdYes.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 169</value>
</data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>31, 41</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>378, 15</value>
</data>
<data name="&gt;&gt;chkHide.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="cmdYes.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label1.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 8.25pt, style=Bold</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>475, 73</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Viktig information angående schemaläggning</value>
</data>
<data name="&gt;&gt;chkHide.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="chkHide.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 200</value>
</data>
<data name="&gt;&gt;cmdYes.Parent" xml:space="preserve">
<value>$this</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>English</value>
</metadata>
</root>

View file

@ -0,0 +1,189 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
gf8DCdMeTzy5zwoAAAAASUVORK5CYII=
</value>
</data>
</root>

View file

@ -0,0 +1,176 @@
namespace DeviceScheduler
{
partial class frmAskUsername
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmAskUsername));
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.label16 = new System.Windows.Forms.Label();
this.label15 = new System.Windows.Forms.Label();
this.txtPassword = new System.Windows.Forms.TextBox();
this.txtUsername = new System.Windows.Forms.TextBox();
this.label14 = new System.Windows.Forms.Label();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.cmdOK = new System.Windows.Forms.Button();
this.cmdCancel = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// pictureBox2
//
this.pictureBox2.AccessibleDescription = null;
this.pictureBox2.AccessibleName = null;
resources.ApplyResources(this.pictureBox2, "pictureBox2");
this.pictureBox2.BackgroundImage = null;
this.pictureBox2.Font = null;
this.pictureBox2.ImageLocation = null;
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.TabStop = false;
//
// label16
//
this.label16.AccessibleDescription = null;
this.label16.AccessibleName = null;
resources.ApplyResources(this.label16, "label16");
this.label16.Font = null;
this.label16.Name = "label16";
//
// label15
//
this.label15.AccessibleDescription = null;
this.label15.AccessibleName = null;
resources.ApplyResources(this.label15, "label15");
this.label15.Font = null;
this.label15.Name = "label15";
//
// txtPassword
//
this.txtPassword.AccessibleDescription = null;
this.txtPassword.AccessibleName = null;
resources.ApplyResources(this.txtPassword, "txtPassword");
this.txtPassword.BackgroundImage = null;
this.txtPassword.Font = null;
this.txtPassword.Name = "txtPassword";
//
// txtUsername
//
this.txtUsername.AccessibleDescription = null;
this.txtUsername.AccessibleName = null;
resources.ApplyResources(this.txtUsername, "txtUsername");
this.txtUsername.BackgroundImage = null;
this.txtUsername.Font = null;
this.txtUsername.Name = "txtUsername";
this.txtUsername.TextChanged += new System.EventHandler(this.txtUsername_TextChanged);
//
// label14
//
this.label14.AccessibleDescription = null;
this.label14.AccessibleName = null;
resources.ApplyResources(this.label14, "label14");
this.label14.Font = null;
this.label14.Name = "label14";
//
// groupBox1
//
this.groupBox1.AccessibleDescription = null;
this.groupBox1.AccessibleName = null;
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.BackgroundImage = null;
this.groupBox1.Controls.Add(this.label14);
this.groupBox1.Controls.Add(this.label16);
this.groupBox1.Controls.Add(this.pictureBox2);
this.groupBox1.Controls.Add(this.label15);
this.groupBox1.Controls.Add(this.txtPassword);
this.groupBox1.Controls.Add(this.txtUsername);
this.groupBox1.Font = null;
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
// cmdOK
//
this.cmdOK.AccessibleDescription = null;
this.cmdOK.AccessibleName = null;
resources.ApplyResources(this.cmdOK, "cmdOK");
this.cmdOK.BackgroundImage = null;
this.cmdOK.Font = null;
this.cmdOK.Name = "cmdOK";
this.cmdOK.UseVisualStyleBackColor = true;
this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click);
//
// cmdCancel
//
this.cmdCancel.AccessibleDescription = null;
this.cmdCancel.AccessibleName = null;
resources.ApplyResources(this.cmdCancel, "cmdCancel");
this.cmdCancel.BackgroundImage = null;
this.cmdCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cmdCancel.Font = null;
this.cmdCancel.Name = "cmdCancel";
this.cmdCancel.UseVisualStyleBackColor = true;
this.cmdCancel.Click += new System.EventHandler(this.cmdCancel_Click);
//
// frmAskUsername
//
this.AcceptButton = this.cmdOK;
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.CancelButton = this.cmdCancel;
this.Controls.Add(this.cmdCancel);
this.Controls.Add(this.cmdOK);
this.Controls.Add(this.groupBox1);
this.Font = null;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = null;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmAskUsername";
this.Load += new System.EventHandler(this.frmAskUsername_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.TextBox txtPassword;
private System.Windows.Forms.TextBox txtUsername;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Button cmdOK;
private System.Windows.Forms.Button cmdCancel;
}
}

View file

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace DeviceScheduler
{
public partial class frmAskUsername : Form
{
public frmAskUsername()
{
Localization.ChangeLanguage();
InitializeComponent();
}
private void frmAskUsername_Load(object sender, EventArgs e)
{
txtUsername.Text = Environment.MachineName + @"\" + Environment.UserName;
}
public string Username
{
get { return txtUsername.Text; }
}
public string Password
{
get { return txtPassword.Text; }
}
private void cmdOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Hide();
}
private void cmdCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Hide();
}
private void txtUsername_TextChanged(object sender, EventArgs e)
{
cmdOK.Enabled=(txtUsername.Text.Length>0);
}
}
}

View file

@ -0,0 +1,230 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 13</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>Password:</value>
</data>
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 13</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>User:</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>To be able to perform the scheduled task you need to specify the username and password that you enter when logging into Windows. This information is needed in order to get persmission to run. The application is storing the information in secure (encrypted) fashion. </value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>User details</value>
</data>
<data name="cmdCancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>User account</value>
</data>
</root>

View file

@ -0,0 +1,451 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label14.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;label15.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label15.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="txtPassword.Location" type="System.Drawing.Point, System.Drawing">
<value>149, 132</value>
</data>
<data name="&gt;&gt;pictureBox2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="cmdCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>403, 194</value>
</data>
<data name="cmdCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="&gt;&gt;txtPassword.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="cmdOK.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;cmdOK.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cmdCancel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;txtUsername.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="label15.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 106</value>
</data>
<data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="txtUsername.Size" type="System.Drawing.Size, System.Drawing">
<value>181, 20</value>
</data>
<data name="&gt;&gt;label16.Name" xml:space="preserve">
<value>label16</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>487, 224</value>
</data>
<data name="&gt;&gt;label14.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;txtUsername.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="txtUsername.Location" type="System.Drawing.Point, System.Drawing">
<value>149, 106</value>
</data>
<data name="&gt;&gt;cmdCancel.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cmdCancel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Användarkonto</value>
</data>
<data name="&gt;&gt;cmdOK.Name" xml:space="preserve">
<value>cmdOK</value>
</data>
<data name="cmdOK.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="&gt;&gt;pictureBox2.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label15.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;pictureBox2.Name" xml:space="preserve">
<value>pictureBox2</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>Användare:</value>
</data>
<data name="&gt;&gt;txtUsername.Name" xml:space="preserve">
<value>txtUsername</value>
</data>
<data name="&gt;&gt;label14.Name" xml:space="preserve">
<value>label14</value>
</data>
<data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="cmdCancel.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 13</value>
</data>
<data name="label16.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="cmdCancel.Text" xml:space="preserve">
<value>Avbryt</value>
</data>
<data name="&gt;&gt;cmdOK.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;cmdCancel.Name" xml:space="preserve">
<value>cmdCancel</value>
</data>
<data name="label16.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label15.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;cmdOK.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label15.Name" xml:space="preserve">
<value>label15</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmAskUsername</value>
</data>
<data name="pictureBox2.Location" type="System.Drawing.Point, System.Drawing">
<value>18, 31</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 12</value>
</data>
<data name="&gt;&gt;txtPassword.Name" xml:space="preserve">
<value>txtPassword</value>
</data>
<data name="label16.Location" type="System.Drawing.Point, System.Drawing">
<value>74, 135</value>
</data>
<data name="txtUsername.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="pictureBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 48</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>För att kunna utföra schemaläggningen behöver du ange det användarnamn och lösenord som du loggar in med i Windows. Dessa uppgifter behövs för att schemaläggningen skall få tillåtelse att kunna köras. Programmet sparar informationen på ett säkert (krypterat) sätt.</value>
</data>
<data name="&gt;&gt;txtPassword.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;txtUsername.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="cmdOK.Location" type="System.Drawing.Point, System.Drawing">
<value>321, 194</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="cmdOK.Text" xml:space="preserve">
<value>OK</value>
</data>
<data name="&gt;&gt;label16.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label14.Location" type="System.Drawing.Point, System.Drawing">
<value>72, 31</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="&gt;&gt;label16.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="pictureBox2.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Användaruppgifter</value>
</data>
<data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="pictureBox2.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="txtPassword.Size" type="System.Drawing.Size, System.Drawing">
<value>181, 20</value>
</data>
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
<value>374, 52</value>
</data>
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
<value>54, 13</value>
</data>
<data name="txtPassword.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;label14.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>466, 176</value>
</data>
<data name="label15.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;label14.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="txtPassword.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
<value>*</value>
</data>
<data name="&gt;&gt;pictureBox2.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="&gt;&gt;txtPassword.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label16.Text" xml:space="preserve">
<value>Lösenord:</value>
</data>
<data name="&gt;&gt;label16.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>English</value>
</metadata>
</root>

View file

@ -0,0 +1,206 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

View file

@ -0,0 +1,679 @@
namespace DeviceScheduler
{
partial class frmMain
{
/// <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();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMain));
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.mnuNew = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.mnuExit = new System.Windows.Forms.ToolStripMenuItem();
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.mnuRemove = new System.Windows.Forms.ToolStripMenuItem();
this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolManageDevices = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.mnuWebsite = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.mnuAbout = new System.Windows.Forms.ToolStripMenuItem();
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolNew = new System.Windows.Forms.ToolStripButton();
this.toolEdit = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
this.toolRemove = new System.Windows.Forms.ToolStripButton();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.lvwCommon = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
this.columnHeader3 = new System.Windows.Forms.ColumnHeader();
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.cmdTurnOn = new System.Windows.Forms.ToolStripMenuItem();
this.cmdTurnOff = new System.Windows.Forms.ToolStripMenuItem();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.pictureBox3 = new System.Windows.Forms.PictureBox();
this.label5 = new System.Windows.Forms.Label();
this.linkLabel2 = new System.Windows.Forms.LinkLabel();
this.label6 = new System.Windows.Forms.Label();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.label2 = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.lvwTasks = new System.Windows.Forms.ListView();
this.columnHeader4 = new System.Windows.Forms.ColumnHeader();
this.columnHeader5 = new System.Windows.Forms.ColumnHeader();
this.columnHeader6 = new System.Windows.Forms.ColumnHeader();
this.columnHeader7 = new System.Windows.Forms.ColumnHeader();
this.contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.mnuRunTask = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.toolStrip1.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
this.tabControl1.SuspendLayout();
this.tabPage3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.tabPage1.SuspendLayout();
this.tabPage2.SuspendLayout();
this.contextMenuStrip2.SuspendLayout();
this.SuspendLayout();
//
// statusStrip1
//
this.statusStrip1.AccessibleDescription = null;
this.statusStrip1.AccessibleName = null;
resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.BackgroundImage = null;
this.statusStrip1.Font = null;
this.statusStrip1.Name = "statusStrip1";
//
// menuStrip1
//
this.menuStrip1.AccessibleDescription = null;
this.menuStrip1.AccessibleName = null;
resources.ApplyResources(this.menuStrip1, "menuStrip1");
this.menuStrip1.BackgroundImage = null;
this.menuStrip1.Font = null;
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.editToolStripMenuItem,
this.toolsToolStripMenuItem,
this.helpToolStripMenuItem});
this.menuStrip1.Name = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.AccessibleDescription = null;
this.fileToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.fileToolStripMenuItem, "fileToolStripMenuItem");
this.fileToolStripMenuItem.BackgroundImage = null;
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newToolStripMenuItem,
this.toolStripMenuItem1,
this.mnuExit});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.ShortcutKeyDisplayString = null;
//
// newToolStripMenuItem
//
this.newToolStripMenuItem.AccessibleDescription = null;
this.newToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.newToolStripMenuItem, "newToolStripMenuItem");
this.newToolStripMenuItem.BackgroundImage = null;
this.newToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuNew});
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
this.newToolStripMenuItem.ShortcutKeyDisplayString = null;
//
// mnuNew
//
this.mnuNew.AccessibleDescription = null;
this.mnuNew.AccessibleName = null;
resources.ApplyResources(this.mnuNew, "mnuNew");
this.mnuNew.BackgroundImage = null;
this.mnuNew.Name = "mnuNew";
this.mnuNew.ShortcutKeyDisplayString = null;
this.mnuNew.Click += new System.EventHandler(this.mnuNew_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.AccessibleDescription = null;
this.toolStripMenuItem1.AccessibleName = null;
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
//
// mnuExit
//
this.mnuExit.AccessibleDescription = null;
this.mnuExit.AccessibleName = null;
resources.ApplyResources(this.mnuExit, "mnuExit");
this.mnuExit.BackgroundImage = null;
this.mnuExit.Name = "mnuExit";
this.mnuExit.ShortcutKeyDisplayString = null;
this.mnuExit.Click += new System.EventHandler(this.mnuExit_Click);
//
// editToolStripMenuItem
//
this.editToolStripMenuItem.AccessibleDescription = null;
this.editToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.editToolStripMenuItem, "editToolStripMenuItem");
this.editToolStripMenuItem.BackgroundImage = null;
this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuRemove});
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
this.editToolStripMenuItem.ShortcutKeyDisplayString = null;
//
// mnuRemove
//
this.mnuRemove.AccessibleDescription = null;
this.mnuRemove.AccessibleName = null;
resources.ApplyResources(this.mnuRemove, "mnuRemove");
this.mnuRemove.BackgroundImage = null;
this.mnuRemove.Name = "mnuRemove";
this.mnuRemove.ShortcutKeyDisplayString = null;
this.mnuRemove.Click += new System.EventHandler(this.mnuRemove_Click);
//
// toolsToolStripMenuItem
//
this.toolsToolStripMenuItem.AccessibleDescription = null;
this.toolsToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.toolsToolStripMenuItem, "toolsToolStripMenuItem");
this.toolsToolStripMenuItem.BackgroundImage = null;
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolManageDevices});
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
this.toolsToolStripMenuItem.ShortcutKeyDisplayString = null;
//
// toolManageDevices
//
this.toolManageDevices.AccessibleDescription = null;
this.toolManageDevices.AccessibleName = null;
resources.ApplyResources(this.toolManageDevices, "toolManageDevices");
this.toolManageDevices.BackgroundImage = null;
this.toolManageDevices.Name = "toolManageDevices";
this.toolManageDevices.ShortcutKeyDisplayString = null;
this.toolManageDevices.Click += new System.EventHandler(this.toolManageDevices_Click);
//
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.AccessibleDescription = null;
this.helpToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.helpToolStripMenuItem, "helpToolStripMenuItem");
this.helpToolStripMenuItem.BackgroundImage = null;
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuWebsite,
this.toolStripMenuItem2,
this.mnuAbout});
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
this.helpToolStripMenuItem.ShortcutKeyDisplayString = null;
//
// mnuWebsite
//
this.mnuWebsite.AccessibleDescription = null;
this.mnuWebsite.AccessibleName = null;
resources.ApplyResources(this.mnuWebsite, "mnuWebsite");
this.mnuWebsite.BackgroundImage = null;
this.mnuWebsite.Name = "mnuWebsite";
this.mnuWebsite.ShortcutKeyDisplayString = null;
this.mnuWebsite.Click += new System.EventHandler(this.mnuWebsite_Click);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.AccessibleDescription = null;
this.toolStripMenuItem2.AccessibleName = null;
resources.ApplyResources(this.toolStripMenuItem2, "toolStripMenuItem2");
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
//
// mnuAbout
//
this.mnuAbout.AccessibleDescription = null;
this.mnuAbout.AccessibleName = null;
resources.ApplyResources(this.mnuAbout, "mnuAbout");
this.mnuAbout.BackgroundImage = null;
this.mnuAbout.Name = "mnuAbout";
this.mnuAbout.ShortcutKeyDisplayString = null;
this.mnuAbout.Click += new System.EventHandler(this.mnuAbout_Click);
//
// toolStrip1
//
this.toolStrip1.AccessibleDescription = null;
this.toolStrip1.AccessibleName = null;
resources.ApplyResources(this.toolStrip1, "toolStrip1");
this.toolStrip1.BackgroundImage = null;
this.toolStrip1.Font = null;
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolNew,
this.toolEdit,
this.toolStripSeparator,
this.toolRemove});
this.toolStrip1.Name = "toolStrip1";
//
// toolNew
//
this.toolNew.AccessibleDescription = null;
this.toolNew.AccessibleName = null;
resources.ApplyResources(this.toolNew, "toolNew");
this.toolNew.BackgroundImage = null;
this.toolNew.Name = "toolNew";
this.toolNew.Click += new System.EventHandler(this.toolNew_Click);
//
// toolEdit
//
this.toolEdit.AccessibleDescription = null;
this.toolEdit.AccessibleName = null;
resources.ApplyResources(this.toolEdit, "toolEdit");
this.toolEdit.BackgroundImage = null;
this.toolEdit.Name = "toolEdit";
this.toolEdit.Click += new System.EventHandler(this.toolEdit_Click);
//
// toolStripSeparator
//
this.toolStripSeparator.AccessibleDescription = null;
this.toolStripSeparator.AccessibleName = null;
resources.ApplyResources(this.toolStripSeparator, "toolStripSeparator");
this.toolStripSeparator.Name = "toolStripSeparator";
//
// toolRemove
//
this.toolRemove.AccessibleDescription = null;
this.toolRemove.AccessibleName = null;
resources.ApplyResources(this.toolRemove, "toolRemove");
this.toolRemove.BackgroundImage = null;
this.toolRemove.Name = "toolRemove";
this.toolRemove.Click += new System.EventHandler(this.toolRemove_Click);
//
// notifyIcon1
//
resources.ApplyResources(this.notifyIcon1, "notifyIcon1");
this.notifyIcon1.Icon = null;
//
// lvwCommon
//
this.lvwCommon.AccessibleDescription = null;
this.lvwCommon.AccessibleName = null;
resources.ApplyResources(this.lvwCommon, "lvwCommon");
this.lvwCommon.BackgroundImage = null;
this.lvwCommon.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
this.columnHeader2,
this.columnHeader3});
this.lvwCommon.ContextMenuStrip = this.contextMenuStrip1;
this.lvwCommon.Font = null;
this.lvwCommon.FullRowSelect = true;
this.lvwCommon.Name = "lvwCommon";
this.lvwCommon.SmallImageList = this.imageList1;
this.lvwCommon.UseCompatibleStateImageBehavior = false;
this.lvwCommon.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
resources.ApplyResources(this.columnHeader1, "columnHeader1");
//
// columnHeader2
//
resources.ApplyResources(this.columnHeader2, "columnHeader2");
//
// columnHeader3
//
resources.ApplyResources(this.columnHeader3, "columnHeader3");
//
// contextMenuStrip1
//
this.contextMenuStrip1.AccessibleDescription = null;
this.contextMenuStrip1.AccessibleName = null;
resources.ApplyResources(this.contextMenuStrip1, "contextMenuStrip1");
this.contextMenuStrip1.BackgroundImage = null;
this.contextMenuStrip1.Font = null;
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.cmdTurnOn,
this.cmdTurnOff});
this.contextMenuStrip1.Name = "contextMenuStrip1";
//
// cmdTurnOn
//
this.cmdTurnOn.AccessibleDescription = null;
this.cmdTurnOn.AccessibleName = null;
resources.ApplyResources(this.cmdTurnOn, "cmdTurnOn");
this.cmdTurnOn.BackgroundImage = null;
this.cmdTurnOn.Name = "cmdTurnOn";
this.cmdTurnOn.ShortcutKeyDisplayString = null;
this.cmdTurnOn.Click += new System.EventHandler(this.cmdTurnOn_Click);
//
// cmdTurnOff
//
this.cmdTurnOff.AccessibleDescription = null;
this.cmdTurnOff.AccessibleName = null;
resources.ApplyResources(this.cmdTurnOff, "cmdTurnOff");
this.cmdTurnOff.BackgroundImage = null;
this.cmdTurnOff.Name = "cmdTurnOff";
this.cmdTurnOff.ShortcutKeyDisplayString = null;
this.cmdTurnOff.Click += new System.EventHandler(this.cmdTurnOff_Click);
//
// imageList1
//
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
this.imageList1.Images.SetKeyName(0, "");
this.imageList1.Images.SetKeyName(1, "");
this.imageList1.Images.SetKeyName(2, "IDI_ICON1.png");
this.imageList1.Images.SetKeyName(3, "Alarm-005.png");
//
// tabControl1
//
this.tabControl1.AccessibleDescription = null;
this.tabControl1.AccessibleName = null;
resources.ApplyResources(this.tabControl1, "tabControl1");
this.tabControl1.BackgroundImage = null;
this.tabControl1.Controls.Add(this.tabPage3);
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Font = null;
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
//
// tabPage3
//
this.tabPage3.AccessibleDescription = null;
this.tabPage3.AccessibleName = null;
resources.ApplyResources(this.tabPage3, "tabPage3");
this.tabPage3.BackgroundImage = null;
this.tabPage3.Controls.Add(this.pictureBox3);
this.tabPage3.Controls.Add(this.label5);
this.tabPage3.Controls.Add(this.linkLabel2);
this.tabPage3.Controls.Add(this.label6);
this.tabPage3.Controls.Add(this.pictureBox2);
this.tabPage3.Controls.Add(this.label4);
this.tabPage3.Controls.Add(this.label3);
this.tabPage3.Controls.Add(this.linkLabel1);
this.tabPage3.Controls.Add(this.label2);
this.tabPage3.Controls.Add(this.pictureBox1);
this.tabPage3.Controls.Add(this.label1);
this.tabPage3.Font = null;
this.tabPage3.Name = "tabPage3";
this.tabPage3.UseVisualStyleBackColor = true;
//
// pictureBox3
//
this.pictureBox3.AccessibleDescription = null;
this.pictureBox3.AccessibleName = null;
resources.ApplyResources(this.pictureBox3, "pictureBox3");
this.pictureBox3.BackgroundImage = null;
this.pictureBox3.Font = null;
this.pictureBox3.ImageLocation = null;
this.pictureBox3.Name = "pictureBox3";
this.pictureBox3.TabStop = false;
//
// label5
//
this.label5.AccessibleDescription = null;
this.label5.AccessibleName = null;
resources.ApplyResources(this.label5, "label5");
this.label5.Font = null;
this.label5.Name = "label5";
//
// linkLabel2
//
this.linkLabel2.AccessibleDescription = null;
this.linkLabel2.AccessibleName = null;
resources.ApplyResources(this.linkLabel2, "linkLabel2");
this.linkLabel2.Font = null;
this.linkLabel2.Name = "linkLabel2";
this.linkLabel2.TabStop = true;
this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked);
//
// label6
//
this.label6.AccessibleDescription = null;
this.label6.AccessibleName = null;
resources.ApplyResources(this.label6, "label6");
this.label6.Name = "label6";
//
// pictureBox2
//
this.pictureBox2.AccessibleDescription = null;
this.pictureBox2.AccessibleName = null;
resources.ApplyResources(this.pictureBox2, "pictureBox2");
this.pictureBox2.BackgroundImage = null;
this.pictureBox2.Font = null;
this.pictureBox2.ImageLocation = null;
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.TabStop = false;
//
// label4
//
this.label4.AccessibleDescription = null;
this.label4.AccessibleName = null;
resources.ApplyResources(this.label4, "label4");
this.label4.Font = null;
this.label4.Name = "label4";
//
// label3
//
this.label3.AccessibleDescription = null;
this.label3.AccessibleName = null;
resources.ApplyResources(this.label3, "label3");
this.label3.Font = null;
this.label3.Name = "label3";
//
// linkLabel1
//
this.linkLabel1.AccessibleDescription = null;
this.linkLabel1.AccessibleName = null;
resources.ApplyResources(this.linkLabel1, "linkLabel1");
this.linkLabel1.Font = null;
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true;
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// label2
//
this.label2.AccessibleDescription = null;
this.label2.AccessibleName = null;
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
//
// pictureBox1
//
this.pictureBox1.AccessibleDescription = null;
this.pictureBox1.AccessibleName = null;
resources.ApplyResources(this.pictureBox1, "pictureBox1");
this.pictureBox1.BackgroundImage = null;
this.pictureBox1.Font = null;
this.pictureBox1.ImageLocation = null;
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.TabStop = false;
//
// label1
//
this.label1.AccessibleDescription = null;
this.label1.AccessibleName = null;
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// tabPage1
//
this.tabPage1.AccessibleDescription = null;
this.tabPage1.AccessibleName = null;
resources.ApplyResources(this.tabPage1, "tabPage1");
this.tabPage1.BackgroundImage = null;
this.tabPage1.Controls.Add(this.lvwCommon);
this.tabPage1.Font = null;
this.tabPage1.Name = "tabPage1";
this.tabPage1.UseVisualStyleBackColor = true;
//
// tabPage2
//
this.tabPage2.AccessibleDescription = null;
this.tabPage2.AccessibleName = null;
resources.ApplyResources(this.tabPage2, "tabPage2");
this.tabPage2.BackgroundImage = null;
this.tabPage2.Controls.Add(this.lvwTasks);
this.tabPage2.Font = null;
this.tabPage2.Name = "tabPage2";
this.tabPage2.UseVisualStyleBackColor = true;
//
// lvwTasks
//
this.lvwTasks.AccessibleDescription = null;
this.lvwTasks.AccessibleName = null;
resources.ApplyResources(this.lvwTasks, "lvwTasks");
this.lvwTasks.BackgroundImage = null;
this.lvwTasks.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader4,
this.columnHeader5,
this.columnHeader6,
this.columnHeader7});
this.lvwTasks.ContextMenuStrip = this.contextMenuStrip2;
this.lvwTasks.Font = null;
this.lvwTasks.FullRowSelect = true;
this.lvwTasks.MultiSelect = false;
this.lvwTasks.Name = "lvwTasks";
this.lvwTasks.SmallImageList = this.imageList1;
this.lvwTasks.UseCompatibleStateImageBehavior = false;
this.lvwTasks.View = System.Windows.Forms.View.Details;
//
// columnHeader4
//
resources.ApplyResources(this.columnHeader4, "columnHeader4");
//
// columnHeader5
//
resources.ApplyResources(this.columnHeader5, "columnHeader5");
//
// columnHeader6
//
resources.ApplyResources(this.columnHeader6, "columnHeader6");
//
// columnHeader7
//
resources.ApplyResources(this.columnHeader7, "columnHeader7");
//
// contextMenuStrip2
//
this.contextMenuStrip2.AccessibleDescription = null;
this.contextMenuStrip2.AccessibleName = null;
resources.ApplyResources(this.contextMenuStrip2, "contextMenuStrip2");
this.contextMenuStrip2.BackgroundImage = null;
this.contextMenuStrip2.Font = null;
this.contextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuRunTask});
this.contextMenuStrip2.Name = "contextMenuStrip2";
//
// mnuRunTask
//
this.mnuRunTask.AccessibleDescription = null;
this.mnuRunTask.AccessibleName = null;
resources.ApplyResources(this.mnuRunTask, "mnuRunTask");
this.mnuRunTask.BackgroundImage = null;
this.mnuRunTask.Name = "mnuRunTask";
this.mnuRunTask.ShortcutKeyDisplayString = null;
this.mnuRunTask.Click += new System.EventHandler(this.mnuRunTask_Click);
//
// frmMain
//
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.Controls.Add(this.tabControl1);
this.Controls.Add(this.toolStrip1);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.menuStrip1);
this.Font = null;
this.MainMenuStrip = this.menuStrip1;
this.Name = "frmMain";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmMain_FormClosing);
this.Load += new System.EventHandler(this.frmMain_Load);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
this.contextMenuStrip1.ResumeLayout(false);
this.tabControl1.ResumeLayout(false);
this.tabPage3.ResumeLayout(false);
this.tabPage3.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.tabPage1.ResumeLayout(false);
this.tabPage2.ResumeLayout(false);
this.contextMenuStrip2.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStrip toolStrip1;
private System.Windows.Forms.ToolStripButton toolNew;
private System.Windows.Forms.ToolStripButton toolRemove;
private System.Windows.Forms.ToolStripButton toolEdit;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
private System.Windows.Forms.NotifyIcon notifyIcon1;
private System.Windows.Forms.ListView lvwCommon;
private System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.ColumnHeader columnHeader3;
private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem mnuExit;
private System.Windows.Forms.ToolStripMenuItem mnuNew;
private System.Windows.Forms.ToolStripMenuItem mnuAbout;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem cmdTurnOn;
private System.Windows.Forms.ToolStripMenuItem cmdTurnOff;
private System.Windows.Forms.ToolStripMenuItem toolManageDevices;
private System.Windows.Forms.ListView lvwTasks;
private System.Windows.Forms.ColumnHeader columnHeader4;
private System.Windows.Forms.ColumnHeader columnHeader5;
private System.Windows.Forms.ColumnHeader columnHeader6;
private System.Windows.Forms.ColumnHeader columnHeader7;
private System.Windows.Forms.ToolStripMenuItem mnuRemove;
private System.Windows.Forms.TabPage tabPage3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.LinkLabel linkLabel2;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip2;
private System.Windows.Forms.ToolStripMenuItem mnuRunTask;
private System.Windows.Forms.ToolStripMenuItem mnuWebsite;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
private System.Windows.Forms.PictureBox pictureBox3;
}
}

View file

@ -0,0 +1,396 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using TaskScheduler;
namespace DeviceScheduler
{
public partial class frmMain : Form
{
public frmMain()
{
Localization.GetSelectedLanguage();
Localization.ChangeLanguage();
Localization.Assembly = this.GetType().Assembly;
InitializeComponent();
}
private TaskScheduler.ScheduledTasks m_Tasks = null;
private DataStorage m_Data = null;
private bool ShowSplash()
{
string[] cmds = Environment.GetCommandLineArgs();
foreach (string cmd in cmds)
{
if (cmd.ToLower() == "/nosplash")
return false;
}
return true;
}
private void frmMain_Load(object sender, EventArgs e)
{
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
frmSplash frm = null;
bool splash = ShowSplash();
if (splash)
{
frm = new frmSplash();
frm.TopMost = true;
frm.ShowDialog(this);
}
SetupListViewDevices();
m_Tasks = new ScheduledTasks();
LoadData();
LoadTasks();
if (splash)
{
frm.TopMost = false;
frm.Close();
}
if (IsPasswordPrincipalActive())
{
if (ShowAskSecurityPolicy())
{
frmAskSecurityPolicy policy = new frmAskSecurityPolicy();
DialogResult result = policy.ShowDialog(this);
policy.Close();
}
}
}
private bool ShowAskSecurityPolicy()
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Telldus\Scheduler\Settings");
if (key != null)
{
if (key.GetValue("AskSecurityPolicy") != null)
{
return Convert.ToBoolean(key.GetValue("AskSecurityPolicy"));
key.Close();
}
}
return true;
}
//private void DisablePasswordPolicy()
//{
// RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Lsa");
// key.SetValue("LimitBlankPasswordUse", 0);
// key.Close();
//}
private bool IsPasswordPrincipalActive()
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Lsa");
bool result = Convert.ToBoolean(key.GetValue("LimitBlankPasswordUse"));
key.Close();
return result;
}
/// <summary>
/// Handles unexpected errors. All roads lead here...
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
MessageBox.Show("Ett ohanterat fel har uppstått i programmet."+Environment.NewLine+e.Exception.Message,
"", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void LoadData()
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
//string path = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
path = System.IO.Path.Combine(path, "Jobs.dat");
m_Data = new DataStorage();
if (System.IO.File.Exists(path))
{
m_Data.ReadXml(path, XmlReadMode.ReadSchema);
}
}
private void SetupListViewDevices()
{
lvwCommon.Items.Clear();
Program.DeviceHandler.Load();
foreach(DeviceHandler.Device dev in Program.DeviceHandler.Devices)
{
ListViewItem item = lvwCommon.Items.Add(dev.Name,2);
item.SubItems.Add(dev.ID.ToString());
item.SubItems.Add(dev.Vendor);
item.Tag = dev;
}
}
private void mnuAbout_Click(object sender, EventArgs e)
{
frmAbout frm = new frmAbout();
frm.ShowDialog(this);
}
private void cmdTurnOn_Click(object sender, EventArgs e)
{
if (lvwCommon.SelectedItems.Count == 1)
{
DeviceHandler.Device item = (DeviceHandler.Device)lvwCommon.SelectedItems[0].Tag;
Program.DeviceHandler.TurnOn(item);
return;
}
foreach (ListViewItem lvwItem in lvwCommon.SelectedItems)
{
DeviceHandler.Device item = (DeviceHandler.Device)lvwItem.Tag;
Program.DeviceHandler.TurnOnWithDelay(item);
}
}
private void cmdTurnOff_Click(object sender, EventArgs e)
{
if (lvwCommon.SelectedItems.Count == 1)
{
DeviceHandler.Device item = (DeviceHandler.Device)lvwCommon.SelectedItems[0].Tag;
Program.DeviceHandler.TurnOff(item);
return;
}
foreach (ListViewItem lvwItem in lvwCommon.SelectedItems)
{
DeviceHandler.Device item = (DeviceHandler.Device)lvwItem.Tag;
Program.DeviceHandler.TurnOffWithDelay(item);
}
}
private void ConfigUnits()
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Telldus");
string path = key.GetValue("UninstallString").ToString();
path = System.IO.Path.GetDirectoryName(path);
Cursor = Cursors.WaitCursor;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
string filename = System.IO.Path.Combine(path, "TelldusSetup.exe");
proc.StartInfo.FileName = filename;
proc.StartInfo.WorkingDirectory = path;
proc.Start();
Cursor = Cursors.Default;
}
private void toolManageDevices_Click(object sender, EventArgs e)
{
ConfigUnits();
}
private void LoadTasks()
{
//Clear listview of tasks
lvwTasks.Items.Clear();
foreach (string item in m_Tasks.GetTaskNames())
{
Task task = m_Tasks.OpenTask(item);
if(task != null)
{
if (task.Creator.ToLower().Contains("telldus"))
{
DataStorage.JobRow job = m_Data.Job.FindByID(Convert.ToInt32(task.Parameters));
ListViewItem lvwItem = lvwTasks.Items.Add(task.Name, 3);
lvwItem.SubItems.Add(job.StartTime.ToString());
lvwItem.SubItems.Add(task.Triggers[0].BeginDate.ToShortDateString());
lvwItem.Tag = task;
}
task.Close();
}
}
}
private void toolNew_Click(object sender, EventArgs e)
{
CreateSchedule();
}
private void CreateSchedule()
{
frmSchedule frm = new frmSchedule(m_Data, m_Tasks, null, true);
DialogResult result = frm.ShowDialog(this);
if (result == DialogResult.OK)
{
SaveDataStorage();
LoadTasks();
}
frm.Close();
}
private void mnuExit_Click(object sender, EventArgs e)
{
SaveDataStorage();
Application.Exit();
}
private void toolRemove_Click(object sender, EventArgs e)
{
RemoveSchedule();
}
private void RemoveSchedule()
{
if (lvwTasks.SelectedItems.Count == 0) { return; }
//"Vill du ta bort markerad schemaläggning?"
DialogResult result = MessageBox.Show(Localization.GetString("msg2"),
Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
foreach (ListViewItem item in lvwTasks.SelectedItems)
{
Task task = m_Tasks.OpenTask(item.SubItems[0].Text);
int id = Convert.ToInt32(task.Parameters);
task.Close();
//First remove the task from windows scheduling
bool result2 = m_Tasks.DeleteTask(item.SubItems[0].Text);
//Second remove the entry from the Job table in the datastorage.
DataStorage.JobRow job = m_Data.Job.FindByID(id);
//Third remove all JobActions
DataStorage.JobActionsRow[] actions = m_Data.JobActions.Select("JobID=" + job.ID.ToString()) as DataStorage.JobActionsRow[];
foreach (DataStorage.JobActionsRow action in actions)
{
action.Delete();
}
//Forth remove the job
if (job != null)
job.Delete();
//Fifth remove the entry from the listview.
lvwTasks.Items.Remove(item);
}
m_Data.AcceptChanges();
}
}
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
SaveDataStorage();
}
private void SaveDataStorage()
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
//string path = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
path = System.IO.Path.Combine(path, "Jobs.dat");
m_Data.WriteXml(path, XmlWriteMode.WriteSchema);
}
private void mnuRunTask_Click(object sender, EventArgs e)
{
if (lvwTasks.SelectedItems.Count == 0) { return; }
Task item = m_Tasks.OpenTask(lvwTasks.SelectedItems[0].Text);
item.Run();
}
private void toolEdit_Click(object sender, EventArgs e)
{
if (lvwTasks.SelectedItems.Count == 0) { return; }
Task task = m_Tasks.OpenTask(lvwTasks.SelectedItems[0].Text);
DataStorage.JobRow job = m_Data.Job.FindByID(Convert.ToInt32(task.Parameters));
task.Close();
frmSchedule frm = new frmSchedule(m_Data, m_Tasks, job, false);
DialogResult result = frm.ShowDialog(this);
if (result == DialogResult.OK)
{
//Reload all tasks
LoadTasks();
}
frm.Close();
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
CreateSchedule();
}
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
ConfigUnits();
}
private void mnuWebsite_Click(object sender, EventArgs e)
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "http://www.telldus.se";
proc.StartInfo.UseShellExecute = true;
proc.Start();
}
private void mnuNew_Click(object sender, EventArgs e)
{
CreateSchedule();
}
private void mnuRemove_Click(object sender, EventArgs e)
{
RemoveSchedule();
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedIndex == 1)
SetupListViewDevices();
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,960 @@
namespace DeviceScheduler
{
partial class frmSchedule
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSchedule));
this.cmdCancel = new System.Windows.Forms.Button();
this.cmdOK = new System.Windows.Forms.Button();
this.txtName = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.lvwDevices = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
this.label2 = new System.Windows.Forms.Label();
this.txtDescription = new System.Windows.Forms.TextBox();
this.cmdAdd = new System.Windows.Forms.Button();
this.cmdRemove = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
this.dtpDate = new System.Windows.Forms.DateTimePicker();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.grpMonth = new System.Windows.Forms.GroupBox();
this.nupMonth = new System.Windows.Forms.NumericUpDown();
this.label12 = new System.Windows.Forms.Label();
this.cboMontDec = new System.Windows.Forms.CheckBox();
this.cboMonthNov = new System.Windows.Forms.CheckBox();
this.cboMontOct = new System.Windows.Forms.CheckBox();
this.cboMontSept = new System.Windows.Forms.CheckBox();
this.cboMonthAug = new System.Windows.Forms.CheckBox();
this.cboMonthJuly = new System.Windows.Forms.CheckBox();
this.cboMonthJune = new System.Windows.Forms.CheckBox();
this.cboMonthMay = new System.Windows.Forms.CheckBox();
this.cboMonthApr = new System.Windows.Forms.CheckBox();
this.cboMonthMar = new System.Windows.Forms.CheckBox();
this.cboMonthFeb = new System.Windows.Forms.CheckBox();
this.cboMonthJan = new System.Windows.Forms.CheckBox();
this.cboMonthDays = new System.Windows.Forms.ComboBox();
this.cboOrder = new System.Windows.Forms.ComboBox();
this.rdbMonthThe = new System.Windows.Forms.RadioButton();
this.rdbMonthDay = new System.Windows.Forms.RadioButton();
this.label11 = new System.Windows.Forms.Label();
this.grpOnce = new System.Windows.Forms.GroupBox();
this.label14 = new System.Windows.Forms.Label();
this.grpDay = new System.Windows.Forms.GroupBox();
this.nupDay = new System.Windows.Forms.NumericUpDown();
this.label8 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.dtpTime = new System.Windows.Forms.DateTimePicker();
this.grpWeek = new System.Windows.Forms.GroupBox();
this.nupWeek = new System.Windows.Forms.NumericUpDown();
this.label9 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.cboWeekSaturday = new System.Windows.Forms.CheckBox();
this.cboWeekSunday = new System.Windows.Forms.CheckBox();
this.cboWeekFriday = new System.Windows.Forms.CheckBox();
this.cboWeekThursday = new System.Windows.Forms.CheckBox();
this.cboWeekWednesday = new System.Windows.Forms.CheckBox();
this.cboWeekTuesday = new System.Windows.Forms.CheckBox();
this.cboWeekMonday = new System.Windows.Forms.CheckBox();
this.cboSchedule = new System.Windows.Forms.ComboBox();
this.label7 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.panel1 = new System.Windows.Forms.Panel();
this.label13 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.grpMonth.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nupMonth)).BeginInit();
this.grpOnce.SuspendLayout();
this.grpDay.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nupDay)).BeginInit();
this.grpWeek.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nupWeek)).BeginInit();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.tabPage2.SuspendLayout();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// cmdCancel
//
this.cmdCancel.AccessibleDescription = null;
this.cmdCancel.AccessibleName = null;
resources.ApplyResources(this.cmdCancel, "cmdCancel");
this.cmdCancel.BackgroundImage = null;
this.cmdCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cmdCancel.Font = null;
this.cmdCancel.Name = "cmdCancel";
this.cmdCancel.UseVisualStyleBackColor = true;
this.cmdCancel.Click += new System.EventHandler(this.cmdCancel_Click);
//
// cmdOK
//
this.cmdOK.AccessibleDescription = null;
this.cmdOK.AccessibleName = null;
resources.ApplyResources(this.cmdOK, "cmdOK");
this.cmdOK.BackgroundImage = null;
this.cmdOK.Font = null;
this.cmdOK.Name = "cmdOK";
this.cmdOK.UseVisualStyleBackColor = true;
this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click);
//
// txtName
//
this.txtName.AccessibleDescription = null;
this.txtName.AccessibleName = null;
resources.ApplyResources(this.txtName, "txtName");
this.txtName.BackgroundImage = null;
this.txtName.Font = null;
this.txtName.Name = "txtName";
//
// label1
//
this.label1.AccessibleDescription = null;
this.label1.AccessibleName = null;
resources.ApplyResources(this.label1, "label1");
this.label1.Font = null;
this.label1.Name = "label1";
//
// lvwDevices
//
this.lvwDevices.AccessibleDescription = null;
this.lvwDevices.AccessibleName = null;
resources.ApplyResources(this.lvwDevices, "lvwDevices");
this.lvwDevices.BackgroundImage = null;
this.lvwDevices.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
this.columnHeader2});
this.lvwDevices.Font = null;
this.lvwDevices.Name = "lvwDevices";
this.lvwDevices.UseCompatibleStateImageBehavior = false;
this.lvwDevices.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
resources.ApplyResources(this.columnHeader1, "columnHeader1");
//
// columnHeader2
//
resources.ApplyResources(this.columnHeader2, "columnHeader2");
//
// label2
//
this.label2.AccessibleDescription = null;
this.label2.AccessibleName = null;
resources.ApplyResources(this.label2, "label2");
this.label2.Font = null;
this.label2.Name = "label2";
//
// txtDescription
//
this.txtDescription.AccessibleDescription = null;
this.txtDescription.AccessibleName = null;
resources.ApplyResources(this.txtDescription, "txtDescription");
this.txtDescription.BackgroundImage = null;
this.txtDescription.Font = null;
this.txtDescription.Name = "txtDescription";
//
// cmdAdd
//
this.cmdAdd.AccessibleDescription = null;
this.cmdAdd.AccessibleName = null;
resources.ApplyResources(this.cmdAdd, "cmdAdd");
this.cmdAdd.BackgroundImage = null;
this.cmdAdd.Font = null;
this.cmdAdd.Name = "cmdAdd";
this.cmdAdd.UseVisualStyleBackColor = true;
this.cmdAdd.Click += new System.EventHandler(this.cmdAdd_Click);
//
// cmdRemove
//
this.cmdRemove.AccessibleDescription = null;
this.cmdRemove.AccessibleName = null;
resources.ApplyResources(this.cmdRemove, "cmdRemove");
this.cmdRemove.BackgroundImage = null;
this.cmdRemove.Font = null;
this.cmdRemove.Name = "cmdRemove";
this.cmdRemove.UseVisualStyleBackColor = true;
this.cmdRemove.Click += new System.EventHandler(this.cmdRemove_Click);
//
// label4
//
this.label4.AccessibleDescription = null;
this.label4.AccessibleName = null;
resources.ApplyResources(this.label4, "label4");
this.label4.Font = null;
this.label4.Name = "label4";
//
// dtpDate
//
this.dtpDate.AccessibleDescription = null;
this.dtpDate.AccessibleName = null;
resources.ApplyResources(this.dtpDate, "dtpDate");
this.dtpDate.BackgroundImage = null;
this.dtpDate.CalendarFont = null;
this.dtpDate.CustomFormat = null;
this.dtpDate.Font = null;
this.dtpDate.Name = "dtpDate";
//
// groupBox1
//
this.groupBox1.AccessibleDescription = null;
this.groupBox1.AccessibleName = null;
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.BackgroundImage = null;
this.groupBox1.Controls.Add(this.txtDescription);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.txtName);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Font = null;
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
// groupBox2
//
this.groupBox2.AccessibleDescription = null;
this.groupBox2.AccessibleName = null;
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.BackgroundImage = null;
this.groupBox2.Controls.Add(this.lvwDevices);
this.groupBox2.Controls.Add(this.cmdAdd);
this.groupBox2.Controls.Add(this.cmdRemove);
this.groupBox2.Font = null;
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;
//
// groupBox3
//
this.groupBox3.AccessibleDescription = null;
this.groupBox3.AccessibleName = null;
resources.ApplyResources(this.groupBox3, "groupBox3");
this.groupBox3.BackgroundImage = null;
this.groupBox3.Controls.Add(this.grpMonth);
this.groupBox3.Controls.Add(this.grpOnce);
this.groupBox3.Controls.Add(this.grpDay);
this.groupBox3.Controls.Add(this.dtpTime);
this.groupBox3.Controls.Add(this.grpWeek);
this.groupBox3.Controls.Add(this.cboSchedule);
this.groupBox3.Controls.Add(this.label7);
this.groupBox3.Controls.Add(this.label4);
this.groupBox3.Controls.Add(this.label6);
this.groupBox3.Controls.Add(this.dtpDate);
this.groupBox3.Font = null;
this.groupBox3.Name = "groupBox3";
this.groupBox3.TabStop = false;
//
// grpMonth
//
this.grpMonth.AccessibleDescription = null;
this.grpMonth.AccessibleName = null;
resources.ApplyResources(this.grpMonth, "grpMonth");
this.grpMonth.BackgroundImage = null;
this.grpMonth.Controls.Add(this.nupMonth);
this.grpMonth.Controls.Add(this.label12);
this.grpMonth.Controls.Add(this.cboMontDec);
this.grpMonth.Controls.Add(this.cboMonthNov);
this.grpMonth.Controls.Add(this.cboMontOct);
this.grpMonth.Controls.Add(this.cboMontSept);
this.grpMonth.Controls.Add(this.cboMonthAug);
this.grpMonth.Controls.Add(this.cboMonthJuly);
this.grpMonth.Controls.Add(this.cboMonthJune);
this.grpMonth.Controls.Add(this.cboMonthMay);
this.grpMonth.Controls.Add(this.cboMonthApr);
this.grpMonth.Controls.Add(this.cboMonthMar);
this.grpMonth.Controls.Add(this.cboMonthFeb);
this.grpMonth.Controls.Add(this.cboMonthJan);
this.grpMonth.Controls.Add(this.cboMonthDays);
this.grpMonth.Controls.Add(this.cboOrder);
this.grpMonth.Controls.Add(this.rdbMonthThe);
this.grpMonth.Controls.Add(this.rdbMonthDay);
this.grpMonth.Controls.Add(this.label11);
this.grpMonth.Font = null;
this.grpMonth.Name = "grpMonth";
this.grpMonth.TabStop = false;
//
// nupMonth
//
this.nupMonth.AccessibleDescription = null;
this.nupMonth.AccessibleName = null;
resources.ApplyResources(this.nupMonth, "nupMonth");
this.nupMonth.Font = null;
this.nupMonth.Maximum = new decimal(new int[] {
30,
0,
0,
0});
this.nupMonth.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.nupMonth.Name = "nupMonth";
this.nupMonth.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// label12
//
this.label12.AccessibleDescription = null;
this.label12.AccessibleName = null;
resources.ApplyResources(this.label12, "label12");
this.label12.Font = null;
this.label12.Name = "label12";
//
// cboMontDec
//
this.cboMontDec.AccessibleDescription = null;
this.cboMontDec.AccessibleName = null;
resources.ApplyResources(this.cboMontDec, "cboMontDec");
this.cboMontDec.BackgroundImage = null;
this.cboMontDec.Font = null;
this.cboMontDec.Name = "cboMontDec";
this.cboMontDec.UseVisualStyleBackColor = true;
//
// cboMonthNov
//
this.cboMonthNov.AccessibleDescription = null;
this.cboMonthNov.AccessibleName = null;
resources.ApplyResources(this.cboMonthNov, "cboMonthNov");
this.cboMonthNov.BackgroundImage = null;
this.cboMonthNov.Font = null;
this.cboMonthNov.Name = "cboMonthNov";
this.cboMonthNov.UseVisualStyleBackColor = true;
//
// cboMontOct
//
this.cboMontOct.AccessibleDescription = null;
this.cboMontOct.AccessibleName = null;
resources.ApplyResources(this.cboMontOct, "cboMontOct");
this.cboMontOct.BackgroundImage = null;
this.cboMontOct.Font = null;
this.cboMontOct.Name = "cboMontOct";
this.cboMontOct.UseVisualStyleBackColor = true;
//
// cboMontSept
//
this.cboMontSept.AccessibleDescription = null;
this.cboMontSept.AccessibleName = null;
resources.ApplyResources(this.cboMontSept, "cboMontSept");
this.cboMontSept.BackgroundImage = null;
this.cboMontSept.Font = null;
this.cboMontSept.Name = "cboMontSept";
this.cboMontSept.UseVisualStyleBackColor = true;
//
// cboMonthAug
//
this.cboMonthAug.AccessibleDescription = null;
this.cboMonthAug.AccessibleName = null;
resources.ApplyResources(this.cboMonthAug, "cboMonthAug");
this.cboMonthAug.BackgroundImage = null;
this.cboMonthAug.Font = null;
this.cboMonthAug.Name = "cboMonthAug";
this.cboMonthAug.UseVisualStyleBackColor = true;
//
// cboMonthJuly
//
this.cboMonthJuly.AccessibleDescription = null;
this.cboMonthJuly.AccessibleName = null;
resources.ApplyResources(this.cboMonthJuly, "cboMonthJuly");
this.cboMonthJuly.BackgroundImage = null;
this.cboMonthJuly.Font = null;
this.cboMonthJuly.Name = "cboMonthJuly";
this.cboMonthJuly.UseVisualStyleBackColor = true;
//
// cboMonthJune
//
this.cboMonthJune.AccessibleDescription = null;
this.cboMonthJune.AccessibleName = null;
resources.ApplyResources(this.cboMonthJune, "cboMonthJune");
this.cboMonthJune.BackgroundImage = null;
this.cboMonthJune.Font = null;
this.cboMonthJune.Name = "cboMonthJune";
this.cboMonthJune.UseVisualStyleBackColor = true;
//
// cboMonthMay
//
this.cboMonthMay.AccessibleDescription = null;
this.cboMonthMay.AccessibleName = null;
resources.ApplyResources(this.cboMonthMay, "cboMonthMay");
this.cboMonthMay.BackgroundImage = null;
this.cboMonthMay.Font = null;
this.cboMonthMay.Name = "cboMonthMay";
this.cboMonthMay.UseVisualStyleBackColor = true;
//
// cboMonthApr
//
this.cboMonthApr.AccessibleDescription = null;
this.cboMonthApr.AccessibleName = null;
resources.ApplyResources(this.cboMonthApr, "cboMonthApr");
this.cboMonthApr.BackgroundImage = null;
this.cboMonthApr.Font = null;
this.cboMonthApr.Name = "cboMonthApr";
this.cboMonthApr.UseVisualStyleBackColor = true;
//
// cboMonthMar
//
this.cboMonthMar.AccessibleDescription = null;
this.cboMonthMar.AccessibleName = null;
resources.ApplyResources(this.cboMonthMar, "cboMonthMar");
this.cboMonthMar.BackgroundImage = null;
this.cboMonthMar.Font = null;
this.cboMonthMar.Name = "cboMonthMar";
this.cboMonthMar.UseVisualStyleBackColor = true;
//
// cboMonthFeb
//
this.cboMonthFeb.AccessibleDescription = null;
this.cboMonthFeb.AccessibleName = null;
resources.ApplyResources(this.cboMonthFeb, "cboMonthFeb");
this.cboMonthFeb.BackgroundImage = null;
this.cboMonthFeb.Font = null;
this.cboMonthFeb.Name = "cboMonthFeb";
this.cboMonthFeb.UseVisualStyleBackColor = true;
//
// cboMonthJan
//
this.cboMonthJan.AccessibleDescription = null;
this.cboMonthJan.AccessibleName = null;
resources.ApplyResources(this.cboMonthJan, "cboMonthJan");
this.cboMonthJan.BackgroundImage = null;
this.cboMonthJan.Font = null;
this.cboMonthJan.Name = "cboMonthJan";
this.cboMonthJan.UseVisualStyleBackColor = true;
//
// cboMonthDays
//
this.cboMonthDays.AccessibleDescription = null;
this.cboMonthDays.AccessibleName = null;
resources.ApplyResources(this.cboMonthDays, "cboMonthDays");
this.cboMonthDays.BackgroundImage = null;
this.cboMonthDays.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboMonthDays.Font = null;
this.cboMonthDays.FormattingEnabled = true;
this.cboMonthDays.Items.AddRange(new object[] {
resources.GetString("cboMonthDays.Items"),
resources.GetString("cboMonthDays.Items1"),
resources.GetString("cboMonthDays.Items2"),
resources.GetString("cboMonthDays.Items3"),
resources.GetString("cboMonthDays.Items4"),
resources.GetString("cboMonthDays.Items5"),
resources.GetString("cboMonthDays.Items6")});
this.cboMonthDays.Name = "cboMonthDays";
//
// cboOrder
//
this.cboOrder.AccessibleDescription = null;
this.cboOrder.AccessibleName = null;
resources.ApplyResources(this.cboOrder, "cboOrder");
this.cboOrder.BackgroundImage = null;
this.cboOrder.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboOrder.Font = null;
this.cboOrder.FormattingEnabled = true;
this.cboOrder.Items.AddRange(new object[] {
resources.GetString("cboOrder.Items"),
resources.GetString("cboOrder.Items1"),
resources.GetString("cboOrder.Items2"),
resources.GetString("cboOrder.Items3"),
resources.GetString("cboOrder.Items4")});
this.cboOrder.Name = "cboOrder";
//
// rdbMonthThe
//
this.rdbMonthThe.AccessibleDescription = null;
this.rdbMonthThe.AccessibleName = null;
resources.ApplyResources(this.rdbMonthThe, "rdbMonthThe");
this.rdbMonthThe.BackgroundImage = null;
this.rdbMonthThe.Font = null;
this.rdbMonthThe.Name = "rdbMonthThe";
this.rdbMonthThe.UseVisualStyleBackColor = true;
//
// rdbMonthDay
//
this.rdbMonthDay.AccessibleDescription = null;
this.rdbMonthDay.AccessibleName = null;
resources.ApplyResources(this.rdbMonthDay, "rdbMonthDay");
this.rdbMonthDay.BackgroundImage = null;
this.rdbMonthDay.Checked = true;
this.rdbMonthDay.Font = null;
this.rdbMonthDay.Name = "rdbMonthDay";
this.rdbMonthDay.TabStop = true;
this.rdbMonthDay.UseVisualStyleBackColor = true;
//
// label11
//
this.label11.AccessibleDescription = null;
this.label11.AccessibleName = null;
resources.ApplyResources(this.label11, "label11");
this.label11.Font = null;
this.label11.Name = "label11";
//
// grpOnce
//
this.grpOnce.AccessibleDescription = null;
this.grpOnce.AccessibleName = null;
resources.ApplyResources(this.grpOnce, "grpOnce");
this.grpOnce.BackgroundImage = null;
this.grpOnce.Controls.Add(this.label14);
this.grpOnce.Font = null;
this.grpOnce.Name = "grpOnce";
this.grpOnce.TabStop = false;
//
// label14
//
this.label14.AccessibleDescription = null;
this.label14.AccessibleName = null;
resources.ApplyResources(this.label14, "label14");
this.label14.Font = null;
this.label14.Name = "label14";
//
// grpDay
//
this.grpDay.AccessibleDescription = null;
this.grpDay.AccessibleName = null;
resources.ApplyResources(this.grpDay, "grpDay");
this.grpDay.BackgroundImage = null;
this.grpDay.Controls.Add(this.nupDay);
this.grpDay.Controls.Add(this.label8);
this.grpDay.Controls.Add(this.label5);
this.grpDay.Font = null;
this.grpDay.Name = "grpDay";
this.grpDay.TabStop = false;
//
// nupDay
//
this.nupDay.AccessibleDescription = null;
this.nupDay.AccessibleName = null;
resources.ApplyResources(this.nupDay, "nupDay");
this.nupDay.Font = null;
this.nupDay.Maximum = new decimal(new int[] {
7,
0,
0,
0});
this.nupDay.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.nupDay.Name = "nupDay";
this.nupDay.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// label8
//
this.label8.AccessibleDescription = null;
this.label8.AccessibleName = null;
resources.ApplyResources(this.label8, "label8");
this.label8.Font = null;
this.label8.Name = "label8";
//
// label5
//
this.label5.AccessibleDescription = null;
this.label5.AccessibleName = null;
resources.ApplyResources(this.label5, "label5");
this.label5.Font = null;
this.label5.Name = "label5";
//
// dtpTime
//
this.dtpTime.AccessibleDescription = null;
this.dtpTime.AccessibleName = null;
resources.ApplyResources(this.dtpTime, "dtpTime");
this.dtpTime.BackgroundImage = null;
this.dtpTime.CalendarFont = null;
this.dtpTime.Font = null;
this.dtpTime.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dtpTime.Name = "dtpTime";
this.dtpTime.ShowUpDown = true;
//
// grpWeek
//
this.grpWeek.AccessibleDescription = null;
this.grpWeek.AccessibleName = null;
resources.ApplyResources(this.grpWeek, "grpWeek");
this.grpWeek.BackgroundImage = null;
this.grpWeek.Controls.Add(this.nupWeek);
this.grpWeek.Controls.Add(this.label9);
this.grpWeek.Controls.Add(this.label10);
this.grpWeek.Controls.Add(this.cboWeekSaturday);
this.grpWeek.Controls.Add(this.cboWeekSunday);
this.grpWeek.Controls.Add(this.cboWeekFriday);
this.grpWeek.Controls.Add(this.cboWeekThursday);
this.grpWeek.Controls.Add(this.cboWeekWednesday);
this.grpWeek.Controls.Add(this.cboWeekTuesday);
this.grpWeek.Controls.Add(this.cboWeekMonday);
this.grpWeek.Font = null;
this.grpWeek.Name = "grpWeek";
this.grpWeek.TabStop = false;
//
// nupWeek
//
this.nupWeek.AccessibleDescription = null;
this.nupWeek.AccessibleName = null;
resources.ApplyResources(this.nupWeek, "nupWeek");
this.nupWeek.Font = null;
this.nupWeek.Maximum = new decimal(new int[] {
52,
0,
0,
0});
this.nupWeek.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.nupWeek.Name = "nupWeek";
this.nupWeek.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// label9
//
this.label9.AccessibleDescription = null;
this.label9.AccessibleName = null;
resources.ApplyResources(this.label9, "label9");
this.label9.Font = null;
this.label9.Name = "label9";
//
// label10
//
this.label10.AccessibleDescription = null;
this.label10.AccessibleName = null;
resources.ApplyResources(this.label10, "label10");
this.label10.Font = null;
this.label10.Name = "label10";
//
// cboWeekSaturday
//
this.cboWeekSaturday.AccessibleDescription = null;
this.cboWeekSaturday.AccessibleName = null;
resources.ApplyResources(this.cboWeekSaturday, "cboWeekSaturday");
this.cboWeekSaturday.BackgroundImage = null;
this.cboWeekSaturday.Font = null;
this.cboWeekSaturday.Name = "cboWeekSaturday";
this.cboWeekSaturday.UseVisualStyleBackColor = true;
//
// cboWeekSunday
//
this.cboWeekSunday.AccessibleDescription = null;
this.cboWeekSunday.AccessibleName = null;
resources.ApplyResources(this.cboWeekSunday, "cboWeekSunday");
this.cboWeekSunday.BackgroundImage = null;
this.cboWeekSunday.Font = null;
this.cboWeekSunday.Name = "cboWeekSunday";
this.cboWeekSunday.UseVisualStyleBackColor = true;
//
// cboWeekFriday
//
this.cboWeekFriday.AccessibleDescription = null;
this.cboWeekFriday.AccessibleName = null;
resources.ApplyResources(this.cboWeekFriday, "cboWeekFriday");
this.cboWeekFriday.BackgroundImage = null;
this.cboWeekFriday.Font = null;
this.cboWeekFriday.Name = "cboWeekFriday";
this.cboWeekFriday.UseVisualStyleBackColor = true;
//
// cboWeekThursday
//
this.cboWeekThursday.AccessibleDescription = null;
this.cboWeekThursday.AccessibleName = null;
resources.ApplyResources(this.cboWeekThursday, "cboWeekThursday");
this.cboWeekThursday.BackgroundImage = null;
this.cboWeekThursday.Font = null;
this.cboWeekThursday.Name = "cboWeekThursday";
this.cboWeekThursday.UseVisualStyleBackColor = true;
//
// cboWeekWednesday
//
this.cboWeekWednesday.AccessibleDescription = null;
this.cboWeekWednesday.AccessibleName = null;
resources.ApplyResources(this.cboWeekWednesday, "cboWeekWednesday");
this.cboWeekWednesday.BackgroundImage = null;
this.cboWeekWednesday.Font = null;
this.cboWeekWednesday.Name = "cboWeekWednesday";
this.cboWeekWednesday.UseVisualStyleBackColor = true;
//
// cboWeekTuesday
//
this.cboWeekTuesday.AccessibleDescription = null;
this.cboWeekTuesday.AccessibleName = null;
resources.ApplyResources(this.cboWeekTuesday, "cboWeekTuesday");
this.cboWeekTuesday.BackgroundImage = null;
this.cboWeekTuesday.Font = null;
this.cboWeekTuesday.Name = "cboWeekTuesday";
this.cboWeekTuesday.UseVisualStyleBackColor = true;
//
// cboWeekMonday
//
this.cboWeekMonday.AccessibleDescription = null;
this.cboWeekMonday.AccessibleName = null;
resources.ApplyResources(this.cboWeekMonday, "cboWeekMonday");
this.cboWeekMonday.BackgroundImage = null;
this.cboWeekMonday.Font = null;
this.cboWeekMonday.Name = "cboWeekMonday";
this.cboWeekMonday.UseVisualStyleBackColor = true;
//
// cboSchedule
//
this.cboSchedule.AccessibleDescription = null;
this.cboSchedule.AccessibleName = null;
resources.ApplyResources(this.cboSchedule, "cboSchedule");
this.cboSchedule.BackgroundImage = null;
this.cboSchedule.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboSchedule.Font = null;
this.cboSchedule.FormattingEnabled = true;
this.cboSchedule.Items.AddRange(new object[] {
resources.GetString("cboSchedule.Items"),
resources.GetString("cboSchedule.Items1"),
resources.GetString("cboSchedule.Items2"),
resources.GetString("cboSchedule.Items3")});
this.cboSchedule.Name = "cboSchedule";
this.cboSchedule.SelectedIndexChanged += new System.EventHandler(this.cboSchedule_SelectedIndexChanged);
//
// label7
//
this.label7.AccessibleDescription = null;
this.label7.AccessibleName = null;
resources.ApplyResources(this.label7, "label7");
this.label7.Font = null;
this.label7.Name = "label7";
//
// label6
//
this.label6.AccessibleDescription = null;
this.label6.AccessibleName = null;
resources.ApplyResources(this.label6, "label6");
this.label6.Font = null;
this.label6.Name = "label6";
//
// tabControl1
//
this.tabControl1.AccessibleDescription = null;
this.tabControl1.AccessibleName = null;
resources.ApplyResources(this.tabControl1, "tabControl1");
this.tabControl1.BackgroundImage = null;
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Font = null;
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
//
// tabPage1
//
this.tabPage1.AccessibleDescription = null;
this.tabPage1.AccessibleName = null;
resources.ApplyResources(this.tabPage1, "tabPage1");
this.tabPage1.BackgroundImage = null;
this.tabPage1.Controls.Add(this.groupBox1);
this.tabPage1.Controls.Add(this.groupBox2);
this.tabPage1.Font = null;
this.tabPage1.Name = "tabPage1";
this.tabPage1.UseVisualStyleBackColor = true;
//
// tabPage2
//
this.tabPage2.AccessibleDescription = null;
this.tabPage2.AccessibleName = null;
resources.ApplyResources(this.tabPage2, "tabPage2");
this.tabPage2.BackgroundImage = null;
this.tabPage2.Controls.Add(this.groupBox3);
this.tabPage2.Font = null;
this.tabPage2.Name = "tabPage2";
this.tabPage2.UseVisualStyleBackColor = true;
//
// panel1
//
this.panel1.AccessibleDescription = null;
this.panel1.AccessibleName = null;
resources.ApplyResources(this.panel1, "panel1");
this.panel1.BackColor = System.Drawing.Color.White;
this.panel1.BackgroundImage = null;
this.panel1.Controls.Add(this.label13);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Font = null;
this.panel1.Name = "panel1";
//
// label13
//
this.label13.AccessibleDescription = null;
this.label13.AccessibleName = null;
resources.ApplyResources(this.label13, "label13");
this.label13.Font = null;
this.label13.Name = "label13";
//
// label3
//
this.label3.AccessibleDescription = null;
this.label3.AccessibleName = null;
resources.ApplyResources(this.label3, "label3");
this.label3.Name = "label3";
//
// pictureBox1
//
this.pictureBox1.AccessibleDescription = null;
this.pictureBox1.AccessibleName = null;
resources.ApplyResources(this.pictureBox1, "pictureBox1");
this.pictureBox1.BackgroundImage = null;
this.pictureBox1.Font = null;
this.pictureBox1.ImageLocation = null;
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.TabStop = false;
//
// frmSchedule
//
this.AcceptButton = this.cmdOK;
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.CancelButton = this.cmdCancel;
this.Controls.Add(this.panel1);
this.Controls.Add(this.tabControl1);
this.Controls.Add(this.cmdOK);
this.Controls.Add(this.cmdCancel);
this.Font = null;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = null;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmSchedule";
this.Load += new System.EventHandler(this.frmSchedule_Load);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.grpMonth.ResumeLayout(false);
this.grpMonth.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nupMonth)).EndInit();
this.grpOnce.ResumeLayout(false);
this.grpOnce.PerformLayout();
this.grpDay.ResumeLayout(false);
this.grpDay.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nupDay)).EndInit();
this.grpWeek.ResumeLayout(false);
this.grpWeek.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nupWeek)).EndInit();
this.tabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
this.tabPage2.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button cmdCancel;
private System.Windows.Forms.Button cmdOK;
private System.Windows.Forms.TextBox txtName;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ListView lvwDevices;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtDescription;
private System.Windows.Forms.Button cmdAdd;
private System.Windows.Forms.Button cmdRemove;
private System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.DateTimePicker dtpDate;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TabPage tabPage2;
private System.Windows.Forms.ComboBox cboSchedule;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.GroupBox grpDay;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.GroupBox grpWeek;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.CheckBox cboWeekSaturday;
private System.Windows.Forms.CheckBox cboWeekSunday;
private System.Windows.Forms.CheckBox cboWeekFriday;
private System.Windows.Forms.CheckBox cboWeekThursday;
private System.Windows.Forms.CheckBox cboWeekWednesday;
private System.Windows.Forms.CheckBox cboWeekTuesday;
private System.Windows.Forms.CheckBox cboWeekMonday;
private System.Windows.Forms.GroupBox grpMonth;
private System.Windows.Forms.CheckBox cboMonthApr;
private System.Windows.Forms.CheckBox cboMonthMar;
private System.Windows.Forms.CheckBox cboMonthFeb;
private System.Windows.Forms.CheckBox cboMonthJan;
private System.Windows.Forms.ComboBox cboMonthDays;
private System.Windows.Forms.ComboBox cboOrder;
private System.Windows.Forms.RadioButton rdbMonthThe;
private System.Windows.Forms.RadioButton rdbMonthDay;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.CheckBox cboMontDec;
private System.Windows.Forms.CheckBox cboMonthNov;
private System.Windows.Forms.CheckBox cboMontOct;
private System.Windows.Forms.CheckBox cboMontSept;
private System.Windows.Forms.CheckBox cboMonthAug;
private System.Windows.Forms.CheckBox cboMonthJuly;
private System.Windows.Forms.CheckBox cboMonthJune;
private System.Windows.Forms.CheckBox cboMonthMay;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.NumericUpDown nupWeek;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.NumericUpDown nupDay;
private System.Windows.Forms.NumericUpDown nupMonth;
private System.Windows.Forms.DateTimePicker dtpTime;
private System.Windows.Forms.GroupBox grpOnce;
private System.Windows.Forms.Label label14;
}
}

View file

@ -0,0 +1,480 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace DeviceScheduler
{
public partial class frmSchedule : Form
{
public frmSchedule(DataStorage data, TaskScheduler.ScheduledTasks tasks, DataStorage.JobRow job, bool newJob)
{
Localization.ChangeLanguage();
InitializeComponent();
m_Data = data;
m_NewJob = newJob;
m_Job = job;
m_Tasks = tasks;
}
private DataStorage m_Data = null;
private DataStorage.JobRow m_Job = null;
private bool m_NewJob = false;
private TaskScheduler.ScheduledTasks m_Tasks = null;
private TaskScheduler.Task m_Task = null;
private void cboSchedule_SelectedIndexChanged(object sender, EventArgs e)
{
switch (cboSchedule.SelectedIndex)
{
case 0: //Day
grpDay.Visible = true;
grpDay.Location = new Point(13, 66);
grpWeek.Visible = false;
grpOnce.Visible = false;
grpMonth.Visible = false;
break;
case 1: //Week
grpDay.Visible = false;
grpWeek.Visible = true;
grpWeek.Location = new Point(13, 66);
grpOnce.Visible = false;
grpMonth.Visible = false;
break;
case 2: //Month
grpDay.Visible = false;
grpWeek.Visible = false;
grpOnce.Visible = false;
grpMonth.Visible = true;
grpMonth.Location = new Point(13, 66);
break;
case 3: //Once
grpDay.Visible = false;
grpWeek.Visible = false;
grpMonth.Visible = false;
grpOnce.Visible = true;
grpOnce.Location = new Point(13, 66);
break;
}
}
private void frmSchedule_Load(object sender, EventArgs e)
{
grpDay.Left = 13;
grpDay.Top = 66;
grpWeek.Left = 13;
grpWeek.Top = 66;
grpMonth.Left = 13;
grpMonth.Top = 66;
cboSchedule.SelectedIndex = 0;
txtName.Focus();
dtpDate.Format = DateTimePickerFormat.Custom;
dtpDate.CustomFormat = System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat.LongDatePattern;
ShowInformation();
}
private void ShowInformation()
{
if (m_NewJob)
{
return;
}
m_Task = m_Tasks.OpenTask(m_Job.Name);
txtName.Text = m_Task.Name;
txtDescription.Text = m_Task.Comment;
//txtTime.Text = m_Task.Triggers[0].BeginDate.Hour.ToString() + ":" + m_Task.Triggers[0].BeginDate.Minute.ToString();
dtpTime.Value = DateTime.Parse(m_Job.StartTime);
dtpDate.Value = m_Task.Triggers[0].BeginDate;
if (m_Task.Triggers[0] is TaskScheduler.DailyTrigger)
{
cboSchedule.SelectedIndex = 0;
TaskScheduler.DailyTrigger dayTrigger = (TaskScheduler.DailyTrigger)m_Task.Triggers[0];
nupDay.Value = Convert.ToDecimal(dayTrigger.DaysInterval);
}
else if (m_Task.Triggers[0] is TaskScheduler.WeeklyTrigger)
{
cboSchedule.SelectedIndex = 1;
TaskScheduler.WeeklyTrigger weekTrigger = (TaskScheduler.WeeklyTrigger)m_Task.Triggers[0];
string days = weekTrigger.WeekDays.ToString();
cboWeekMonday.Checked = (days.IndexOf("Monday") > -1);
cboWeekTuesday.Checked = (days.IndexOf("Tuesday") > -1);
cboWeekWednesday.Checked = (days.IndexOf("Wednesday") > -1);
cboWeekThursday.Checked = (days.IndexOf("Thursday") > -1);
cboWeekFriday.Checked = (days.IndexOf("Friday") > -1);
cboWeekSaturday.Checked = (days.IndexOf("Saturday") > -1);
cboWeekSunday.Checked = (days.IndexOf("Sunday") > -1);
nupWeek.Value = Convert.ToDecimal(weekTrigger.WeeksInterval);
}
else if (m_Task.Triggers[0] is TaskScheduler.MonthlyTrigger)
{
cboSchedule.SelectedIndex = 2;
TaskScheduler.MonthlyTrigger monthTrigger = (TaskScheduler.MonthlyTrigger)m_Task.Triggers[0];
string months = monthTrigger.Months.ToString();
cboMonthJan.Checked = (months.IndexOf("January") > -1);
cboMonthFeb.Checked = (months.IndexOf("February") > -1);
cboMonthMar.Checked = (months.IndexOf("March") > -1);
cboMonthApr.Checked = (months.IndexOf("Arpil") > -1);
cboMonthMay.Checked = (months.IndexOf("May") > -1);
cboMonthJune.Checked = (months.IndexOf("June") > -1);
cboMonthJuly.Checked = (months.IndexOf("July") > -1);
cboMonthAug.Checked = (months.IndexOf("August") > -1);
cboMontSept.Checked = (months.IndexOf("September") > -1);
cboMontOct.Checked = (months.IndexOf("October") > -1);
cboMonthNov.Checked = (months.IndexOf("November") > -1);
cboMontDec.Checked = (months.IndexOf("December") > -1);
nupMonth.Value = Convert.ToInt32(monthTrigger.Days[0]);
}
else if (m_Task.Triggers[0] is TaskScheduler.RunOnceTrigger)
{
cboSchedule.SelectedIndex = 3;
}
foreach (DataStorage.JobActionsRow action in m_Job.GetJobActionsRows())
{
DeviceHandler.Device device= GetDevice(action.DeviceID);
ListViewItem item = lvwDevices.Items.Add(device.Name);
item.SubItems.Add(action.TurnOn ? Localization.GetString("uniton") : Localization.GetString("unitoff"));
item.Tag = device;
}
}
private DeviceHandler.Device GetDevice(int deviceID)
{
foreach (DeviceHandler.Device item in Program.DeviceHandler.Devices)
{
if (item.ID == deviceID)
return item;
}
return null;
}
private bool SetInformation()
{
try
{
if (lvwDevices.Items.Count == 0)
{
MessageBox.Show(Localization.GetString("FailedToSelectUnits"), "",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
if (txtName.Text.Length == 0)
{
MessageBox.Show(Localization.GetString("FailedToNameSchedule"), "",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
if (m_NewJob)
{
frmAskUsername frm = new frmAskUsername();
DialogResult result=frm.ShowDialog(this);
if (result == DialogResult.Cancel)
return false;
m_Job = m_Data.Job.NewJobRow();
string encrypted = EncryptDecrypt.Encrypt(frm.Password, "ThisIsNotParadise");
m_Job.Username = frm.Username;
m_Job.Password = encrypted;
frm.Close();
}
string password = EncryptDecrypt.Decrypt(m_Job.Password, "ThisIsNotParadise");
//Set general information.
m_Job.JobName = txtName.Text;
m_Job.Name = txtName.Text;
m_Job.Description = txtDescription.Text;
if (!m_NewJob) //Clear previous actions and add new ones.
{
foreach (DataStorage.JobActionsRow action in m_Job.GetJobActionsRows())
{
action.Delete();
}
}
m_Data.AcceptChanges();
//Add actions.
foreach (ListViewItem item in lvwDevices.Items)
{
DataStorage.JobActionsRow action = m_Data.JobActions.NewJobActionsRow();
DeviceHandler.Device device = (DeviceHandler.Device)item.Tag;
action.DeviceID = device.ID;
action.JobID = m_Job.ID;
if (item.SubItems[1].Text == Localization.GetString("uniton"))
action.TurnOn = true;
else
action.TurnOn = false;
m_Data.JobActions.AddJobActionsRow(action);
}
TaskScheduler.Task task = null;
//Create a new schedule in windows.
if (m_Task != null)
{
task = m_Task;
}
else
{
task = m_Tasks.CreateTask(txtName.Text);
}
string path = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
path = System.IO.Path.Combine(path, "DeviceSchedulerAgent.exe");
//Clear trigger.
if(task.Triggers!=null)
task.Triggers.Clear();
//Set general information.
task.ApplicationName = path;
task.Parameters = m_Job.ID.ToString();
task.Comment = txtDescription.Text;
//Set user account information.
try
{
if (password.Length == 0)
task.SetAccountInformation(m_Job.Username, null);
else
task.SetAccountInformation(m_Job.Username, password);
}
catch (Exception e)
{
MessageBox.Show(Localization.GetString("FailedToSetPassword"),
Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//Set Telldus as creator so we can recognize the task next time.
task.Creator = "Telldus";
m_Job.StartTime = dtpTime.Value.Hour.ToString() + ":" + dtpTime.Value.Minute.ToString();
dtpTime.Value= DateTime.Parse(dtpDate.Value.ToShortDateString() + " " + dtpTime.Value.ToShortTimeString());
DateTime time = dtpTime.Value;
short hour = short.Parse(dtpTime.Value.Hour.ToString());
short minute = short.Parse(dtpTime.Value.Minute.ToString());
short interval = 1;
switch (cboSchedule.SelectedIndex)
{
case 0: //Dailytrigger
interval = short.Parse(nupDay.Value.ToString());
TaskScheduler.DailyTrigger dayTrigger = new TaskScheduler.DailyTrigger(hour, minute, interval);
dayTrigger.BeginDate = dtpDate.Value;
//trigger.BeginDate.AddHours(Convert.ToDouble(dtpTime.Value.Hour));
//trigger.BeginDate.AddMinutes(Convert.ToDouble(dtpTime.Value.Minute));
dayTrigger.Disabled = false;
task.Triggers.Add(dayTrigger);
break;
case 1: //Weeklytrigger
TaskScheduler.DaysOfTheWeek weekDays = 0;
interval = short.Parse(nupWeek.Value.ToString());
if (cboWeekMonday.Checked)
weekDays = weekDays | TaskScheduler.DaysOfTheWeek.Monday;
if (cboWeekTuesday.Checked)
weekDays = weekDays | TaskScheduler.DaysOfTheWeek.Tuesday;
if (cboWeekWednesday.Checked)
weekDays = weekDays | TaskScheduler.DaysOfTheWeek.Wednesday;
if (cboWeekThursday.Checked)
weekDays = weekDays | TaskScheduler.DaysOfTheWeek.Thursday;
if (cboWeekFriday.Checked)
weekDays = weekDays | TaskScheduler.DaysOfTheWeek.Friday;
if (cboWeekSaturday.Checked)
weekDays = weekDays | TaskScheduler.DaysOfTheWeek.Saturday;
if (cboWeekSunday.Checked)
weekDays = weekDays | TaskScheduler.DaysOfTheWeek.Sunday;
TaskScheduler.WeeklyTrigger weeklyTrigger = new TaskScheduler.WeeklyTrigger(hour, minute, weekDays, interval);
time = DateTime.Parse(time.ToShortDateString()+ " " + dtpTime.Value.Hour+":"+dtpTime.Value.Minute+":00" );
//weeklyTrigger.BeginDate = time;
//weeklyTrigger.BeginDate=weeklyTrigger.BeginDate.AddHours(Convert.ToDouble(dtpTime.Value.Hour));
//weeklyTrigger.BeginDate=weeklyTrigger.BeginDate.AddMinutes(Convert.ToDouble(dtpTime.Value.Minute));
task.Triggers.Add(weeklyTrigger);
break;
case 2: //Monthlytrigger
//interval = int.Parse(nupmo
TaskScheduler.MonthsOfTheYear months = 0;
if (cboMonthJan.Checked)
months = months | TaskScheduler.MonthsOfTheYear.January;
if (cboMonthFeb.Checked)
months = months | TaskScheduler.MonthsOfTheYear.February;
if (cboMonthMar.Checked)
months = months | TaskScheduler.MonthsOfTheYear.March;
if (cboMonthApr.Checked)
months = months | TaskScheduler.MonthsOfTheYear.April;
if (cboMonthMay.Checked)
months = months | TaskScheduler.MonthsOfTheYear.May;
if (cboMonthJune.Checked)
months = months | TaskScheduler.MonthsOfTheYear.June;
if (cboMonthJuly.Checked)
months = months | TaskScheduler.MonthsOfTheYear.July;
if (cboMonthAug.Checked)
months = months | TaskScheduler.MonthsOfTheYear.August;
if (cboMontSept.Checked)
months = months | TaskScheduler.MonthsOfTheYear.September;
if (cboMontOct.Checked)
months = months | TaskScheduler.MonthsOfTheYear.October;
if (cboMonthNov.Checked)
months = months | TaskScheduler.MonthsOfTheYear.November;
if (cboMontDec.Checked)
months = months | TaskScheduler.MonthsOfTheYear.December;
int[] days = new int[1] { int.Parse(nupMonth.Value.ToString()) };
TaskScheduler.MonthlyTrigger monthlyTrigger = new TaskScheduler.MonthlyTrigger(hour, minute, days, months);
monthlyTrigger.BeginDate = dtpDate.Value;
//trigger.BeginDate.AddMinutes(Convert.ToDouble(dtpTime.Value.Minute));
task.Triggers.Add(monthlyTrigger);
break;
case 3:
TaskScheduler.RunOnceTrigger onceTrigger = new TaskScheduler.RunOnceTrigger(dtpDate.Value);
onceTrigger.StartHour = hour;
onceTrigger.StartMinute = minute;
task.Triggers.Add(onceTrigger);
break;
}
task.Triggers[0].BeginDate = time;
task.Save();
task.Close();
if(m_NewJob)
m_Data.Job.AddJobRow(m_Job);
m_Data.AcceptChanges();
return true;
}
catch (Exception ex)
{
//ett ohanterat fel har uppstått i programmet.
MessageBox.Show(Localization.GetString("msg1") + Environment.NewLine + ex.Message,
Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
private void cmdOK_Click(object sender, EventArgs e)
{
if (SetInformation())
{
this.DialogResult = DialogResult.OK;
this.Hide();
}
}
private void cmdCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Hide();
}
private void cmdAdd_Click(object sender, EventArgs e)
{
frmScheduleAddDevice frm = new frmScheduleAddDevice();
DialogResult result = frm.ShowDialog(this);
if (result == DialogResult.OK)
{
ListViewItem item = lvwDevices.Items.Add(frm.SelectedDevice.Name);
item.SubItems.Add(frm.SelectedDeviceAction == 0 ? Localization.GetString("uniton") : Localization.GetString("unitoff"));
item.Tag = frm.SelectedDevice;
}
frm.Close();
}
private string GetActionName(int actionID)
{
return "";
}
private void cmdRemove_Click(object sender, EventArgs e)
{
if (lvwDevices.SelectedItems.Count == 0) { return; }
//Vill du ta bort markerad enhet?
DialogResult result = MessageBox.Show(Localization.GetString("msg3"),
Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
lvwDevices.Items.Remove(lvwDevices.SelectedItems[0]);
}
}
}
}

View file

@ -0,0 +1,451 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="cmdCancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>38, 13</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Name:</value>
</data>
<data name="columnHeader1.Text" xml:space="preserve">
<value>Unit</value>
</data>
<data name="columnHeader2.Text" xml:space="preserve">
<value>Action</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 13</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Description:</value>
</data>
<data name="cmdAdd.Text" xml:space="preserve">
<value>Add...</value>
</data>
<data name="cmdRemove.Text" xml:space="preserve">
<value>Remove...</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 13</value>
</data>
<data name="label4.Text" xml:space="preserve">
<value>Start date:</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Generall information</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>Unit(s)</value>
</data>
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 13</value>
</data>
<data name="label12.Text" xml:space="preserve">
<value>a month.</value>
</data>
<data name="cboMontOct.Text" xml:space="preserve">
<value>October</value>
</data>
<data name="cboMonthAug.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 17</value>
</data>
<data name="cboMonthAug.Text" xml:space="preserve">
<value>August</value>
</data>
<data name="cboMonthJuly.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="cboMonthJuly.Text" xml:space="preserve">
<value>July</value>
</data>
<data name="cboMonthJune.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 17</value>
</data>
<data name="cboMonthJune.Text" xml:space="preserve">
<value>June</value>
</data>
<data name="cboMonthMay.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 17</value>
</data>
<data name="cboMonthMay.Text" xml:space="preserve">
<value>May</value>
</data>
<data name="cboMonthMar.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="cboMonthMar.Text" xml:space="preserve">
<value>March</value>
</data>
<data name="cboMonthFeb.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 17</value>
</data>
<data name="cboMonthFeb.Text" xml:space="preserve">
<value>February</value>
</data>
<data name="cboMonthJan.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="cboMonthJan.Text" xml:space="preserve">
<value>January</value>
</data>
<data name="cboMonthDays.Items" xml:space="preserve">
<value>Monday</value>
</data>
<data name="cboMonthDays.Items1" xml:space="preserve">
<value>Tuesday</value>
</data>
<data name="cboMonthDays.Items2" xml:space="preserve">
<value>Wednesday</value>
</data>
<data name="cboMonthDays.Items3" xml:space="preserve">
<value>Thursday</value>
</data>
<data name="cboMonthDays.Items4" xml:space="preserve">
<value>Friday</value>
</data>
<data name="cboMonthDays.Items5" xml:space="preserve">
<value>Saturday</value>
</data>
<data name="cboMonthDays.Items6" xml:space="preserve">
<value>Sunday</value>
</data>
<data name="cboOrder.Items" xml:space="preserve">
<value>First</value>
</data>
<data name="cboOrder.Items1" xml:space="preserve">
<value>Second</value>
</data>
<data name="cboOrder.Items2" xml:space="preserve">
<value>Third</value>
</data>
<data name="cboOrder.Items3" xml:space="preserve">
<value>Fourth</value>
</data>
<data name="cboOrder.Items4" xml:space="preserve">
<value>Last</value>
</data>
<data name="rdbMonthThe.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="rdbMonthThe.Text" xml:space="preserve">
<value>The</value>
</data>
<data name="rdbMonthDay.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value>
</data>
<data name="rdbMonthDay.Text" xml:space="preserve">
<value>Day</value>
</data>
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
<value>48, 13</value>
</data>
<data name="label11.Text" xml:space="preserve">
<value>a month.</value>
</data>
<data name="grpMonth.Text" xml:space="preserve">
<value>Schedule, month</value>
</data>
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 13</value>
</data>
<data name="label14.Text" xml:space="preserve">
<value>This schedule only runs at one time.</value>
</data>
<data name="grpOnce.Text" xml:space="preserve">
<value>Schedule, once</value>
</data>
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 13</value>
</data>
<data name="label8.Text" xml:space="preserve">
<value> day.</value>
</data>
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 13</value>
</data>
<data name="label5.Text" xml:space="preserve">
<value>Every</value>
</data>
<data name="grpDay.Text" xml:space="preserve">
<value>Schedule, days</value>
</data>
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 13</value>
</data>
<data name="label9.Text" xml:space="preserve">
<value>:st week.</value>
</data>
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 13</value>
</data>
<data name="label10.Text" xml:space="preserve">
<value>Every</value>
</data>
<data name="cboWeekSaturday.Size" type="System.Drawing.Size, System.Drawing">
<value>68, 17</value>
</data>
<data name="cboWeekSaturday.Text" xml:space="preserve">
<value>Saturday</value>
</data>
<data name="cboWeekSunday.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 17</value>
</data>
<data name="cboWeekSunday.Text" xml:space="preserve">
<value>Sunday</value>
</data>
<data name="cboWeekFriday.Size" type="System.Drawing.Size, System.Drawing">
<value>54, 17</value>
</data>
<data name="cboWeekFriday.Text" xml:space="preserve">
<value>Friday</value>
</data>
<data name="cboWeekThursday.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 17</value>
</data>
<data name="cboWeekThursday.Text" xml:space="preserve">
<value>Thursday</value>
</data>
<data name="cboWeekWednesday.Size" type="System.Drawing.Size, System.Drawing">
<value>83, 17</value>
</data>
<data name="cboWeekWednesday.Text" xml:space="preserve">
<value>Wednesday</value>
</data>
<data name="cboWeekTuesday.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 17</value>
</data>
<data name="cboWeekTuesday.Text" xml:space="preserve">
<value>Tuesday</value>
</data>
<data name="cboWeekMonday.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 17</value>
</data>
<data name="cboWeekMonday.Text" xml:space="preserve">
<value>Monday</value>
</data>
<data name="grpWeek.Text" xml:space="preserve">
<value>Schedule, week</value>
</data>
<data name="cboSchedule.Items" xml:space="preserve">
<value>Every day</value>
</data>
<data name="cboSchedule.Items1" xml:space="preserve">
<value>Every week</value>
</data>
<data name="cboSchedule.Items2" xml:space="preserve">
<value>Every month</value>
</data>
<data name="cboSchedule.Items3" xml:space="preserve">
<value>Once</value>
</data>
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
<value>33, 13</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>Time:</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 13</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Schedule:</value>
</data>
<data name="groupBox3.Text" xml:space="preserve">
<value>Scheduling details</value>
</data>
<data name="tabPage1.Text" xml:space="preserve">
<value>General</value>
</data>
<data name="tabPage2.Text" xml:space="preserve">
<value>Schedule</value>
</data>
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
<value>279, 13</value>
</data>
<data name="label13.Text" xml:space="preserve">
<value>Fill out the information below to schedule on or more units.</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 13</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Create a new schedule.</value>
</data>
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Schedule unit(s)</value>
</data>
</root>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,187 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="cboWeekSaturday.Size" type="System.Drawing.Size, System.Drawing">
<value>59, 17</value>
</data>
<data name="cboWeekSaturday.Text" xml:space="preserve">
<value>Lördag</value>
</data>
<data name="cboWeekSunday.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value>
</data>
<data name="cboWeekSunday.Text" xml:space="preserve">
<value>Söndag</value>
</data>
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAACzBJREFUaEPdmQds
VdkRhtdgMBCKQ7JswhJtZFZsyCItECmroCgkrEKk7KKAIiAQRBNFoQREb6I3U00H0btN772a3nuvphow
YLpxOSf/d3Sv98Fa4r1n75LE0uiee3zvuTNn/vln5ryID/Lg7/79+/mstcUiIiJK5M+f3+j6sGTJkq/y
YOnvb4nbt28XevDgQb0nT54sunXrVtLTp0/Tnz9/bl68eGE0fnrnzp1NFy5cqP79aZCLlS9dulRXu349
PT3dSlezaNEik5WVZc23f1b35tSpU5m7d+/+7zJi27ZtA549e+YrbDMzM+2rV69Q3snr16+tPGP1jH34
8KFdtmzZwdWrV0fkYr/y7tXp06d/sWPHjsyXL186qKCsvGDS0tK4d95ISUlh5+21a9eMvGTi4+Nfb9q0
qdS7tHj8+HGJ1NTUjyXF3/Vs2P8fMWJEhzVr1pibN2+aI0eOmCtXrtjk5GRz9+5dxAr3RvFgjh49ao8f
P25OnDhhxo8fn37y5MkEwW5sUlLSQEmDc+fO/dJX4tGjR39U7CTK+JfyZJY24qWMOCzvtZEXo8JWNqcX
Bw4c2HjcuHFWitkDBw7YvXv32vPnz1sply1nzpyxgplduXKl7d69ux06dKiVAVZBb69fv24PHz5s5UWM
PKMgny4vZnjxIyL79g9oyoCz8vZneWZEnz59onv27Hl/8uTJZt26dWbFihV21apVZu3atUaeAe9m6tSp
plu3brZNmzZGz5sFCxbYnTt3mg0bNpjFixdbQcrMmzfPyJsOZsDQj33UZ6w5vOyPr8krP8kzI2TAl+3b
t9/Ytm3bF+3atbOtW7c2TZs2NfXq1bN16tQx3I8ZM8auX7/eyDOGYCY2BB2TmJhoMV7vGbwDFPU/x1j8
+QbIu2bOnDnOAHnCKD5G5pkB2uHowYMHj5QB6VLW9ujRww4fPtxOmTLFamctuyxPOAiJQu3FixctsbJn
zx67cOFCO3LkSNu1a1eLl4CeYsCKBByDeQY49lJ+cXNASTBK1X3BXBkhmORbvnx5s4SEhGRh3Jw9e5aA
dYF748YNg6JiHyO8G2HbsuME9+XLl4kXI4McbPr27Ws6d+6Mp+yhQ4fcGvfu3TOwmUfFb3gD73iU/GXY
BmzZsqWIML9EdAjzsKCjy2PHjlnmED3jglMwMdu3b7e6N5s3b3bzMJIPoQkTJph+/fqZBg0aWMWHW0Os
5NbLyMj4TjwAIf2PePlbWAZotwtJkUTgIF4Hz+y03bhxo921a5dFAVhJHrHsPJ7gyj3zUt7u27fPag3H
QMzPnTvXtmzZ0sFv5syZdv/+/e45edMlRZ+VuJJfWE/eqhqWAVu3bp2F8sKlAZvCsoFV2FUWhkk8eWNM
AOMBcC6jHLQOHjzoPCOqdYHeokUL06tXLytYurwC3WpNBz3lAqvgNVevXsWLT8RePwrZAO1yTXkgSxh1
i2EIeEYBcToCt+c45sMYqmv2Mxhz+vRpN48xAwYMMCIDK2YzEydOxGC3Ppskg1yMQNGtWrXqH7LyCrpI
1TBnSFTKlM79JC92XUEbtigWwLyDDdAaNGiQVb6wXbp0sXhj2LBhdtSoUY6t+vfvz1xajRo1Qk9mosNv
YBvRFxAB7w4ylAoBEngf0hhvsNvaZTt69GijOssQEyTAJk2aGClta9WqZSZNmmREDv8O2QPi9AXsFBRG
yUDwUQ5Q8yCM2UH/PtQrAQu8gCXrkENgLBlihwwZYps3b57tESW8AyEZIGaI0IIpVJPsNtAB6yrcXPHm
F3CUD4KYuw/8X7BjghVI4V0lOaM8Y5csWWL0faN84bzRsWNHPA8ZvLOizTZS2TaGTEoJQMKCDlGSOl/C
1ZDAoExKBowM/F8oYzzHNxRjBvxPmzbNxMXFOQMaNmzokh50LRjXCNoLSjZfUVECH9iCGIBCSftcfSGL
EuTUOCQbfz7wuWDGeAwYiSptbGysC+zevXvbZs2auWAGWtqwLqEYUBvcE8C60pi4XUJJ5nyBq/EMtAqH
Mw/d8rxixPUNVJXeFa85D+o91vDXcjkGKNJHiI3YfecNrrSr6KLvjAjaADUhdaE5lJEHDLvIh8nClBG+
QK+MwTJFHGUyeAVaJDJP3hiT1BCUIhliCGuwPgaofyDJGcWCnT9/PgxklDvwcFzQBmiBr8EdisP/fEQV
4XdEBrp8ACXyPCU1JQbskpNQlSpmLMEK7Gh+mAOKfAsD6B/4P3HHM8zxjLw0KmgDxo4d+4UaEOcBLeB2
ib6Xstfrf10Qky0JPgo12ERFnKldu7aDExWqJyhKw0NF6nadbIyXeM9Lim6OjVDpYsg/xJPqLDfP2tKl
X9AGqG0spJ1I1644FgLTdEkco+Bu8A1sKMBq1qxpSDgqB1xNM3v2bBocS20D/KBaaiIwTmlNPGC8lzey
r8CKeOEdNoJvsQbz5BwZUD9oA3hQTLQfxcm+sAStHzFAXeTRpBvzfxiEDgoj6tevb6tVq2YbN27s4Ee9
5AVv9nv++4FXYMJ6VLcwII0MsMRDxIcMyD4ICMoQ1SO9sZ5K03OhcysMEiDuHqj5gc7u0itTiOFBmOrt
5717f95dSZRsGLCh2CPmFE8uSQrCx4NSOvAh1SCfKeAyyMbgleoSZTg+DJDA+7DGBK0YzyVDYMWYuANO
NEp0a/pus5AN4AUZscFPVuwwi9Jw5KWoXHaVKfABLrAUDEZpTRIVfE5oPrx+eMaMGb9XQGUSRApAV+8Q
xGr9fLF5MHaJjNM+4oA2E6aiaxOs0kWpvwtr9/2XVFgthD2IBzIxrqYBp9mm5fOuYY8JVmAKLIEq50rU
Q2pqslTMda9QoULhXBmg+qSUDq+SCWQyIvURrILyefEHNGE4YKMc4I5oFLyZ6sJipXiFwoUL5+54USm9
nHYlBWaAEult2S3YJqdThMADqneNgSPUDFuRJ9TYWMVEmhqaHlL+N5LKkh+H7YFZs2aVEpdfIAaESdcX
wEYc2vJxAo+rryjxgIE5ne+8bQyKQ5/QJcmSTK0Afl69evWWUri85HPvWlbXfCEbERMTE6WiLoGP0I2p
N72tjHtYSSuTgMYIgpqeAapDEUoDNemObt8+7/QNIKNzBsRxCcZzRENrqWC9U7FiRVrHSpLSkk88idE1
ZBbiB4lS6ktjdWR4s3Llyut130fyL43jFBOpGIUQF+wmQmYlPqhSqZsoBxCMo56CBDCOwIUyeZfEpR5g
t35Ta6T1ObwCNh9JPvaEccgGfFCwYMEo/VjHImDxD5JfeQt+Gh0d/Q+dbyYq1WdSPgMbdpIaiWIPhfGM
X/fzY4j3Q4hrTf0zJcHmgSAzRuv+U1Jb8o3kt5JfeN/6UNcSYUEoAHN4AwxyjdCvkBFihiIy7vOyZcu2
7tSpU6IUeU1lSl1EgUcpjEGUywjjwHnKZErmqlWrxmtNdr6uhJaR07dfS4DQTyXFJJEBuuTdUB6KKFCg
AD8HlStWrNjXVapUiW3UqNE2/QiSpOB/tXTp0kwOdKVolhr2NFW4yeL1EyKDLMoFTqvVfW3R+3/1PAx0
PpXQvKM4sAk9eEM1EY9ICskj7BiMUVnGfSWj6kmaFC1atFFUVFQtzf9F8nf1ukcp/ugZFF+n2AAJkOFH
jCLejr+3HwX5MC4ne8LfBODPvV0tKSN/VqZMmebKuBkcFMg7qeXLl4+Wkbzz3pQO2mmRkZH55K1POnTo
sIMcQvclg/6keaCYP+iF3uODlAXlxGK9lCDTodBKlSoN1RyBm7ua5wcyqoCH9z+rFY1XoXi3dOnSTTVX
xgvaH0iN3H0mUjAqqkD/UMH9UfHixRn/T8And2b/v779H/5zKieSpVJSAAAAAElFTkSuQmCC
</value>
</data>
</root>

View file

@ -0,0 +1,156 @@
namespace DeviceScheduler
{
partial class frmScheduleAddDevice
{
/// <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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmScheduleAddDevice));
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.cboDevices = new System.Windows.Forms.ComboBox();
this.cboAction = new System.Windows.Forms.ComboBox();
this.cmdOK = new System.Windows.Forms.Button();
this.cmdCancel = new System.Windows.Forms.Button();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
//
this.groupBox1.AccessibleDescription = null;
this.groupBox1.AccessibleName = null;
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.BackgroundImage = null;
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.cboDevices);
this.groupBox1.Controls.Add(this.cboAction);
this.groupBox1.Font = null;
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
// label1
//
this.label1.AccessibleDescription = null;
this.label1.AccessibleName = null;
resources.ApplyResources(this.label1, "label1");
this.label1.Font = null;
this.label1.Name = "label1";
//
// label2
//
this.label2.AccessibleDescription = null;
this.label2.AccessibleName = null;
resources.ApplyResources(this.label2, "label2");
this.label2.Font = null;
this.label2.Name = "label2";
this.label2.Click += new System.EventHandler(this.label2_Click);
//
// cboDevices
//
this.cboDevices.AccessibleDescription = null;
this.cboDevices.AccessibleName = null;
resources.ApplyResources(this.cboDevices, "cboDevices");
this.cboDevices.BackgroundImage = null;
this.cboDevices.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboDevices.Font = null;
this.cboDevices.FormattingEnabled = true;
this.cboDevices.Name = "cboDevices";
//
// cboAction
//
this.cboAction.AccessibleDescription = null;
this.cboAction.AccessibleName = null;
resources.ApplyResources(this.cboAction, "cboAction");
this.cboAction.BackgroundImage = null;
this.cboAction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboAction.Font = null;
this.cboAction.FormattingEnabled = true;
this.cboAction.Items.AddRange(new object[] {
resources.GetString("cboAction.Items"),
resources.GetString("cboAction.Items1")});
this.cboAction.Name = "cboAction";
//
// cmdOK
//
this.cmdOK.AccessibleDescription = null;
this.cmdOK.AccessibleName = null;
resources.ApplyResources(this.cmdOK, "cmdOK");
this.cmdOK.BackgroundImage = null;
this.cmdOK.Font = null;
this.cmdOK.Name = "cmdOK";
this.cmdOK.UseVisualStyleBackColor = true;
this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click);
//
// cmdCancel
//
this.cmdCancel.AccessibleDescription = null;
this.cmdCancel.AccessibleName = null;
resources.ApplyResources(this.cmdCancel, "cmdCancel");
this.cmdCancel.BackgroundImage = null;
this.cmdCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cmdCancel.Font = null;
this.cmdCancel.Name = "cmdCancel";
this.cmdCancel.UseVisualStyleBackColor = true;
this.cmdCancel.Click += new System.EventHandler(this.cmdCancel_Click);
//
// frmScheduleAddDevice
//
this.AcceptButton = this.cmdOK;
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.CancelButton = this.cmdCancel;
this.Controls.Add(this.cmdCancel);
this.Controls.Add(this.cmdOK);
this.Controls.Add(this.groupBox1);
this.Font = null;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = null;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmScheduleAddDevice";
this.Load += new System.EventHandler(this.frmScheduleAddDevice_Load);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox cboDevices;
private System.Windows.Forms.ComboBox cboAction;
private System.Windows.Forms.Button cmdOK;
private System.Windows.Forms.Button cmdCancel;
}
}

View file

@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace DeviceScheduler
{
public partial class frmScheduleAddDevice : Form
{
public frmScheduleAddDevice()
{
Localization.ChangeLanguage();
InitializeComponent();
}
private void frmScheduleAddDevice_Load(object sender, EventArgs e)
{
//Fill the combobox with Devices
FillCombo();
//Preselect device and action
cboDevices.SelectedIndex = 0;
cboAction.SelectedIndex = 0;
}
private void FillCombo()
{
Program.DeviceHandler.Load();
foreach (DeviceHandler.Device item in Program.DeviceHandler.Devices)
{
cboDevices.Items.Add(item);
}
}
private void cmdOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Hide();
}
private void cmdCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Hide();
}
public DeviceHandler.Device SelectedDevice
{
get
{ return (DeviceHandler.Device)cboDevices.SelectedItem;}
}
public int SelectedDeviceAction
{
get
{ return cboAction.SelectedIndex;}
}
private void label2_Click(object sender, EventArgs e)
{
}
}
}

View file

@ -0,0 +1,148 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>29, 13</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Unit:</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 13</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Action:</value>
</data>
<data name="cboAction.Items" xml:space="preserve">
<value>On</value>
</data>
<data name="cboAction.Items1" xml:space="preserve">
<value>Off</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Choose a unit to add</value>
</data>
<data name="cmdCancel.Text" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Add unit</value>
</data>
</root>

View file

@ -0,0 +1,321 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="cboDevices.Location" type="System.Drawing.Point, System.Drawing">
<value>72, 30</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Åtgärd:</value>
</data>
<data name="&gt;&gt;cboAction.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="cmdCancel.Text" xml:space="preserve">
<value>Avbryt</value>
</data>
<data name="&gt;&gt;cboAction.Name" xml:space="preserve">
<value>cboAction</value>
</data>
<data name="&gt;&gt;cmdCancel.Name" xml:space="preserve">
<value>cmdCancel</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;cboDevices.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="cmdCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>38, 13</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 12</value>
</data>
<data name="&gt;&gt;cmdOK.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Enhet:</value>
</data>
<data name="cboAction.Location" type="System.Drawing.Point, System.Drawing">
<value>72, 57</value>
</data>
<data name="cboAction.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="cboAction.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 21</value>
</data>
<data name="&gt;&gt;cboDevices.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="cmdOK.Location" type="System.Drawing.Point, System.Drawing">
<value>290, 16</value>
</data>
<data name="&gt;&gt;cmdCancel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cmdOK.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;cboDevices.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;cboAction.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 60</value>
</data>
<data name="&gt;&gt;cmdCancel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="cboAction.Items" xml:space="preserve">
<value>På</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="cmdOK.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>373, 112</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>272, 90</value>
</data>
<data name="&gt;&gt;cmdOK.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 33</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="cmdOK.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="cboAction.Items1" xml:space="preserve">
<value>Av</value>
</data>
<data name="cboDevices.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Lägg till enhet</value>
</data>
<data name="cmdCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>290, 45</value>
</data>
<data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;cmdCancel.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="groupBox1.Text" xml:space="preserve">
<value>Välj den enhet som skall läggas till</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="cmdOK.Text" xml:space="preserve">
<value>OK</value>
</data>
<data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="&gt;&gt;cboDevices.Name" xml:space="preserve">
<value>cboDevices</value>
</data>
<data name="&gt;&gt;cboAction.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmScheduleAddDevice</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 13</value>
</data>
<data name="&gt;&gt;cmdOK.Name" xml:space="preserve">
<value>cmdOK</value>
</data>
<data name="cmdCancel.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="cboDevices.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 21</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>English</value>
</metadata>
</root>

View file

@ -0,0 +1,100 @@
namespace DeviceScheduler
{
partial class frmSelectDevice
{
/// <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.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// listView1
//
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
this.columnHeader2});
this.listView1.Location = new System.Drawing.Point(12, 12);
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(333, 166);
this.listView1.TabIndex = 5;
this.listView1.UseCompatibleStateImageBehavior = false;
this.listView1.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
this.columnHeader1.Text = "Device";
this.columnHeader1.Width = 168;
//
// columnHeader2
//
this.columnHeader2.Text = "Action";
this.columnHeader2.Width = 135;
//
// button1
//
this.button1.Location = new System.Drawing.Point(351, 12);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 6;
this.button1.Text = "OK";
this.button1.UseVisualStyleBackColor = true;
//
// button2
//
this.button2.Location = new System.Drawing.Point(351, 41);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 23);
this.button2.TabIndex = 7;
this.button2.Text = "Cancel";
this.button2.UseVisualStyleBackColor = true;
//
// frmSelectDevice
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(435, 190);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.listView1);
this.Name = "frmSelectDevice";
this.Text = "frmSelectDevice";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
}
}

View file

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace DeviceScheduler
{
public partial class frmSelectDevice : Form
{
public frmSelectDevice()
{
InitializeComponent();
}
}
}

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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,99 @@
namespace DeviceScheduler
{
partial class frmSplash
{
/// <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();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSplash));
this.label3 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.lblVersion = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label3
//
this.label3.AutoSize = true;
this.label3.BackColor = System.Drawing.Color.Transparent;
this.label3.Location = new System.Drawing.Point(114, 280);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(341, 13);
this.label3.TabIndex = 6;
this.label3.Text = "© Copyright Telldus Technologies AB 2007. Alla rättigheter förbehålles.";
//
// label1
//
this.label1.AutoSize = true;
this.label1.BackColor = System.Drawing.Color.Transparent;
this.label1.Location = new System.Drawing.Point(242, 195);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(45, 13);
this.label1.TabIndex = 7;
this.label1.Text = "Version:";
//
// timer1
//
this.timer1.Interval = 1500;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// lblVersion
//
this.lblVersion.AutoSize = true;
this.lblVersion.BackColor = System.Drawing.Color.Transparent;
this.lblVersion.Location = new System.Drawing.Point(293, 195);
this.lblVersion.Name = "lblVersion";
this.lblVersion.Size = new System.Drawing.Size(45, 13);
this.lblVersion.TabIndex = 8;
this.lblVersion.Text = "Version:";
//
// frmSplash
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
this.ClientSize = new System.Drawing.Size(522, 300);
this.Controls.Add(this.lblVersion);
this.Controls.Add(this.label1);
this.Controls.Add(this.label3);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "frmSplash";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Load += new System.EventHandler(this.frmSplash_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.Label lblVersion;
}
}

View file

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
namespace DeviceScheduler
{
public partial class frmSplash : Form
{
public frmSplash()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
Cursor = Cursors.Default;
this.Hide();
}
private void frmSplash_Load(object sender, EventArgs e)
{
Cursor = Cursors.WaitCursor;
lblVersion.Text = AssemblyVersion;
timer1.Enabled = true;
}
public string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
}
}

View file

@ -0,0 +1,900 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings>
</TableUISettings>
</DataSetUISetting>

View file

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DataStorage" targetNamespace="http://tempuri.org/DataStorage.xsd" xmlns:mstns="http://tempuri.org/DataStorage.xsd" xmlns="http://tempuri.org/DataStorage.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
</Connections>
<Tables>
</Tables>
<Sources>
</Sources>
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DataStorage" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DataStorage" msprop:Generator_DataSetName="DataStorage">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Job" msprop:Generator_UserTableName="Job" msprop:Generator_RowDeletedName="JobRowDeleted" msprop:Generator_RowChangedName="JobRowChanged" msprop:Generator_RowClassName="JobRow" msprop:Generator_RowChangingName="JobRowChanging" msprop:Generator_RowEvArgName="JobRowChangeEvent" msprop:Generator_RowEvHandlerName="JobRowChangeEventHandler" msprop:Generator_TableClassName="JobDataTable" msprop:Generator_TableVarName="tableJob" msprop:Generator_RowDeletingName="JobRowDeleting" msprop:Generator_TablePropName="Job">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_UserColumnName="ID" msprop:Generator_ColumnPropNameInRow="ID" msprop:Generator_ColumnVarNameInTable="columnID" msprop:Generator_ColumnPropNameInTable="IDColumn" type="xs:int" />
<xs:element name="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnVarNameInTable="columnName" msprop:Generator_ColumnPropNameInTable="NameColumn" type="xs:string" minOccurs="0" />
<xs:element name="Description" msprop:Generator_UserColumnName="Description" msprop:Generator_ColumnPropNameInRow="Description" msprop:Generator_ColumnVarNameInTable="columnDescription" msprop:Generator_ColumnPropNameInTable="DescriptionColumn" type="xs:string" minOccurs="0" />
<xs:element name="JobName" msprop:Generator_UserColumnName="JobName" msprop:Generator_ColumnPropNameInRow="JobName" msprop:Generator_ColumnVarNameInTable="columnJobName" msprop:Generator_ColumnPropNameInTable="JobNameColumn" type="xs:string" minOccurs="0" />
<xs:element name="StartTime" msprop:Generator_UserColumnName="StartTime" msprop:Generator_ColumnPropNameInRow="StartTime" msprop:Generator_ColumnVarNameInTable="columnStartTime" msprop:Generator_ColumnPropNameInTable="StartTimeColumn" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="JobActions" msprop:Generator_UserTableName="JobActions" msprop:Generator_RowDeletedName="JobActionsRowDeleted" msprop:Generator_RowChangedName="JobActionsRowChanged" msprop:Generator_RowClassName="JobActionsRow" msprop:Generator_RowChangingName="JobActionsRowChanging" msprop:Generator_RowEvArgName="JobActionsRowChangeEvent" msprop:Generator_RowEvHandlerName="JobActionsRowChangeEventHandler" msprop:Generator_TableClassName="JobActionsDataTable" msprop:Generator_TableVarName="tableJobActions" msprop:Generator_RowDeletingName="JobActionsRowDeleting" msprop:Generator_TablePropName="JobActions">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="1" msprop:Generator_UserColumnName="ID" msprop:Generator_ColumnPropNameInRow="ID" msprop:Generator_ColumnVarNameInTable="columnID" msprop:Generator_ColumnPropNameInTable="IDColumn" type="xs:int" />
<xs:element name="JobID" msprop:Generator_UserColumnName="JobID" msprop:Generator_ColumnPropNameInRow="JobID" msprop:Generator_ColumnVarNameInTable="columnJobID" msprop:Generator_ColumnPropNameInTable="JobIDColumn" type="xs:int" minOccurs="0" />
<xs:element name="DeviceID" msprop:Generator_UserColumnName="DeviceID" msprop:Generator_ColumnPropNameInRow="DeviceID" msprop:Generator_ColumnVarNameInTable="columnDeviceID" msprop:Generator_ColumnPropNameInTable="DeviceIDColumn" type="xs:int" minOccurs="0" />
<xs:element name="TurnOn" msprop:Generator_UserColumnName="TurnOn" msprop:Generator_ColumnPropNameInRow="TurnOn" msprop:Generator_ColumnVarNameInTable="columnTurnOn" msprop:Generator_ColumnPropNameInTable="TurnOnColumn" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="JobKey1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:Job" />
<xs:field xpath="mstns:ID" />
</xs:unique>
<xs:unique name="JobActionsKey1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:JobActions" />
<xs:field xpath="mstns:ID" />
</xs:unique>
</xs:element>
<xs:annotation>
<xs:appinfo>
<msdata:Relationship name="Job_JobActions" msdata:parent="Job" msdata:child="JobActions" msdata:parentkey="ID" msdata:childkey="JobID" msprop:Generator_UserRelationName="Job_JobActions" msprop:Generator_RelationVarName="relationJob_JobActions" msprop:Generator_UserChildTable="JobActions" msprop:Generator_UserParentTable="Job" msprop:Generator_ParentPropName="JobRow" msprop:Generator_ChildPropName="GetJobActionsRows" />
</xs:appinfo>
</xs:annotation>
</xs:schema>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="0" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:Job" ZOrder="3" X="154" Y="79" Height="124" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="120" />
<Shape ID="DesignTable:JobActions" ZOrder="2" X="390" Y="77" Height="105" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="101" />
</Shapes>
<Connectors>
<Connector ID="DesignRelation:Job_JobActions" ZOrder="1" LineWidth="11">
<RoutePoints>
<Point>
<X>304</X>
<Y>129</Y>
</Point>
<Point>
<X>390</X>
<Y>129</Y>
</Point>
</RoutePoints>
</Connector>
</Connectors>
</DiagramLayout>

View file

@ -0,0 +1,80 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C06932EC-7FF5-420B-A637-BE5802E8B896}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DeviceSchedulerAgent</RootNamespace>
<AssemblyName>DeviceSchedulerAgent</AssemblyName>
<StartupObject>
</StartupObject>
<ApplicationIcon>
</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="DataStorage.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>DataStorage.xsd</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DeviceHandler\DeviceHandler.csproj">
<Project>{292E034F-C3B8-4CED-87DD-479040094118}</Project>
<Name>DeviceHandler</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="DataStorage.xsc">
<DependentUpon>DataStorage.xsd</DependentUpon>
</None>
<None Include="DataStorage.xsd">
<SubType>Designer</SubType>
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>DataStorage.Designer.cs</LastGenOutput>
</None>
<None Include="DataStorage.xss">
<DependentUpon>DataStorage.xsd</DependentUpon>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="clock_run.ico" />
<Content Include="security_agent.ico" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -0,0 +1,338 @@
using System;
using System.IO;
using System.Security.Cryptography;
namespace DeviceSchedulerAgent
{
/// <summary>
/// Summary description for EncryptDecrypt.
/// </summary>
public class EncryptDecrypt
{
public EncryptDecrypt()
{
//
// TODO: Add constructor logic here
//
}
// Encrypt a byte array into a byte array using a key and an IV
public static byte[] Encrypt(byte[] clearData, byte[] Key, byte[] IV)
{
// Create a MemoryStream that is going to accept the encrypted bytes
MemoryStream ms = new MemoryStream();
// Create a symmetric algorithm.
// We are going to use Rijndael because it is strong and available on all platforms.
// You can use other algorithms, to do so substitute the next line with something like
// TripleDES alg = TripleDES.Create();
Rijndael alg = Rijndael.Create();
// Now set the key and the IV.
// We need the IV (Initialization Vector) because the algorithm is operating in its default
// mode called CBC (Cipher Block Chaining). The IV is XORed with the first block (8 byte)
// of the data before it is encrypted, and then each encrypted block is XORed with the
// following block of plaintext. This is done to make encryption more secure.
// There is also a mode called ECB which does not need an IV, but it is much less secure.
alg.Key = Key;
alg.IV = IV;
// Create a CryptoStream through which we are going to be pumping our data.
// CryptoStreamMode.Write means that we are going to be writing data to the stream
// and the output will be written in the MemoryStream we have provided.
CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);
// Write the data and make it do the encryption
cs.Write(clearData, 0, clearData.Length);
// Close the crypto stream (or do FlushFinalBlock).
// This will tell it that we have done our encryption and there is no more data coming in,
// and it is now a good time to apply the padding and finalize the encryption process.
cs.Close();
// Now get the encrypted data from the MemoryStream.
// Some people make a mistake of using GetBuffer() here, which is not the right way.
byte[] encryptedData = ms.ToArray();
return encryptedData;
}
//
//
/// <summary>
/// Encrypt a string into a string using a password
/// Uses Encrypt(byte[], byte[], byte[])
/// </summary>
/// <param name="clearText">The text to encrypt.</param>
/// <param name="Password">The password to use.</param>
/// <returns>An encrypted string.</returns>
public static string Encrypt(string clearText, string Password)
{
// First we need to turn the input string into a byte array.
byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
// Then, we need to turn the password into Key and IV
// We are using salt to make it harder to guess our key using a dictionary attack -
// trying to guess a password by enumerating all possible words.
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
// Now get the key/IV and do the encryption using the function that accepts byte arrays.
// Using PasswordDeriveBytes object we are first getting 32 bytes for the Key
// (the default Rijndael key length is 256bit = 32bytes) and then 16 bytes for the IV.
// IV should always be the block size, which is by default 16 bytes (128 bit) for Rijndael.
// If you are using DES/TripleDES/RC2 the block size is 8 bytes and so should be the IV size.
// You can also read KeySize/BlockSize properties off the algorithm to find out the sizes.
byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));
// Now we need to turn the resulting byte array into a string.
// A common mistake would be to use an Encoding class for that. It does not work
// because not all byte values can be represented by characters.
// We are going to be using Base64 encoding that is designed exactly for what we are
// trying to do.
return Convert.ToBase64String(encryptedData);
}
// Encrypt bytes into bytes using a password
// Uses Encrypt(byte[], byte[], byte[])
public static byte[] Encrypt(byte[] clearData, string Password)
{
// We need to turn the password into Key and IV.
// We are using salt to make it harder to guess our key using a dictionary attack -
// trying to guess a password by enumerating all possible words.
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
// Now get the key/IV and do the encryption using the function that accepts byte arrays.
// Using PasswordDeriveBytes object we are first getting 32 bytes for the Key
// (the default Rijndael key length is 256bit = 32bytes) and then 16 bytes for the IV.
// IV should always be the block size, which is by default 16 bytes (128 bit) for Rijndael.
// If you are using DES/TripleDES/RC2 the block size is 8 bytes and so should be the IV size.
// You can also read KeySize/BlockSize properties off the algorithm to find out the sizes.
return Encrypt(clearData, pdb.GetBytes(32), pdb.GetBytes(16));
}
// Encrypt a file into another file using a password
public static void Encrypt(string fileIn, string fileOut, string Password)
{
// First we are going to open the file streams
FileStream fsIn = new FileStream(fileIn, FileMode.Open, FileAccess.Read);
FileStream fsOut = new FileStream(fileOut, FileMode.OpenOrCreate, FileAccess.Write);
// Then we are going to derive a Key and an IV from the Password and create an algorithm
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
Rijndael alg = Rijndael.Create();
alg.Key = pdb.GetBytes(32);
alg.IV = pdb.GetBytes(16);
// Now create a crypto stream through which we are going to be pumping data.
// Our fileOut is going to be receiving the encrypted bytes.
CryptoStream cs = new CryptoStream(fsOut, alg.CreateEncryptor(), CryptoStreamMode.Write);
// Now will will initialize a buffer and will be processing the input file in chunks.
// This is done to avoid reading the whole file (which can be huge) into memory.
int bufferLen = 4096;
byte[] buffer = new byte[bufferLen];
int bytesRead;
do
{
// read a chunk of data from the input file
bytesRead = fsIn.Read(buffer, 0, bufferLen);
// encrypt it
cs.Write(buffer, 0, bytesRead);
} while(bytesRead != 0);
// close everything
cs.Close(); // this will also close the unrelying fsOut stream
fsIn.Close();
}
// Decrypt a byte array into a byte array using a key and an IV
public static byte[] Decrypt(byte[] cipherData, byte[] Key, byte[] IV)
{
// Create a MemoryStream that is going to accept the decrypted bytes
MemoryStream ms = new MemoryStream();
// Create a symmetric algorithm.
// We are going to use Rijndael because it is strong and available on all platforms.
// You can use other algorithms, to do so substitute the next line with something like
// TripleDES alg = TripleDES.Create();
Rijndael alg = Rijndael.Create();
// Now set the key and the IV.
// We need the IV (Initialization Vector) because the algorithm is operating in its default
// mode called CBC (Cipher Block Chaining). The IV is XORed with the first block (8 byte)
// of the data after it is decrypted, and then each decrypted block is XORed with the previous
// cipher block. This is done to make encryption more secure.
// There is also a mode called ECB which does not need an IV, but it is much less secure.
alg.Key = Key;
alg.IV = IV;
// Create a CryptoStream through which we are going to be pumping our data.
// CryptoStreamMode.Write means that we are going to be writing data to the stream
// and the output will be written in the MemoryStream we have provided.
CryptoStream cs = new CryptoStream(ms, alg.CreateDecryptor(), CryptoStreamMode.Write);
// Write the data and make it do the decryption
cs.Write(cipherData, 0, cipherData.Length);
// Close the crypto stream (or do FlushFinalBlock).
// This will tell it that we have done our decryption and there is no more data coming in,
// and it is now a good time to remove the padding and finalize the decryption process.
cs.Close();
// Now get the decrypted data from the MemoryStream.
// Some people make a mistake of using GetBuffer() here, which is not the right way.
byte[] decryptedData = ms.ToArray();
return decryptedData;
}
/// <summary>
/// Decrypt a string into a string using a password.
/// Uses Decrypt(byte[], byte[], byte[])
/// </summary>
/// <param name="cipherText">The text to decrypt.</param>
/// <param name="Password">The password to use.</param>
/// <returns>A decrypted string.</returns>
public static string Decrypt(string cipherText, string Password)
{
// First we need to turn the input string into a byte array.
// We presume that Base64 encoding was used
byte[] cipherBytes = Convert.FromBase64String(cipherText);
// Then, we need to turn the password into Key and IV
// We are using salt to make it harder to guess our key using a dictionary attack -
// trying to guess a password by enumerating all possible words.
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
// Now get the key/IV and do the decryption using the function that accepts byte arrays.
// Using PasswordDeriveBytes object we are first getting 32 bytes for the Key
// (the default Rijndael key length is 256bit = 32bytes) and then 16 bytes for the IV.
// IV should always be the block size, which is by default 16 bytes (128 bit) for Rijndael.
// If you are using DES/TripleDES/RC2 the block size is 8 bytes and so should be the IV size.
// You can also read KeySize/BlockSize properties off the algorithm to find out the sizes.
byte[] decryptedData = Decrypt(cipherBytes, pdb.GetBytes(32), pdb.GetBytes(16));
// Now we need to turn the resulting byte array into a string.
// A common mistake would be to use an Encoding class for that. It does not work
// because not all byte values can be represented by characters.
// We are going to be using Base64 encoding that is designed exactly for what we are
// trying to do.
return System.Text.Encoding.Unicode.GetString(decryptedData);
}
// Decrypt bytes into bytes using a password
// Uses Decrypt(byte[], byte[], byte[])
public static byte[] Decrypt(byte[] cipherData, string Password)
{
// We need to turn the password into Key and IV.
// We are using salt to make it harder to guess our key using a dictionary attack -
// trying to guess a password by enumerating all possible words.
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
// Now get the key/IV and do the Decryption using the function that accepts byte arrays.
// Using PasswordDeriveBytes object we are first getting 32 bytes for the Key
// (the default Rijndael key length is 256bit = 32bytes) and then 16 bytes for the IV.
// IV should always be the block size, which is by default 16 bytes (128 bit) for Rijndael.
// If you are using DES/TripleDES/RC2 the block size is 8 bytes and so should be the IV size.
// You can also read KeySize/BlockSize properties off the algorithm to find out the sizes.
return Decrypt(cipherData, pdb.GetBytes(32), pdb.GetBytes(16));
}
// Decrypt a file into another file using a password
public static void Decrypt(string fileIn, string fileOut, string Password)
{
// First we are going to open the file streams
FileStream fsIn = new FileStream(fileIn, FileMode.Open, FileAccess.Read);
FileStream fsOut = new FileStream(fileOut, FileMode.OpenOrCreate, FileAccess.Write);
// Then we are going to derive a Key and an IV from the Password and create an algorithm
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
Rijndael alg = Rijndael.Create();
alg.Key = pdb.GetBytes(32);
alg.IV = pdb.GetBytes(16);
// Now create a crypto stream through which we are going to be pumping data.
// Our fileOut is going to be receiving the Decrypted bytes.
CryptoStream cs = new CryptoStream(fsOut, alg.CreateDecryptor(), CryptoStreamMode.Write);
// Now will will initialize a buffer and will be processing the input file in chunks.
// This is done to avoid reading the whole file (which can be huge) into memory.
int bufferLen = 4096;
byte[] buffer = new byte[bufferLen];
int bytesRead;
do
{
// read a chunk of data from the input file
bytesRead = fsIn.Read(buffer, 0, bufferLen);
// Decrypt it
cs.Write(buffer, 0, bytesRead);
} while(bytesRead != 0);
// close everything
cs.Close(); // this will also close the unrelying fsOut stream
fsIn.Close();
}
}
}

View file

@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
using System.Text;
using DeviceHandler;
using System.Data;
using System.Windows.Forms;
namespace DeviceSchedulerAgent
{
class Program
{
static void Main(string[] args)
{
//If no arguments are supplied then exit.
if (args.Length == 0)
{
MessageBox.Show("Inga argument har angivits!");
return;
}
try
{
//Makesure that we have all data loaded.
DataStorage data = LoadData();
//Get the JobID.
int jobID = Convert.ToInt32(args[0]);
DataStorage.JobRow job = data.Job.FindByID(jobID);
if (job != null)
{
DeviceHandler.Handler handler = new Handler();
//Load devices.
handler.Load();
//Go through each action and execute it.
foreach (DataStorage.JobActionsRow action in job.GetJobActionsRows())
{
Device item = handler.Find(action.DeviceID);
if (action.TurnOn)
handler.TurnOnWithDelay(item);
else
handler.TurnOffWithDelay(item);
}
}
else
{
MessageBox.Show("Programmet kunde inte hitta något jobb.");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private static DataStorage LoadData()
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
path = System.IO.Path.Combine(path, "Jobs.dat");
DataStorage data = new DataStorage();
if (System.IO.File.Exists(path))
{
data.ReadXml(path, XmlReadMode.ReadSchema);
}
return data;
}
}
}

View file

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("DeviceSchedulerAgent")]
[assembly: AssemblyDescription("Executer of scheduled devices.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Telldus Technologies")]
[assembly: AssemblyProduct("DeviceSchedulerAgent")]
[assembly: AssemblyCopyright("Copyright © Telldus Technologies 2007")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("7ec95bd9-249b-45f4-8426-a89da7155be2")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("2007.1.*")]
[assembly: AssemblyFileVersion("2007.1.*")]

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB