Skip to content

Commit acf39d4

Browse files
authored
feat: re-activate color overlay for pin layout (#2474)
1 parent 55da877 commit acf39d4

File tree

4 files changed

+219
-57
lines changed

4 files changed

+219
-57
lines changed

app/src/main/java/io/pslab/fragment/PSLabPinLayoutFragment.java

Lines changed: 70 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.pslab.fragment;
22

33
import android.annotation.SuppressLint;
4+
import android.app.Activity;
5+
import android.content.Context;
46
import android.graphics.Bitmap;
57
import android.graphics.Color;
68
import android.graphics.Matrix;
@@ -20,16 +22,17 @@
2022
import androidx.fragment.app.Fragment;
2123

2224
import java.util.ArrayList;
25+
import java.util.List;
2326

2427
import io.pslab.R;
2528
import io.pslab.items.PinDetails;
2629

2730
public class PSLabPinLayoutFragment extends Fragment implements View.OnTouchListener {
2831

29-
private ArrayList<PinDetails> pinDetails = new ArrayList<>();
32+
private final List<PinDetails> pinDetails = new ArrayList<>();
3033

31-
private Matrix matrix = new Matrix();
32-
private Matrix savedMatrix = new Matrix();
34+
private final Matrix matrix = new Matrix();
35+
private final Matrix savedMatrix = new Matrix();
3336

3437
public static boolean frontSide = true;
3538

@@ -38,8 +41,8 @@ public class PSLabPinLayoutFragment extends Fragment implements View.OnTouchList
3841
private static final int ZOOM = 2;
3942
private int mode = NONE;
4043

41-
private PointF start = new PointF();
42-
private PointF mid = new PointF();
44+
private final PointF start = new PointF();
45+
private final PointF mid = new PointF();
4346
private float oldDist = 1f;
4447

4548
private ImageView colorMap;
@@ -75,54 +78,61 @@ public void onPause() {
7578
super.onPause();
7679
imgLayout.setImageDrawable(null);
7780
colorMap.setImageDrawable(null);
81+
// Force garbage collection to avoid OOM on older devices.
82+
System.gc();
7883
}
7984

8085
private void populatePinDetails() {
81-
pinDetails.add(new PinDetails("ESP", "ESP Programmer pin", Color.parseColor("#6b40a9"), Color.parseColor("#dc1616")));
82-
pinDetails.add(new PinDetails("RXP", "Receiver pin for UART communication", Color.parseColor("#4372a2"), Color.parseColor("#1616dc")));
83-
pinDetails.add(new PinDetails("TXP", "Transmitter pin for UART communication", Color.parseColor("#4372a2"), Color.parseColor("#37dc16")));
84-
pinDetails.add(new PinDetails("GND", "Ground pin (0 V)", Color.parseColor("#ff4040"), Color.parseColor("#16dcda")));
85-
pinDetails.add(new PinDetails("SI1", "Wave generator pin 1", Color.parseColor("#406743"), Color.parseColor("#226a0c")));
86-
pinDetails.add(new PinDetails("SI2", "Wave generator pin 2", Color.parseColor("#406743"), Color.parseColor("#226aba")));
87-
pinDetails.add(new PinDetails("SQ1", "PWM generator pin 1", Color.parseColor("#406743"), Color.parseColor("#baaa22")));
88-
pinDetails.add(new PinDetails("SQ2", "PWM generator pin 2", Color.parseColor("#406743"), Color.parseColor("#22ba6d")));
89-
pinDetails.add(new PinDetails("SQ3", "PWM generator pin 3", Color.parseColor("#406743"), Color.parseColor("#aa44aa")));
90-
pinDetails.add(new PinDetails("SQ4", "PWM generator pin 4", Color.parseColor("#406743"), Color.parseColor("#d28080")));
91-
pinDetails.add(new PinDetails("LA1", "Logic analyzer pin 1", Color.parseColor("#406743"), Color.parseColor("#0053ad")));
92-
pinDetails.add(new PinDetails("LA2", "Logic analyzer pin 2", Color.parseColor("#406743"), Color.parseColor("#ad2d00")));
93-
pinDetails.add(new PinDetails("LA3", "Logic analyzer pin 3", Color.parseColor("#406743"), Color.parseColor("#e7a4ff")));
94-
pinDetails.add(new PinDetails("LA4", "Logic analyzer pin 4", Color.parseColor("#406743"), Color.parseColor("#e7a41a")));
95-
pinDetails.add(new PinDetails("AC1", "Alternative channel input", Color.parseColor("#ffe040"), Color.parseColor("#b01498")));
96-
pinDetails.add(new PinDetails("CH1", "Oscilloscope channel input 1", Color.parseColor("#ffe040"), Color.parseColor("#0b4189")));
97-
pinDetails.add(new PinDetails("CH2", "Oscilloscope channel input 2", Color.parseColor("#ffe040"), Color.parseColor("#410b89")));
98-
pinDetails.add(new PinDetails("CH3", "Oscilloscope channel input 3", Color.parseColor("#ffe040"), Color.parseColor("#41890b")));
99-
pinDetails.add(new PinDetails("CHG", "Oscilloscope channel 3 gain set", Color.parseColor("#ffe040"), Color.parseColor("#89410b")));
100-
pinDetails.add(new PinDetails("MIC", "External microphone input", Color.parseColor("#7d5840"), Color.parseColor("#890b41")));
101-
pinDetails.add(new PinDetails("FRQ", "Frequency counter pin", Color.parseColor("#7d5840"), Color.parseColor("#ff0b41")));
102-
pinDetails.add(new PinDetails("CAP", "Capacitance measurement pin", Color.parseColor("#7d5840"), Color.parseColor("#ff410b")));
103-
pinDetails.add(new PinDetails("RES", "Resistance measurement pin", Color.parseColor("#7d5840"), Color.parseColor("#41ff0b")));
104-
pinDetails.add(new PinDetails("VOL", "Voltage measurement pin", Color.parseColor("#7d5840"), Color.parseColor("#410bff")));
105-
pinDetails.add(new PinDetails("PCS", "Programmable current source (3.3 mA)", Color.parseColor("#c3007c"), Color.parseColor("#3fa96f")));
106-
pinDetails.add(new PinDetails("PV3", "Programmable voltage source 3 (0-3.3 V)", Color.parseColor("#c3007c"), Color.parseColor("#a93f6f")));
107-
pinDetails.add(new PinDetails("PV2", "Programmable voltage source 2 (-+3.3 V)", Color.parseColor("#c3007c"), Color.parseColor("#a96f3f")));
108-
pinDetails.add(new PinDetails("PV1", "Programmable voltage source 1 (-+5.0 V)", Color.parseColor("#c3007c"), Color.parseColor("#446e72")));
109-
pinDetails.add(new PinDetails("SCL", "Serial clock pin for I2C", Color.parseColor("#4372a2"), Color.parseColor("#6e4472")));
110-
pinDetails.add(new PinDetails("SDA", "Serial data pin for I2C", Color.parseColor("#4372a2"), Color.parseColor("#6e7244")));
111-
pinDetails.add(new PinDetails("VDD", "Voltage supply pin (3.3 V)", Color.parseColor("#ff4040"), Color.parseColor("#d25c3c")));
112-
pinDetails.add(new PinDetails("STA", "Bluetooth device state output pin", Color.parseColor("#4372a2"), Color.parseColor("#5c5c3c")));
113-
pinDetails.add(new PinDetails("V+", "Voltage test pin (+8.0 V)", Color.parseColor("#ff4040"), Color.parseColor("#5cd23c")));
114-
pinDetails.add(new PinDetails("ENA", "Bluetooth device enable/disable pin", Color.parseColor("#4372a2"), Color.parseColor("#5c143c")));
115-
pinDetails.add(new PinDetails("V-", "Voltage test pin (-8.0 V)", Color.parseColor("#ff4040"), Color.parseColor("#5c3c14")));
116-
pinDetails.add(new PinDetails("MCL", "Master clear pin for programmer", Color.parseColor("#4372a2"), Color.parseColor("#143c14")));
117-
pinDetails.add(new PinDetails("PGM", "Mode pin for programmer", Color.parseColor("#4372a2"), Color.parseColor("#b73cf1")));
118-
pinDetails.add(new PinDetails("PGC", "Clock pin for programmer", Color.parseColor("#4372a2"), Color.parseColor("#fff724")));
119-
pinDetails.add(new PinDetails("PGD", "Data pin for programmer", Color.parseColor("#4372a2"), Color.parseColor("#724fff")));
120-
pinDetails.add(new PinDetails("NRF", "Radio communication module using nRF24", Color.parseColor("#6b40a9"), Color.parseColor("#ffa64f")));
121-
pinDetails.add(new PinDetails("USB", "Micro B type USB socket", Color.parseColor("#6b40a9"), Color.parseColor("#ff2b4f")));
122-
pinDetails.add(new PinDetails("VCC", "Voltage supply pin (+5.0 V)", Color.parseColor("#ff4040"), Color.parseColor("#6b6500")));
123-
pinDetails.add(new PinDetails("+5V", "Test pin +5.0 V", Color.parseColor("#ff4040"), Color.parseColor("#765f40")));
124-
pinDetails.add(new PinDetails("D+", "Test pin for USB Data +", Color.parseColor("#6b40a9"), Color.parseColor("#681654")));
125-
pinDetails.add(new PinDetails("D-", "Test pin for USB Data -", Color.parseColor("#6b40a9"), Color.parseColor("#a68b47")));
86+
pinDetails.add(new PinDetails(getString(R.string.pin_esp_name), getString(R.string.pin_esp_description), getColor(R.color.category_usb), getColor(R.color.pin_esp)));
87+
pinDetails.add(new PinDetails(getString(R.string.pin_rxd_name), getString(R.string.pin_rxd_description), getColor(R.color.category_communication), getColor(R.color.pin_rxd)));
88+
pinDetails.add(new PinDetails(getString(R.string.pin_txd_name), getString(R.string.pin_txd_description), getColor(R.color.category_communication), getColor(R.color.pin_txd)));
89+
pinDetails.add(new PinDetails(getString(R.string.pin_gnd_name), getString(R.string.pin_gnd_description), getColor(R.color.category_voltage), getColor(R.color.pin_gnd)));
90+
pinDetails.add(new PinDetails(getString(R.string.pin_si1_name), getString(R.string.pin_si1_description), getColor(R.color.category_wavegen), getColor(R.color.pin_si1)));
91+
pinDetails.add(new PinDetails(getString(R.string.pin_si2_name), getString(R.string.pin_si2_description), getColor(R.color.category_wavegen), getColor(R.color.pin_si2)));
92+
pinDetails.add(new PinDetails(getString(R.string.pin_sq1_name), getString(R.string.pin_sq1_description), getColor(R.color.category_wavegen), getColor(R.color.pin_sq1)));
93+
pinDetails.add(new PinDetails(getString(R.string.pin_sq2_name), getString(R.string.pin_sq2_description), getColor(R.color.category_wavegen), getColor(R.color.pin_sq2)));
94+
pinDetails.add(new PinDetails(getString(R.string.pin_sq3_name), getString(R.string.pin_sq3_description), getColor(R.color.category_wavegen), getColor(R.color.pin_sq3)));
95+
pinDetails.add(new PinDetails(getString(R.string.pin_sq4_name), getString(R.string.pin_sq4_description), getColor(R.color.category_wavegen), getColor(R.color.pin_sq4)));
96+
pinDetails.add(new PinDetails(getString(R.string.pin_la1_name), getString(R.string.pin_la1_description), getColor(R.color.category_wavegen), getColor(R.color.pin_la1)));
97+
pinDetails.add(new PinDetails(getString(R.string.pin_la2_name), getString(R.string.pin_la2_description), getColor(R.color.category_wavegen), getColor(R.color.pin_la2)));
98+
pinDetails.add(new PinDetails(getString(R.string.pin_la3_name), getString(R.string.pin_la3_description), getColor(R.color.category_wavegen), getColor(R.color.pin_la3)));
99+
pinDetails.add(new PinDetails(getString(R.string.pin_la4_name), getString(R.string.pin_la4_description), getColor(R.color.category_wavegen), getColor(R.color.pin_la4)));
100+
pinDetails.add(new PinDetails(getString(R.string.pin_ac1_name), getString(R.string.pin_ac1_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_ac1)));
101+
pinDetails.add(new PinDetails(getString(R.string.pin_ch1_name), getString(R.string.pin_ch1_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_ch1)));
102+
pinDetails.add(new PinDetails(getString(R.string.pin_ch2_name), getString(R.string.pin_ch2_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_ch2)));
103+
pinDetails.add(new PinDetails(getString(R.string.pin_ch3_name), getString(R.string.pin_ch3_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_ch3)));
104+
pinDetails.add(new PinDetails(getString(R.string.pin_chg_name), getString(R.string.pin_chg_description), getColor(R.color.category_oscilloscope), getColor(R.color.pin_chg)));
105+
pinDetails.add(new PinDetails(getString(R.string.pin_mic_name), getString(R.string.pin_mic_description), getColor(R.color.category_measurement), getColor(R.color.pin_mic)));
106+
pinDetails.add(new PinDetails(getString(R.string.pin_frq_name), getString(R.string.pin_frq_description), getColor(R.color.category_measurement), getColor(R.color.pin_frq)));
107+
pinDetails.add(new PinDetails(getString(R.string.pin_cap_name), getString(R.string.pin_cap_description), getColor(R.color.category_measurement), getColor(R.color.pin_cap)));
108+
pinDetails.add(new PinDetails(getString(R.string.pin_res_name), getString(R.string.pin_res_description), getColor(R.color.category_measurement), getColor(R.color.pin_res)));
109+
pinDetails.add(new PinDetails(getString(R.string.pin_vol_name), getString(R.string.pin_vol_description), getColor(R.color.category_measurement), getColor(R.color.pin_vol)));
110+
pinDetails.add(new PinDetails(getString(R.string.pin_pcs_name), getString(R.string.pin_pcs_description), getColor(R.color.category_power_source), getColor(R.color.pin_pcs)));
111+
pinDetails.add(new PinDetails(getString(R.string.pin_pv3_name), getString(R.string.pin_pv3_description), getColor(R.color.category_power_source), getColor(R.color.pin_pv3)));
112+
pinDetails.add(new PinDetails(getString(R.string.pin_pv2_name), getString(R.string.pin_pv2_description), getColor(R.color.category_power_source), getColor(R.color.pin_pv2)));
113+
pinDetails.add(new PinDetails(getString(R.string.pin_pv1_name), getString(R.string.pin_pv1_description), getColor(R.color.category_power_source), getColor(R.color.pin_pv1)));
114+
pinDetails.add(new PinDetails(getString(R.string.pin_scl_name), getString(R.string.pin_scl_description), getColor(R.color.category_communication), getColor(R.color.pin_scl)));
115+
pinDetails.add(new PinDetails(getString(R.string.pin_sda_name), getString(R.string.pin_sda_description), getColor(R.color.category_communication), getColor(R.color.pin_sda)));
116+
pinDetails.add(new PinDetails(getString(R.string.pin_vdd_name), getString(R.string.pin_vdd_description), getColor(R.color.category_voltage), getColor(R.color.pin_vdd)));
117+
pinDetails.add(new PinDetails(getString(R.string.pin_sta_name), getString(R.string.pin_sta_description), getColor(R.color.category_communication), getColor(R.color.pin_sta)));
118+
pinDetails.add(new PinDetails(getString(R.string.pin_vpl_name), getString(R.string.pin_vpl_description), getColor(R.color.category_voltage), getColor(R.color.pin_vpl)));
119+
pinDetails.add(new PinDetails(getString(R.string.pin_ena_name), getString(R.string.pin_ena_description), getColor(R.color.category_communication), getColor(R.color.pin_ena)));
120+
pinDetails.add(new PinDetails(getString(R.string.pin_vmi_name), getString(R.string.pin_vmi_description), getColor(R.color.category_voltage), getColor(R.color.pin_vmi)));
121+
pinDetails.add(new PinDetails(getString(R.string.pin_mcl_name), getString(R.string.pin_mcl_description), getColor(R.color.category_communication), getColor(R.color.pin_mcl)));
122+
pinDetails.add(new PinDetails(getString(R.string.pin_pgm_name), getString(R.string.pin_pgm_description), getColor(R.color.category_communication), getColor(R.color.pin_pgm)));
123+
pinDetails.add(new PinDetails(getString(R.string.pin_pgc_name), getString(R.string.pin_pgc_description), getColor(R.color.category_communication), getColor(R.color.pin_pgc)));
124+
pinDetails.add(new PinDetails(getString(R.string.pin_pgd_name), getString(R.string.pin_pgd_description), getColor(R.color.category_communication), getColor(R.color.pin_pgd)));
125+
pinDetails.add(new PinDetails(getString(R.string.pin_nrf_name), getString(R.string.pin_nrf_description), getColor(R.color.category_usb), getColor(R.color.pin_nrf)));
126+
pinDetails.add(new PinDetails(getString(R.string.pin_usb_name), getString(R.string.pin_usb_description), getColor(R.color.category_usb), getColor(R.color.pin_usb)));
127+
pinDetails.add(new PinDetails(getString(R.string.pin_vcc_name), getString(R.string.pin_vcc_description), getColor(R.color.category_voltage), getColor(R.color.pin_vcc)));
128+
pinDetails.add(new PinDetails(getString(R.string.pin_pl5_name), getString(R.string.pin_pl5_description), getColor(R.color.category_voltage), getColor(R.color.pin_pl5)));
129+
pinDetails.add(new PinDetails(getString(R.string.pin_dpl_name), getString(R.string.pin_dpl_description), getColor(R.color.category_usb), getColor(R.color.pin_dpl)));
130+
pinDetails.add(new PinDetails(getString(R.string.pin_dmi_name), getString(R.string.pin_dmi_description), getColor(R.color.category_usb), getColor(R.color.pin_dmi)));
131+
}
132+
133+
private int getColor(int colorId) {
134+
final Context context = getContext();
135+
return context == null ? 0 : context.getColor(colorId);
126136
}
127137

128138
@SuppressLint("ClickableViewAccessibility")
@@ -189,6 +199,12 @@ public boolean onTouch(View v, MotionEvent event) {
189199
}
190200

191201
private void displayPinDescription(PinDetails pin) {
202+
final Activity activity = getActivity();
203+
204+
if (activity == null) {
205+
return;
206+
}
207+
192208
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
193209
LayoutInflater inflater = getActivity().getLayoutInflater();
194210
View view = inflater.inflate(R.layout.pin_description_dialog, null);
@@ -205,11 +221,10 @@ private void displayPinDescription(PinDetails pin) {
205221
builder.create();
206222
final AlertDialog dialog = builder.show();
207223

208-
dialogButton.setOnClickListener(new View.OnClickListener() {
209-
@Override
210-
public void onClick(View v) {
211-
dialog.dismiss();
212-
}
224+
dialogButton.setOnTouchListener((v, event) -> {
225+
view.performClick();
226+
dialog.dismiss();
227+
return true;
213228
});
214229
}
215230

app/src/main/res/layout/fragment_pin_layout.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
android:layout_width="match_parent"
1818
android:layout_height="match_parent"
1919
android:scaleType="fitCenter"
20-
android:visibility="invisible"
20+
android:alpha="0.5"
2121
tools:ignore="ContentDescription" />
2222

2323
</androidx.constraintlayout.widget.ConstraintLayout>

app/src/main/res/values/colors.xml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,59 @@
2828
<color name="blue_grey">#546E7A</color>
2929
<color name="default_grey">#EEEEEE</color>
3030

31+
<!-- Pin Layout Colors-->
32+
<color name="pin_esp">#dc1616</color>
33+
<color name="pin_gnd">#16dcda</color>
34+
<color name="pin_la1">#0053ad</color>
35+
<color name="pin_la2">#ad2d00</color>
36+
<color name="pin_la3">#e7a4ff</color>
37+
<color name="pin_la4">#e7a41a</color>
38+
<color name="pin_rxd">#1616dc</color>
39+
<color name="pin_txd">#37dc16</color>
40+
<color name="pin_si1">#226a0c</color>
41+
<color name="pin_sq1">#baaa22</color>
42+
<color name="pin_sq2">#22ba6d</color>
43+
<color name="pin_sq3">#aa44aa</color>
44+
<color name="pin_sq4">#d28080</color>
45+
<color name="pin_si2">#226aba</color>
46+
<color name="pin_ac1">#b01498</color>
47+
<color name="pin_ch1">#0b4189</color>
48+
<color name="pin_ch2">#410b89</color>
49+
<color name="pin_ch3">#41890b</color>
50+
<color name="pin_chg">#89410b</color>
51+
<color name="pin_mic">#890b41</color>
52+
<color name="pin_frq">#ff0b41</color>
53+
<color name="pin_cap">#ff410b</color>
54+
<color name="pin_res">#41ff0b</color>
55+
<color name="pin_vol">#410bff</color>
56+
<color name="pin_pcs">#3fa96f</color>
57+
<color name="pin_pv3">#a93f6f</color>
58+
<color name="pin_pv2">#a96f3f</color>
59+
<color name="pin_pv1">#446e72</color>
60+
<color name="pin_scl">#6e4472</color>
61+
<color name="pin_sda">#6e7244</color>
62+
<color name="pin_vdd">#d25c3c</color>
63+
<color name="pin_sta">#5c5c3c</color>
64+
<color name="pin_vpl">#5cd23c</color>
65+
<color name="pin_ena">#5c143c</color>
66+
<color name="pin_vmi">#5c3c14</color>
67+
<color name="pin_mcl">#143c14</color>
68+
<color name="pin_pgm">#b73cf1</color>
69+
<color name="pin_pgc">#fff724</color>
70+
<color name="pin_pgd">#724fff</color>
71+
<color name="pin_nrf">#ffa64f</color>
72+
<color name="pin_usb">#ff2b4f</color>
73+
<color name="pin_vcc">#6b6500</color>
74+
<color name="pin_pl5">#765f40</color>
75+
<color name="pin_dpl">#681654</color>
76+
<color name="pin_dmi">#a68b47</color>
77+
78+
<color name="category_communication">#4372A2</color>
79+
<color name="category_measurement">#7D5840</color>
80+
<color name="category_oscilloscope">#FFE040</color>
81+
<color name="category_power_source">#C3007C</color>
82+
<color name="category_usb">#6b40a9</color>
83+
<color name="category_voltage">#FF4040</color>
84+
<color name="category_wavegen">#406743</color>
85+
3186
</resources>

0 commit comments

Comments
 (0)