Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 32 additions & 32 deletions uTable.sln
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.8.12023.21 stable
VisualStudioVersion = 18.8.12023.21
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "uTable", "utable\uTable.vbproj", "{F81002BD-7D4C-48FF-A334-07769E79EFCA}"
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "uTablePackage", "uTablePackage\uTablePackage.wapproj", "{183729D8-02F1-4DD9-B373-60B4D49C1523}"
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "uTablePackage", "uTablePackage\uTablePackage.wapproj", "{624BD3B2-B3CE-4940-9AEA-A74D137E824A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -41,36 +41,36 @@ Global
{F81002BD-7D4C-48FF-A334-07769E79EFCA}.Release|x64.Build.0 = Release|Any CPU
{F81002BD-7D4C-48FF-A334-07769E79EFCA}.Release|x86.ActiveCfg = Release|Win32
{F81002BD-7D4C-48FF-A334-07769E79EFCA}.Release|x86.Build.0 = Release|Win32
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|Any CPU.Build.0 = Debug|Any CPU
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|ARM.ActiveCfg = Debug|ARM
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|ARM.Build.0 = Debug|ARM
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|ARM.Deploy.0 = Debug|ARM
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|ARM64.ActiveCfg = Debug|ARM64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|ARM64.Build.0 = Debug|ARM64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|ARM64.Deploy.0 = Debug|ARM64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|x64.ActiveCfg = Debug|x64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|x64.Build.0 = Debug|x64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|x64.Deploy.0 = Debug|x64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|x86.ActiveCfg = Debug|x86
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|x86.Build.0 = Debug|x86
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Debug|x86.Deploy.0 = Debug|x86
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|Any CPU.ActiveCfg = Release|Any CPU
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|Any CPU.Build.0 = Release|Any CPU
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|Any CPU.Deploy.0 = Release|Any CPU
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|ARM.ActiveCfg = Release|ARM
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|ARM.Build.0 = Release|ARM
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|ARM.Deploy.0 = Release|ARM
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|ARM64.ActiveCfg = Release|ARM64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|ARM64.Build.0 = Release|ARM64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|ARM64.Deploy.0 = Release|ARM64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|x64.ActiveCfg = Release|x64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|x64.Build.0 = Release|x64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|x64.Deploy.0 = Release|x64
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|x86.ActiveCfg = Release|x86
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|x86.Build.0 = Release|x86
{183729D8-02F1-4DD9-B373-60B4D49C1523}.Release|x86.Deploy.0 = Release|x86
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|ARM.ActiveCfg = Debug|ARM
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|ARM.Build.0 = Debug|ARM
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|ARM.Deploy.0 = Debug|ARM
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|ARM64.Build.0 = Debug|ARM64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|ARM64.Deploy.0 = Debug|ARM64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|x64.ActiveCfg = Debug|x64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|x64.Build.0 = Debug|x64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|x64.Deploy.0 = Debug|x64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|x86.ActiveCfg = Debug|x86
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|x86.Build.0 = Debug|x86
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Debug|x86.Deploy.0 = Debug|x86
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|Any CPU.Build.0 = Release|Any CPU
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|Any CPU.Deploy.0 = Release|Any CPU
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|ARM.ActiveCfg = Release|ARM
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|ARM.Build.0 = Release|ARM
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|ARM.Deploy.0 = Release|ARM
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|ARM64.ActiveCfg = Release|ARM64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|ARM64.Build.0 = Release|ARM64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|ARM64.Deploy.0 = Release|ARM64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|x64.ActiveCfg = Release|x64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|x64.Build.0 = Release|x64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|x64.Deploy.0 = Release|x64
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|x86.ActiveCfg = Release|x86
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|x86.Build.0 = Release|x86
{624BD3B2-B3CE-4940-9AEA-A74D137E824A}.Release|x86.Deploy.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
9 changes: 8 additions & 1 deletion utable/Forms/SetCourse.vb
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,14 @@ Public Class SetCourse

Private Sub DeleteBT_Click(sender As Object, e As EventArgs) Handles DeleteBT.Click
If MsgBox("정말로 지우시겠습니까?", vbQuestion + vbYesNo) = vbYes Then
writeTable(readTable().Replace(vbCrLf + "<course>" + olddata + "</course>", Nothing))
Dim updatedData As String = Nothing

If Not TryRemoveTableCourse(readTable(), olddata, updatedData) Then
MsgBox("삭제할 수업을 현재 시간표에서 찾지 못했습니다. 시간표를 새로고침한 후 다시 시도해 주세요.", vbExclamation)
Exit Sub
End If

writeTable(updatedData)
TableForm.updateCell()
Close()
End If
Expand Down
26 changes: 25 additions & 1 deletion utable/Modules/DataModule.vb
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ Module DataModule
Return GetElementInnerXml(child)
End Function

'course 바로 아래의 서식용 공백은 비교에서 제외하되, 각 필드의 내용은 보존한다.
Private Function GetCourseComparisonData(element As XElement) As String
Return String.Concat(element.Elements().Select(Function(child) child.ToString(SaveOptions.DisableFormatting)))
End Function

Private Function ToTableCourse(element As XElement) As TableCourse
Return New TableCourse With {
.RawData = GetElementInnerXml(element).Trim(),
Expand All @@ -101,7 +106,26 @@ Module DataModule
Return document.Root.Elements("course").Select(Function(element) ToTableCourse(element)).ToList()
End Function

'olddata처럼 course 내부 fragment만 가진 기존 화면을 위한 단일 과목 파서.
'표시 중인 과목의 원본 fragment와 일치하는 course 요소를 XML 구조에서 제거한다.
'문자열 치환과 달리 줄바꿈이나 들여쓰기 형식에 영향을 받지 않는다.
Public Function TryRemoveTableCourse(datastr As String, rawCourseData As String, ByRef result As String) As Boolean
Dim document As XDocument = ParseTableFragment(datastr)
Dim rawCourse As XElement = ParseTableFragment("<course>" + rawCourseData + "</course>").Root.Element("course")
Dim targetData As String = GetCourseComparisonData(rawCourse)
Dim target As XElement = document.Root.Elements("course").FirstOrDefault(
Function(element) GetCourseComparisonData(element) = targetData)

If target Is Nothing Then
result = datastr
Return False
End If

target.Remove()
result = SerializeTableFragment(document)
Return True
End Function

'olddata처럼 course 내부 fragment만 가진 기존 화면을 위한 단일 과목 파서
Public Function getTableCourse(datastr As String) As TableCourse
Dim document As XDocument = ParseTableFragment("<course>" + datastr + "</course>")
Return ToTableCourse(document.Root.Element("course"))
Expand Down
Loading