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
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
33 : ResizableLayout {this}, settings_manager_ {settings_manager}
34{
35}
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
48{
49 component.setBounds(x, y, width, height);
50 ResizableLayout::addToLayout(&component, anchorMidLeft, anchorMidRight);
51 juce::Component::addAndMakeVisible(component);
52}

◆ AutohideChanged()

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

◆ Init()

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

◆ PickupClicked()

void SettingsComponent::PickupClicked ( )
private
55{
56 const auto pickup_state {pickup_enabled_.getToggleState()};
57 settings_manager_.SetPickupEnabled(pickup_state);
58 rsj::Log(pickup_state ? "Pickup set to enabled." : "Pickup set to disabled.",
59 std::source_location::current());
60}

References SettingsManager::SetPickupEnabled(), and settings_manager_.

◆ ProfileClicked()

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

References settings_manager_.

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

Referenced by PickupClicked(), and ProfileClicked().


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