Change LinkedListIndex and GadgetState at the same time??
Posted: Thu Sep 22, 2005 7:43 pm
Hi, i have here a LinkList:
This List save the Name of the MP3 and the Path.
I have a WCB, whit this WCB i can move Items in a ListIconGadget:
When i move a MP3 in the list must be change the MP3Index of the LinkedListItem and the ID of the ListIconGadget, because i Play the MP3 with the Id´s and Index´s. Here the PlayProcedure
Who can i change the moved Item by the GadgetState and Linked List ID? Need Help. Thanks for answers.
Sorry for bad english.... SchoolEnglish Grade 10.... :rolleyes:
With frindly Greets
Blackskyliner
Code: Select all
Structure Lieder
MP3NAME.s ;Name
MP3FILE.s ;Path
EndStructure
NewList MP3Lied.Lieder()
I have a WCB, whit this WCB i can move Items in a ListIconGadget:
Code: Select all
Global IsDraging, DragImageList, SourceGadget, SourceItem, TargetGadget, TargetItem
TargetGadget = -1
Procedure WCB(wnd, message, wParam, lParam)
; Window = #Window_Player
If message = #WM_NOTIFY
*nmhdr.NMHDR = lParam
If *nmhdr\hwndFrom = GadgetID(#Playlist); Or *nmhdr\hwndfrom = GadgetID(#ListIcon2)
If *nmhdr\code = #LVN_BEGINDRAG
If *nmhdr\hwndFrom = GadgetID(#Playlist)
SourceGadget = #Playlist
; Else
; SourceGadget = #ListIcon2
EndIf
*nmv.NMLISTVIEW = lParam
SourceItem = *nmv\iItem
DragImageList = SendMessage_(GadgetID(SourceGadget), #LVM_CREATEDRAGIMAGE, SourceItem, @UpperLeft.POINT)
If DragImageList
If ImageList_BeginDrag_(DragImageList , 0, 0, 0)
ImageList_DragShowNolock_(#True)
SetCapture_(GetParent_(GadgetID(SourceGadget)))
ShowCursor_(#True)
IsDraging = #True
EndIf
EndIf
EndIf
EndIf
ElseIf message = #WM_MOUSEMOVE And IsDraging
ImageList_DragMove_(WindowMouseX()+WindowX(), WindowMouseY()+WindowY())
ImageList_DragShowNolock_(#False)
MouseX = lParam & $FFFF
MouseY = lParam >> 16
If TargetGadget <> -1
pitem.LV_ITEM
pitem\Mask = #LVIF_STATE
pitem\iItem = TargetItem
pitem\State = 0
pitem\stateMask = #LVIS_DROPHILITED
SendMessage_(GadgetID(TargetGadget), #LVM_SETITEM, 0, @pitem)
RedrawWindow_(GadgetID(TargetGadget), 0, 0, #RDW_UPDATENOW)
EndIf
TargetGadgetID = ChildWindowFromPoint_(WindowID(#Window_Player), MouseX, MouseY)
If TargetGadgetID = GadgetID(#Playlist)
TargetGadget = #Playlist
ElseIf TargetGadgetID = GadgetID(#ListIcon2)
TargetGadget = #ListIcon2
Else
TargetGadget = -1
EndIf
If TargetGadget <> -1
hittestinfo.LV_HITTESTINFO
hittestinfo\pt\x = MouseX - GadgetX(TargetGadget)
hittestinfo\pt\y = MouseY - GadgetY(TargetGadget)
TargetItem = SendMessage_(GadgetID(TargetGadget), #LVM_HITTEST, 0, @hittestinfo)
pitem.LV_ITEM
pitem\Mask = #LVIF_STATE
pitem\iItem = TargetItem
pitem\State = #LVIS_DROPHILITED
pitem\stateMask = #LVIS_DROPHILITED
SendMessage_(GadgetID(TargetGadget), #LVM_SETITEM, 0, @pitem)
RedrawWindow_(GadgetID(TargetGadget), 0, 0, #RDW_UPDATENOW) ; again a redraw
EndIf
ImageList_DragShowNolock_(#True)
ElseIf message = #WM_LBUTTONUP And IsDraging
ReleaseCapture_()
ImageList_EndDrag_()
ImageList_Destroy_(DragImageList)
ShowCursor_(#True)
IsDraging = #False
If TargetGadget <> -1
pitem.LV_ITEM
pitem\Mask = #LVIF_STATE
pitem\iItem = TargetItem
pitem\State = 0
pitem\stateMask = #LVIS_DROPHILITED
SendMessage_(GadgetID(TargetGadget), #LVM_SETITEM, 0, @pitem)
RedrawWindow_(GadgetID(TargetGadget), 0, 0, #RDW_UPDATENOW)
EndIf
If TargetGadget <> -1
ItemText$ = GetGadgetItemText(SourceGadget, SourceItem, 0)
RemoveGadgetItem(SourceGadget, SourceItem)
AddGadgetItem(TargetGadget, TargetItem, ItemText$)
EndIf
ElseIf message = #WM_GETMINMAXINFO And wnd = WindowID(#Window_Player)
GetWindowRect_(wnd,r.RECT)
*pMinMax.MINMAXINFO = lParam
*pMinMax\ptMinTrackSize\x=370
*pMinMax\ptMinTrackSize\y=252
*pMinMax\ptMaxTrackSize\x=GetSystemMetrics_(#SM_CXSCREEN)
*pMinMax\ptMaxTrackSize\y=GetSystemMetrics_(#SM_CYSCREEN)
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Code: Select all
Procedure Play()
DisableGadget(#PLAY,1)
DisableGadget(#RESUME,1)
DisableGadget(#STOP,0)
DisableGadget(#PAUSE,0)
DisableMenuItem(2,1)
DisableMenuItem(3,1)
If IsAudioZPlaying(#AUDIO_ID)
MessageRequester("Fehler","Es wird zuzeit noch ein Lied gespielt.")
Else
SelectElement(MP3Lied(), GetGadgetState(#Playlist))
OpenAudioZ(#AUDIO_ID,MP3Lied()\MP3FILE)
PlayAudioZ(#AUDIO_ID)
Total = GetAudioZLength(#AUDIO_ID)
SetGadgetText(#TIME_Total, PositionAudioZTime(Total))
EndIf
SetAudioZVolume(#AUDIO_ID,Volume)
Play.l = 1
Presskey.l = 1
EndProcedure
Sorry for bad english.... SchoolEnglish Grade 10.... :rolleyes:
With frindly Greets
Blackskyliner