~ubuntu-branches/ubuntu/precise/guayadeque/precise

« back to all changes in this revision

Viewing changes to src/FileBrowser.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessio Treglia
  • Date: 2011-05-14 15:08:03 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20110514150803-8b5evqetnaj35j34
Tags: 0.3.1~dfsg0-1
* New upstream release.
* Strip wxsqlite3 stuff out of upstream's tarballs.
* Update get-orig-source target in debian/rules.
* Update gbp config file.
* Bump Standards.
* Build-depend on libwxsqlite3-2.8-dev
* Enable parallel builds.
* Link binaries against the system-wide copy of wxsqlite3.
* Point sources to the correct wxcurl's headers location.
* Update copyright file as per DEP-5
* Improve debian/watch to handle the ~dfsg\d* suffix.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
// -------------------------------------------------------------------------------- //
2
 
//      Copyright (C) 2008-2010 J.Rios
 
2
//      Copyright (C) 2008-2011 J.Rios
3
3
//      anonbeat@gmail.com
4
4
//
5
5
//    This Program is free software; you can redistribute it and/or modify
6
6
//    it under the terms of the GNU General Public License as published by
7
 
//    the Free Software Foundation; either version 2, or (at your option)
 
7
//    the Free Software Foundation; either version 3, or (at your option)
8
8
//    any later version.
9
9
//
10
10
//    This Program is distributed in the hope that it will be useful,
20
20
// -------------------------------------------------------------------------------- //
21
21
#include "FileBrowser.h"
22
22
 
 
23
#include "Accelerators.h"
23
24
#include "AuiDockArt.h"
24
25
#include "Config.h"
25
26
#include "FileRenamer.h"
77
78
// -------------------------------------------------------------------------------- //
78
79
void guGenericDirCtrl::OnConfigUpdated( wxCommandEvent &event )
79
80
{
80
 
    if( m_ShowPaths > guFILEBROWSER_SHOWPATH_SYSTEM )
 
81
    int Flags = event.GetInt();
 
82
    if( Flags & ( guPREFERENCE_PAGE_FLAG_LIBRARY | guPREFERENCE_PAGE_FLAG_RECORD | guPREFERENCE_PAGE_FLAG_PODCASTS ) )
81
83
    {
82
 
        wxString CurPath = GetPath();
83
 
        ReCreateTree();
84
 
        SetPath( CurPath );
 
84
        if( m_ShowPaths > guFILEBROWSER_SHOWPATH_SYSTEM )
 
85
        {
 
86
            wxString CurPath = GetPath();
 
87
            ReCreateTree();
 
88
            SetPath( CurPath );
 
89
        }
85
90
    }
86
91
}
87
92
 
170
175
    m_AddingFolder = false;
171
176
 
172
177
    guConfig * Config = ( guConfig * ) guConfig::Get();
 
178
    Config->RegisterObject( this );
173
179
 
174
180
        wxBoxSizer * MainSizer;
175
181
        MainSizer = new wxBoxSizer( wxVERTICAL );
212
218
        m_ShowPodPathsBtn->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( guFileBrowserDirCtrl::OnShowLibPathsClick ), NULL, this );
213
219
        m_ShowLibPathsBtn->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( guFileBrowserDirCtrl::OnShowLibPathsClick ), NULL, this );
214
220
 
 
221
    Connect( ID_CONFIG_UPDATED, guConfigUpdatedEvent, wxCommandEventHandler( guFileBrowserDirCtrl::OnConfigUpdated ), NULL, this );
 
222
 
 
223
    CreateAcceleratorTable();
215
224
}
216
225
 
217
226
// -------------------------------------------------------------------------------- //
218
227
guFileBrowserDirCtrl::~guFileBrowserDirCtrl()
219
228
{
220
229
    guConfig * Config = ( guConfig * ) guConfig::Get();
 
230
    Config->UnRegisterObject( this );
 
231
 
221
232
    Config->WriteBool( wxT( "ShowLibPaths" ), m_ShowLibPathsBtn->GetValue(), wxT( "FileBrowser" ) );
222
233
    m_DirCtrl->Disconnect( wxEVT_COMMAND_TREE_ITEM_MENU, wxTreeEventHandler( guFileBrowserDirCtrl::OnContextMenu ), NULL, this );
223
234
        m_ShowRecPathsBtn->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( guFileBrowserDirCtrl::OnShowLibPathsClick ), NULL, this );
224
235
        m_ShowPodPathsBtn->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( guFileBrowserDirCtrl::OnShowLibPathsClick ), NULL, this );
225
236
        m_ShowLibPathsBtn->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( guFileBrowserDirCtrl::OnShowLibPathsClick ), NULL, this );
 
237
 
 
238
    Disconnect( ID_CONFIG_UPDATED, guConfigUpdatedEvent, wxCommandEventHandler( guFileBrowserDirCtrl::OnConfigUpdated ), NULL, this );
 
239
}
 
240
 
 
241
// -------------------------------------------------------------------------------- //
 
242
void guFileBrowserDirCtrl::OnConfigUpdated( wxCommandEvent &event )
 
243
{
 
244
    int Flags = event.GetInt();
 
245
    if( Flags & guPREFERENCE_PAGE_FLAG_ACCELERATORS )
 
246
    {
 
247
        CreateAcceleratorTable();
 
248
    }
 
249
}
 
250
 
 
251
// -------------------------------------------------------------------------------- //
 
252
void guFileBrowserDirCtrl::CreateAcceleratorTable( void )
 
253
{
 
254
    wxAcceleratorTable AccelTable;
 
255
    wxArrayInt AliasAccelCmds;
 
256
    wxArrayInt RealAccelCmds;
 
257
 
 
258
    AliasAccelCmds.Add( ID_PLAYER_PLAYLIST_SAVE );
 
259
    AliasAccelCmds.Add( ID_PLAYER_PLAYLIST_EDITTRACKS );
 
260
    AliasAccelCmds.Add( ID_SONG_PLAY );
 
261
    AliasAccelCmds.Add( ID_SONG_ENQUEUE_AFTER_ALL );
 
262
    AliasAccelCmds.Add( ID_SONG_ENQUEUE_AFTER_TRACK );
 
263
    AliasAccelCmds.Add( ID_SONG_ENQUEUE_AFTER_ALBUM );
 
264
    AliasAccelCmds.Add( ID_SONG_ENQUEUE_AFTER_ARTIST );
 
265
 
 
266
    RealAccelCmds.Add( ID_FILESYSTEM_FOLDER_SAVEPLAYLIST );
 
267
    RealAccelCmds.Add( ID_FILESYSTEM_FOLDER_EDITTRACKS );
 
268
    RealAccelCmds.Add( ID_FILESYSTEM_FOLDER_PLAY );
 
269
    RealAccelCmds.Add( ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ALL );
 
270
    RealAccelCmds.Add( ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_TRACK );
 
271
    RealAccelCmds.Add( ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ALBUM );
 
272
    RealAccelCmds.Add( ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ARTIST );
 
273
 
 
274
    if( guAccelDoAcceleratorTable( AliasAccelCmds, RealAccelCmds, AccelTable ) )
 
275
    {
 
276
        SetAcceleratorTable( AccelTable );
 
277
    }
226
278
}
227
279
 
228
280
// -------------------------------------------------------------------------------- //
254
306
        MenuItem = new wxMenuItem( menu, -1, _( "No commands defined" ), _( "Add commands in preferences" ) );
255
307
        SubMenu->Append( MenuItem );
256
308
    }
257
 
    menu->AppendSeparator();
258
309
    menu->AppendSubMenu( SubMenu, _( "Commands" ) );
259
310
}
260
311
 
266
317
 
267
318
    wxPoint Point = event.GetPoint();
268
319
 
269
 
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_PLAY, _( "Play" ), _( "Play the selected folder" ) );
 
320
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_PLAY,
 
321
                            wxString( _( "Play" ) ) + guAccelGetCommandKeyCodeString( ID_SONG_PLAY ),
 
322
                            _( "Play the selected folder" ) );
270
323
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_player_tiny_light_play ) );
271
324
    Menu.Append( MenuItem );
272
325
 
273
 
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_ENQUEUE, _( "Enqueue" ), _( "Add the selected folder to playlist" ) );
274
 
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
275
 
    Menu.Append( MenuItem );
276
 
 
277
 
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_ENQUEUE_ASNEXT, _( "Enqueue Next" ), _( "Add the selected folder to playlist as Next Tracks" ) );
278
 
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
279
 
    Menu.Append( MenuItem );
 
326
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ALL,
 
327
                            wxString( _( "Enqueue" ) ) + guAccelGetCommandKeyCodeString( ID_SONG_ENQUEUE_AFTER_ALL ),
 
328
                            _( "Add the selected folder to playlist" ) );
 
329
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
 
330
    Menu.Append( MenuItem );
 
331
 
 
332
    wxMenu * EnqueueMenu = new wxMenu();
 
333
 
 
334
    MenuItem = new wxMenuItem( EnqueueMenu, ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_TRACK,
 
335
                            wxString( _( "Current Track" ) ) +  guAccelGetCommandKeyCodeString( ID_SONG_ENQUEUE_AFTER_TRACK ),
 
336
                            _( "Add current selected tracks to playlist after the current track" ) );
 
337
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
 
338
    EnqueueMenu->Append( MenuItem );
 
339
 
 
340
    MenuItem = new wxMenuItem( EnqueueMenu, ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ALBUM,
 
341
                            wxString( _( "Current Album" ) ) +  guAccelGetCommandKeyCodeString( ID_SONG_ENQUEUE_AFTER_ALBUM ),
 
342
                            _( "Add current selected tracks to playlist after the current album" ) );
 
343
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
 
344
    EnqueueMenu->Append( MenuItem );
 
345
 
 
346
    MenuItem = new wxMenuItem( EnqueueMenu, ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ARTIST,
 
347
                            wxString( _( "Current Artist" ) ) +  guAccelGetCommandKeyCodeString( ID_SONG_ENQUEUE_AFTER_ARTIST ),
 
348
                            _( "Add current selected tracks to playlist after the current artist" ) );
 
349
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
 
350
    EnqueueMenu->Append( MenuItem );
 
351
 
 
352
    Menu.Append( wxID_ANY, _( "Enqueue after" ), EnqueueMenu );
280
353
 
281
354
    Menu.AppendSeparator();
282
355
 
283
 
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_EDITTRACKS, _( "Edit Tracks" ), _( "Edit the tracks in the selected folder" ) );
 
356
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_EDITTRACKS,
 
357
                            wxString( _( "Edit Tracks" ) ) + guAccelGetCommandKeyCodeString( ID_PLAYER_PLAYLIST_EDITTRACKS ),
 
358
                            _( "Edit the tracks in the selected folder" ) );
284
359
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_edit ) );
285
360
    Menu.Append( MenuItem );
286
361
 
287
 
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_SAVEPLAYLIST, _( "Save to Playlist" ), _( "Add the tracks in the selected folder to a playlist" ) );
 
362
    Menu.AppendSeparator();
 
363
 
 
364
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_SAVEPLAYLIST,
 
365
                            wxString( _( "Save to Playlist" ) ) + guAccelGetCommandKeyCodeString( ID_PLAYER_PLAYLIST_SAVE ),
 
366
                            _( "Add the tracks in the selected folder to a playlist" ) );
288
367
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_doc_save ) );
289
368
    Menu.Append( MenuItem );
290
369
 
291
370
    Menu.AppendSeparator();
292
371
 
293
 
//    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_COPYTO, _( "Copy to..." ), _( "Copy the selected folder to a folder or device" ) );
294
 
//    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_edit_copy ) );
295
 
//    Menu.Append( MenuItem );
296
 
    guMainFrame * MainFrame = ( guMainFrame * ) wxTheApp->GetTopWindow();
297
 
    MainFrame->CreateCopyToMenu( &Menu, ID_FILESYSTEM_FOLDER_COPYTO );
298
 
 
299
 
    Menu.AppendSeparator();
300
 
 
301
 
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_COPY, _( "Copy" ), _( "Copy the selected folder to clipboard" ) );
 
372
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_COPY,
 
373
                            _( "Copy" ),
 
374
                            _( "Copy the selected folder to clipboard" ) );
302
375
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_edit_copy ) );
303
376
    Menu.Append( MenuItem );
304
377
    //MenuItem->Enable( false );
305
378
 
306
 
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_PASTE, _( "Paste" ), _( "Paste to the selected folder" ) );
 
379
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_PASTE,
 
380
                            _( "Paste" ),
 
381
                            _( "Paste to the selected folder" ) );
307
382
    Menu.Append( MenuItem );
308
383
    wxTheClipboard->UsePrimarySelection( false );
309
384
    if( wxTheClipboard->Open() )
326
401
    Menu.Append( MenuItem );
327
402
 
328
403
    MenuItem = new wxMenuItem( &Menu, ID_FILESYSTEM_FOLDER_DELETE, _( "Remove" ), _( "Remove the selected folder" ) );
 
404
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_edit_clear ) );
329
405
    Menu.Append( MenuItem );
330
406
 
 
407
    Menu.AppendSeparator();
 
408
 
 
409
    guMainFrame * MainFrame = ( guMainFrame * ) wxTheApp->GetTopWindow();
 
410
    MainFrame->CreateCopyToMenu( &Menu, ID_FILESYSTEM_FOLDER_COPYTO );
 
411
 
331
412
    AppendFolderCommands( &Menu );
332
413
 
333
414
    PopupMenu( &Menu, Point );
530
611
    m_Db = db;
531
612
 
532
613
    guConfig * Config = ( guConfig * ) guConfig::Get();
 
614
    Config->RegisterObject( this );
533
615
 
534
616
    m_Order = Config->ReadNum( wxT( "Order" ), 0, wxT( "FileBrowser" ) );
535
617
    m_OrderDesc = Config->ReadNum( wxT( "OrderDesc" ), false, wxT( "FileBrowser" ) );
556
638
        InsertColumn( Column );
557
639
    }
558
640
 
 
641
    Connect( ID_CONFIG_UPDATED, guConfigUpdatedEvent, wxCommandEventHandler( guFilesListBox::OnConfigUpdated ), NULL, this );
 
642
 
 
643
    CreateAcceleratorTable();
 
644
 
559
645
    ReloadItems();
560
646
}
561
647
 
564
650
guFilesListBox::~guFilesListBox()
565
651
{
566
652
    guConfig * Config = ( guConfig * ) guConfig::Get();
 
653
    Config->UnRegisterObject( this );
 
654
 
567
655
    wxArrayString ColumnNames = GetColumnNames();
568
656
    int index;
569
657
    int count = ColumnNames.Count();
579
667
 
580
668
    Config->WriteNum( wxT( "Order" ), m_Order, wxT( "FileBrowser" ) );
581
669
    Config->WriteBool( wxT( "OrderDesc" ), m_OrderDesc, wxT( "FileBrowser" ) );
 
670
 
 
671
    Disconnect( ID_CONFIG_UPDATED, guConfigUpdatedEvent, wxCommandEventHandler( guFilesListBox::OnConfigUpdated ), NULL, this );
 
672
}
 
673
 
 
674
// -------------------------------------------------------------------------------- //
 
675
void guFilesListBox::OnConfigUpdated( wxCommandEvent &event )
 
676
{
 
677
    int Flags = event.GetInt();
 
678
    if( Flags & guPREFERENCE_PAGE_FLAG_ACCELERATORS )
 
679
    {
 
680
        CreateAcceleratorTable();
 
681
    }
 
682
}
 
683
 
 
684
// -------------------------------------------------------------------------------- //
 
685
void guFilesListBox::CreateAcceleratorTable( void )
 
686
{
 
687
    wxAcceleratorTable AccelTable;
 
688
    wxArrayInt AliasAccelCmds;
 
689
    wxArrayInt RealAccelCmds;
 
690
 
 
691
    AliasAccelCmds.Add( ID_PLAYER_PLAYLIST_SAVE );
 
692
    AliasAccelCmds.Add( ID_PLAYER_PLAYLIST_EDITTRACKS );
 
693
    AliasAccelCmds.Add( ID_SONG_PLAY );
 
694
    AliasAccelCmds.Add( ID_SONG_ENQUEUE_AFTER_ALL );
 
695
    AliasAccelCmds.Add( ID_SONG_ENQUEUE_AFTER_TRACK );
 
696
    AliasAccelCmds.Add( ID_SONG_ENQUEUE_AFTER_ALBUM );
 
697
    AliasAccelCmds.Add( ID_SONG_ENQUEUE_AFTER_ARTIST );
 
698
 
 
699
    RealAccelCmds.Add( ID_FILESYSTEM_ITEMS_SAVEPLAYLIST );
 
700
    RealAccelCmds.Add( ID_FILESYSTEM_ITEMS_EDITTRACKS );
 
701
    RealAccelCmds.Add( ID_FILESYSTEM_ITEMS_PLAY );
 
702
    RealAccelCmds.Add( ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ALL );
 
703
    RealAccelCmds.Add( ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_TRACK );
 
704
    RealAccelCmds.Add( ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ALBUM );
 
705
    RealAccelCmds.Add( ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ARTIST );
 
706
 
 
707
    if( guAccelDoAcceleratorTable( AliasAccelCmds, RealAccelCmds, AccelTable ) )
 
708
    {
 
709
        SetAcceleratorTable( AccelTable );
 
710
    }
582
711
}
583
712
 
584
713
// -------------------------------------------------------------------------------- //
857
986
// -------------------------------------------------------------------------------- //
858
987
void guFilesListBox::ReloadItems( bool reset )
859
988
{
860
 
    wxASSERT( m_Db );
861
 
 
862
989
    //
863
990
    wxArrayInt Selection;
864
991
    int FirstVisible = 0;
919
1046
        MenuItem = new wxMenuItem( menu, -1, _( "No commands defined" ), _( "Add commands in preferences" ) );
920
1047
        SubMenu->Append( MenuItem );
921
1048
    }
922
 
    menu->AppendSeparator();
923
1049
    menu->AppendSubMenu( SubMenu, _( "Commands" ) );
924
1050
}
925
1051
 
931
1057
    int SelCount;
932
1058
    if( ( SelCount = Selection.Count() ) )
933
1059
    {
934
 
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_PLAY, _( "Play" ), _( "Play current selected files" ) );
 
1060
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_PLAY,
 
1061
                            wxString( _( "Play" ) ) + guAccelGetCommandKeyCodeString( ID_SONG_PLAY ),
 
1062
                            _( "Play current selected files" ) );
935
1063
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_player_tiny_light_play ) );
936
1064
        Menu->Append( MenuItem );
937
1065
 
938
 
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_ENQUEUE, _( "Enqueue" ), _( "Add current selected files to playlist" ) );
939
 
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
940
 
        Menu->Append( MenuItem );
941
 
 
942
 
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_ENQUEUE_ASNEXT, _( "Enqueue Next" ), _( "Add current selected files to playlist as Next Tracks" ) );
943
 
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
944
 
        Menu->Append( MenuItem );
945
 
 
946
 
        Menu->AppendSeparator();
947
 
    }
 
1066
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ALL,
 
1067
                            wxString( _( "Enqueue" ) ) + guAccelGetCommandKeyCodeString( ID_SONG_ENQUEUE_AFTER_ALL ),
 
1068
                            _( "Add current selected files to playlist" ) );
 
1069
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
 
1070
        Menu->Append( MenuItem );
 
1071
 
 
1072
        wxMenu * EnqueueMenu = new wxMenu();
 
1073
 
 
1074
        MenuItem = new wxMenuItem( EnqueueMenu, ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_TRACK,
 
1075
                                wxString( _( "Current Track" ) ) +  guAccelGetCommandKeyCodeString( ID_SONG_ENQUEUE_AFTER_TRACK ),
 
1076
                                _( "Add current selected tracks to playlist after the current track" ) );
 
1077
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
 
1078
        EnqueueMenu->Append( MenuItem );
 
1079
        MenuItem->Enable( SelCount );
 
1080
 
 
1081
        MenuItem = new wxMenuItem( EnqueueMenu, ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ALBUM,
 
1082
                                wxString( _( "Current Album" ) ) +  guAccelGetCommandKeyCodeString( ID_SONG_ENQUEUE_AFTER_ALBUM ),
 
1083
                                _( "Add current selected tracks to playlist after the current album" ) );
 
1084
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
 
1085
        EnqueueMenu->Append( MenuItem );
 
1086
        MenuItem->Enable( SelCount );
 
1087
 
 
1088
        MenuItem = new wxMenuItem( EnqueueMenu, ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ARTIST,
 
1089
                                wxString( _( "Current Artist" ) ) +  guAccelGetCommandKeyCodeString( ID_SONG_ENQUEUE_AFTER_ARTIST ),
 
1090
                                _( "Add current selected tracks to playlist after the current artist" ) );
 
1091
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_add ) );
 
1092
        EnqueueMenu->Append( MenuItem );
 
1093
        MenuItem->Enable( SelCount );
 
1094
 
 
1095
        Menu->Append( wxID_ANY, _( "Enqueue after" ), EnqueueMenu );
 
1096
    }
 
1097
 
 
1098
    if( SelCount )
 
1099
    {
 
1100
        Menu->AppendSeparator();
 
1101
 
 
1102
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_EDITTRACKS,
 
1103
                            wxString( _( "Edit Tracks" ) ) + guAccelGetCommandKeyCodeString( ID_PLAYER_PLAYLIST_EDITTRACKS ),
 
1104
                            _( "Edit the current selected files" ) );
 
1105
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_edit ) );
 
1106
        Menu->Append( MenuItem );
 
1107
 
 
1108
        Menu->AppendSeparator();
 
1109
 
 
1110
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_SAVEPLAYLIST,
 
1111
                            wxString( _( "Save to Playlist" ) ) + guAccelGetCommandKeyCodeString( ID_PLAYER_PLAYLIST_SAVE ),
 
1112
                            _( "Add the current selected tracks to a playlist" ) );
 
1113
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_doc_save ) );
 
1114
        Menu->Append( MenuItem );
 
1115
    }
 
1116
 
 
1117
    Menu->AppendSeparator();
948
1118
 
949
1119
    MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_COPY, _( "Copy" ), _( "Copy the selected folder to clipboard" ) );
950
1120
    MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_edit_copy ) );
951
1121
    Menu->Append( MenuItem );
952
 
    //MenuItem->Enable( false );
953
1122
 
954
1123
    MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_PASTE, _( "Paste" ), _( "Paste to the selected dir" ) );
955
1124
    Menu->Append( MenuItem );
968
1137
    {
969
1138
        Menu->AppendSeparator();
970
1139
 
971
 
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_EDITTRACKS, _( "Edit tracks" ), _( "Edit the current selected files" ) );
 
1140
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_RENAME, _( "Rename files" ), _( "Rename the current selected file" ) );
972
1141
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_edit ) );
973
1142
        Menu->Append( MenuItem );
974
1143
 
975
 
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_SAVEPLAYLIST, _( "Save to Playlist" ), _( "Add the current selected tracks to a playlist" ) );
976
 
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_doc_save ) );
 
1144
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_DELETE, _( "Remove" ), _( "Delete the selected files" ) );
 
1145
        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_edit_clear ) );
977
1146
        Menu->Append( MenuItem );
978
1147
 
979
1148
        Menu->AppendSeparator();
980
 
//        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_COPYTO, _( "Copy to..." ), _( "Copy the selected files to a folder or device" ) );
981
 
//        MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_edit_copy ) );
982
 
//        Menu->Append( MenuItem );
 
1149
 
983
1150
        guMainFrame * MainFrame = ( guMainFrame * ) wxTheApp->GetTopWindow();
984
1151
        MainFrame->CreateCopyToMenu( Menu, ID_FILESYSTEM_ITEMS_COPYTO );
985
1152
 
986
 
        Menu->AppendSeparator();
987
 
 
988
 
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_RENAME, _( "Rename files" ), _( "Rename the current selected file" ) );
989
 
        //MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_ ) );
990
 
        Menu->Append( MenuItem );
991
 
 
992
 
        MenuItem = new wxMenuItem( Menu, ID_FILESYSTEM_ITEMS_DELETE, _( "Delete" ), _( "Delete the selected files" ) );
993
 
        //MenuItem->SetBitmap( guImage( guIMAGE_INDEX_tiny_ ) );
994
 
        Menu->Append( MenuItem );
995
 
 
996
1153
        AppendItemsCommands( Menu, SelCount, SelCount ? GetType( Selection[ 0 ] ) : guFILEITEM_TYPE_FILE );
997
1154
    }
998
1155
}
1079
1236
                        }
1080
1237
                        else
1081
1238
                        {
1082
 
                            //guLogMessage( wxT( "Reading tags from the file..." ) );
1083
 
                            guTagInfo * TagInfo = guGetTagInfoHandler( FileName );
1084
 
                            if( TagInfo )
 
1239
                            if( Track->ReadFromFile( FileName ) )
1085
1240
                            {
1086
1241
                                Track->m_Type = guTRACK_TYPE_NOTDB;
1087
 
 
1088
 
                                TagInfo->Read();
1089
 
 
1090
 
                                Track->m_ArtistName  = TagInfo->m_ArtistName;
1091
 
                                Track->m_AlbumName   = TagInfo->m_AlbumName;
1092
 
                                Track->m_SongName    = TagInfo->m_TrackName;
1093
 
                                Track->m_Number      = TagInfo->m_Track;
1094
 
                                Track->m_GenreName   = TagInfo->m_GenreName;
1095
 
                                Track->m_Length      = TagInfo->m_Length;
1096
 
                                Track->m_Year        = TagInfo->m_Year;
1097
 
                                Track->m_Rating      = wxNOT_FOUND;
1098
 
                                Track->m_CoverId     = 0;
1099
 
 
1100
 
                                delete TagInfo;
1101
1242
                            }
1102
1243
                            else
1103
1244
                            {
1313
1454
 
1314
1455
// -------------------------------------------------------------------------------- //
1315
1456
guFileBrowser::guFileBrowser( wxWindow * parent, guDbLibrary * db, guPlayerPanel * playerpanel ) :
1316
 
    wxPanel( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL )
 
1457
    guAuiManagedPanel( parent )
1317
1458
{
1318
1459
    m_Db = db;
1319
1460
    m_PlayerPanel = playerpanel;
1320
1461
 
1321
1462
    guConfig *  Config = ( guConfig * ) guConfig::Get();
1322
1463
 
1323
 
    m_AuiManager.SetManagedWindow( this );
1324
 
    m_AuiManager.SetArtProvider( new guAuiDockArt() );
1325
 
    m_AuiManager.SetFlags( wxAUI_MGR_ALLOW_FLOATING |
1326
 
                           wxAUI_MGR_TRANSPARENT_DRAG |
1327
 
                           wxAUI_MGR_TRANSPARENT_HINT );
1328
 
    wxAuiDockArt * AuiDockArt = m_AuiManager.GetArtProvider();
1329
 
    AuiDockArt->SetColour( wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR,
1330
 
            wxSystemSettings::GetColour( wxSYS_COLOUR_INACTIVECAPTIONTEXT ) );
1331
 
    AuiDockArt->SetColour( wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR,
1332
 
            wxSystemSettings::GetColour( wxSYS_COLOUR_CAPTIONTEXT ) );
1333
 
 
1334
 
    AuiDockArt->SetColour( wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR,
1335
 
            wxSystemSettings::GetColour( wxSYS_COLOUR_ACTIVEBORDER ) );
1336
 
 
1337
 
    AuiDockArt->SetColour( wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR,
1338
 
            wxSystemSettings::GetColour( wxSYS_COLOUR_3DSHADOW ) );
1339
 
 
1340
 
    AuiDockArt->SetColour( wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR,
1341
 
            wxSystemSettings::GetColour( wxSYS_COLOUR_INACTIVEBORDER ) );
1342
 
 
1343
 
    AuiDockArt->SetColour( wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR,
1344
 
            wxSystemSettings::GetColour( wxSYS_COLOUR_3DSHADOW ) );
1345
 
 
1346
 
    AuiDockArt->SetColour( wxAUI_DOCKART_GRADIENT_TYPE,
1347
 
            wxAUI_GRADIENT_VERTICAL );
1348
 
 
1349
1464
    m_VisiblePanels = Config->ReadNum( wxT( "FBVisiblePanels" ), guPANEL_FILEBROWSER_VISIBLE_DEFAULT, wxT( "Positions" ) );
1350
1465
 
1351
1466
 
1372
1487
    wxString FileBrowserLayout = Config->ReadStr( wxT( "FileBrowser" ), wxEmptyString, wxT( "Positions" ) );
1373
1488
    if( Config->GetIgnoreLayouts() || FileBrowserLayout.IsEmpty() )
1374
1489
    {
1375
 
        m_AuiManager.Update();
1376
1490
        m_VisiblePanels = guPANEL_FILEBROWSER_VISIBLE_DEFAULT;
1377
 
    }
1378
 
    else
1379
 
    {
1380
 
        m_AuiManager.LoadPerspective( FileBrowserLayout, true );
1381
 
    }
 
1491
        FileBrowserLayout = wxT( "layout2|name=FileBrowserDirCtrl;caption=" ) + wxString( _( "Directories" ) );
 
1492
        FileBrowserLayout += wxT( ";state=2044;dir=4;layer=0;row=0;pos=0;prop=100000;bestw=60;besth=28;minw=60;minh=28;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|" );
 
1493
        FileBrowserLayout += wxT( "name=FileBrowserFilesCtrl;caption=;state=768;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1| " );
 
1494
        FileBrowserLayout += wxT( "dock_size(5,0,0)=10|dock_size(4,0,0)=266|" );
 
1495
        //m_AuiManager.Update();
 
1496
    }
 
1497
 
 
1498
    m_AuiManager.LoadPerspective( FileBrowserLayout, true );
1382
1499
 
1383
1500
        m_DirCtrl->Connect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( guFileBrowser::OnDirItemChanged ), NULL, this );
1384
1501
    m_FilesCtrl->Connect( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED,  wxListEventHandler( guFileBrowser::OnFileItemActivated ), NULL, this );
1385
1502
        m_FilesCtrl->Connect( wxEVT_COMMAND_LIST_COL_CLICK, wxListEventHandler( guFileBrowser::OnFilesColClick ), NULL, this );
1386
1503
 
1387
1504
    Connect( ID_FILESYSTEM_FOLDER_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderPlay ), NULL, this );
1388
 
    Connect( ID_FILESYSTEM_FOLDER_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderEnqueue ), NULL, this );
1389
 
    Connect( ID_FILESYSTEM_FOLDER_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderEnqueueAsNext ), NULL, this );
 
1505
    Connect( ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ALL, ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderEnqueue ), NULL, this );
1390
1506
    Connect( ID_FILESYSTEM_FOLDER_NEW, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderNew ), NULL, this );
1391
1507
    Connect( ID_FILESYSTEM_FOLDER_RENAME, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderRename ), NULL, this );
1392
1508
    Connect( ID_FILESYSTEM_FOLDER_DELETE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderDelete ), NULL, this );
1399
1515
    Connect( ID_FILESYSTEM_FOLDER_COMMANDS, ID_FILESYSTEM_FOLDER_COMMANDS + 99, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderCommand ) );
1400
1516
 
1401
1517
    Connect( ID_FILESYSTEM_ITEMS_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsPlay ), NULL, this );
1402
 
    Connect( ID_FILESYSTEM_ITEMS_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsEnqueue ), NULL, this );
1403
 
    Connect( ID_FILESYSTEM_ITEMS_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsEnqueueAsNext ), NULL, this );
 
1518
    Connect( ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ALL, ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsEnqueue ), NULL, this );
1404
1519
    Connect( ID_FILESYSTEM_ITEMS_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsEditTracks ), NULL, this );
1405
1520
    Connect( ID_FILESYSTEM_ITEMS_SAVEPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsSaveToPlayList ), NULL, this );
1406
1521
    Connect( ID_FILESYSTEM_ITEMS_COPYTO, ID_FILESYSTEM_ITEMS_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsCopyTo ), NULL, this );
1426
1541
        m_FilesCtrl->Disconnect( wxEVT_COMMAND_LIST_COL_CLICK, wxListEventHandler( guFileBrowser::OnFilesColClick ), NULL, this );
1427
1542
 
1428
1543
    Disconnect( ID_FILESYSTEM_FOLDER_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderPlay ), NULL, this );
1429
 
    Disconnect( ID_FILESYSTEM_FOLDER_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderEnqueue ), NULL, this );
1430
 
    Disconnect( ID_FILESYSTEM_FOLDER_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderEnqueueAsNext ), NULL, this );
 
1544
    Disconnect( ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ALL, ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderEnqueue ), NULL, this );
1431
1545
    Disconnect( ID_FILESYSTEM_FOLDER_NEW, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderNew ), NULL, this );
1432
1546
    Disconnect( ID_FILESYSTEM_FOLDER_RENAME, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderRename ), NULL, this );
1433
1547
    Disconnect( ID_FILESYSTEM_FOLDER_DELETE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderDelete ), NULL, this );
1440
1554
    Disconnect( ID_FILESYSTEM_FOLDER_COMMANDS, ID_FILESYSTEM_FOLDER_COMMANDS + 99, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnFolderCommand ) );
1441
1555
 
1442
1556
    Disconnect( ID_FILESYSTEM_ITEMS_PLAY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsPlay ), NULL, this );
1443
 
    Disconnect( ID_FILESYSTEM_ITEMS_ENQUEUE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsEnqueue ), NULL, this );
1444
 
    Disconnect( ID_FILESYSTEM_ITEMS_ENQUEUE_ASNEXT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsEnqueueAsNext ), NULL, this );
 
1557
    Disconnect( ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ALL, ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ARTIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsEnqueue ), NULL, this );
1445
1558
    Disconnect( ID_FILESYSTEM_ITEMS_EDITTRACKS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsEditTracks ), NULL, this );
1446
1559
    Disconnect( ID_FILESYSTEM_ITEMS_SAVEPLAYLIST, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsSaveToPlayList ), NULL, this );
1447
1560
    Disconnect( ID_FILESYSTEM_ITEMS_COPYTO, ID_FILESYSTEM_ITEMS_COPYTO + 199, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsCopyTo ), NULL, this );
1450
1563
 
1451
1564
    Disconnect( ID_FILESYSTEM_ITEMS_COMMANDS, ID_FILESYSTEM_ITEMS_COMMANDS + 99, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( guFileBrowser::OnItemsCommand ), NULL, this );
1452
1565
 
1453
 
    m_AuiManager.UnInit();
1454
1566
}
1455
1567
 
1456
1568
// -------------------------------------------------------------------------------- //
1536
1648
void guFileBrowser::OnFolderEnqueue( wxCommandEvent &event )
1537
1649
{
1538
1650
    wxArrayString Files = m_FilesCtrl->GetAllFiles( true );
1539
 
    m_PlayerPanel->AddToPlayList( Files );
1540
 
}
1541
 
 
1542
 
// -------------------------------------------------------------------------------- //
1543
 
void guFileBrowser::OnFolderEnqueueAsNext( wxCommandEvent &event )
1544
 
{
1545
 
    wxArrayString Files = m_FilesCtrl->GetAllFiles( true );
1546
 
    m_PlayerPanel->AddToPlayList( Files, true );
 
1651
    if( Files.Count() )
 
1652
    {
 
1653
        m_PlayerPanel->AddToPlayList( Files, true, event.GetId() - ID_FILESYSTEM_FOLDER_ENQUEUE_AFTER_ALL );
 
1654
    }
1547
1655
}
1548
1656
 
1549
1657
// -------------------------------------------------------------------------------- //
1706
1814
    guTrackArray Tracks;
1707
1815
    guImagePtrArray Images;
1708
1816
    wxArrayString Lyrics;
 
1817
    wxArrayInt ChangedFlags;
1709
1818
 
1710
1819
    m_FilesCtrl->GetAllSongs( &Tracks );
1711
1820
 
1712
1821
    if( Tracks.Count() )
1713
1822
    {
1714
 
        guTrackEditor * TrackEditor = new guTrackEditor( this, m_Db, &Tracks, &Images, &Lyrics );
 
1823
        guTrackEditor * TrackEditor = new guTrackEditor( this, m_Db, &Tracks, &Images, &Lyrics, &ChangedFlags );
1715
1824
 
1716
1825
        if( TrackEditor )
1717
1826
        {
1718
1827
            if( TrackEditor->ShowModal() == wxID_OK )
1719
1828
            {
1720
 
                m_Db->UpdateSongs( &Tracks );
1721
 
                guUpdateImages( Tracks, Images );
1722
 
                guUpdateLyrics( Tracks, Lyrics );
 
1829
                guUpdateTracks( Tracks, Images, Lyrics, ChangedFlags );
 
1830
                m_Db->UpdateSongs( &Tracks, ChangedFlags );
 
1831
                //guUpdateLyrics( Tracks, Lyrics, ChangedFlags );
 
1832
                //guUpdateImages( Tracks, Images, ChangedFlags );
1723
1833
 
1724
1834
                // Update the track in database, playlist, etc
1725
1835
                ( ( guMainFrame * ) wxTheApp->GetTopWindow() )->UpdatedTracks( guUPDATED_TRACKS_PLAYER_PLAYLIST, &Tracks );
1829
1939
    wxArrayString Files = m_FilesCtrl->GetSelectedFiles( true );
1830
1940
    if( Files.Count() )
1831
1941
    {
1832
 
        m_PlayerPanel->AddToPlayList( Files );
1833
 
    }
1834
 
}
1835
 
 
1836
 
// -------------------------------------------------------------------------------- //
1837
 
void guFileBrowser::OnItemsEnqueueAsNext( wxCommandEvent &event )
1838
 
{
1839
 
    wxArrayString Files = m_FilesCtrl->GetSelectedFiles( true );
1840
 
    if( Files.Count() )
1841
 
    {
1842
 
        m_PlayerPanel->AddToPlayList( Files, true );
 
1942
        m_PlayerPanel->AddToPlayList( Files, true, event.GetId() - ID_FILESYSTEM_ITEMS_ENQUEUE_AFTER_ALL );
1843
1943
    }
1844
1944
}
1845
1945
 
1849
1949
    guTrackArray Tracks;
1850
1950
    guImagePtrArray Images;
1851
1951
    wxArrayString Lyrics;
 
1952
    wxArrayInt ChangedFlags;
1852
1953
 
1853
1954
    m_FilesCtrl->GetSelectedSongs( &Tracks );
1854
1955
 
1855
1956
    if( Tracks.Count() )
1856
1957
    {
1857
 
        guTrackEditor * TrackEditor = new guTrackEditor( this, m_Db, &Tracks, &Images, &Lyrics );
 
1958
        guTrackEditor * TrackEditor = new guTrackEditor( this, m_Db, &Tracks, &Images, &Lyrics, &ChangedFlags );
1858
1959
 
1859
1960
        if( TrackEditor )
1860
1961
        {
1861
1962
            if( TrackEditor->ShowModal() == wxID_OK )
1862
1963
            {
1863
 
                m_Db->UpdateSongs( &Tracks );
1864
 
                guUpdateImages( Tracks, Images );
1865
 
                guUpdateLyrics( Tracks, Lyrics );
 
1964
                guUpdateTracks( Tracks, Images, Lyrics, ChangedFlags );
 
1965
                m_Db->UpdateSongs( &Tracks, ChangedFlags );
 
1966
                //guUpdateLyrics( Tracks, Lyrics, ChangedFlags );
 
1967
                //guUpdateImages( Tracks, Images, ChangedFlags );
1866
1968
 
1867
1969
                // Update the track in database, playlist, etc
1868
1970
                ( ( guMainFrame * ) wxTheApp->GetTopWindow() )->UpdatedTracks( guUPDATED_TRACKS_PLAYER_PLAYLIST, &Tracks );