summaryrefslogtreecommitdiffstats
path: root/src/org/cyanogenmod/audiofx/audiofx/knobs/KnobCommander.java
blob: b045c161294c2dc8a07a5bdaceafcdc88e4fffed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
package com.cyngn.audiofx.knobs;

import android.content.Context;
import com.cyngn.audiofx.Constants;
import com.cyngn.audiofx.activity.MasterConfigControl;
import com.cyngn.audiofx.service.AudioFxService;

public class KnobCommander {

    public static final int KNOB_TREBLE = 0;
    public static final int KNOB_BASS = 1;
    public static final int KNOB_VIRTUALIZER = 2;

    private static KnobCommander sInstance;

    private Context mContext;
    private MasterConfigControl mConfig;

    private KnobCommander(Context context) {
        mContext = context;
        mConfig = MasterConfigControl.getInstance(mContext);
    }

    public static KnobCommander getInstance(Context context) {
        if (sInstance == null) {
            sInstance = new KnobCommander(context);
        }
        return sInstance;
    }

    public RadialKnob.OnKnobChangeListener getRadialKnobCallback(int whichKnob) {
        switch (whichKnob) {
            case KNOB_TREBLE: return mTrebleKnobCallback;
            case KNOB_BASS: return mBassKnobCallback;
            case KNOB_VIRTUALIZER: return mVirtualizerCallback;
            default: return null;
        }
    }

    public void updateTrebleKnob(RadialKnob trebleKnob, boolean enabled) {
        if (trebleKnob != null) {
            trebleKnob.setValue(getTrebleStrength());
            trebleKnob.setOn(isTrebleEffectEnabled());
            trebleKnob.setEnabled(enabled);
        }
    }

    public void updateBassKnob(RadialKnob bassKnob, boolean enabled) {
        if (bassKnob != null) {
            bassKnob.setValue(getBassStrength());
            bassKnob.setOn(isBassEffectEnabled());
            bassKnob.setEnabled(enabled);
        }
    }

    public void updateVirtualizerKnob(RadialKnob virtualizerKnob, boolean enabled) {
        if (virtualizerKnob != null) {
            virtualizerKnob.setValue(getVirtualizerStrength());
            virtualizerKnob.setOn(isVirtualizerEffectEnabled());
            virtualizerKnob.setEnabled(enabled);
        }
    }

    public boolean hasBassBoost() {
        return mConfig.hasBassBoost();
    }

    public boolean hasTreble() {
        return mConfig.hasMaxxAudio() || mConfig.hasDts();
    }

    public boolean hasVirtualizer() {
        return mConfig.hasVirtualizer();
    }

    public boolean isBassEffectEnabled() {
        return mConfig.getPrefs().getBoolean(Constants.DEVICE_AUDIOFX_BASS_ENABLE, false);
    }

    public boolean isTrebleEffectEnabled() {
        return mConfig.getPrefs().getBoolean(Constants.DEVICE_AUDIOFX_TREBLE_ENABLE, false);
    }

    public boolean isVirtualizerEffectEnabled() {
        return mConfig.getPrefs().getBoolean(Constants.DEVICE_AUDIOFX_VIRTUALIZER_ENABLE, false);
    }

    public int getVirtualizerStrength() {
        return Integer.valueOf(mConfig.getPrefs().getString(Constants.DEVICE_AUDIOFX_VIRTUALIZER_STRENGTH, "0")) / 10;
    }

    public int getBassStrength() {
        return Integer.valueOf(mConfig.getPrefs().getString(Constants.DEVICE_AUDIOFX_BASS_STRENGTH, "0")) / 10;
    }

    public int getTrebleStrength() {
        return Integer.valueOf(mConfig.getPrefs().getString(Constants.DEVICE_AUDIOFX_TREBLE_STRENGTH, "0"));
    }

    public void setTrebleEnabled(boolean on) {
        mConfig.getPrefs().edit().putBoolean(Constants.DEVICE_AUDIOFX_TREBLE_ENABLE, on).apply();
        mConfig.updateService(AudioFxService.TREBLE_BOOST_CHANGED);
    }

    public void setTrebleStrength(int value) {
        // set parameter and state
        mConfig.getPrefs().edit().putString(Constants.DEVICE_AUDIOFX_TREBLE_STRENGTH, String.valueOf(value)).apply();
        mConfig.updateService(AudioFxService.TREBLE_BOOST_CHANGED);
    }

    public void setBassEnabled(boolean on) {
        mConfig.getPrefs().edit().putBoolean(Constants.DEVICE_AUDIOFX_BASS_ENABLE, on).apply();
        mConfig.updateService(AudioFxService.BASS_BOOST_CHANGED);
    }

    public void setBassStrength(int value) {
        // set parameter and state
        mConfig.getPrefs().edit().putString(Constants.DEVICE_AUDIOFX_BASS_STRENGTH, String.valueOf(value * 10)).apply();
        mConfig.updateService(AudioFxService.BASS_BOOST_CHANGED);
    }

    public void setVirtualizerEnabled(boolean on) {
        mConfig.getPrefs().edit().putBoolean(Constants.DEVICE_AUDIOFX_VIRTUALIZER_ENABLE, on).apply();
        mConfig.updateService(AudioFxService.VIRTUALIZER_CHANGED);
    }

    public void setVirtualiserStrength(int value) {
        // set parameter and state
        mConfig.getPrefs().edit().putString(Constants.DEVICE_AUDIOFX_VIRTUALIZER_STRENGTH, String.valueOf(value * 10)).apply();
        mConfig.updateService(AudioFxService.VIRTUALIZER_CHANGED);
    }

    private RadialKnob.OnKnobChangeListener mTrebleKnobCallback = new RadialKnob.OnKnobChangeListener() {
        @Override
        public void onValueChanged(RadialKnob knob, int value, boolean fromUser) {
            if (fromUser) {
                setTrebleStrength(value);
            }
        }

        @Override
        public boolean onSwitchChanged(RadialKnob knob, boolean on) {
            setTrebleEnabled(on);
            return true;
        }
    };

    private RadialKnob.OnKnobChangeListener mBassKnobCallback = new RadialKnob.OnKnobChangeListener() {
        @Override
        public void onValueChanged(RadialKnob knob, int value, boolean fromUser) {
            if (fromUser) {
                setBassStrength(value);
            }
        }

        @Override
        public boolean onSwitchChanged(RadialKnob knob, boolean on) {
            setBassEnabled(on);
            return true;
        }
    };

    private RadialKnob.OnKnobChangeListener mVirtualizerCallback = new RadialKnob.OnKnobChangeListener() {
        @Override
        public void onValueChanged(RadialKnob knob, int value, boolean fromUser) {
            if (fromUser) {
                setVirtualiserStrength(value);
            }
        }

        @Override
        public boolean onSwitchChanged(RadialKnob knob, boolean on) {
            setVirtualizerEnabled(on);
            return true;
        }
    };
}