Initial population

This commit is contained in:
Jon
2026-03-07 19:38:21 -06:00
commit 46735bddd3
59 changed files with 12911 additions and 0 deletions

481
frmEditHymn.vb Normal file
View File

@@ -0,0 +1,481 @@
Imports System.Windows.Forms
Public Class frmEditHymn
Inherits OrganLit.BaseEditForm
Private mobjDetailHymn As New clsHymn
Private m_objHymnTuneNamesHash As Hashtable
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents lblHymnName As Windows.Forms.Label
Friend WithEvents txtHymnName As Windows.Forms.TextBox
Friend WithEvents lblHymnTuneName As Windows.Forms.Label
Friend WithEvents cboHymnTuneName As ComboTypeAhead.ComboTypeAhead
Friend WithEvents lblHymnal As Windows.Forms.Label
Friend WithEvents lblHymnNumber As Windows.Forms.Label
Friend WithEvents txtHymnNumber As Windows.Forms.TextBox
Friend WithEvents cboHymnal As Windows.Forms.ComboBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.lblHymnName = New Windows.Forms.Label
Me.txtHymnName = New Windows.Forms.TextBox
Me.lblHymnal = New Windows.Forms.Label
Me.lblHymnTuneName = New Windows.Forms.Label
Me.cboHymnTuneName = New ComboTypeAhead.ComboTypeAhead
Me.lblHymnNumber = New Windows.Forms.Label
Me.txtHymnNumber = New Windows.Forms.TextBox
Me.cboHymnal = New Windows.Forms.ComboBox
Me.fraAddEdit.SuspendLayout()
Me.SuspendLayout()
'
'fraAddEdit
'
Me.fraAddEdit.Controls.Add(Me.cboHymnal)
Me.fraAddEdit.Controls.Add(Me.txtHymnNumber)
Me.fraAddEdit.Controls.Add(Me.lblHymnNumber)
Me.fraAddEdit.Controls.Add(Me.cboHymnTuneName)
Me.fraAddEdit.Controls.Add(Me.lblHymnTuneName)
Me.fraAddEdit.Controls.Add(Me.lblHymnal)
Me.fraAddEdit.Controls.Add(Me.txtHymnName)
Me.fraAddEdit.Controls.Add(Me.lblHymnName)
Me.fraAddEdit.Location = New System.Drawing.Point(10, 475)
Me.fraAddEdit.Size = New System.Drawing.Size(1064, 117)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.txtHymnName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnal, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnTuneName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.cboHymnTuneName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnNumber, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.txtHymnNumber, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.cboHymnal, 0)
'
'lblHymnName
'
Me.lblHymnName.Location = New System.Drawing.Point(16, 64)
Me.lblHymnName.Name = "lblHymnName"
Me.lblHymnName.Size = New System.Drawing.Size(96, 16)
Me.lblHymnName.TabIndex = 4
Me.lblHymnName.Text = "Hymn Name"
'
'txtHymnName
'
Me.txtHymnName.Location = New System.Drawing.Point(112, 64)
Me.txtHymnName.Name = "txtHymnName"
Me.txtHymnName.Size = New System.Drawing.Size(424, 20)
Me.txtHymnName.TabIndex = 5
'
'lblHymnal
'
Me.lblHymnal.Location = New System.Drawing.Point(16, 16)
Me.lblHymnal.Name = "lblHymnal"
Me.lblHymnal.Size = New System.Drawing.Size(80, 16)
Me.lblHymnal.TabIndex = 0
Me.lblHymnal.Text = "Hymnal"
'
'lblHymnTuneName
'
Me.lblHymnTuneName.Location = New System.Drawing.Point(16, 88)
Me.lblHymnTuneName.Name = "lblHymnTuneName"
Me.lblHymnTuneName.Size = New System.Drawing.Size(96, 16)
Me.lblHymnTuneName.TabIndex = 6
Me.lblHymnTuneName.Text = "Hymn Tune Name"
'
'cboHymnTuneName
'
Me.cboHymnTuneName.Location = New System.Drawing.Point(112, 88)
Me.cboHymnTuneName.Name = "cboHymnTuneName"
Me.cboHymnTuneName.Size = New System.Drawing.Size(288, 21)
Me.cboHymnTuneName.Sorted = True
Me.cboHymnTuneName.TabIndex = 7
'
'lblHymnNumber
'
Me.lblHymnNumber.Location = New System.Drawing.Point(16, 40)
Me.lblHymnNumber.Name = "lblHymnNumber"
Me.lblHymnNumber.Size = New System.Drawing.Size(80, 16)
Me.lblHymnNumber.TabIndex = 2
Me.lblHymnNumber.Text = "Hymn Number"
'
'txtHymnNumber
'
Me.txtHymnNumber.Location = New System.Drawing.Point(112, 40)
Me.txtHymnNumber.Name = "txtHymnNumber"
Me.txtHymnNumber.Size = New System.Drawing.Size(64, 20)
Me.txtHymnNumber.TabIndex = 3
'
'cboHymnal
'
Me.cboHymnal.DropDownStyle = Windows.Forms.ComboBoxStyle.DropDownList
Me.cboHymnal.Location = New System.Drawing.Point(112, 16)
Me.cboHymnal.Name = "cboHymnal"
Me.cboHymnal.Size = New System.Drawing.Size(424, 21)
Me.cboHymnal.Sorted = True
Me.cboHymnal.TabIndex = 1
'
'frmEditHymn
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(1080, 598)
Me.Name = "frmEditHymn"
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
Me.Text = "Edit Hymn"
Me.fraAddEdit.ResumeLayout(False)
Me.fraAddEdit.PerformLayout()
Me.ResumeLayout(False)
End Sub
#End Region
Protected Overrides Sub LoadExistingItemsList()
Dim lobjHymn As clsHymn
Dim lobjHymns As System.Collections.Generic.List(Of clsHymn)
SetUpExistingItemsHeaders()
lobjHymns = clsHymn.GetAllHymns
Me.ExistingItemsListSuspendLayout()
For Each lobjHymn In lobjHymns
Me.ExistingObjectsListItems.Add(ConvertHymnToListViewItem(lobjHymn))
Next
Me.ExistingItemsListResumeLayout()
End Sub
Private Sub SetUpExistingItemsHeaders()
Me.ExistingObjectsListColumns.Add("Hymnal", 100, HorizontalAlignment.Left)
Me.ExistingObjectsListColumns.Add("Hymn Number", 100, HorizontalAlignment.Left)
Me.ExistingObjectsListColumns.Add("Hymn Name", 400, HorizontalAlignment.Left)
Me.ExistingObjectsListColumns.Add("Hymn Tune Name", 200, HorizontalAlignment.Left)
'Set up sorting rules
Dim lobjBaseEditFormColumnSortRules(3) As clsGridColumnSortRule
'First column, sort by Hymnal, then Hymn Number
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
lobjBaseEditFormColumnSortRules(0).SubColumnSort = New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)
'Second column, sort by Hymnal, then Hymn Number
lobjBaseEditFormColumnSortRules(1) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortNone)
lobjBaseEditFormColumnSortRules(1).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
'Third column, sort by Hymn name, then Hymnal and Hymn Number
lobjBaseEditFormColumnSortRules(2) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
lobjBaseEditFormColumnSortRules(2).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
'Fourth column, sort by Hymn Tune name, then Hymn Name, Hymnal and Hymn Number
lobjBaseEditFormColumnSortRules(3) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
lobjBaseEditFormColumnSortRules(3).SubColumnSort = New clsGridSubColumnSortRule(2, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)))
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
End Sub
Protected Overrides Sub InitializeDetailControls()
'Load data to detail controls here at form load time
txtHymnName.MaxLength = MyGlobals.HYMN_NAME_SIZE
cboHymnTuneName.MaxLength = MyGlobals.HYMN_TUNE_NAME_SIZE
txtHymnNumber.Text = ""
txtHymnName.Text = ""
'Only set up hymnal if first time in
If cboHymnal.Items.Count = 0 Then
Dim objHymnal As clsHymnal
Dim objHymnals As System.Collections.Generic.List(Of clsHymnal)
Me.cboHymnal.Items.Clear()
objHymnals = clsHymnal.GetAllHymnals
For Each objHymnal In objHymnals
Me.cboHymnal.Items.Add(objHymnal)
Next
'Select first hymnal if there is one
If Me.cboHymnal.Items.Count > 0 Then
Me.cboHymnal.SelectedIndex = 0
End If
End If
If cboHymnTuneName.Items.Count = 0 Then
Dim objHymnTuneName As clsHymnTuneName
Dim objHymnTuneNames As System.Collections.Generic.List(Of clsHymnTuneName)
'Dim objObject As Object
Me.cboHymnTuneName.Items.Clear()
m_objHymnTuneNamesHash = New Hashtable
objHymnTuneNames = clsHymnTuneName.GetAllHymnTuneNames
For Each objHymnTuneName In objHymnTuneNames
AddHymnTuneNameToForm(objHymnTuneName)
Next
End If
End Sub
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
cboHymnal.Focus()
End Sub
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
Dim lobjSavedHymn As clsHymn
Dim lblnReturnValue As Boolean = False
lobjSavedHymn = CType(lstvwExistingItem.Tag, clsHymn)
Dim objHymnTuneName As clsHymnTuneName
Select Case cboHymnTuneName.Text.ToUpper.Trim
Case MyGlobals.NONE_STRING.ToUpper, ""
objHymnTuneName = Nothing
Case Else
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
If objHymnTuneName Is Nothing Then
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
End If
End Select
mobjDetailHymn.HymnNumberAsString = txtHymnNumber.Text
mobjDetailHymn.HymnName = txtHymnName.Text
mobjDetailHymn.Hymnal = CType(cboHymnal.SelectedItem, clsHymnal)
mobjDetailHymn.HymnTuneName = objHymnTuneName
If lobjSavedHymn.StateIsIdentical(mobjDetailHymn) Then
Return False
Else
Return True
End If
End Function
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
If txtHymnName.Text.Trim.Length > 0 _
OrElse txtHymnNumber.Text.Trim.Length > 0 Then
Return True
End If
Return False
End Function
Protected Overrides Sub EmptyOutDetailControls()
InitializeDetailControls()
txtHymnNumber.Text = ""
txtHymnName.Text = ""
cboHymnTuneName.Text = ""
mobjDetailHymn = New clsHymn
End Sub
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
Dim lobjHymn As clsHymn
Dim lblnReturnValue As Boolean = False
lobjHymn = CType(lstvwExistingItem.Tag, clsHymn)
txtHymnNumber.Text = lobjHymn.HymnNumberAsString
txtHymnName.Text = lobjHymn.HymnName
cboHymnal.Text = lobjHymn.Hymnal.ToString
If lobjHymn.HymnTuneName Is Nothing Then
cboHymnTuneName.Text = MyGlobals.NONE_STRING
Else
cboHymnTuneName.Text = lobjHymn.HymnTuneName.HymnTuneName
End If
mobjDetailHymn = CType(lobjHymn.Clone(), clsHymn)
Return True
End Function
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
Dim lobjHymn As clsHymn
Dim lstrReferencedBy As String = ""
lobjHymn = CType(lstvwItemToDelete.Tag, clsHymn)
If Not lobjHymn.OKToDelete(lstrReferencedBy) Then
MessageBox.Show("Can't delete hymn: " + lobjHymn.ToString + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Return False
End If
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete hymn: " + lobjHymn.ToString + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
If ldrDialogResult = Windows.Forms.DialogResult.No Then
Return False
End If
Return True
End Function
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
Dim lobjHymn As clsHymn
lobjHymn = CType(lstvwItemToDelete.Tag, clsHymn)
Return lobjHymn.Delete()
End Function
Protected Overrides Function SaveNewItem() As Boolean
Dim lstrErrorString As String = ""
Dim lblnAddedNewHymnTuneName As Boolean
lblnAddedNewHymnTuneName = False
Dim objHymnTuneName As clsHymnTuneName
Select Case cboHymnTuneName.Text.ToUpper.Trim
Case MyGlobals.NONE_STRING.ToUpper, ""
objHymnTuneName = Nothing
Case Else
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
If objHymnTuneName Is Nothing Then
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
lblnAddedNewHymnTuneName = True
End If
End Select
mobjDetailHymn.HymnNumberAsString = txtHymnNumber.Text
mobjDetailHymn.HymnName = txtHymnName.Text
mobjDetailHymn.Hymnal = CType(cboHymnal.SelectedItem, clsHymnal)
mobjDetailHymn.HymnTuneName = objHymnTuneName
If Not mobjDetailHymn.Validate(lstrErrorString) Then
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return False
End If
If Not mobjDetailHymn.Save() Then
Return False
End If
Me.ExistingObjectsListItems.Add(ConvertHymnToListViewItem(mobjDetailHymn))
If lblnAddedNewHymnTuneName Then
AddHymnTuneNameToForm(objHymnTuneName)
End If
Return True
End Function
Protected Overrides Sub UserRequestedToExit()
Me.Close()
End Sub
Protected Overrides Sub EditOrAddStarting()
CType(Me.ParentForm, frmMain).DisableMenus()
End Sub
Protected Overrides Sub EditOrAddCompleted()
CType(Me.ParentForm, frmMain).EnableMenus()
End Sub
Private Function ConvertHymnToListViewItem(ByVal lobjHymn As clsHymn) As ListViewItem
Dim lobjItem As ListViewItem
If lobjHymn.Hymnal Is Nothing Then
lobjItem = New ListViewItem("")
Else
lobjItem = New ListViewItem(lobjHymn.Hymnal.HymnalAbbreviation)
End If
lobjItem.SubItems.Add(lobjHymn.HymnNumberAsString)
lobjItem.SubItems.Add(lobjHymn.HymnName)
If lobjHymn.HymnTuneName Is Nothing Then
lobjItem.SubItems.Add(MyGlobals.NONE_STRING)
Else
lobjItem.SubItems.Add(lobjHymn.HymnTuneName.HymnTuneName)
End If
lobjItem.Tag = lobjHymn
Return lobjItem
End Function
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
Dim lstrErrorString As String = ""
Dim lblnAddedNewHymnTuneName As Boolean
lblnAddedNewHymnTuneName = False
Dim objHymnTuneName As clsHymnTuneName
Select Case cboHymnTuneName.Text.ToUpper.Trim
Case MyGlobals.NONE_STRING.ToUpper, ""
objHymnTuneName = Nothing
Case Else
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
If objHymnTuneName Is Nothing Then
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
lblnAddedNewHymnTuneName = True
End If
End Select
mobjDetailHymn.HymnNumberAsString = txtHymnNumber.Text
mobjDetailHymn.HymnName = txtHymnName.Text
mobjDetailHymn.Hymnal = CType(cboHymnal.SelectedItem, clsHymnal)
mobjDetailHymn.HymnTuneName = objHymnTuneName
If Not mobjDetailHymn.Validate(lstrErrorString) Then
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return False
End If
If Not mobjDetailHymn.Save() Then
Return False
End If
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
Me.ExistingObjectsListItems.Add(ConvertHymnToListViewItem(mobjDetailHymn))
If lblnAddedNewHymnTuneName Then
AddHymnTuneNameToForm(objHymnTuneName)
End If
Return True
End Function
Private Sub txtHymnName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnName.TextChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub cboHymnTuneName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboHymnTuneName.TextChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub txtHymnNumber_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnNumber.TextChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub cboHymnal_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboHymnal.SelectedIndexChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub txtHymnNumber_KeyPress(ByVal sender As Object, ByVal e As Windows.Forms.KeyPressEventArgs) Handles txtHymnNumber.KeyPress
If Not MyGlobals.AllowKeypressInNumericTextBox(e.KeyChar) Then
e.Handled = True
End If
End Sub
Protected Sub AddHymnTuneNameToForm(ByVal objHymnTuneName As clsHymnTuneName)
Me.cboHymnTuneName.Items.Add(objHymnTuneName.HymnTuneName)
m_objHymnTuneNamesHash.Add(objHymnTuneName.HymnTuneName.ToUpper, objHymnTuneName)
End Sub
End Class