diff --git a/README.adoc b/README.adoc index 77039b2851b4..0e386eaff73f 100644 --- a/README.adoc +++ b/README.adoc @@ -1,4 +1,4 @@ -= Weaver (Level 4) += Weaver image::docs/images/login.png[width="790"] @@ -20,17 +20,11 @@ endif::[] * This is a desktop Address Book application. It has a GUI but most of the user interactions happen using a CLI (Command Line Interface). * It is a Java sample application intended for students learning Software Engineering while using Java as the main programming language. * It is *written in OOP fashion*. It provides a *reasonably well-written* code example that is *significantly bigger* (around 6 KLoC)than what students usually write in beginner-level SE modules. -* What's different from https://github.com/se-edu/addressbook-level3[level 3]: -** A more sophisticated GUI that includes a list panel and an in-built Browser. -** More details about each user like Date Of Birth. -** More test cases, including automated GUI testing. -** Support for _Build Automation_ using Gradle and for _Continuous Integration_ using Travis CI. == Site Map * <> * <> -* <> * <> * <> diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index d9da08288d8f..44a234ffbc4f 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -12,7 +12,23 @@ endif::[] ifdef::env-github,env-browser[:outfilesuffix: .adoc] :repoURL: https://github.com/se-edu/addressbook-level4/tree/master -By: `W13-B2`      Since: `Aug 2017`      Licence: `MIT` +By: `W13-B2` Since: `Aug 2017` Licence: `MIT` + +*`Weaver`* is a command line based software for storing and managing contact information. It satisfies almost all functions might be needed by university students on storing and managing contact information. + + +== Introduction + +=== Audiences + +All university students. + +People who have the need for storing and managing contact information efficiently are suggested to use *`Weaver`*. + +=== Purposes + +. *`Weaver`* aims at providing efficient solution for university students to store and manage contact information. +. It devotes to improve the experience when users try to add person , delete person , edit person , remark person ect. +. Targeted at university students, *`Weaver`* is bringing shortcut for students to note meetings, calendars and course information. *`Weaver`* is a command line based software for storing and managing contact information. It satisfies almost all functions might be needed by university students on storing and managing contact information. @@ -1476,4 +1492,3 @@ Environment Bit 32/64 bits refer to the number of bits that compose a data element .... [appendix] - diff --git a/src/main/java/seedu/address/commons/events/ui/PersonPanelAddressPressedEvent.java b/src/main/java/seedu/address/commons/events/ui/PersonPanelAddressPressedEvent.java new file mode 100644 index 000000000000..c5a63509af20 --- /dev/null +++ b/src/main/java/seedu/address/commons/events/ui/PersonPanelAddressPressedEvent.java @@ -0,0 +1,37 @@ +package seedu.address.commons.events.ui; + +import seedu.address.commons.events.BaseEvent; + +/** + * Indicates an address in a person panel is pressed + */ +public class PersonPanelAddressPressedEvent extends BaseEvent { + + private String personName; + private String address; + + public PersonPanelAddressPressedEvent(String personName, String address) { + + this.personName = personName; + this.address = address; + } + + @Override + public String toString() { + return this.getClass().getSimpleName(); + } + + /** + * Get the address from the event + */ + public String getAddress() { + return address; + } + + /** + * Get the name of the person from the event + */ + public String getPersonName() { + return personName; + } +} diff --git a/src/main/java/seedu/address/logic/commands/PhotoCommand.java b/src/main/java/seedu/address/logic/commands/PhotoCommand.java index 8be79c7608be..f7f3f02fab9a 100644 --- a/src/main/java/seedu/address/logic/commands/PhotoCommand.java +++ b/src/main/java/seedu/address/logic/commands/PhotoCommand.java @@ -34,11 +34,11 @@ public class PhotoCommand extends UndoableCommand { public static final String MESSAGE_FILE_PATH_NOT_FOUND = "Incorrect file path"; private final Index targetIndex; - private String FilePath; + private String filePath; - public PhotoCommand(Index targetIndex, String FilePath) { + public PhotoCommand(Index targetIndex, String filePath) { this.targetIndex = targetIndex; - this.FilePath = FilePath; + this.filePath = filePath; } @Override @@ -52,30 +52,30 @@ public CommandResult executeUndoableCommand() throws CommandException { ReadOnlyPerson personToAddPhoto = lastShownList.get(targetIndex.getZeroBased()); - if (personToAddPhoto.getImage().getFilePath().equals("") && FilePath.equalsIgnoreCase("delete")) { + if (personToAddPhoto.getImage().getFilePath().equals("") && filePath.equalsIgnoreCase("delete")) { throw new CommandException(Messages.MESSAGE_NO_IMAGE_TO_DELETE); } - if (FilePath.equalsIgnoreCase("Delete")) { - FilePath = ""; + if (filePath.equalsIgnoreCase("Delete")) { + filePath = ""; } try { Person editedPerson = new Person(personToAddPhoto.getName(), personToAddPhoto.getPhone(), personToAddPhoto.getEmail(), personToAddPhoto.getAddress(), personToAddPhoto.getDateOfBirth(), personToAddPhoto.getRemark(), - new FileImage(FilePath), personToAddPhoto.getTags()); + new FileImage(filePath), personToAddPhoto.getTags()); - model.addPhotoPerson(personToAddPhoto, FilePath, targetIndex); + model.addPhotoPerson(personToAddPhoto, filePath, targetIndex); model.updatePerson(personToAddPhoto, editedPerson); ImageStorage imageStorage = new ImageStorage(); - FilePath = (imageStorage.execute(FilePath, + filePath = (imageStorage.execute(filePath, personToAddPhoto.getEmail().hashCode())); editedPerson = new Person(personToAddPhoto.getName(), personToAddPhoto.getPhone(), personToAddPhoto.getEmail(), personToAddPhoto.getAddress(), personToAddPhoto.getDateOfBirth(), personToAddPhoto.getRemark(), - new FileImage(FilePath), personToAddPhoto.getTags()); + new FileImage(filePath), personToAddPhoto.getTags()); model.updatePerson(personToAddPhoto, editedPerson); } catch (PersonNotFoundException pnfe) { @@ -85,7 +85,7 @@ public CommandResult executeUndoableCommand() throws CommandException { } catch (IllegalValueException ive) { assert false : "Invalid input"; } - if (FilePath.equals("")) { + if (filePath.equals("")) { return new CommandResult(String.format(DELETE_SUCCESS, personToAddPhoto)); } else { return new CommandResult(String.format(MESSAGE_PHOTO_PERSON_SUCCESS, personToAddPhoto)); diff --git a/src/main/java/seedu/address/logic/parser/PhotoCommandParser.java b/src/main/java/seedu/address/logic/parser/PhotoCommandParser.java index 8a986eb54086..a4b20bea5f7a 100644 --- a/src/main/java/seedu/address/logic/parser/PhotoCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/PhotoCommandParser.java @@ -25,14 +25,14 @@ public class PhotoCommandParser implements Parser { public PhotoCommand parse(String args) throws ParseException { String trimmedArgs = args.trim(); - String[] Keywords = trimmedArgs.split("\\s+"); + String[] keywords = trimmedArgs.split("\\s+"); - if (trimmedArgs.isEmpty() || Keywords.length != 2) { + if (trimmedArgs.isEmpty() || keywords.length != 2) { throw new ParseException( String.format(MESSAGE_INVALID_COMMAND_FORMAT, PhotoCommand.MESSAGE_USAGE)); } String home = System.getProperty("user.home"); - String inputFile = Keywords[1]; + String inputFile = keywords[1]; java.nio.file.Path path = java.nio.file.Paths.get(home, "Desktop"); String url = path + ""; System.out.println(path + " " + inputFile); @@ -44,8 +44,8 @@ public PhotoCommand parse(String args) throws ParseException { } try { - Index index = ParserUtil.parseIndex(Keywords[0]); - return new PhotoCommand(index, (Keywords[1])); + Index index = ParserUtil.parseIndex(keywords[0]); + return new PhotoCommand(index, (keywords[1])); } catch (IllegalValueException ive) { throw new ParseException( String.format(MESSAGE_INVALID_COMMAND_FORMAT, PhotoCommand.MESSAGE_USAGE)); diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index f9b3836cd6a8..38081319667d 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -34,7 +34,7 @@ public interface Model { void addPerson(ReadOnlyPerson person) throws DuplicatePersonException; /** Adds photo to person */ - void addPhotoPerson(ReadOnlyPerson person, String FilePath, Index targetIndex) + void addPhotoPerson(ReadOnlyPerson person, String filePath, Index targetIndex) throws PersonNotFoundException, FileNotFoundException, IOException; diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index b0ac59baacbd..964abecc00d5 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -95,16 +95,15 @@ public synchronized void addPerson(ReadOnlyPerson person) throws DuplicatePerson } @Override - public synchronized void addPhotoPerson(ReadOnlyPerson person, String FilePath, Index targetIndex) + public synchronized void addPhotoPerson(ReadOnlyPerson person, String filePath, Index targetIndex) throws PersonNotFoundException, FileNotFoundException, IOException { try { - person.imageProperty().setValue( new FileImage(FilePath)); + person.imageProperty().setValue(new FileImage(filePath)); updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); indicateAddressBookChanged(); - } - catch (IllegalValueException ive) { + } catch (IllegalValueException ive) { System.out.println("Error encountered"); } } diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index a2e706f044a6..354950e5c945 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -31,7 +31,7 @@ public void setGuiSettings(double width, double height, int x, int y, String fon } public void setGuiSettings(double width, double height, int x, int y) { - guiSettings = new GuiSettings(width, height, x, y, FontSize.FONT_SIZE_M_LABEL); + guiSettings = new GuiSettings(width, height, x, y, FontSize.getCurrentFontSizeLabel()); } public String getAddressBookFilePath() { diff --git a/src/main/java/seedu/address/model/font/FontSize.java b/src/main/java/seedu/address/model/font/FontSize.java index 14e2a0685812..e31b5a611947 100644 --- a/src/main/java/seedu/address/model/font/FontSize.java +++ b/src/main/java/seedu/address/model/font/FontSize.java @@ -151,7 +151,6 @@ public int hashCode() { /** * Get the associate fx format string for a give font size * @param inputFontSize - * @return */ public static String getassociatefxfontsizestring(String inputFontSize) { assert (FontSize.isValidFontSize(inputFontSize)); @@ -183,4 +182,39 @@ public static String getassociatefxfontsizestring(String inputFontSize) { return fxFontSizeString; } + /** + * Get associate image size from a given font size + * @param inputFontSize + * @return + */ + public static int getAssociateImageSizeFromFontSize(String inputFontSize) { + assert (FontSize.isValidFontSize(inputFontSize)); + int imageSize; + switch (inputFontSize) { + case FONT_SIZE_XS_LABEL: + imageSize = 15; + break; + + case FONT_SIZE_S_LABEL: + imageSize = 20; + break; + + case FONT_SIZE_M_LABEL: + imageSize = 25; + break; + + case FONT_SIZE_L_LABEL: + imageSize = 30; + break; + + case FONT_SIZE_XL_LABEL: + imageSize = 35; + break; + + default: + imageSize = 25; + } + return imageSize; + } + } diff --git a/src/main/java/seedu/address/ui/BrowserPanel.java b/src/main/java/seedu/address/ui/BrowserPanel.java index f1c91e29b317..28272cae19b3 100644 --- a/src/main/java/seedu/address/ui/BrowserPanel.java +++ b/src/main/java/seedu/address/ui/BrowserPanel.java @@ -13,6 +13,7 @@ import javafx.scene.web.WebView; import seedu.address.commons.core.LogsCenter; import seedu.address.commons.events.ui.FaceBookEvent; +import seedu.address.commons.events.ui.PersonPanelAddressPressedEvent; import seedu.address.commons.events.ui.PersonPanelSelectionChangedEvent; import seedu.address.model.person.ReadOnlyPerson; @@ -30,7 +31,7 @@ public class BrowserPanel extends UiPart { public static final String FACEBOOK_PROFILE_PAGE = "https://www.facebook.com/"; public static final String NUSMODS_SEARCH_URL_PREFIX = "https://nusmods.com/timetable/2017-2018/sem1?"; public static final String FACEBOOK_MESSENGER_URL_PREFIX = "https://www.facebook.com/messages/t/"; - + public static final String GOOGLE_MAP_SEARCH_URL_PREFIX = "https://www.google.com.sg/maps/search/"; private static final String FXML = "BrowserPanel.fxml"; @@ -105,6 +106,13 @@ private void handlePersonPanelSelectionChangedEvent(PersonPanelSelectionChangedE logger.info(LogsCenter.getEventHandlingLogMessage(event)); loadPersonPage(event.getNewSelection().person); } + + @Subscribe + private void handlePersonPanelAddressPressedEvent(PersonPanelAddressPressedEvent event) { + logger.info(LogsCenter.getEventHandlingLogMessage(event)); + loadPage(GOOGLE_MAP_SEARCH_URL_PREFIX + event.getAddress()); + } + /** * Shows Facebook profile picture of user */ @@ -122,5 +130,4 @@ public void handleFaceBookEvent(FaceBookEvent event) { loadPersonFaceBookPage(event.getPerson(), event.getUsername()); } - } diff --git a/src/main/java/seedu/address/ui/LoginPage.java b/src/main/java/seedu/address/ui/LoginPage.java index b13d796dbb33..462094c2e31c 100644 --- a/src/main/java/seedu/address/ui/LoginPage.java +++ b/src/main/java/seedu/address/ui/LoginPage.java @@ -3,6 +3,8 @@ import java.util.Optional; import java.util.logging.Logger; +import com.google.common.eventbus.Subscribe; + import javafx.fxml.FXML; import javafx.scene.Scene; import javafx.scene.control.TextField; @@ -10,26 +12,23 @@ import javafx.scene.input.KeyEvent; import javafx.scene.layout.Region; import javafx.stage.Stage; + import seedu.address.commons.core.Config; import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; +import seedu.address.commons.events.ui.ChangeFontSizeEvent; import seedu.address.commons.exceptions.DataConversionException; import seedu.address.commons.util.FxViewUtil; import seedu.address.logic.Logic; -import seedu.address.logic.LogicManager; import seedu.address.model.AddressBook; import seedu.address.model.Model; import seedu.address.model.ModelManager; import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.UserPrefs; +import seedu.address.model.font.FontSize; import seedu.address.model.util.SampleDataUtil; import seedu.address.storage.AccountsStorage; -import seedu.address.storage.AddressBookStorage; -import seedu.address.storage.JsonUserPrefsStorage; import seedu.address.storage.Storage; -import seedu.address.storage.StorageManager; -import seedu.address.storage.UserPrefsStorage; -import seedu.address.storage.XmlAddressBookStorage; /** * The login page. Users need to key in their username and password to login the MainWindow. @@ -68,6 +67,7 @@ public LoginPage(Stage primaryStage, Config config, Storage storage, UserPrefs p this.config = config; this.prefs = prefs; this.accPrefs = accPrefs; + this.storage = storage; // Configure the UI setTitle(config.getAppTitle()); @@ -94,12 +94,8 @@ private void handleLoginEvent() { String uname = username.getText(); String pword = password.getText(); if (checkValid(uname, pword)) { - UserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); - AddressBookStorage addressBookStorage = new XmlAddressBookStorage("./data/" + uname + "addressbook.xml"); - storage = new StorageManager(addressBookStorage, userPrefsStorage); model = initModelManager(storage, prefs); - logic = new LogicManager(model); - + prefs.updateLastUsedGuiSetting(this.getCurrentGuiSetting()); mainWindow = new MainWindow(primaryStage, config, storage, prefs, logic, accPrefs); mainWindow.show(); //This should be called before creating other UI parts mainWindow.fillInnerParts(); @@ -121,7 +117,7 @@ private void handleKeyPress(KeyEvent keyEvent) { GuiSettings getCurrentGuiSetting() { return new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(), - (int) primaryStage.getX(), (int) primaryStage.getY()); + (int) primaryStage.getX(), (int) primaryStage.getY(), FontSize.getCurrentFontSizeLabel()); } private void setTitle(String appTitle) { @@ -144,6 +140,7 @@ void show() { private void setWindowDefaultSize(UserPrefs prefs) { primaryStage.setHeight(prefs.getGuiSettings().getWindowHeight()); primaryStage.setWidth(prefs.getGuiSettings().getWindowWidth()); + FontSize.setCurrentFontSizeLabel(prefs.getGuiSettings().getFontSize()); if (prefs.getGuiSettings().getWindowCoordinates() != null) { primaryStage.setX(prefs.getGuiSettings().getWindowCoordinates().getX()); primaryStage.setY(prefs.getGuiSettings().getWindowCoordinates().getY()); @@ -202,4 +199,18 @@ private Model initModelManager(Storage storage, UserPrefs userPrefs) { } return new ModelManager(initialData, userPrefs); } + + @Subscribe + private void handleChangeFontSizeEvent(ChangeFontSizeEvent event) { + setFontSize(event.getFontSize()); + } + + /** + * Sets the command box style to user preferred font size. + */ + private void setFontSize(String newFontSize) { + String fxFormatFontSize = FontSize.getassociatefxfontsizestring(newFontSize); + username.setStyle(fxFormatFontSize); + password.setStyle(fxFormatFontSize); + } } diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index c9c2fa4e5319..856986c9b676 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -1,5 +1,6 @@ package seedu.address.ui; +import java.io.IOException; import java.util.logging.Logger; import com.google.common.eventbus.Subscribe; @@ -228,10 +229,11 @@ private void handleExit() { * Method for handle logout event. */ @FXML - private void handleLogoutEvent() { + private void handleLogoutEvent() throws IOException { logger.info("Trying to logout"); this.hide(); this.releaseResources(); + prefs.updateLastUsedGuiSetting(this.getCurrentGuiSetting()); LoginPage loginPage = new LoginPage(primaryStage, config, storage, prefs, logic, accPrefs); loginPage.show(); } diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java index fa4a83fb9855..f65bf742f620 100644 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ b/src/main/java/seedu/address/ui/PersonCard.java @@ -20,6 +20,7 @@ import seedu.address.commons.events.ui.ChangeFontSizeEvent; import seedu.address.commons.events.ui.ChangeTagColorEvent; +import seedu.address.commons.events.ui.PersonPanelAddressPressedEvent; import seedu.address.model.font.FontSize; import seedu.address.model.person.ReadOnlyPerson; @@ -66,6 +67,17 @@ public class PersonCard extends UiPart { private Label remark; @FXML private ImageView image; + @FXML + private ImageView imagePhone; + @FXML + private ImageView imageEmail; + @FXML + private ImageView imageAddress; + @FXML + private ImageView imageBirth; + @FXML + private ImageView imageRemark; + public PersonCard(ReadOnlyPerson person, int displayedIndex) { super(FXML); @@ -75,40 +87,48 @@ public PersonCard(ReadOnlyPerson person, int displayedIndex) { registerAsAnEventHandler(this); String currentFontSize = FontSize.getCurrentFontSizeLabel(); setFontSize(currentFontSize); + setFontSizeForAllImages(currentFontSize); initTags(person, currentFontSize); + } + /** + * Get the label address + */ + public Label getAddressLabel() { + return address; } + /** * Adds a photo to a persons contact */ - public void assignImage(String FilePath) { + public void assignImage(String filePath) { String url; - if (FilePath.equals("")) { + if (filePath.equals("")) { url = "/images/address_book_32.png"; Image Display = new Image(url); image.setImage(Display); } else { - if (FilePath.endsWith("g")) { + if (filePath.endsWith("g")) { String home = System.getProperty("user.home"); - java.nio.file.Path path = java.nio.file.Paths.get(home, "Desktop", FilePath); + java.nio.file.Path path = java.nio.file.Paths.get(home, "Desktop", filePath); url = path + ""; File file = new File(url); - Image Display = new Image(file.toURI().toString()); - image.setImage(Display); + Image display = new Image(file.toURI().toString()); + image.setImage(display); } else { url = "src/main/resources/images/" + person.getImage().getFilePath() + ".jpg"; File stored = new File(url); - Image Display = new Image(stored.toURI().toString(), 100, 100, + Image display = new Image(stored.toURI().toString(), 100, 100, false, false); - image.setImage(Display); + image.setImage(display); } } @@ -125,7 +145,6 @@ private void bindListeners(ReadOnlyPerson person) { date.textProperty().bind(Bindings.convert(person.dateOfBirthProperty())); email.textProperty().bind(Bindings.convert(person.emailProperty())); remark.textProperty().bind(Bindings.convert(person.remarkProperty())); - person.tagProperty().addListener((observable, oldValue, newValue) -> { tags.getChildren().clear(); @@ -179,6 +198,7 @@ public boolean equals(Object other) { private void handleChangeFontSizeEvent(ChangeFontSizeEvent event) { initTags(person, event.getFontSize()); setFontSize(event.getFontSize()); + //setFontSizeForAllImages(event.getFontSize()); } private void setFontSize(String newFontSize) { @@ -199,4 +219,23 @@ private void setFontSizeForAllAttributesExceptTag(String fontSize) { remark.setStyle(fontSize); } + private void setFontSizeForAllImages(String fontSize) { + int newImageSize = FontSize.getAssociateImageSizeFromFontSize(fontSize); + imagePhone.setFitHeight(newImageSize); + imagePhone.setFitWidth(newImageSize); + imageAddress.setFitHeight(newImageSize); + imageAddress.setFitWidth(newImageSize); + imageEmail.setFitHeight(newImageSize); + imageEmail.setFitWidth(newImageSize); + imageBirth.setFitHeight(newImageSize); + imageBirth.setFitWidth(newImageSize); + imageRemark.setFitHeight(newImageSize); + imageRemark.setFitWidth(newImageSize); + } + + @FXML + private void handleAddressClick() { + raise(new PersonPanelAddressPressedEvent(person.getName().fullName, address.getText())); + } + } diff --git a/src/main/java/seedu/address/ui/ResultDisplay.java b/src/main/java/seedu/address/ui/ResultDisplay.java index c1f164947eb9..ff55f2cc1dc1 100644 --- a/src/main/java/seedu/address/ui/ResultDisplay.java +++ b/src/main/java/seedu/address/ui/ResultDisplay.java @@ -14,6 +14,7 @@ import seedu.address.commons.core.LogsCenter; import seedu.address.commons.events.ui.ChangeFontSizeEvent; import seedu.address.commons.events.ui.NewResultAvailableEvent; +import seedu.address.commons.events.ui.PersonPanelAddressPressedEvent; import seedu.address.model.font.FontSize; /** @@ -60,6 +61,12 @@ private void setFontSize(String fontSize) { resultDisplay.setStyle(fxFomatString); } + @Subscribe + private void handlePersonPanelAddressPressedEvent(PersonPanelAddressPressedEvent event) { + Platform.runLater(() -> displayed.setValue("Showing address of " + event.getPersonName() + + ": " + event.getAddress())); + } + /** * Sets the {@code ResultDisplay} style to use the default style. */ diff --git a/src/main/resources/images/address.png b/src/main/resources/images/address.png new file mode 100644 index 000000000000..a58e67262365 Binary files /dev/null and b/src/main/resources/images/address.png differ diff --git a/src/main/resources/images/birthday.png b/src/main/resources/images/birthday.png new file mode 100644 index 000000000000..56ec78a36cf0 Binary files /dev/null and b/src/main/resources/images/birthday.png differ diff --git a/src/main/resources/images/email.png b/src/main/resources/images/email.png new file mode 100644 index 000000000000..3c91ef46ac1a Binary files /dev/null and b/src/main/resources/images/email.png differ diff --git a/src/main/resources/images/phone.png b/src/main/resources/images/phone.png new file mode 100644 index 000000000000..59c14fce8ba3 Binary files /dev/null and b/src/main/resources/images/phone.png differ diff --git a/src/main/resources/images/remark.png b/src/main/resources/images/remark.png new file mode 100644 index 000000000000..6650249da8bb Binary files /dev/null and b/src/main/resources/images/remark.png differ diff --git a/src/main/resources/view/LoginPage.fxml b/src/main/resources/view/LoginPage.fxml index 29dbc7896e98..d9ef7f9fea6b 100644 --- a/src/main/resources/view/LoginPage.fxml +++ b/src/main/resources/view/LoginPage.fxml @@ -8,9 +8,8 @@ - - - + + @@ -24,12 +23,11 @@ - +