parent
65f8bd2f3b
commit
a1c46746ce
@ -104,6 +104,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
private static JButton configSaveDirButton;
|
private static JButton configSaveDirButton;
|
||||||
private static JTextField configRetriesText;
|
private static JTextField configRetriesText;
|
||||||
private static JCheckBox configAutoupdateCheckbox;
|
private static JCheckBox configAutoupdateCheckbox;
|
||||||
|
private static JCheckBox configPlaySound;
|
||||||
|
|
||||||
private static TrayIcon trayIcon;
|
private static TrayIcon trayIcon;
|
||||||
private static MenuItem trayMenuMain;
|
private static MenuItem trayMenuMain;
|
||||||
@ -166,6 +167,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
Utils.setConfigInteger("download.timeout", Integer.parseInt(configTimeoutText.getText()));
|
Utils.setConfigInteger("download.timeout", Integer.parseInt(configTimeoutText.getText()));
|
||||||
Utils.setConfigBoolean("clipboard.autorip", ClipboardUtils.getClipboardAutoRip());
|
Utils.setConfigBoolean("clipboard.autorip", ClipboardUtils.getClipboardAutoRip());
|
||||||
Utils.setConfigBoolean("auto.update", configAutoupdateCheckbox.isSelected());
|
Utils.setConfigBoolean("auto.update", configAutoupdateCheckbox.isSelected());
|
||||||
|
Utils.setConfigBoolean("play.sound", configPlaySound.isSelected());
|
||||||
saveHistory();
|
saveHistory();
|
||||||
Utils.saveConfig();
|
Utils.saveConfig();
|
||||||
}
|
}
|
||||||
@ -305,6 +307,9 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
configAutoupdateCheckbox = new JCheckBox("Auto-update?", Utils.getConfigBoolean("auto.update", true));
|
configAutoupdateCheckbox = new JCheckBox("Auto-update?", Utils.getConfigBoolean("auto.update", true));
|
||||||
configAutoupdateCheckbox.setHorizontalAlignment(JCheckBox.RIGHT);
|
configAutoupdateCheckbox.setHorizontalAlignment(JCheckBox.RIGHT);
|
||||||
configAutoupdateCheckbox.setHorizontalTextPosition(JCheckBox.LEFT);
|
configAutoupdateCheckbox.setHorizontalTextPosition(JCheckBox.LEFT);
|
||||||
|
configPlaySound = new JCheckBox("Sound when rip completes", Utils.getConfigBoolean("play.sound", false));
|
||||||
|
configPlaySound.setHorizontalAlignment(JCheckBox.RIGHT);
|
||||||
|
configPlaySound.setHorizontalTextPosition(JCheckBox.LEFT);
|
||||||
configSaveDirLabel = new JLabel();
|
configSaveDirLabel = new JLabel();
|
||||||
try {
|
try {
|
||||||
String workingDir = (Utils.shortenPath(Utils.getWorkingDirectory()));
|
String workingDir = (Utils.shortenPath(Utils.getWorkingDirectory()));
|
||||||
@ -323,7 +328,8 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
gbc.gridy = 4; gbc.gridx = 0; configurationPanel.add(configRetriesLabel, gbc);
|
gbc.gridy = 4; gbc.gridx = 0; configurationPanel.add(configRetriesLabel, gbc);
|
||||||
gbc.gridx = 1; configurationPanel.add(configRetriesText, gbc);
|
gbc.gridx = 1; configurationPanel.add(configRetriesText, gbc);
|
||||||
gbc.gridy = 5; gbc.gridx = 0; configurationPanel.add(configOverwriteCheckbox, gbc);
|
gbc.gridy = 5; gbc.gridx = 0; configurationPanel.add(configOverwriteCheckbox, gbc);
|
||||||
gbc.gridy = 6; gbc.gridx = 0; configurationPanel.add(configSaveDirLabel, gbc);
|
gbc.gridy = 6; gbc.gridx = 0; configurationPanel.add(configPlaySound, gbc);
|
||||||
|
gbc.gridy = 7; gbc.gridx = 0; configurationPanel.add(configSaveDirLabel, gbc);
|
||||||
gbc.gridx = 1; configurationPanel.add(configSaveDirButton, gbc);
|
gbc.gridx = 1; configurationPanel.add(configSaveDirButton, gbc);
|
||||||
|
|
||||||
gbc.gridy = 0; pane.add(ripPanel, gbc);
|
gbc.gridy = 0; pane.add(ripPanel, gbc);
|
||||||
@ -755,6 +761,9 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
if (!historyListModel.contains(ripTextfield.getText())) {
|
if (!historyListModel.contains(ripTextfield.getText())) {
|
||||||
historyListModel.addElement(ripTextfield.getText());
|
historyListModel.addElement(ripTextfield.getText());
|
||||||
}
|
}
|
||||||
|
if (configPlaySound.isSelected()) {
|
||||||
|
Utils.playSound("camera.wav");
|
||||||
|
}
|
||||||
saveHistory();
|
saveHistory();
|
||||||
ripButton.setVisible(true);
|
ripButton.setVisible(true);
|
||||||
stopButton.setVisible(false);
|
stopButton.setVisible(false);
|
||||||
|
@ -12,6 +12,12 @@ import java.util.List;
|
|||||||
import java.util.jar.JarEntry;
|
import java.util.jar.JarEntry;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
|
|
||||||
|
import javax.sound.sampled.AudioSystem;
|
||||||
|
import javax.sound.sampled.Clip;
|
||||||
|
import javax.sound.sampled.Line;
|
||||||
|
import javax.sound.sampled.LineEvent;
|
||||||
|
import javax.sound.sampled.LineListener;
|
||||||
|
|
||||||
import org.apache.commons.configuration.ConfigurationException;
|
import org.apache.commons.configuration.ConfigurationException;
|
||||||
import org.apache.commons.configuration.PropertiesConfiguration;
|
import org.apache.commons.configuration.PropertiesConfiguration;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
@ -283,4 +289,23 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void playSound(String filename) {
|
||||||
|
URL resource = ClassLoader.getSystemClassLoader().getResource(filename);
|
||||||
|
try {
|
||||||
|
final Clip clip = (Clip) AudioSystem.getLine(new Line.Info(Clip.class));
|
||||||
|
clip.addLineListener(new LineListener() {
|
||||||
|
@Override
|
||||||
|
public void update(LineEvent event) {
|
||||||
|
if (event.getType() == LineEvent.Type.STOP) {
|
||||||
|
clip.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
clip.open(AudioSystem.getAudioInputStream(resource));
|
||||||
|
clip.start();
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Failed to play sound " + filename, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
BIN
src/main/resources/camera.wav
Normal file
BIN
src/main/resources/camera.wav
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user