}\r
}\r
\r
- public void OpenFile(FileInfo fileInfo) {\r
+ public void OpenFile(FileInfo fileInfo, bool redefineSegments) {\r
logger.Debug("Open {0}", fileInfo.FullName);\r
\r
if (m_play != null)\r
logger.Error(e);\r
}\r
}\r
- model.IsRedefineSegments = false;\r
+ model.IsRedefineSegments = redefineSegments;\r
\r
\r
//for (int i = 0; i < 100; i++) {\r
private void Form1_DragDrop(object sender, DragEventArgs e) {\r
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);\r
FileInfo fileInfo = new FileInfo(files[0]);\r
- OpenFile(fileInfo);\r
+ OpenFile(fileInfo, false);\r
}\r
\r
private void panel1_MouseDown(object sender, MouseEventArgs e) {\r
if (arguments.Length > 1) {\r
FileInfo fi = new FileInfo(arguments[1]);\r
if (fi.Exists)\r
- OpenFile(fi);\r
+ OpenFile(fi, false);\r
}\r
}\r
\r
private void menuOpenFile_Click(object sender, EventArgs e) {\r
openFileDialogOpened = true;\r
if (openFileDialog.ShowDialog() == DialogResult.OK)\r
- OpenFile(new FileInfo(openFileDialog.FileName));\r
+ OpenFile(new FileInfo(openFileDialog.FileName), false);\r
openFileDialogOpened = false;\r
}\r
\r
if (openFileDialog.ShowDialog() == DialogResult.OK) {\r
model.RedefineSegmentMediaID = Path.GetFileNameWithoutExtension(openFileDialog.FileName);\r
model.IsRedefineSegments = true;\r
- OpenFile(new FileInfo(openFileDialog.FileName));\r
+ OpenFile(new FileInfo(openFileDialog.FileName), true);\r
}\r
openFileDialogOpened = false;\r
model.IsRedefineSegments = true;\r
\r
namespace DxPlay {\r
public class PlayerGraph : FilterGraph, IDisposable {\r
- #if DEBUG\r
- private DsROTEntry m_DsRot;\r
- #endif\r
+#if DEBUG\r
+ private DsROTEntry m_DsRot;\r
+#endif\r
private static readonly Logger logger = LogManager.GetCurrentClassLogger();\r
public IVideoWindow VideoWindow { get; private set; }\r
public ISampleGrabber SampleGrabber { get; private set; }\r
} else {\r
logger.Warn("Audio pin not available");\r
}\r
- \r
+\r
SearchAudioTracks(splitter);\r
\r
} catch (Exception e) {\r
\r
private IBaseFilter AddRenderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber, IntPtr handle) {\r
logger.Debug("Add VideoMixingRenderer9 to graph");\r
- IBaseFilter videoRenderer = (IBaseFilter) new VideoMixingRenderer9();\r
+ IBaseFilter videoRenderer = (IBaseFilter)new VideoMixingRenderer9();\r
DsError.ThrowExceptionForHR(graphBuilder.AddFilter(videoRenderer, "Video Mixing Renderer 9"));\r
logger.Debug("Connect SampleGrabber -> VideoMixingRenderer9");\r
\r
videoDecoder = FilterProvider.GetVideoFilter(out lavVideoSettings);\r
if (videoDecoder == null)\r
videoDecoder = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Video Decoder");\r
- else\r
+ if (videoDecoder != null)\r
graphBuilder.AddFilter(videoDecoder, "LAV Video Decoder");\r
return videoDecoder;\r
}\r
audioDecoder = FilterProvider.GetAudioFilter(out lavAudioSettings, out lavAudioStatus);\r
if (audioDecoder == null)\r
audioDecoder = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Audio Decoder");\r
- else\r
+ if (audioDecoder != null)\r
graphBuilder.AddFilter(audioDecoder, "LAV Audio Decoder");\r
return audioDecoder;\r
}\r
splitter = FilterProvider.GetSplitter(out lavSplitterSettings);\r
if (splitter == null)\r
splitter = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Splitter");\r
- else\r
+\r
+ if (splitter != null)\r
graphBuilder.AddFilter(splitter, "LAV Splitter");\r
return splitter;\r
}\r
if (m_DsRot != null)\r
m_DsRot.Dispose();\r
#endif\r
- IMediaControl mediaCtrl = (IMediaControl) this;\r
+ IMediaControl mediaCtrl = (IMediaControl)this;\r
if (mediaCtrl != null) {\r
mediaCtrl.Stop();\r
IGraphBuilder graphBuilder = (IGraphBuilder)mediaCtrl;\r
{\r
"title": "PROMO SZAKOSZTÁLY",\r
- "active": true,\r
+ "active": false,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
"defaultWindowColor": "#4DB6AC",\r
},\r
{\r
"$type": "TrafficMetadata",\r
+ "functionName": "clIFsp_ORI_MAM",\r
+ "version": 1,\r
"server": {\r
- "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
+ "address": "Data Source=10.11.254.86;Initial Catalog=PA_Vivantis;Persist Security Info=True;",\r
"userName": "MAM",\r
- "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
+ "password": "1LCAeMAI5W5eWdtaN25mHX/9JkXjkr0JZDvTZp//HYtUPo/UKyJnuZoLKFo9G9FbAhUha8xnniV+v/9BQ6c/7e0phmCYUdeLEdQcg0hHvU9njMSqYBV75b6oB9jhvtoZ",\r
"timeout": 1000\r
},\r
"projectSettings": {\r
{\r
"title": "Vezérlő",\r
- "active": true,\r
+ "active": false,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
"filter": "avi",\r
--- /dev/null
+{\r
+ "title": "Editor",\r
+ "active": true,\r
+ "startInTray": false,\r
+ "enableCustomMetadataId": true,\r
+ "player": {\r
+ "enabled": true,\r
+ "autoStart": false,\r
+ "segmentEditor": true\r
+ },\r
+ "source": {\r
+ "$type": "UNCSource",\r
+ "filter": "avi,wav,mxf,mts",\r
+ "local": {\r
+ "address": "file://c:/remote/promise/FINISHED_SHOWS",\r
+ "timeout": 1000\r
+ },\r
+ "remote": {\r
+ "address": "ftp://10.11.1.100/Promise/FINISHED_SHOWS",\r
+ "userName": "editor1",\r
+ "password": "mBsAKn0RRr+lErAWAu+oMD/3CRxlBLNvm3UB84SKl5KBVYD5+wIANFL0eszfbAUtzYKqdN/dEB/6ItBNz9D6C4/hppcYrg0+73+xFW9KYEwd2KfgHaH5uslbA/8IyI/U",\r
+ "timeout": 1000\r
+ }\r
+ },\r
+ "metadatas": [\r
+ {\r
+ "$type": "TrafficMetadata",\r
+ "functionName": "clIFsp_ORI_MAM",\r
+ "version": 1,\r
+ "server": {\r
+ "address": "Data Source=10.11.254.86;Initial Catalog=PA_Vivantis;Persist Security Info=True;",\r
+ "userName": "MAM",\r
+ "password": "1LCAeMAI5W5eWdtaN25mHX/9JkXjkr0JZDvTZp//HYtUPo/UKyJnuZoLKFo9G9FbAhUha8xnniV+v/9BQ6c/7e0phmCYUdeLEdQcg0hHvU9njMSqYBV75b6oB9jhvtoZ",\r
+ "timeout": 1000\r
+ }\r
+ },\r
+ {\r
+ "$type": "MediaCubeMetadata",\r
+ "server": {\r
+ "address": "http://10.11.1.90/services/rest/jobengine/",\r
+ "timeout": 1000\r
+ }\r
+ }\r
+ ],\r
+ "targets": [\r
+ {\r
+ "label": "Adáskész",\r
+ "processor": "FXPTargetProcessor",\r
+ "outputFormat": "%ID%",\r
+ "saveSegments": true,\r
+ "tag": "Adáskész",\r
+ "reference": ["Archiválás"],\r
+ "remote": {\r
+ "address": "ftp://10.11.1.100/Promise/PROGRAM/TEST",\r
+ "userName": "editor1",\r
+ "password": "mBsAKn0RRr+lErAWAu+oMD/3CRxlBLNvm3UB84SKl5KBVYD5+wIANFL0eszfbAUtzYKqdN/dEB/6ItBNz9D6C4/hppcYrg0+73+xFW9KYEwd2KfgHaH5uslbA/8IyI/U",\r
+ "timeout": 1000\r
+ }\r
+ },\r
+ {\r
+ "label": "Archiválás",\r
+ "processor": "FXPTargetProcessor",\r
+ "outputFormat": "%ID%",\r
+ "saveArchiveMetadata": true,\r
+ "tag": "Archiválás",\r
+ "remote": {\r
+ "address": "ftp://10.11.1.100/Promise/ARCHIVE/TEST",\r
+ "userName": "editor1",\r
+ "password": "mBsAKn0RRr+lErAWAu+oMD/3CRxlBLNvm3UB84SKl5KBVYD5+wIANFL0eszfbAUtzYKqdN/dEB/6ItBNz9D6C4/hppcYrg0+73+xFW9KYEwd2KfgHaH5uslbA/8IyI/U",\r
+ "timeout": 1000\r
+ }\r
+ }\r
+\r
+ ]\r
+}\r
<None Include="Configuration\dani-teszt-vezerlo.json">\r
<CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
</None>\r
+ <None Include="Configuration\editor.json">\r
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
+ </None>\r
<None Include="Configuration\global.json">\r
<CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
</None>\r
readOnly = ArchiveMetadata.ok;\r
if (readOnly && ArchiveMetadata != null && !SelectedMetadata.IsRedefine)\r
MsgBox.Warning("Az anyag már el van fogadva, a szegmens módosítás nem kerül mentésre. A szegmensek módosításához vissza kell vonni az anyag elfogadását az adástervező rendszerben.");\r
- OpenFile(fileInfo, true, readOnly);\r
+ OpenFile(fileInfo, true, readOnly, !readOnly);\r
UpdateDefineSegmentsStatus();\r
Cursor.Current = Cursors.Default;\r
}\r
if (fileSourceItem == null)\r
return;\r
dgSource.Enabled = false;\r
- OpenFile(fileSourceItem.FileInfo, false, false);\r
+ OpenFile(fileSourceItem.FileInfo, false, false, false);\r
dgSource.Enabled = true;\r
}\r
}\r
\r
- private void OpenFile(FileInfo fileInfo, bool segmentEditor, bool readOnly) {\r
+ private void OpenFile(FileInfo fileInfo, bool segmentEditor, bool readOnly, bool redefineSegments) {\r
Cursor = Cursors.WaitCursor;\r
try {\r
string[] extensions = Configuration.Player?.Extensions;\r
AutoStart = Configuration.Player.AutoStart,\r
SegmentEditor = Configuration.Player.SegmentEditor && segmentEditor\r
},\r
+ Metadata = trafficIDSelector.Parameters.Configuration,\r
Segments = MovieSegments\r
};\r
- player.OpenFile(fileInfo);\r
+ player.OpenFile(fileInfo, redefineSegments);\r
if (!player.IsDisposed)\r
player.ShowDialog();\r
} else {\r
}\r
\r
\r
+ private bool HasNoneEmptySegments() {\r
+ if (MovieSegments?.Count == 0)\r
+ return false;\r
+\r
+ if (MovieSegments?.Count == 1 && MovieSegments[0].IsGhost)\r
+ return false;\r
+\r
+ return true;\r
+ }\r
+\r
private bool EnsureSegments(Target target) {\r
- if ((target.SaveMorpheusMetadata || target.SaveSegments) && (MovieSegments == null || MovieSegments.Count == 0)) {\r
- if (selectedMetadata?.VariantID != null && selectedMetadata?.VariantID != 0) {\r
- List<MovieSegment> storedSegments = GetSegments();\r
- if (storedSegments != null && storedSegments.Count > 0) {\r
- MovieSegments = new BindingList<MovieSegment>(storedSegments);\r
+ if (target.SaveMorpheusMetadata || target.SaveSegments) {\r
+ if (!HasNoneEmptySegments()) {\r
+\r
+ //ha nincs aktualis szegmens, akkor lekerjuk, hatha volt korabban\r
+ if (selectedMetadata?.VariantID != null && selectedMetadata?.VariantID != 0) {\r
+ List<MovieSegment> storedSegments = GetSegments();\r
+ if (storedSegments != null)\r
+ MovieSegments = new BindingList<MovieSegment>(storedSegments);\r
}\r
+\r
+ if (!HasNoneEmptySegments())\r
+ MessageBox.Show(string.Format("A(z) '{0}' folyamat nem futtatható szegmens adatok nélkül.", target.Label));\r
+ return false;\r
}\r
- if (MovieSegments == null) {\r
- MessageBox.Show(String.Format("A {0} folyamat nem futtatható szegmens adatok nélkül.", target.Label));\r
+ if (ArchiveMetadata == null)\r
+ ArchiveMetadata = GetArchiveMetadata();\r
+ if (ArchiveMetadata.ok) {\r
+ MessageBox.Show(string.Format("A(z) '{0}' folyamat nem futtatható elfogadott kópián.", target.Label));\r
return false;\r
}\r
switch (selectedMetadata.Kind) {\r
case MetadataType.TrafficPromo: {\r
if (MovieSegments.Count != 1) {\r
- MessageBox.Show(String.Format("Promó anyagnak csak egy szegmens adata lehet."));\r
+ MessageBox.Show(string.Format("Promó anyagnak csak egy szegmens adata lehet."));\r
return false;\r
}\r
break;\r
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w\r
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0\r
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAS\r
- CAAAAk1TRnQBSQFMAgEBAgEAAZABAgGQAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
+ CAAAAk1TRnQBSQFMAgEBAgEAAZgBAgGYAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA\r
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5\r
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA\r
// You can specify all the values or you can default the Build and Revision Numbers\r
// by using the '*' as shown below:\r
// [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.9.6")]\r
-[assembly: AssemblyFileVersion("2.0.9.6")]\r
+[assembly: AssemblyVersion("2.0.9.9")]\r
+[assembly: AssemblyFileVersion("2.0.9.9")]\r
\r
public class MetadataTypeUtil {\r
private const string REGEXP_TRAFFICMATERIALID = "^M{1}[0-9]{6}[A-Z]{1}$";\r
- private const string REGEXP_TRAFFICMATERIALID_V1 = "^M{1}[0-9]{6}[A-Z]{1}[0-9]{1}$";\r
- private const string REGEXP_TRAFFICMATERIALID_V2 = "^M{1}[0-9]{6}[A-Z]{1}[A-Z]{1}$";\r
+ private const string REGEXP_TRAFFICMATERIALID_V1 = "^M{1}[0-9]{6}[A-Z]{1}[0-9]{1}$";//kenya\r
+ private const string REGEXP_TRAFFICMATERIALID_V2 = "^M{1}[0-9]{6}[A-Z]{1}[A-Z]{1}$";//kenya\r
+ private const string REGEXP_TRAFFICMATERIALID_V3 = "^M[0-9]{2}-[0-9]{6}-([0-9]|[A-Z])$";//mv\r
private const string REGEXP_TRAFFICADID = "^R{1}[0-9]{6}[A-Z]{1}$";\r
- private const string REGEXP_TRAFFICALTERNATEADID = "^C{1}[0-9]{6}[A-Z]{1}$";\r
+ private const string REGEXP_TRAFFICADID_V1 = "^C{1}[0-9]{6}[A-Z]{1}$";//kenya\r
+ private const string REGEXP_TRAFFICADID_V2 = "^R[0-9]{2}-[0-9]{6}-[0-9]$";//mv\r
private const string REGEXP_TRAFFICPROMOID = "^P{1}[0-9]{6}[A-Z]{1}$";\r
+ private const string REGEXP_TRAFFICPROMOID_V1 = "^P[0-9]{2}-[0-9]{6}-[0-9]$";//mv\r
private const string REGEXP_OCTOPUSSTORYID = "^[0-9]+$";\r
private const string REGEXP_OCTOPUSPLACEHOLDERID = "^[0-9]+_[0-9]+$";\r
private const string REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID = "^[0-9]+_[0-9]+-[0-9]{3}$";\r
if (match.Success)\r
return MetadataType.TrafficMaterialSegment;\r
\r
+ match = Regex.Match(id, REGEXP_TRAFFICMATERIALID_V3);\r
+ if (match.Success)\r
+ return MetadataType.TrafficMaterial;\r
+\r
match = Regex.Match(id, REGEXP_TRAFFICPROMOID);\r
if (match.Success)\r
return MetadataType.TrafficPromo;\r
\r
+ match = Regex.Match(id, REGEXP_TRAFFICPROMOID_V1);\r
+ if (match.Success)\r
+ return MetadataType.TrafficPromo;\r
+\r
match = Regex.Match(id, REGEXP_TRAFFICADID);\r
if (match.Success)\r
return MetadataType.TrafficAD;\r
\r
- match = Regex.Match(id, REGEXP_TRAFFICALTERNATEADID);\r
+ match = Regex.Match(id, REGEXP_TRAFFICADID_V1);\r
+ if (match.Success)\r
+ return MetadataType.TrafficAD;\r
+\r
+ match = Regex.Match(id, REGEXP_TRAFFICADID_V2);\r
if (match.Success)\r
return MetadataType.TrafficAD;\r
\r
public int SegID;\r
public bool ReadOnly;\r
\r
+ public bool IsGhost {\r
+ get => TCIn.Frames == 0 && TCOut.Frames == 0;\r
+ }\r
+\r
public Timecode TCIn {\r
- get => tcIn;\r
+ get => tcIn ?? new Timecode();\r
set {\r
tcIn = value;\r
NotifyPropertyChanged();\r
}\r
\r
public Timecode TCOut {\r
- get => tcOut;\r
+ get => tcOut ?? new Timecode();\r
set {\r
tcOut = value;\r
NotifyPropertyChanged();\r
public string Segment {\r
get {\r
if (SegmentCount != null && SegmentNr != null)\r
- return string.Format($"{SegmentCount} / {SegmentNr} : {MovieSegment?.MediaID}");\r
+ //return string.Format($"{SegmentCount} / {SegmentNr} : {MovieSegment?.MediaID}");\r
+ return string.Format($"{VariantID} ({SegmentCount} / {SegmentNr})");\r
else\r
- return "";\r
+ return VariantID == 0 ? "Kópia nélküli" : VariantID.ToString();\r
}\r
}\r
}\r
// You can specify all the values or you can default the Build and Revision Numbers\r
// by using the '*' as shown below:\r
// [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.9.5")]\r
-[assembly: AssemblyFileVersion("2.0.9.5")]\r
+[assembly: AssemblyVersion("2.0.9.8")]\r
+[assembly: AssemblyFileVersion("2.0.9.8")]\r
EnsureDirectoryExistence(workingDir);\r
\r
//multiszegmens mukodes eseten a filenevet a traffic generalja\r
- if (!true.Equals(Parameters?.TrafficMetadata?.MultiSegmentEnabled))\r
+ //if (!true.Equals(Parameters?.TrafficMetadata?.MultiSegmentEnabled))\r
+ //deha nem szegmentalok, akkor nem\r
+ if (OutputName == null)\r
OutputName = CreateOutputFileName();\r
CreateOutput(workingDir);\r
workFlowAction.source = Input;\r
// You can specify all the values or you can default the Build and Revision Numbers\r
// by using the '*' as shown below:\r
// [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("1.0.0.3")]\r
-[assembly: AssemblyFileVersion("1.0.0.3")]\r
+[assembly: AssemblyVersion("1.0.0.9")]\r
+[assembly: AssemblyFileVersion("1.0.0.9")]\r
}\r
\r
/// <summary>\r
- /// Looks up a localized string similar to Szegmens.\r
+ /// Looks up a localized string similar to Kópia (Szegmens).\r
/// </summary>\r
internal static string SEGMENT {\r
get {\r
<value>Az azonosító jelenleg nem található a rendszerben. Kérem próbálja újra.</value>\r
</data>\r
<data name="SEGMENT" xml:space="preserve">\r
- <value>Szegmens</value>\r
+ <value>Kópia (Szegmens)</value>\r
</data>\r
</root>
\ No newline at end of file
materialWorker.SetMaterialOK(itemID, false);\r
DeleteUnmappedSegments(itemID, segments, selectedSegments);\r
result = ModifySegments(itemID, segments, selectedSegments);\r
- Parameters?.MessageBus.Send(new TrafficAPIRefreshMessage());\r
+ //Parameters?.MessageBus.Send(new TrafficAPIRefreshMessage());\r
\r
} else {\r
//egyebkent nem fogadja el a szegmnesadatokat?\r
string newSegmentName = null;\r
for (int i = 0; i < segments.Count; i++) {\r
MovieSegment actualSegment = segments[i];\r
- bool newSegment = selectedSegments.Count - 1 < i || (selectedSegments.Count == 1 && selectedSegments[0].SegmentId == null);\r
+ bool newSegment = selectedSegments == null || selectedSegments.Count - 1 < i || (selectedSegments.Count == 1 && (selectedSegments[0].SegmentId == null || selectedSegments[0].MovieSegment.IsGhost));\r
if (newSegment) {\r
segNr++;\r
} else {\r
\r
string fileName = null;\r
\r
- //ha redifine volt, akkor minden modositott szegmens tartalmazza a fajlnevet\r
+ //ha redefine volt, akkor minden modositott szegmens tartalmazza a fajlnevet\r
//ha define akkor az null, de a masodik szegmensnel mar az elsovel letrehozott fajlnev kell\r
if (!newSegment && actualSegment.SegID != 0)\r
fileName = actualSegment.MediaID;\r
}\r
\r
logger.Info("Adding segment {0} {1}", segNr, fileName ?? "null");\r
+\r
result = materialWorker.AddMaterialSegment(itemID, actualSegment, fileName, segNr);\r
if (newSegment && newSegmentName == null)\r
newSegmentName = result;\r
}\r
\r
private void DeleteUnmappedSegments(int itemID, List<MovieSegment> segments, List<TrafficItem> selectedSegments) {\r
+ if (selectedSegments == null)\r
+ return;\r
+\r
+ List<MovieSegment> ghosts = new List<MovieSegment>();\r
+ foreach (var s in segments) {\r
+ if (s.IsGhost) {\r
+ materialWorker.DeleteMaterialSegment(itemID, s.SegID);\r
+ ghosts.Add(s);\r
+ }\r
+ }\r
+\r
+ foreach (MovieSegment s in ghosts) {\r
+ segments.Remove(s);\r
+ }\r
+\r
int delSegCount = selectedSegments.Count - segments.Count;\r
while (delSegCount > 0) {\r
if (selectedSegments[selectedSegments.Count - 1].SegmentId == null)\r
-namespace TrafficClient\r
-{\r
- partial class TrafficIDSelector\r
- {\r
+namespace TrafficClient {\r
+ partial class TrafficIDSelector {\r
/// <summary> \r
/// Required designer variable.\r
/// </summary>\r
/// Clean up any resources being used.\r
/// </summary>\r
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>\r
- protected override void Dispose(bool disposing)\r
- {\r
- if (disposing && (components != null))\r
- {\r
+ protected override void Dispose(bool disposing) {\r
+ if (disposing && (components != null)) {\r
components.Dispose();\r
}\r
base.Dispose(disposing);\r
/// Required method for Designer support - do not modify \r
/// the contents of this method with the code editor.\r
/// </summary>\r
- private void InitializeComponent()\r
- {\r
+ private void InitializeComponent() {\r
this.components = new System.ComponentModel.Container();\r
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();\r
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();\r
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();\r
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();\r
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();\r
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();\r
this.trafficAPIBindingSource = new System.Windows.Forms.BindingSource(this.components);\r
this.dtScheduled = new System.Windows.Forms.DateTimePicker();\r
this.txtFilter = new System.Windows.Forms.TextBox();\r
this.chkProblematic = new System.Windows.Forms.CheckBox();\r
this.dgTraffic = new System.Windows.Forms.DataGridView();\r
this.pSeparator = new System.Windows.Forms.Panel();\r
+ this.btnNewVersion = new System.Windows.Forms.Button();\r
+ this.panel1 = new System.Windows.Forms.Panel();\r
((System.ComponentModel.ISupportInitialize)(this.trafficAPIBindingSource)).BeginInit();\r
this.pFolderType.SuspendLayout();\r
this.pSearch.SuspendLayout();\r
((System.ComponentModel.ISupportInitialize)(this.dgTraffic)).BeginInit();\r
+ this.panel1.SuspendLayout();\r
this.SuspendLayout();\r
// \r
// dtScheduled\r
this.dgTraffic.BackgroundColor = System.Drawing.Color.White;\r
this.dgTraffic.BorderStyle = System.Windows.Forms.BorderStyle.None;\r
this.dgTraffic.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Raised;\r
- dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
- dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;\r
- dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
- dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;\r
- dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
- dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
- dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
- this.dgTraffic.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;\r
+ dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+ dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control;\r
+ dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+ dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText;\r
+ dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
+ dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
+ dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
+ this.dgTraffic.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4;\r
this.dgTraffic.DataSource = this.trafficAPIBindingSource;\r
- dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
- dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;\r
- dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
- dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;\r
- dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
- dataGridViewCellStyle2.SelectionForeColor = System.Drawing.Color.Black;\r
- dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
- this.dgTraffic.DefaultCellStyle = dataGridViewCellStyle2;\r
+ dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+ dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window;\r
+ dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
+ dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText;\r
+ dataGridViewCellStyle5.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
+ dataGridViewCellStyle5.SelectionForeColor = System.Drawing.Color.Black;\r
+ dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
+ this.dgTraffic.DefaultCellStyle = dataGridViewCellStyle5;\r
this.dgTraffic.Dock = System.Windows.Forms.DockStyle.Fill;\r
this.dgTraffic.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;\r
this.dgTraffic.EnableHeadersVisualStyles = false;\r
this.dgTraffic.MultiSelect = false;\r
this.dgTraffic.Name = "dgTraffic";\r
this.dgTraffic.RowHeadersVisible = false;\r
- dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
- this.dgTraffic.RowsDefaultCellStyle = dataGridViewCellStyle3;\r
+ dataGridViewCellStyle6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
+ this.dgTraffic.RowsDefaultCellStyle = dataGridViewCellStyle6;\r
this.dgTraffic.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
this.dgTraffic.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;\r
- this.dgTraffic.Size = new System.Drawing.Size(300, 321);\r
+ this.dgTraffic.Size = new System.Drawing.Size(300, 298);\r
this.dgTraffic.TabIndex = 0;\r
this.dgTraffic.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.OnCellContentClick);\r
this.dgTraffic.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.OnCellDoubleClick);\r
this.pSeparator.Size = new System.Drawing.Size(300, 6);\r
this.pSeparator.TabIndex = 13;\r
// \r
+ // btnNewVersion\r
+ // \r
+ this.btnNewVersion.Dock = System.Windows.Forms.DockStyle.Right;\r
+ this.btnNewVersion.Enabled = false;\r
+ this.btnNewVersion.Location = new System.Drawing.Point(239, 0);\r
+ this.btnNewVersion.Name = "btnNewVersion";\r
+ this.btnNewVersion.Size = new System.Drawing.Size(61, 23);\r
+ this.btnNewVersion.TabIndex = 14;\r
+ this.btnNewVersion.Text = "Új kópia";\r
+ this.btnNewVersion.UseVisualStyleBackColor = true;\r
+ this.btnNewVersion.Click += new System.EventHandler(this.OnNewVersion);\r
+ // \r
+ // panel1\r
+ // \r
+ this.panel1.Controls.Add(this.btnNewVersion);\r
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;\r
+ this.panel1.Location = new System.Drawing.Point(0, 377);\r
+ this.panel1.Name = "panel1";\r
+ this.panel1.Size = new System.Drawing.Size(300, 23);\r
+ this.panel1.TabIndex = 15;\r
+ // \r
// TrafficIDSelector\r
// \r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
this.BackColor = System.Drawing.Color.Transparent;\r
this.Controls.Add(this.dgTraffic);\r
+ this.Controls.Add(this.panel1);\r
this.Controls.Add(this.pSeparator);\r
this.Controls.Add(this.pSearch);\r
this.Name = "TrafficIDSelector";\r
this.pSearch.ResumeLayout(false);\r
this.pSearch.PerformLayout();\r
((System.ComponentModel.ISupportInitialize)(this.dgTraffic)).EndInit();\r
+ this.panel1.ResumeLayout(false);\r
this.ResumeLayout(false);\r
this.PerformLayout();\r
\r
private System.Windows.Forms.DataGridView dgTraffic;\r
private System.Windows.Forms.Panel pSeparator;\r
private MaestroShared.Controls.NoFocusCueButton btnRefresh;\r
+ private System.Windows.Forms.Button btnNewVersion;\r
+ private System.Windows.Forms.Panel panel1;\r
}\r
}\r
\r
private void OnRefreshTrafficGrid(IMessage m) {\r
BeginInvoke((Action)(() => {\r
+ //TODO meg kene orizni a kijelolest\r
RefreshKeepPosition();\r
}));\r
}\r
\r
public TrafficParameters Parameters {\r
+ get {\r
+ return parameters;\r
+ }\r
set {\r
parameters = value;\r
var server = parameters.Configuration?.Server;\r
dgTraffic.Columns.AddRange(GetPromoColumns(metadata));\r
items = trafficAPI.GetPromos(txtFilter.Text, chkProblematic.Checked, scheduledDate, scheduledDate);\r
}\r
+ if (items != null)\r
+ items = items.OrderBy(i => i.VariantID).ToList();\r
\r
if (items == null || items.Count == 0)\r
trafficAPIBindingSource.DataSource = null;\r
}\r
\r
ProjectSettings projectConfiguration = parameters?.Configuration?.ProjectSettings;\r
- string text = trafficItem.Title;\r
+ string text = trafficItem.Title == null || trafficItem.Title.Length == 0 ? trafficItem.EpisodeTitle : trafficItem.Title;\r
EdiusProject.Open(projectConfiguration, id, text, parameters.UserName);\r
}\r
\r
}\r
\r
List<TrafficItem> selectedItems = items?.Where(i => i.Selected).ToList();\r
- if (selectedItems?.Count() > 0) {\r
+ if (selectedItems?.Count > 0) {\r
+ btnNewVersion.Enabled = true;\r
CreateVersionIfMissing(trafficItem);\r
IDChangedEvent?.Invoke(trafficItem.MediaID, trafficItem.VariantID, trafficItem.Title, selectedItems);\r
- } else\r
+ } else {\r
+ btnNewVersion.Enabled = false;\r
IDChangedEvent?.Invoke(null, 0, null, null);\r
+ }\r
+ }\r
+\r
+ void UpdateItem(ref TrafficItem trafficItem, int variantID) {\r
+ TrafficItem currentVersion = trafficAPI.GetMaterials(trafficItem.EpisodeID, false).Where(t => t.VariantID == variantID).FirstOrDefault();\r
+ if (currentVersion != null) {\r
+ trafficItem.MediaID = currentVersion.MediaID;\r
+ trafficItem.MovieSegment = currentVersion.MovieSegment;\r
+ trafficItem.SegmentCount = currentVersion.SegmentCount;\r
+ trafficItem.SegmentNr = currentVersion.SegmentNr;\r
+ trafficItem.SegmentId = currentVersion.SegmentId;\r
+ trafficItem.VariantID = currentVersion.VariantID;\r
+ }\r
}\r
\r
private void CreateVersionIfMissing(TrafficItem trafficItem) {\r
\r
- if (String.IsNullOrEmpty(trafficItem.MediaID)) {\r
- var currentVersion = trafficAPI.GetMaterials(trafficItem.EpisodeID, false)?.FirstOrDefault();\r
- if (currentVersion == null || String.IsNullOrEmpty(currentVersion.MediaID)) {\r
- TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(trafficItem.EpisodeID, false);\r
- if (newVersion != null) {\r
- trafficItem.MediaID = newVersion.MediaID;\r
- trafficItem.VariantID = newVersion.VariantID;\r
+ if (string.IsNullOrEmpty(trafficItem.MediaID)) {\r
+ if (MultiSegment) {\r
+\r
+ //meg kopia sincs\r
+ if (trafficItem.VariantID == 0) {\r
+ TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(trafficItem.EpisodeID, false);\r
+ if (newVersion != null)\r
+ UpdateItem(ref trafficItem, newVersion.VariantID);\r
}\r
+\r
+ trafficAPI.SaveSegments(trafficItem.VariantID, MetadataType.TrafficMaterial, new List<MovieSegment>() { new MovieSegment() });\r
+ UpdateItem(ref trafficItem, trafficItem.VariantID);\r
+ if (trafficItem.VariantID == 0 || string.IsNullOrEmpty(trafficItem.MediaID))\r
+ return;\r
} else {\r
- trafficItem.MediaID = currentVersion.MediaID;\r
- trafficItem.VariantID = currentVersion.VariantID;\r
+\r
+ var currentVersion = trafficAPI.GetMaterials(trafficItem.EpisodeID, false)?.FirstOrDefault();\r
+ if (currentVersion == null || String.IsNullOrEmpty(currentVersion.MediaID)) {\r
+ TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(trafficItem.EpisodeID, false);\r
+ if (newVersion != null) {\r
+ trafficItem.MediaID = newVersion.MediaID;\r
+ trafficItem.VariantID = newVersion.VariantID;\r
+ }\r
+ } else {\r
+ trafficItem.MediaID = currentVersion.MediaID;\r
+ trafficItem.VariantID = currentVersion.VariantID;\r
+ }\r
+\r
+ if (trafficItem.VariantID == 0 || string.IsNullOrEmpty(trafficItem.MediaID))\r
+ return;\r
+\r
}\r
\r
- if (trafficItem.VariantID == 0 || string.IsNullOrEmpty(trafficItem.MediaID))\r
- return;\r
+\r
} else if (ModifierKeys.HasFlag(Keys.Shift)) {\r
- var currentVersion = trafficAPI.GetMaterials(trafficItem.EpisodeID, false)?.FirstOrDefault();\r
- TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(trafficItem.EpisodeID, true);\r
- if (newVersion != null) {\r
- RefreshKeepPosition();\r
- }\r
}\r
\r
}\r
RefreshResults();\r
\r
}\r
+\r
+\r
+ private void OnNewVersion(object sender, EventArgs e) {\r
+\r
+ List<TrafficItem> items = trafficAPIBindingSource.DataSource as List<TrafficItem>;\r
+ string episodeID = items?.Where(i => i.Selected).FirstOrDefault()?.EpisodeID;\r
+ if (episodeID != null) {\r
+ if (!MsgBox.YesNoQuestion("Biztosan létrehoz egy új kópiát a kijelölt epizódhoz?"))\r
+ return;\r
+ var currentVersion = trafficAPI.GetMaterials(episodeID, false)?.FirstOrDefault();\r
+ TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(episodeID, true);\r
+ if (newVersion != null)\r
+ RefreshKeepPosition();\r
+\r
+ }\r
+\r
+ }\r
}\r
\r
public class TrafficAPIMessage : MaestroMessage {\r
get => 6002;\r
}\r
\r
+ protected override TrafficItemMetadata CreateTrafficItemMetadata(SqlDataReader reader) {\r
+ PlanAirMaterialResult item = dataReader.ToMultiMaterialResult(reader);\r
+ TrafficItemMetadata trafficItem = ToTrafficItemMetadata(item);\r
+ return trafficItem;\r
+ }\r
+\r
protected override TrafficItem CreateTrafficItem(SqlDataReader reader) {\r
PlanAirMaterialResult item = dataReader.ToMultiMaterialResult(reader);\r
TrafficItem trafficItem = ToTrafficItem(item);\r
+\r
+ //MediaVivantis-ban nem a v_VariantMediaID-ben van az azonosito??\r
+ trafficItem.MediaID = item.v_SegMediaID;\r
+\r
return trafficItem;\r
}\r
\r
namespace TrafficClient.Workers {\r
\r
public class SingleSegmentMaterialWorker : TrafficWorker {\r
-\r
private static Logger logger = LogManager.GetCurrentClassLogger();\r
protected virtual bool MultiSegmentEnabled { get => false; }\r
\r
SegmentNr = data.v_SegNr,\r
SegmentId = data.v_SegID\r
};\r
- if (data.v_SegID != null && data.v_SegTcOut > 0) {\r
+\r
+ // 0 hosszu szegmensek is kellenek\r
+ //if (data.v_SegID != null && data.v_SegTcOut > 0) {\r
+ if (data.v_SegID != null) {\r
result.MovieSegment = new MovieSegment {\r
TCIn = new Timecode((int)data.v_SegTcIn),\r
TCOut = new Timecode((int)data.v_SegTcOut),\r
Comment = data.v_SegTitle,\r
Optional = true.Equals(data.v_SegDropable),\r
- MediaID = data.v_SegMediaID\r
+ MediaID = data.v_SegMediaID,\r
+ SegID = data.v_SegID ?? 0,\r
+ SegNr = data.v_SegNr ?? 0\r
};\r
}\r
return result;\r
}\r
\r
- private TrafficItemMetadata ToTrafficItemMetadata(PlanAirMaterialResult data) {\r
+ protected TrafficItemMetadata ToTrafficItemMetadata(PlanAirMaterialResult data) {\r
return new TrafficItemMetadata() {\r
EpisodeID = data.v_EpisodeID,\r
EpisodeTitle = data.v_EpTitle,\r
cmd.Parameters.AddWithValue("@@DateParam1", from.Value.Date);\r
if (to != null)\r
cmd.Parameters.AddWithValue("@@DateParam2", to.Value.Date);\r
-\r
using (SqlDataReader reader = cmd.ExecuteReader()) {\r
while (reader.Read()) {\r
if (result == null)\r
return trafficItem;\r
}\r
\r
+ protected virtual TrafficItemMetadata CreateTrafficItemMetadata(SqlDataReader reader) {\r
+ PlanAirMaterialResult item = dataReader.ToSingleMaterialResult(reader);\r
+ TrafficItemMetadata trafficItem = ToTrafficItemMetadata(item);\r
+ return trafficItem;\r
+ }\r
+\r
public List<TrafficItemMetadata> GetMaterialArchiveMetadata(string strParam) {\r
List<TrafficItemMetadata> result = null;\r
try {\r
TryConnect();\r
using (SqlCommand cmd = CreateCommmad()) {\r
cmd.CommandType = CommandType.StoredProcedure;\r
- cmd.Parameters.AddWithValue("@Operation", 1002);\r
+ cmd.Parameters.AddWithValue("@Operation", GetMaterialsID);\r
cmd.Parameters.AddWithValue("@@@Options", 0);\r
cmd.Parameters.AddWithValue("@@ItemID", DBNull.Value);\r
cmd.Parameters.AddWithValue("@@StrParam1", strParam);\r
-\r
using (SqlDataReader reader = cmd.ExecuteReader()) {\r
while (reader.Read()) {\r
if (result == null)\r
result = new List<TrafficItemMetadata>();\r
- PlanAirMaterialResult item = dataReader.ToSingleMaterialResult(reader);\r
- result.Add(ToTrafficItemMetadata(item));\r
+\r
+ TrafficItemMetadata trafficItem = CreateTrafficItemMetadata(reader);\r
+ result.Add(trafficItem);\r
+\r
}\r
}\r
}\r
get => 1105;\r
}\r
\r
+\r
+ // @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null,\r
+ // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null\r
+\r
public TrafficVersion CreateMaterialVersion(string episodeID, bool recut) {\r
TrafficVersion result = null;\r
try {\r
cmd.Parameters.AddWithValue("@@ItemID", DBNull.Value);\r
cmd.Parameters.AddWithValue("@@StrParam1", episodeID);\r
cmd.Parameters.AddWithValue("@@StrParam2", DBNull.Value);\r
-\r
using (SqlDataReader reader = cmd.ExecuteReader()) {\r
if (reader.Read()) {\r
result = new TrafficVersion();\r