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