private void Open(List <Bot.SubjectStruct> subject) { List <TimeElement> al = new List <TimeElement>(); foreach (Bot.SubjectStruct ss in subject) { TimeElement te = TimeParser.Get(ss.시강); te.index = ss.index.ToString(); al.Add(te); } txts.Add(al); view_table = txts[0]; }
/// <summary> /// 특정 과목을 강제로 추가합니다. /// </summary> public void DoAddSubject(int index) { PushUndo(); foreach (List <TimeElement> lte in subject_group) { foreach (TimeElement te in lte) { if (te.index == index.ToString()) { MessageBox.Show("같은 과목이 이미 추가되었습니다.", Version.Name, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } // 같은 이름을 가진 과목을 찾는다 for (int i = 0; i < subject_group.Count; i++) { if (bot.subject[Convert.ToInt32(subject_group[i][0].index)].과목명 == bot.subject[index].과목명) { TimeElement te = TimeParser.Get(bot.subject[index].시강); te.index = index.ToString(); subject_group[i].Add(te); return; } } // 같은 이름을 가진 과목이 없다면 새로 만든다. List <Bot.SubjectStruct> ssl = new List <Bot.SubjectStruct>(); List <TimeElement> subjects = new List <TimeElement>(); TimeElement ite = TimeParser.Get(bot.subject[index].시강); ite.index = index.ToString(); subjects.Add(ite); ssl.Add(bot.subject[index]); subject_group.Add(subjects); AppendSubjectsToList(ssl); UpdateCombination(); }
/// <summary> /// frmTTViewer에서 '이 시간표를 기반으로 시간표 만들기'버튼을 누를때 이 함수가 호출됩니다. /// </summary> public void DoFixedMode(List <TimeElement> subject) { PushUndo(); subject_group.Clear(); List <Bot.SubjectStruct> ssl = new List <Bot.SubjectStruct>(); foreach (TimeElement tex in subject) { Bot.SubjectStruct ss = bot.subject[Convert.ToInt32(tex.index)]; List <TimeElement> subjects = new List <TimeElement>(); TimeElement te = TimeParser.Get(ss.시강); te.index = ss.index.ToString(); subjects.Add(te); ssl.Add(ss); subject_group.Add(subjects); } lvSearch.Items.Clear(); AppendSubjectsToList(ssl); UpdateCombination(); }
/// <summary> /// 조합 파일 불러오기 /// </summary> private void Open() { try { string line; System.IO.StreamReader file = new System.IO.StreamReader(frmMain.PathCombinations); while ((line = file.ReadLine()) != null) { List <TimeElement> al = new List <TimeElement>(); foreach (string ix in line.Split('|')) { if (ix != "") { foreach (Bot.SubjectStruct ss in subject) { if (ss.index.ToString() == ix) { TimeElement te = TimeParser.Get(ss.시강); te.index = ss.index.ToString(); al.Add(te); } } } } txts.Add(al); } file.Close(); if (txts.Count > 0) { view_table = txts[0]; } if (txts.Count == 1) { bRight.Enabled = false; } } catch { } }
/// <summary> /// 시간 정보를 해석합니다. /// </summary> static public TimeElement Get(string table) { TimeElement te = new TimeElement(); try { /* * * 시간 표시 유형이 두 가지가 있다. * * 1. 월1,2,3(하-101)/화1,2,3(2-112) * 2. 월1,2,3화1,2,3(60주년-1012) * * 혼종 발견 ( 처리안함 귀찮음 ) * 3. 월1,2,3,화1,2,3(하-101)/수1,2,3(60주년-7077) * */ string dayOfWeek = TimeTableSettings.DayOfWeek; foreach (string s in table.Split('/')) { string i = s.Trim(); int j = -1; if (dayOfWeek.Contains(i[0])) { j = TimeTableSettings.DayMaxClass * dayOfWeek.IndexOf(i[0]); i = i.Substring(1); foreach (string t in i.Split(',')) { // 강의실 제외한 나머지를 구겨넣음 if (t.Contains('(')) { te.Add(j + Convert.ToInt32(t.Remove(t.IndexOf('('))) - 1); } else { // 2 유형의 경우 "화1" 처럼 숫자와 문자가 붙어 있음 if (dayOfWeek.Contains(t[0])) { j = TimeTableSettings.DayMaxClass * dayOfWeek.IndexOf(t[0]); te.Add(j + Convert.ToInt32(t.Substring(1)) - 1); } else { te.Add(j + Convert.ToInt32(t) - 1); } } } } } foreach (string c in getSlice(table)) { te.cr.Add(c); } if (te.cr[0] == "웹강의" && te.cr.Count > 1) { te.cr[0] = te.cr[1]; te.with_web = true; } else if (te.cr.Count == 1) { te.cr.Add(te.cr[0]); } } catch { } return(te); }