Notifications on rips when window is hidden #11
This commit is contained in:
parent
12e199ae60
commit
a5e3acc386
2
pom.xml
2
pom.xml
@ -4,7 +4,7 @@
|
||||
<groupId>com.rarchives.ripme</groupId>
|
||||
<artifactId>ripme</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>1.0.9</version>
|
||||
<version>1.0.10</version>
|
||||
<name>ripme</name>
|
||||
<url>http://rip.rarchives.com</url>
|
||||
<properties>
|
||||
|
@ -25,6 +25,8 @@ public class App {
|
||||
public static final Logger logger = Logger.getLogger(App.class);
|
||||
|
||||
public static void main(String[] args) throws MalformedURLException {
|
||||
System.setProperty("apple.laf.useScreenMenuBar", "true");
|
||||
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "RipMe");
|
||||
logger.info("Initialized ripme v" + UpdateUtils.getThisJarVersion());
|
||||
UpdateUtils.moveUpdatedJar();
|
||||
if (args.length > 0) {
|
||||
|
@ -71,7 +71,7 @@ class AutoripThread extends Thread {
|
||||
String url = m.group();
|
||||
if (!rippedURLs.contains(url)) {
|
||||
rippedURLs.add(url);
|
||||
// TODO Start rip
|
||||
// TODO Queue rip instead of just starting it
|
||||
MainWindow.ripAlbumStatic(url);
|
||||
}
|
||||
}
|
||||
|
@ -13,10 +13,15 @@ import java.awt.MenuItem;
|
||||
import java.awt.PopupMenu;
|
||||
import java.awt.SystemTray;
|
||||
import java.awt.TrayIcon;
|
||||
import java.awt.TrayIcon.MessageType;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.io.File;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
@ -96,6 +101,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
||||
private static JTextField configRetriesText;
|
||||
private static JCheckBox configAutoupdateCheckbox;
|
||||
|
||||
private static TrayIcon trayIcon;
|
||||
private static MenuItem trayMenuMain;
|
||||
private static MenuItem trayMenuAbout;
|
||||
private static MenuItem trayMenuExit;
|
||||
@ -174,63 +180,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
||||
}
|
||||
|
||||
private void createUI(Container pane) {
|
||||
// System tray
|
||||
PopupMenu trayMenu = new PopupMenu();
|
||||
trayMenuMain = new MenuItem(mainFrame.getTitle());
|
||||
trayMenuMain.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
if (mainFrame.isVisible()) {
|
||||
mainFrame.setVisible(false);
|
||||
trayMenuMain.setLabel("Show");
|
||||
} else {
|
||||
mainFrame.setVisible(true);
|
||||
trayMenuMain.setLabel("Hide");
|
||||
}
|
||||
}
|
||||
});
|
||||
trayMenuAbout = new MenuItem("About " + mainFrame.getTitle());
|
||||
trayMenuAbout.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
String aboutBlurb = "<html><center> Download albums from various websites. <a href=\"http://rarchives.com\">rarchives.com</a>";
|
||||
JOptionPane.showMessageDialog(null,
|
||||
aboutBlurb,
|
||||
mainFrame.getTitle(),
|
||||
JOptionPane.PLAIN_MESSAGE,
|
||||
new ImageIcon(mainIcon));
|
||||
}
|
||||
});
|
||||
trayMenuExit = new MenuItem("Exit");
|
||||
trayMenuExit.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
System.exit(0);
|
||||
}
|
||||
});
|
||||
trayMenuAutorip = new CheckboxMenuItem("Clipboard Autorip");
|
||||
trayMenuAutorip.setState(ClipboardUtils.getClipboardAutoRip());
|
||||
trayMenuAutorip.addItemListener(new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent arg0) {
|
||||
ClipboardUtils.setClipboardAutoRip(trayMenuAutorip.getState());
|
||||
}
|
||||
});
|
||||
trayMenu.add(trayMenuMain);
|
||||
trayMenu.add(trayMenuAbout);
|
||||
trayMenu.addSeparator();
|
||||
trayMenu.add(trayMenuAutorip);
|
||||
trayMenu.addSeparator();
|
||||
trayMenu.add(trayMenuExit);
|
||||
try {
|
||||
mainIcon = ImageIO.read(getClass().getClassLoader().getResource("icon.png"));
|
||||
TrayIcon trayIcon = new TrayIcon(mainIcon);
|
||||
trayIcon.setToolTip(mainFrame.getTitle());
|
||||
trayIcon.setPopupMenu(trayMenu);
|
||||
SystemTray.getSystemTray().add(trayIcon);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
setupTrayIcon();
|
||||
|
||||
EmptyBorder emptyBorder = new EmptyBorder(5, 5, 5, 5);
|
||||
GridBagConstraints gbc = new GridBagConstraints();
|
||||
@ -263,6 +213,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
||||
|
||||
gbc.gridx = 0; statusPanel.add(statusLabel, gbc);
|
||||
gbc.gridy = 1; statusPanel.add(openButton, gbc);
|
||||
gbc.gridy = 0;
|
||||
|
||||
JPanel progressPanel = new JPanel(new GridBagLayout());
|
||||
progressPanel.setBorder(emptyBorder);
|
||||
@ -485,6 +436,92 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
||||
});
|
||||
}
|
||||
|
||||
private void setupTrayIcon() {
|
||||
mainFrame.addWindowListener(new WindowAdapter() {
|
||||
public void windowActivated(WindowEvent e) { trayMenuMain.setLabel("Hide"); }
|
||||
public void windowDeactivated(WindowEvent e) { trayMenuMain.setLabel("Show"); }
|
||||
public void windowDeiconified(WindowEvent e) { trayMenuMain.setLabel("Hide"); }
|
||||
public void windowIconified(WindowEvent e) { trayMenuMain.setLabel("Show"); }
|
||||
});
|
||||
PopupMenu trayMenu = new PopupMenu();
|
||||
trayMenuMain = new MenuItem("Hide");
|
||||
trayMenuMain.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
toggleTrayClick();
|
||||
}
|
||||
});
|
||||
trayMenuAbout = new MenuItem("About " + mainFrame.getTitle());
|
||||
trayMenuAbout.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
String aboutBlurb = "<html><center> Download albums from various websites. <a href=\"http://rarchives.com\">rarchives.com</a>";
|
||||
JOptionPane.showMessageDialog(null,
|
||||
aboutBlurb,
|
||||
mainFrame.getTitle(),
|
||||
JOptionPane.PLAIN_MESSAGE,
|
||||
new ImageIcon(mainIcon));
|
||||
}
|
||||
});
|
||||
trayMenuExit = new MenuItem("Exit");
|
||||
trayMenuExit.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
System.exit(0);
|
||||
}
|
||||
});
|
||||
trayMenuAutorip = new CheckboxMenuItem("Clipboard Autorip");
|
||||
trayMenuAutorip.setState(ClipboardUtils.getClipboardAutoRip());
|
||||
trayMenuAutorip.addItemListener(new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent arg0) {
|
||||
ClipboardUtils.setClipboardAutoRip(trayMenuAutorip.getState());
|
||||
}
|
||||
});
|
||||
trayMenu.add(trayMenuMain);
|
||||
trayMenu.add(trayMenuAbout);
|
||||
trayMenu.addSeparator();
|
||||
trayMenu.add(trayMenuAutorip);
|
||||
trayMenu.addSeparator();
|
||||
trayMenu.add(trayMenuExit);
|
||||
try {
|
||||
mainIcon = ImageIO.read(getClass().getClassLoader().getResource("icon.png"));
|
||||
trayIcon = new TrayIcon(mainIcon);
|
||||
trayIcon.setToolTip(mainFrame.getTitle());
|
||||
trayIcon.setImageAutoSize(true);
|
||||
trayIcon.setPopupMenu(trayMenu);
|
||||
SystemTray.getSystemTray().add(trayIcon);
|
||||
trayIcon.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
toggleTrayClick();
|
||||
if (mainFrame.getExtendedState() != JFrame.NORMAL) {
|
||||
mainFrame.setExtendedState(JFrame.NORMAL);
|
||||
}
|
||||
mainFrame.setAlwaysOnTop(true);
|
||||
mainFrame.setAlwaysOnTop(false);
|
||||
}
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void toggleTrayClick() {
|
||||
if (mainFrame.getExtendedState() == JFrame.ICONIFIED
|
||||
|| !mainFrame.isActive()
|
||||
|| !mainFrame.isVisible()) {
|
||||
mainFrame.setVisible(true);
|
||||
mainFrame.setAlwaysOnTop(true);
|
||||
mainFrame.setAlwaysOnTop(false);
|
||||
trayMenuMain.setLabel("Hide");
|
||||
}
|
||||
else {
|
||||
mainFrame.setVisible(false);
|
||||
trayMenuMain.setLabel("Show");
|
||||
}
|
||||
}
|
||||
|
||||
private void appendLog(final String text, final Color color) {
|
||||
SimpleAttributeSet sas = new SimpleAttributeSet();
|
||||
StyleConstants.setForeground(sas, color);
|
||||
@ -547,6 +584,17 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
||||
ripper.setObserver((RipStatusHandler) this);
|
||||
Thread t = new Thread(ripper);
|
||||
t.start();
|
||||
if (!mainFrame.isVisible()) {
|
||||
mainFrame.toFront();
|
||||
mainFrame.setAlwaysOnTop(true);
|
||||
trayIcon.displayMessage(mainFrame.getTitle(), "Started ripping " + ripper.getURL().toExternalForm(), MessageType.INFO);
|
||||
mainFrame.setAlwaysOnTop(false);
|
||||
} else if (!mainFrame.isActive()) {
|
||||
mainFrame.toFront();
|
||||
mainFrame.setAlwaysOnTop(true);
|
||||
trayIcon.displayMessage(mainFrame.getTitle(), "Started ripping " + ripper.getURL().toExternalForm(), MessageType.INFO);
|
||||
mainFrame.setAlwaysOnTop(false);
|
||||
}
|
||||
return t;
|
||||
} catch (Exception e) {
|
||||
logger.error("[!] Error while ripping: " + e.getMessage(), e);
|
||||
|
@ -17,7 +17,7 @@ import org.jsoup.nodes.Document;
|
||||
public class UpdateUtils {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(UpdateUtils.class);
|
||||
private static final String DEFAULT_VERSION = "1.0.9";
|
||||
private static final String DEFAULT_VERSION = "1.0.10";
|
||||
private static final String updateJsonURL = "http://rarchives.com/ripme.json";
|
||||
private static final String updateJarURL = "http://rarchives.com/ripme.jar";
|
||||
private static final String mainFileName = "ripme.jar";
|
||||
|
Loading…
Reference in New Issue
Block a user