From 2de61c7e3abebae77e20e0a3122bf323609729df Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Fri, 29 Oct 2021 09:51:56 +0200 Subject: [PATCH 01/20] Add hashtag to all links --- src/main/java/main/UI/menu/HomeScreen.java | 6 +++--- src/main/java/main/gaze/devicemanager/EyeTracker.java | 2 +- .../java/main/process/TobiiManagerNamedProcessCreator.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/main/UI/menu/HomeScreen.java b/src/main/java/main/UI/menu/HomeScreen.java index 243d1a5..1db0ada 100644 --- a/src/main/java/main/UI/menu/HomeScreen.java +++ b/src/main/java/main/UI/menu/HomeScreen.java @@ -82,7 +82,7 @@ public HomeScreen(GraphicalMenus graphicalMenus, UpdateManager updateManager) { showCloseProcessButtonIfProcessNotNull(); Button tobiiButton = createTopBarButton( - "Tobii Manager", + "Eye-Tracker Manager", "images/eye-tracking_white.png", (e) -> { StageUtils.killRunningProcess(graphicalMenus); @@ -311,7 +311,7 @@ private void takeSnapShot() { public ProgressButton createCloseMenuButton() { ProgressButton closeButton = new ProgressButton(); - closeButton.getButton().setRadius(graphicalMenus.primaryStage.getWidth() / 10); + closeButton.getButton().setRadius(graphicalMenus.primaryStage.getWidth() / 15); closeButton.getButton().setStroke(Color.web("#cd2653")); closeButton.getButton().setStrokeWidth(3); @@ -331,7 +331,7 @@ public void showCloseProcessButtonIfProcessNotNull() { centerMenu.setSpacing(rest / 2); centerMenu.setTranslateY(rest / 2); centerMenu.getChildren().add(0, closeMenuButton); - closeMenuButton.getLabel().setText("Back To :\n" + graphicalMenus.process.getName()); + closeMenuButton.getLabel().setText("Retourner sur :\n" + graphicalMenus.process.getName()); } else if (graphicalMenus.process == null || graphicalMenus.process.get() == null) { double rest = graphicalMenus.primaryStage.getHeight() - (graphicalMenus.primaryStage.getHeight() / 10 + graphicalMenus.primaryStage.getWidth() / 5); double spacingoffset = (graphicalMenus.primaryStage.getHeight() - (graphicalMenus.primaryStage.getHeight() / 10 + 2 * graphicalMenus.primaryStage.getWidth() / 5)) / 3; diff --git a/src/main/java/main/gaze/devicemanager/EyeTracker.java b/src/main/java/main/gaze/devicemanager/EyeTracker.java index b6eb795..33ed9c0 100644 --- a/src/main/java/main/gaze/devicemanager/EyeTracker.java +++ b/src/main/java/main/gaze/devicemanager/EyeTracker.java @@ -1,5 +1,5 @@ package main.gaze.devicemanager; public enum EyeTracker { - mouse_control, tobii_eyeX_4C, eyetribe + mouse_control, tobii, eyetribe } diff --git a/src/main/java/main/process/TobiiManagerNamedProcessCreator.java b/src/main/java/main/process/TobiiManagerNamedProcessCreator.java index 5357f40..feb8a7b 100644 --- a/src/main/java/main/process/TobiiManagerNamedProcessCreator.java +++ b/src/main/java/main/process/TobiiManagerNamedProcessCreator.java @@ -27,7 +27,7 @@ public void setUpProcessBuilder() { @Override public NamedProcess start(GraphicalMenus graphicalMenus) { - return AppNamedProcessCreator.createProcress(new TobiiXdotoolProcessCreator(), processBuilder, graphicalMenus, "Tobii Pro EyeTracker Manager"); + return AppNamedProcessCreator.createProcress(new TobiiXdotoolProcessCreator(), processBuilder, graphicalMenus, "Eye-Tracker Manager"); } From 1cc0bfe378c7061c11b9b3f95c4880a308dc849f Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Fri, 29 Oct 2021 11:45:15 +0200 Subject: [PATCH 02/20] Download one software --- src/main/java/main/UI/menu/UpdateMenu.java | 173 ++++++++++++++++++--- 1 file changed, 153 insertions(+), 20 deletions(-) diff --git a/src/main/java/main/UI/menu/UpdateMenu.java b/src/main/java/main/UI/menu/UpdateMenu.java index 333a680..6a5b295 100644 --- a/src/main/java/main/UI/menu/UpdateMenu.java +++ b/src/main/java/main/UI/menu/UpdateMenu.java @@ -11,7 +11,10 @@ import javafx.scene.control.ProgressBar; import javafx.scene.image.Image; import javafx.scene.image.ImageView; -import javafx.scene.layout.*; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.util.Duration; @@ -28,9 +31,8 @@ public class UpdateMenu extends BorderPane { UpdateManager updateManager; - Button downloadButton; ProgressBar[] progressBars = new ProgressBar[6]; - Label displayedLabel; + Button displayedLabel; GraphicalMenus graphicalMenus; public UpdateMenu(GraphicalMenus graphicalMenus, UpdateManager updateManager) { @@ -58,29 +60,30 @@ public UpdateMenu(GraphicalMenus graphicalMenus, UpdateManager updateManager) { downloadEverythin.setAlignment(Pos.CENTER); downloadEverythin.setSpacing(20); - displayedLabel = new Label("Mettre \u00e0 jour tous les logiciels"); - displayedLabel.setStyle("-fx-font-weight: bold; " + - "-fx-font-family: Helvetica; " + - "-fx-text-fill: #cd2653"); - displayedLabel.setFont(new Font(30)); - menu.setSpacing(30); - - downloadButton = new Button("Installer tous"); - - downloadButton.setOnMouseClicked((event) -> { - downloadButton.setVisible(false); - startUpdateAll(); + displayedLabel = createTopBarButton("Mettre \u00e0 jour tous les logiciels", (event) -> { + if (updateManager.anyUpdateNeeded.getValue()) { + startUpdateAll(); + } + }, "images/tick-mark.png"); + String style = "-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #cd2653; -fx-font-size: 30; " + + "-fx-border-color: transparent; -fx-border-width: 0; -fx-background-radius: 0; -fx-background-color: transparent; "; + displayedLabel.setStyle(style); + displayedLabel.hoverProperty().addListener((obs, oldval, newval) -> { + if (newval && updateManager.anyUpdateNeeded.getValue()) { + displayedLabel.setStyle(style + "-fx-cursor: hand; -fx-underline: true"); + } else { + displayedLabel.setStyle(style); + } }); + menu.setSpacing(30); downloadEverythin.getChildren().addAll(displayedLabel); updateManager.anyUpdateNeeded.addListener((obs, oldval, newval) -> { if (newval) { displayedLabel.setText("Mettre \u00e0 jour tous les logiciels"); - downloadEverythin.getChildren().add(downloadButton); } else { displayedLabel.setText("Votre syst\u00e8me est \u00e0 jour"); - downloadEverythin.getChildren().remove(downloadButton); } }); @@ -185,6 +188,26 @@ void startUpdateSystem() { } } + void startUpdateOnlySystem() { + if (updateManager.updateServices[UpdateService.SYSTEME].getUpdateProperty().get()) { + try { + ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir /s /b \"C:/Users/Sebastien\" "); + pb.redirectErrorStream(true); + Process p = pb.start(); + p.onExit().thenRun(() -> { + closeProcessStream(p); + Platform.runLater(() -> { + progressBars[UpdateService.SYSTEME + 1].setVisible(false); + updateManager.updateServices[UpdateService.SYSTEME].getOutput().setValue(""); + }); + }); + progressPercent(p, 1); + } catch (IOException ex) { + ex.printStackTrace(System.err); + } + } + } + void startUpdateAugCom() { if (updateManager.updateServices[UpdateService.AUGCOM].getUpdateProperty().get()) { try { @@ -208,6 +231,26 @@ void startUpdateAugCom() { } } + void startUpdateOnlyAugCom() { + if (updateManager.updateServices[UpdateService.AUGCOM].getUpdateProperty().get()) { + try { + ProcessBuilder pb = new ProcessBuilder("sh", "../../Update/augcomUpdate.sh"); + pb.redirectErrorStream(true); + Process p = pb.start(); + p.onExit().thenRun(() -> { + closeProcessStream(p); + Platform.runLater(() -> { + progressBars[UpdateService.AUGCOM + 1].setVisible(false); + updateManager.updateServices[UpdateService.AUGCOM].getOutput().setValue(""); + }); + }); + progressPercent(p, 2); + } catch (IOException ex) { + ex.printStackTrace(System.err); + } + } + } + void startUpdateInterAACtonScene() { if (updateManager.updateServices[UpdateService.INTERAACTION_SCENE].getUpdateProperty().get()) { try { @@ -231,6 +274,26 @@ void startUpdateInterAACtonScene() { } } + void startUpdateOnlyInterAACtonScene() { + if (updateManager.updateServices[UpdateService.INTERAACTION_SCENE].getUpdateProperty().get()) { + try { + ProcessBuilder pb = new ProcessBuilder("sh", "../../Update/interAACtionSceneUpdate.sh"); + pb.redirectErrorStream(true); + Process p = pb.start(); + p.onExit().thenRun(() -> { + closeProcessStream(p); + Platform.runLater(() -> { + progressBars[UpdateService.INTERAACTION_SCENE + 1].setVisible(false); + updateManager.updateServices[UpdateService.INTERAACTION_SCENE].getOutput().setValue(""); + }); + }); + progressPercent(p, 3); + } catch (IOException ex) { + ex.printStackTrace(System.err); + } + } + } + void startUpdateGazePlay() { if (updateManager.updateServices[UpdateService.GAZEPLAY].getUpdateProperty().get()) { try { @@ -254,6 +317,26 @@ void startUpdateGazePlay() { } } + void startUpdateOnlyGazePlay() { + if (updateManager.updateServices[UpdateService.GAZEPLAY].getUpdateProperty().get()) { + try { + ProcessBuilder pb = new ProcessBuilder("sh", "../../Update/gazeplayUpdate.sh"); + pb.redirectErrorStream(true); + Process p = pb.start(); + p.onExit().thenRun(() -> { + closeProcessStream(p); + Platform.runLater(() -> { + progressBars[UpdateService.GAZEPLAY + 1].setVisible(false); + updateManager.updateServices[UpdateService.GAZEPLAY].getOutput().setValue(""); + }); + }); + progressPercent(p, 4); + } catch (IOException ex) { + ex.printStackTrace(System.err); + } + } + } + void startUpdateInterAACtionPlayer() { if (updateManager.updateServices[UpdateService.INTERAACTION_PLAYER].getUpdateProperty().get()) { @@ -278,6 +361,27 @@ void startUpdateInterAACtionPlayer() { } } + void startUpdateOnlyInterAACtionPlayer() { + + if (updateManager.updateServices[UpdateService.INTERAACTION_PLAYER].getUpdateProperty().get()) { + try { + ProcessBuilder pb = new ProcessBuilder("sh", "../../Update/interAACtionPlayerUpdate.sh"); + pb.redirectErrorStream(true); + Process p = pb.start(); + p.onExit().thenRun(() -> { + closeProcessStream(p); + Platform.runLater(() -> { + progressBars[UpdateService.INTERAACTION_PLAYER + 1].setVisible(false); + updateManager.updateServices[UpdateService.INTERAACTION_PLAYER].getOutput().setValue(""); + }); + }); + progressPercent(p, 5); + } catch (IOException ex) { + ex.printStackTrace(System.err); + } + } + } + void progressPercent(Process p, int index) { Thread t = new Thread(() -> { String s; @@ -316,13 +420,42 @@ void createGnomeControlCenterButton(GridPane settings, int serviceIndex) { Button button = createTopBarButton( "Le logiciel est \u00e0 jour", - (e) -> { + (event) -> { + if (updateManager.updateServices[serviceIndex].getUpdateProperty().getValue()) { + switch (serviceIndex) { + case UpdateService.SYSTEME: + startUpdateOnlySystem(); + break; + case UpdateService.AUGCOM: + startUpdateOnlyAugCom(); + break; + case UpdateService.INTERAACTION_SCENE: + startUpdateOnlyInterAACtonScene(); + break; + case UpdateService.GAZEPLAY: + startUpdateOnlyGazePlay(); + break; + case UpdateService.INTERAACTION_PLAYER: + startUpdateOnlyInterAACtionPlayer(); + break; + default: + break; + } + } }, "images/tick-mark.png" ); - - button.setTextFill(Color.web("#faeaed")); + String style = "-fx-border-color: transparent; -fx-border-width: 0; -fx-background-radius: 0; " + + "-fx-background-color: transparent; -fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #faeaed;"; + button.setStyle(style); + button.hoverProperty().addListener((obs, oldval, newval) -> { + if (newval && updateManager.updateServices[serviceIndex].getUpdateProperty().getValue()) { + button.setStyle(style + "-fx-cursor: hand; -fx-underline: true"); + } else { + button.setStyle(style); + } + }); int row = serviceIndex + 1; From e001f905b0293659e59a37b2768e6c209474ac79 Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Fri, 29 Oct 2021 12:13:53 +0200 Subject: [PATCH 03/20] change size of text in download and makes it clickable --- src/main/java/main/UI/menu/UpdateMenu.java | 28 ++++++++++------------ src/main/java/main/utils/UtilsUI.java | 14 ++++++----- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main/java/main/UI/menu/UpdateMenu.java b/src/main/java/main/UI/menu/UpdateMenu.java index 6a5b295..d336823 100644 --- a/src/main/java/main/UI/menu/UpdateMenu.java +++ b/src/main/java/main/UI/menu/UpdateMenu.java @@ -16,7 +16,6 @@ import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; -import javafx.scene.text.Font; import javafx.util.Duration; import lombok.extern.slf4j.Slf4j; import main.utils.UpdateManager; @@ -32,7 +31,7 @@ public class UpdateMenu extends BorderPane { UpdateManager updateManager; ProgressBar[] progressBars = new ProgressBar[6]; - Button displayedLabel; + Button installAllButton; GraphicalMenus graphicalMenus; public UpdateMenu(GraphicalMenus graphicalMenus, UpdateManager updateManager) { @@ -60,30 +59,30 @@ public UpdateMenu(GraphicalMenus graphicalMenus, UpdateManager updateManager) { downloadEverythin.setAlignment(Pos.CENTER); downloadEverythin.setSpacing(20); - displayedLabel = createTopBarButton("Mettre \u00e0 jour tous les logiciels", (event) -> { + installAllButton = createTopBarButton("Mettre \u00e0 jour tous les logiciels", (event) -> { if (updateManager.anyUpdateNeeded.getValue()) { startUpdateAll(); } - }, "images/tick-mark.png"); - String style = "-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #cd2653; -fx-font-size: 30; " + + }, null); + String style = "-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #cd2653; -fx-font-size: 3em; " + "-fx-border-color: transparent; -fx-border-width: 0; -fx-background-radius: 0; -fx-background-color: transparent; "; - displayedLabel.setStyle(style); - displayedLabel.hoverProperty().addListener((obs, oldval, newval) -> { + installAllButton.setStyle(style); + installAllButton.hoverProperty().addListener((obs, oldval, newval) -> { if (newval && updateManager.anyUpdateNeeded.getValue()) { - displayedLabel.setStyle(style + "-fx-cursor: hand; -fx-underline: true"); + installAllButton.setStyle(style + "-fx-cursor: hand; -fx-underline: true"); } else { - displayedLabel.setStyle(style); + installAllButton.setStyle(style); } }); menu.setSpacing(30); - downloadEverythin.getChildren().addAll(displayedLabel); + downloadEverythin.getChildren().addAll(installAllButton); updateManager.anyUpdateNeeded.addListener((obs, oldval, newval) -> { if (newval) { - displayedLabel.setText("Mettre \u00e0 jour tous les logiciels"); + installAllButton.setText("Mettre \u00e0 jour tous les logiciels"); } else { - displayedLabel.setText("Votre syst\u00e8me est \u00e0 jour"); + installAllButton.setText("Votre syst\u00e8me est \u00e0 jour"); } }); @@ -414,8 +413,7 @@ void progressPercent(Process p, int index) { void createGnomeControlCenterButton(GridPane settings, int serviceIndex) { Label displayedLabel = new Label(updateManager.updateServices[serviceIndex].getName() + ":"); - displayedLabel.setFont(new Font(20)); - displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica"); + displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 2.5em"); displayedLabel.setTextFill(Color.web("#cd2653")); Button button = createTopBarButton( @@ -446,7 +444,7 @@ void createGnomeControlCenterButton(GridPane settings, int serviceIndex) { "images/tick-mark.png" ); - String style = "-fx-border-color: transparent; -fx-border-width: 0; -fx-background-radius: 0; " + + String style = "-fx-border-color: transparent; -fx-border-width: 0; -fx-background-radius: 0; -fx-font-size: 2em ;" + "-fx-background-color: transparent; -fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #faeaed;"; button.setStyle(style); button.hoverProperty().addListener((obs, oldval, newval) -> { diff --git a/src/main/java/main/utils/UtilsUI.java b/src/main/java/main/utils/UtilsUI.java index 52034b1..c6bbb45 100644 --- a/src/main/java/main/utils/UtilsUI.java +++ b/src/main/java/main/utils/UtilsUI.java @@ -31,7 +31,7 @@ public static Button getDoubleClickedButton(String text, String imagePath, Event DoubleClickedButton optionButton = new DoubleClickedButton(text); // optionButton.setMaxHeight(50); optionButton.setStyle( - "-fx-border-color: transparent; " + + "-fx-border-color: transparent; " + "-fx-border-width: 0; " + "-fx-background-radius: 0; " + "-fx-background-color: transparent; " + @@ -40,10 +40,12 @@ public static Button getDoubleClickedButton(String text, String imagePath, Event "-fx-text-fill: #faeaed;" + "-fx-font-size: 20;" ); - ImageView graphic = new ImageView(imagePath); - graphic.setPreserveRatio(true); - graphic.setFitHeight((primaryStage.getHeight() / 10) * 0.7); - optionButton.setGraphic(graphic); + if (imagePath != null) { + ImageView graphic = new ImageView(imagePath); + graphic.setPreserveRatio(true); + graphic.setFitHeight((primaryStage.getHeight() / 10) * 0.7); + optionButton.setGraphic(graphic); + } optionButton.assignHandler(eventhandler); return optionButton; } @@ -60,7 +62,7 @@ public static ImageView getDownloadImageView(ProgressButton processButton) { return downnloadImageView; } - public static StackPane createTopBar(GraphicalMenus graphicalMenus, String label){ + public static StackPane createTopBar(GraphicalMenus graphicalMenus, String label) { StackPane titlePane = new StackPane(); Rectangle backgroundForTitle = new Rectangle(0, 0, graphicalMenus.primaryStage.getWidth(), graphicalMenus.primaryStage.getHeight() / 10); backgroundForTitle.heightProperty().bind(graphicalMenus.primaryStage.heightProperty().divide(10)); From a884bf25dcbd958b62c6d2f9512f3dac4a9d01f1 Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Fri, 29 Oct 2021 13:53:18 +0200 Subject: [PATCH 04/20] increase size of the option Menu --- src/main/java/main/UI/menu/OptionsMenu.java | 56 ++++++++++----------- src/main/java/main/UI/menu/UpdateMenu.java | 2 +- src/main/java/main/utils/UpdateService.java | 2 +- src/main/java/main/utils/UtilsUI.java | 6 +-- 4 files changed, 32 insertions(+), 34 deletions(-) diff --git a/src/main/java/main/UI/menu/OptionsMenu.java b/src/main/java/main/UI/menu/OptionsMenu.java index c8ca81a..8217705 100644 --- a/src/main/java/main/UI/menu/OptionsMenu.java +++ b/src/main/java/main/UI/menu/OptionsMenu.java @@ -6,14 +6,14 @@ import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.image.ImageView; -import javafx.scene.layout.*; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.scene.paint.CycleMethod; import javafx.scene.paint.LinearGradient; import javafx.scene.paint.Stop; import javafx.scene.shape.Rectangle; -import javafx.scene.text.Font; -import javafx.scene.text.TextAlignment; import main.Configuration; import main.UI.DoubleClickedButton; import main.process.GnomeControlCenterNamedProcessCreator; @@ -38,7 +38,7 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { this.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty()); this.prefHeightProperty().bind(graphicalMenus.primaryStage.heightProperty()); - StackPane titlePane = UtilsUI.createTopBar(graphicalMenus,"Options"); + StackPane titlePane = UtilsUI.createTopBar(graphicalMenus, "Options"); BorderPane.setAlignment(titlePane, Pos.CENTER); this.setTop(titlePane); @@ -46,17 +46,22 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { GridPane settings = new GridPane(); settings.setHgap(20); - settings.setVgap(graphicalMenus.primaryStage.getHeight()/15); + settings.setVgap(graphicalMenus.primaryStage.getHeight() / 15); { Label useEyeTracker = new Label("Eye Tracker:"); - - useEyeTracker.setFont(new Font(20)); - useEyeTracker.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica"); - useEyeTracker.setTextFill(Color.web("#cd2653")); + useEyeTracker.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em ; -fx-text-fill: #cd2653"); CheckBox useEyeTrackerCheckBox = new CheckBox("Activ\u00e9"); - useEyeTrackerCheckBox.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 20"); + String style = "-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 2.5em; "; + useEyeTrackerCheckBox.setStyle(style); + useEyeTrackerCheckBox.hoverProperty().addListener((obs, oldval, newval) -> { + if (newval) { + useEyeTrackerCheckBox.setStyle(style + "-fx-cursor: hand; -fx-underline: true"); + } else { + useEyeTrackerCheckBox.setStyle(style); + } + }); useEyeTrackerCheckBox.selectedProperty().addListener((obj, oldval, newval) -> { if (newval) { useEyeTrackerCheckBox.setText("D\u00e9sactiv\u00e9"); @@ -69,7 +74,7 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { useEyeTrackerCheckBox.setSelected(true); useEyeTrackerCheckBox.setTextFill(Color.web("#faeaed")); - useEyeTrackerCheckBox.resize(100,100); + useEyeTrackerCheckBox.resize(100, 100); settings.add(useEyeTracker, 0, 0); settings.add(useEyeTrackerCheckBox, 1, 0); @@ -83,10 +88,7 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { { Label teamviewerLabel = new Label("Lancer TeamViewer:"); - - teamviewerLabel.setFont(new Font(20)); - teamviewerLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica"); - teamviewerLabel.setTextFill(Color.web("#cd2653")); + teamviewerLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em ; -fx-text-fill: #cd2653"); Button teamViewerButton = createTopBarButton( "Ouvrir>", @@ -112,9 +114,7 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { void createGnomeControlCenterButton(GraphicalMenus graphicalMenus, GridPane settings, String label, String imageName, String panelToOpen, int row) { Label displayedLabel = new Label(label); - displayedLabel.setFont(new Font(20)); - displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica"); - displayedLabel.setTextFill(Color.web("#cd2653")); + displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #cd2653; -fx-font-size: 3em"); Button button = createTopBarButton( "Ouvrir>", @@ -137,16 +137,16 @@ Button createTopBarButton(String text, String imagePath, EventHandler eventhandl DoubleClickedButton optionButton = new DoubleClickedButton(text); optionButton.setPrefHeight(50); optionButton.setMaxHeight(50); - optionButton.setStyle( - "-fx-border-color: transparent; " + - "-fx-border-width: 0; " + - "-fx-background-radius: 0; " + - "-fx-background-color: transparent; " + - "-fx-font-weight: bold; " + - "-fx-font-family: Helvetica; " + - "-fx-text-fill: #faeaed;"+ - "-fx-font-size: 20" - ); + String style = "-fx-border-color: transparent; -fx-border-width: 0; -fx-background-radius: 0; -fx-background-color: transparent; " + + "-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #faeaed; -fx-font-size: 2.5em; "; + optionButton.setStyle(style); + optionButton.hoverProperty().addListener((obs, oldval, newval) -> { + if (newval) { + optionButton.setStyle(style + "-fx-cursor: hand; -fx-underline: true"); + } else { + optionButton.setStyle(style); + } + }); ImageView graphic = new ImageView(imagePath); graphic.setPreserveRatio(true); graphic.setFitHeight(30); diff --git a/src/main/java/main/UI/menu/UpdateMenu.java b/src/main/java/main/UI/menu/UpdateMenu.java index d336823..ffb8dd2 100644 --- a/src/main/java/main/UI/menu/UpdateMenu.java +++ b/src/main/java/main/UI/menu/UpdateMenu.java @@ -463,7 +463,7 @@ void createGnomeControlCenterButton(GridPane settings, int serviceIndex) { output.textProperty().bind(updateManager.updateServices[serviceIndex].getOutput()); output.setOpacity(0.5); output.setWrapText(true); - output.setStyle("-fx-font-size: 5"); + output.setStyle("-fx-font-size: 0.5"); output.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty().divide(10)); output.maxWidthProperty().bind(graphicalMenus.primaryStage.widthProperty().divide(10)); settings.add(output, 3, row); diff --git a/src/main/java/main/utils/UpdateService.java b/src/main/java/main/utils/UpdateService.java index b42273f..49e0822 100644 --- a/src/main/java/main/utils/UpdateService.java +++ b/src/main/java/main/utils/UpdateService.java @@ -33,7 +33,7 @@ public class UpdateService { String version; @Getter - StringProperty output = new SimpleStringProperty(""); + StringProperty output = new SimpleStringProperty("ALORS ??? wejdene"); public UpdateService(String name, String updateURL) { this.name = name; diff --git a/src/main/java/main/utils/UtilsUI.java b/src/main/java/main/utils/UtilsUI.java index c6bbb45..d47e403 100644 --- a/src/main/java/main/utils/UtilsUI.java +++ b/src/main/java/main/utils/UtilsUI.java @@ -16,7 +16,6 @@ import javafx.scene.paint.LinearGradient; import javafx.scene.paint.Stop; import javafx.scene.shape.Rectangle; -import javafx.scene.text.Font; import javafx.scene.text.TextAlignment; import javafx.stage.Stage; import main.UI.DoubleClickedButton; @@ -38,7 +37,7 @@ public static Button getDoubleClickedButton(String text, String imagePath, Event "-fx-font-weight: bold; " + "-fx-font-family: Helvetica; " + "-fx-text-fill: #faeaed;" + - "-fx-font-size: 20;" + "-fx-font-size: 2em;" ); if (imagePath != null) { ImageView graphic = new ImageView(imagePath); @@ -73,8 +72,7 @@ public static StackPane createTopBar(GraphicalMenus graphicalMenus, String label back.prefHeightProperty().bind(backgroundForTitle.heightProperty()); Label title = new Label(label); - title.setFont(new Font(30)); - title.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica"); + title.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em"); title.setTextFill(Color.web("#faeaed")); BorderPane titleBox = new BorderPane(); title.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty().subtract(back.widthProperty().multiply(2))); From d12e70d4d17cd7f04b9683c480e9b1f09156119e Mon Sep 17 00:00:00 2001 From: PillouMatou Date: Fri, 29 Oct 2021 14:16:36 +0200 Subject: [PATCH 05/20] ergonomic button (we see the langage selected in the button area) --- src/main/java/main/UI/menu/OptionsMenu.java | 54 +++++++++++++++++++-- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/src/main/java/main/UI/menu/OptionsMenu.java b/src/main/java/main/UI/menu/OptionsMenu.java index c8ca81a..0ec652f 100644 --- a/src/main/java/main/UI/menu/OptionsMenu.java +++ b/src/main/java/main/UI/menu/OptionsMenu.java @@ -2,9 +2,7 @@ import javafx.event.EventHandler; import javafx.geometry.Pos; -import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; -import javafx.scene.control.Label; +import javafx.scene.control.*; import javafx.scene.image.ImageView; import javafx.scene.layout.*; import javafx.scene.paint.Color; @@ -13,7 +11,7 @@ import javafx.scene.paint.Stop; import javafx.scene.shape.Rectangle; import javafx.scene.text.Font; -import javafx.scene.text.TextAlignment; +import lombok.extern.slf4j.Slf4j; import main.Configuration; import main.UI.DoubleClickedButton; import main.process.GnomeControlCenterNamedProcessCreator; @@ -21,8 +19,11 @@ import main.utils.StageUtils; import main.utils.UtilsUI; +@Slf4j public class OptionsMenu extends BorderPane { + public String langage = "Francais"; + public OptionsMenu(GraphicalMenus graphicalMenus) { super(); @@ -79,6 +80,7 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { createGnomeControlCenterButton(graphicalMenus, settings, "Gestionnaire Bluetooth:", "images/bluetooth.png", "bluetooth", 2); createGnomeControlCenterButton(graphicalMenus, settings, "Param\u00e8tres D'Affichage:", "images/notebook.png", "display", 3); createGnomeControlCenterButton(graphicalMenus, settings, "Param\u00e8tres de Batterie:", "images/battery.png", "power", 4); + createGnomeControlCenterButtonLang(settings); { @@ -133,6 +135,50 @@ void createGnomeControlCenterButton(GraphicalMenus graphicalMenus, GridPane sett settings.add(button, 1, row); } + void createGnomeControlCenterButtonLang(GridPane settings) { + Label displayedLabel = new Label("Langue"); + displayedLabel.setFont(new Font(20)); + displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica"); + displayedLabel.setTextFill(Color.web("#cd2653")); + + MenuItem menuItemFR = new MenuItem("Francais"); + MenuItem menuItemEN = new MenuItem("English"); + + MenuButton menuButton = new MenuButton(langage); + + menuItemFR.setOnAction(eventMenuLanguages -> { + langage = menuItemFR.getText(); + menuButton.setText(langage); + }); + menuItemEN.setOnAction(eventMenuLanguages -> { + langage = menuItemEN.getText(); + menuButton.setText(langage); + }); + menuButton.getItems().addAll(menuItemEN,menuItemFR); + + + /* + + Button button = createTopBarButton( + "Ouvrir>", + imageName, + (e) -> { + StageUtils.killRunningProcess(graphicalMenus); + GnomeControlCenterNamedProcessCreator process = new GnomeControlCenterNamedProcessCreator(panelToOpen); + process.setUpProcessBuilder(); + graphicalMenus.process = process.start(graphicalMenus); + } + ); + + */ + + // button.setTextFill(Color.web("#faeaed")); + + settings.add(displayedLabel, 0, 6); + settings.add(menuButton,1, 6); + // settings.add(button, 1, row); + } + Button createTopBarButton(String text, String imagePath, EventHandler eventhandler) { DoubleClickedButton optionButton = new DoubleClickedButton(text); optionButton.setPrefHeight(50); From 21d8fcad23ee17e764d82efc2d4bd48d8fe55ca4 Mon Sep 17 00:00:00 2001 From: Riou Sebastien Date: Tue, 2 Nov 2021 11:48:31 +0100 Subject: [PATCH 06/20] Update UpdateService.java --- src/main/java/main/utils/UpdateService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/main/utils/UpdateService.java b/src/main/java/main/utils/UpdateService.java index 49e0822..b42273f 100644 --- a/src/main/java/main/utils/UpdateService.java +++ b/src/main/java/main/utils/UpdateService.java @@ -33,7 +33,7 @@ public class UpdateService { String version; @Getter - StringProperty output = new SimpleStringProperty("ALORS ??? wejdene"); + StringProperty output = new SimpleStringProperty(""); public UpdateService(String name, String updateURL) { this.name = name; From d5d508bb1124a10f94cf5c6bb7b10c97f99ddfdb Mon Sep 17 00:00:00 2001 From: Riou Sebastien Date: Tue, 2 Nov 2021 11:50:18 +0100 Subject: [PATCH 07/20] Update UpdateMenu.java --- src/main/java/main/UI/menu/UpdateMenu.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/main/UI/menu/UpdateMenu.java b/src/main/java/main/UI/menu/UpdateMenu.java index ffb8dd2..d22355a 100644 --- a/src/main/java/main/UI/menu/UpdateMenu.java +++ b/src/main/java/main/UI/menu/UpdateMenu.java @@ -463,7 +463,7 @@ void createGnomeControlCenterButton(GridPane settings, int serviceIndex) { output.textProperty().bind(updateManager.updateServices[serviceIndex].getOutput()); output.setOpacity(0.5); output.setWrapText(true); - output.setStyle("-fx-font-size: 0.5"); + output.setStyle("-fx-font-size: 0.5em"); output.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty().divide(10)); output.maxWidthProperty().bind(graphicalMenus.primaryStage.widthProperty().divide(10)); settings.add(output, 3, row); From d659d2ffea1946d16cadafe765593b90bcb297bf Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Tue, 2 Nov 2021 13:22:53 +0100 Subject: [PATCH 08/20] adding user information menu --- .../java/main/UI/menu/GraphicalMenus.java | 5 +- src/main/java/main/UI/menu/OptionsMenu.java | 24 +++++- src/main/java/main/UI/menu/UpdateMenu.java | 2 +- src/main/java/main/UI/menu/UserPageMenu.java | 77 +------------------ src/main/java/main/utils/UpdateManager.java | 2 +- src/main/java/main/utils/UpdateService.java | 4 +- src/main/java/main/utils/UtilsUI.java | 5 +- 7 files changed, 36 insertions(+), 83 deletions(-) diff --git a/src/main/java/main/UI/menu/GraphicalMenus.java b/src/main/java/main/UI/menu/GraphicalMenus.java index 502f342..91a409d 100644 --- a/src/main/java/main/UI/menu/GraphicalMenus.java +++ b/src/main/java/main/UI/menu/GraphicalMenus.java @@ -21,15 +21,18 @@ public class GraphicalMenus { private final OptionsMenu optionsMenu; @Getter private final UpdateMenu updateMenu; + @Getter + private final UserPageMenu userPageMenu; public NamedProcess process = new NamedProcess(); public GraphicalMenus(Stage primaryStage) { this.primaryStage = primaryStage; UpdateManager updateManager = new UpdateManager(); - this.optionsMenu = new OptionsMenu(this); this.homeScreen = new HomeScreen(this, updateManager); + this.optionsMenu = new OptionsMenu(this); this.updateMenu = new UpdateMenu(this, updateManager); + this.userPageMenu = new UserPageMenu(this); } } diff --git a/src/main/java/main/UI/menu/OptionsMenu.java b/src/main/java/main/UI/menu/OptionsMenu.java index 8217705..99852b3 100644 --- a/src/main/java/main/UI/menu/OptionsMenu.java +++ b/src/main/java/main/UI/menu/OptionsMenu.java @@ -38,7 +38,7 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { this.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty()); this.prefHeightProperty().bind(graphicalMenus.primaryStage.heightProperty()); - StackPane titlePane = UtilsUI.createTopBar(graphicalMenus, "Options"); + StackPane titlePane = UtilsUI.createTopBar(graphicalMenus.getHomeScreen(), graphicalMenus, "Options"); BorderPane.setAlignment(titlePane, Pos.CENTER); this.setTop(titlePane); @@ -46,7 +46,7 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { GridPane settings = new GridPane(); settings.setHgap(20); - settings.setVgap(graphicalMenus.primaryStage.getHeight() / 15); + settings.setVgap(graphicalMenus.primaryStage.getHeight() / 20); { Label useEyeTracker = new Label("Eye Tracker:"); @@ -85,6 +85,26 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { createGnomeControlCenterButton(graphicalMenus, settings, "Param\u00e8tres D'Affichage:", "images/notebook.png", "display", 3); createGnomeControlCenterButton(graphicalMenus, settings, "Param\u00e8tres de Batterie:", "images/battery.png", "power", 4); + { + + Label teamviewerLabel = new Label("Informations de l'utilisateur:"); + teamviewerLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em ; -fx-text-fill: #cd2653"); + + Button teamViewerButton = createTopBarButton( + "Ouvrir>", + "images/user.png", + (e) -> { + StageUtils.killRunningProcess(graphicalMenus); + graphicalMenus.getConfiguration().scene.setRoot(graphicalMenus.getUserPageMenu()); + } + ); + + teamViewerButton.setTextFill(Color.web("#faeaed")); + + settings.add(teamviewerLabel, 0, 6); + settings.add(teamViewerButton, 1, 6); + } + { Label teamviewerLabel = new Label("Lancer TeamViewer:"); diff --git a/src/main/java/main/UI/menu/UpdateMenu.java b/src/main/java/main/UI/menu/UpdateMenu.java index d22355a..178b75b 100644 --- a/src/main/java/main/UI/menu/UpdateMenu.java +++ b/src/main/java/main/UI/menu/UpdateMenu.java @@ -49,7 +49,7 @@ public UpdateMenu(GraphicalMenus graphicalMenus, UpdateManager updateManager) { this.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty()); this.prefHeightProperty().bind(graphicalMenus.primaryStage.heightProperty()); - this.setTop(UtilsUI.createTopBar(graphicalMenus, "Mises \u00e0 jour")); + this.setTop(UtilsUI.createTopBar(graphicalMenus.getHomeScreen(), graphicalMenus, "Mises \u00e0 jour")); VBox menu = new VBox(); diff --git a/src/main/java/main/UI/menu/UserPageMenu.java b/src/main/java/main/UI/menu/UserPageMenu.java index 95366a8..dd4fd41 100644 --- a/src/main/java/main/UI/menu/UserPageMenu.java +++ b/src/main/java/main/UI/menu/UserPageMenu.java @@ -17,89 +17,18 @@ import javafx.scene.text.TextAlignment; import main.Configuration; import main.UI.DoubleClickedButton; +import main.utils.UtilsUI; public class UserPageMenu extends BorderPane { public UserPageMenu(GraphicalMenus graphicalMenus) { super(); - Rectangle r = new Rectangle(); - r.widthProperty().bind(graphicalMenus.primaryStage.widthProperty()); - r.heightProperty().bind(graphicalMenus.primaryStage.heightProperty()); - Stop[] stops = new Stop[]{new Stop(0, Color.web("#faeaed")), new Stop(1, Color.web("#cd2653"))}; - LinearGradient lg1 = new LinearGradient(0, 1, 1.5, 0, true, CycleMethod.NO_CYCLE, stops); - r.setFill(lg1); - - this.getChildren().add(r); + this.getChildren().add(UtilsUI.createBackground(graphicalMenus)); this.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty()); this.prefHeightProperty().bind(graphicalMenus.primaryStage.heightProperty()); - StackPane titlePane = new StackPane(); - Rectangle backgroundForTitle = new Rectangle(0, 0, 600, 50); - backgroundForTitle.widthProperty().bind(graphicalMenus.primaryStage.widthProperty()); - backgroundForTitle.setFill(Color.web("#cd2653")); - - Label title = new Label("Options"); - title.setFont(new Font(30)); - title.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica"); - title.setTextFill(Color.web("#faeaed")); - - DoubleClickedButton back = new DoubleClickedButton("Retour"); - back.setPrefHeight(50); - back.setMaxHeight(50); - back.setStyle( - "-fx-border-color: transparent; " + - "-fx-border-width: 0; " + - "-fx-background-radius: 0; " + - "-fx-background-color: transparent; " + - "-fx-font-weight: bold; " + - "-fx-font-family: Helvetica; " + - "-fx-text-fill: #faeaed" - ); - ImageView graphic = new ImageView("images/back.png"); - graphic.setPreserveRatio(true); - graphic.setFitHeight(30); - back.setGraphic(graphic); - - back.assignHandler((e) -> graphicalMenus.getConfiguration().scene.setRoot(graphicalMenus.getHomeScreen())); - - HBox titleBox = new HBox(back, title); - title.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty().subtract(back.widthProperty().multiply(2))); - titleBox.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty()); - title.setTextAlignment(TextAlignment.CENTER); - title.setAlignment(Pos.CENTER); - titlePane.getChildren().addAll(backgroundForTitle, titleBox); - - BorderPane.setAlignment(titlePane, Pos.CENTER); - this.setTop(titlePane); - - - GridPane settings = new GridPane(); - settings.setHgap(20); - - { - Label useEyeTracker = new Label("Desactiver l'eye Tracker:"); - - useEyeTracker.setFont(new Font(20)); - useEyeTracker.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica"); - useEyeTracker.setTextFill(Color.web("#cd2653")); - - CheckBox useEyeTrackerCheckBox = new CheckBox(); - useEyeTrackerCheckBox.selectedProperty().addListener((obj, newVal, oldVal) -> { - if (newVal) { - graphicalMenus.getConfiguration().setMode(Configuration.GAZE_INTERACTION); - } else { - graphicalMenus.getConfiguration().setMode(Configuration.MOUSE_INTERACTION); - } - }); - - settings.add(useEyeTracker, 0, 0); - settings.add(useEyeTrackerCheckBox, 1, 0); - } - - settings.setAlignment(Pos.CENTER); - BorderPane.setAlignment(settings, Pos.CENTER); - this.setCenter(settings); + this.setTop(UtilsUI.createTopBar(graphicalMenus.getOptionsMenu(), graphicalMenus, "Informations de l'utilisateur")); } } diff --git a/src/main/java/main/utils/UpdateManager.java b/src/main/java/main/utils/UpdateManager.java index 4130e22..3fd2c79 100644 --- a/src/main/java/main/utils/UpdateManager.java +++ b/src/main/java/main/utils/UpdateManager.java @@ -44,7 +44,7 @@ public UpdateManager() { public void checkUpdates() { for (UpdateService updateService : updateServices) { - updateService.checkUpdate(); + updateService.checkUpdate(false); updateService.checkExist(); } } diff --git a/src/main/java/main/utils/UpdateService.java b/src/main/java/main/utils/UpdateService.java index b42273f..6844e27 100644 --- a/src/main/java/main/utils/UpdateService.java +++ b/src/main/java/main/utils/UpdateService.java @@ -42,8 +42,8 @@ public UpdateService(String name, String updateURL) { this.existProperty = new SimpleBooleanProperty(false); } - public void checkUpdate() { - if (!updateURL.equals("")) { + public void checkUpdate(boolean testBool) { + if (!updateURL.equals("") && testBool) { try { if (name.equals("GazePlay")) { JSONObject softwareJson = JsonReader.readJsonFromUrl(updateURL); diff --git a/src/main/java/main/utils/UtilsUI.java b/src/main/java/main/utils/UtilsUI.java index d47e403..36fb564 100644 --- a/src/main/java/main/utils/UtilsUI.java +++ b/src/main/java/main/utils/UtilsUI.java @@ -2,6 +2,7 @@ import javafx.event.EventHandler; import javafx.geometry.Pos; +import javafx.scene.Parent; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.effect.DropShadow; @@ -61,14 +62,14 @@ public static ImageView getDownloadImageView(ProgressButton processButton) { return downnloadImageView; } - public static StackPane createTopBar(GraphicalMenus graphicalMenus, String label) { + public static StackPane createTopBar(Parent parent, GraphicalMenus graphicalMenus, String label) { StackPane titlePane = new StackPane(); Rectangle backgroundForTitle = new Rectangle(0, 0, graphicalMenus.primaryStage.getWidth(), graphicalMenus.primaryStage.getHeight() / 10); backgroundForTitle.heightProperty().bind(graphicalMenus.primaryStage.heightProperty().divide(10)); backgroundForTitle.widthProperty().bind(graphicalMenus.primaryStage.widthProperty()); backgroundForTitle.setFill(Color.web("#cd2653")); - Button back = UtilsUI.getDoubleClickedButton("Retour", "images/back.png", (e) -> graphicalMenus.getConfiguration().scene.setRoot(graphicalMenus.getHomeScreen()), graphicalMenus.primaryStage); + Button back = UtilsUI.getDoubleClickedButton("Retour", "images/back.png", (e) -> graphicalMenus.getConfiguration().scene.setRoot(parent), graphicalMenus.primaryStage); back.prefHeightProperty().bind(backgroundForTitle.heightProperty()); Label title = new Label(label); From 81bd3a0041d99826844a06df16ce068b7e8b31dc Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Wed, 3 Nov 2021 10:35:21 +0100 Subject: [PATCH 09/20] add possibiliy to change password --- scripts/changePassword.sh | 2 + src/main/java/main/UI/menu/OptionsMenu.java | 52 ++---------------- src/main/java/main/UI/menu/UserPageMenu.java | 55 ++++++++++++++----- src/main/java/main/utils/UtilsUI.java | 24 ++++++++ src/resources/images/user.png | Bin 0 -> 19206 bytes src/resources/images/user_white.png | Bin 0 -> 4917 bytes src/resources/images/wi-fi_white.png | Bin 5920 -> 6914 bytes 7 files changed, 74 insertions(+), 59 deletions(-) create mode 100644 scripts/changePassword.sh create mode 100644 src/resources/images/user.png create mode 100644 src/resources/images/user_white.png diff --git a/scripts/changePassword.sh b/scripts/changePassword.sh new file mode 100644 index 0000000..d3f8297 --- /dev/null +++ b/scripts/changePassword.sh @@ -0,0 +1,2 @@ +#!/bin/bash +echo -e $(zenity --forms --title="Changer de mot de passe" --text="Mot de passe pour $USER" --separator="\n" --add-password="Ancien mot de passe" --add-password="Nouveau mot de passe" --add-password="Confirmez le mot de passe") | passwd diff --git a/src/main/java/main/UI/menu/OptionsMenu.java b/src/main/java/main/UI/menu/OptionsMenu.java index 99852b3..013ecde 100644 --- a/src/main/java/main/UI/menu/OptionsMenu.java +++ b/src/main/java/main/UI/menu/OptionsMenu.java @@ -8,12 +8,7 @@ import javafx.scene.image.ImageView; import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; -import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; -import javafx.scene.paint.CycleMethod; -import javafx.scene.paint.LinearGradient; -import javafx.scene.paint.Stop; -import javafx.scene.shape.Rectangle; import main.Configuration; import main.UI.DoubleClickedButton; import main.process.GnomeControlCenterNamedProcessCreator; @@ -26,23 +21,12 @@ public class OptionsMenu extends BorderPane { public OptionsMenu(GraphicalMenus graphicalMenus) { super(); - Rectangle r = new Rectangle(); - r.widthProperty().bind(graphicalMenus.primaryStage.widthProperty()); - r.heightProperty().bind(graphicalMenus.primaryStage.heightProperty()); - Stop[] stops = new Stop[]{new Stop(0, Color.web("#faeaed")), new Stop(1, Color.web("#cd2653"))}; - LinearGradient lg1 = new LinearGradient(0, 1, 1.5, 0, true, CycleMethod.NO_CYCLE, stops); - r.setFill(lg1); - - this.getChildren().add(r); + this.getChildren().add(UtilsUI.createBackground(graphicalMenus)); this.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty()); this.prefHeightProperty().bind(graphicalMenus.primaryStage.heightProperty()); - StackPane titlePane = UtilsUI.createTopBar(graphicalMenus.getHomeScreen(), graphicalMenus, "Options"); - - BorderPane.setAlignment(titlePane, Pos.CENTER); - this.setTop(titlePane); - + this.setTop(UtilsUI.createTopBar(graphicalMenus.getHomeScreen(), graphicalMenus, "Options")); GridPane settings = new GridPane(); settings.setHgap(20); @@ -90,9 +74,9 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { Label teamviewerLabel = new Label("Informations de l'utilisateur:"); teamviewerLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em ; -fx-text-fill: #cd2653"); - Button teamViewerButton = createTopBarButton( + Button teamViewerButton = UtilsUI.createButton( "Ouvrir>", - "images/user.png", + "images/user_white.png", (e) -> { StageUtils.killRunningProcess(graphicalMenus); graphicalMenus.getConfiguration().scene.setRoot(graphicalMenus.getUserPageMenu()); @@ -110,7 +94,7 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { Label teamviewerLabel = new Label("Lancer TeamViewer:"); teamviewerLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em ; -fx-text-fill: #cd2653"); - Button teamViewerButton = createTopBarButton( + Button teamViewerButton = UtilsUI.createButton( "Ouvrir>", "images/teamviewer.png", (e) -> { @@ -136,7 +120,7 @@ void createGnomeControlCenterButton(GraphicalMenus graphicalMenus, GridPane sett Label displayedLabel = new Label(label); displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #cd2653; -fx-font-size: 3em"); - Button button = createTopBarButton( + Button button = UtilsUI.createButton( "Ouvrir>", imageName, (e) -> { @@ -153,28 +137,4 @@ void createGnomeControlCenterButton(GraphicalMenus graphicalMenus, GridPane sett settings.add(button, 1, row); } - Button createTopBarButton(String text, String imagePath, EventHandler eventhandler) { - DoubleClickedButton optionButton = new DoubleClickedButton(text); - optionButton.setPrefHeight(50); - optionButton.setMaxHeight(50); - String style = "-fx-border-color: transparent; -fx-border-width: 0; -fx-background-radius: 0; -fx-background-color: transparent; " + - "-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #faeaed; -fx-font-size: 2.5em; "; - optionButton.setStyle(style); - optionButton.hoverProperty().addListener((obs, oldval, newval) -> { - if (newval) { - optionButton.setStyle(style + "-fx-cursor: hand; -fx-underline: true"); - } else { - optionButton.setStyle(style); - } - }); - ImageView graphic = new ImageView(imagePath); - graphic.setPreserveRatio(true); - graphic.setFitHeight(30); - optionButton.setGraphic(graphic); - - optionButton.assignHandler(eventhandler); - return optionButton; - } - - } diff --git a/src/main/java/main/UI/menu/UserPageMenu.java b/src/main/java/main/UI/menu/UserPageMenu.java index dd4fd41..d0f630c 100644 --- a/src/main/java/main/UI/menu/UserPageMenu.java +++ b/src/main/java/main/UI/menu/UserPageMenu.java @@ -1,24 +1,16 @@ package main.UI.menu; import javafx.geometry.Pos; -import javafx.scene.control.CheckBox; -import javafx.scene.control.Label; -import javafx.scene.image.ImageView; +import javafx.scene.control.*; import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; -import javafx.scene.paint.CycleMethod; -import javafx.scene.paint.LinearGradient; -import javafx.scene.paint.Stop; -import javafx.scene.shape.Rectangle; -import javafx.scene.text.Font; -import javafx.scene.text.TextAlignment; -import main.Configuration; -import main.UI.DoubleClickedButton; +import lombok.extern.slf4j.Slf4j; import main.utils.UtilsUI; +import java.io.*; + +@Slf4j public class UserPageMenu extends BorderPane { public UserPageMenu(GraphicalMenus graphicalMenus) { @@ -30,5 +22,42 @@ public UserPageMenu(GraphicalMenus graphicalMenus) { this.prefHeightProperty().bind(graphicalMenus.primaryStage.heightProperty()); this.setTop(UtilsUI.createTopBar(graphicalMenus.getOptionsMenu(), graphicalMenus, "Informations de l'utilisateur")); + + GridPane settings = new GridPane(); + settings.setHgap(20); + settings.setVgap(graphicalMenus.primaryStage.getHeight() / 20); + + { + Label displayedLabel = new Label("Mot de Passe"); + displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #cd2653; -fx-font-size: 3em"); + + Button button = UtilsUI.createButton( + "Changer>", + "images/user_white.png", + (e) -> { + try { + changePassword(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + ); + + button.setTextFill(Color.web("#faeaed")); + + settings.add(displayedLabel, 0, 0); + settings.add(button, 1, 0); + } + + settings.setAlignment(Pos.CENTER); + BorderPane.setAlignment(settings, Pos.CENTER); + this.setCenter(settings); } + + void changePassword() throws IOException { + ProcessBuilder pb = new ProcessBuilder("sh", "./scripts/changePassword.sh"); + pb.redirectErrorStream(true); + pb.start(); + } + } diff --git a/src/main/java/main/utils/UtilsUI.java b/src/main/java/main/utils/UtilsUI.java index 36fb564..b1d957d 100644 --- a/src/main/java/main/utils/UtilsUI.java +++ b/src/main/java/main/utils/UtilsUI.java @@ -110,4 +110,28 @@ public static Rectangle createBackground(GraphicalMenus graphicalMenus) { r.setFill(lg1); return r; } + + + public static Button createButton(String text, String imagePath, EventHandler eventhandler) { + DoubleClickedButton optionButton = new DoubleClickedButton(text); + optionButton.setPrefHeight(50); + optionButton.setMaxHeight(50); + String style = "-fx-border-color: transparent; -fx-border-width: 0; -fx-background-radius: 0; -fx-background-color: transparent; " + + "-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #faeaed; -fx-font-size: 2.5em; "; + optionButton.setStyle(style); + optionButton.hoverProperty().addListener((obs, oldval, newval) -> { + if (newval) { + optionButton.setStyle(style + "-fx-cursor: hand; -fx-underline: true"); + } else { + optionButton.setStyle(style); + } + }); + ImageView graphic = new ImageView(imagePath); + graphic.setPreserveRatio(true); + graphic.setFitHeight(30); + optionButton.setGraphic(graphic); + + optionButton.assignHandler(eventhandler); + return optionButton; + } } diff --git a/src/resources/images/user.png b/src/resources/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..e50d9becb8b827a63124a6c07151d6e3e1a019cb GIT binary patch literal 19206 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 bFWCrF3q+r^fs40+U4@Gdj}5EeE|&fe#j;;B literal 0 HcmV?d00001 diff --git a/src/resources/images/user_white.png b/src/resources/images/user_white.png new file mode 100644 index 0000000000000000000000000000000000000000..616ca47e1efe7191b6b02ae255def321d498ede1 GIT binary patch literal 4917 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 a){f429?9N%z0OWHOL1GbiF3zE5dB}eMooAC literal 5920 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 Q`^|`ho%5gfZM@I@57Gz>)c^nh From b5cf7d39ca892ff95f678b90d11b4094aaaf2cb8 Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Thu, 4 Nov 2021 16:22:19 +0100 Subject: [PATCH 10/20] add small fixes --- src/main/java/main/UI/menu/UpdateMenu.java | 4 ++-- .../java/main/process/TobiiManagerNamedProcessCreator.java | 2 +- src/main/java/main/utils/UpdateManager.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/main/UI/menu/UpdateMenu.java b/src/main/java/main/UI/menu/UpdateMenu.java index 178b75b..9763fef 100644 --- a/src/main/java/main/UI/menu/UpdateMenu.java +++ b/src/main/java/main/UI/menu/UpdateMenu.java @@ -167,7 +167,7 @@ void closeProcessStream(Process p) { void startUpdateSystem() { if (updateManager.updateServices[UpdateService.SYSTEME].getUpdateProperty().get()) { try { - ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir /s /b \"C:/Users/Sebastien\" "); + ProcessBuilder pb = new ProcessBuilder(""); pb.redirectErrorStream(true); Process p = pb.start(); p.onExit().thenRun(() -> { @@ -190,7 +190,7 @@ void startUpdateSystem() { void startUpdateOnlySystem() { if (updateManager.updateServices[UpdateService.SYSTEME].getUpdateProperty().get()) { try { - ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir /s /b \"C:/Users/Sebastien\" "); + ProcessBuilder pb = new ProcessBuilder(""); pb.redirectErrorStream(true); Process p = pb.start(); p.onExit().thenRun(() -> { diff --git a/src/main/java/main/process/TobiiManagerNamedProcessCreator.java b/src/main/java/main/process/TobiiManagerNamedProcessCreator.java index feb8a7b..287da3f 100644 --- a/src/main/java/main/process/TobiiManagerNamedProcessCreator.java +++ b/src/main/java/main/process/TobiiManagerNamedProcessCreator.java @@ -21,7 +21,7 @@ public void setUpProcessBuilder() { "/max ", System.getProperty("user.home") + "/AppData/Local/Programs/TobiiProEyeTrackerManager/TobiiProEyeTrackerManager.exe"); } else { - processBuilder = new ProcessBuilder("tobiiproeyetrackermanager"); + processBuilder = new ProcessBuilder("tobii_config"); } } diff --git a/src/main/java/main/utils/UpdateManager.java b/src/main/java/main/utils/UpdateManager.java index 3fd2c79..773ab94 100644 --- a/src/main/java/main/utils/UpdateManager.java +++ b/src/main/java/main/utils/UpdateManager.java @@ -44,7 +44,7 @@ public UpdateManager() { public void checkUpdates() { for (UpdateService updateService : updateServices) { - updateService.checkUpdate(false); + updateService.checkUpdate(true); updateService.checkExist(); } } From de62b91f7157f4acf6e667b3eed971127b3b5d82 Mon Sep 17 00:00:00 2001 From: Riou Sebastien Date: Fri, 5 Nov 2021 17:06:03 +0100 Subject: [PATCH 11/20] Update UpdateManager.java --- src/main/java/main/utils/UpdateManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/main/utils/UpdateManager.java b/src/main/java/main/utils/UpdateManager.java index 3fd2c79..773ab94 100644 --- a/src/main/java/main/utils/UpdateManager.java +++ b/src/main/java/main/utils/UpdateManager.java @@ -44,7 +44,7 @@ public UpdateManager() { public void checkUpdates() { for (UpdateService updateService : updateServices) { - updateService.checkUpdate(false); + updateService.checkUpdate(true); updateService.checkExist(); } } From 764ba997c15aa743c5161088a7be3dfb45353c29 Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Thu, 18 Nov 2021 11:12:39 +0100 Subject: [PATCH 12/20] add contact system with hidden code --- build.gradle | 2 + src/main/java/main/Main.java | 4 +- src/main/java/main/UI/menu/ContactUs.java | 118 ++++++++++++++ .../java/main/UI/menu/GraphicalMenus.java | 3 + .../CloseGoogleChromeProcessCreator.java | 2 +- src/main/java/main/utils/UtilsMail.java | 146 ++++++++++++++++++ 6 files changed, 273 insertions(+), 2 deletions(-) create mode 100644 src/main/java/main/UI/menu/ContactUs.java create mode 100644 src/main/java/main/utils/UtilsMail.java diff --git a/build.gradle b/build.gradle index 08eeec4..02ea9db 100644 --- a/build.gradle +++ b/build.gradle @@ -82,6 +82,8 @@ dependencies { compile 'ws.schild:jave-core:2.5.0' runtime 'org.slf4j:jcl-over-slf4j:1.7.25' runtime 'org.slf4j:log4j-over-slf4j:1.7.25' + compile group: 'javax.mail', name: 'mail', version: '1.4.5' + compile group: 'javax.activation', name: 'activation', version: '1.1.1' } diff --git a/src/main/java/main/Main.java b/src/main/java/main/Main.java index 7517e07..f28f3c8 100644 --- a/src/main/java/main/Main.java +++ b/src/main/java/main/Main.java @@ -12,6 +12,7 @@ import javafx.stage.Screen; import javafx.stage.Stage; import javafx.stage.StageStyle; +import main.UI.menu.ContactUs; import main.UI.menu.GraphicalMenus; import main.utils.StageUtils; import main.utils.UtilsOS; @@ -34,7 +35,8 @@ public void start(Stage primaryStage) { Scene scene = new Scene(new Pane(new Rectangle(0,0,Screen.getPrimary().getBounds().getWidth(),Screen.getPrimary().getBounds().getHeight())), Color.TRANSPARENT); GraphicalMenus graphicalMenus = new GraphicalMenus(primaryStage); - scene.setRoot(graphicalMenus.getHomeScreen()); + //scene.setRoot(graphicalMenus.getHomeScreen()); + scene.setRoot(graphicalMenus.getContactUs()); graphicalMenus.getConfiguration().setScene(scene); primaryStage.setScene(scene); diff --git a/src/main/java/main/UI/menu/ContactUs.java b/src/main/java/main/UI/menu/ContactUs.java new file mode 100644 index 0000000..879397d --- /dev/null +++ b/src/main/java/main/UI/menu/ContactUs.java @@ -0,0 +1,118 @@ +package main.UI.menu; + +import javafx.geometry.HPos; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.GridPane; +import lombok.extern.slf4j.Slf4j; +import main.utils.UtilsMail; +import main.utils.UtilsUI; +@Slf4j +public class ContactUs extends BorderPane { + + + Label errorLabel = new Label(); + + public ContactUs(GraphicalMenus graphicalMenus){ + + this.getChildren().add(UtilsUI.createBackground(graphicalMenus)); + + this.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty()); + this.prefHeightProperty().bind(graphicalMenus.primaryStage.heightProperty()); + + this.setTop(UtilsUI.createTopBar(graphicalMenus.getOptionsMenu(), graphicalMenus, "Contact")); + + GridPane settings = new GridPane(); + settings.setHgap(20); + settings.setVgap(graphicalMenus.primaryStage.getHeight() / 20); + settings.prefWidthProperty().bind(this.prefWidthProperty()); + + + Label firstNameLabel = new Label("Nom*:"); + TextField firstName = new TextField(); + firstName.setPromptText("Dupont"); + firstName.minWidthProperty().bind(settings.prefWidthProperty().divide(8)); + firstName.prefWidthProperty().bind(settings.prefWidthProperty().divide(8)); + firstName.maxWidthProperty().bind(settings.prefWidthProperty().divide(8)); + + + Label lastNameLabel = new Label("Pr\u00e9nom*:"); + TextField lastName = new TextField(); + lastName.setPromptText("Martin"); + lastName.minWidthProperty().bind(settings.prefWidthProperty().divide(8)); + lastName.prefWidthProperty().bind(settings.prefWidthProperty().divide(8)); + lastName.maxWidthProperty().bind(settings.prefWidthProperty().divide(8)); + + + Label mailLabel = new Label("E-mail*:"); + TextField email = new TextField(); + email.setPromptText("Martin.Dupont@email.fr"); + email.minWidthProperty().bind(settings.prefWidthProperty().divide(4)); + email.prefWidthProperty().bind(settings.prefWidthProperty().divide(4)); + email.maxWidthProperty().bind(settings.prefWidthProperty().divide(4)); + + + Label objectLabel = new Label("Objet*:"); + TextField object = new TextField(); + object.setPromptText("Objet du message"); + object.minWidthProperty().bind(settings.prefWidthProperty().divide(4)); + object.prefWidthProperty().bind(settings.prefWidthProperty().divide(4)); + object.maxWidthProperty().bind(settings.prefWidthProperty().divide(4)); + + Label messageLabel = new Label("Message*:"); + TextArea message = new TextArea(); + message.setPromptText("Un probl\u00e8me, Une id\u00e9e, vous voulez travailler avec nous ? Dites-nous tout ! "); + message.setWrapText(true); + message.minWidthProperty().bind(settings.prefWidthProperty().divide(3)); + message.prefWidthProperty().bind(settings.prefWidthProperty().divide(3)); + message.maxWidthProperty().bind(settings.prefWidthProperty().divide(3)); + + message.minHeightProperty().bind(this.prefHeightProperty().divide(3)); + message.prefHeightProperty().bind(this.prefHeightProperty().divide(3)); + message.maxHeightProperty().bind(this.prefHeightProperty().divide(3)); + + Button ok = new Button("Envoyer"); + ok.setOnAction((event)->{ send(errorLabel,firstName.getText(), lastName.getText(), email.getText(), object.getText(),message.getText());}); + + GridPane.setHalignment(firstName, HPos.CENTER); + GridPane.setHalignment(lastName, HPos.CENTER); + GridPane.setHalignment(email, HPos.CENTER); + + GridPane.setHalignment(object, HPos.CENTER); + GridPane.setHalignment(message, HPos.CENTER); + GridPane.setHalignment(errorLabel, HPos.CENTER); + GridPane.setHalignment(ok, HPos.CENTER); + + settings.add(firstNameLabel,0,0); + settings.add(firstName,1,0); + settings.add(lastNameLabel,2,0); + settings.add(lastName,3,0); + settings.add(mailLabel,0,1); + settings.add(email,1,1,3,1); + settings.add(objectLabel,0,2); + settings.add(object,1,2,3,1); + settings.add(messageLabel,0,3); + settings.add(message,0,4,4,1); + settings.add(errorLabel,0,5,4,1); + settings.add(ok,0,6,4,1); + + settings.setAlignment(Pos.CENTER); + this.setCenter(settings); + } + + public static void send(Label errorLabel, String firstname, String lastname, String email, String object,String text) { + //from, password, to, subject, message + UtilsMail.send(errorLabel, + firstname, + lastname, + email, + object, + text + ); + } + +} diff --git a/src/main/java/main/UI/menu/GraphicalMenus.java b/src/main/java/main/UI/menu/GraphicalMenus.java index 91a409d..2643366 100644 --- a/src/main/java/main/UI/menu/GraphicalMenus.java +++ b/src/main/java/main/UI/menu/GraphicalMenus.java @@ -23,6 +23,8 @@ public class GraphicalMenus { private final UpdateMenu updateMenu; @Getter private final UserPageMenu userPageMenu; + @Getter + private final ContactUs contactUs; public NamedProcess process = new NamedProcess(); @@ -33,6 +35,7 @@ public GraphicalMenus(Stage primaryStage) { this.optionsMenu = new OptionsMenu(this); this.updateMenu = new UpdateMenu(this, updateManager); this.userPageMenu = new UserPageMenu(this); + this.contactUs = new ContactUs(this); } } diff --git a/src/main/java/main/process/CloseGoogleChromeProcessCreator.java b/src/main/java/main/process/CloseGoogleChromeProcessCreator.java index f4ece8f..de7ba5c 100644 --- a/src/main/java/main/process/CloseGoogleChromeProcessCreator.java +++ b/src/main/java/main/process/CloseGoogleChromeProcessCreator.java @@ -21,7 +21,7 @@ public void setUpProcessBuilder() { Process waitForCloseRequest() { try { - File fileFR = new File("~/Téléchargements/close161918.txt"); + File fileFR = new File("~/Téléchargements/close161918.txt"); File fileEN = new File("~/Downloads/close161918.txt"); if(fileFR.exists()) { fileFR.delete(); diff --git a/src/main/java/main/utils/UtilsMail.java b/src/main/java/main/utils/UtilsMail.java new file mode 100644 index 0000000..905b3be --- /dev/null +++ b/src/main/java/main/utils/UtilsMail.java @@ -0,0 +1,146 @@ +package main.utils; + +import javafx.scene.control.Label; +import lombok.extern.slf4j.Slf4j; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.mail.*; +import javax.mail.internet.AddressException; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.nio.ByteBuffer; +import java.util.Base64; +import java.util.LinkedList; +import java.util.Properties; + +@Slf4j +public class UtilsMail { + static Cipher cipher; + private static int[] byteArray = {-95, -37, 81, 40, 40, -72, -45, 60, -73, -20, -41, 17, 126, 97, 109, 24}; + + public static String letMeSendIt(){ + try { + KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); + keyGenerator.init(128); // block size is 128bits + LinkedList byteList = new LinkedList<>(); + byte[] realBytesArray = new byte[byteArray.length]; + for (int i = 0; i < byteArray.length; i++) { + realBytesArray[i] = ByteBuffer.allocate(4).putInt(byteArray[i]).array()[3]; + } + SecretKey secretKey = new SecretKey() { + @Override + public String getAlgorithm() { + return "AES"; + } + + @Override + public String getFormat() { + return "RAW"; + } + + @Override + public byte[] getEncoded() { + return realBytesArray; + } + }; + cipher = Cipher.getInstance("AES"); + + return decrypt("ZIIwHSwoJojSR0RMj9sAPQ==", secretKey); + }catch (Exception e){ + return ""; + } + } + + public static void send(Label errorLabel,String firstname, String lastname, String email, String object, String text) { + if(firstname == null || firstname.isEmpty() || lastname == null || lastname.isEmpty()) { + errorLabel.setText("Entrez votre nom et pr\u00e8nom"); + }else if( email == null || email.isEmpty()) { + errorLabel.setText("Entrez une addresse email pour que nous puissions vous répondre"); + }else if( object == null || object.isEmpty() || text == null || text.isEmpty()) { + errorLabel.setText("Renseignez l'objet de votre demande et donnez nous les détails dans votre message"); + }else{ + try { + sendClient(errorLabel, firstname, lastname, email, object, text); + sendSupport(firstname, lastname, email, object, text); + errorLabel.setText("Message envoyé !"); + } catch (AddressException e) { + errorLabel.setText("Adresse Email invalide"); + } + } + } + + public static void sendSupport(String firstname, String lastname, String email, String object, String text) { + //Propriétés + Properties p = new Properties(); + p.put("mail.smtp.host", "smtp.gmail.com"); + p.put("mail.smtp.socketFactory.port", "465"); + p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + p.put("mail.smtp.auth", "true"); + p.put("mail.smtp.port", "465"); + //Session + Session s = Session.getDefaultInstance(p, + new javax.mail.Authenticator() { + protected PasswordAuthentication getPasswordAuthentication() { + return passWordAuthentification(); + } + }); + //composer le message + try { + MimeMessage m = new MimeMessage(s); + m.addRecipient(Message.RecipientType.TO, new InternetAddress("contact.interaactionbox@gmail.com")); + m.setSubject("[" + firstname + " " + lastname + "] objet: " + object); + m.setText(lastname + " " + firstname + + " vous a contact\u00e9 avec le message suivant:\n\n\"" + text + "\"\n\n Nom: " + firstname + "\n Pr\u00e9nom: " + lastname + "\n Adresse mail: " + email); + //envoyer le message + Transport.send(m); + } catch (MessagingException e) { + e.printStackTrace(); + } + } + + public static void sendClient(Label errorLabel,String firstname, String lastname, String email, String object, String text) throws AddressException { + //Propriétés + Properties p = new Properties(); + p.put("mail.smtp.host", "smtp.gmail.com"); + p.put("mail.smtp.socketFactory.port", "465"); + p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + p.put("mail.smtp.auth", "true"); + p.put("mail.smtp.port", "465"); + //Session + Session s = Session.getDefaultInstance(p, + new javax.mail.Authenticator() { + protected PasswordAuthentication getPasswordAuthentication() { + return passWordAuthentification(); + } + }); + //composer le message + MimeMessage m = new MimeMessage(s); + InternetAddress internetAddress = new InternetAddress(email); + try { + m.addRecipient(Message.RecipientType.TO, internetAddress); + m.setSubject("[Support InterAACtionBox] objet: " + object); + m.setText("Bonjour " + lastname + " " + firstname + + ",\nmerci d'avoir contact\u00e9 le support de l'InterAACtionBox.\nVotre message :\n\n\"" + text + "\"\n\na \u00e9t\u00e9 transmis \u00e0 notre \u00e9quipe qui vous r\u00e9pondra prochainement \u00e0 l'adresse: " + email + "\n\n \u00C0 tr\u00e8s vite !"); + //envoyer le message + + Transport.send(m); + } catch (MessagingException e) { + errorLabel.setText("Erreur lors de l'envois du message..."); + } + } + + private static PasswordAuthentication passWordAuthentification() { + return new PasswordAuthentication("help.interaactionbox@gmail.com", letMeSendIt()); + } + + public static String decrypt(String encryptedText, SecretKey secretKey) + throws Exception { + Base64.Decoder decoder = Base64.getDecoder(); + byte[] encryptedTextByte = decoder.decode(encryptedText); + cipher.init(Cipher.DECRYPT_MODE, secretKey); + byte[] decryptedByte = cipher.doFinal(encryptedTextByte); + return new String(decryptedByte); + } +} From 08cfb225723f4e8384907c32f3fd22244334de3b Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Thu, 18 Nov 2021 11:33:36 +0100 Subject: [PATCH 13/20] add version label to bottom of the option and update menu --- src/main/java/main/Configuration.java | 2 ++ src/main/java/main/UI/menu/OptionsMenu.java | 2 ++ src/main/java/main/UI/menu/UpdateMenu.java | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/main/java/main/Configuration.java b/src/main/java/main/Configuration.java index 07879cd..3f5e7ba 100644 --- a/src/main/java/main/Configuration.java +++ b/src/main/java/main/Configuration.java @@ -11,6 +11,8 @@ public class Configuration { + public final static String VERSION = "InterAACtionBox-Interface 1.0.0 Dev v.2021.18.11"; + public final static int MOUSE_INTERACTION = 0; public final static int GAZE_INTERACTION = 1; @Setter diff --git a/src/main/java/main/UI/menu/OptionsMenu.java b/src/main/java/main/UI/menu/OptionsMenu.java index 8217705..71a6b94 100644 --- a/src/main/java/main/UI/menu/OptionsMenu.java +++ b/src/main/java/main/UI/menu/OptionsMenu.java @@ -110,6 +110,8 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { settings.setAlignment(Pos.CENTER); BorderPane.setAlignment(settings, Pos.CENTER); this.setCenter(settings); + + this.setBottom(new Label(Configuration.VERSION)); } void createGnomeControlCenterButton(GraphicalMenus graphicalMenus, GridPane settings, String label, String imageName, String panelToOpen, int row) { diff --git a/src/main/java/main/UI/menu/UpdateMenu.java b/src/main/java/main/UI/menu/UpdateMenu.java index d22355a..693f4c7 100644 --- a/src/main/java/main/UI/menu/UpdateMenu.java +++ b/src/main/java/main/UI/menu/UpdateMenu.java @@ -18,6 +18,7 @@ import javafx.scene.paint.Color; import javafx.util.Duration; import lombok.extern.slf4j.Slf4j; +import main.Configuration; import main.utils.UpdateManager; import main.utils.UpdateService; import main.utils.UtilsUI; @@ -113,6 +114,7 @@ public UpdateMenu(GraphicalMenus graphicalMenus, UpdateManager updateManager) { menu.getChildren().addAll(downloadEverythin, progressBars[0], settings); this.setCenter(menu); + this.setBottom(new Label(Configuration.VERSION)); } void startUpdateAll() { From 1295112b2114c0d5a7adf752391f873590b8ceab Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Fri, 19 Nov 2021 10:51:00 +0100 Subject: [PATCH 14/20] auto format and put codes out of the interface --- src/main/java/main/UI/menu/ContactUs.java | 196 +++++++++++----------- src/main/java/main/utils/UtilsMail.java | 118 +++++++------ 2 files changed, 163 insertions(+), 151 deletions(-) diff --git a/src/main/java/main/UI/menu/ContactUs.java b/src/main/java/main/UI/menu/ContactUs.java index 879397d..c1036a2 100644 --- a/src/main/java/main/UI/menu/ContactUs.java +++ b/src/main/java/main/UI/menu/ContactUs.java @@ -11,108 +11,110 @@ import lombok.extern.slf4j.Slf4j; import main.utils.UtilsMail; import main.utils.UtilsUI; + @Slf4j public class ContactUs extends BorderPane { Label errorLabel = new Label(); - public ContactUs(GraphicalMenus graphicalMenus){ - - this.getChildren().add(UtilsUI.createBackground(graphicalMenus)); - - this.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty()); - this.prefHeightProperty().bind(graphicalMenus.primaryStage.heightProperty()); - - this.setTop(UtilsUI.createTopBar(graphicalMenus.getOptionsMenu(), graphicalMenus, "Contact")); - - GridPane settings = new GridPane(); - settings.setHgap(20); - settings.setVgap(graphicalMenus.primaryStage.getHeight() / 20); - settings.prefWidthProperty().bind(this.prefWidthProperty()); - - - Label firstNameLabel = new Label("Nom*:"); - TextField firstName = new TextField(); - firstName.setPromptText("Dupont"); - firstName.minWidthProperty().bind(settings.prefWidthProperty().divide(8)); - firstName.prefWidthProperty().bind(settings.prefWidthProperty().divide(8)); - firstName.maxWidthProperty().bind(settings.prefWidthProperty().divide(8)); - - - Label lastNameLabel = new Label("Pr\u00e9nom*:"); - TextField lastName = new TextField(); - lastName.setPromptText("Martin"); - lastName.minWidthProperty().bind(settings.prefWidthProperty().divide(8)); - lastName.prefWidthProperty().bind(settings.prefWidthProperty().divide(8)); - lastName.maxWidthProperty().bind(settings.prefWidthProperty().divide(8)); - - - Label mailLabel = new Label("E-mail*:"); - TextField email = new TextField(); - email.setPromptText("Martin.Dupont@email.fr"); - email.minWidthProperty().bind(settings.prefWidthProperty().divide(4)); - email.prefWidthProperty().bind(settings.prefWidthProperty().divide(4)); - email.maxWidthProperty().bind(settings.prefWidthProperty().divide(4)); - - - Label objectLabel = new Label("Objet*:"); - TextField object = new TextField(); - object.setPromptText("Objet du message"); - object.minWidthProperty().bind(settings.prefWidthProperty().divide(4)); - object.prefWidthProperty().bind(settings.prefWidthProperty().divide(4)); - object.maxWidthProperty().bind(settings.prefWidthProperty().divide(4)); - - Label messageLabel = new Label("Message*:"); - TextArea message = new TextArea(); - message.setPromptText("Un probl\u00e8me, Une id\u00e9e, vous voulez travailler avec nous ? Dites-nous tout ! "); - message.setWrapText(true); - message.minWidthProperty().bind(settings.prefWidthProperty().divide(3)); - message.prefWidthProperty().bind(settings.prefWidthProperty().divide(3)); - message.maxWidthProperty().bind(settings.prefWidthProperty().divide(3)); - - message.minHeightProperty().bind(this.prefHeightProperty().divide(3)); - message.prefHeightProperty().bind(this.prefHeightProperty().divide(3)); - message.maxHeightProperty().bind(this.prefHeightProperty().divide(3)); - - Button ok = new Button("Envoyer"); - ok.setOnAction((event)->{ send(errorLabel,firstName.getText(), lastName.getText(), email.getText(), object.getText(),message.getText());}); - - GridPane.setHalignment(firstName, HPos.CENTER); - GridPane.setHalignment(lastName, HPos.CENTER); - GridPane.setHalignment(email, HPos.CENTER); - - GridPane.setHalignment(object, HPos.CENTER); - GridPane.setHalignment(message, HPos.CENTER); - GridPane.setHalignment(errorLabel, HPos.CENTER); - GridPane.setHalignment(ok, HPos.CENTER); - - settings.add(firstNameLabel,0,0); - settings.add(firstName,1,0); - settings.add(lastNameLabel,2,0); - settings.add(lastName,3,0); - settings.add(mailLabel,0,1); - settings.add(email,1,1,3,1); - settings.add(objectLabel,0,2); - settings.add(object,1,2,3,1); - settings.add(messageLabel,0,3); - settings.add(message,0,4,4,1); - settings.add(errorLabel,0,5,4,1); - settings.add(ok,0,6,4,1); - - settings.setAlignment(Pos.CENTER); - this.setCenter(settings); - } - - public static void send(Label errorLabel, String firstname, String lastname, String email, String object,String text) { - //from, password, to, subject, message - UtilsMail.send(errorLabel, - firstname, - lastname, - email, - object, - text - ); - } + public ContactUs(GraphicalMenus graphicalMenus) { + + this.getChildren().add(UtilsUI.createBackground(graphicalMenus)); + + this.prefWidthProperty().bind(graphicalMenus.primaryStage.widthProperty()); + this.prefHeightProperty().bind(graphicalMenus.primaryStage.heightProperty()); + + this.setTop(UtilsUI.createTopBar(graphicalMenus.getOptionsMenu(), graphicalMenus, "Contact")); + + GridPane settings = new GridPane(); + settings.setHgap(20); + settings.setVgap(graphicalMenus.primaryStage.getHeight() / 20); + settings.prefWidthProperty().bind(this.prefWidthProperty()); + + + Label firstNameLabel = new Label("Nom*:"); + TextField firstName = new TextField(); + firstName.setPromptText("Dupont"); + firstName.minWidthProperty().bind(settings.prefWidthProperty().divide(8)); + firstName.prefWidthProperty().bind(settings.prefWidthProperty().divide(8)); + firstName.maxWidthProperty().bind(settings.prefWidthProperty().divide(8)); + + + Label lastNameLabel = new Label("Pr\u00e9nom*:"); + TextField lastName = new TextField(); + lastName.setPromptText("Martin"); + lastName.minWidthProperty().bind(settings.prefWidthProperty().divide(8)); + lastName.prefWidthProperty().bind(settings.prefWidthProperty().divide(8)); + lastName.maxWidthProperty().bind(settings.prefWidthProperty().divide(8)); + + + Label mailLabel = new Label("E-mail*:"); + TextField email = new TextField(); + email.setPromptText("Martin.Dupont@email.fr"); + email.minWidthProperty().bind(settings.prefWidthProperty().divide(4)); + email.prefWidthProperty().bind(settings.prefWidthProperty().divide(4)); + email.maxWidthProperty().bind(settings.prefWidthProperty().divide(4)); + + + Label objectLabel = new Label("Objet*:"); + TextField object = new TextField(); + object.setPromptText("Objet du message"); + object.minWidthProperty().bind(settings.prefWidthProperty().divide(4)); + object.prefWidthProperty().bind(settings.prefWidthProperty().divide(4)); + object.maxWidthProperty().bind(settings.prefWidthProperty().divide(4)); + + Label messageLabel = new Label("Message*:"); + TextArea message = new TextArea(); + message.setPromptText("Un probl\u00e8me, Une id\u00e9e, vous voulez travailler avec nous ? Dites-nous tout ! "); + message.setWrapText(true); + message.minWidthProperty().bind(settings.prefWidthProperty().divide(3)); + message.prefWidthProperty().bind(settings.prefWidthProperty().divide(3)); + message.maxWidthProperty().bind(settings.prefWidthProperty().divide(3)); + + message.minHeightProperty().bind(this.prefHeightProperty().divide(3)); + message.prefHeightProperty().bind(this.prefHeightProperty().divide(3)); + message.maxHeightProperty().bind(this.prefHeightProperty().divide(3)); + + Button ok = new Button("Envoyer"); + ok.setOnAction((event) -> { + send(errorLabel, firstName.getText(), lastName.getText(), email.getText(), object.getText(), message.getText()); + }); + + GridPane.setHalignment(firstName, HPos.CENTER); + GridPane.setHalignment(lastName, HPos.CENTER); + GridPane.setHalignment(email, HPos.CENTER); + + GridPane.setHalignment(object, HPos.CENTER); + GridPane.setHalignment(message, HPos.CENTER); + GridPane.setHalignment(errorLabel, HPos.CENTER); + GridPane.setHalignment(ok, HPos.CENTER); + + settings.add(firstNameLabel, 0, 0); + settings.add(firstName, 1, 0); + settings.add(lastNameLabel, 2, 0); + settings.add(lastName, 3, 0); + settings.add(mailLabel, 0, 1); + settings.add(email, 1, 1, 3, 1); + settings.add(objectLabel, 0, 2); + settings.add(object, 1, 2, 3, 1); + settings.add(messageLabel, 0, 3); + settings.add(message, 0, 4, 4, 1); + settings.add(errorLabel, 0, 5, 4, 1); + settings.add(ok, 0, 6, 4, 1); + + settings.setAlignment(Pos.CENTER); + this.setCenter(settings); + } + + public static void send(Label errorLabel, String firstname, String lastname, String email, String object, String text) { + UtilsMail.send(errorLabel, + firstname, + lastname, + email, + object, + text + ); + } } diff --git a/src/main/java/main/utils/UtilsMail.java b/src/main/java/main/utils/UtilsMail.java index 905b3be..0039489 100644 --- a/src/main/java/main/utils/UtilsMail.java +++ b/src/main/java/main/utils/UtilsMail.java @@ -10,6 +10,8 @@ import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; +import java.io.BufferedReader; +import java.io.FileReader; import java.nio.ByteBuffer; import java.util.Base64; import java.util.LinkedList; @@ -17,61 +19,65 @@ @Slf4j public class UtilsMail { - static Cipher cipher; - private static int[] byteArray = {-95, -37, 81, 40, 40, -72, -45, 60, -73, -20, -41, 17, 126, 97, 109, 24}; + static Cipher cipher; - public static String letMeSendIt(){ - try { - KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); - keyGenerator.init(128); // block size is 128bits - LinkedList byteList = new LinkedList<>(); - byte[] realBytesArray = new byte[byteArray.length]; - for (int i = 0; i < byteArray.length; i++) { - realBytesArray[i] = ByteBuffer.allocate(4).putInt(byteArray[i]).array()[3]; + public static String letMeSendIt() { + try { + KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); + keyGenerator.init(128); // block size is 128bits + LinkedList byteList = new LinkedList<>(); + BufferedReader buffReader = new BufferedReader(new FileReader("C:/Users/Sebastien/.email/crypted_key.txt")); + String[] stringbyteArray = buffReader.readLine().split(","); + byte[] realBytesArray = new byte[stringbyteArray.length]; + for (int i = 0; i < stringbyteArray.length; i++) { + realBytesArray[i] = ByteBuffer.allocate(4).putInt(Integer.parseInt(stringbyteArray[i])).array()[3]; + } + SecretKey secretKey = new SecretKey() { + @Override + public String getAlgorithm() { + return "AES"; } - SecretKey secretKey = new SecretKey() { - @Override - public String getAlgorithm() { - return "AES"; - } - @Override - public String getFormat() { - return "RAW"; - } + @Override + public String getFormat() { + return "RAW"; + } - @Override - public byte[] getEncoded() { - return realBytesArray; - } - }; - cipher = Cipher.getInstance("AES"); + @Override + public byte[] getEncoded() { + return realBytesArray; + } + }; + cipher = Cipher.getInstance("AES"); - return decrypt("ZIIwHSwoJojSR0RMj9sAPQ==", secretKey); - }catch (Exception e){ - return ""; - } + BufferedReader buffReaderpass = new BufferedReader(new FileReader("C:/Users/Sebastien/.email/crypted_pass.txt")); + return decrypt(buffReaderpass.readLine(), secretKey); + } catch (Exception e) { + return ""; } + } - public static void send(Label errorLabel,String firstname, String lastname, String email, String object, String text) { - if(firstname == null || firstname.isEmpty() || lastname == null || lastname.isEmpty()) { - errorLabel.setText("Entrez votre nom et pr\u00e8nom"); - }else if( email == null || email.isEmpty()) { - errorLabel.setText("Entrez une addresse email pour que nous puissions vous répondre"); - }else if( object == null || object.isEmpty() || text == null || text.isEmpty()) { - errorLabel.setText("Renseignez l'objet de votre demande et donnez nous les détails dans votre message"); - }else{ - try { - sendClient(errorLabel, firstname, lastname, email, object, text); - sendSupport(firstname, lastname, email, object, text); - errorLabel.setText("Message envoyé !"); - } catch (AddressException e) { - errorLabel.setText("Adresse Email invalide"); - } + public static void send(Label errorLabel, String firstname, String lastname, String email, String object, String text) { + if (firstname == null || firstname.isEmpty() || lastname == null || lastname.isEmpty()) { + errorLabel.setText("Entrez votre nom et pr\u00e8nom"); + } else if (email == null || email.isEmpty()) { + errorLabel.setText("Entrez une addresse email pour que nous puissions vous répondre"); + } else if (object == null || object.isEmpty() || text == null || text.isEmpty()) { + errorLabel.setText("Renseignez l'objet de votre demande et donnez nous les détails dans votre message"); + } else { + try { + sendClient(errorLabel, firstname, lastname, email, object, text); + sendSupport(firstname, lastname, email, object, text); + errorLabel.setText("Message envoy\u00e8 !"); + } catch (AuthenticationFailedException e) { + errorLabel.setText("Service temporairement indisponible"); + } catch (AddressException e) { + errorLabel.setText("Adresse Email invalide"); } + } } - public static void sendSupport(String firstname, String lastname, String email, String object, String text) { + public static void sendSupport(String firstname, String lastname, String email, String object, String text) throws AuthenticationFailedException { //Propriétés Properties p = new Properties(); p.put("mail.smtp.host", "smtp.gmail.com"); @@ -95,12 +101,14 @@ protected PasswordAuthentication getPasswordAuthentication() { " vous a contact\u00e9 avec le message suivant:\n\n\"" + text + "\"\n\n Nom: " + firstname + "\n Pr\u00e9nom: " + lastname + "\n Adresse mail: " + email); //envoyer le message Transport.send(m); + } catch (AuthenticationFailedException e) { + throw new AuthenticationFailedException(); } catch (MessagingException e) { e.printStackTrace(); } } - public static void sendClient(Label errorLabel,String firstname, String lastname, String email, String object, String text) throws AddressException { + public static void sendClient(Label errorLabel, String firstname, String lastname, String email, String object, String text) throws AddressException, AuthenticationFailedException { //Propriétés Properties p = new Properties(); p.put("mail.smtp.host", "smtp.gmail.com"); @@ -126,6 +134,8 @@ protected PasswordAuthentication getPasswordAuthentication() { //envoyer le message Transport.send(m); + } catch (AuthenticationFailedException e) { + throw new AuthenticationFailedException(); } catch (MessagingException e) { errorLabel.setText("Erreur lors de l'envois du message..."); } @@ -135,12 +145,12 @@ private static PasswordAuthentication passWordAuthentification() { return new PasswordAuthentication("help.interaactionbox@gmail.com", letMeSendIt()); } - public static String decrypt(String encryptedText, SecretKey secretKey) - throws Exception { - Base64.Decoder decoder = Base64.getDecoder(); - byte[] encryptedTextByte = decoder.decode(encryptedText); - cipher.init(Cipher.DECRYPT_MODE, secretKey); - byte[] decryptedByte = cipher.doFinal(encryptedTextByte); - return new String(decryptedByte); - } + public static String decrypt(String encryptedText, SecretKey secretKey) + throws Exception { + Base64.Decoder decoder = Base64.getDecoder(); + byte[] encryptedTextByte = decoder.decode(encryptedText); + cipher.init(Cipher.DECRYPT_MODE, secretKey); + byte[] decryptedByte = cipher.doFinal(encryptedTextByte); + return new String(decryptedByte); + } } From 9ed9ea6acf9712ff651b2399a3a16ed4087966aa Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Fri, 19 Nov 2021 10:52:53 +0100 Subject: [PATCH 15/20] change path with ~ --- src/main/java/main/utils/UtilsMail.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/main/utils/UtilsMail.java b/src/main/java/main/utils/UtilsMail.java index 0039489..9311b3e 100644 --- a/src/main/java/main/utils/UtilsMail.java +++ b/src/main/java/main/utils/UtilsMail.java @@ -26,7 +26,7 @@ public static String letMeSendIt() { KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); keyGenerator.init(128); // block size is 128bits LinkedList byteList = new LinkedList<>(); - BufferedReader buffReader = new BufferedReader(new FileReader("C:/Users/Sebastien/.email/crypted_key.txt")); + BufferedReader buffReader = new BufferedReader(new FileReader("~/.email/crypted_key.txt")); String[] stringbyteArray = buffReader.readLine().split(","); byte[] realBytesArray = new byte[stringbyteArray.length]; for (int i = 0; i < stringbyteArray.length; i++) { @@ -50,7 +50,7 @@ public byte[] getEncoded() { }; cipher = Cipher.getInstance("AES"); - BufferedReader buffReaderpass = new BufferedReader(new FileReader("C:/Users/Sebastien/.email/crypted_pass.txt")); + BufferedReader buffReaderpass = new BufferedReader(new FileReader("~/.email/crypted_pass.txt")); return decrypt(buffReaderpass.readLine(), secretKey); } catch (Exception e) { return ""; From 84143b1d0f0dc46d305ca5041bd4d1dfca0d40c1 Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Mon, 22 Nov 2021 09:25:17 +0100 Subject: [PATCH 16/20] fix changePassword script and add inheritIO --- scripts/changePassword.sh | 2 +- src/main/java/main/UI/menu/UserPageMenu.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/changePassword.sh b/scripts/changePassword.sh index d3f8297..3ee6aae 100644 --- a/scripts/changePassword.sh +++ b/scripts/changePassword.sh @@ -1,2 +1,2 @@ #!/bin/bash -echo -e $(zenity --forms --title="Changer de mot de passe" --text="Mot de passe pour $USER" --separator="\n" --add-password="Ancien mot de passe" --add-password="Nouveau mot de passe" --add-password="Confirmez le mot de passe") | passwd +echo -e $(echo -e $(zenity --forms --title="Changer de mot de passe" --text="Mot de passe pour $USER" --separator="\n" --add-password="Ancien mot de passe" --add-password="Nouveau mot de passe" --add-password="Confirmez le mot de passe") | sed ':a;N;$!ba;s/\n/\\n/g') | passwd diff --git a/src/main/java/main/UI/menu/UserPageMenu.java b/src/main/java/main/UI/menu/UserPageMenu.java index d0f630c..35454df 100644 --- a/src/main/java/main/UI/menu/UserPageMenu.java +++ b/src/main/java/main/UI/menu/UserPageMenu.java @@ -57,7 +57,7 @@ public UserPageMenu(GraphicalMenus graphicalMenus) { void changePassword() throws IOException { ProcessBuilder pb = new ProcessBuilder("sh", "./scripts/changePassword.sh"); pb.redirectErrorStream(true); - pb.start(); + pb.inheritIO().start(); } } From a28dce66887f0615854b310d5380e2bca9829a11 Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Mon, 22 Nov 2021 14:30:16 +0100 Subject: [PATCH 17/20] fix changePassword issue --- src/main/java/main/UI/menu/UserPageMenu.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/main/UI/menu/UserPageMenu.java b/src/main/java/main/UI/menu/UserPageMenu.java index 35454df..aaae7d6 100644 --- a/src/main/java/main/UI/menu/UserPageMenu.java +++ b/src/main/java/main/UI/menu/UserPageMenu.java @@ -1,14 +1,15 @@ package main.UI.menu; import javafx.geometry.Pos; -import javafx.scene.control.*; +import javafx.scene.control.Button; +import javafx.scene.control.Label; import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; import lombok.extern.slf4j.Slf4j; import main.utils.UtilsUI; -import java.io.*; +import java.io.IOException; @Slf4j public class UserPageMenu extends BorderPane { @@ -27,16 +28,18 @@ public UserPageMenu(GraphicalMenus graphicalMenus) { settings.setHgap(20); settings.setVgap(graphicalMenus.primaryStage.getHeight() / 20); + Label l =new Label("test"); { Label displayedLabel = new Label("Mot de Passe"); displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #cd2653; -fx-font-size: 3em"); + Button button = UtilsUI.createButton( "Changer>", "images/user_white.png", (e) -> { try { - changePassword(); + changePassword(l); } catch (IOException ex) { ex.printStackTrace(); } @@ -52,12 +55,12 @@ public UserPageMenu(GraphicalMenus graphicalMenus) { settings.setAlignment(Pos.CENTER); BorderPane.setAlignment(settings, Pos.CENTER); this.setCenter(settings); + this.setBottom(l); } - void changePassword() throws IOException { - ProcessBuilder pb = new ProcessBuilder("sh", "./scripts/changePassword.sh"); - pb.redirectErrorStream(true); - pb.inheritIO().start(); + void changePassword(Label l) throws IOException { + ProcessBuilder pb = new ProcessBuilder("bash", "./scripts/changePassword.sh"); + pb.inheritIO().start(); } } From 2f1c32f8f31bb736a0f68d8ea0d899679f13ac08 Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Mon, 22 Nov 2021 14:35:46 +0100 Subject: [PATCH 18/20] remove useless label --- src/main/java/main/UI/menu/UserPageMenu.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/main/UI/menu/UserPageMenu.java b/src/main/java/main/UI/menu/UserPageMenu.java index aaae7d6..fe2db98 100644 --- a/src/main/java/main/UI/menu/UserPageMenu.java +++ b/src/main/java/main/UI/menu/UserPageMenu.java @@ -28,7 +28,6 @@ public UserPageMenu(GraphicalMenus graphicalMenus) { settings.setHgap(20); settings.setVgap(graphicalMenus.primaryStage.getHeight() / 20); - Label l =new Label("test"); { Label displayedLabel = new Label("Mot de Passe"); displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-text-fill: #cd2653; -fx-font-size: 3em"); @@ -39,7 +38,7 @@ public UserPageMenu(GraphicalMenus graphicalMenus) { "images/user_white.png", (e) -> { try { - changePassword(l); + changePassword(); } catch (IOException ex) { ex.printStackTrace(); } @@ -55,10 +54,9 @@ public UserPageMenu(GraphicalMenus graphicalMenus) { settings.setAlignment(Pos.CENTER); BorderPane.setAlignment(settings, Pos.CENTER); this.setCenter(settings); - this.setBottom(l); } - void changePassword(Label l) throws IOException { + void changePassword() throws IOException { ProcessBuilder pb = new ProcessBuilder("bash", "./scripts/changePassword.sh"); pb.inheritIO().start(); } From 29a06738858f603a0dd4fb690dd17bd45b644722 Mon Sep 17 00:00:00 2001 From: kuhlkrein Date: Mon, 22 Nov 2021 15:31:22 +0100 Subject: [PATCH 19/20] add contact in parameter menu --- src/main/java/main/Main.java | 3 +- src/main/java/main/UI/menu/OptionsMenu.java | 34 ++++++++++++++++---- src/resources/images/contact.png | Bin 0 -> 6894 bytes 3 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 src/resources/images/contact.png diff --git a/src/main/java/main/Main.java b/src/main/java/main/Main.java index f28f3c8..7400189 100644 --- a/src/main/java/main/Main.java +++ b/src/main/java/main/Main.java @@ -35,8 +35,7 @@ public void start(Stage primaryStage) { Scene scene = new Scene(new Pane(new Rectangle(0,0,Screen.getPrimary().getBounds().getWidth(),Screen.getPrimary().getBounds().getHeight())), Color.TRANSPARENT); GraphicalMenus graphicalMenus = new GraphicalMenus(primaryStage); - //scene.setRoot(graphicalMenus.getHomeScreen()); - scene.setRoot(graphicalMenus.getContactUs()); + scene.setRoot(graphicalMenus.getHomeScreen()); graphicalMenus.getConfiguration().setScene(scene); primaryStage.setScene(scene); diff --git a/src/main/java/main/UI/menu/OptionsMenu.java b/src/main/java/main/UI/menu/OptionsMenu.java index 013ecde..cb886ae 100644 --- a/src/main/java/main/UI/menu/OptionsMenu.java +++ b/src/main/java/main/UI/menu/OptionsMenu.java @@ -29,7 +29,7 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { this.setTop(UtilsUI.createTopBar(graphicalMenus.getHomeScreen(), graphicalMenus, "Options")); GridPane settings = new GridPane(); - settings.setHgap(20); + settings.setHgap(15); settings.setVgap(graphicalMenus.primaryStage.getHeight() / 20); { @@ -71,10 +71,30 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { { - Label teamviewerLabel = new Label("Informations de l'utilisateur:"); - teamviewerLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em ; -fx-text-fill: #cd2653"); + Label userInformationLabel = new Label("Une id\u00e9e ? Besoin d'aide ? "); + userInformationLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em ; -fx-text-fill: #cd2653"); - Button teamViewerButton = UtilsUI.createButton( + Button userInformationButton = UtilsUI.createButton( + "Contactez-nous>", + "images/contact.png", + (e) -> { + StageUtils.killRunningProcess(graphicalMenus); + graphicalMenus.getConfiguration().scene.setRoot(graphicalMenus.getContactUs()); + } + ); + + userInformationButton.setTextFill(Color.web("#faeaed")); + + settings.add(userInformationLabel, 0, 7); + settings.add(userInformationButton, 1, 7); + } + + { + + Label userInformationLabel = new Label("Informations de l'utilisateur:"); + userInformationLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em ; -fx-text-fill: #cd2653"); + + Button userInformationButton = UtilsUI.createButton( "Ouvrir>", "images/user_white.png", (e) -> { @@ -83,10 +103,10 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { } ); - teamViewerButton.setTextFill(Color.web("#faeaed")); + userInformationButton.setTextFill(Color.web("#faeaed")); - settings.add(teamviewerLabel, 0, 6); - settings.add(teamViewerButton, 1, 6); + settings.add(userInformationLabel, 0, 6); + settings.add(userInformationButton, 1, 6); } { diff --git a/src/resources/images/contact.png b/src/resources/images/contact.png new file mode 100644 index 0000000000000000000000000000000000000000..8f78aaf15b1fa856e6620937bca2b8a00d724803 GIT binary patch literal 6894 zcmb_hc|4R|`#<*>W9(zema=4TLW7DdV{8>!$~Gb+j3N&;*^^s@Z1I$Rjg$}~vS!NT zLB`U8BvFY%_H8opyS?wf@1MW zAyEK}L59`f_rH+=qMb1#fyzF~p9q8YGCXYvz|%Y2EH`$9=kz~8rUAg$zWaqb{YpIm zkcc{IY-k&N{@2*()o-RX>;q4Cb_)6r&aS7u+Fp=)Zh#v2&@Q&q_CX73&YZh8eZD-A`o$-1>#k-6Y0dX#QK%}LWo zP23CO4y~Pz;I{5gtbI#VRXJdoul%+mn%lo5Yx;pAaQ

7F1BywH1MXSKO=oR&9{% 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 Date: Mon, 22 Nov 2021 16:35:43 +0100 Subject: [PATCH 20/20] change gap values --- src/main/java/main/UI/menu/OptionsMenu.java | 79 +++++---------------- 1 file changed, 18 insertions(+), 61 deletions(-) diff --git a/src/main/java/main/UI/menu/OptionsMenu.java b/src/main/java/main/UI/menu/OptionsMenu.java index 06108f1..01ba66a 100644 --- a/src/main/java/main/UI/menu/OptionsMenu.java +++ b/src/main/java/main/UI/menu/OptionsMenu.java @@ -36,8 +36,8 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { this.setTop(UtilsUI.createTopBar(graphicalMenus.getHomeScreen(), graphicalMenus, "Options")); GridPane settings = new GridPane(); - settings.setHgap(15); - settings.setVgap(graphicalMenus.primaryStage.getHeight() / 20); + settings.setHgap(20); + settings.setVgap(graphicalMenus.primaryStage.getHeight() / 30); { Label useEyeTracker = new Label("Eye Tracker:"); @@ -67,14 +67,14 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { useEyeTrackerCheckBox.setTextFill(Color.web("#faeaed")); useEyeTrackerCheckBox.resize(100, 100); - settings.add(useEyeTracker, 0, 0); - settings.add(useEyeTrackerCheckBox, 1, 0); + settings.add(useEyeTracker, 0, 1); + settings.add(useEyeTrackerCheckBox, 1, 1); } - createGnomeControlCenterButton(graphicalMenus, settings, "Gestionnaire Wifi:", "images/wi-fi_white.png", "wifi", 1); - createGnomeControlCenterButton(graphicalMenus, settings, "Gestionnaire Bluetooth:", "images/bluetooth.png", "bluetooth", 2); - createGnomeControlCenterButton(graphicalMenus, settings, "Param\u00e8tres D'Affichage:", "images/notebook.png", "display", 3); - createGnomeControlCenterButton(graphicalMenus, settings, "Param\u00e8tres de Batterie:", "images/battery.png", "power", 4); + createGnomeControlCenterButton(graphicalMenus, settings, "Gestionnaire Wifi:", "images/wi-fi_white.png", "wifi", 2); + createGnomeControlCenterButton(graphicalMenus, settings, "Gestionnaire Bluetooth:", "images/bluetooth.png", "bluetooth", 3); + createGnomeControlCenterButton(graphicalMenus, settings, "Param\u00e8tres D'Affichage:", "images/notebook.png", "display", 4); + createGnomeControlCenterButton(graphicalMenus, settings, "Param\u00e8tres de Batterie:", "images/battery.png", "power", 5); createGnomeControlCenterButtonLang(settings); { @@ -93,8 +93,8 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { userInformationButton.setTextFill(Color.web("#faeaed")); - settings.add(userInformationLabel, 0, 7); - settings.add(userInformationButton, 1, 7); + settings.add(userInformationLabel, 0, 8); + settings.add(userInformationButton, 1, 8); } { @@ -113,8 +113,8 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { userInformationButton.setTextFill(Color.web("#faeaed")); - settings.add(userInformationLabel, 0, 6); - settings.add(userInformationButton, 1, 6); + settings.add(userInformationLabel, 0, 7); + settings.add(userInformationButton, 1, 7); } { @@ -135,8 +135,8 @@ public OptionsMenu(GraphicalMenus graphicalMenus) { teamViewerButton.setTextFill(Color.web("#faeaed")); - settings.add(teamviewerLabel, 0, 5); - settings.add(teamViewerButton, 1, 5); + settings.add(teamviewerLabel, 0, 6); + settings.add(teamViewerButton, 1, 6); } settings.setAlignment(Pos.CENTER); @@ -168,9 +168,8 @@ void createGnomeControlCenterButton(GraphicalMenus graphicalMenus, GridPane sett } void createGnomeControlCenterButtonLang(GridPane settings) { - Label displayedLabel = new Label("Langue"); - displayedLabel.setFont(new Font(20)); - displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica"); + Label displayedLabel = new Label("Choisir une langue:"); + displayedLabel.setStyle("-fx-font-weight: bold; -fx-font-family: Helvetica; -fx-font-size: 3em ; -fx-text-fill: #cd2653"); displayedLabel.setTextFill(Color.web("#cd2653")); MenuItem menuItemFR = new MenuItem("Francais"); @@ -188,50 +187,8 @@ void createGnomeControlCenterButtonLang(GridPane settings) { }); menuButton.getItems().addAll(menuItemEN,menuItemFR); - - /* - - Button button = createTopBarButton( - "Ouvrir>", - imageName, - (e) -> { - StageUtils.killRunningProcess(graphicalMenus); - GnomeControlCenterNamedProcessCreator process = new GnomeControlCenterNamedProcessCreator(panelToOpen); - process.setUpProcessBuilder(); - graphicalMenus.process = process.start(graphicalMenus); - } - ); - - */ - - // button.setTextFill(Color.web("#faeaed")); - - settings.add(displayedLabel, 0, 6); - settings.add(menuButton,1, 6); - // settings.add(button, 1, row); - } - - Button createTopBarButton(String text, String imagePath, EventHandler eventhandler) { - DoubleClickedButton optionButton = new DoubleClickedButton(text); - optionButton.setPrefHeight(50); - optionButton.setMaxHeight(50); - optionButton.setStyle( - "-fx-border-color: transparent; " + - "-fx-border-width: 0; " + - "-fx-background-radius: 0; " + - "-fx-background-color: transparent; " + - "-fx-font-weight: bold; " + - "-fx-font-family: Helvetica; " + - "-fx-text-fill: #faeaed;"+ - "-fx-font-size: 20" - ); - ImageView graphic = new ImageView(imagePath); - graphic.setPreserveRatio(true); - graphic.setFitHeight(30); - optionButton.setGraphic(graphic); - - optionButton.assignHandler(eventhandler); - return optionButton; + settings.add(displayedLabel, 0, 0); + settings.add(menuButton,1, 0); }