97
101
AuiDockArt->SetColour( wxAUI_DOCKART_GRADIENT_TYPE,
98
102
wxAUI_GRADIENT_VERTICAL );
100
m_VisiblePanels = Config->ReadNum( wxT( "LibVisiblePanels" ), guPANEL_LIBRARY_VISIBLE_DEFAULT, wxT( "Positions" ) );
104
// LibraryMainSizer = new wxBoxSizer( wxVERTICAL );
104
m_VisiblePanels = Config->ReadNum( m_ConfigPrefixVarName + wxT( "VisiblePanels" ), guPANEL_LIBRARY_VISIBLE_DEFAULT, wxT( "Positions" ) );
106
110
wxBoxSizer * SearchSizer;
107
111
SearchSizer = new wxBoxSizer( wxHORIZONTAL );
108
112
SearchPanel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
110
// wxStaticText * SearchStaticText;
111
// SearchStaticText = new wxStaticText( SearchPanel, wxID_ANY, _( "Search:" ), wxDefaultPosition, wxDefaultSize, 0 );
112
// SearchStaticText->Wrap( -1 );
113
// SearchSizer->Add( SearchStaticText, 0, wxALIGN_CENTER|wxALL, 5 );
115
114
m_InputTextCtrl = new wxSearchCtrl( SearchPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
116
SearchSizer->Add( m_InputTextCtrl, 1, wxALIGN_CENTER|wxALL, 5 );
115
SearchSizer->Add( m_InputTextCtrl, 1, wxALIGN_CENTER, 5 );
118
117
SearchPanel->SetSizer( SearchSizer );
119
118
SearchPanel->Layout();
369
371
Connect( ID_GENRE_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenrePlayClicked ), NULL, this );
370
372
Connect( ID_GENRE_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenreQueueClicked ), NULL, this );
371
373
Connect( ID_GENRE_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenreQueueAsNextClicked ), NULL, this );
372
Connect( ID_GENRE_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenreCopyToClicked ), NULL, this );
374
Connect( ID_GENRE_COPYTO, ID_GENRE_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenreCopyToClicked ), NULL, this );
375
Connect( ID_GENRE_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenreSavePlayListClicked ), NULL, this );
374
377
Connect( ID_LABEL_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelPlayClicked ), NULL, this );
375
378
Connect( ID_LABEL_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelQueueClicked ), NULL, this );
376
379
Connect( ID_LABEL_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelQueueAsNextClicked ), NULL, this );
377
380
//Connect( ID_LABEL_CLEARSELECTION, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelClearSelectClicked ) );
378
Connect( ID_LABEL_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelCopyToClicked ), NULL, this );
381
Connect( ID_LABEL_COPYTO, ID_LABEL_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelCopyToClicked ), NULL, this );
382
Connect( ID_LABEL_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelSavePlayListClicked ), NULL, this );
380
384
Connect( ID_ARTIST_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistPlayClicked ), NULL, this );
381
385
Connect( ID_ARTIST_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistQueueClicked ), NULL, this );
382
386
Connect( ID_ARTIST_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistQueueAsNextClicked ), NULL, this );
383
387
Connect( ID_ARTIST_EDITLABELS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistEditLabelsClicked ), NULL, this );
384
388
Connect( ID_ARTIST_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistEditTracksClicked ), NULL, this );
385
Connect( ID_ARTIST_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistCopyToClicked ), NULL, this );
389
Connect( ID_ARTIST_COPYTO, ID_ARTIST_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistCopyToClicked ), NULL, this );
390
Connect( ID_ARTIST_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistSavePlayListClicked ), NULL, this );
387
392
Connect( ID_ALBUM_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumPlayClicked ), NULL, this );
388
393
Connect( ID_ALBUM_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumQueueClicked ), NULL, this );
392
397
Connect( ID_ALBUM_MANUALCOVER, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumDownloadCoverClicked ), NULL, this );
393
398
Connect( ID_ALBUM_SELECT_COVER, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumSelectCoverClicked ), NULL, this );
394
399
Connect( ID_ALBUM_COVER_DELETE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumDeleteCoverClicked ), NULL, this );
395
Connect( ID_ALBUM_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumCopyToClicked ), NULL, this );
400
Connect( ID_ALBUM_COVER_EMBED, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumEmbedCoverClicked ), NULL, this );
401
Connect( ID_ALBUM_COPYTO, ID_ALBUM_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumCopyToClicked ), NULL, this );
402
Connect( ID_ALBUM_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumSavePlayListClicked ), NULL, this );
397
404
Connect( ID_YEAR_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListPlayClicked ), NULL, this );
398
405
Connect( ID_YEAR_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListQueueClicked ), NULL, this );
399
406
Connect( ID_YEAR_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListQueueAsNextClicked ), NULL, this );
400
407
Connect( ID_YEAR_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListEditTracksClicked ), NULL, this );
401
Connect( ID_YEAR_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListCopyToClicked ), NULL, this );
408
Connect( ID_YEAR_COPYTO, ID_YEAR_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListCopyToClicked ), NULL, this );
409
Connect( ID_YEAR_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearSavePlayListClicked ), NULL, this );
403
411
Connect( ID_RATING_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListPlayClicked ), NULL, this );
404
412
Connect( ID_RATING_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListQueueClicked ), NULL, this );
405
413
Connect( ID_RATING_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListQueueAsNextClicked ), NULL, this );
406
414
Connect( ID_RATING_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListEditTracksClicked ), NULL, this );
407
Connect( ID_RATING_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListCopyToClicked ), NULL, this );
415
Connect( ID_RATING_COPYTO, ID_RATING_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListCopyToClicked ), NULL, this );
416
Connect( ID_RATING_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistSavePlayListClicked ), NULL, this );
409
418
Connect( ID_PLAYCOUNT_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListPlayClicked ), NULL, this );
410
419
Connect( ID_PLAYCOUNT_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListQueueClicked ), NULL, this );
411
420
Connect( ID_PLAYCOUNT_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListQueueAsNextClicked ), NULL, this );
412
421
Connect( ID_PLAYCOUNT_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListEditTracksClicked ), NULL, this );
413
Connect( ID_PLAYCOUNT_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListCopyToClicked ), NULL, this );
422
Connect( ID_PLAYCOUNT_COPYTO, ID_PLAYCOUNT_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListCopyToClicked ), NULL, this );
423
Connect( ID_PLAYCOUNT_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountSavePlayListClicked ), NULL, this );
415
425
Connect( ID_COMPOSER_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListPlayClicked ), NULL, this );
416
426
Connect( ID_COMPOSER_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListQueueClicked ), NULL, this );
417
427
Connect( ID_COMPOSER_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListQueueAsNextClicked ), NULL, this );
418
428
Connect( ID_COMPOSER_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListEditTracksClicked ), NULL, this );
419
Connect( ID_COMPOSER_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListCopyToClicked ), NULL, this );
429
Connect( ID_COMPOSER_COPYTO, ID_COMPOSER_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListCopyToClicked ), NULL, this );
430
Connect( ID_COMPOSER_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerSavePlayListClicked ), NULL, this );
421
432
Connect( ID_ALBUMARTIST_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListPlayClicked ), NULL, this );
422
433
Connect( ID_ALBUMARTIST_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListQueueClicked ), NULL, this );
423
434
Connect( ID_ALBUMARTIST_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListQueueAsNextClicked ), NULL, this );
424
435
Connect( ID_ALBUMARTIST_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListEditTracksClicked ), NULL, this );
425
Connect( ID_ALBUMARTIST_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListCopyToClicked ), NULL, this );
436
Connect( ID_ALBUMARTIST_COPYTO, ID_ALBUMARTIST_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListCopyToClicked ), NULL, this );
437
Connect( ID_ALBUMARTIST_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistSavePlayListClicked ), NULL, this );
427
439
Connect( ID_SONG_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongPlayClicked ), NULL, this );
428
440
Connect( ID_SONG_PLAYALL, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongPlayAllClicked ), NULL, this );
432
444
Connect( ID_SONG_ENQUEUEALL_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongQueueAllAsNextClicked ), NULL, this );
433
445
Connect( ID_SONG_EDITLABELS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongsEditLabelsClicked ), NULL, this );
434
446
Connect( ID_SONG_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongsEditTracksClicked ), NULL, this );
435
Connect( ID_SONG_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongCopyToClicked ), NULL, this );
436
Connect( ID_SONG_SAVEPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSavePlayListClicked ), NULL, this );
447
Connect( ID_SONG_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSavePlayListClicked ), NULL, this );
437
448
Connect( ID_SONG_SET_RATING_0, ID_SONG_SET_RATING_5, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSetRating ), NULL, this );
438
449
Connect( ID_SONG_SET_COLUMN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSetField ), NULL, this );
439
450
Connect( ID_SONG_EDIT_COLUMN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongEditField ), NULL, this );
451
Connect( ID_SONG_COPYTO, ID_SONG_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongCopyToClicked ), NULL, this );
441
453
Connect( ID_SONG_BROWSE_GENRE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSelectGenre ), NULL, this );
442
454
Connect( ID_SONG_BROWSE_ARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSelectArtist ), NULL, this );
500
512
//m_InputTextCtrl->Disconnect( wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, wxCommandEventHandler( guLibPanel::OnSearchActivated ), NULL, this );
501
513
m_InputTextCtrl->Disconnect( wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, wxCommandEventHandler( guLibPanel::OnSearchCancelled ), NULL, this );
503
516
Disconnect( ID_GENRE_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenrePlayClicked ), NULL, this );
504
517
Disconnect( ID_GENRE_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenreQueueClicked ), NULL, this );
505
518
Disconnect( ID_GENRE_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenreQueueAsNextClicked ), NULL, this );
506
Disconnect( ID_GENRE_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenreCopyToClicked ), NULL, this );
519
Disconnect( ID_GENRE_COPYTO, ID_GENRE_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnGenreCopyToClicked ), NULL, this );
508
521
Disconnect( ID_LABEL_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelPlayClicked ), NULL, this );
509
522
Disconnect( ID_LABEL_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelQueueClicked ), NULL, this );
510
523
Disconnect( ID_LABEL_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelQueueAsNextClicked ), NULL, this );
511
524
//Disconnect( ID_LABEL_CLEARSELECTION, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelClearSelectClicked ) );
512
Disconnect( ID_LABEL_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelCopyToClicked ), NULL, this );
525
Disconnect( ID_LABEL_COPYTO, ID_LABEL_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnLabelCopyToClicked ), NULL, this );
514
527
Disconnect( ID_ARTIST_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistPlayClicked ), NULL, this );
515
528
Disconnect( ID_ARTIST_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistQueueClicked ), NULL, this );
516
529
Disconnect( ID_ARTIST_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistQueueAsNextClicked ), NULL, this );
517
530
Disconnect( ID_ARTIST_EDITLABELS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistEditLabelsClicked ), NULL, this );
518
531
Disconnect( ID_ARTIST_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistEditTracksClicked ), NULL, this );
519
Disconnect( ID_ARTIST_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistCopyToClicked ), NULL, this );
532
Disconnect( ID_ARTIST_COPYTO, ID_ARTIST_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnArtistCopyToClicked ), NULL, this );
521
534
Disconnect( ID_ALBUM_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumPlayClicked ), NULL, this );
522
535
Disconnect( ID_ALBUM_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumQueueClicked ), NULL, this );
526
539
Disconnect( ID_ALBUM_MANUALCOVER, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumDownloadCoverClicked ), NULL, this );
527
540
Disconnect( ID_ALBUM_SELECT_COVER, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumSelectCoverClicked ), NULL, this );
528
541
Disconnect( ID_ALBUM_COVER_DELETE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumDeleteCoverClicked ), NULL, this );
529
Disconnect( ID_ALBUM_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumCopyToClicked ), NULL, this );
542
Disconnect( ID_ALBUM_COVER_EMBED, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumEmbedCoverClicked ), NULL, this );
543
Disconnect( ID_ALBUM_COPYTO, ID_ALBUM_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumCopyToClicked ), NULL, this );
531
545
Disconnect( ID_YEAR_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListPlayClicked ), NULL, this );
532
546
Disconnect( ID_YEAR_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListQueueClicked ), NULL, this );
533
547
Disconnect( ID_YEAR_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListQueueAsNextClicked ), NULL, this );
534
548
Disconnect( ID_YEAR_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListEditTracksClicked ), NULL, this );
535
Disconnect( ID_YEAR_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListCopyToClicked ), NULL, this );
549
Disconnect( ID_YEAR_COPYTO, ID_YEAR_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnYearListCopyToClicked ), NULL, this );
537
551
Disconnect( ID_RATING_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListPlayClicked ), NULL, this );
538
552
Disconnect( ID_RATING_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListQueueClicked ), NULL, this );
539
553
Disconnect( ID_RATING_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListQueueAsNextClicked ), NULL, this );
540
554
Disconnect( ID_RATING_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListEditTracksClicked ), NULL, this );
541
Disconnect( ID_RATING_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListCopyToClicked ), NULL, this );
555
Disconnect( ID_RATING_COPYTO, ID_RATING_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnRatingListCopyToClicked ), NULL, this );
543
557
Disconnect( ID_PLAYCOUNT_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListPlayClicked ), NULL, this );
544
558
Disconnect( ID_PLAYCOUNT_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListQueueClicked ), NULL, this );
545
559
Disconnect( ID_PLAYCOUNT_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListQueueAsNextClicked ), NULL, this );
546
560
Disconnect( ID_PLAYCOUNT_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListEditTracksClicked ), NULL, this );
547
Disconnect( ID_PLAYCOUNT_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListCopyToClicked ), NULL, this );
561
Disconnect( ID_PLAYCOUNT_COPYTO, ID_PLAYCOUNT_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnPlayCountListCopyToClicked ), NULL, this );
549
563
Disconnect( ID_COMPOSER_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListPlayClicked ), NULL, this );
550
564
Disconnect( ID_COMPOSER_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListQueueClicked ), NULL, this );
551
565
Disconnect( ID_COMPOSER_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListQueueAsNextClicked ), NULL, this );
552
566
Disconnect( ID_COMPOSER_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListEditTracksClicked ), NULL, this );
553
Disconnect( ID_COMPOSER_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListCopyToClicked ), NULL, this );
567
Disconnect( ID_COMPOSER_COPYTO, ID_COMPOSER_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnComposerListCopyToClicked ), NULL, this );
555
569
Disconnect( ID_ALBUMARTIST_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListPlayClicked ), NULL, this );
556
570
Disconnect( ID_ALBUMARTIST_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListQueueClicked ), NULL, this );
557
571
Disconnect( ID_ALBUMARTIST_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListQueueAsNextClicked ), NULL, this );
558
572
Disconnect( ID_ALBUMARTIST_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListEditTracksClicked ), NULL, this );
559
Disconnect( ID_ALBUMARTIST_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListCopyToClicked ), NULL, this );
573
Disconnect( ID_ALBUMARTIST_COPYTO, ID_ALBUMARTIST_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnAlbumArtistListCopyToClicked ), NULL, this );
561
575
Disconnect( ID_SONG_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongPlayClicked ), NULL, this );
562
576
Disconnect( ID_SONG_PLAYALL, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongPlayAllClicked ), NULL, this );
566
580
Disconnect( ID_SONG_ENQUEUEALL_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongQueueAllAsNextClicked ), NULL, this );
567
581
Disconnect( ID_SONG_EDITLABELS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongsEditLabelsClicked ), NULL, this );
568
582
Disconnect( ID_SONG_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongsEditTracksClicked ), NULL, this );
569
Disconnect( ID_SONG_COPYTO, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongCopyToClicked ), NULL, this );
570
Disconnect( ID_SONG_SAVEPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSavePlayListClicked ), NULL, this );
583
Disconnect( ID_SONG_SAVETOPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSavePlayListClicked ), NULL, this );
584
Disconnect( ID_SONG_SET_RATING_0, ID_SONG_SET_RATING_5, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSetRating ), NULL, this );
585
Disconnect( ID_SONG_SET_COLUMN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSetField ), NULL, this );
586
Disconnect( ID_SONG_EDIT_COLUMN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongEditField ), NULL, this );
587
Disconnect( ID_SONG_COPYTO, ID_SONG_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongCopyToClicked ), NULL, this );
572
589
Disconnect( ID_SONG_BROWSE_GENRE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSelectGenre ), NULL, this );
573
590
Disconnect( ID_SONG_BROWSE_ARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guLibPanel::OnSongSelectArtist ), NULL, this );
944
1079
// -------------------------------------------------------------------------------- //
1080
void guLibPanel::DoEditTracks( guTrackArray &tracks, guImagePtrArray &images, wxArrayString &lyrics )
1082
guTrackEditor * TrackEditor = new guTrackEditor( this, m_Db, &tracks, &images, &lyrics );
1085
if( TrackEditor->ShowModal() == wxID_OK )
1087
UpdateTracks( tracks );
1088
UpdateTracksImages( tracks, images );
1089
UpdateTracksLyrics( tracks, lyrics );
1091
// Update the track in database, playlist, etc
1092
( ( guMainFrame * ) wxTheApp->GetTopWindow() )->UpdatedTracks( guUPDATED_TRACKS_NONE, &tracks );
1094
guImagePtrArrayClean( &images );
1095
TrackEditor->Destroy();
1099
// -------------------------------------------------------------------------------- //
1100
void guLibPanel::UpdateTracks( const guTrackArray &tracks )
1102
m_Db->UpdateSongs( &tracks );
1105
// -------------------------------------------------------------------------------- //
1106
void guLibPanel::UpdateTracksImages( const guTrackArray &tracks, const guImagePtrArray &images )
1108
guUpdateImages( tracks, images );
1111
// -------------------------------------------------------------------------------- //
1112
void guLibPanel::UpdateTracksLyrics( const guTrackArray &tracks, const wxArrayString &lyrics )
1114
guUpdateLyrics( tracks, lyrics );
1117
// -------------------------------------------------------------------------------- //
945
1118
void guLibPanel::OnArtistEditTracksClicked( wxCommandEvent &event )
947
1120
guTrackArray Tracks;
1083
1261
m_Db->GetAlbumsSongs( m_AlbumListCtrl->GetSelectedItems(), &Tracks, true );
1084
1262
if( !Tracks.Count() )
1086
guTrackEditor * TrackEditor = new guTrackEditor( this, m_Db, &Tracks, &Images, &Lyrics );
1089
if( TrackEditor->ShowModal() == wxID_OK )
1091
m_Db->UpdateSongs( &Tracks );
1092
UpdateImages( Tracks, Images );
1093
UpdateLyrics( Tracks, Lyrics );
1095
// Update the track in database, playlist, etc
1096
( ( guMainFrame * ) wxTheApp->GetTopWindow() )->UpdatedTracks( guUPDATED_TRACKS_NONE, &Tracks );
1098
guImagePtrArrayClean( &Images );
1099
TrackEditor->Destroy();
1265
DoEditTracks( Tracks, Images, Lyrics );
1268
// -------------------------------------------------------------------------------- //
1269
wxString guLibPanel::GetCoverName( void )
1271
guConfig * Config = ( guConfig * ) guConfig::Get();
1272
wxArrayString SearchCovers = Config->ReadAStr( wxT( "Word" ), wxEmptyString, wxT( "CoverSearch" ) );
1273
return ( SearchCovers.Count() ? SearchCovers[ 0 ] : wxT( "cover" ) ) + wxT( ".jpg" );
1276
// -------------------------------------------------------------------------------- //
1277
bool guLibPanel::SetAlbumCover( const int albumid, const wxString &albumpath, wxImage * coverimg )
1279
wxString CoverName = albumpath + GetCoverName();
1281
int MaxSize = GetCoverMaxSize();
1282
if( MaxSize != wxNOT_FOUND )
1284
coverimg->Rescale( MaxSize, MaxSize, wxIMAGE_QUALITY_HIGH );
1287
if( coverimg->SaveFile( CoverName, GetCoverType() ) )
1289
m_Db->SetAlbumCover( albumid, CoverName );
1291
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED, ID_ALBUM_COVER_CHANGED );
1292
evt.SetInt( albumid );
1293
evt.SetClientData( this );
1294
wxPostEvent( wxTheApp->GetTopWindow(), evt );
1300
// -------------------------------------------------------------------------------- //
1301
bool guLibPanel::SetAlbumCover( const int albumid, const wxString &albumpath, wxString &coverpath )
1303
wxString CoverName = albumpath + GetCoverName();
1304
int MaxSize = GetCoverMaxSize();
1306
wxURI Uri( coverpath );
1307
if( Uri.IsReference() )
1309
wxImage CoverImage( coverpath );
1310
if( CoverImage.IsOk() )
1312
if( MaxSize != wxNOT_FOUND )
1314
CoverImage.Rescale( MaxSize, MaxSize, wxIMAGE_QUALITY_HIGH );
1317
if( ( coverpath == CoverName ) || CoverImage.SaveFile( CoverName, GetCoverType() ) )
1319
m_Db->SetAlbumCover( albumid, CoverName );
1321
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED, ID_ALBUM_COVER_CHANGED );
1322
evt.SetInt( albumid );
1323
evt.SetClientData( this );
1324
wxPostEvent( wxTheApp->GetTopWindow(), evt );
1330
guLogError( wxT( "Could not load the imate '%s'" ), coverpath.c_str() );
1335
if( DownloadImage( coverpath, CoverName, GetCoverType(), MaxSize, MaxSize ) )
1337
m_Db->SetAlbumCover( albumid, CoverName );
1339
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED, ID_ALBUM_COVER_CHANGED );
1340
evt.SetInt( albumid );
1341
evt.SetClientData( this );
1342
wxPostEvent( wxTheApp->GetTopWindow(), evt );
1347
guLogError( wxT( "Failed to download file '%s'" ), coverpath.c_str() );
1353
// -------------------------------------------------------------------------------- //
1354
wxImage * guLibPanel::GetAlbumCover( const int albumid, wxString &coverpath )
1356
int CoverId = m_Db->GetAlbumCoverId( albumid );
1357
if( CoverId != wxNOT_FOUND )
1359
coverpath = m_Db->GetCoverPath( CoverId );
1360
if( !coverpath.IsEmpty() )
1362
wxImage * CoverImage = new wxImage( coverpath, wxBITMAP_TYPE_ANY );
1365
if( CoverImage->IsOk() )
1103
1376
// -------------------------------------------------------------------------------- //
1157
1432
wxString CoverFile = SelCoverFile->GetSelFile();
1158
1433
if( !CoverFile.IsEmpty() )
1160
guConfig * Config = ( guConfig * ) guConfig::Get();
1161
wxArrayString SearchCovers = Config->ReadAStr( wxT( "Word" ), wxEmptyString, wxT( "CoverSearch" ) );
1162
wxString CoverName = SelCoverFile->GetAlbumPath() + ( SearchCovers.Count() ? SearchCovers[ 0 ] : wxT( "cover" ) ) + wxT( ".jpg" );
1435
if( SetAlbumCover( Albums[ 0 ], SelCoverFile->GetAlbumPath(), CoverFile ) )
1437
ReloadAlbums( false );
1164
wxURI Uri( CoverFile );
1165
if( Uri.IsReference() )
1167
wxImage CoverImage( CoverFile );
1168
if( CoverImage.IsOk() )
1170
if( ( CoverFile == CoverName ) || CoverImage.SaveFile( CoverName, wxBITMAP_TYPE_JPEG ) )
1172
m_Db->SetAlbumCover( Albums[ 0 ], CoverName );
1173
m_AlbumListCtrl->ReloadItems( false );
1178
guLogError( wxT( "Could not load the imate '%s'" ), CoverFile.c_str() );
1183
if( DownloadImage( CoverFile, CoverName ) )
1185
m_Db->SetAlbumCover( Albums[ 0 ], CoverName );
1186
m_AlbumListCtrl->ReloadItems( false );
1190
guLogError( wxT( "Failed to download file '%s'" ), CoverFile.c_str() );
1439
if( SelCoverFile->EmbedToFiles() )
1441
OnAlbumEmbedCoverClicked( event );
1195
delete SelCoverFile;
1446
SelCoverFile->Destroy();
1452
// -------------------------------------------------------------------------------- //
1453
void guLibPanel::DoDeleteAlbumCover( const int albumid )
1455
int CoverId = m_Db->GetAlbumCoverId( albumid );
1458
wxString CoverPath = m_Db->GetCoverPath( CoverId );
1459
if( !CoverPath.IsEmpty() )
1461
if( !wxRemoveFile( CoverPath ) )
1463
guLogError( wxT( "Could not remove the cover file '%s'" ), CoverPath.c_str() );
1467
m_Db->SetAlbumCover( albumid, wxEmptyString );
1469
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED, ID_ALBUM_COVER_CHANGED );
1470
evt.SetInt( albumid );
1471
evt.SetClientData( this );
1472
wxPostEvent( wxTheApp->GetTopWindow(), evt );
1201
1475
// -------------------------------------------------------------------------------- //
1202
1476
void guLibPanel::OnAlbumDeleteCoverClicked( wxCommandEvent &event )
1208
1482
_( "Confirm" ),
1209
1483
wxICON_QUESTION | wxYES_NO | wxCANCEL, this ) == wxYES )
1211
int CoverId = m_Db->GetAlbumCoverId( Albums[ 0 ] );
1485
DoDeleteAlbumCover( Albums[ 0 ] );
1487
ReloadAlbums( false );
1492
// -------------------------------------------------------------------------------- //
1493
void guLibPanel::OnAlbumEmbedCoverClicked( wxCommandEvent &event )
1497
wxArrayInt SelectedAlbums = m_AlbumListCtrl->GetSelectedItems();
1498
if( ( SelCount = SelectedAlbums.Count() ) )
1500
for( SelIndex = 0; SelIndex < SelCount; SelIndex++ )
1502
wxImage * CoverImage = NULL;
1503
int CoverId = m_Db->GetAlbumCoverId( SelectedAlbums[ SelIndex ] );
1212
1504
if( CoverId > 0 )
1214
1506
wxString CoverPath = m_Db->GetCoverPath( CoverId );
1215
wxASSERT( !CoverPath.IsEmpty() );
1216
if( !wxRemoveFile( CoverPath ) )
1218
guLogError( wxT( "Could not remove the cover file '%s'" ), CoverPath.c_str() );
1221
m_Db->SetAlbumCover( Albums[ 0 ], wxEmptyString );
1222
m_AlbumListCtrl->ReloadItems( false );
1223
//bool guDbLibrary::GetAlbumInfo( const int AlbumId, wxString * AlbumName, wxString * ArtistName, wxString * AlbumPath )
1508
CoverImage = new wxImage( CoverPath, wxBITMAP_TYPE_ANY );
1511
if( !CoverImage->IsOk() )
1517
guImageResize( CoverImage, 600 );
1523
guTrackArray AlbumTracks;
1525
Albums.Add( SelectedAlbums[ SelIndex ] );
1526
m_Db->GetAlbumsSongs( Albums, &AlbumTracks );
1530
if( ( TrackCount = AlbumTracks.Count() ) )
1532
for( TrackIndex = 0; TrackIndex < TrackCount; TrackIndex++ )
1534
guTagSetPicture( AlbumTracks[ TrackIndex ].m_FileName, CoverImage );
1385
1718
if( Tracks.Count() )
1387
event.SetId( ID_MAINFRAME_COPYTO );
1720
int Index = event.GetId() - ID_SONG_COPYTO;
1724
event.SetId( ID_MAINFRAME_COPYTODEVICE_TRACKS );
1728
event.SetId( ID_MAINFRAME_COPYTO );
1730
event.SetInt( Index );
1388
1731
event.SetClientData( ( void * ) new guTrackArray( Tracks ) );
1389
1732
wxPostEvent( wxTheApp->GetTopWindow(), event );
1393
1736
// -------------------------------------------------------------------------------- //
1394
void guLibPanel::OnSongSavePlayListClicked( wxCommandEvent &event )
1737
void guLibPanel::SaveToPlayList( const wxArrayInt &tracks )
1398
wxArrayInt NewSongs;
1399
guTrackArray Tracks;
1400
m_SongListCtrl->GetSelectedSongs( &Tracks );
1402
if( ( count = Tracks.Count() ) )
1404
for( index = 0; index < count; index++ )
1406
NewSongs.Add( Tracks[ index ].m_SongId );
1411
m_SongListCtrl->GetAllSongs( &Tracks );
1412
count = Tracks.Count();
1413
for( index = 0; index < count; index++ )
1415
NewSongs.Add( Tracks[ index ].m_SongId );
1419
if( NewSongs.Count() );
1739
if( tracks.Count() );
1421
1741
guListItems PlayLists;
1422
m_Db->GetPlayLists( &PlayLists,GUPLAYLIST_STATIC );
1742
m_Db->GetPlayLists( &PlayLists, guPLAYLIST_TYPE_STATIC );
1424
guPlayListAppend * PlayListAppendDlg = new guPlayListAppend( wxTheApp->GetTopWindow(), m_Db, &NewSongs, &PlayLists );
1744
guPlayListAppend * PlayListAppendDlg = new guPlayListAppend( wxTheApp->GetTopWindow(), m_Db, &tracks, &PlayLists );
1426
1746
if( PlayListAppendDlg->ShowModal() == wxID_OK )
1442
1762
m_Db->GetPlayListSongIds( PLId, &OldSongs );
1443
1763
if( PlayListAppendDlg->GetSelectedPosition() == 0 ) // BEGIN
1445
m_Db->UpdateStaticPlayList( PLId, NewSongs );
1765
m_Db->UpdateStaticPlayList( PLId, tracks );
1446
1766
m_Db->AppendStaticPlayList( PLId, OldSongs );
1450
m_Db->AppendStaticPlayList( PLId, NewSongs );
1770
m_Db->AppendStaticPlayList( PLId, tracks );
1453
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED, ID_PLAYLIST_UPDATED );
1454
wxPostEvent( wxTheApp->GetTopWindow(), evt );
1456
1775
PlayListAppendDlg->Destroy();
1460
1779
// -------------------------------------------------------------------------------- //
1780
void guLibPanel::OnSongSavePlayListClicked( wxCommandEvent &event )
1784
wxArrayInt NewSongs;
1785
guTrackArray Tracks;
1786
m_SongListCtrl->GetSelectedSongs( &Tracks );
1788
if( ( count = Tracks.Count() ) )
1790
for( index = 0; index < count; index++ )
1792
NewSongs.Add( Tracks[ index ].m_SongId );
1797
m_SongListCtrl->GetAllSongs( &Tracks );
1798
count = Tracks.Count();
1799
for( index = 0; index < count; index++ )
1801
NewSongs.Add( Tracks[ index ].m_SongId );
1805
SaveToPlayList( NewSongs );
1808
// -------------------------------------------------------------------------------- //
1809
void guLibPanel::UpdatePlaylists( void )
1811
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED, ID_PLAYLIST_UPDATED );
1812
wxPostEvent( wxTheApp->GetTopWindow(), evt );
1815
// -------------------------------------------------------------------------------- //
1461
1816
void guLibPanel::OnSongSetRating( wxCommandEvent &event )
1463
1818
//guLogMessage( wxT( "guLibPanel::OnSongSetRating %i" ), event.GetId() - ID_SONG_SET_RATING_0 );
2527
2964
if( PaneName == wxT( "TextSearch" ) )
2529
CmdId = ID_MENU_VIEW_LIB_TEXTSEARCH;
2966
CmdId = guLIBRARY_ELEMENT_TEXTSEARCH;
2531
2968
else if( PaneName == wxT( "Labels" ) )
2533
CmdId = ID_MENU_VIEW_LIB_LABELS;
2970
CmdId = guLIBRARY_ELEMENT_LABELS;
2535
2972
else if( PaneName == wxT( "Genres" ) )
2537
CmdId = ID_MENU_VIEW_LIB_GENRES;
2974
CmdId = guLIBRARY_ELEMENT_GENRES;
2539
2976
else if( PaneName == wxT( "Artists" ) )
2541
CmdId = ID_MENU_VIEW_LIB_ARTISTS;
2978
CmdId = guLIBRARY_ELEMENT_ARTISTS;
2543
2980
else if( PaneName == wxT( "Composers" ) )
2545
CmdId = ID_MENU_VIEW_LIB_COMPOSERS;
2982
CmdId = guLIBRARY_ELEMENT_COMPOSERS;
2547
2984
else if( PaneName == wxT( "AlbumArtists" ) )
2549
CmdId = ID_MENU_VIEW_LIB_ALBUMARTISTS;
2986
CmdId = guLIBRARY_ELEMENT_ALBUMARTISTS;
2551
2988
else if( PaneName == wxT( "Albums" ) )
2553
CmdId = ID_MENU_VIEW_LIB_ALBUMS;
2990
CmdId = guLIBRARY_ELEMENT_ALBUMS;
2555
2992
else if( PaneName == wxT( "Years" ) )
2557
CmdId = ID_MENU_VIEW_LIB_YEARS;
2994
CmdId = guLIBRARY_ELEMENT_YEARS;
2559
2996
else if( PaneName == wxT( "Ratings" ) )
2561
CmdId = ID_MENU_VIEW_LIB_RATINGS;
2998
CmdId = guLIBRARY_ELEMENT_RATINGS;
2563
3000
else if( PaneName == wxT( "PlayCounts" ) )
2565
CmdId = ID_MENU_VIEW_LIB_PLAYCOUNT;
3002
CmdId = guLIBRARY_ELEMENT_PLAYCOUNT;
2568
3005
guLogMessage( wxT( "OnPaneClose: %s %i" ), PaneName.c_str(), CmdId );
2571
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED, CmdId );
3008
wxCommandEvent evt( wxEVT_COMMAND_MENU_SELECTED, m_BaseCommand + CmdId );
2572
3009
AddPendingEvent( evt );
2585
3022
// -------------------------------------------------------------------------------- //
2586
void guLibPanel::OnTextChangedTimer( wxTimerEvent &event )
2588
wxString SearchString = m_InputTextCtrl->GetLineText( 0 );
2589
if( !SearchString.IsEmpty() )
2591
if( SearchString.Length() > 1 )
2593
wxArrayString Words = guSplitWords( SearchString );
2595
m_Db->SetTeFilters( Words, m_UpdateLock );
2598
m_UpdateLock = true;
2599
m_LabelsListCtrl->ReloadItems();
2600
m_GenreListCtrl->ReloadItems();
2601
m_AlbumArtistListCtrl->ReloadItems();
2602
m_ArtistListCtrl->ReloadItems();
2603
m_ComposerListCtrl->ReloadItems();
2604
m_AlbumListCtrl->ReloadItems();
2605
m_YearListCtrl->ReloadItems();
2606
m_RatingListCtrl->ReloadItems();
2607
m_PlayCountListCtrl->ReloadItems();
2608
m_SongListCtrl->ReloadItems();
2609
m_UpdateLock = false;
2611
m_InputTextCtrl->ShowCancelButton( true );
2616
wxArrayString Words;
2617
//guLogMessage( wxT( "guLibPanel::SearchCancelled" ) );
2618
//m_InputTextCtrl->Clear();
2619
m_Db->SetTeFilters( Words, m_UpdateLock );
2620
m_UpdateLock = true;
2621
// if( !m_UpdateLock )
2623
m_LabelsListCtrl->ReloadItems( false );
2624
m_GenreListCtrl->ReloadItems( false );
2625
m_AlbumArtistListCtrl->ReloadItems();
2626
m_ArtistListCtrl->ReloadItems( false );
2627
m_ComposerListCtrl->ReloadItems( false );
2628
m_AlbumListCtrl->ReloadItems( false );
2629
m_YearListCtrl->ReloadItems( false );
2630
m_RatingListCtrl->ReloadItems( false );
2631
m_PlayCountListCtrl->ReloadItems( false );
2632
m_SongListCtrl->ReloadItems( false );
2633
m_UpdateLock = false;
2635
m_InputTextCtrl->ShowCancelButton( false );
2639
// -------------------------------------------------------------------------------- //
2640
3023
void guLibPanel::DoSelectionChanged( void )
2642
3025
switch( m_SelChangedObject )
2812
3195
m_Db->DeleteLibraryTracks( &Tracks, true );
2814
ReloadControls( event );
3202
// -------------------------------------------------------------------------------- //
3203
bool guIsDirectoryEmpty( const wxString &path )
3206
wxString Path= path;
3209
if( !Path.EndsWith( wxT( "/" ) ) )
3214
if( Dir.IsOpened() )
3216
if( Dir.GetFirst( &FileName, wxEmptyString, wxDIR_FILES | wxDIR_DIRS ) )
3219
if( FileName[ 0 ] == '.' )
3221
if( Dir.Exists( Path + FileName ) )
3223
if( !guIsDirectoryEmpty( Path + FileName ) )
3228
if( guIsValidAudioFile( FileName.Lower() ) )
3231
} while( Dir.GetNext( &FileName ) );
3238
// -------------------------------------------------------------------------------- //
3239
bool guRmDirRecursive( const wxString &path )
3242
wxString Path= path;
3245
if( !Path.EndsWith( wxT( "/" ) ) )
3250
if( Dir.IsOpened() )
3252
if( Dir.GetFirst( &FileName, wxEmptyString, wxDIR_FILES | wxDIR_DIRS ) )
3255
if( FileName[ 0 ] == '.' )
3257
if( Dir.Exists( Path + FileName ) )
3259
if( !guRmDirRecursive( Path + FileName ) )
3264
if( !wxRemoveFile( Path + FileName ) )
3267
} while( Dir.GetNext( &FileName ) );
3271
if( !wxRmdir( Path ) )
3273
guLogMessage( wxT( "Could not delete the dir %s" ), Path.c_str() );
3280
// -------------------------------------------------------------------------------- //
3281
void guLibPanel::DeleteTracks( guTrackArray * tracks )
3283
m_Db->DeleteLibraryTracks( tracks, false );
3285
wxArrayString DeletePaths;
3287
int Count = tracks->Count();
3288
for( Index = 0; Index < Count; Index++ )
3290
guTrack &CurTrack = tracks->Item( Index );
3291
if( DeletePaths.Index( wxPathOnly( CurTrack.m_FileName ) ) == wxNOT_FOUND )
3293
DeletePaths.Add( wxPathOnly( CurTrack.m_FileName ) );
3296
if( !wxRemoveFile( CurTrack.m_FileName ) )
3298
guLogMessage( wxT( "Error deleting '%s'" ), CurTrack.m_FileName.c_str() );
3300
guLogMessage( wxT( "Deleted '%s'" ), CurTrack.m_FileName.c_str() );
3303
if( ( Count = DeletePaths.Count() ) )
3305
wxArrayString LibPaths = GetLibraryPaths();
3306
for( Index = 0; Index < ( int ) LibPaths.Count(); Index++ )
3308
guLogMessage( wxT( "Libath: %s"), LibPaths[ Index ].c_str() );
3311
for( Index = 0; Index < Count; Index++ )
3313
wxString CurPath = DeletePaths[ Index ];
3314
while( !CurPath.IsEmpty() && LibPaths.Index( CurPath + wxT( "/" ) ) == wxNOT_FOUND )
3316
guLogMessage( wxT( "Deleting '%s'" ), CurPath.c_str() );
3317
if( guIsDirectoryEmpty( CurPath ) )
3319
if( !guRmDirRecursive( CurPath ) )
3321
guLogMessage( wxT( "Error removing dir '%s'" ), DeletePaths[ Index ].c_str() );
3329
CurPath = CurPath.BeforeLast( wxT( '/' ) );
2822
3338
if( m_SongListCtrl->GetSelectedCount() )
2824
if( wxMessageBox( wxT( "Are you sure to delete the selected tracks from your drive?\nThis will permanently erase the selected tracks." ),
2825
wxT( "Remove tracks from drive" ), wxICON_QUESTION | wxYES | wxNO | wxCANCEL | wxNO_DEFAULT ) == wxYES )
3340
if( wxMessageBox( _( "Are you sure to delete the selected tracks from your drive?\nThis will permanently erase the selected tracks." ),
3341
_( "Remove tracks from drive" ), wxICON_QUESTION | wxYES | wxNO | wxCANCEL | wxNO_DEFAULT ) == wxYES )
2827
3343
guTrackArray Tracks;
2828
3344
m_SongListCtrl->GetSelectedSongs( &Tracks );
2830
m_Db->DeleteLibraryTracks( &Tracks, false );
2833
int Count = Tracks.Count();
2834
for( Index = 0; Index < Count; Index++ )
2836
if( !wxRemoveFile( Tracks[ Index ].m_FileName ) )
2838
guLogMessage( wxT( "Error deleting '%s'" ), Tracks[ Index ].m_FileName.c_str() );
3346
DeleteTracks( &Tracks );
2842
ReloadControls( event );
2847
3353
// -------------------------------------------------------------------------------- //
3354
void guLibPanel::CreateContextMenu( wxMenu * menu, const int windowid )
3358
// -------------------------------------------------------------------------------- //
3359
void guLibPanel::CreateCopyToMenu( wxMenu * menu, const int basecmd )
3361
guMainFrame * MainFrame = ( guMainFrame * ) wxTheApp->GetTopWindow();
3362
MainFrame->CreateCopyToMenu( menu, basecmd );
3365
// -------------------------------------------------------------------------------- //
3366
wxString guLibPanel::GetName( void )
3368
return _( "Library" );
3371
// -------------------------------------------------------------------------------- //
3372
wxArrayString guLibPanel::GetLibraryPaths( void )
3374
guConfig * Config = ( guConfig * ) guConfig::Get();
3375
return Config->ReadAStr( wxT( "LibPath" ), wxEmptyString, wxT( "LibPaths" ) );
3378
// -------------------------------------------------------------------------------- //
3379
int guLibPanel::LastUpdate( void )
3381
guConfig * Config = ( guConfig * ) guConfig::Get();
3382
return Config->ReadNum( wxT( "LastUpdate" ), 0, wxT( "General" ) );
3385
// -------------------------------------------------------------------------------- //
3386
void guLibPanel::SetLastUpdate( int lastupdate )
3388
guConfig * Config = ( guConfig * ) guConfig::Get();
3389
if( lastupdate == wxNOT_FOUND )
3391
wxDateTime Now = wxDateTime::Now();
3392
lastupdate = Now.GetTicks();
3394
Config->WriteNum( wxT( "LastUpdate" ), lastupdate, wxT( "General" ) );
3398
// -------------------------------------------------------------------------------- //
3399
wxArrayString guLibPanel::GetCoverSearchWords( void )
3401
guConfig * Config = ( guConfig * ) guConfig::Get();
3402
return Config->ReadAStr( wxT( "Word" ), wxEmptyString, wxT( "CoverSearch" ) );
3405
// -------------------------------------------------------------------------------- //
3406
bool guLibPanel::OnDropFiles( const wxArrayString &filenames )
3411
// -------------------------------------------------------------------------------- //
3412
// guLibPanelDropTarget
3413
// -------------------------------------------------------------------------------- //
3414
guLibPanelDropTarget::guLibPanelDropTarget( guLibPanel * libpanel ) : wxFileDropTarget()
3416
m_LibPanel = libpanel;
3419
// -------------------------------------------------------------------------------- //
3420
guLibPanelDropTarget::~guLibPanelDropTarget()
3424
// -------------------------------------------------------------------------------- //
3425
bool guLibPanelDropTarget::OnDropFiles( wxCoord x, wxCoord y, const wxArrayString &filenames )
3427
return m_LibPanel->OnDropFiles( filenames );
3430
// -------------------------------------------------------------------------------- //