From ced0aaa5979e1b95d8f1be4a272a5ebc6c06d1a9 Mon Sep 17 00:00:00 2001 From: Matt Jenkins Date: Thu, 4 Oct 2018 00:26:16 +0100 Subject: [PATCH] Added attention flag --- .../audiobookrecorder/icons/attention.png | Bin 0 -> 952 bytes .../audiobookrecorder/icons/locked.png | Bin 592 -> 1023 bytes .../audiobookrecorder/AudiobookRecorder.java | 30 +++++++++++++++++- .../audiobookrecorder/BookTreeRenderer.java | 7 ++-- .../co/majenko/audiobookrecorder/Icons.java | 1 + .../majenko/audiobookrecorder/Sentence.java | 9 ++++++ 6 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 resources/uk/co/majenko/audiobookrecorder/icons/attention.png diff --git a/resources/uk/co/majenko/audiobookrecorder/icons/attention.png b/resources/uk/co/majenko/audiobookrecorder/icons/attention.png new file mode 100644 index 0000000000000000000000000000000000000000..ea55c663469c63429edc485ac125f6b66668eb77 GIT binary patch literal 952 zcmV;p14sOcP)AAZ7>|&4}g7{~2UR@tvv|r#`vHySkYni9_l(ZSW*ARITLQlciqqH6s_|#tG ze?_|?5%Y%U&dwXlLG&3ueBnOcc=8VL-%9u04Kc5I-r);z{&SeG>_yv8OWzD#V~E|v zo!4B;O_yE{!3!|oT}bOGfsgHt|6BA4vHGuCkG0=i8Ah&x=(${b*4bQf%Bc`K7QQ+{ zU-eq_UY5`KR3`lQ;VW>L#_)KGdI0@oMbIDOha^4|_Kx8lYdKb*Mdr^PV3m@1! z{Hs3=@7bR23-VI?t<_-U2pHNAl6!FWo_lcGPCG$tbNFUMjjv7Tz2!{j85zRoOd|g@ zeCDiGeZax^4$|#EF}4%rWb)1Igv!`z7FqWgxr{)kmg*x9$Bzhd2K!Iws!s z6Y^f`)!ATZL5(gCzEz>H7N>8qDW`3|5tP=3&^i!Y4u&SC{qEGJ`LKiuI+On~_=tP{ zzGt)It&_meM3^Dbu&XF+A``HwObBJs=&wX4qIA3Nyks9eXuRAjNMr7z1}UnJ zF!Z8_;a5D+6R4_^%BzejPDuW$Y3M&@o%QR3mr!sfEngy|&3ETFgJ8y8DyxQ&8MZiT z+Q|oUehZoc757QAg3+DMSM!^~*;1wHok83Y^R#tf`s`UD>xHEIN(*kdCUo`u?71iB z?0F`qS9PNW_i;%TQz?h+#k0}4O|BSx%;cQOawkZr`N6`5s4$RJX?HQ_Mp~|%`!OX{ zM1_@4Fk?dZvxQ9JaA{GPU?yQm7RX;c117#2loo`_LQqq6SL0V|uBs}lg376kO6qQO zRdQF%2=7_z3ZL3j^q!mO)69i46Wl`ZZ>To-o%MfpdBZ>F+ek>BG(D}yCXMl_HH+v7 zpU4b+D4X-Xvm@_1JMfNrPYo`+=RfW+ODK>X3Zy|e1SlT@Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z011Qu011Qvs^VjL00007bV*G`2igW66EHV9Y|bzM00VzXL_t(I%dM4NXk0}YhM)P_ zb9OgLlhiaOqHd~Uz_u8TP!RFwCRS>VN>s2Kz0jceU%j&z34e%qAzt}YM3i7fEC?-X z(?aQ$Qmqw6f9z8nJ30C8+7hbtHt)4E=VuY5ey z4VooB8fFEgRQevBFohMGwhk@tAdjXl%oQPGc7}%kvwweYxHiooVpbzw3MPE ziA`F93Zod`_BOeJtLyRFk;MH!uyYoXXeLHKV1FQ2g`O*%X@G6TRjsi0ziy?u zR2xcdg23aIhxU@oHI$A|4L4ii2*Lu^I-GMD7t*P7gkm18J*24eopsm*;v|8@T4+Bq$i&x{C+yc>;jlPtNfE{zoxt5h*k#u~?I0=j|WS-`}?e zno=H02~21kiYuWdwq;~0=9?3f%+4JIAk(gyxObXzP-Y>2jHUeVJa)&&3~bB+uw0nu z>9?*Sr97lm2n2D(G{A9aux=GcKu3FqcMojmw|_rp0O;t-@aouiTzlCFFKs_gZr~~a zR*LiNdha^2Ss&k5^`{^%|4VVoS9qSl_Z8ip>-pr!eVm#&1&(3$MZB=SNADZ z&3~JyS#dc*DS_6Yv>=rN-&1sUbaC+42RXZZ7=R#JRK7w6(z zhHq1%tzFQTt&ZTz)~-B#zIJ}-8(t+lhL9T5<+7ODlL5GXBvkWTFoerXASTOaPeWS{Bgkt_iJ Y0ATQmZlm6aV*mgE07*qoM6N<$g4?^?oB#j- delta 568 zcmV-80>}OT2haqNBYy%HNklZBT@@Z8xgh*mmuPYa7pI zw6?ul+qUig{ojV`o#}RxZ*(%>{P&(C0Q5*1pP))yTwJ`7X@7saT&_QExBH~sZXc%C z>xZSMrytGA%K84SubQbgn=OOdpV(1Sqh3&*r1j3f1FnJ|T zdl%x(y?waWdJugQf4MRh@2hoql%vHJhX&2*S~R9goX*tYqDhBaE*+kigy8#SiQk_N z_g(z$T2L(UI9IfZPiINAWax0t5P~aKEyWTqN+rcwihmC%6Mw9gc$zP8*{(rrW-zq| zXZV9_e7@(?;ANShSO8yCimy5a6N}(hFmX^UaK|Is#6Pe8gZP?D;H*L5j9%c9Mc}4O zFtNa^^8X;d?-vTTLZSF|h04SqY9yZI1@~B~SV3Y++ZuS$EO5iwk7Bin`;U%d9+C_p zW65|jnK4Ww3&={cnd~6D$X2p}EGKixR5FQ-BO}Q`qWueH+c#E9eKX|%0000v? diff --git a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java index 81de782..c5900ff 100644 --- a/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java +++ b/src/uk/co/majenko/audiobookrecorder/AudiobookRecorder.java @@ -75,6 +75,7 @@ public class AudiobookRecorder extends JFrame { JSpinner postSentenceGap; JCheckBox locked; + JCheckBox attention; JButtonSpacePlay reprocessAudioFFT; JButtonSpacePlay reprocessAudioPeak; @@ -402,9 +403,29 @@ public class AudiobookRecorder extends JFrame { bookTreeModel.reload(selectedSentence); } }); - controlsTop.add(locked); + attention = new JCheckBox("Flag for attention"); + attention.setFocusable(false); + + attention.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + JCheckBox c = (JCheckBox)e.getSource(); + if (c.isSelected()) { + if (selectedSentence != null) { + selectedSentence.setAttentionFlag(true); + } + } else { + if (selectedSentence != null) { + selectedSentence.setAttentionFlag(false); + } + } + bookTreeModel.reload(selectedSentence); + } + }); + + controlsTop.add(attention); + controlsTop.add(Box.createHorizontalGlue()); controlsTop.add(new JLabel("Post gap:")); controlsTop.add(postSentenceGap); @@ -1287,6 +1308,7 @@ public class AudiobookRecorder extends JFrame { prefs.setProperty(String.format("%s.sentence.%08d.start-offset", keybase, i), Integer.toString(snt.getStartOffset())); prefs.setProperty(String.format("%s.sentence.%08d.end-offset", keybase, i), Integer.toString(snt.getEndOffset())); prefs.setProperty(String.format("%s.sentence.%08d.locked", keybase, i), snt.isLocked() ? "true" : "false"); + prefs.setProperty(String.format("%s.sentence.%08d.attention", keybase, i), snt.getAttentionFlag() ? "true" : "false"); i++; } } @@ -1394,6 +1416,7 @@ public class AudiobookRecorder extends JFrame { sampleWaveform.setAltMarkers(s.getStartCrossing(), s.getEndCrossing()); postSentenceGap.setValue(s.getPostGap()); locked.setSelected(s.isLocked()); + attention.setSelected(s.getAttentionFlag()); postSentenceGap.setEnabled(!s.isLocked()); reprocessAudioFFT.setEnabled(!s.isLocked()); @@ -1403,6 +1426,7 @@ public class AudiobookRecorder extends JFrame { sampleWaveform.clearData(); postSentenceGap.setValue(0); locked.setSelected(false); + attention.setSelected(false); } } }); @@ -1441,6 +1465,7 @@ public class AudiobookRecorder extends JFrame { s.setStartOffset(Utils.s2i(prefs.getProperty(String.format("chapter.audition.sentence.%08d.start-offset", i)))); s.setEndOffset(Utils.s2i(prefs.getProperty(String.format("chapter.audition.sentence.%08d.end-offset", i)))); s.setLocked(Utils.s2b(prefs.getProperty(String.format("chapter.audition.sentence.%08d.locked", i)))); + s.setAttentionFlag(Utils.s2b(prefs.getProperty(String.format("chapter.audition.sentence.%08d.attention", i)))); bookTreeModel.insertNodeInto(s, c, c.getChildCount()); } @@ -1459,6 +1484,7 @@ public class AudiobookRecorder extends JFrame { s.setStartOffset(Utils.s2i(prefs.getProperty(String.format("chapter.open.sentence.%08d.start-offset", i)))); s.setEndOffset(Utils.s2i(prefs.getProperty(String.format("chapter.open.sentence.%08d.end-offset", i)))); s.setLocked(Utils.s2b(prefs.getProperty(String.format("chapter.open.sentence.%08d.locked", i)))); + s.setAttentionFlag(Utils.s2b(prefs.getProperty(String.format("chapter.open.sentence.%08d.attention", i)))); bookTreeModel.insertNodeInto(s, c, c.getChildCount()); } @@ -1483,6 +1509,7 @@ public class AudiobookRecorder extends JFrame { s.setStartOffset(Utils.s2i(prefs.getProperty(String.format("chapter.%04d.sentence.%08d.start-offset", cno, i)))); s.setEndOffset(Utils.s2i(prefs.getProperty(String.format("chapter.%04d.sentence.%08d.end-offset", cno, i)))); s.setLocked(Utils.s2b(prefs.getProperty(String.format("chapter.%04d.sentence.%08d.locked", cno, i)))); + s.setAttentionFlag(Utils.s2b(prefs.getProperty(String.format("chapter.%04d.sentence.%08d.attention", cno, i)))); bookTreeModel.insertNodeInto(s, c, c.getChildCount()); } } @@ -1502,6 +1529,7 @@ public class AudiobookRecorder extends JFrame { s.setStartOffset(Utils.s2i(prefs.getProperty(String.format("chapter.close.sentence.%08d.start-offset", i)))); s.setEndOffset(Utils.s2i(prefs.getProperty(String.format("chapter.close.sentence.%08d.end-offset", i)))); s.setLocked(Utils.s2b(prefs.getProperty(String.format("chapter.close.sentence.%08d.locked", i)))); + s.setAttentionFlag(Utils.s2b(prefs.getProperty(String.format("chapter.close.sentence.%08d.attention", i)))); bookTreeModel.insertNodeInto(s, c, c.getChildCount()); } diff --git a/src/uk/co/majenko/audiobookrecorder/BookTreeRenderer.java b/src/uk/co/majenko/audiobookrecorder/BookTreeRenderer.java index 855f92f..05c1f77 100644 --- a/src/uk/co/majenko/audiobookrecorder/BookTreeRenderer.java +++ b/src/uk/co/majenko/audiobookrecorder/BookTreeRenderer.java @@ -11,8 +11,11 @@ public class BookTreeRenderer extends DefaultTreeCellRenderer { if (value instanceof Sentence) { Sentence s = (Sentence)value; - if (s.isLocked()) { - ret.setForeground(new Color(0x20, 0x00, 0x00)); + if (s.getAttentionFlag()) { + ret.setForeground(new Color(0xFF, 0xFF, 0x00)); + ret.setIcon(Icons.attention); + } else if (s.isLocked()) { + ret.setForeground(new Color(0x00, 0x80, 0x00)); ret.setIcon(Icons.locked); } else if (s.getStartOffset() == 0) { ret.setIcon(Icons.important); diff --git a/src/uk/co/majenko/audiobookrecorder/Icons.java b/src/uk/co/majenko/audiobookrecorder/Icons.java index 7967ed5..038f6a8 100644 --- a/src/uk/co/majenko/audiobookrecorder/Icons.java +++ b/src/uk/co/majenko/audiobookrecorder/Icons.java @@ -31,4 +31,5 @@ public class Icons { static public final ImageIcon zoomIn = new ImageIcon(Icons.class.getResource("icons/zoom-in.png")); static public final ImageIcon zoomOut = new ImageIcon(Icons.class.getResource("icons/zoom-out.png")); static public final ImageIcon dollar = new ImageIcon(Icons.class.getResource("icons/dollar.png")); + static public final ImageIcon attention = new ImageIcon(Icons.class.getResource("icons/attention.png")); } diff --git a/src/uk/co/majenko/audiobookrecorder/Sentence.java b/src/uk/co/majenko/audiobookrecorder/Sentence.java index f5a2a5f..6048073 100644 --- a/src/uk/co/majenko/audiobookrecorder/Sentence.java +++ b/src/uk/co/majenko/audiobookrecorder/Sentence.java @@ -32,6 +32,7 @@ public class Sentence extends DefaultMutableTreeNode implements Cacheable { boolean recording; boolean inSample; + boolean attention = false; TargetDataLine line; AudioInputStream inputStream; @@ -732,4 +733,12 @@ public class Sentence extends DefaultMutableTreeNode implements Cacheable { sentence.updateCrossings(); return sentence; } + + public void setAttentionFlag(boolean f) { + attention = f; + } + + public boolean getAttentionFlag() { + return attention; + } }