📄 playlist.cpp
字号:
playlist_Export( p_playlist, p_arg->psz_results[0], psz_export ); } if( p_playlist ) vlc_object_release( p_playlist ); }}void Playlist::OnSave(){ char *psz_filters ="M3U file|*.m3u|PLS file|*.pls"; intf_dialog_args_t *p_arg = (intf_dialog_args_t *)malloc( sizeof(intf_dialog_args_t) ); memset( p_arg, 0, sizeof(intf_dialog_args_t) ); p_arg->psz_title = strdup( "Save playlist" ); p_arg->psz_extensions = strdup( psz_filters ); p_arg->b_save = VLC_TRUE; p_arg->p_arg = p_intf; p_arg->pf_callback = OnSaveCB; p_intf->p_sys->pf_show_dialog( p_intf, INTF_DIALOG_FILE_GENERIC, 0, p_arg );}/********************************************************************** * Selection functions **********************************************************************/void Playlist::OnDeleteSelection(){ /* Delete from the end to the beginning, to avoid a shift of indices */ for( long item = ((int) ListView_GetItemCount( hListView ) - 1); item >= 0; item-- ) { if( ListView_GetItemState( hListView, item, LVIS_SELECTED ) ) { DeleteItem( item ); } }}void Playlist::OnInvertSelection(){ UINT iState; for( long item = 0; item < ListView_GetItemCount( hListView ); item++ ) { iState = ListView_GetItemState( hListView, item, LVIS_STATEIMAGEMASK ); ListView_SetItemState( hListView, item, iState ^ LVIS_SELECTED, LVIS_STATEIMAGEMASK ); }}void Playlist::OnEnableSelection(){ playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; for( long item = ListView_GetItemCount( hListView ) - 1; item >= 0; item-- ) { if( ListView_GetItemState( hListView, item, LVIS_SELECTED ) ) { playlist_item_t *p_item = playlist_ItemGetByPos( p_playlist, item ); playlist_Enable( p_playlist, p_item ); UpdateItem( item ); } } vlc_object_release( p_playlist);}void Playlist::OnDisableSelection(){ playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; for( long item = ListView_GetItemCount( hListView ) - 1; item >= 0; item-- ) { if( ListView_GetItemState( hListView, item, LVIS_SELECTED ) ) { /*XXX*/ playlist_item_t *p_item = playlist_ItemGetByPos( p_playlist, item ); playlist_Disable( p_playlist, p_item ); UpdateItem( item ); } } vlc_object_release( p_playlist);}void Playlist::OnSelectAll(){ for( long item = 0; item < ListView_GetItemCount( hListView ); item++ ) { ListView_SetItemState( hListView, item, LVIS_FOCUSED | LVIS_SELECTED, LVIS_STATEIMAGEMASK ); }}void Playlist::OnActivateItem( int i_item ){ playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; playlist_Goto( p_playlist, i_item ); vlc_object_release( p_playlist );}void Playlist::ShowInfos( HWND hwnd, int i_item ){ playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; vlc_mutex_lock( &p_playlist->object_lock); playlist_item_t *p_item = playlist_ItemGetByPos( p_playlist, i_item ); vlc_mutex_unlock( &p_playlist->object_lock ); if( p_item ) { ItemInfoDialog *iteminfo_dialog = new ItemInfoDialog( p_intf, this, hInst, p_item ); CreateDialogBox( hwnd, iteminfo_dialog ); UpdateItem( i_item ); delete iteminfo_dialog; } vlc_object_release( p_playlist );}/******************************************************************** * Move functions ********************************************************************/void Playlist::OnUp(){ playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; /* We use the first selected item, so find it */ long i_item = ListView_GetNextItem( hListView, -1, LVIS_SELECTED | LVNI_ALL ); if( i_item > 0 && i_item < p_playlist->i_size ) { playlist_Move( p_playlist , i_item, i_item - 1); if( i_item > 1 ) { ListView_SetItemState( hListView, i_item - 1, LVIS_FOCUSED, LVIS_STATEIMAGEMASK ); } else { ListView_SetItemState( hListView, 0, LVIS_FOCUSED, LVIS_STATEIMAGEMASK ); } } vlc_object_release( p_playlist ); return;}void Playlist::OnDown(){ playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; /* We use the first selected item, so find it */ long i_item = ListView_GetNextItem( hListView, -1, LVIS_SELECTED | LVNI_ALL ); if( i_item >= 0 && i_item < p_playlist->i_size - 1 ) { playlist_Move( p_playlist , i_item, i_item + 2 ); ListView_SetItemState( hListView, i_item + 1, LVIS_FOCUSED, LVIS_STATEIMAGEMASK ); } vlc_object_release( p_playlist ); return;}/********************************************************************** * Playlist mode functions **********************************************************************/void Playlist::OnRandom(){ vlc_value_t val; int bState = SendMessage( hwndTB, TB_GETSTATE, Random_Event, 0 ); val.b_bool = (bState & TBSTATE_CHECKED) ? VLC_TRUE : VLC_FALSE; playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; var_Set( p_playlist , "random", val ); vlc_object_release( p_playlist );}void Playlist::OnLoop (){ vlc_value_t val; int bState = SendMessage( hwndTB, TB_GETSTATE, Loop_Event, 0 ); val.b_bool = (bState & TBSTATE_CHECKED) ? VLC_TRUE : VLC_FALSE; playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; var_Set( p_playlist , "loop", val ); vlc_object_release( p_playlist );}void Playlist::OnRepeat (){ vlc_value_t val; int bState = SendMessage( hwndTB, TB_GETSTATE, Repeat_Event, 0 ); val.b_bool = (bState & TBSTATE_CHECKED) ? VLC_TRUE : VLC_FALSE; playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; var_Set( p_playlist , "repeat", val ); vlc_object_release( p_playlist );}/******************************************************************** * Sorting functions ********************************************************************/void Playlist::OnSort( UINT event ){ playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; switch( event ) { case ID_SORT_TITLE: playlist_SortTitle( p_playlist , ORDER_NORMAL ); break; case ID_SORT_RTITLE: playlist_SortTitle( p_playlist , ORDER_REVERSE ); break; case ID_SORT_AUTHOR: playlist_SortAuthor(p_playlist , ORDER_NORMAL ); break; case ID_SORT_RAUTHOR: playlist_SortAuthor( p_playlist , ORDER_REVERSE ); break; case ID_SORT_SHUFFLE: playlist_Sort( p_playlist , SORT_RANDOM, ORDER_NORMAL ); break; } vlc_object_release( p_playlist ); b_need_update = VLC_TRUE; return;}void Playlist::OnColSelect( int iSubItem ){ playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; switch( iSubItem ) { case 0: if( i_title_sorted != 1 ) { playlist_SortTitle( p_playlist, ORDER_NORMAL ); i_title_sorted = 1; } else { playlist_SortTitle( p_playlist, ORDER_REVERSE ); i_title_sorted = -1; } break; case 1: if( i_author_sorted != 1 ) { playlist_SortAuthor( p_playlist, ORDER_NORMAL ); i_author_sorted = 1; } else { playlist_SortAuthor( p_playlist, ORDER_REVERSE ); i_author_sorted = -1; } break; default: break; } vlc_object_release( p_playlist ); b_need_update = VLC_TRUE; return;}/***************************************************************************** * Popup management functions *****************************************************************************/void Playlist::OnPopupPlay(){ int i_popup_item = ListView_GetNextItem( hListView, -1, LVIS_SELECTED | LVNI_ALL ); playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; if( i_popup_item != -1 ) { playlist_Goto( p_playlist, i_popup_item ); } vlc_object_release( p_playlist );}void Playlist::OnPopupDel(){ int i_popup_item = ListView_GetNextItem( hListView, -1, LVIS_SELECTED | LVNI_ALL ); DeleteItem( i_popup_item );}void Playlist::OnPopupEna(){ int i_popup_item = ListView_GetNextItem( hListView, -1, LVIS_SELECTED | LVNI_ALL ); playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); if( p_playlist == NULL ) return; playlist_item_t *p_item = playlist_ItemGetByPos( p_playlist, i_popup_item ); if( p_playlist->pp_items[i_popup_item]->b_enabled ) //playlist_IsEnabled( p_playlist, i_popup_item ) ) { playlist_Disable( p_playlist, p_item ); } else { playlist_Enable( p_playlist, p_item ); } vlc_object_release( p_playlist); UpdateItem( i_popup_item );}void Playlist::OnPopupInfo( HWND hwnd ){ int i_popup_item = ListView_GetNextItem( hListView, -1, LVIS_SELECTED | LVNI_ALL ); ShowInfos( hwnd, i_popup_item );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -