94
101
DeleteChildren( m_DynamicId );
96
103
guListItems m_StaticItems;
97
m_Db->GetPlayLists( &m_StaticItems, GUPLAYLIST_STATIC );
104
m_Db->GetPlayLists( &m_StaticItems, GUPLAYLIST_STATIC, &m_TextSearchFilter );
98
105
if( ( count = m_StaticItems.Count() ) )
100
107
for( index = 0; index < count; index++ )
102
AppendItem( m_StaticId, m_StaticItems[ index ].m_Name, 0, 0,
109
AppendItem( m_StaticId, m_StaticItems[ index ].m_Name, -1, -1,
103
110
new guPLNamesData( m_StaticItems[ index ].m_Id, GUPLAYLIST_STATIC ) );
107
114
guListItems m_DynamicItems;
108
m_Db->GetPlayLists( &m_DynamicItems, GUPLAYLIST_DYNAMIC );
115
m_Db->GetPlayLists( &m_DynamicItems, GUPLAYLIST_DYNAMIC, &m_TextSearchFilter );
109
116
if( ( count = m_DynamicItems.Count() ) )
111
118
for( index = 0; index < count; index++ )
113
AppendItem( m_DynamicId, m_DynamicItems[ index ].m_Name, 1, 1,
120
AppendItem( m_DynamicId, m_DynamicItems[ index ].m_Name, -1, -1,
114
121
new guPLNamesData( m_DynamicItems[ index ].m_Id, GUPLAYLIST_DYNAMIC ) );
452
478
wxSystemSettings::GetColour( wxSYS_COLOUR_CAPTIONTEXT ) );
454
480
AuiDockArt->SetColour( wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR,
455
wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ) );
481
wxSystemSettings::GetColour( wxSYS_COLOUR_ACTIVEBORDER ) );
457
483
AuiDockArt->SetColour( wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR,
458
wxAuiStepColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ), 130 ) );
484
wxSystemSettings::GetColour( wxSYS_COLOUR_3DSHADOW ) );
460
486
AuiDockArt->SetColour( wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR,
461
wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ) );
487
wxSystemSettings::GetColour( wxSYS_COLOUR_INACTIVEBORDER ) );
463
489
AuiDockArt->SetColour( wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR,
464
wxAuiStepColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ), 130 ) );
490
wxSystemSettings::GetColour( wxSYS_COLOUR_3DSHADOW ) );
466
492
AuiDockArt->SetColour( wxAUI_DOCKART_GRADIENT_TYPE,
467
493
wxAUI_GRADIENT_VERTICAL );
496
m_VisiblePanels = Config->ReadNum( wxT( "PLVisiblePanels" ), guPANEL_PLAYLIST_VISIBLE_DEFAULT, wxT( "Positions" ) );
470
498
// wxBoxSizer* MainSizer;
471
499
// MainSizer = new wxBoxSizer( wxVERTICAL );
473
501
// m_MainSplitter = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D );
474
502
// m_MainSplitter->SetMinimumPaneSize( 60 );
504
wxBoxSizer * SearchSizer;
505
SearchSizer = new wxBoxSizer( wxHORIZONTAL );
506
wxPanel * SearchPanel;
507
SearchPanel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
509
// wxStaticText * SearchStaticText;
510
// SearchStaticText = new wxStaticText( SearchPanel, wxID_ANY, _( "Search:" ), wxDefaultPosition, wxDefaultSize, 0 );
511
// SearchStaticText->Wrap( -1 );
512
// SearchSizer->Add( SearchStaticText, 0, wxALIGN_CENTER|wxALL, 5 );
514
m_InputTextCtrl = new wxSearchCtrl( SearchPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
515
SearchSizer->Add( m_InputTextCtrl, 1, wxALIGN_CENTER|wxALL, 5 );
517
SearchPanel->SetSizer( SearchSizer );
518
SearchPanel->Layout();
519
SearchSizer->Fit( SearchPanel );
521
m_AuiManager.AddPane( SearchPanel,
522
wxAuiPaneInfo().Name( wxT( "PlayListTextSearch" ) ).Caption( _( "Text Search" ) ).
523
MinSize( 60, 28 ).MaxSize( -1, 28 ).Row( 0 ).Layer( 2 ).Position( 0 ).
524
CloseButton( Config->ReadBool( wxT( "ShowPaneCloseButton" ), true, wxT( "General" ) ) ).
525
Dockable( true ).Top() );
476
527
wxPanel * NamesPanel;
477
528
NamesPanel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
478
529
wxBoxSizer * NameSizer;
541
597
m_PLTracksListBox->Connect( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxListEventHandler( guPlayListPanel::OnPLTracksActivated ), NULL, this );
542
598
Connect( ID_SONG_DELETE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksDeleteClicked ) );
599
Connect( ID_SONG_DELETE_LIBRARY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksDeleteLibrary ) );
600
Connect( ID_SONG_DELETE_DRIVE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksDeleteDrive ) );
543
601
Connect( ID_SONG_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksPlayClicked ) );
544
602
Connect( ID_SONG_PLAYALL, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksPlayAllClicked ) );
545
603
Connect( ID_SONG_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksQueueClicked ) );
604
Connect( ID_SONG_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksQueueAsNextClicked ) );
546
605
Connect( ID_SONG_ENQUEUEALL, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksQueueAllClicked ) );
606
Connect( ID_SONG_ENQUEUEALL_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksQueueAllAsNextClicked ) );
547
607
Connect( ID_SONG_EDITLABELS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksEditLabelsClicked ) );
548
608
Connect( ID_SONG_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksEditTracksClicked ) );
549
609
Connect( ID_SONG_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksCopyToClicked ) );
550
610
Connect( ID_SONG_SAVEPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSavePlayListClicked ) );
611
Connect( ID_SONG_SET_RATING_0, ID_SONG_SET_RATING_5, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSetRating ), NULL, this );
612
Connect( ID_SONG_SET_COLUMN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSetField ), NULL, this );
613
Connect( ID_SONG_EDIT_COLUMN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksEditField ), NULL, this );
552
615
Connect( ID_SONG_BROWSE_GENRE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSelectGenre ) );
553
616
Connect( ID_SONG_BROWSE_ARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSelectArtist ) );
617
Connect( ID_SONG_BROWSE_ALBUMARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSelectAlbumArtist ) );
554
618
Connect( ID_SONG_BROWSE_ALBUM, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSelectAlbum ) );
620
//m_InputTextCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( guPlayListPanel::OnSearchSelected ), NULL, this );
621
m_InputTextCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( guPlayListPanel::OnSearchActivated ), NULL, this );
622
m_InputTextCtrl->Connect( wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, wxCommandEventHandler( guPlayListPanel::OnSearchCancelled ), NULL, this );
624
Connect( guPLAYLIST_TIMER_TEXTSEARCH, wxEVT_TIMER, wxTimerEventHandler( guPlayListPanel::OnTextChangedTimer ), NULL, this );
626
m_AuiManager.Connect( wxEVT_AUI_PANE_CLOSE, wxAuiManagerEventHandler( guPlayListPanel::OnPaneClose ), NULL, this );
558
629
// -------------------------------------------------------------------------------- //
582
654
m_PLTracksListBox->Disconnect( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxListEventHandler( guPlayListPanel::OnPLTracksActivated ), NULL, this );
583
655
Disconnect( ID_SONG_DELETE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksDeleteClicked ) );
656
Disconnect( ID_SONG_DELETE_LIBRARY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksDeleteLibrary ) );
657
Disconnect( ID_SONG_DELETE_DRIVE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksDeleteDrive ) );
584
658
Disconnect( ID_SONG_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksPlayClicked ) );
585
659
Disconnect( ID_SONG_PLAYALL, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksPlayAllClicked ) );
586
660
Disconnect( ID_SONG_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksQueueClicked ) );
661
Disconnect( ID_SONG_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksQueueAsNextClicked ) );
587
662
Disconnect( ID_SONG_ENQUEUEALL, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksQueueAllClicked ) );
663
Disconnect( ID_SONG_ENQUEUEALL_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksQueueAllAsNextClicked ) );
588
664
Disconnect( ID_SONG_EDITLABELS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksEditLabelsClicked ) );
589
665
Disconnect( ID_SONG_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksEditTracksClicked ) );
590
666
Disconnect( ID_SONG_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksCopyToClicked ) );
593
669
Disconnect( ID_SONG_BROWSE_GENRE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSelectGenre ) );
594
670
Disconnect( ID_SONG_BROWSE_ARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSelectArtist ) );
671
Disconnect( ID_SONG_BROWSE_ALBUMARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSelectAlbumArtist ) );
595
672
Disconnect( ID_SONG_BROWSE_ALBUM, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guPlayListPanel::OnPLTracksSelectAlbum ) );
674
//m_InputTextCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( guPlayListPanel::OnSearchSelected ), NULL, this );
675
m_InputTextCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( guPlayListPanel::OnSearchActivated ), NULL, this );
676
m_InputTextCtrl->Disconnect( wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, wxCommandEventHandler( guPlayListPanel::OnSearchCancelled ), NULL, this );
678
Disconnect( guPLAYLIST_TIMER_TEXTSEARCH, wxEVT_TIMER, wxTimerEventHandler( guPlayListPanel::OnTextChangedTimer ), NULL, this );
680
m_AuiManager.Disconnect( wxEVT_AUI_PANE_CLOSE, wxAuiManagerEventHandler( guPlayListPanel::OnPaneClose ), NULL, this );
597
682
m_AuiManager.UnInit();
600
685
// -------------------------------------------------------------------------------- //
686
void guPlayListPanel::OnSearchActivated( wxCommandEvent& event )
688
if( m_TextChangedTimer.IsRunning() )
689
m_TextChangedTimer.Stop();
690
m_TextChangedTimer.Start( guPLAYLIST_TIMER_TEXTSEARCH_VALUE, wxTIMER_ONE_SHOT );
693
//// -------------------------------------------------------------------------------- //
694
//void guPlayListPanel::OnSearchSelected( wxCommandEvent& event )
696
// guConfig * Config = ( guConfig * ) guConfig::Get();
697
// OnSelectStations( Config->ReadBool( wxT( "DefaultActionEnqueue" ), false, wxT( "General" ) ) );
700
// -------------------------------------------------------------------------------- //
701
void guPlayListPanel::OnSearchCancelled( wxCommandEvent &event ) // CLEAN SEARCH STR
703
m_InputTextCtrl->Clear();
706
// -------------------------------------------------------------------------------- //
707
void guPlayListPanel::OnTextChangedTimer( wxTimerEvent &event )
709
wxString SearchString = m_InputTextCtrl->GetLineText( 0 );
710
if( !SearchString.IsEmpty() )
712
if( SearchString.Length() > 1 )
714
m_NamesTreeCtrl->m_TextSearchFilter = guSplitWords( SearchString );
715
m_NamesTreeCtrl->ExpandAll();
716
m_NamesTreeCtrl->ReloadItems();
718
m_InputTextCtrl->ShowCancelButton( true );
722
m_NamesTreeCtrl->m_TextSearchFilter.Clear();
723
m_NamesTreeCtrl->ExpandAll();
724
m_NamesTreeCtrl->ReloadItems();
725
m_InputTextCtrl->ShowCancelButton( false );
729
// -------------------------------------------------------------------------------- //
601
730
void guPlayListPanel::OnPLNamesSelected( wxTreeEvent& event )
603
732
guPLNamesData * ItemData = ( guPLNamesData * ) m_NamesTreeCtrl->GetItemData( event.GetItem() );
955
1118
// -------------------------------------------------------------------------------- //
1119
void guPlayListPanel::OnPLTracksQueueAllAsNextClicked( wxCommandEvent &event )
1121
guTrackArray Tracks;
1122
m_PLTracksListBox->GetAllSongs( &Tracks );
1123
m_PlayerPanel->AddToPlayList( Tracks, true, true );
1126
// -------------------------------------------------------------------------------- //
956
1127
void guPlayListPanel::OnPLTracksEditLabelsClicked( wxCommandEvent &event )
961
m_Db->GetLabels( &Labels, true );
963
SongIds = m_PLTracksListBox->GetSelectedItems();
965
guLabelEditor * LabelEditor = new guLabelEditor( this, m_Db, _( "Songs Labels Editor" ), false,
966
Labels, m_Db->GetSongsLabels( SongIds ) );
1130
m_PLTracksListBox->GetSelectedItems( &Tracks );
1131
if( Tracks.Count() )
969
if( LabelEditor->ShowModal() == wxID_OK )
1133
guArrayListItems LabelSets = m_Db->GetSongsLabels( m_PLTracksListBox->GetSelectedItems() );
1135
guLabelEditor * LabelEditor = new guLabelEditor( this, m_Db, _( "Tracks Labels Editor" ), false, &Tracks, &LabelSets );
971
m_Db->UpdateSongsLabels( SongIds, LabelEditor->GetCheckedIds() );
1138
if( LabelEditor->ShowModal() == wxID_OK )
1140
// Update the labels in the files
1141
m_Db->UpdateSongsLabels( LabelSets );
1143
LabelEditor->Destroy();
1144
m_PLTracksListBox->ReloadItems( false );
973
LabelEditor->Destroy();
974
m_PLTracksListBox->ReloadItems();
978
1150
// -------------------------------------------------------------------------------- //
1083
1256
// -------------------------------------------------------------------------------- //
1257
void guPlayListPanel::OnPLTracksSetRating( wxCommandEvent &event )
1259
int Rating = event.GetId() - ID_SONG_SET_RATING_0;
1261
guTrackArray Tracks;
1262
m_PLTracksListBox->GetSelectedSongs( &Tracks );
1264
m_Db->SetTracksRating( &Tracks, Rating );
1266
int Count = Tracks.Count();
1267
for( Index = 0; Index < Count; Index++ )
1269
Tracks[ Index ].m_Rating = Rating;
1272
( ( guMainFrame * ) wxTheApp->GetTopWindow() )->UpdatedTracks( guUPDATED_TRACKS_NONE, &Tracks );
1275
// -------------------------------------------------------------------------------- //
1276
void guPlayListPanel::OnPLTracksSetField( wxCommandEvent &event )
1278
int ColumnId = m_PLTracksListBox->GetColumnId( m_PLTracksListBox->GetLastColumnClicked() );
1279
//guLogMessage( wxT( "guPlayListPanel::OnSongSetField %i" ), ColumnId );
1281
guTrackArray Tracks;
1282
m_PLTracksListBox->GetSelectedSongs( &Tracks );
1284
wxVariant NewData = m_PLTracksListBox->GetLastDataClicked();
1286
//guLogMessage( wxT( "Setting Data to : %s" ), NewData.GetString().c_str() );
1288
// This should be done in a thread for huge selections of tracks...
1290
int Count = Tracks.Count();
1291
for( Index = 0; Index < Count; Index++ )
1293
guTrack * Track = &Tracks[ Index ];
1296
case guSONGS_COLUMN_NUMBER :
1297
Track->m_Number = NewData.GetLong();
1300
case guSONGS_COLUMN_TITLE :
1301
Track->m_SongName = NewData.GetString();
1304
case guSONGS_COLUMN_ARTIST :
1305
Track->m_ArtistName = NewData.GetString();
1308
case guSONGS_COLUMN_ALBUMARTIST :
1309
Track->m_AlbumArtist = NewData.GetString();
1312
case guSONGS_COLUMN_ALBUM :
1313
Track->m_AlbumName = NewData.GetString();
1316
case guSONGS_COLUMN_GENRE :
1317
Track->m_GenreName = NewData.GetString();
1320
case guSONGS_COLUMN_COMPOSER :
1321
Track->m_Composer = NewData.GetString();
1324
case guSONGS_COLUMN_DISK :
1325
Track->m_Disk = NewData.GetString();
1328
case guSONGS_COLUMN_YEAR :
1329
Track->m_Year = NewData.GetLong();
1335
m_Db->UpdateSongs( &Tracks );
1338
// -------------------------------------------------------------------------------- //
1339
void guPlayListPanel::OnPLTracksEditField( wxCommandEvent &event )
1341
int ColumnId = m_PLTracksListBox->GetColumnId( m_PLTracksListBox->GetLastColumnClicked() );
1342
//guLogMessage( wxT( "guLibPanel::OnSongSetField %i" ), ColumnId );
1344
guTrackArray Tracks;
1345
m_PLTracksListBox->GetSelectedSongs( &Tracks );
1347
wxString Label = m_PLTracksListBox->GetColumnNames()[ ColumnId ];
1348
wxVariant DefValue = m_PLTracksListBox->GetLastDataClicked();
1350
wxArrayString Items;
1353
int Count = Tracks.Count();
1354
for( Index = 0; Index < Count; Index++ )
1357
guTrack * Track = &Tracks[ Index ];
1361
case guSONGS_COLUMN_NUMBER :
1362
Value = ( long ) Track->m_Number;
1365
case guSONGS_COLUMN_TITLE :
1366
Value = Track->m_SongName;
1369
case guSONGS_COLUMN_ARTIST :
1370
Value = Track->m_ArtistName;
1373
case guSONGS_COLUMN_ALBUMARTIST :
1374
Value = Track->m_AlbumArtist;
1377
case guSONGS_COLUMN_ALBUM :
1378
Value = Track->m_AlbumName;
1381
case guSONGS_COLUMN_GENRE :
1382
Value = Track->m_GenreName;
1385
case guSONGS_COLUMN_COMPOSER :
1386
Value = Track->m_Composer;
1389
case guSONGS_COLUMN_DISK :
1390
Value = Track->m_Disk;
1393
case guSONGS_COLUMN_YEAR :
1394
Value = ( long ) Track->m_Year;
1397
if( Items.Index( Value.GetString() ) == wxNOT_FOUND )
1398
Items.Add( Value.GetString() );
1401
guFieldEditor * FieldEditor = new guFieldEditor( this, Label, DefValue.GetString(), Items );
1405
if( FieldEditor->ShowModal() == wxID_OK )
1407
DefValue = FieldEditor->GetData();
1409
//guLogMessage( wxT( "Setting Data to : %s" ), DefValue.GetString().c_str() );
1411
// This should be done in a thread for huge selections of tracks...
1413
int Count = Tracks.Count();
1414
for( Index = 0; Index < Count; Index++ )
1416
guTrack * Track = &Tracks[ Index ];
1419
case guSONGS_COLUMN_NUMBER :
1420
Track->m_Number = DefValue.GetLong();
1423
case guSONGS_COLUMN_TITLE :
1424
Track->m_SongName = DefValue.GetString();
1427
case guSONGS_COLUMN_ARTIST :
1428
Track->m_ArtistName = DefValue.GetString();
1431
case guSONGS_COLUMN_ALBUMARTIST :
1432
Track->m_AlbumArtist = DefValue.GetString();
1435
case guSONGS_COLUMN_ALBUM :
1436
Track->m_AlbumName = DefValue.GetString();
1439
case guSONGS_COLUMN_GENRE :
1440
Track->m_GenreName = DefValue.GetString();
1443
case guSONGS_COLUMN_COMPOSER :
1444
Track->m_Composer = DefValue.GetString();
1447
case guSONGS_COLUMN_DISK :
1448
Track->m_Disk = DefValue.GetString();
1451
case guSONGS_COLUMN_YEAR :
1452
Track->m_Year = DefValue.GetLong();
1457
m_Db->UpdateSongs( &Tracks );
1459
FieldEditor->Destroy();
1463
// -------------------------------------------------------------------------------- //
1084
1464
void guPlayListPanel::PlayListUpdated( void )
1086
1466
m_NamesTreeCtrl->ReloadItems();
1168
1568
// -------------------------------------------------------------------------------- //
1569
bool guPlayListPanel::IsPanelShown( const int panelid ) const
1571
return ( m_VisiblePanels & panelid );
1574
// -------------------------------------------------------------------------------- //
1575
void guPlayListPanel::ShowPanel( const int panelid, bool show )
1581
case guPANEL_PLAYLIST_TEXTSEARCH :
1582
PaneName = wxT( "PlayListTextSearch" );
1590
wxAuiPaneInfo &PaneInfo = m_AuiManager.GetPane( PaneName );
1591
if( PaneInfo.IsOk() )
1598
m_AuiManager.Update();
1602
m_VisiblePanels |= panelid;
1604
m_VisiblePanels ^= panelid;
1606
guLogMessage( wxT( "Id: %i Pane: %s Show:%i Flags:%08X" ), panelid, PaneName.c_str(), show, m_VisiblePanels );
1609
// -------------------------------------------------------------------------------- //
1610
void guPlayListPanel::OnPaneClose( wxAuiManagerEvent &event )
1612
wxAuiPaneInfo * PaneInfo = event.GetPane();
1613
wxString PaneName = PaneInfo->name;
1616
if( PaneName == wxT( "PlayListTextSearch" ) )
1618
CmdId = ID_MENU_VIEW_PL_TEXTSEARCH;
1621
guLogMessage( wxT( "OnPaneClose: %s %i" ), PaneName.c_str(), CmdId );
1624
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED, CmdId );
1625
AddPendingEvent( evt );
1631
// -------------------------------------------------------------------------------- //
1632
void guPlayListPanel::OnPLTracksDeleteLibrary( wxCommandEvent &event )
1634
if( m_PLTracksListBox->GetSelectedCount() )
1636
if( wxMessageBox( wxT( "Are you sure to remove the selected tracks from your library?" ),
1637
wxT( "Remove tracks from library" ), wxICON_QUESTION | wxYES | wxNO | wxCANCEL | wxNO_DEFAULT ) == wxYES )
1639
guTrackArray Tracks;
1640
m_PLTracksListBox->GetSelectedSongs( &Tracks );
1642
m_Db->DeleteLibraryTracks( &Tracks, true );
1644
m_PLTracksListBox->ReloadItems();
1649
// -------------------------------------------------------------------------------- //
1650
void guPlayListPanel::OnPLTracksDeleteDrive( wxCommandEvent &event )
1652
if( m_PLTracksListBox->GetSelectedCount() )
1654
if( wxMessageBox( wxT( "Are you sure to delete the selected tracks from your drive?\nThis will permanently erase the selected tracks." ),
1655
wxT( "Remove tracks from drive" ), wxICON_QUESTION | wxYES | wxNO | wxCANCEL | wxNO_DEFAULT ) == wxYES )
1657
guTrackArray Tracks;
1658
m_PLTracksListBox->GetSelectedSongs( &Tracks );
1660
m_Db->DeleteLibraryTracks( &Tracks, false );
1663
int Count = Tracks.Count();
1664
for( Index = 0; Index < Count; Index++ )
1666
if( !wxRemoveFile( Tracks[ Index ].m_FileName ) )
1668
guLogMessage( wxT( "Error deleting '%s'" ), Tracks[ Index ].m_FileName.c_str() );
1672
m_PLTracksListBox->ReloadItems();
1677
// -------------------------------------------------------------------------------- //