Skip to content

Commit 6e25134

Browse files
committed
Add 'open recent configuration file on start' option.
Add opened file name to the main pane information label. Update screenshots Correct readme
1 parent 9ed015d commit 6e25134

File tree

13 files changed

+94
-40
lines changed

13 files changed

+94
-40
lines changed

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
LogiLedus is a Logitech G513 Carbon GUI driver for adjusting backlight and effects.
88

9-
![Screenshot 1](https://live.staticflickr.com/65535/48932060697_6f60cc4143_o.png)
10-
![Screenshot 2](https://live.staticflickr.com/65535/48931873171_b00c4fd875_o.png)
11-
![Screenshot 3](https://live.staticflickr.com/65535/48931332563_72de8e93ed_o.png)
9+
![Screenshot 1](screenshots/1.png)
10+
![Screenshot 2](screenshots/2.png)
11+
![Screenshot 3](screenshots/3.png)
1212

1313
#### License
1414

@@ -52,7 +52,7 @@ Want to support development? Make a donation* (see below):
5252

5353
<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>
5454

55-
[Yandex.Money](https://money.yandex.ru/to/410014301951665)
55+
[ЮMoney](https://yoomoney.ru/to/410014301951665)
5656

5757
*Please note: this is non-commercial application.
5858

@@ -61,4 +61,4 @@ Want to support development? Make a donation* (see below):
6161
* [ ] Tray support: tray icon size checks
6262
* [ ] Autoload option in settings
6363
* [ ] Headless mode (CLI)
64-
* [ ] Add opened file name to info pane
64+
* [x] Add opened file name to info pane

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>loper</groupId>
88
<artifactId>LogiLedus</artifactId>
9-
<version>1.3-SNAPSHOT</version>
9+
<version>1.4-SNAPSHOT</version>
1010

1111
<!-- <url></url> -->
1212
<description>

screenshots/1.png

100 KB
Loading

screenshots/2.png

37.3 KB
Loading

screenshots/3.png

69.4 KB
Loading

src/main/java/logiledus/AppPreferences.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@
44

55
// Rule application settings
66
public class AppPreferences {
7-
8-
private Preferences preferences;
9-
10-
public AppPreferences(){
11-
preferences = Preferences.userRoot().node("LogiLedus");
12-
}
7+
private static final Preferences preferences = Preferences.userRoot().node("LogiLedus");
138

149
public void setUseTray(boolean value){ preferences.putBoolean("USE_TRAY", value); }
1510
public boolean getUseTray(){ return preferences.getBoolean("USE_TRAY", true); }
1611

1712
public void setTheme(String value){ preferences.put("THEME", value); }
1813
public String getTheme(){ return preferences.get("THEME", "/light.css"); }
14+
15+
public void setRecent(String value){ preferences.put("recent", value); }
16+
public String getRecent(){ return preferences.get("recent", ""); }
17+
18+
public void setOpenRecentPlaylistOnStart(boolean value){ preferences.putBoolean("auto_open_recent", value); }
19+
public boolean getOpenRecentPlaylistOnStart(){ return preferences.getBoolean("auto_open_recent", true); }
1920
}

src/main/java/logiledus/Controllers/MainController.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@
77
import javafx.scene.control.Button;
88
import javafx.scene.control.Label;
99
import javafx.stage.FileChooser;
10+
import logiledus.*;
1011
import logiledus.About.AboutWindow;
11-
import logiledus.MessagesConsumer;
1212
import logiledus.Config.SettingsFileFormat;
13-
import logiledus.ServiceWindow;
1413
import logiledus.Settings.SettingsWindow;
1514
import logiledus.USB.EffectsThread;
1615
import logiledus.USB.GameModeThread;
@@ -25,10 +24,8 @@
2524
public class MainController implements Initializable {
2625
@FXML
2726
private KeysLedsController KeysLedsController;
28-
2927
@FXML
3028
private EffectsController EffectsController;
31-
3229
@FXML
3330
private GameModeController GameModeController;
3431

@@ -52,13 +49,20 @@ public class MainController implements Initializable {
5249
@Override
5350
public void initialize(URL url, ResourceBundle resourceBundle) {
5451
this.rb = resourceBundle;
52+
AppPreferences preferences = new AppPreferences();
53+
54+
if (preferences.getOpenRecentPlaylistOnStart()){
55+
String recentConfigFileAbsPath = FilesValidator.validate(preferences.getRecent());
56+
if (! recentConfigFileAbsPath.isEmpty())
57+
openConfig(new File(recentConfigFileAbsPath));
58+
}
5559

5660
aboutBtn.setOnAction(actionEvent -> new AboutWindow());
5761
settingsBtn.setOnAction(actionEvent -> new SettingsWindow());
5862
MessagesConsumer.getInstance().setInstance(infoLbl);
5963
MessagesConsumer.getInstance().start();
6064

61-
openBtn.setOnAction(actionEvent -> openConfig());
65+
openBtn.setOnAction(actionEvent -> openConfigButtonAction());
6266

6367
saveBtn.setOnAction(ActionEvent -> saveConfig(false));
6468
saveAsBtn.setOnAction(ActionEvent -> saveConfig(true));
@@ -97,12 +101,15 @@ else if (MainTabPane.getSelectionModel().getSelectedItem().getId().equals("Effec
97101
/**
98102
* For 'Open' button
99103
* */
100-
private void openConfig(){
104+
private void openConfigButtonAction(){
101105
File configFile = getOpenFileChooser();
102106
if (configFile == null)
103107
return;
104108
else
105109
recentPath = configFile.getParentFile().getAbsolutePath();
110+
openConfig(configFile);
111+
}
112+
private void openConfig(File configFile){
106113
ObjectMapper mapper = new ObjectMapper();
107114
SettingsFileFormat setup;
108115
try{
@@ -113,6 +120,7 @@ private void openConfig(){
113120
GameModeController.setConfig(setup.getGameModeKeyCodes());
114121

115122
openedConfigFile = configFile;
123+
infoLbl.setText(configFile.getAbsolutePath());
116124
}
117125
catch (IOException e){
118126
ServiceWindow.getErrorNotification(rb.getString("error_any_title"), rb.getString("error_any_body"));
@@ -216,7 +224,7 @@ private File getSaveFileChooser(){
216224
FileChooser fileChooser = new FileChooser();
217225
fileChooser.setTitle(rb.getString("btn_save_as"));
218226
fileChooser.setInitialFileName("keyboard settings.lcfg");
219-
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("LogiLed config (*.lcfg)", "*.lcfg"));
227+
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("LogiLedus config (*.lcfg)", "*.lcfg"));
220228

221229
if (recentPath != null){
222230
File stat = new File(recentPath);
@@ -226,4 +234,12 @@ private File getSaveFileChooser(){
226234

227235
return fileChooser.showSaveDialog(applyBtn.getScene().getWindow());
228236
}
237+
238+
public void exit(){
239+
AppPreferences preferences = new AppPreferences();
240+
if (openedConfigFile == null)
241+
preferences.setRecent("");
242+
else
243+
preferences.setRecent(openedConfigFile.getAbsolutePath());
244+
}
229245
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package logiledus;
2+
3+
import java.nio.file.Files;
4+
import java.nio.file.Path;
5+
import java.nio.file.Paths;
6+
7+
public class FilesValidator {
8+
public static String validate(String fileAbsolutePath){
9+
try{
10+
Path locationAsPath = Paths.get(fileAbsolutePath);
11+
if (Files.notExists(locationAsPath) || Files.isDirectory(locationAsPath))
12+
return "";
13+
return fileAbsolutePath;
14+
}
15+
catch (Exception ignored){
16+
return "";
17+
}
18+
}
19+
}

src/main/java/logiledus/MainFx.java

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import javafx.scene.Scene;
88
import javafx.scene.image.Image;
99
import javafx.stage.Stage;
10+
import logiledus.Controllers.MainController;
1011

1112
import javax.imageio.ImageIO;
1213
import javax.swing.*;
@@ -16,7 +17,7 @@
1617
import java.util.ResourceBundle;
1718

1819
public class MainFx extends Application {
19-
public static final String appVersion = "v1.3";
20+
public static final String appVersion = "v1.4";
2021

2122
private static boolean traySupport = true;
2223

@@ -28,6 +29,9 @@ public class MainFx extends Application {
2829

2930
@Override
3031
public void start(Stage primaryStage) throws Exception{
32+
//if (! getParameters().getUnnamed().isEmpty())
33+
// System.out.println(getParameters().getUnnamed().get(0));
34+
3135
AppPreferences appPreferences = new AppPreferences();
3236
if (traySupport) // By default it's enabled, but in case it disabled from CLI, don't touch.
3337
traySupport = appPreferences.getUseTray(); // Otherwise, check against preferences
@@ -84,7 +88,11 @@ public void start(Stage primaryStage) throws Exception{
8488
primaryStage.setScene(mainScene);
8589
primaryStage.show();
8690

87-
primaryStage.setOnHidden(e->MessagesConsumer.getInstance().stop()); // Useless?
91+
MainController controller = loader.getController();
92+
primaryStage.setOnHidden(e->{
93+
MessagesConsumer.getInstance().stop();
94+
controller.exit();
95+
}); // Useless?
8896
}
8997

9098
private void addAppToTray(){
@@ -144,19 +152,22 @@ private void hideStage(){
144152
}
145153

146154
public static void main(String[] args) {
147-
if ((args.length > 0)) {
148-
if (args[0].equals("--no-tray")){
149-
traySupport = false;
150-
launch(args);
155+
if ((args.length > 0) && args[0].startsWith("-")){
156+
switch (args[0]){
157+
case "--no-tray":
158+
traySupport = false;
159+
launch(args);
160+
return;
161+
case "-v":
162+
case "--version":
163+
System.out.println("LogiLedus " + appVersion);
164+
return;
151165
}
152-
if (args[0].equals("-v") || args[0].equals("--version"))
153-
System.out.println("LogiLedus " + appVersion);
154-
else
155-
System.out.println("Usage: LogiLedus [KEY]\n" +
156-
" -v, --version\tGet application version\n" +
157-
" --no-tray\tDisable tray support");
166+
System.out.println("Usage: LogiLedus [KEY]\n" +
167+
" -v, --version\tGet application version\n" +
168+
" --no-tray\tDisable tray support");
169+
return;
158170
}
159-
else
160-
launch(args);
171+
launch(args);
161172
}
162173
}

src/main/java/logiledus/Settings/SettingsController.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import javafx.scene.control.Button;
66
import javafx.scene.control.CheckBox;
77
import javafx.stage.Stage;
8+
import logiledus.AppPreferences;
89
import logiledus.Mediator;
910

1011
import java.net.URL;
@@ -16,24 +17,27 @@ public class SettingsController implements Initializable {
1617
private Button cancelBtn, okBtn;
1718

1819
@FXML
19-
private CheckBox trayCB, drkThemeCB;
20+
private CheckBox trayCB, drkThemeCB, openRecentCB;
2021

2122
@Override
2223
public void initialize(URL url, ResourceBundle resourceBundle) {
23-
trayCB.setSelected(Mediator.getInstance().getPreferences().getUseTray());
24-
if (Mediator.getInstance().getPreferences().getTheme().equals("/dark.css"))
25-
drkThemeCB.setSelected(true);
24+
AppPreferences preferences = Mediator.getInstance().getPreferences();
25+
26+
trayCB.setSelected(preferences.getUseTray());
27+
openRecentCB.setSelected(preferences.getOpenRecentPlaylistOnStart());
28+
drkThemeCB.setSelected(preferences.getTheme().equals("/dark.css"));
2629

2730
cancelBtn.setOnAction(actionEvent -> ((Stage) cancelBtn.getScene().getWindow()).close());
2831

2932
okBtn.setOnAction(actionEvent -> {
30-
Mediator.getInstance().getPreferences().setUseTray(trayCB.isSelected());
33+
preferences.setUseTray(trayCB.isSelected());
34+
preferences.setOpenRecentPlaylistOnStart(openRecentCB.isSelected());
3135
if (drkThemeCB.isSelected()) {
32-
Mediator.getInstance().getPreferences().setTheme("/dark.css");
36+
preferences.setTheme("/dark.css");
3337
Mediator.getInstance().setTheme("/dark.css");
3438
}
3539
else {
36-
Mediator.getInstance().getPreferences().setTheme("/light.css");
40+
preferences.setTheme("/light.css");
3741
Mediator.getInstance().setTheme("/light.css");
3842
}
3943
((Stage) cancelBtn.getScene().getWindow()).close();

0 commit comments

Comments
 (0)