Files
ReplyAutoV1---WIP/B4A/cvFloatingBtn.bas
2023-09-24 03:29:06 -06:00

89 lines
3.5 KiB
QBasic

B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=10.5
@EndOfDesignText@
'Custom View class
#Event: ExampleEvent (Value As Int)
'#DesignerProperty: Key: Width, DisplayName: Width, FieldType: int, DefaultValue: 55, Description: Width of button.
'#DesignerProperty: Key: Height, DisplayName: Height, FieldType: int, DefaultValue: 55, Description: Height of button.
#DesignerProperty: Key: ImageFile, DisplayName: Image File, FieldType: String, DefaultValue: , Description: Image for button.
'#DesignerProperty: Key: BooleanExample, DisplayName: Boolean Example, FieldType: Boolean, DefaultValue: True, Description: Example of a boolean property.
'#DesignerProperty: Key: IntExample, DisplayName: Int Example, FieldType: Int, DefaultValue: 10, MinRange: 0, MaxRange: 100, Description: Note that MinRange and MaxRange are optional.
'#DesignerProperty: Key: StringWithListExample, DisplayName: String With List, FieldType: String, DefaultValue: Sunday, List: Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday
'#DesignerProperty: Key: StringExample, DisplayName: String Example, FieldType: String, DefaultValue: Text
'#DesignerProperty: Key: ColorExample, DisplayName: Color Example, FieldType: Color, DefaultValue: 0xFFCFDCDC, Description: You can use the built-in color picker to find the color values.
'#DesignerProperty: Key: DefaultColorExample, DisplayName: Default Color Example, FieldType: Color, DefaultValue: Null, Description: Setting the default value to Null means that a nullable field will be displayed.
Sub Class_Globals
Private mEventName As String 'ignore
Private mCallBack As Object 'ignore
Private mBase As Panel
Private Const DefaultColorConstant As Int = -984833 'ignore
Private Const ACTION_DOWN=0,ACTION_UP=1 As Int
Private downx, downy As Float 'ignore
Private S1,S2,Diff As Long
End Sub
Public Sub Initialize (Callback As Object, EventName As String)
mEventName = EventName
mCallBack = Callback
End Sub
Public Sub DesignerCreateView (Base As Panel, Lbl As Label, Props As Map)
mBase = Base
Private ImgFl As String
ImgFl = Props.Get("ImageFile")
If ImgFl <> "" Then mBase.SetBackgroundImage(LoadBitmap(File.DirAssets,ImgFl))
SetOnTouchListener(mBase)
End Sub
Public Sub GetBase As Panel
Return mBase
End Sub
Public Sub setLeft(Left As Int)
mBase.Left = Left
End Sub
Public Sub setTop(Top As Int)
mBase.Top = Top
End Sub
Public Sub setVisible(Flag As Boolean)
mBase.Visible = Flag
End Sub
Private Sub SetOnTouchListener(MyView As View)
Dim ref As Reflector
ref.Target = MyView
ref.SetOnTouchListener("Panel_Touch")
End Sub
Private Sub Panel_Touch(ViewTag As Object, Action As Int, X As Float, Y As Float, MotionEvent As Object) As Boolean
If Action = ACTION_DOWN Then
downx = x
downy = y
S1 = DateTime.Now
else If Action = ACTION_UP Then
S2 = DateTime.Now
Diff = S2 - S1
If Diff <= 199 Then
If SubExists(mCallBack,mEventName.Trim & "_Clicked") Then CallSub3(mCallBack,mEventName.Trim & "_Clicked",X,Y)
End If
Else
' Log(mBase.left& " + " & x & " - " & downx)
If mBase.Left >= 14 And mBase.Left <= 900 Then mBase.Left = mBase.Left + x - downx
If mBase.Left < 14 And (X-downx) > 0 Then mBase.Left = mBase.Left + x - downx
' If mBase.Left < 900 Then mBase.Left = mBase.Left + x - downx
If mBase.Left > 900 And (X-downx) < 0 Then mBase.Left = mBase.Left + x - downx
' mBase.Top = mBase.Top + y - downy
mBase.Left = mBase.Left
If mBase.Left < 10 Then mBase.Left = 14 'ignore
If mBase.Left > 910 Then mBase.Left = 900 'ignore
' mBase.Top = mBase.Top
End If
Return True
End Sub