MIDI2LR 6.3.0.1
MIDI2LR is an application that interfaces MIDI controllers with Lightroom 6+/CC Classic. It processes MIDI input into develop parameter updates and photo actions, and sends MIDI output when parameters are changed for motorized feedback (on controllers that have motorized faders). A listing of available LightRoom commands is in the Wiki. Assistance on the code and design is welcome.
Loading...
Searching...
No Matches
SettingsManager Class Referencefinal

#include <SettingsManager.h>

Public Member Functions

 SettingsManager (const SettingsManager &other)=delete
 SettingsManager (ProfileManager &profile_manager, LrIpcOut &lr_ipc_out)
 SettingsManager (SettingsManager &&other)=delete
 ~SettingsManager ()=default
int GetAutoHideTime () const noexcept
juce::String GetDefaultProfile () const noexcept
int GetLastVersionFound () const noexcept
bool GetPickupEnabled () const noexcept
juce::String GetProfileDirectory () const noexcept
SettingsManageroperator= (const SettingsManager &other)=delete
SettingsManageroperator= (SettingsManager &&other)=delete
void SetAutoHideTime (int new_time)
void SetDefaultProfile (const juce::String &default_profile)
void SetLastVersionFound (int version_number)
void SetPickupEnabled (bool enabled)
void SetProfileDirectory (const juce::String &profile_directory)

Private Member Functions

void ConnectionCallback (bool, bool)
void WriteDebugInfo () const

Private Attributes

LrIpcOutlr_ipc_out_
ProfileManagerprofile_manager_
std::unique_ptr< juce::PropertiesFile > properties_file_

Constructor & Destructor Documentation

◆ SettingsManager() [1/3]

SettingsManager::SettingsManager ( ProfileManager & profile_manager,
LrIpcOut & lr_ipc_out )
26 : lr_ipc_out_ {lr_ipc_out}, profile_manager_ {profile_manager}
27{
28 try {
29 juce::PropertiesFile::Options file_options;
30 file_options.applicationName = "MIDI2LR";
31 file_options.commonToAllUsers = false;
32 file_options.filenameSuffix = "xml";
33 file_options.osxLibrarySubFolder = "Application Support/MIDI2LR";
34 file_options.storageFormat = juce::PropertiesFile::storeAsXML;
35 properties_file_ = std::make_unique<juce::PropertiesFile>(file_options);
36 /* add a listener to LR_IPC_OUT so that we can send plugin settings on connection */
38 profile_manager_.SetProfileDirectory(GetProfileDirectory());
39 }
40 catch (const std::exception& e) {
41 rsj::ExceptionResponse(e, std::source_location::current());
42 throw;
43 }
44}
void ConnectionCallback(bool, bool)
Definition SettingsManager.cpp:62
std::unique_ptr< juce::PropertiesFile > properties_file_
Definition SettingsManager.h:95
LrIpcOut & lr_ipc_out_
Definition SettingsManager.h:93
juce::String GetProfileDirectory() const noexcept
Definition SettingsManager.h:57
ProfileManager & profile_manager_
Definition SettingsManager.h:94
void ExceptionResponse(gsl::czstring id, gsl::czstring fu, const std::exception &e) noexcept

References lr_ipc_out_.

◆ ~SettingsManager()

SettingsManager::~SettingsManager ( )
default

◆ SettingsManager() [2/3]

SettingsManager::SettingsManager ( const SettingsManager & other)
delete

◆ SettingsManager() [3/3]

SettingsManager::SettingsManager ( SettingsManager && other)
delete

Member Function Documentation

◆ ConnectionCallback()

void SettingsManager::ConnectionCallback ( bool connected,
bool blocked )
private
63{
64 try {
65 if (connected && !blocked) {
66 if (GetPickupEnabled()) {
67 lr_ipc_out_.SendCommand("Pickup 1\n");
68 rsj::Log("Pickup is enabled.", std::source_location::current());
69 }
70 else {
71 lr_ipc_out_.SendCommand("Pickup 0\n");
72 rsj::Log("Pickup is disabled.", std::source_location::current());
73 }
74 constinit static std::once_flag of; /* add debug info once to logs */
75#if __cpp_lib_bind_front >= 202'306L
76 std::call_once(of, std::bind_front<&SettingsManager::WriteDebugInfo>(this));
77#else
78 std::call_once(of, std::bind_front(&SettingsManager::WriteDebugInfo, this));
79#endif
80 }
81 }
82 catch (const std::exception& e) {
83 rsj::ExceptionResponse(e, std::source_location::current());
84 throw;
85 }
86}
void WriteDebugInfo() const
Definition SettingsManager.cpp:46
bool GetPickupEnabled() const noexcept
Definition SettingsManager.h:52
void Log(const juce::String &info, const std::source_location &location=std::source_location::current()) noexcept
Definition Misc.cpp:112

References GetPickupEnabled(), lr_ipc_out_, and LrIpcOut::SendCommand().

◆ GetAutoHideTime()

int SettingsManager::GetAutoHideTime ( ) const
inlinenodiscardnoexcept
38 {
39 return properties_file_->getIntValue("autohide", 0);
40 }

◆ GetDefaultProfile()

juce::String SettingsManager::GetDefaultProfile ( ) const
inlinenodiscardnoexcept
43 {
44 return properties_file_->getValue("default_profile");
45 }

◆ GetLastVersionFound()

int SettingsManager::GetLastVersionFound ( ) const
inlinenodiscardnoexcept
48 {
49 return properties_file_->getIntValue("LastVersionFound", 0);
50 }

Referenced by VersionChecker::Run().

◆ GetPickupEnabled()

bool SettingsManager::GetPickupEnabled ( ) const
inlinenodiscardnoexcept
53 {
54 return properties_file_->getBoolValue("pickup_enabled", true);
55 }

Referenced by ConnectionCallback().

◆ GetProfileDirectory()

juce::String SettingsManager::GetProfileDirectory ( ) const
inlinenodiscardnoexcept
58 {
59 return properties_file_->getValue("profile_directory");
60 }

◆ operator=() [1/2]

SettingsManager & SettingsManager::operator= ( const SettingsManager & other)
delete

◆ operator=() [2/2]

SettingsManager & SettingsManager::operator= ( SettingsManager && other)
delete

◆ SetAutoHideTime()

void SettingsManager::SetAutoHideTime ( int new_time)
inline
63{ properties_file_->setValue("autohide", new_time); }

◆ SetDefaultProfile()

void SettingsManager::SetDefaultProfile ( const juce::String & default_profile)
inline
66 {
67 properties_file_->setValue("default_profile", default_profile);
68 }

◆ SetLastVersionFound()

void SettingsManager::SetLastVersionFound ( int version_number)
inline
71 {
72 properties_file_->setValue("LastVersionFound", version_number);
73 }

Referenced by VersionChecker::handleAsyncUpdate(), and VersionChecker::Run().

◆ SetPickupEnabled()

void SettingsManager::SetPickupEnabled ( bool enabled)
inline
76 {
77 properties_file_->setValue("pickup_enabled", enabled);
78 lr_ipc_out_.SendCommand(fmt::format("Pickup {}\n", enabled ? '1' : '0'));
79 }

References lr_ipc_out_, and LrIpcOut::SendCommand().

Referenced by SettingsComponent::PickupClicked().

◆ SetProfileDirectory()

void SettingsManager::SetProfileDirectory ( const juce::String & profile_directory)
inline
82 {
83 properties_file_->setValue("profile_directory", profile_directory);
84 profile_manager_.SetProfileDirectory(profile_directory);
85 }

References profile_manager_.

◆ WriteDebugInfo()

void SettingsManager::WriteDebugInfo ( ) const
private
47{
48 const DebugInfo db {GetProfileDirectory().toStdString()};
49 lr_ipc_out_.SendCommand("AppInfoClear 1\n");
50 for (const auto& info : db.GetInfo()) {
51 lr_ipc_out_.SendCommand(fmt::format("AppInfo {}\n", info));
52 }
53 lr_ipc_out_.SendCommand("AppInfoDone 1\n");
54 lr_ipc_out_.SendCommand("GetPluginInfo 1\n");
55}
const std::vector< std::string > & GetInfo() const noexcept
Definition DebugInfo.h:29

References lr_ipc_out_, and LrIpcOut::SendCommand().

Member Data Documentation

◆ lr_ipc_out_

LrIpcOut& SettingsManager::lr_ipc_out_
private

◆ profile_manager_

ProfileManager& SettingsManager::profile_manager_
private

Referenced by SetProfileDirectory().

◆ properties_file_

std::unique_ptr<juce::PropertiesFile> SettingsManager::properties_file_
private

The documentation for this class was generated from the following files:
  • C:/Users/rsjaf/source/repos/MIDI2LR/src/application/SettingsManager.h
  • C:/Users/rsjaf/source/repos/MIDI2LR/src/application/SettingsManager.cpp