From: <do...@us...> - 2008-08-26 11:38:52
|
Revision: 2092 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2092&view=rev Author: dot-i Date: 2008-08-26 11:38:47 +0000 (Tue, 26 Aug 2008) Log Message: ----------- Added ForTheRecord.RecorderTuners.MediaPortalTvServer and all needed referenced assemblies (For The Record 1.2.1). Added Paths: ----------- trunk/plugins/ForTheRecord/ForTheRecord.MPPlugins.sln trunk/plugins/ForTheRecord/ForTheRecord.MPPlugins.suo trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.Designer.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.resx trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/ForTheRecord.RecorderTuners.MediaPortalTvServer.csproj trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/MediaPortalRecorderTunerService.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/PostBuild.cmd trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/Properties/ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/Properties/AssemblyInfo.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/RecordingThread.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SettingName.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SetupForm.Designer.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SetupForm.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SetupForm.resx trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SyncEpgThread.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/TvServerPlugin.cs trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/Utility.cs trunk/plugins/ForTheRecord/ReferencedAssemblies/Core.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/Databases.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/Dialogs.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/ForTheRecord.Entities.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/ForTheRecord.RecorderTuners.Common.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/ForTheRecord.ServiceAgents.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/ForTheRecord.ServiceContracts.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/Gentle.Common.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/Gentle.Framework.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/PluginBase.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/SetupControls.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/TVDatabase.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/TvBusinessLayer.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/TvControl.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/TvLibrary.Interfaces.dll trunk/plugins/ForTheRecord/ReferencedAssemblies/Utils.dll Added: trunk/plugins/ForTheRecord/ForTheRecord.MPPlugins.sln =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.MPPlugins.sln (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.MPPlugins.sln 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,27 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "RecorderTuner Server Plugin", "RecorderTuner Server Plugin", "{84E6B02A-0674-4406-911E-88CAB7CE17E6}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GUI Client Plugin", "GUI Client Plugin", "{2A217BB8-A9FF-4013-ACAC-B1D1EBB39349}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ForTheRecord.RecorderTuners.MediaPortalTvServer", "ForTheRecord.RecorderTuners.MediaPortalTvServer\ForTheRecord.RecorderTuners.MediaPortalTvServer.csproj", "{6CF22F4E-FFFD-448D-A1A8-2156CB0133ED}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6CF22F4E-FFFD-448D-A1A8-2156CB0133ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6CF22F4E-FFFD-448D-A1A8-2156CB0133ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6CF22F4E-FFFD-448D-A1A8-2156CB0133ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6CF22F4E-FFFD-448D-A1A8-2156CB0133ED}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {6CF22F4E-FFFD-448D-A1A8-2156CB0133ED} = {84E6B02A-0674-4406-911E-88CAB7CE17E6} + EndGlobalSection +EndGlobal Property changes on: trunk/plugins/ForTheRecord/ForTheRecord.MPPlugins.suo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.Designer.cs =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.Designer.cs (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.Designer.cs 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,128 @@ +namespace ForTheRecord.RecorderTuners.MediaPortalTvServer +{ + partial class CreateShareForm + { + /// <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._pathLabel = new System.Windows.Forms.Label(); + this._localPathLabel = new System.Windows.Forms.Label(); + this._shareLabel = new System.Windows.Forms.Label(); + this._shareNameTextBox = new System.Windows.Forms.TextBox(); + this._okButton = new System.Windows.Forms.Button(); + this._cancelButton = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // _pathLabel + // + this._pathLabel.AutoSize = true; + this._pathLabel.Location = new System.Drawing.Point(12, 15); + this._pathLabel.Name = "_pathLabel"; + this._pathLabel.Size = new System.Drawing.Size(60, 13); + this._pathLabel.TabIndex = 0; + this._pathLabel.Text = "Local path:"; + // + // _localPathLabel + // + this._localPathLabel.AutoEllipsis = true; + this._localPathLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this._localPathLabel.Location = new System.Drawing.Point(85, 15); + this._localPathLabel.Name = "_localPathLabel"; + this._localPathLabel.Size = new System.Drawing.Size(297, 20); + this._localPathLabel.TabIndex = 1; + // + // _shareLabel + // + this._shareLabel.AutoSize = true; + this._shareLabel.Location = new System.Drawing.Point(12, 41); + this._shareLabel.Name = "_shareLabel"; + this._shareLabel.Size = new System.Drawing.Size(67, 13); + this._shareLabel.TabIndex = 2; + this._shareLabel.Text = "Share name:"; + // + // _shareNameTextBox + // + this._shareNameTextBox.Location = new System.Drawing.Point(85, 38); + this._shareNameTextBox.Name = "_shareNameTextBox"; + this._shareNameTextBox.Size = new System.Drawing.Size(297, 20); + this._shareNameTextBox.TabIndex = 3; + // + // _okButton + // + this._okButton.Location = new System.Drawing.Point(226, 72); + this._okButton.Name = "_okButton"; + this._okButton.Size = new System.Drawing.Size(75, 23); + this._okButton.TabIndex = 4; + this._okButton.Text = "OK"; + this._okButton.UseVisualStyleBackColor = true; + this._okButton.Click += new System.EventHandler(this._okButton_Click); + // + // _cancelButton + // + this._cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this._cancelButton.Location = new System.Drawing.Point(307, 72); + this._cancelButton.Name = "_cancelButton"; + this._cancelButton.Size = new System.Drawing.Size(75, 23); + this._cancelButton.TabIndex = 5; + this._cancelButton.Text = "Cancel"; + this._cancelButton.UseVisualStyleBackColor = true; + // + // CreateShareForm + // + this.AcceptButton = this._okButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this._cancelButton; + this.ClientSize = new System.Drawing.Size(394, 104); + this.Controls.Add(this._cancelButton); + this.Controls.Add(this._okButton); + this.Controls.Add(this._shareNameTextBox); + this.Controls.Add(this._shareLabel); + this.Controls.Add(this._localPathLabel); + this.Controls.Add(this._pathLabel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "CreateShareForm"; + this.ShowIcon = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Create UNC Share"; + this.Load += new System.EventHandler(this.CreateShareForm_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label _pathLabel; + private System.Windows.Forms.Label _localPathLabel; + private System.Windows.Forms.Label _shareLabel; + private System.Windows.Forms.TextBox _shareNameTextBox; + private System.Windows.Forms.Button _okButton; + private System.Windows.Forms.Button _cancelButton; + } +} \ No newline at end of file Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.cs =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.cs (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.cs 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace ForTheRecord.RecorderTuners.MediaPortalTvServer +{ + public partial class CreateShareForm : Form + { + public CreateShareForm() + { + InitializeComponent(); + } + + private string _localPath; + + public string LocalPath + { + get { return _localPath; } + set { _localPath = value; } + } + + private void CreateShareForm_Load(object sender, EventArgs e) + { + _localPathLabel.Text = _localPath; + } + + private void _okButton_Click(object sender, EventArgs e) + { + if (_shareNameTextBox.Text.IndexOfAny(System.IO.Path.GetInvalidPathChars()) >= 0) + { + MessageBox.Show(this, "Invalid share name, don't use special characters.", null, MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + try + { + if (Common.Utility.CreateUncShare(_shareNameTextBox.Text.Trim(), _localPath)) + { + this.DialogResult = DialogResult.OK; + Close(); + } + else + { + MessageBox.Show(this, "Failed to create share, name not unique?", null, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + catch (Exception ex) + { + MessageBox.Show(this, ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } +} Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.resx =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.resx (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/CreateShareForm.resx 2008-08-26 11:38:47 UTC (rev 2092) @@ -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> \ No newline at end of file Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/ForTheRecord.RecorderTuners.MediaPortalTvServer.csproj =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/ForTheRecord.RecorderTuners.MediaPortalTvServer.csproj (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/ForTheRecord.RecorderTuners.MediaPortalTvServer.csproj 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,146 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.30729</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{6CF22F4E-FFFD-448D-A1A8-2156CB0133ED}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>ForTheRecord.RecorderTuners.MediaPortalTvServer</RootNamespace> + <AssemblyName>ForTheRecord.RecorderTuners.MediaPortalTvServer</AssemblyName> + <SccProjectName> + </SccProjectName> + <SccLocalPath> + </SccLocalPath> + <SccAuxPath> + </SccAuxPath> + <SccProvider> + </SccProvider> + <FileUpgradeFlags> + </FileUpgradeFlags> + <OldToolsVersion>2.0</OldToolsVersion> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + <TargetFrameworkVersion>v3.0</TargetFrameworkVersion> + </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="ForTheRecord.Entities, Version=1.2.1.0, Culture=neutral, PublicKeyToken=a9a5dfc20b8d6175, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\ForTheRecord.Entities.dll</HintPath> + </Reference> + <Reference Include="ForTheRecord.RecorderTuners.Common, Version=1.2.1.0, Culture=neutral, PublicKeyToken=a9a5dfc20b8d6175, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\ForTheRecord.RecorderTuners.Common.dll</HintPath> + </Reference> + <Reference Include="ForTheRecord.ServiceAgents, Version=1.2.1.0, Culture=neutral, PublicKeyToken=a9a5dfc20b8d6175, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\ForTheRecord.ServiceAgents.dll</HintPath> + </Reference> + <Reference Include="ForTheRecord.ServiceContracts, Version=1.2.1.0, Culture=neutral, PublicKeyToken=a9a5dfc20b8d6175, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\ForTheRecord.ServiceContracts.dll</HintPath> + </Reference> + <Reference Include="Gentle.Common, Version=1.2.9.1285, Culture=neutral, PublicKeyToken=80b5de62e27be49b"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\Gentle.Common.dll</HintPath> + </Reference> + <Reference Include="Gentle.Framework, Version=1.2.9.1286, Culture=neutral, PublicKeyToken=80b5de62e27be49b"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\Gentle.Framework.dll</HintPath> + </Reference> + <Reference Include="PluginBase, Version=0.9.2.16175, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\PluginBase.dll</HintPath> + </Reference> + <Reference Include="SetupControls, Version=0.9.2.16173, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\SetupControls.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="TvBusinessLayer, Version=0.9.2.16193, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\TvBusinessLayer.dll</HintPath> + </Reference> + <Reference Include="TvControl, Version=0.9.2.16194, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\TvControl.dll</HintPath> + </Reference> + <Reference Include="TVDatabase, Version=0.9.2.16193, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\TVDatabase.dll</HintPath> + </Reference> + <Reference Include="TvLibrary.Interfaces, Version=0.9.2.16192, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\ReferencedAssemblies\TvLibrary.Interfaces.dll</HintPath> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="CreateShareForm.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="CreateShareForm.Designer.cs"> + <DependentUpon>CreateShareForm.cs</DependentUpon> + </Compile> + <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="RecordingThread.cs" /> + <Compile Include="SettingName.cs" /> + <Compile Include="SetupForm.cs"> + <SubType>UserControl</SubType> + </Compile> + <Compile Include="SetupForm.Designer.cs"> + <DependentUpon>SetupForm.cs</DependentUpon> + </Compile> + <Compile Include="MediaPortalRecorderTunerService.cs" /> + <Compile Include="TvServerPlugin.cs" /> + <Compile Include="SyncEpgThread.cs" /> + <Compile Include="Utility.cs" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="CreateShareForm.resx"> + <DependentUpon>CreateShareForm.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="SetupForm.resx"> + <DependentUpon>SetupForm.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <None Include="PostBuild.cmd" /> + </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> + --> + <PropertyGroup> + <PostBuildEvent>$(ProjectDir)PostBuild.cmd $(TargetDir) $(TargetPath) $(ConfigurationName) +</PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/MediaPortalRecorderTunerService.cs =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/MediaPortalRecorderTunerService.cs (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/MediaPortalRecorderTunerService.cs 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,287 @@ +/* + * Copyright (C) 2007-2008 ForTheRecord + * http://www.4therecord.eu + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ +using System; +using System.Collections.Generic; +using System.Text; +using System.Collections; +using System.Reflection; +using System.IO; +using System.ServiceModel; +using System.Diagnostics; +using System.Globalization; + +using Gentle.Framework; +using TvControl; +using TvDatabase; +using TvLibrary.Interfaces; +using TvLibrary.Log; + +using ForTheRecord.Entities; +using ForTheRecord.ServiceContracts; +using ForTheRecord.ServiceAgents; +using ForTheRecord.RecorderTuners.Common; + +namespace ForTheRecord.RecorderTuners.MediaPortalTvServer +{ + [ServiceBehavior( +#if DEBUG + IncludeExceptionDetailInFaults = true, +#endif + ConcurrencyMode = ConcurrencyMode.Reentrant, + InstanceContextMode = InstanceContextMode.Single)] + public class MediaPortalRecorderTunerService : ThreadedRecorderTunerService<RecordingThread> + { + protected override string Name + { + get { return "MediaPortal TV Server"; } + } + + public override string AllocateCard(Guid tvChannelId, string tvChannelName, CardChannelAllocation[] alreadyAllocated) + { + try + { + // + // Find the channel in MediaPortal (match by DisplayName) and get all the + // channel's tuning details and the cards it is mapped to. + // + Channel channel; + IList tuningDetails; + List<Card> availableCards = GetCardsForChannel(tvChannelName, out channel, out tuningDetails); + + // Sort the cards by priority. + availableCards.Sort(delegate(Card c1, Card c2) { return -c1.Priority.CompareTo(c2.Priority); }); + + // + // Now remove all card that were previously allocated. + // + foreach (CardChannelAllocation allocation in alreadyAllocated) + { + Card cardToRemove = null; + foreach (Card card in availableCards) + { + if (card.DevicePath == allocation.CardId) + { + // + // This card was already allocated before, but we may be able to reuse the card. + // So first, let's check if the if the card (and CAM) allow this. + // + // Note: "!ChannelAlreadyAllocatedOn(alreadyAllocated, allocation.CardId, tvChannelId)" was + // not added since TV Server can record the same channel several times on the same transponder. + if (channel.FreeToAir + || CountNumTimesAllocated(alreadyAllocated, allocation.CardId) < card.DecryptLimit) + { + // Get the previously allocated channel's tuning details and let's check if the + // channel we want is on the same transponder as that channel. + IList allocatedTuningDetails; + Channel allocatedChannel = GetChannelAndTuningByDisplayName(allocation.TvChannelName, out allocatedTuningDetails); + if (allocatedChannel != null) + { + foreach(TuningDetail tuning in tuningDetails) + { + foreach(TuningDetail allocatedTuning in allocatedTuningDetails) + { + if (tuning.ChannelType >= 2 && tuning.ChannelType <= 4 // DVB-x channel? + && tuning.ChannelType == allocatedTuning.ChannelType + && tuning.Frequency == allocatedTuning.Frequency + && tuning.Symbolrate == allocatedTuning.Symbolrate + && tuning.Polarisation == allocatedTuning.Polarisation + && tuning.Bandwidth == allocatedTuning.Bandwidth + && tuning.Modulation == allocatedTuning.Modulation) + { + // Same transponder, so we can re-use the card. + return allocation.CardId; + } + } + } + } + } + cardToRemove = card; + break; + } + } + if (cardToRemove != null) + { + availableCards.Remove(cardToRemove); + } + } + + // + // If there's still at least one card available, return the card + // with the highest priority. + // + if (availableCards.Count > 0) + { + return availableCards[0].DevicePath; + } + } + catch (Exception ex) + { + Log(TraceEventType.Error, ex.Message); + } + return null; + } + + public override bool StartRecording(string tvSchedulerHostName, int tvSchedulerTcpPort, CardChannelAllocation channelAllocation, DateTime startTime, DateTime stopTime, UpcomingProgram recordingProgram) + { + bool result = false; + + Card recordOnCard = GetCardByDevicePath(channelAllocation.CardId); + if (recordOnCard != null) + { + Channel channel = GetChannelByDisplayName(channelAllocation.TvChannelName); + if (channel != null) + { + result = this.RecordingThreads.StartNewThread(new RecordingThread(this.RecorderTunerId, + tvSchedulerHostName, tvSchedulerTcpPort, channelAllocation, startTime, stopTime, + recordingProgram, recordOnCard, channel)); + if (!result) + { + Log(TraceEventType.Error, "{0} - Already recording {1}", this.Name, recordingProgram.CreateProgramTitle()); + } + } + else + { + Log(TraceEventType.Error, "{0} - Channel {1} not found", this.Name, channelAllocation.TvChannelName); + } + } + else + { + Log(TraceEventType.Error, "{0} - Card {1} not found", this.Name, channelAllocation.CardId); + } + + return result; + } + + public override string[] GetRecordingShares() + { + List<string> shares = new List<string>(); + + List<Card> cards = Utility.GetAllCards(); + foreach (Card card in cards) + { + if (!String.IsNullOrEmpty(card.RecordingFolder)) + { + string uncRecordingFolder = Common.ShareExplorer.GetUncPathForLocalPath(card.RecordingFolder); + shares.Add(String.IsNullOrEmpty(uncRecordingFolder) ? card.RecordingFolder : uncRecordingFolder); + } + } + + return shares.ToArray(); + } + + protected override void OnWriteLog(TraceEventType severity, string message) + { + if (severity == TraceEventType.Error) + { + TvLibrary.Log.Log.Error(message); + } + else + { + TvLibrary.Log.Log.Write(message); + } + } + + #region Private Methods + + private List<Card> GetCardsForChannel(string tvChannelName, out Channel channel, out IList tuningDetails) + { + List<Card> availableCards = new List<Card>(); + + channel = GetChannelAndTuningByDisplayName(tvChannelName, out tuningDetails); + if (channel != null + && tuningDetails.Count > 0) + { + // + // Now build a list of all available cards by getting a list of all the cards that + // can are mapped to that card. + // + IList allCards = Card.ListAll(); + foreach (Card card in allCards) + { + if (!availableCards.Contains(card) + && card.Enabled) + { + ChannelMap channelMap = null; + foreach (ChannelMap map in channel.ReferringChannelMap()) + { + if (map.ReferencedCard().DevicePath == card.DevicePath) + { + channelMap = map; + break; + } + } + if (channelMap != null) + { + availableCards.Add(card); + } + } + } + } + return availableCards; + } + + private static Card GetCardByDevicePath(string devicePath) + { + IList allCards = Card.ListAll(); + foreach (Card card in allCards) + { + if (card.DevicePath == devicePath) + { + return card; + } + } + return null; + } + + private Channel GetChannelAndTuningByDisplayName(string displayName, out IList tuningDetails) + { + Channel channel = GetChannelByDisplayName(displayName); + if (channel != null) + { + tuningDetails = channel.ReferringTuningDetail(); + return channel; + } + tuningDetails = new List<TuningDetail>(); + return null; + } + + private Channel GetChannelByDisplayName(string displayName) + { + SqlBuilder sb = new SqlBuilder(StatementType.Select, typeof(Channel)); + sb.AddConstraint(Operator.Equals, "displayName", displayName); + SqlResult result = Broker.Execute(sb.GetStatement()); + if (result.Rows.Count > 0) + { + IList channels = ObjectFactory.GetCollection(typeof(Channel), result); + foreach (Channel channel in channels) + { + if (channel.VisibleInGuide) + { + return channel; + } + } + } + return null; + } + + #endregion + } +} Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/PostBuild.cmd =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/PostBuild.cmd (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/PostBuild.cmd 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,20 @@ +if %3 == Release goto reallyEnd + set pluginDir="C:\Program Files\Team MediaPortal\MediaPortal TV Server\Plugins" +IF NOT EXIST %pluginDir% goto end + net stop TvService + copy %1ForTheRecord.ServiceContracts.dll %pluginDir% + copy %1ForTheRecord.ServiceAgents.dll %pluginDir% + copy %1ForTheRecord.Entities.dll %pluginDir% + copy %1ForTheRecord.RecorderTuners.Common.dll %pluginDir% + copy %2 %pluginDir% +:end + set pluginDir="C:\Program Files (x86)\Team MediaPortal\MediaPortal TV Server\Plugins" +IF NOT EXIST %pluginDir% goto reallyEnd + net stop TvService + copy %1ForTheRecord.ServiceContracts.dll %pluginDir% + copy %1ForTheRecord.ServiceAgents.dll %pluginDir% + copy %1ForTheRecord.Entities.dll %pluginDir% + copy %1ForTheRecord.RecorderTuners.Common.dll %pluginDir% + copy %2 %pluginDir% +:reallyEnd + exit 0 Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/Properties/AssemblyInfo.cs 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,36 @@ +using System; +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("ForTheRecord.RecorderTuners.MediaPortalTvServer")] +[assembly: AssemblyDescription("For The Record MediaPortal TV Server plugin")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ForTheRecord.RecorderTuners.MediaPortalTvServer")] +[assembly: AssemblyCopyright("Copyright © ForTheRecord 2007-2008")] +[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("59900cc9-9229-46a7-8a35-836110f9fbc1")] + +// 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(ForTheRecord.Entities.Constants.AssemblyVersion)] +[assembly: AssemblyFileVersion(ForTheRecord.Entities.Constants.AssemblyVersion)] Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/RecordingThread.cs =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/RecordingThread.cs (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/RecordingThread.cs 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,234 @@ +/* + * Copyright (C) 2007-2008 ForTheRecord + * http://www.4therecord.eu + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ +using System; +using System.Collections.Generic; +using System.Text; +using System.IO; +using System.Threading; +using System.Diagnostics; +using System.Globalization; + +using TvLibrary.Interfaces; +using TvEngine.Events; +using TvLibrary.Log; +using TvDatabase; +using TvControl; +using Gentle.Framework; + +using ForTheRecord.Entities; +using ForTheRecord.ServiceAgents; +using ForTheRecord.RecorderTuners.Common; + +namespace ForTheRecord.RecorderTuners.MediaPortalTvServer +{ + public class RecordingThread : RecordingThreadBase + { + private static object _startRecordingLock = new object(); + + private Card _recordOnCard; + private Channel _channel; + + public RecordingThread(Guid recorderTunerId, string tvSchedulerHostName, int tvSchedulerTcpPort, CardChannelAllocation channelAllocation, + DateTime startTime, DateTime stopTime, UpcomingProgram recordingProgram, Card recordOnCard, Channel channel) + : base(recorderTunerId, tvSchedulerHostName, tvSchedulerTcpPort, channelAllocation, startTime, stopTime, recordingProgram, true) + { + _recordOnCard = recordOnCard; + _channel = channel; + } + + #region Overrides + + protected override TimeSpan? FileSizeCheckerInterval + { + get + { + return new TimeSpan(0, 5, 0); + } + } + + private User _tve3User; + private string _tve3RecordingFileName; + + protected override bool OnPrepareRecording(RecorderTunerCallbackServiceAgent callbackAgent, ref string errorMessage) + { + DeleteAllMediaPortalSchedules(); + + string userName = String.Format(CultureInfo.InvariantCulture, "ForTheRecord{0}", Thread.CurrentThread.ManagedThreadId); + _tve3User = new User(userName, true, _recordOnCard.IdCard); + _tve3User.IdChannel = _channel.IdChannel; + _tve3User.SubChannel = -1; + + return EnsureCardFree(ref errorMessage); + } + + protected override string OnStartRecording(RecorderTunerCallbackServiceAgent callbackAgent, ref string errorMessage) + { + string fileName = Path.Combine(_recordOnCard.RecordingFolder, + Common.Utility.BuildRecordingBaseFileName(null, this.RecordingProgram)); + string extension = (_recordOnCard.RecordingFormat == 0) ? ".ts" : ".mpg"; + _tve3RecordingFileName = Common.Utility.GetFreeFileName(fileName, extension); + + string uncRecordingFolder = Common.ShareExplorer.GetUncPathForLocalPath(Path.GetDirectoryName(_tve3RecordingFileName)); + if (String.IsNullOrEmpty(uncRecordingFolder)) + { + errorMessage = "Failed to convert '" + Path.GetDirectoryName(_tve3RecordingFileName) + "' to UNC path, please add required share"; + return null; + } + + if (!EnsureCardFree(ref errorMessage)) + { + return null; + } + + IChannel tuningChannel = Utility.FindTuningChannelOnCard(_channel, _recordOnCard.IdCard); + if (tuningChannel == null) + { + errorMessage = "Failed to find tuning details for channel " + _channel.DisplayName; + return null; + } + + // Make sure only one thread can tune and start a recording at the same time. + lock (_startRecordingLock) + { + if (TvServerPlugin.TvController.Tune(ref _tve3User, tuningChannel, _channel.IdChannel) != TvResult.Succeeded) + { + errorMessage = "Failed to tune to channel " + _channel.DisplayName; + return null; + } + + if (!TvServerPlugin.TvController.StartRecording(ref _tve3User, ref _tve3RecordingFileName, false, 0)) + { + errorMessage = "TV Server failed to start recording on channel " + _channel.DisplayName; + return null; + } + } + + return Path.Combine(uncRecordingFolder, Path.GetFileName(_tve3RecordingFileName)); + } + + protected override bool OnCheckRecordingActive() + { + // IMPORTANT: disabled the code below, for some reason this is *not* working! + // If _tve3User is still null, we are in the prepare phase, but we also + // consider this as good, the file will (as far as we know) still be recorded. + //return (_tve3User == null || TvServerPlugin.TvController.IsRecording(ref _tve3User)); + return true; + } + + protected override bool OnStopRecording(RecorderTunerCallbackServiceAgent callbackAgent, bool abort) + { + if (_tve3User != null) + { + if (StopMediaPortalRecording(_tve3User)) + { + _tve3User = null; + return true; + } + } + return false; + } + + protected override void OnError() + { + if (_tve3User != null + && TvServerPlugin.TvController.IsRecording(ref _tve3User)) + { + StopMediaPortalRecording(_tve3User); + } + } + + protected override void OnWriteLog(TraceEventType severity, string message) + { + if (severity == TraceEventType.Error) + { + Log.Error(message); + } + else + { + Log.Write(message); + } + } + + #endregion + + #region Private Methods + + private bool EnsureCardFree(ref string errorMessage) + { + User[] cardUsers = TvServerPlugin.TvController.GetUsersForCard(_recordOnCard.IdCard); + foreach (User cardUser in cardUsers) + { + if (!cardUser.Name.StartsWith("ForTheRecord")) + { + User tmpUser = cardUser; + if (TvServerPlugin.TvController.IsRecording(ref tmpUser)) + { + if (!TvServerPlugin.TvController.StopRecording(ref tmpUser)) + { + errorMessage = "Failed to stop recording on channel " + _channel.DisplayName; + return false; + } + } + else if (TvServerPlugin.TvController.IsTimeShifting(ref tmpUser)) + { + if (!TvServerPlugin.TvController.StopTimeShifting(ref tmpUser, TvStoppedReason.RecordingStarted)) + { + errorMessage = "Failed to stop timeshifting on channel " + _channel.DisplayName; + return false; + } + } + } + } + return true; + } + + private static void DeleteAllMediaPortalSchedules() + { + try + { + foreach (Schedule schedule in Schedule.ListAll()) + { + schedule.Delete(); + } + } + catch { } + } + + private static bool StopMediaPortalRecording(User tve3User) + { + for (int count = 0; count < 60; count++) + { + try + { + if (TvServerPlugin.TvController.StopRecording(ref tve3User)) + { + return true; + } + } + catch { } + Thread.Sleep(250); + } + return false; + } + + #endregion + } +} Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SettingName.cs =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SettingName.cs (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SettingName.cs 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ForTheRecord.RecorderTuners.MediaPortalTvServer +{ + internal static class SettingName + { + public const string ServerName = "ForTheRecord_ServerName"; + public const string Port = "ForTheRecord_Port"; + public const string ResetTvServerOnResume = "ForTheRecord_ResetTvServerOnResume"; + public const string EpgSyncOn = "ForTheRecord_EpgSyncOn"; + public const string EpgSyncAutoCreateChannels = "ForTheRecord_EpgSyncAutoCreateChannels"; + public const string EpgSyncAllHours = "ForTheRecord_EpgSyncAllHours"; + public const string RecorderTunerTcpPort = "ForTheRecord_RecorderTunerTcpPort"; + } +} Added: trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SetupForm.Designer.cs =================================================================== --- trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SetupForm.Designer.cs (rev 0) +++ trunk/plugins/ForTheRecord/ForTheRecord.RecorderTuners.MediaPortalTvServer/SetupForm.Designer.cs 2008-08-26 11:38:47 UTC (rev 2092) @@ -0,0 +1,612 @@ +namespace ForTheRecord.RecorderTuners.MediaPortalTvServer +{ + + partial class SetupForm + { + /// <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.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetupForm)); + this._tvSchedulerGroupBox = new System.Windows.Forms.GroupBox(); + this._connectButton = new System.Windows.Forms.Button(); + this._portNumericUpDown = new System.Windows.Forms.NumericUpDown(); + this._tcpPortLabel = new System.Windows.Forms.Label(); + this._restartTcpLabel = new System.Windows.Forms.Label(); + this._serverTextBox = new System.Windows.Forms.TextBox(); + this._pluginTcpNumericUpDown = new System.Windows.Forms.NumericUpDown(); + this._serverLabel = new System.Windows.Forms.Label(); + this._pluginTcpLabel = new System.Windows.Forms.Label(); + this._channelMappingGroupBox = new System.Windows.Forms.GroupBox(); + this._channelsPanel = new System.Windows.Forms.Panel(); + this._refreshChannelsButton = new System.Windows.Forms.Button(); + this._channelsDataGridView = new System.Windows.Forms.DataGridView(); + this._tvSchedulerChannelColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this._mediaPortalChannelColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this._channelItemsBindingSource = new System.Windows.Forms.BindingSource(this.components); + this._notConnectedPanel = new System.Windows.Forms.Panel(); + this._notConnectedLabel = new System.Windows.Forms.Label(); + this._generalGroupBox = new System.Windows.Forms.GroupBox(); + this._createUncShareButton = new System.Windows.Forms.Button(); + this._refreshUncButton = new System.Windows.Forms.Button(); + this._uncPathsDataGridView = new System.Windows.Forms.DataGridView(); + this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this._uncPathsBindingSource = new System.Windows.Forms.BindingSource(this.components); + this._syncInfoLabel = new System.Windows.Forms.Label(); + this._hoursLabel = new System.Windows.Forms.Label(); + this._allProgramsHoursNumericUpDown = new System.Windows.Forms.NumericUpDown(); + this._allProgramsEveryLabel = new System.Windows.Forms.Label(); + this._syncTve3EpgcheckBox = new System.Windows.Forms.CheckBox(); + this._epgGroupBox = new System.Windows.Forms.GroupBox(); + this._epgAutoCreateChannelsCheckBox = new System.Windows.Forms.CheckBox(); + this._tabControl = new System.Windows.Forms.TabControl(); + this._configTabPage = new System.Windows.Forms.TabPage(); + this._powerGroupBox = new System.Windows.Forms.GroupBox(); + this._restartOnResumeCheckBox = new System.Windows.Forms.CheckBox(); + this._channelsTabPage = new System.Windows.Forms.TabPage(); + this._tvSchedulerGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this._portNumericUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this._pluginTcpNumericUpDown)).BeginInit(); + this._channelMappingGroupBox.SuspendLayout(); + this._channelsPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this._channelsDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this._channelItemsBindingSource)).BeginInit(); + this._notConnectedPanel.SuspendLayout(); + this._generalGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this._uncPathsDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this._uncPathsBindingSource)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this._allProgramsHoursNumericUpDown)).BeginInit(); + this._epgGroupBox.SuspendLayout(); + this._tabControl.SuspendLayout(); + this._configTabPage.SuspendLayout(); + this._powerGroupBox.SuspendLayout(); + this._channelsTabPage.SuspendLayout(); + this.SuspendLayout(); + // + // _tvSchedulerGroupBox + // + this._tvSchedulerGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this._tvSchedulerGroupBox.Controls.Add(this._connectButton); + this._tvSchedulerGroupBox.Controls.Add(this._portNumericUpDown); + this._tvSchedulerGroupBox.Controls.Add(this._tcpPortLabel); + this._tvSchedulerGroupBox.Cont... [truncated message content] |