📄 playlist.cpp
字号:
{ char *psz_export; char *psz_ext = strrchr( p_arg->psz_results[0], '.' ); if( psz_ext && !strcmp( psz_ext, ".pls") ) psz_export = "export-pls"; else psz_export = "export-m3u"; playlist_Export( p_playlist, p_arg->psz_results[0], psz_export ); pl_Release( p_intf ); } }}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 = 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 = pl_Yield( p_intf ); 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 ); } } pl_Release( p_intf );}void Playlist::OnDisableSelection(){ playlist_t *p_playlist = pl_Yield( p_intf ); 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 ); } } pl_Release( p_intf );}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 = pl_Yield( p_intf ); if( p_playlist == NULL ) return; playlist_Goto( p_playlist, i_item ); pl_Release( p_intf );}void Playlist::ShowInfos( HWND hwnd, int i_item ){ playlist_t *p_playlist = pl_Yield( p_intf ); if( p_playlist == NULL ) return; vlc_object_lock( p_playlist); playlist_item_t *p_item = playlist_ItemGetByPos( p_playlist, i_item ); vlc_object_unlock( p_playlist ); if( p_item ) { ItemInfoDialog *iteminfo_dialog = new ItemInfoDialog( p_intf, this, hInst, p_item ); CreateDialogBox( hwnd, iteminfo_dialog ); UpdateItem( i_item ); delete iteminfo_dialog; } pl_Release( p_intf );}/******************************************************************** * Move functions ********************************************************************/void Playlist::OnUp(){ playlist_t *p_playlist = pl_Yield( p_intf ); 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 ); } } pl_Release( p_intf ); return;}void Playlist::OnDown(){ playlist_t *p_playlist = pl_Yield( p_intf ); 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 ); } pl_Release( p_intf ); 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) ? true : false; playlist_t *p_playlist = pl_Yield( p_intf ); if( p_playlist == NULL ) return; var_Set( p_playlist , "random", val ); pl_Release( p_intf );}void Playlist::OnLoop (){ vlc_value_t val; int bState = SendMessage( hwndTB, TB_GETSTATE, Loop_Event, 0 ); val.b_bool = (bState & TBSTATE_CHECKED) ? true : false; playlist_t *p_playlist = pl_Yield( p_intf ); if( p_playlist == NULL ) return; var_Set( p_playlist , "loop", val ); pl_Release( p_intf );}void Playlist::OnRepeat (){ vlc_value_t val; int bState = SendMessage( hwndTB, TB_GETSTATE, Repeat_Event, 0 ); val.b_bool = (bState & TBSTATE_CHECKED) ? true : false; playlist_t *p_playlist = pl_Yield( p_intf ); if( p_playlist == NULL ) return; var_Set( p_playlist , "repeat", val ); pl_Release( p_intf );}/******************************************************************** * Sorting functions ********************************************************************/void Playlist::OnSort( UINT event ){ playlist_t *p_playlist = pl_Yield( p_intf ); 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; } pl_Release( p_intf ); b_need_update = true; return;}void Playlist::OnColSelect( int iSubItem ){ playlist_t *p_playlist = pl_Yield( p_intf ); 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; } pl_Release( p_intf ); b_need_update = true; return;}/***************************************************************************** * Popup management functions *****************************************************************************/void Playlist::OnPopupPlay(){ int i_popup_item = ListView_GetNextItem( hListView, -1, LVIS_SELECTED | LVNI_ALL ); playlist_t *p_playlist = pl_Yield( p_intf ); if( p_playlist == NULL ) return; if( i_popup_item != -1 ) { playlist_Goto( p_playlist, i_popup_item ); } pl_Release( p_intf );}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 = pl_Yield( p_intf ); 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 ); } pl_Release( p_intf ); 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 + -