diff --git a/src/tabcontrollers/MoveCenterTabController.cpp b/src/tabcontrollers/MoveCenterTabController.cpp index 4a28d62..f8dfb0d 100644 --- a/src/tabcontrollers/MoveCenterTabController.cpp +++ b/src/tabcontrollers/MoveCenterTabController.cpp @@ -54,45 +54,12 @@ void MoveCenterTabController::initStage2( OverlayController* var_parent ) void MoveCenterTabController::reloadOffsetProfiles() { - m_offsetProfiles.clear(); - auto settings = OverlayController::appSettings(); - settings->beginGroup( "playspaceSettings" ); - auto profileCount = settings->beginReadArray( "offsetProfiles" ); - for ( int i = 0; i < profileCount; i++ ) - { - settings->setArrayIndex( i ); - m_offsetProfiles.emplace_back(); - auto& entry = m_offsetProfiles[static_cast( i )]; - entry.profileName - = settings->value( "profileName" ).toString().toStdString(); - entry.offsetX = settings->value( "offsetX", 0.0f ).toFloat(); - entry.offsetY = settings->value( "offsetY", 0.0f ).toFloat(); - entry.offsetZ = settings->value( "offsetZ", 0.0f ).toFloat(); - entry.rotation = settings->value( "rotation", 0 ).toInt(); - } - settings->endArray(); - settings->endGroup(); + settings::loadAllObjects( m_offsetProfiles ); } void MoveCenterTabController::saveOffsetProfiles() { - auto settings = OverlayController::appSettings(); - settings->beginGroup( "playspaceSettings" ); - settings->beginWriteArray( "offsetProfiles" ); - unsigned i = 0; - for ( auto& p : m_offsetProfiles ) - { - settings->setArrayIndex( static_cast( i ) ); - settings->setValue( "profileName", - QString::fromStdString( p.profileName ) ); - settings->setValue( "offsetX", p.offsetX ); - settings->setValue( "offsetY", p.offsetY ); - settings->setValue( "offsetZ", p.offsetZ ); - settings->setValue( "rotation", p.rotation ); - i++; - } - settings->endArray(); - settings->endGroup(); + settings::saveAllObjects( m_offsetProfiles ); } Q_INVOKABLE unsigned MoveCenterTabController::getOffsetProfileCount() @@ -136,7 +103,6 @@ void MoveCenterTabController::addOffsetProfile( QString name ) profile->offsetZ = m_offsetZ; profile->rotation = m_rotation; saveOffsetProfiles(); - OverlayController::appSettings()->sync(); emit offsetProfilesUpdated(); } @@ -167,7 +133,6 @@ void MoveCenterTabController::deleteOffsetProfile( unsigned index ) auto pos = m_offsetProfiles.begin() + index; m_offsetProfiles.erase( pos ); saveOffsetProfiles(); - OverlayController::appSettings()->sync(); emit offsetProfilesUpdated(); } } diff --git a/src/tabcontrollers/MoveCenterTabController.h b/src/tabcontrollers/MoveCenterTabController.h index 2ab6b28..c6be9af 100644 --- a/src/tabcontrollers/MoveCenterTabController.h +++ b/src/tabcontrollers/MoveCenterTabController.h @@ -6,6 +6,7 @@ #include #include #include "../utils/FrameRateUtils.h" +#include "../settings/settings_object.h" class QQuickWindow; // application namespace @@ -28,13 +29,40 @@ constexpr double k_maxOvrasUniverseCenteredTurningOffset = 25000.0; class OverlayController; -struct OffsetProfile +struct OffsetProfile : settings::ISettingsObject { std::string profileName; float offsetX = 0.0f; float offsetY = 0.0f; float offsetZ = 0.0f; int rotation = 0; + + virtual std::string settingsName() const override + { + return "MoveCenterTabController::OffsetProfile"; + } + + virtual settings::SettingsObjectData saveSettings() const override + { + settings::SettingsObjectData o; + + o.addValue( static_cast( offsetX ) ); + o.addValue( static_cast( offsetY ) ); + o.addValue( static_cast( offsetZ ) ); + + o.addValue( rotation ); + + return o; + } + + virtual void loadSettings( settings::SettingsObjectData& obj ) override + { + offsetX = static_cast( obj.getNextValueOrDefault( 0.0 ) ); + offsetY = static_cast( obj.getNextValueOrDefault( 0.0 ) ); + offsetZ = static_cast( obj.getNextValueOrDefault( 0.0 ) ); + + rotation = obj.getNextValueOrDefault( 0 ); + } }; class MoveCenterTabController : public QObject