Clover Coverage Report - Subsonic-Android Coverage Report
Coverage timestamp: ven dic 19 2014 17:57:13 EST
../../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
60   181   19   4,62
10   129   0,32   13
13     1,46  
1    
This report was generated with an evaluation server license. Purchase Clover or configure your license.
 
  EqualizerActivity       Line # 46 60 19 98,8% 0.9879518
 
No Tests
 
1    /*
2    This file is part of Subsonic.
3   
4    Subsonic is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation, either version 3 of the License, or
7    (at your option) any later version.
8   
9    Subsonic is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12    GNU General Public License for more details.
13   
14    You should have received a copy of the GNU General Public License
15    along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
16   
17    Copyright 2011 (C) Sindre Mehus
18    */
19    package net.sourceforge.subsonic.androidapp.activity;
20   
21    import java.util.HashMap;
22    import java.util.Map;
23   
24    import android.app.Activity;
25    import android.media.audiofx.Equalizer;
26    import android.os.Bundle;
27    import android.view.ContextMenu;
28    import android.view.LayoutInflater;
29    import android.view.MenuItem;
30    import android.view.View;
31    import android.widget.CheckBox;
32    import android.widget.CompoundButton;
33    import android.widget.LinearLayout;
34    import android.widget.SeekBar;
35    import android.widget.TextView;
36    import net.sourceforge.subsonic.androidapp.R;
37    import net.sourceforge.subsonic.androidapp.audiofx.EqualizerController;
38    import net.sourceforge.subsonic.androidapp.service.DownloadServiceImpl;
39   
40    /**
41    * Equalizer controls.
42    *
43    * @author Sindre Mehus
44    * @version $Id$
45    */
 
46    public class EqualizerActivity extends Activity {
47   
48    private static final int MENU_GROUP_PRESET = 100;
49   
50    private final Map<Short, SeekBar> bars = new HashMap<Short, SeekBar>();
51    private EqualizerController equalizerController;
52    private Equalizer equalizer;
53   
 
54  2 toggle @Override
55    public void onCreate(Bundle bundle) {
56  2 super.onCreate(bundle);
57  2 setContentView(R.layout.equalizer);
58  2 equalizerController = DownloadServiceImpl.getInstance().getEqualizerController();
59  2 equalizer = equalizerController.getEqualizer();
60   
61  2 initEqualizer();
62   
63  2 final View presetButton = findViewById(R.id.equalizer_preset);
64  2 registerForContextMenu(presetButton);
65  2 presetButton.setOnClickListener(new View.OnClickListener() {
 
66  9 toggle @Override
67    public void onClick(View view) {
68  9 presetButton.showContextMenu();
69    }
70    });
71   
72  2 CheckBox enabledCheckBox = (CheckBox) findViewById(R.id.equalizer_enabled);
73  2 enabledCheckBox.setChecked(equalizer.getEnabled());
74  2 enabledCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
 
75  3 toggle @Override
76    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
77  3 setEqualizerEnabled(b);
78    }
79    });
80    }
81   
 
82  2 toggle @Override
83    protected void onPause() {
84  2 super.onPause();
85  2 equalizerController.saveSettings();
86    }
87   
 
88  9 toggle @Override
89    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
90  9 super.onCreateContextMenu(menu, view, menuInfo);
91   
92  9 short currentPreset;
93  9 try {
94  9 currentPreset = equalizer.getCurrentPreset();
95    } catch (Exception x) {
96  0 currentPreset = -1;
97    }
98   
99  99 for (short preset = 0; preset < equalizer.getNumberOfPresets(); preset++) {
100  90 MenuItem menuItem = menu.add(MENU_GROUP_PRESET, preset, preset, equalizer.getPresetName(preset));
101  90 if (preset == currentPreset) {
102  7 menuItem.setChecked(true);
103    }
104    }
105  9 menu.setGroupCheckable(MENU_GROUP_PRESET, true, true);
106    }
107   
 
108  9 toggle @Override
109    public boolean onContextItemSelected(MenuItem menuItem) {
110  9 short preset = (short) menuItem.getItemId();
111  9 equalizer.usePreset(preset);
112  9 updateBars();
113  9 return true;
114    }
115   
 
116  3 toggle private void setEqualizerEnabled(boolean enabled) {
117  3 equalizer.setEnabled(enabled);
118  3 updateBars();
119    }
120   
 
121  12 toggle private void updateBars() {
122   
123  12 for (Map.Entry<Short, SeekBar> entry : bars.entrySet()) {
124  60 short band = entry.getKey();
125  60 SeekBar bar = entry.getValue();
126  60 bar.setEnabled(equalizer.getEnabled());
127  60 short minEQLevel = equalizer.getBandLevelRange()[0];
128  60 bar.setProgress(equalizer.getBandLevel(band) - minEQLevel);
129    }
130    }
131   
 
132  2 toggle private void initEqualizer() {
133  2 LinearLayout layout = (LinearLayout) findViewById(R.id.equalizer_layout);
134   
135  2 final short minEQLevel = equalizer.getBandLevelRange()[0];
136  2 final short maxEQLevel = equalizer.getBandLevelRange()[1];
137   
138  12 for (short i = 0; i < equalizer.getNumberOfBands(); i++) {
139  10 final short band = i;
140   
141  10 View bandBar = LayoutInflater.from(this).inflate(R.layout.equalizer_bar, null);
142  10 TextView freqTextView = (TextView) bandBar.findViewById(R.id.equalizer_frequency);
143  10 final TextView levelTextView = (TextView) bandBar.findViewById(R.id.equalizer_level);
144  10 SeekBar bar = (SeekBar) bandBar.findViewById(R.id.equalizer_bar);
145   
146  10 freqTextView.setText((equalizer.getCenterFreq(band) / 1000) + " Hz");
147   
148  10 bars.put(band, bar);
149  10 bar.setMax(maxEQLevel - minEQLevel);
150  10 short level = equalizer.getBandLevel(band);
151  10 bar.setProgress(level - minEQLevel);
152  10 bar.setEnabled(equalizer.getEnabled());
153  10 updateLevelText(levelTextView, level);
154   
155  10 bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 
156  165 toggle @Override
157    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
158  165 short level = (short) (progress + minEQLevel);
159  165 if (fromUser) {
160  124 equalizer.setBandLevel(band, level);
161    }
162  165 updateLevelText(levelTextView, level);
163    }
164   
 
165  8 toggle @Override
166    public void onStartTrackingTouch(SeekBar seekBar) {
167    }
168   
 
169  8 toggle @Override
170    public void onStopTrackingTouch(SeekBar seekBar) {
171    }
172    });
173  10 layout.addView(bandBar);
174    }
175    }
176   
 
177  175 toggle private void updateLevelText(TextView levelTextView, short level) {
178  175 levelTextView.setText((level > 0 ? "+" : "") + level / 100 + " dB");
179    }
180   
181    }