vbAccelerator - Contents of code file: frmDiscID.frm

VERSION 5.00
Begin VB.Form frmDiskID 
   Caption         =   "Disk ID Calculator and Track Listing"
   ClientHeight    =   7425
   ClientLeft      =   2340
   ClientTop       =   2490
   ClientWidth     =   10185
   BeginProperty Font 
      Name            =   "Tahoma"
      Size            =   8.25
      Charset         =   0
      Weight          =   400
      Underline       =   0   'False
      Italic          =   0   'False
      Strikethrough   =   0   'False
   EndProperty
   Icon            =   "frmDiscID.frx":0000
   LinkTopic       =   "Form1"
   ScaleHeight     =   7425
   ScaleWidth      =   10185
   Begin VB.ListBox lstDetails 
      Height          =   2595
      Left            =   1020
      TabIndex        =   8
      Top             =   4620
      Width           =   3855
   End
   Begin VB.CommandButton cmdQueryCDDB 
      Caption         =   "Get &Details..."
      Height          =   435
      Left            =   1020
      TabIndex        =   7
      Top             =   4140
      Width           =   1275
   End
   Begin VB.CommandButton cmdConfigure 
      Caption         =   "&Configure..."
      Height          =   375
      Left            =   180
      TabIndex        =   6
      Top             =   120
      Width           =   1335
   End
   Begin VB.TextBox txtCDDBQuery 
      Height          =   315
      Left            =   1020
      TabIndex        =   2
      Text            =   $"frmDiscID.frx":1272
      Top             =   3720
      Width           =   3795
   End
   Begin VB.ListBox lstToc 
      Height          =   2595
      Left            =   1020
      TabIndex        =   1
      Top             =   1020
      Width           =   3795
   End
   Begin VB.ComboBox cboDrives 
      Height          =   315
      Left            =   1020
      Style           =   2  'Dropdown List
      TabIndex        =   0
      Top             =   540
      Width           =   3795
   End
   Begin VB.Label lblCDDBQuery 
      Caption         =   "&Query:"
      Height          =   255
      Left            =   120
      TabIndex        =   5
      Top             =   3780
      Width           =   1095
   End
   Begin VB.Label lblToc 
      Caption         =   "&Toc:"
      Height          =   255
      Left            =   180
      TabIndex        =   4
      Top             =   1080
      Width           =   1095
   End
   Begin VB.Label lblDrives 
      Caption         =   "&Drives:"
      Height          =   255
      Left            =   180
      TabIndex        =   3
      Top             =   600
      Width           =   1155
   End
End
Attribute VB_Name = "frmDiskID"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private m_cCDDrives As cCDDrives
Private WithEvents m_cFreeDb As cFreeDB
Attribute m_cFreeDb.VB_VarHelpID = -1

Private Sub showDrives()
   
   Dim i As Long
   For i = 1 To m_cCDDrives.Count
      cboDrives.AddItem _
         "Host Adaptor: " & m_cCDDrives.HostAdaptor(i) & _
         ", Device ID: " & m_cCDDrives.id(i) & _
         ", LUN: " & m_cCDDrives.lun(i)
   Next i
   If (cboDrives.ListCount > 0) Then
      cboDrives.ListIndex = 0
   End If

End Sub


Private Sub cboDrives_Click()
   
   Screen.MousePointer = vbHourglass
   
   lstToc.Clear
   txtCDDBQuery.Text = ""
   
   Dim cToc As cCDToc
   
   Set cToc = m_cCDDrives.TOC(cboDrives.ListIndex + 1)
   
   If (cToc.NoCD) Then
      lstToc.AddItem "No CD."
   Else
   
      lstToc.AddItem "Tracks on CD: " & cToc.TrackCount
      lstToc.AddItem ""
      ' Add the tracks:
      Dim i As Long
      For i = 1 To cToc.TrackCount
         lstToc.AddItem _
            "Track " & Format(i, "000") & ": " & _
            Format(cToc.TrackLengthMinutes(i), "00") & ":" & _
            Format(cToc.TrackLengthSeconds(i), "00") & ":" & _
            Format(cToc.TrackLengthFrames(i), "00") & " " & _
            IIf(cToc.TrackType(i) = ECDAudio, "(Audio) ", "(Data)  ") & _
            "Offset:" & _
            cToc.TrackOffset(i)
            
      Next i
      lstToc.AddItem "Lead Out: " & _
            Format(cToc.LeadOutMinutes, "00") & ":" & _
            Format(cToc.LeadOutSeconds, "00") & ":" & _
            Format(cToc.LeadOutFrames, "00") & "    Offset:" & _
            cToc.LeadOutOffset
      lstToc.AddItem "Total Length (s): " & cToc.TotalLengthSeconds
      lstToc.AddItem ""
      lstToc.AddItem "Disk ID: " & Hex(cToc.CDDBId)
      txtCDDBQuery.Text = cToc.CDDBQuery
      
   End If
   
   Screen.MousePointer = vbNormal
   
End Sub

Private Sub cmdConfigure_Click()
   Dim fC As New frmConfigureFreeDb
   fC.FreeDB = m_cFreeDb
   fC.Show vbModal, Me
End Sub

Private Sub cmdQueryCDDB_Click()
   lstDetails.Clear
   cmdQueryCDDB.Enabled = False
   m_cFreeDb.Command = txtCDDBQuery.Text
   m_cFreeDb.Start
End Sub

Private Sub Form_Load()
   
   Me.Show
   Me.Refresh
   
   Set m_cCDDrives = New cCDDrives
   showDrives
   
   Set m_cFreeDb = New cFreeDB
   
End Sub

Private Sub Form_Resize()
   On Error Resume Next
   Dim lWidth As Long
   lWidth = Me.ScaleWidth - cboDrives.Left - 8 * Screen.TwipsPerPixelX
   cboDrives.Width = lWidth
   lstToc.Width = lWidth
   txtCDDBQuery.Width = lWidth
   lstDetails.Width = lWidth
End Sub

Private Sub m_cFreeDb_CommandReady()
   Select Case True
   Case InStr(m_cFreeDb.Command, "cddb query") > 0
      Dim cQR As cFreeDbQueryResponse
      Set cQR = m_cFreeDb.QueryResponse
      If (cQR.MatchCount = 0) Then
         If (cQR.ReturnCode = QRMoreThanOneMatch) Then
            MsgBox "No matches found for that CD.", vbInformation
         Else
            MsgBox "Failed to retrieve information: " &
             cQR.ReturnCodeDescription, vbExclamation
         End If
         cmdQueryCDDB.Enabled = True
      Else
         Dim iIndex As Long
         If (cQR.MatchCount > 1) Then
            Dim fS As New frmSelectMatch
            fS.QueryResponse = cQR
            fS.Show vbModal, Me
            iIndex = fS.SelectedMatch
         Else
            iIndex = 1
         End If
         If (iIndex > 0) Then
            lstDetails.AddItem "Artist:  " & cQR.Artist(iIndex)
            lstDetails.AddItem "Title:   " & cQR.Title(iIndex)
            lstDetails.AddItem "Category:" & cQR.Category(iIndex)
            lstDetails.AddItem ""
            m_cFreeDb.Command = "cddb read " & cQR.Category(iIndex) & " " &
             cQR.DiscID(iIndex)
            m_cFreeDb.Start
         Else
            cmdQueryCDDB.Enabled = True
         End If
      End If
      
   Case InStr(m_cFreeDb.Command, "cddb read") > 0
      showCDDetails m_cFreeDb.ReadResponse
      cmdQueryCDDB.Enabled = True
   End Select
End Sub

Private Sub showCDDetails( _
      cRR As cFreeDbReadResponse _
   )
   With cRR
      Dim i As Long
      For i = 1 To .TrackCount
         lstDetails.AddItem .Title(i)
      Next i
   End With
End Sub