Files
swarm/droplist.bas

137 lines
3.1 KiB
QBasic

Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=2.02
@EndOfDesignText@
'Class module
Sub Class_Globals
Dim pnlMn As Panel
Dim lblMn As Label
Dim btnMn As ImageView
Dim dpnl As Panel
Dim dlst As ListView
Dim dlItems As List
Dim isOpen As Boolean
Dim selPos As Int
Dim selVal As String
Dim selEvent As String
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize(pnl As Panel, txt As String, evn As String)
Dim i, j, k As Int
Dim spc As String
Dim bp As Panel
Dim v As Panel
i = pnl.Height
j = pnl.Width
pnlMn = pnl
dlItems.Initialize
pnl.Color = Colors.Gray
spc = " "
Dim gd1 As GradientDrawable
Dim cl1(2) As Int
cl1(0) = Colors.ARGB(255, 220, 220, 220)
cl1(1) = Colors.ARGB(255, 160, 160, 160)
gd1.Initialize("TOP_BOTTOM", cl1)
lblMn.Initialize("") ' control main label
pnl.AddView(lblMn, 0, 0, j-i-1, i)
lblMn.Background = gd1
lblMn.Gravity = Gravity.LEFT + Gravity.CENTER_VERTICAL
lblMn.TextColor = Colors.Black
lblMn.TextSize = 18
lblMn.Text = spc & txt
Dim gd2 As GradientDrawable
Dim cl2(2) As Int
cl2(0) = Colors.ARGB(255, 220, 220, 220)
cl2(1) = Colors.ARGB(255, 160, 160, 160)
gd2.Initialize("TOP_BOTTOM", cl2)
bp.Initialize("") ' button panel for drop button image
pnl.AddView(bp, j-i, 0, i, i)
bp.Background = gd2
btnMn.Initialize("btnMn")
bp.AddView(btnMn, 0, 0, i, i)
Dim sld1 As StateListDrawable
Dim enb, psd As BitmapDrawable
enb.Initialize(LoadBitmap(File.DirAssets, "drpimg.png"))
psd.Initialize(LoadBitmap(File.DirAssets, "drpimgp.png"))
sld1.Initialize
sld1.AddState(sld1.State_Pressed, psd)
sld1.AddState(sld1.State_Enabled, enb)
btnMn.Gravity = Gravity.FILL
btnMn.Background = sld1
Dim cd3 As ColorDrawable
cd3.Initialize(Colors.Gray, 5dip)
dpnl.Initialize("") ' the drop panel
dpnl.Background = cd3
v = GetParent(pnl)
v.AddView(dpnl, pnl.Left+j*0.03, pnl.Top+i, j, 5*i)
Dim cd4 As ColorDrawable
cd4.Initialize(Colors.LightGray, 5dip)
dlst.Initialize("dlst") ' the drop panel listview
dpnl.AddView(dlst, 0, 0, dpnl.Width, dpnl.Height)
dlst.SingleLineLayout.Background = cd4
dlst.SingleLineLayout.ItemHeight = pnl.Height
dlst.SingleLineLayout.Label.TextColor = Colors.Black
dlst.SingleLineLayout.Label.TextSize = 18
dlst.SingleLineLayout.Label.Gravity = Gravity.CENTER_HORIZONTAL + Gravity.CENTER_VERTICAL
dpnl.Enabled = False
dpnl.Visible = False
isOpen = False
selPos = -1
selVal = ""
selEvent = evn
End Sub
Sub btnMn_Click
If (isOpen = True) Then
isOpen = False
dpnl.Enabled = False
dpnl.Visible = False
Else
isOpen = True
dlst.Clear
For i=0 To dlItems.Size-1
dlst.AddSingleLine(dlItems.Get(i))
Next
dpnl.Enabled = True
dpnl.Visible = True
End If
End Sub
Sub dlst_ItemClick (pos As Int, val As Object)
selPos = pos
selVal = val
lblMn.Text = " " & val
If (isOpen = False) Then Return
CallSubDelayed(Main, selEvent)
btnMn_Click
End Sub
Sub GetParent(v As View) As View
Dim r As Reflector
r.Target = v
Return r.RunMethod("getParent")
End Sub