1 /* -*- Mode: c++ -*- */
2 /***************************************************************************
3 * bleedcontrolframecontent.cc
4 *
5 * Wed May 24 14:40:16 CEST 2017
6 * Copyright 2017 André Nusser
7 * andre.nusser@googlemail.com
8 ****************************************************************************/
9
10 /*
11 * This file is part of DrumGizmo.
12 *
13 * DrumGizmo is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU Lesser General Public License as published by
15 * the Free Software Foundation; either version 3 of the License, or
16 * (at your option) any later version.
17 *
18 * DrumGizmo is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License for more details.
22 *
23 * You should have received a copy of the GNU Lesser General Public License
24 * along with DrumGizmo; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
26 */
27 #include "bleedcontrolframecontent.h"
28
29 #include <settings.h>
30
31 #include <limits>
32
33 #include <translation.h>
34
35 namespace GUI
36 {
37
BleedcontrolframeContent(Widget * parent,Settings & settings,SettingsNotifier & settings_notifier)38 BleedcontrolframeContent::BleedcontrolframeContent(Widget* parent,
39 Settings& settings,
40 SettingsNotifier& settings_notifier)
41 : Widget(parent)
42 , slider_width{250}
43 , settings(settings)
44 , settings_notifier(settings_notifier)
45 {
46 label_text.setText(_("Master Bleed Volume:"));
47 label_text.setAlignment(TextAlignment::center);
48
49 label_value.setText(_("0 %"));
50 label_value.setAlignment(TextAlignment::center);
51
52 CONNECT(this, settings_notifier.master_bleed,
53 this, &BleedcontrolframeContent::bleedSettingsValueChanged);
54 CONNECT(&slider, valueChangedNotifier,
55 this, &BleedcontrolframeContent::bleedValueChanged);
56 }
57
resize(std::size_t width,std::size_t height)58 void BleedcontrolframeContent::resize(std::size_t width, std::size_t height)
59 {
60 Widget::resize(width, height);
61
62 slider_width = 0.8 * width;
63 auto x_start = 0.1 * width;
64
65 label_text.move(x_start, 0);
66 slider.move(x_start, 20);
67 label_value.move(x_start, 40);
68
69 label_text.resize(slider_width, 15);
70 slider.resize(slider_width, 15);
71 label_value.resize(slider_width, 15);
72 }
73
setEnabled(bool enabled)74 void BleedcontrolframeContent::setEnabled(bool enabled)
75 {
76 this->enabled = enabled;
77
78 if (enabled) {
79 label_text.resetColour();
80 label_value.resetColour();
81 slider.setEnabled(true);
82 }
83 else {
84 label_text.setColour(0.7);
85 label_value.setColour(0.7);
86 slider.setEnabled(false);
87 }
88
89 redraw();
90 }
91
bleedSettingsValueChanged(float value)92 void BleedcontrolframeContent::bleedSettingsValueChanged(float value)
93 {
94 slider.setValue(value);
95
96 int percentage = 100 * value;
97 label_value.setText(std::to_string(percentage) + " %");
98 slider.setColour(Slider::Colour::Blue);
99 }
100
bleedValueChanged(float value)101 void BleedcontrolframeContent::bleedValueChanged(float value)
102 {
103 settings.master_bleed.store(value);
104 }
105
106 } // GUI::
107