Use event bus to change FCP interface configuration.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / Preferences.java
index f44e977..7edff1a 100644 (file)
 
 package net.pterodactylus.sone.core;
 
+import net.pterodactylus.sone.core.event.InsertionDelayChangedEvent;
 import net.pterodactylus.sone.fcp.FcpInterface;
 import net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired;
+import net.pterodactylus.sone.fcp.event.FcpInterfaceActivatedEvent;
+import net.pterodactylus.sone.fcp.event.FcpInterfaceDeactivatedEvent;
+import net.pterodactylus.sone.fcp.event.FullAccessRequiredChanged;
+
+import com.google.common.eventbus.EventBus;
 
 /**
  * Convenience interface for external classes that want to access the core’s
@@ -28,16 +34,11 @@ import net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired;
  */
 public class Preferences {
 
-       /** The wrapped options. */
+       private final EventBus eventBus;
        private final Options options;
 
-       /**
-        * Creates a new preferences object wrapped around the given options.
-        *
-        * @param options
-        *            The options to wrap
-        */
-       public Preferences(Options options) {
+       public Preferences(EventBus eventBus, Options options) {
+               this.eventBus = eventBus;
                this.options = options;
        }
 
@@ -72,6 +73,7 @@ public class Preferences {
         */
        public Preferences setInsertionDelay(Integer insertionDelay) {
                options.getIntegerOption("InsertionDelay").set(insertionDelay);
+               eventBus.post(new InsertionDelayChangedEvent(getInsertionDelay()));
                return this;
        }
 
@@ -345,6 +347,11 @@ public class Preferences {
         */
        public Preferences setFcpInterfaceActive(boolean fcpInterfaceActive) {
                options.getBooleanOption("ActivateFcpInterface").set(fcpInterfaceActive);
+               if (fcpInterfaceActive) {
+                       eventBus.post(new FcpInterfaceActivatedEvent());
+               } else {
+                       eventBus.post(new FcpInterfaceDeactivatedEvent());
+               }
                return this;
        }
 
@@ -369,7 +376,8 @@ public class Preferences {
         */
        public Preferences setFcpFullAccessRequired(FullAccessRequired fcpFullAccessRequired) {
                options.getIntegerOption("FcpFullAccessRequired").set((fcpFullAccessRequired != null) ? fcpFullAccessRequired.ordinal() : null);
+               eventBus.post(new FullAccessRequiredChanged(fcpFullAccessRequired));
                return this;
        }
 
-}
\ No newline at end of file
+}