2020-04-19 19:57:40 +02:00
package envoy.client.ui.settings ;
2020-04-18 12:03:32 +02:00
2020-09-08 20:41:01 +02:00
import javafx.scene.control.* ;
2020-04-18 16:04:47 +02:00
2020-04-18 21:37:44 +02:00
import envoy.client.data.SettingsItem ;
2020-09-23 23:11:32 +02:00
import envoy.client.event.ThemeChangeEvent ;
import envoy.client.helper.ShutdownHelper ;
2020-09-28 15:58:42 +02:00
import envoy.client.ui.StatusTrayIcon ;
2020-06-09 21:03:19 +02:00
import envoy.data.User.UserStatus ;
2020-10-07 23:43:30 +02:00
import envoy.event.UserStatusChange ;
2020-09-08 20:41:01 +02:00
import dev.kske.eventbus.EventBus ;
2020-04-18 12:03:32 +02:00
/ * *
* @author Kai S . K . Engelbart
* @since Envoy Client v0 . 1 - beta
* /
2020-08-22 13:37:07 +02:00
public final class GeneralSettingsPane extends SettingsPane {
2020-04-18 12:03:32 +02:00
/ * *
* @since Envoy Client v0 . 1 - beta
* /
2020-04-18 16:04:47 +02:00
public GeneralSettingsPane ( ) {
super ( " General " ) ;
2020-08-02 20:26:22 +02:00
setSpacing ( 10 ) ;
2020-04-18 21:37:44 +02:00
2020-09-28 15:58:42 +02:00
final var settingsItems = settings . getItems ( ) ;
// Add hide on close if supported
if ( StatusTrayIcon . isSupported ( ) ) {
final var hideOnCloseCheckbox = new SettingsCheckbox ( ( SettingsItem < Boolean > ) settingsItems . get ( " hideOnClose " ) ) ;
final var hideOnCloseTooltip = new Tooltip ( " If selected, Envoy will still be present in the task bar when closed. " ) ;
hideOnCloseTooltip . setWrapText ( true ) ;
hideOnCloseCheckbox . setTooltip ( hideOnCloseTooltip ) ;
getChildren ( ) . add ( hideOnCloseCheckbox ) ;
}
2020-08-02 20:26:22 +02:00
final var enterToSendCheckbox = new SettingsCheckbox ( ( SettingsItem < Boolean > ) settingsItems . get ( " enterToSend " ) ) ;
final var enterToSendTooltip = new Tooltip (
2020-09-23 17:03:32 +02:00
" When selected, messages can be sent pressing \" Enter \" . A line break can be inserted by pressing \" Ctrl \" + \" Enter \" . Else it will be the other way around. " ) ;
2020-08-02 20:26:22 +02:00
enterToSendTooltip . setWrapText ( true ) ;
enterToSendCheckbox . setTooltip ( enterToSendTooltip ) ;
getChildren ( ) . add ( enterToSendCheckbox ) ;
2020-06-08 10:02:39 +02:00
2020-09-23 17:03:32 +02:00
final var askForConfirmationCheckbox = new SettingsCheckbox ( ( SettingsItem < Boolean > ) settingsItems . get ( " askForConfirmation " ) ) ;
final var askForConfirmationTooltip = new Tooltip ( " When selected, nothing will prompt a confirmation dialog " ) ;
askForConfirmationTooltip . setWrapText ( true ) ;
askForConfirmationCheckbox . setTooltip ( askForConfirmationTooltip ) ;
getChildren ( ) . add ( askForConfirmationCheckbox ) ;
2020-06-09 21:03:19 +02:00
final var combobox = new ComboBox < String > ( ) ;
2020-06-08 10:02:39 +02:00
combobox . getItems ( ) . add ( " dark " ) ;
combobox . getItems ( ) . add ( " light " ) ;
2020-08-02 20:26:22 +02:00
combobox . setTooltip ( new Tooltip ( " Determines the current theme Envoy will be displayed in. " ) ) ;
2020-06-08 10:02:39 +02:00
combobox . setValue ( settings . getCurrentTheme ( ) ) ;
2020-09-23 17:03:32 +02:00
combobox . setOnAction ( e - > { settings . setCurrentTheme ( combobox . getValue ( ) ) ; EventBus . getInstance ( ) . dispatch ( new ThemeChangeEvent ( ) ) ; } ) ;
2020-08-02 20:26:22 +02:00
getChildren ( ) . add ( combobox ) ;
2020-06-08 10:02:39 +02:00
2020-10-07 23:43:30 +02:00
if ( context . getClient ( ) . isOnline ( ) ) {
final var statusComboBox = new ComboBox < UserStatus > ( ) ;
statusComboBox . getItems ( ) . setAll ( UserStatus . values ( ) ) ;
statusComboBox . setValue ( context . getLocalDB ( ) . getUser ( ) . getStatus ( ) ) ;
statusComboBox . setTooltip ( new Tooltip ( " Change your current status " ) ) ;
statusComboBox . setOnAction ( e - > {
final var status = statusComboBox . getValue ( ) ;
if ( status = = null ) return ;
else {
final var user = context . getLocalDB ( ) . getUser ( ) ;
user . setStatus ( status ) ;
// TODO update status in ChatScene
context . getClient ( ) . send ( new UserStatusChange ( user . getID ( ) , status ) ) ;
}
} ) ;
getChildren ( ) . add ( statusComboBox ) ;
}
2020-09-23 23:11:32 +02:00
final var logoutButton = new Button ( " Logout " ) ;
logoutButton . setOnAction ( e - > ShutdownHelper . logout ( ) ) ;
final var logoutTooltip = new Tooltip ( " Brings you back to the login screen and removes \" remember me \" status from this account " ) ;
logoutTooltip . setWrapText ( true ) ;
logoutButton . setTooltip ( logoutTooltip ) ;
getChildren ( ) . add ( logoutButton ) ;
2020-04-18 16:04:47 +02:00
}
2020-04-18 12:03:32 +02:00
}