1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
/**********************************************************************
Audacity: A Digital Audio Editor
ProjectStatus.h
Paul Licameli
**********************************************************************/
#include "ProjectStatus.h"
#include "Project.h"
static const AudacityProject::AttachedObjects::RegisteredFactory key{
[]( AudacityProject &parent ){
return std::make_shared< ProjectStatus >( parent );
}
};
ProjectStatus &ProjectStatus::Get( AudacityProject &project )
{
return project.AttachedObjects::Get< ProjectStatus >( key );
}
const ProjectStatus &ProjectStatus::Get( const AudacityProject &project )
{
return Get( const_cast< AudacityProject & >( project ) );
}
ProjectStatus::ProjectStatus( AudacityProject &project )
: mProject{ project }
{
}
ProjectStatus::~ProjectStatus() = default;
namespace
{
ProjectStatus::StatusWidthFunctions &statusWidthFunctions()
{
static ProjectStatus::StatusWidthFunctions theFunctions;
return theFunctions;
}
}
ProjectStatus::RegisteredStatusWidthFunction::RegisteredStatusWidthFunction(
const StatusWidthFunction &function )
{
statusWidthFunctions().emplace_back( function );
}
auto ProjectStatus::GetStatusWidthFunctions() -> const StatusWidthFunctions &
{
return statusWidthFunctions();
}
const TranslatableString &ProjectStatus::Get( StatusBarField field ) const
{
return mLastStatusMessages[ field - 1 ];
}
void ProjectStatus::Set(const TranslatableString &msg, StatusBarField field )
{
auto &project = mProject;
auto &lastMessage = mLastStatusMessages[ field - 1 ];
// compare full translations not msgids!
if ( msg.Translation() != lastMessage.Translation() ) {
lastMessage = msg;
Publish(field);
}
}
void ProjectStatus::UpdatePrefs()
{
auto &project = mProject;
for (auto field = 1; field <= nStatusBarFields; ++field)
Publish(static_cast<StatusBarField>(field));
}
|