Add 'open recent configuration file on start' option.
Add opened file name to the main pane information label. Update screenshots Correct readme
This commit is contained in:
parent
9ed015db4d
commit
6e251348f3
13 changed files with 94 additions and 40 deletions
10
README.md
10
README.md
|
@ -6,9 +6,9 @@
|
|||
|
||||
LogiLedus is a Logitech G513 Carbon GUI driver for adjusting backlight and effects.
|
||||
|
||||
![Screenshot 1](https://live.staticflickr.com/65535/48932060697_6f60cc4143_o.png)
|
||||
![Screenshot 2](https://live.staticflickr.com/65535/48931873171_b00c4fd875_o.png)
|
||||
![Screenshot 3](https://live.staticflickr.com/65535/48931332563_72de8e93ed_o.png)
|
||||
![Screenshot 1](screenshots/1.png)
|
||||
![Screenshot 2](screenshots/2.png)
|
||||
![Screenshot 3](screenshots/3.png)
|
||||
|
||||
#### License
|
||||
|
||||
|
@ -52,7 +52,7 @@ Want to support development? Make a donation* (see below):
|
|||
|
||||
<a href="https://paypal.me/developersu" title="PayPal"><img src="https://www.paypalobjects.com/webstatic/mktg/Logo/pp-logo-100px.png" border="0" alt="PayPal Logo" /></a>
|
||||
|
||||
[Yandex.Money](https://money.yandex.ru/to/410014301951665)
|
||||
[ЮMoney](https://yoomoney.ru/to/410014301951665)
|
||||
|
||||
*Please note: this is non-commercial application.
|
||||
|
||||
|
@ -61,4 +61,4 @@ Want to support development? Make a donation* (see below):
|
|||
* [ ] Tray support: tray icon size checks
|
||||
* [ ] Autoload option in settings
|
||||
* [ ] Headless mode (CLI)
|
||||
* [ ] Add opened file name to info pane
|
||||
* [x] Add opened file name to info pane
|
2
pom.xml
2
pom.xml
|
@ -6,7 +6,7 @@
|
|||
|
||||
<groupId>loper</groupId>
|
||||
<artifactId>LogiLedus</artifactId>
|
||||
<version>1.3-SNAPSHOT</version>
|
||||
<version>1.4-SNAPSHOT</version>
|
||||
|
||||
<!-- <url></url> -->
|
||||
<description>
|
||||
|
|
BIN
screenshots/1.png
Normal file
BIN
screenshots/1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
BIN
screenshots/2.png
Normal file
BIN
screenshots/2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
BIN
screenshots/3.png
Normal file
BIN
screenshots/3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 69 KiB |
|
@ -4,16 +4,17 @@ import java.util.prefs.Preferences;
|
|||
|
||||
// Rule application settings
|
||||
public class AppPreferences {
|
||||
|
||||
private Preferences preferences;
|
||||
|
||||
public AppPreferences(){
|
||||
preferences = Preferences.userRoot().node("LogiLedus");
|
||||
}
|
||||
private static final Preferences preferences = Preferences.userRoot().node("LogiLedus");
|
||||
|
||||
public void setUseTray(boolean value){ preferences.putBoolean("USE_TRAY", value); }
|
||||
public boolean getUseTray(){ return preferences.getBoolean("USE_TRAY", true); }
|
||||
|
||||
public void setTheme(String value){ preferences.put("THEME", value); }
|
||||
public String getTheme(){ return preferences.get("THEME", "/light.css"); }
|
||||
|
||||
public void setRecent(String value){ preferences.put("recent", value); }
|
||||
public String getRecent(){ return preferences.get("recent", ""); }
|
||||
|
||||
public void setOpenRecentPlaylistOnStart(boolean value){ preferences.putBoolean("auto_open_recent", value); }
|
||||
public boolean getOpenRecentPlaylistOnStart(){ return preferences.getBoolean("auto_open_recent", true); }
|
||||
}
|
||||
|
|
|
@ -7,10 +7,9 @@ import javafx.scene.control.*;
|
|||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.stage.FileChooser;
|
||||
import logiledus.*;
|
||||
import logiledus.About.AboutWindow;
|
||||
import logiledus.MessagesConsumer;
|
||||
import logiledus.Config.SettingsFileFormat;
|
||||
import logiledus.ServiceWindow;
|
||||
import logiledus.Settings.SettingsWindow;
|
||||
import logiledus.USB.EffectsThread;
|
||||
import logiledus.USB.GameModeThread;
|
||||
|
@ -25,10 +24,8 @@ import java.util.ResourceBundle;
|
|||
public class MainController implements Initializable {
|
||||
@FXML
|
||||
private KeysLedsController KeysLedsController;
|
||||
|
||||
@FXML
|
||||
private EffectsController EffectsController;
|
||||
|
||||
@FXML
|
||||
private GameModeController GameModeController;
|
||||
|
||||
|
@ -52,13 +49,20 @@ public class MainController implements Initializable {
|
|||
@Override
|
||||
public void initialize(URL url, ResourceBundle resourceBundle) {
|
||||
this.rb = resourceBundle;
|
||||
AppPreferences preferences = new AppPreferences();
|
||||
|
||||
if (preferences.getOpenRecentPlaylistOnStart()){
|
||||
String recentConfigFileAbsPath = FilesValidator.validate(preferences.getRecent());
|
||||
if (! recentConfigFileAbsPath.isEmpty())
|
||||
openConfig(new File(recentConfigFileAbsPath));
|
||||
}
|
||||
|
||||
aboutBtn.setOnAction(actionEvent -> new AboutWindow());
|
||||
settingsBtn.setOnAction(actionEvent -> new SettingsWindow());
|
||||
MessagesConsumer.getInstance().setInstance(infoLbl);
|
||||
MessagesConsumer.getInstance().start();
|
||||
|
||||
openBtn.setOnAction(actionEvent -> openConfig());
|
||||
openBtn.setOnAction(actionEvent -> openConfigButtonAction());
|
||||
|
||||
saveBtn.setOnAction(ActionEvent -> saveConfig(false));
|
||||
saveAsBtn.setOnAction(ActionEvent -> saveConfig(true));
|
||||
|
@ -97,12 +101,15 @@ public class MainController implements Initializable {
|
|||
/**
|
||||
* For 'Open' button
|
||||
* */
|
||||
private void openConfig(){
|
||||
private void openConfigButtonAction(){
|
||||
File configFile = getOpenFileChooser();
|
||||
if (configFile == null)
|
||||
return;
|
||||
else
|
||||
recentPath = configFile.getParentFile().getAbsolutePath();
|
||||
openConfig(configFile);
|
||||
}
|
||||
private void openConfig(File configFile){
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
SettingsFileFormat setup;
|
||||
try{
|
||||
|
@ -113,6 +120,7 @@ public class MainController implements Initializable {
|
|||
GameModeController.setConfig(setup.getGameModeKeyCodes());
|
||||
|
||||
openedConfigFile = configFile;
|
||||
infoLbl.setText(configFile.getAbsolutePath());
|
||||
}
|
||||
catch (IOException e){
|
||||
ServiceWindow.getErrorNotification(rb.getString("error_any_title"), rb.getString("error_any_body"));
|
||||
|
@ -216,7 +224,7 @@ public class MainController implements Initializable {
|
|||
FileChooser fileChooser = new FileChooser();
|
||||
fileChooser.setTitle(rb.getString("btn_save_as"));
|
||||
fileChooser.setInitialFileName("keyboard settings.lcfg");
|
||||
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("LogiLed config (*.lcfg)", "*.lcfg"));
|
||||
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("LogiLedus config (*.lcfg)", "*.lcfg"));
|
||||
|
||||
if (recentPath != null){
|
||||
File stat = new File(recentPath);
|
||||
|
@ -226,4 +234,12 @@ public class MainController implements Initializable {
|
|||
|
||||
return fileChooser.showSaveDialog(applyBtn.getScene().getWindow());
|
||||
}
|
||||
|
||||
public void exit(){
|
||||
AppPreferences preferences = new AppPreferences();
|
||||
if (openedConfigFile == null)
|
||||
preferences.setRecent("");
|
||||
else
|
||||
preferences.setRecent(openedConfigFile.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
|
19
src/main/java/logiledus/FilesValidator.java
Normal file
19
src/main/java/logiledus/FilesValidator.java
Normal file
|
@ -0,0 +1,19 @@
|
|||
package logiledus;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
public class FilesValidator {
|
||||
public static String validate(String fileAbsolutePath){
|
||||
try{
|
||||
Path locationAsPath = Paths.get(fileAbsolutePath);
|
||||
if (Files.notExists(locationAsPath) || Files.isDirectory(locationAsPath))
|
||||
return "";
|
||||
return fileAbsolutePath;
|
||||
}
|
||||
catch (Exception ignored){
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,6 +7,7 @@ import javafx.scene.Parent;
|
|||
import javafx.scene.Scene;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.stage.Stage;
|
||||
import logiledus.Controllers.MainController;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.swing.*;
|
||||
|
@ -16,7 +17,7 @@ import java.util.Locale;
|
|||
import java.util.ResourceBundle;
|
||||
|
||||
public class MainFx extends Application {
|
||||
public static final String appVersion = "v1.3";
|
||||
public static final String appVersion = "v1.4";
|
||||
|
||||
private static boolean traySupport = true;
|
||||
|
||||
|
@ -28,6 +29,9 @@ public class MainFx extends Application {
|
|||
|
||||
@Override
|
||||
public void start(Stage primaryStage) throws Exception{
|
||||
//if (! getParameters().getUnnamed().isEmpty())
|
||||
// System.out.println(getParameters().getUnnamed().get(0));
|
||||
|
||||
AppPreferences appPreferences = new AppPreferences();
|
||||
if (traySupport) // By default it's enabled, but in case it disabled from CLI, don't touch.
|
||||
traySupport = appPreferences.getUseTray(); // Otherwise, check against preferences
|
||||
|
@ -84,7 +88,11 @@ public class MainFx extends Application {
|
|||
primaryStage.setScene(mainScene);
|
||||
primaryStage.show();
|
||||
|
||||
primaryStage.setOnHidden(e->MessagesConsumer.getInstance().stop()); // Useless?
|
||||
MainController controller = loader.getController();
|
||||
primaryStage.setOnHidden(e->{
|
||||
MessagesConsumer.getInstance().stop();
|
||||
controller.exit();
|
||||
}); // Useless?
|
||||
}
|
||||
|
||||
private void addAppToTray(){
|
||||
|
@ -144,19 +152,22 @@ public class MainFx extends Application {
|
|||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
if ((args.length > 0)) {
|
||||
if (args[0].equals("--no-tray")){
|
||||
if ((args.length > 0) && args[0].startsWith("-")){
|
||||
switch (args[0]){
|
||||
case "--no-tray":
|
||||
traySupport = false;
|
||||
launch(args);
|
||||
}
|
||||
if (args[0].equals("-v") || args[0].equals("--version"))
|
||||
return;
|
||||
case "-v":
|
||||
case "--version":
|
||||
System.out.println("LogiLedus " + appVersion);
|
||||
else
|
||||
return;
|
||||
}
|
||||
System.out.println("Usage: LogiLedus [KEY]\n" +
|
||||
" -v, --version\tGet application version\n" +
|
||||
" --no-tray\tDisable tray support");
|
||||
return;
|
||||
}
|
||||
else
|
||||
launch(args);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import javafx.fxml.Initializable;
|
|||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.CheckBox;
|
||||
import javafx.stage.Stage;
|
||||
import logiledus.AppPreferences;
|
||||
import logiledus.Mediator;
|
||||
|
||||
import java.net.URL;
|
||||
|
@ -16,24 +17,27 @@ public class SettingsController implements Initializable {
|
|||
private Button cancelBtn, okBtn;
|
||||
|
||||
@FXML
|
||||
private CheckBox trayCB, drkThemeCB;
|
||||
private CheckBox trayCB, drkThemeCB, openRecentCB;
|
||||
|
||||
@Override
|
||||
public void initialize(URL url, ResourceBundle resourceBundle) {
|
||||
trayCB.setSelected(Mediator.getInstance().getPreferences().getUseTray());
|
||||
if (Mediator.getInstance().getPreferences().getTheme().equals("/dark.css"))
|
||||
drkThemeCB.setSelected(true);
|
||||
AppPreferences preferences = Mediator.getInstance().getPreferences();
|
||||
|
||||
trayCB.setSelected(preferences.getUseTray());
|
||||
openRecentCB.setSelected(preferences.getOpenRecentPlaylistOnStart());
|
||||
drkThemeCB.setSelected(preferences.getTheme().equals("/dark.css"));
|
||||
|
||||
cancelBtn.setOnAction(actionEvent -> ((Stage) cancelBtn.getScene().getWindow()).close());
|
||||
|
||||
okBtn.setOnAction(actionEvent -> {
|
||||
Mediator.getInstance().getPreferences().setUseTray(trayCB.isSelected());
|
||||
preferences.setUseTray(trayCB.isSelected());
|
||||
preferences.setOpenRecentPlaylistOnStart(openRecentCB.isSelected());
|
||||
if (drkThemeCB.isSelected()) {
|
||||
Mediator.getInstance().getPreferences().setTheme("/dark.css");
|
||||
preferences.setTheme("/dark.css");
|
||||
Mediator.getInstance().setTheme("/dark.css");
|
||||
}
|
||||
else {
|
||||
Mediator.getInstance().getPreferences().setTheme("/light.css");
|
||||
preferences.setTheme("/light.css");
|
||||
Mediator.getInstance().setTheme("/light.css");
|
||||
}
|
||||
((Stage) cancelBtn.getScene().getWindow()).close();
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<children>
|
||||
<CheckBox fx:id="trayCB" mnemonicParsing="false" text="%setting_tray_support" />
|
||||
<CheckBox fx:id="drkThemeCB" mnemonicParsing="false" text="%setting_use_dark_theme" />
|
||||
<CheckBox fx:id="openRecentCB" mnemonicParsing="false" text="%setting_open_recent_on_start" />
|
||||
</children>
|
||||
</VBox>
|
||||
</center>
|
||||
|
|
|
@ -706,3 +706,4 @@ setting_save_and_close=Save and close
|
|||
setting_cancel=Cancel
|
||||
open=Open
|
||||
setting_use_dark_theme=Use dark theme
|
||||
setting_open_recent_on_start=Open recent configuration file on application start
|
||||
|
|
|
@ -32,3 +32,4 @@ setting_cancel=\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C
|
|||
setting_save_and_close=\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0438 \u0437\u0430\u043A\u0440\u044B\u0442\u044C
|
||||
open=\u041E\u0442\u043A\u0440\u044B\u0442\u044C
|
||||
setting_use_dark_theme=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0442\u0451\u043C\u043D\u0443\u044E \u0442\u0435\u043C\u0443
|
||||
setting_open_recent_on_start=\u041E\u0442\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u043D\u044B\u0439 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u0444\u0430\u0439\u043B \u043F\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F
|
||||
|
|
Loading…
Reference in a new issue