Add audio profiles to new settings object API

Audio profiles are not currently activated due to SteamVR changes.

micVol has been changed to default initilize to 1.0f since that was
being applied in the settings load anyway.
This commit is contained in:
Vasily
2020-01-30 10:36:21 +01:00
committed by username223
parent a6eea3cd08
commit dcbf76cb0b
2 changed files with 50 additions and 107 deletions
+3 -101
View File
@@ -3,6 +3,7 @@
#include <QApplication>
#include "../overlaycontroller.h"
#include "../settings/settings.h"
#include "../settings/settings_object.h"
#ifdef _WIN32
# include "audiomanager/AudioManagerWindows.h"
#else
@@ -672,111 +673,14 @@ void AudioTabController::findMicDeviceIndex( std::string id, bool notify )
}
}
/*AUDIO PROFILE FUNCTIONS
The following section includes the code required to save and load Audio
Profiles.
Saved Settings Include:
Playback Device
Mirror Device
Mirror Vol
Microphone
Microphone Volume
Profile Name
*/
/*
Name: reloadAudioProfiles
Inputs: args: none
other: Reads audioProfiles setting from file
Output: return:none
other:none
Description: Clears working copy, and reloads from Settings file.
*/
void AudioTabController::reloadAudioProfiles()
{
audioProfiles.clear();
auto settings = OverlayController::appSettings();
settings->beginGroup( getSettingsName() );
auto profileCount = settings->beginReadArray( "audioProfiles" );
for ( int i = 0; i < profileCount; i++ )
{
settings->setArrayIndex( i );
audioProfiles.emplace_back();
auto& entry = audioProfiles[static_cast<size_t>( i )];
entry.profileName
= settings->value( "profileName" ).toString().toStdString();
entry.playbackName
= settings->value( "playbackName" ).toString().toStdString();
entry.micName = settings->value( "micName" ).toString().toStdString();
entry.mirrorName
= settings->value( "mirrorName" ).toString().toStdString();
entry.micMute = settings->value( "micMute", false ).toBool();
entry.mirrorMute = settings->value( "mirrorMute", false ).toBool();
entry.mirrorVol = settings->value( "mirrorVol", 0.0 ).toFloat();
entry.micVol = settings->value( "micVol", 1.0 ).toFloat();
entry.defaultProfile
= settings->value( "defaultProfile", false ).toBool();
entry.mirrorID = settings->value( "mirrorID" ).toString().toStdString();
entry.recordingID
= settings->value( "recordingID" ).toString().toStdString();
entry.playbackID
= settings->value( "playbackID" ).toString().toStdString();
}
settings->endArray();
settings->endGroup();
settings::loadAllObjects( audioProfiles );
}
/*
Name: saveAudioProfile
Inputs: args: none
other: none
Output: return: none
other: Writes audioProfiles setting to file
Description: saves a copy of the audio profiles from working to Settings file.
*/
void AudioTabController::saveAudioProfiles()
{
auto settings = OverlayController::appSettings();
settings->beginGroup( getSettingsName() );
settings->beginWriteArray( "audioProfiles" );
int i = 0;
for ( auto& p : audioProfiles )
{
settings->setArrayIndex( i );
settings->setValue( "profileName",
QString::fromStdString( p.profileName ) );
settings->setValue( "playbackName",
QString::fromStdString( p.playbackName ) );
settings->setValue( "micName", QString::fromStdString( p.micName ) );
settings->setValue( "mirrorName",
QString::fromStdString( p.mirrorName ) );
settings->setValue( "micMute", p.micMute );
settings->setValue( "mirrorMute", p.mirrorMute );
settings->setValue( "micVol", p.micVol );
settings->setValue( "mirrorVol", p.mirrorVol );
settings->setValue( "defaultProfile", p.defaultProfile );
settings->setValue( "playbackID",
QString::fromStdString( p.playbackID ) );
settings->setValue( "mirrorID", QString::fromStdString( p.mirrorID ) );
settings->setValue( "recordingID",
QString::fromStdString( p.recordingID ) );
i++;
}
settings->endArray();
settings->endGroup();
settings::saveAllObjects( audioProfiles );
}
/*
@@ -838,7 +742,6 @@ void AudioTabController::addAudioProfile( QString name )
setAudioProfileDefault( false );
}
saveAudioProfiles();
OverlayController::appSettings()->sync();
emit audioProfilesUpdated();
emit audioProfileAdded();
}
@@ -949,7 +852,6 @@ void AudioTabController::deleteAudioProfile( unsigned index )
}
audioProfiles.erase( pos );
saveAudioProfiles();
OverlayController::appSettings()->sync();
emit audioProfilesUpdated();
}
}
+47 -6
View File
@@ -6,6 +6,7 @@
#include "audiomanager/AudioManager.h"
#include <memory>
#include "../utils/FrameRateUtils.h"
#include "../settings/settings_object.h"
class QQuickWindow;
// application namespace
@@ -14,7 +15,7 @@ namespace advsettings
// forward declaration
class OverlayController;
struct AudioProfile
struct AudioProfile : settings::ISettingsObject
{
std::string profileName;
std::string playbackName;
@@ -24,10 +25,54 @@ struct AudioProfile
std::string playbackID;
std::string mirrorID;
float mirrorVol = 0.0;
float micVol = 0.0;
float micVol = 1.0;
bool micMute = false;
bool mirrorMute = false;
bool defaultProfile = false;
virtual settings::SettingsObjectData saveSettings() const
{
settings::SettingsObjectData o;
o.addValue( profileName );
o.addValue( playbackName );
o.addValue( mirrorName );
o.addValue( micName );
o.addValue( recordingID );
o.addValue( playbackID );
o.addValue( mirrorID );
o.addValue( static_cast<double>( mirrorVol ) );
o.addValue( static_cast<double>( micVol ) );
o.addValue( micMute );
o.addValue( mirrorMute );
o.addValue( defaultProfile );
return o;
}
virtual void loadSettings( settings::SettingsObjectData& obj )
{
profileName = obj.getNextValueOrDefault( "" );
playbackName = obj.getNextValueOrDefault( "" );
mirrorName = obj.getNextValueOrDefault( "" );
micName = obj.getNextValueOrDefault( "" );
recordingID = obj.getNextValueOrDefault( "" );
playbackID = obj.getNextValueOrDefault( "" );
mirrorID = obj.getNextValueOrDefault( "" );
mirrorVol = static_cast<float>( obj.getNextValueOrDefault( 0.0 ) );
micVol = static_cast<float>( obj.getNextValueOrDefault( 1.0 ) );
micMute = obj.getNextValueOrDefault( false );
mirrorMute = obj.getNextValueOrDefault( false );
defaultProfile = obj.getNextValueOrDefault( false );
}
virtual std::string settingsName() const
{
return "AudioTabController::AudioProfile";
}
};
class AudioTabController : public QObject
@@ -97,10 +142,6 @@ private:
std::recursive_mutex eventLoopMutex;
QString getSettingsName()
{
return "audioSettings";
}
void onPttStart();
void onPttStop();
void onPttEnabled();