public FrmViewSRT(GroupedSRT groupedSRT)
        {
            InitializeComponent();

            _groupedSRT = groupedSRT;

            UpdateUI();
        }
        public FrmCreateSRT(GroupedSRT groupedSRT, string transcriptPDFPath)
        {
            InitializeComponent();

            _groupedSRT        = groupedSRT;
            _transcriptPDFPath = transcriptPDFPath;

            UpdateUI();
        }
        private void btnRead_Click(object sender, EventArgs e)
        {
            sRTInfos        = new List <SRTInfo>();
            ignoredSRTInfos = new List <SRTInfo>();
            groupedSRTs     = new List <GroupedSRT>();

            btnAddSRT.Enabled         = true;
            btnRemoveSRT.Enabled      = true;
            btnViewIgnoredSRT.Enabled = true;

            dgvReadSRTContent.Rows.Clear();
            dgvSRTList.Rows.Clear();

            SRTInfo sRTInfo = null;

            FileInfo fileInfo = new FileInfo(txtPDFFilePath.Text);

            txtFileName.Text = fileInfo.Name;

            int    pageIndex   = 1;
            string pageContent = "";

            string[] lines;
            string   strLine;
            int      lineIndex          = 0;
            bool     isSRT              = false;
            bool     isSRTStartedInPage = false;
            DateTime tmStart            = new DateTime();
            DateTime tmEnd              = new DateTime();
            string   strSubtitlte       = "";
            bool     blIsNewSRTScript   = false;

            PdfReader pdfReader = new PdfReader(txtPDFFilePath.Text);
            int       pageCount = pdfReader.NumberOfPages;
            int       SRTIndex  = 0;

            //loops throughtthe pages
            for (pageIndex = 1; pageIndex <= pageCount; pageIndex++)
            {
                pageContent = PdfTextExtractor.GetTextFromPage(pdfReader, pageIndex, new LocationTextExtractionStrategy());

                lines = pageContent.Split('\n');

                isSRT = false;
                isSRTStartedInPage = false;

                sRTInfo = null;

                //Loops through the lines
                for (lineIndex = 0; lineIndex < lines.Length; lineIndex++)
                {
                    strLine = lines[lineIndex].Trim();
                    isSRT   = Helpers.isSRT(strLine);

                    //Checks line is SRT
                    if (isSRT)
                    {
                        if (isSRTStartedInPage == false)
                        {
                            isSRTStartedInPage = true;
                        }

                        if (sRTInfo != null)
                        {
                            sRTInfos.Add(sRTInfo);
                        }

                        tmStart      = Helpers.getTimeFromSRT(strLine);
                        tmEnd        = tmStart.AddMinutes(5);
                        strSubtitlte = Helpers.getTextFromSRT(strLine);

                        blIsNewSRTScript = isNewSRTScript(sRTInfos, tmStart);

                        if (blIsNewSRTScript)
                        {
                            //sRTInfos = new List<SRTInfo>();
                        }
                        else
                        {
                            if (sRTInfos.Count > 0)
                            {
                                sRTInfos[sRTInfos.Count - 1].EndTime = tmStart.AddSeconds(-1).AddMilliseconds(999);
                            }
                        }

                        sRTInfo = null;

                        SRTIndex++;
                        sRTInfo           = new SRTInfo();
                        sRTInfo.isRemoved = false;
                        sRTInfo.Index     = SRTIndex;
                        sRTInfo.StartTime = tmStart;
                        sRTInfo.EndTime   = tmEnd;
                        sRTInfo.SRT_Text  = strSubtitlte;
                        sRTInfo.SRT_Lines = new List <string>();
                        sRTInfo.SRT_Lines.Add(strSubtitlte);
                    }
                    else
                    {
                        if (isSRTStartedInPage)
                        {
                            if (Helpers.isFooterContent(strLine.Trim()))
                            {
                                ignoredSRTInfos.Add(new SRTInfo
                                {
                                    Index     = sRTInfo.Index,
                                    StartTime = sRTInfo.StartTime,
                                    EndTime   = sRTInfo.EndTime,
                                    SRT_Text  = strLine.Trim(),
                                    SRT_Lines = new List <string>()
                                    {
                                        strLine.Trim()
                                    },
                                });
                            }
                            else
                            {
                                sRTInfo.SRT_Text += " " + strLine.Trim();
                                sRTInfo.SRT_Lines.Add(strLine.Trim());
                            }
                        }
                    }
                }

                if (sRTInfo != null)
                {
                    sRTInfos.Add(sRTInfo);
                    sRTInfo = null;
                }
            }


            int        groupedSRTIndex = 0;
            GroupedSRT groupedSRT      = null;

            foreach (SRTInfo objSRTInfo in sRTInfos)
            {
                if (groupedSRTs.Count == 0 ||
                    objSRTInfo.StartTime < groupedSRT.sRTInfos[groupedSRT.sRTInfos.Count - 1].EndTime)
                {
                    groupedSRTIndex++;
                    groupedSRT           = new GroupedSRT();
                    groupedSRT.GroupName = "Unit " + groupedSRTIndex;
                    groupedSRT.sRTInfos  = new List <SRTInfo>();
                    groupedSRTs.Add(groupedSRT);
                }
                groupedSRT.sRTInfos.Add(objSRTInfo);

                objSRTInfo.isRemoved = true;
            }

            foreach (GroupedSRT objGroupedSRT in groupedSRTs)
            {
                DataGridViewRow dataGridViewRow = new DataGridViewRow();
                dataGridViewRow.CreateCells(dgvSRTList);
                dataGridViewRow.Cells[0].Value = objGroupedSRT.GroupName;
                dataGridViewRow.Cells[1].Value = objGroupedSRT.sRTInfos.Count;

                dgvSRTList.Rows.Add(dataGridViewRow);
            }

            updateSRTDataGridView();
        }
        private void btnAddSRT_Click(object sender, EventArgs e)
        {
            if (dgvReadSRTContent.SelectedRows.Count == 0)
            {
                MessageBox.Show("Select rows.", "SRT");
                return;
            }

retry:
            string SRTName = Microsoft.VisualBasic.Interaction.InputBox("Enter name of the SRT", "SRTName");

            if (SRTName.Trim() == "")
            {
                goto retry;
            }

            foreach (GroupedSRT objGroupedSRT in groupedSRTs)
            {
                if (objGroupedSRT.GroupName.Trim().ToLower() == SRTName.Trim().ToLower())
                {
                    MessageBox.Show("SRTName already exists");
                    goto retry;
                }
            }

            GroupedSRT groupedSRT = new GroupedSRT();

            groupedSRT.sRTInfos  = new List <SRTInfo>();
            groupedSRT.GroupName = SRTName;
            SRTInfo sRTInfo = null;

            int rowSRTIndex = 0;

            foreach (DataGridViewRow row in dgvReadSRTContent.Rows)
            {
                if (row.Selected)
                {
                    rowSRTIndex = (int)row.Cells[0].Value;

                    foreach (SRTInfo objSRTInfo in sRTInfos)
                    {
                        if (objSRTInfo.Index == rowSRTIndex)
                        {
                            sRTInfo = new SRTInfo();

                            sRTInfo.Index     = objSRTInfo.Index;
                            sRTInfo.StartTime = objSRTInfo.StartTime;
                            sRTInfo.EndTime   = objSRTInfo.EndTime;
                            sRTInfo.SRT_Lines = objSRTInfo.SRT_Lines;
                            sRTInfo.SRT_Text  = objSRTInfo.SRT_Text;

                            groupedSRT.sRTInfos.Add(sRTInfo);

                            objSRTInfo.isRemoved = true;
                            break;
                        }
                    }
                }
            }

            groupedSRTs.Add(groupedSRT);

            DataGridViewRow dataGridViewRow = new DataGridViewRow();

            dataGridViewRow.CreateCells(dgvSRTList);
            dataGridViewRow.Cells[0].Value = groupedSRT.GroupName;
            dataGridViewRow.Cells[1].Value = groupedSRT.sRTInfos.Count;

            dgvSRTList.Rows.Add(dataGridViewRow);

            foreach (SRTInfo objSRTInfo in sRTInfos)
            {
                foreach (DataGridViewRow row in dgvReadSRTContent.Rows)
                {
                    rowSRTIndex = (int)row.Cells[0].Value;

                    if (rowSRTIndex == objSRTInfo.Index)
                    {
                        if (objSRTInfo.isRemoved == true)
                        {
                            row.Visible = false;
                        }
                        break;
                    }
                }
            }
        }