git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorBellai Ádám <USER\adam.bellai>
Thu, 5 Oct 2017 21:09:27 +0000 (21:09 +0000)
committerBellai Ádám <USER\adam.bellai>
Thu, 5 Oct 2017 21:09:27 +0000 (21:09 +0000)
client/DxPlay/PlayerForm.Designer.cs
client/DxPlay/PlayerForm.cs

index d1875909056fd38560124e2b6d9f17f7e6c267b3..1d320474ece482aa6fc1ddbe72fa4ddc9a7dfe2f 100644 (file)
@@ -300,6 +300,7 @@ namespace DxPlay {
             this.dgSegments.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;\r
             this.dgSegments.Size = new System.Drawing.Size(257, 521);\r
             this.dgSegments.TabIndex = 1;\r
+            this.dgSegments.RowsAdded += new System.Windows.Forms.DataGridViewRowsAddedEventHandler(this.dgSegments_RowsAdded);\r
             // \r
             // menuButtonSegmentActions\r
             // \r
index 9834d16b4efad809da37e5b8648341cebeb0405d..1d4b9ca0ae17d04ce03074c5ec93eb8469c2fb9e 100644 (file)
@@ -274,8 +274,14 @@ namespace DxPlay {
             }\r
             return result;\r
         }\r
-        \r
+\r
         private void PlayerForm_FormClosing(object sender, FormClosingEventArgs e) {\r
+            foreach (MovieSegment segment in segments)\r
+                if (segment.TCOut == null) {\r
+                    e.Cancel = true;\r
+                    return;\r
+                }\r
+\r
             if (m_play != null) {\r
                 m_play.Stop();\r
                 m_play.Dispose();\r
@@ -310,12 +316,6 @@ namespace DxPlay {
                 TCOut = new Timecode(m_mediaDescription.FirstFrame, m_mediaDescription.Duration)\r
             };\r
             segments.Add(segment);\r
-            //if (outro == null)\r
-            //    segments.Add(segment);\r
-            //else {\r
-            //    int index = segments.Count - 2;\r
-            //    segments.Insert(index, segment);\r
-            //}\r
         }\r
 \r
         private void OnDeleteSegmentClick(object sender, EventArgs e) {\r
@@ -334,56 +334,98 @@ namespace DxPlay {
         private void OnActualPositionToTCInToolStripMenuItem1Click(object sender, EventArgs e) {\r
             MovieSegment currentSegment = GetCurrentSegment();\r
             if (currentSegment != null) {\r
+\r
                 if (currentSegment.TCIn != null) {\r
                     DialogResult dialogResult = MessageBox.Show("Biztos felül akarja írni az belépõt?", "Belépõ felülírása", MessageBoxButtons.YesNo);\r
-                    if (dialogResult == DialogResult.Yes)\r
-                        currentSegment.TCIn = m_play.CurrentTC;\r
-                } else\r
-                    currentSegment.TCIn = m_play.CurrentTC;\r
+                    if (dialogResult == DialogResult.Yes) {\r
+                        if (IsTCInBeforeTCOut(m_play.CurrentTC, currentSegment.TCOut)) {\r
+                            Timecode actual = new Timecode();\r
+                            actual.Set(m_play.CurrentTC.Frames);\r
+                            currentSegment.TCIn = actual;\r
+                        } else {\r
+                            MessageBox.Show("A kilépõ a belépõ elõtt van!", "Hiba");\r
+                            //így kell?\r
+                            currentSegment.TCIn = null;\r
+                            //vagy így?\r
+                            //currentSegment.TCIn = new Timecode();\r
+                        }\r
+                    }\r
+                } else {\r
+                    Timecode actual = new Timecode(m_play.CurrentTC);\r
+                    currentSegment.TCIn = actual;\r
+                }\r
+            } else {\r
+                MovieSegment segment = new MovieSegment() {\r
+                    TCIn = new Timecode(m_mediaDescription.FirstFrame),\r
+                    //ez kell-e?\r
+                    //TCOut = new Timecode(m_mediaDescription.FirstFrame, m_mediaDescription.Duration)\r
+                };\r
+                segments.Add(segment);\r
             }\r
-\r
-\r
-            //if (intro != null) {\r
-            //    DialogResult dialogResult = MessageBox.Show("Biztos felül akarja írni az belépõt?", "Belépõ felülírása", MessageBoxButtons.YesNo);\r
-            //    if (dialogResult == DialogResult.Yes) {\r
-            //        segments.RemoveAt(0);\r
-            //        CreateAndAddIntroToSegments();\r
-            //    }\r
-            //} else\r
-            //    CreateAndAddIntroToSegments();\r
+            dgSegments.DataSource = bsSegments;\r
         }\r
 \r
-        //private void CreateAndAddIntroToSegments() {\r
-        //    intro = new MovieSegment() {\r
-        //        TCIn = new Timecode(m_mediaDescription.FirstFrame),\r
-        //        TCOut = m_play.CurrentTC\r
-        //    };\r
-        //    segments.Insert(0, intro);\r
-        //}\r
-\r
         private void OnActualPositionToTCOutToolStripMenuItem1Click(object sender, EventArgs e) {\r
             MovieSegment currentSegment = GetCurrentSegment();\r
             if (currentSegment != null) {\r
                 if (currentSegment.TCOut != null) {\r
                     DialogResult dialogResult = MessageBox.Show("Biztos felül akarja írni a kilépõt?", "Kilépõ felülírása", MessageBoxButtons.YesNo);\r
                     if (dialogResult == DialogResult.Yes) {\r
-                        currentSegment.TCOut = m_play.CurrentTC;\r
+                        if (IsTCInBeforeTCOut(currentSegment.TCIn, m_play.CurrentTC)) {\r
+                            Timecode actual = new Timecode();\r
+                            actual.Set(m_play.CurrentTC.Frames);\r
+                            currentSegment.TCOut = actual;\r
+                        } else {\r
+                            MessageBox.Show("A kilépõ a belépõ elõtt van!", "Hiba");\r
+                            //így kell?\r
+                            currentSegment.TCIn = null;\r
+                            //vagy így?\r
+                            //currentSegment.TCIn = new Timecode();\r
+                        }\r
                     }\r
-                } else\r
-                    currentSegment.TCOut = m_play.CurrentTC;\r
+                } else {\r
+                    Timecode actual = new Timecode(m_play.CurrentTC);\r
+                    currentSegment.TCOut = actual;\r
+                }\r
+            } else {\r
+                MovieSegment segment = new MovieSegment() {\r
+                    //ez kell-e?\r
+                    //TCIn = new Timecode(m_mediaDescription.FirstFrame),\r
+                    TCOut = new Timecode(m_mediaDescription.FirstFrame, m_mediaDescription.Duration)\r
+                };\r
+                segments.Add(segment);\r
             }\r
+        }\r
 \r
+        private bool IsTCInBeforeTCOut(Timecode tcIn, Timecode tcOut) {\r
+            if (tcIn == null || tcOut == null)\r
+                return true;\r
+            string tcInString = tcIn.ToString();\r
+            string tcOutString = tcOut.ToString();\r
+            string inHour = tcInString.Substring(0, 2);\r
+            string outHour = tcOutString.Substring(0, 2);\r
+            if (Int32.Parse(outHour) < Int32.Parse(inHour))\r
+                return false;\r
+            else if (Int32.Parse(outHour) > Int32.Parse(inHour))\r
+                return true;\r
+            string inMinute = tcInString.Substring(3, 2);\r
+            string outMinute = tcOutString.Substring(3, 2);\r
+            if (Int32.Parse(outMinute) < Int32.Parse(inMinute))\r
+                return false;\r
+            else if (Int32.Parse(outMinute) > Int32.Parse(inMinute))\r
+                return true;\r
+            string inSec = tcInString.Substring(6, 2);\r
+            string outSec = tcOutString.Substring(6, 2);\r
+            if (Int32.Parse(outSec) < Int32.Parse(inSec))\r
+                return false;\r
+            else if (Int32.Parse(outSec) > Int32.Parse(inSec))\r
+                return true;\r
+            string inFrame = tcInString.Substring(9, 2);\r
+            string outFrame = tcOutString.Substring(9, 2);\r
+            if (Int32.Parse(outFrame) <= Int32.Parse(inFrame))\r
+                return false;\r
 \r
-\r
-            //if (outro != null) {\r
-            //    DialogResult dialogResult = MessageBox.Show("Biztos felül akarja írni a kilépõt?", "Kilépõ felülírása", MessageBoxButtons.YesNo);\r
-            //    if (dialogResult == DialogResult.Yes) {\r
-            //        int outroIndex = segments.Count - 1;\r
-            //        segments.RemoveAt(outroIndex);\r
-            //        CreateAndAddOutroToSegments();\r
-            //    }\r
-            //} else\r
-            //    CreateAndAddOutroToSegments();\r
+            return true;\r
         }\r
 \r
         private MovieSegment GetCurrentSegment() {\r
@@ -398,15 +440,6 @@ namespace DxPlay {
             return null;\r
         }\r
 \r
-        //private void CreateAndAddOutroToSegments() {\r
-        //    outro = new MovieSegment() {\r
-        //        TCIn = m_play.CurrentTC,\r
-        //        TCOut = new Timecode(m_play.CurrentTC, m_play.MediaDescription.Duration)\r
-        //    };\r
-        //    int index = segments.Count;\r
-        //    segments.Insert(index, outro);\r
-        //}\r
-\r
         private void OnSplitSegmentAtCurrentPositionClick(object sender, EventArgs e) {\r
 \r
             MovieSegment segment = segments.Where(s => m_play.CurrentTC.Frames > s.TCIn.Frames && m_play.CurrentTC.Frames < s.TCOut.Frames).FirstOrDefault();\r
@@ -426,8 +459,14 @@ namespace DxPlay {
             };\r
             hSegment.TCIn.Set(m_play.CurrentTC.ZeroBasedFrames + 1);\r
             segments.Add(hSegment);\r
-\r
         }\r
 \r
+        private void dgSegments_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) {\r
+            DataGridViewColumnCollection cols = dgSegments.Columns;\r
+            if (cols.Count >= 2) {\r
+                cols[0].ReadOnly = true;\r
+                cols[1].ReadOnly = true;\r
+            }\r
+        }\r
     }\r
 }\r