PrefsMan and Preference depend on each other. PrefsMan is big, and

depends on some higher level code.  Make Preference stand-alone, so
code that only has its own preferences can be used without PrefsMan.
This commit is contained in:
Glenn Maynard
2005-12-31 01:26:29 +00:00
parent aac313fdd3
commit 76e55c2f14
4 changed files with 44 additions and 40 deletions
+34 -3
View File
@@ -1,21 +1,52 @@
#include "global.h"
#include "Preference.h"
#include "PrefsManager.h"
#include "IniFile.h"
#include "RageLog.h"
#include "LuaFunctions.h"
#include "LuaManager.h"
#include "MessageManager.h"
#include "SubscriptionManager.h"
static SubscriptionHandler<IPreference> m_Subscribers;
IPreference::IPreference( const CString& sName ):
m_sName( sName )
{
PrefsManager::Subscribe( this );
m_Subscribers.Subscribe( this );
}
IPreference::~IPreference()
{
PrefsManager::Unsubscribe( this );
m_Subscribers.Unsubscribe( this );
}
IPreference *IPreference::GetPreferenceByName( const CString &sName )
{
FOREACHS( IPreference*, *m_Subscribers.m_pSubscribers, p )
{
if( !(*p)->GetName().CompareNoCase( sName ) )
return *p;
}
return NULL;
}
void IPreference::LoadAllDefaults()
{
FOREACHS_CONST( IPreference*, *m_Subscribers.m_pSubscribers, p )
(*p)->LoadDefault();
}
void IPreference::ReadAllPrefsFromIni( const IniFile &ini, const CString &sSection )
{
FOREACHS_CONST( IPreference*, *m_Subscribers.m_pSubscribers, p )
(*p)->ReadFrom( ini, sSection );
}
void IPreference::SavePrefsToIni( IniFile &ini )
{
FOREACHS_CONST( IPreference*, *m_Subscribers.m_pSubscribers, p )
(*p)->WriteTo( ini );
}
void IPreference::PushValue( lua_State *L ) const