MIDI2LR 6.2.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
SettingsComponent Class Referencefinal

#include <SettingsComponent.h>

+ Inheritance diagram for SettingsComponent:

Public Member Functions

 SettingsComponent (const SettingsComponent &other)=delete
 
 SettingsComponent (SettingsComponent &&other)=delete
 
 SettingsComponent (SettingsManager &settings_manager)
 
 ~SettingsComponent ()=default
 
void Init ()
 
SettingsComponentoperator= (const SettingsComponent &other)=delete
 
SettingsComponentoperator= (SettingsComponent &&other)=delete
 

Private Member Functions

void AddComponent (juce::Component &component, int x, int y, int width, int height)
 
void AutohideChanged ()
 
void paint (juce::Graphics &) override
 
void PickupClicked ()
 
void ProfileClicked ()
 

Private Attributes

juce::Label autohide_explain_label_ {}
 
juce::GroupComponent autohide_group_ {}
 
juce::Slider autohide_setting_
 
juce::ToggleButton pickup_enabled_ {juce::translate("Enable Pickup Mode")}
 
juce::GroupComponent pickup_group_ {}
 
juce::Label pickup_label_ {"PickupLabel", ""}
 
juce::GroupComponent profile_group_ {}
 
juce::TextButton profile_location_button_ {juce::translate("Choose Profile Folder")}
 
juce::Label profile_location_label_ {"Profile Label"}
 
SettingsManagersettings_manager_
 

Constructor & Destructor Documentation

◆ SettingsComponent() [1/3]

SettingsComponent::SettingsComponent ( SettingsManager settings_manager)
explicit
34 : ResizableLayout {this}, settings_manager_ {settings_manager}
35{
36}
SettingsManager & settings_manager_
Definition SettingsComponent.h:52

◆ ~SettingsComponent()

SettingsComponent::~SettingsComponent ( )
default

◆ SettingsComponent() [2/3]

SettingsComponent::SettingsComponent ( const SettingsComponent other)
delete

◆ SettingsComponent() [3/3]

SettingsComponent::SettingsComponent ( SettingsComponent &&  other)
delete

Member Function Documentation

◆ AddComponent()

void SettingsComponent::AddComponent ( juce::Component &  component,
int  x,
int  y,
int  width,
int  height 
)
private
49{
50 component.setBounds(x, y, width, height);
51 ResizableLayout::addToLayout(&component, anchorMidLeft, anchorMidRight);
52 juce::Component::addAndMakeVisible(component);
53}

◆ AutohideChanged()

void SettingsComponent::AutohideChanged ( )
private
79{
80 settings_manager_.SetAutoHideTime(gsl::narrow<int>(std::lrint(autohide_setting_.getValue())));
81 rsj::Log(fmt::format(FMT_STRING("Autohide time set to {} seconds."),
83 std::source_location::current());
84}
juce::Slider autohide_setting_
Definition SettingsComponent.h:49
int GetAutoHideTime() const noexcept
Definition SettingsManager.h:37
void SetAutoHideTime(int new_time)
Definition SettingsManager.h:63
void Log(const juce::String &info, const std::source_location &location=std::source_location::current()) noexcept
Definition Misc.cpp:113

◆ Init()

void SettingsComponent::Init ( )
87{
88 try {
89 juce::Component::setSize(kSettingsWidth, kSettingsHeight);
90
91 /* pickup_group_ */
92 pickup_group_.setText(juce::translate("Pick up"));
93 AddComponent(pickup_group_, 0, 0, kSettingsWidth, 100);
94 /* pickup_label_ */
95 pickup_label_.setText(juce::translate("Disabling the pickup mode may be better for "
96 "touchscreen interfaces and may solve issues with "
97 "Lightroom not picking up fast fader/knob movements"),
98 juce::NotificationType::dontSendNotification);
99 StandardLabelSettings(pickup_label_);
100 AddComponent(pickup_label_, kSettingsLeft, 15, kSettingsWidth - 2 * kSettingsLeft, 50);
101 /* pickup_enabled_ */
103 juce::NotificationType::dontSendNotification);
104 AddComponent(pickup_enabled_, kSettingsLeft, 60, kSettingsWidth - 2 * kSettingsLeft, 32);
105#if __cpp_lib_bind_front >= 202'306L
106 pickup_enabled_.onClick = std::bind_front<&SettingsComponent::PickupClicked>(this);
107#else
108 pickup_enabled_.onClick = std::bind_front(&SettingsComponent::PickupClicked, this);
109#endif
110
111 /* profile_group_ */
112 profile_group_.setText(juce::translate("Profile"));
113 AddComponent(profile_group_, 0, 100, kSettingsWidth, 100);
114 /* profile_location_button_*/
115 AddComponent(profile_location_button_, kSettingsLeft, 120, kSettingsWidth - 2 * kSettingsLeft,
116 25);
117#if __cpp_lib_bind_front >= 202'306L
118 profile_location_button_.onClick = std::bind_front<&SettingsComponent::ProfileClicked>(this);
119#else
120 profile_location_button_.onClick = std::bind_front(&SettingsComponent::ProfileClicked, this);
121#endif
122 /* profile_location_label_ */
124 juce::NotificationType::dontSendNotification);
125 AddComponent(profile_location_label_, kSettingsLeft, 145, kSettingsWidth - 2 * kSettingsLeft,
126 30);
127
128 /* autohide_group_ */
129 autohide_group_.setText(juce::translate("Auto hide"));
130 AddComponent(autohide_group_, 0, 200, kSettingsWidth, 100);
131 /* autohide_explain_label_ */
132 autohide_explain_label_.setText(juce::translate("Autohide the plugin window in x seconds, "
133 "select 0 for disabling autohide"),
134 juce::NotificationType::dontSendNotification);
135 StandardLabelSettings(autohide_explain_label_);
136 AddComponent(autohide_explain_label_, kSettingsLeft, 215, kSettingsWidth - 2 * kSettingsLeft,
137 50);
138 /* autohide_setting_ */
139 autohide_setting_.setRange(0., 10., 1.);
141 juce::NotificationType::dontSendNotification);
142 AddComponent(autohide_setting_, kSettingsLeft, 245, kSettingsWidth - 2 * kSettingsLeft, 50);
143#if __cpp_lib_bind_front >= 202'306L
144 autohide_setting_.onValueChange = std::bind_front<&SettingsComponent::AutohideChanged>(this);
145#else
146 autohide_setting_.onValueChange = std::bind_front(&SettingsComponent::AutohideChanged, this);
147#endif
148
149 /* turn it on */
150 activateLayout();
151 }
152 catch (const std::exception& e) {
153 rsj::ExceptionResponse(e, std::source_location::current());
154 throw;
155 }
156}
juce::GroupComponent profile_group_
Definition SettingsComponent.h:45
juce::Label profile_location_label_
Definition SettingsComponent.h:48
void AutohideChanged()
Definition SettingsComponent.cpp:78
juce::Label autohide_explain_label_
Definition SettingsComponent.h:46
juce::GroupComponent pickup_group_
Definition SettingsComponent.h:44
juce::ToggleButton pickup_enabled_
Definition SettingsComponent.h:51
juce::Label pickup_label_
Definition SettingsComponent.h:47
void PickupClicked()
Definition SettingsComponent.cpp:55
juce::TextButton profile_location_button_
Definition SettingsComponent.h:50
juce::GroupComponent autohide_group_
Definition SettingsComponent.h:43
void ProfileClicked()
Definition SettingsComponent.cpp:63
void AddComponent(juce::Component &component, int x, int y, int width, int height)
Definition SettingsComponent.cpp:47
bool GetPickupEnabled() const noexcept
Definition SettingsManager.h:52
juce::String GetProfileDirectory() const noexcept
Definition SettingsManager.h:57
void ExceptionResponse(gsl::czstring id, gsl::czstring fu, const std::exception &e) noexcept

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ paint()

void SettingsComponent::paint ( juce::Graphics &  g)
overrideprivate
159{ //-V2009 overridden method
160 g.fillAll(juce::Colours::white); /* clear the background */
161}

◆ PickupClicked()

void SettingsComponent::PickupClicked ( )
private
56{
57 const auto pickup_state {pickup_enabled_.getToggleState()};
59 rsj::Log(pickup_state ? "Pickup set to enabled." : "Pickup set to disabled.",
60 std::source_location::current());
61}
void SetPickupEnabled(bool enabled)
Definition SettingsManager.h:75

◆ ProfileClicked()

void SettingsComponent::ProfileClicked ( )
private
64{
65 juce::FileChooser chooser {juce::translate("Select Folder"),
66 juce::File::getSpecialLocation(juce::File::userDocumentsDirectory), "", true};
67 if (chooser.browseForDirectory()) {
68 const auto profile_location {chooser.getResult().getFullPathName()};
69 settings_manager_.SetProfileDirectory(profile_location);
70 rsj::Log(fmt::format(FMT_STRING("Profile location set to {}."),
71 profile_location.toStdString()),
72 std::source_location::current());
73 profile_location_label_.setText(profile_location,
74 juce::NotificationType::dontSendNotification);
75 }
76}
void SetProfileDirectory(const juce::String &profile_directory)
Definition SettingsManager.h:81

Member Data Documentation

◆ autohide_explain_label_

juce::Label SettingsComponent::autohide_explain_label_ {}
private
46{};

◆ autohide_group_

juce::GroupComponent SettingsComponent::autohide_group_ {}
private
43{};

◆ autohide_setting_

juce::Slider SettingsComponent::autohide_setting_
private

◆ pickup_enabled_

juce::ToggleButton SettingsComponent::pickup_enabled_ {juce::translate("Enable Pickup Mode")}
private
51{juce::translate("Enable Pickup Mode")};

◆ pickup_group_

juce::GroupComponent SettingsComponent::pickup_group_ {}
private
44{};

◆ pickup_label_

juce::Label SettingsComponent::pickup_label_ {"PickupLabel", ""}
private
47{"PickupLabel", ""};

◆ profile_group_

juce::GroupComponent SettingsComponent::profile_group_ {}
private
45{};

◆ profile_location_button_

juce::TextButton SettingsComponent::profile_location_button_ {juce::translate("Choose Profile Folder")}
private
50{juce::translate("Choose Profile Folder")};

◆ profile_location_label_

juce::Label SettingsComponent::profile_location_label_ {"Profile Label"}
private
48{"Profile Label"};

◆ settings_manager_

SettingsManager& SettingsComponent::settings_manager_
private

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