No longer using TrayIcon on linux systems

* Reason: TrayIcon not supported well on linux and caused problems
* Renamed TrayIconUtil to ExitUtil
* fixes #177
This commit is contained in:
Markus Kreusch
2016-03-24 14:18:24 +01:00
parent 221deeda25
commit d0dc8819f4
3 changed files with 25 additions and 6 deletions

View File

@@ -29,5 +29,5 @@ interface CryptomatorComponent {
Localization localization();
TrayIconUtil trayIconUtil();
ExitUtil exitUtil();
}

View File

@@ -38,22 +38,41 @@ import javafx.application.Platform;
import javafx.stage.Stage;
@Singleton
class TrayIconUtil {
class ExitUtil {
private static final Logger LOG = LoggerFactory.getLogger(TrayIconUtil.class);
private static final Logger LOG = LoggerFactory.getLogger(ExitUtil.class);
private final Stage mainWindow;
private final Localization localization;
private final Settings settings;
@Inject
public TrayIconUtil(@Named("mainWindow") Stage mainWindow, Localization localization, Settings settings) {
public ExitUtil(@Named("mainWindow") Stage mainWindow, Localization localization, Settings settings) {
this.mainWindow = mainWindow;
this.localization = localization;
this.settings = settings;
}
public void initTrayIcon(Runnable exitCommand) {
public void initExitHandler(Runnable exitCommand) {
if (SystemUtils.IS_OS_LINUX) {
initMinimizeExitHandler(exitCommand);
} else {
initTrayIconExitHandler(exitCommand);
}
}
private void initMinimizeExitHandler(Runnable exitCommand) {
mainWindow.setOnCloseRequest(e -> {
if (Platform.isImplicitExit()) {
exitCommand.run();
} else {
mainWindow.setIconified(true);
e.consume();
}
});
}
private void initTrayIconExitHandler(Runnable exitCommand) {
final TrayIcon trayIcon = createTrayIcon(exitCommand);
try {
SystemTray.getSystemTray().add(trayIcon);

View File

@@ -67,7 +67,7 @@ public class MainApplication extends Application {
// show window and start observing its focus:
primaryStage.show();
ActiveWindowStyleSupport.startObservingFocus(primaryStage);
comp.trayIconUtil().initTrayIcon(this::quit);
comp.exitUtil().initExitHandler(this::quit);
// open files, if requested during startup:
for (String arg : getParameters().getUnnamed()) {