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:
@@ -1,21 +1,52 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "Preference.h"
|
#include "Preference.h"
|
||||||
#include "PrefsManager.h"
|
|
||||||
#include "IniFile.h"
|
#include "IniFile.h"
|
||||||
#include "RageLog.h"
|
#include "RageLog.h"
|
||||||
#include "LuaFunctions.h"
|
#include "LuaFunctions.h"
|
||||||
#include "LuaManager.h"
|
#include "LuaManager.h"
|
||||||
#include "MessageManager.h"
|
#include "MessageManager.h"
|
||||||
|
#include "SubscriptionManager.h"
|
||||||
|
|
||||||
|
static SubscriptionHandler<IPreference> m_Subscribers;
|
||||||
|
|
||||||
IPreference::IPreference( const CString& sName ):
|
IPreference::IPreference( const CString& sName ):
|
||||||
m_sName( sName )
|
m_sName( sName )
|
||||||
{
|
{
|
||||||
PrefsManager::Subscribe( this );
|
m_Subscribers.Subscribe( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
IPreference::~IPreference()
|
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
|
void IPreference::PushValue( lua_State *L ) const
|
||||||
|
|||||||
@@ -26,6 +26,11 @@ public:
|
|||||||
|
|
||||||
const CString &GetName() const { return m_sName; }
|
const CString &GetName() const { return m_sName; }
|
||||||
|
|
||||||
|
static IPreference *GetPreferenceByName( const CString &sName );
|
||||||
|
static void LoadAllDefaults();
|
||||||
|
static void ReadAllPrefsFromIni( const IniFile &ini, const CString &sSection );
|
||||||
|
static void SavePrefsToIni( IniFile &ini );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
CString m_sName;
|
CString m_sName;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -49,32 +49,10 @@ static const CString ScoreEventNames[] = {
|
|||||||
XToString( ScoreEvent, NUM_ScoreEvent );
|
XToString( ScoreEvent, NUM_ScoreEvent );
|
||||||
|
|
||||||
|
|
||||||
//
|
// XXX deprecated
|
||||||
// For self-registering prefs
|
|
||||||
//
|
|
||||||
#include "SubscriptionManager.h"
|
|
||||||
template<>
|
|
||||||
set<IPreference*>* SubscriptionManager<IPreference>::s_pSubscribers = NULL;
|
|
||||||
|
|
||||||
void PrefsManager::Subscribe( IPreference *p )
|
|
||||||
{
|
|
||||||
SubscriptionManager<IPreference>::Subscribe( p );
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrefsManager::Unsubscribe( IPreference *p )
|
|
||||||
{
|
|
||||||
SubscriptionManager<IPreference>::Unsubscribe( p );
|
|
||||||
}
|
|
||||||
|
|
||||||
IPreference *PrefsManager::GetPreferenceByName( const CString &sName )
|
IPreference *PrefsManager::GetPreferenceByName( const CString &sName )
|
||||||
{
|
{
|
||||||
FOREACHS( IPreference*, *SubscriptionManager<IPreference>::s_pSubscribers, p )
|
return IPreference::GetPreferenceByName( sName );
|
||||||
{
|
|
||||||
if( !(*p)->GetName().CompareNoCase( sName ) )
|
|
||||||
return *p;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool g_bAutoRestart = false;
|
bool g_bAutoRestart = false;
|
||||||
@@ -364,8 +342,7 @@ PrefsManager::PrefsManager() :
|
|||||||
|
|
||||||
void PrefsManager::Init()
|
void PrefsManager::Init()
|
||||||
{
|
{
|
||||||
FOREACHS_CONST( IPreference*, *SubscriptionManager<IPreference>::s_pSubscribers, p )
|
IPreference::LoadAllDefaults();
|
||||||
(*p)->LoadDefault();
|
|
||||||
|
|
||||||
m_mapGameNameToGamePrefs.clear();
|
m_mapGameNameToGamePrefs.clear();
|
||||||
}
|
}
|
||||||
@@ -466,8 +443,7 @@ void PrefsManager::ReadPrefsFromIni( const IniFile &ini, const CString &sSection
|
|||||||
// }
|
// }
|
||||||
// pPref->FromString( sVal );
|
// pPref->FromString( sVal );
|
||||||
|
|
||||||
FOREACHS_CONST( IPreference*, *SubscriptionManager<IPreference>::s_pSubscribers, p )
|
IPreference::ReadAllPrefsFromIni( ini, sSection );
|
||||||
(*p)->ReadFrom( ini, sSection );
|
|
||||||
|
|
||||||
// validate
|
// validate
|
||||||
m_iSongsPerPlay.Set( clamp(m_iSongsPerPlay.Get(),0,MAX_SONGS_PER_PLAY) );
|
m_iSongsPerPlay.Set( clamp(m_iSongsPerPlay.Get(),0,MAX_SONGS_PER_PLAY) );
|
||||||
@@ -506,8 +482,7 @@ void PrefsManager::SavePrefsToIni( IniFile &ini )
|
|||||||
if( !m_sCurrentGame.Get().empty() )
|
if( !m_sCurrentGame.Get().empty() )
|
||||||
StoreGamePrefs();
|
StoreGamePrefs();
|
||||||
|
|
||||||
FOREACHS_CONST( IPreference*, *SubscriptionManager<IPreference>::s_pSubscribers, p )
|
IPreference::SavePrefsToIni( ini );
|
||||||
(*p)->WriteTo( ini );
|
|
||||||
|
|
||||||
FOREACHM_CONST( CString, GamePrefs, m_mapGameNameToGamePrefs, iter )
|
FOREACHM_CONST( CString, GamePrefs, m_mapGameNameToGamePrefs, iter )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -278,13 +278,6 @@ public:
|
|||||||
bool MessageIsIgnored( const CString &ID );
|
bool MessageIsIgnored( const CString &ID );
|
||||||
void IgnoreMessage( const CString &ID );
|
void IgnoreMessage( const CString &ID );
|
||||||
|
|
||||||
//
|
|
||||||
// For self-registering prefs
|
|
||||||
//
|
|
||||||
static void Subscribe( IPreference *p );
|
|
||||||
static void Unsubscribe( IPreference *p );
|
|
||||||
|
|
||||||
|
|
||||||
// Lua
|
// Lua
|
||||||
void PushSelf( lua_State *L );
|
void PushSelf( lua_State *L );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user