MIDI2LR 6.1.0.0
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 */
39 }
40 catch (const std::exception& e) {
42 throw;
43 }
44}
void AddCallback(_In_ T *const object, _In_ void(T::*const mf)(bool, bool))
Definition LR_IPC_Out.h:51
void SetProfileDirectory(const juce::File &directory)
Definition ProfileManager.cpp:41
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

◆ ~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.");
69 }
70 else {
71 lr_ipc_out_.SendCommand("Pickup 0\n");
72 rsj::Log("Pickup is disabled.");
73 }
74 static std::once_flag of; /* add debug info once to logs */
75 std::call_once(of, std::bind_front(&SettingsManager::WriteDebugInfo, this));
76 }
77 }
78 catch (const std::exception& e) {
80 throw;
81 }
82}
void SendCommand(std::string &&command) const
Definition LR_IPC_Out.cpp:67
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:131

◆ GetAutoHideTime()

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

◆ GetDefaultProfile()

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

◆ GetLastVersionFound()

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

◆ GetPickupEnabled()

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

◆ GetProfileDirectory()

juce::String SettingsManager::GetProfileDirectory ( ) const
inlinenoexcept
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 }

◆ SetPickupEnabled()

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

◆ 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 }

◆ 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(FMT_STRING("AppInfo {}\n"), info));
52 }
53 lr_ipc_out_.SendCommand("AppInfoDone 1\n");
54 lr_ipc_out_.SendCommand("GetPluginInfo 1\n");
55}
Definition DebugInfo.h:25

Member Data Documentation

◆ lr_ipc_out_

LrIpcOut& SettingsManager::lr_ipc_out_
private

◆ profile_manager_

ProfileManager& SettingsManager::profile_manager_
private

◆ properties_file_

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

The documentation for this class was generated from the following files: