public BookmarkItem(string s, double d) { sBookmarkName = s; BookmarkStart = new BookmarkTimeData(d); BookmarkEnd = new BookmarkTimeData(0); vTags = new List <string>(); }
private void buttonOK_Click(object sender, EventArgs e) { /* * 책갈피 시간배열을 만드는 작업 * */ // 입력 시각정보로 기반 시각을 작성 int nTimeOrg = Convert.ToInt32(numericHour.Value * 3600 + numericMin.Value * 60 + numericSec.Value); bUseTimeModify = checkModifyTime.Checked; bUseModifyHead = checkBoxModifyHead.Checked; bUseModifyTail = checkBoxModifyTail.Checked; nModifySec = Convert.ToInt32(numericModifySec.Value); // 내용의 색이 ControlDark일 경우 예제만 표시되어 있는 상태 = 아무것도 입력을 하지 않음 if (textBoxInputBookmark.ForeColor == SystemColors.ControlDark) { textBoxInputBookmark.Text = ""; } _vBookmarkGenerated.Clear(); // 각 라인별 루프 foreach (string sLineData in textBoxInputBookmark.Text.Split('\n')) { if (sLineData.Trim().Length == 0) { continue; } double dTimeStart, dTimeEnd; dTimeStart = dTimeEnd = 0; int nTimeBookmark = 0; string sBookmarkTitle = ""; List <string> _vsTagList = new List <string>(); int sectionCount = 0; // 라인의 입력정보 : 시간정보|태그(,로 분)|제목 foreach (string sSectionData in sLineData.Split('|')) { sectionCount++; switch (sectionCount) { case 1: // 시간 정보 int nHour, nMin, nSec; nHour = nMin = nSec = 0; // 공백으로 쪼갠 뒤 루프 foreach (string sRawTime in sSectionData.Split(' ')) { if (sRawTime.IndexOf(':') > 1) { // 시간 정보가 있는 것으로 추측 int nCnt = 1; bool bValid = true; // ':'값으로 파싱한 시/분/초별 루프 foreach (string sTimeSplit in sRawTime.Split(':')) { if (!bValid) { break; } int nTimeSplit = Convert.ToInt32(sTimeSplit); switch (nCnt) { case 1: // 시 if (nTimeSplit > 24 || nTimeSplit < 0) { bValid = false; } else { nHour = nTimeSplit; } break; case 2: // 분 if (nTimeSplit > 60 || nTimeSplit < 0) { bValid = false; } else { nMin = nTimeSplit; } break; case 3: // 초 if (nTimeSplit > 60 || nTimeSplit < 0) { bValid = false; } else { nSec = nTimeSplit; } break; case 4: // 밀리초? break; default: // 잘못된 정보일 가능성이 있음 bValid = false; break; } nCnt++; } // 문제없이 파싱했을 경우 if (bValid) { nTimeBookmark = Convert.ToInt32(nHour * 3600 + nMin * 60 + nSec); // 영상 시작시각과 책갈피한 시각의 차이값을 저장 nTimeBookmark -= nTimeOrg; // 차이값이 -일 경우 : 하루가 경과했을 경우로 판단(11:59 -> 00:00)하고, 24시간을 더함 if (nTimeBookmark < 0) { nTimeBookmark += 24 * 60 * 60; } } } } break; case 2: // 태그 정보 foreach (string sTagData in sSectionData.Split(',')) { _vsTagList.Add(sTagData.Trim()); } break; case 3: // 제목 정보 if (sSectionData.Length != 0) { sBookmarkTitle = sSectionData; } break; default: break; } } // 북마크정보 생성 dTimeStart = dTimeEnd = nTimeBookmark; // 시간 보정 여부 체크후 시간값 보정 if (bUseTimeModify) { if (bUseModifyHead) { dTimeStart = nTimeBookmark - nModifySec; } if (bUseModifyTail) { dTimeEnd = nTimeBookmark + nModifySec; } } // 시간보정 이후 시간이 - 값이 되지 않도록 보정 if (dTimeStart < 0) { dTimeStart = 0; } BookmarkTimeData time = new BookmarkTimeData(dTimeStart * 1000); string sTimeData = time.GetTime(); // 제목이 없다면 기본값으로 생성 if (sBookmarkTitle.Trim().Length == 0) { sBookmarkTitle = "책갈피 " + sTimeData; } // 책갈피 목록에 추가 BookmarkItem itemNewBookmark = new BookmarkItem(sBookmarkTitle, dTimeStart * 1000); itemNewBookmark.BookmarkEnd = new BookmarkTimeData(dTimeEnd * 1000); itemNewBookmark.vTags = _vsTagList.ToList(); itemNewBookmark.vTags.AddRange(_vsFixedTagList.ToList()); _vBookmarkGenerated.Add(itemNewBookmark); } this.DialogResult = DialogResult.OK; this.Close(); }