Code: Select all
' Adds an album artist field
'
Sub OnStartup
Dim Tree
Set Tree = SDB.MainTree
Dim AlbArtNode
Set AlbArtNode= Tree.CreateNode
AlbArtNode.Caption = "Album Artists"
AlbArtNode.IconIndex = 0
AlbArtNode.UseScript = Script.ScriptPath
AlbArtNode.OnFillChildren = "FillAlbumArtists"
Tree.AddNode Tree.Node_Library, AlbArtNode, 2
AlbArtNode.HasChildren = true
End Sub
Sub FillAlbumArtists(Node)
Node.HasChildren = false
Dim Tree, Iter
Set Tree = SDB.MainTree
Set Iter = SDB.Database.OpenSQL( "SELECT DISTINCT Artists.Artist, Artists.ID FROM (Albums INNER JOIN Artists ON Albums.IDArtist = Artists.ID) WHERE Albums.IDArtist <> 0 ORDER BY Artists.Artist" )
While Not Iter.EOF
Set NewNode = Tree.CreateNode
NewNode.Caption = Iter.StringByIndex(0)
NewNode.CustomData = Iter.ValueByIndex(1)
NewNode.IconIndex = 0
NewNode.UseScript = Script.ScriptPath
NewNode.OnFillChildren = "FillAlbums"
NewNode.OnFillTracksFunct = "FillArtistTracks"
Tree.AddNode Node, NewNode, 3 ' Add as the last child
NewNode.HasChildren = true
Iter.Next
WEnd
End Sub
Sub FillAlbums(Node)
'Node.CustomData contains Artists.ID
Node.HasChildren = false
Set Tree = SDB.MainTree
Set Iter = SDB.Database.OpenSQL( "SELECT Albums.Album, Albums.ID FROM Albums WHERE Albums.IDArtist= " & Node.CustomData & " Order BY Album")
While Not Iter.EOF
Set NewNode = Tree.CreateNode
NewNode.Caption = Iter.StringByIndex(0)
NewNode.CustomData = Iter.ValueByIndex(1)
NewNode.IconIndex = 16
NewNode.UseScript = Script.ScriptPath
NewNode.OnFillTracksFunct = "FillTracks"
Tree.AddNode Node, NewNode, 3 ' Add as the last child
Iter.Next
WEnd
End Sub
Sub FillArtistTracks( Node)
'Node.CustomData contains Artists.ID
Set Trcks = SDB.MainTracksWindow
Trcks.AddTracksFromQuery( "and Songs.ID in (SELECT Songs.ID FROM Songs,Albums WHERE Songs.IDAlbum=Albums.ID AND Albums.IDArtist="& Node.CustomData & ")")
Trcks.FinishAdding
End Sub
Sub FillTracks( Node)
'Node.CustomData contains Albums.ID
Set Trcks = SDB.MainTracksWindow
Trcks.AddTracksFromQuery( "and Songs.ID in (SELECT ID FROM Songs WHERE IDAlbum="& Node.CustomData & ")")
Trcks.FinishAdding
End Sub