1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-23 17:30:17 +01:00

static TrackFactory::Get()...

... not member functions of AudacityProject
This commit is contained in:
Paul Licameli
2019-01-22 10:59:44 -05:00
parent 4ba4d0978b
commit 116ff70756
18 changed files with 99 additions and 73 deletions

View File

@@ -1406,3 +1406,37 @@ TransportTracks GetAllPlaybackTracks(TrackList &trackList, bool selectedOnly, bo
#endif
return result;
}
#include "ViewInfo.h"
static auto TrackFactoryFactory = []( AudacityProject &project ) {
auto &dirManager = DirManager::Get( project );
auto &viewInfo = ViewInfo::Get( project );
return std::make_shared< TrackFactory >(
dirManager.shared_from_this(), &viewInfo );
};
static const AudacityProject::AttachedObjects::RegisteredFactory key2{
TrackFactoryFactory
};
TrackFactory &TrackFactory::Get( AudacityProject &project )
{
return project.AttachedObjects::Get< TrackFactory >( key2 );
}
const TrackFactory &TrackFactory::Get( const AudacityProject &project )
{
return Get( const_cast< AudacityProject & >( project ) );
}
TrackFactory &TrackFactory::Reset( AudacityProject &project )
{
auto result = TrackFactoryFactory( project );
project.AttachedObjects::Assign( key2, result );
return *result;
}
void TrackFactory::Destroy( AudacityProject &project )
{
project.AttachedObjects::Assign( key2, nullptr );
}