From 8ba6f1b17794600a8103b3e4e819544f4749a7cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tomasz=20P=C3=B3=C5=82grabia?= <tomasz.polgrabia@gmail.com>
Date: Sat, 8 Oct 2016 18:01:03 +0200
Subject: [PATCH] Replaced old callbacks with EventBus and removed old callback
 interfaces.

---
 .../callbacks/StandardLocationListener.java   | 37 -------------------
 .../panoramio/PanoramioLocationCallback.java  | 13 ++-----
 .../panoramio/PanoramioProviderCallback.java  | 14 ++-----
 .../callbacks/wiki/WikiLocationCallback.java  | 10 ++---
 .../WikiLocationProviderStatusCallback.java   | 11 +++---
 .../fragments/WikiLocationsFragment.java      | 12 ++++--
 .../callback/ProviderStatusCallback.java      |  8 ----
 .../StandardLocationListenerCallback.java     | 11 ------
 8 files changed, 27 insertions(+), 89 deletions(-)
 delete mode 100644 panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/ProviderStatusCallback.java
 delete mode 100644 urbanexplorerutils/src/main/java/pl/tpolgrabia/urbanexplorerutils/callbacks/StandardLocationListenerCallback.java

diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/StandardLocationListener.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/StandardLocationListener.java
index ddf062a..ddb2214 100644
--- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/StandardLocationListener.java
+++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/StandardLocationListener.java
@@ -8,24 +8,16 @@ import android.widget.Toast;
 import org.greenrobot.eventbus.EventBus;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import pl.tpolgrabia.panoramiobindings.callback.ProviderStatusCallback;
 import pl.tpolgrabia.urbanexplorer.events.LocationChangedEventBuilder;
 import pl.tpolgrabia.urbanexplorer.events.ProviderStatusChangedEventBuilder;
-import pl.tpolgrabia.urbanexplorerutils.callbacks.StandardLocationListenerCallback;
 import pl.tpolgrabia.urbanexplorerutils.utils.LocationUtils;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * Created by tpolgrabia on 28.08.16.
  */
 public class StandardLocationListener implements LocationListener {
     private static final Logger lg = LoggerFactory.getLogger(StandardLocationListener.class);
     private final Context ctx;
-    private List<StandardLocationListenerCallback> locationChangedCallbacks = new ArrayList<>();
-    private List<ProviderStatusCallback>
-            providerStatusCallbacks = new ArrayList<>();
 
     public StandardLocationListener(Context ctx) {
         this.ctx = ctx;
@@ -34,9 +26,6 @@ public class StandardLocationListener implements LocationListener {
     @Override
     public void onLocationChanged(Location location) {
         lg.info("Location provider changed: {}", location);
-        for (StandardLocationListenerCallback callback : locationChangedCallbacks) {
-            callback.callback(location);
-        }
         Toast.makeText(ctx, "Location changed " + location, Toast.LENGTH_LONG).show();
         LocationUtils.updateLastLocationUPdate(ctx);
         EventBus.getDefault().post(
@@ -55,9 +44,6 @@ public class StandardLocationListener implements LocationListener {
     public void onProviderEnabled(String provider) {
         lg.info("Provider {} enabled", provider);
 
-        for (ProviderStatusCallback callback : providerStatusCallbacks){
-            callback.callback(provider, true);
-        }
         EventBus.getDefault().post(
             new ProviderStatusChangedEventBuilder()
                 .setProvider(provider)
@@ -70,10 +56,6 @@ public class StandardLocationListener implements LocationListener {
     public void onProviderDisabled(String provider) {
         lg.info("Provider {} disabled", provider);
 
-        for (ProviderStatusCallback callback : providerStatusCallbacks){
-            callback.callback(provider, false);
-        }
-
         EventBus.getDefault().post(
             new ProviderStatusChangedEventBuilder()
                 .setProvider(provider)
@@ -82,23 +64,4 @@ public class StandardLocationListener implements LocationListener {
         );
     }
 
-    public void addCallback(StandardLocationListenerCallback callback) {
-        lg.trace("Location added callback");
-        locationChangedCallbacks.add(callback);
-    }
-
-    public boolean removeCallback(StandardLocationListenerCallback callback) {
-        lg.trace("Location removed callback");
-        return locationChangedCallbacks.remove(callback);
-    }
-
-    public void addProviderCallback(ProviderStatusCallback callback) {
-        lg.trace("Provider added callback");
-        providerStatusCallbacks.add(callback);
-    }
-
-    public void removeProviderCallback(ProviderStatusCallback callback) {
-        lg.trace("Provider removed calback");
-        providerStatusCallbacks.remove(callback);
-    }
 }
diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioLocationCallback.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioLocationCallback.java
index 3fd00d3..c7db1ae 100644
--- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioLocationCallback.java
+++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioLocationCallback.java
@@ -1,13 +1,11 @@
 package pl.tpolgrabia.urbanexplorer.callbacks.panoramio;
 
-import android.location.Location;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo;
 import pl.tpolgrabia.urbanexplorer.events.LocationChangedEvent;
-import pl.tpolgrabia.urbanexplorerutils.callbacks.StandardLocationListenerCallback;
 import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment;
 import pl.tpolgrabia.urbanexplorerutils.events.RefreshEvent;
 
@@ -16,7 +14,7 @@ import java.util.ArrayList;
 /**
  * Created by tpolgrabia on 21.09.16.
  */
-public class PanoramioLocationCallback implements StandardLocationListenerCallback {
+public class PanoramioLocationCallback {
     private static final Logger lg = LoggerFactory.getLogger(PanoramioLocationCallback.class);
     private HomeFragment homeFragment;
 
@@ -24,15 +22,10 @@ public class PanoramioLocationCallback implements StandardLocationListenerCallba
         this.homeFragment = homeFragment;
     }
 
-    @Override
-    public void callback(Location location) {
+    @Subscribe
+    public void handleLocationChanged(LocationChangedEvent event) {
         homeFragment.setNoMorePhotos(false);
         homeFragment.setPhotos(new ArrayList<PanoramioImageInfo>());
         EventBus.getDefault().post(new RefreshEvent(this));
     }
-
-    @Subscribe
-    public void handleLocationChanged(LocationChangedEvent event) {
-        callback(event.getLocation());
-    }
 }
diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioProviderCallback.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioProviderCallback.java
index e314131..0b58bd7 100644
--- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioProviderCallback.java
+++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioProviderCallback.java
@@ -4,7 +4,6 @@ import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import pl.tpolgrabia.panoramiobindings.callback.ProviderStatusCallback;
 import pl.tpolgrabia.urbanexplorer.events.ProviderStatusChangedEvent;
 import pl.tpolgrabia.urbanexplorerutils.events.RefreshEvent;
 import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment;
@@ -12,7 +11,7 @@ import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment;
 /**
  * Created by tpolgrabia on 21.09.16.
  */
-public class PanoramioProviderCallback implements ProviderStatusCallback {
+public class PanoramioProviderCallback {
     private static final Logger lg = LoggerFactory.getLogger(PanoramioProviderCallback.class);
     private HomeFragment homeFragment;
 
@@ -20,16 +19,11 @@ public class PanoramioProviderCallback implements ProviderStatusCallback {
         this.homeFragment = homeFragment;
     }
 
-    @Override
-    public void callback(String provider, boolean enabled) {
-        if (enabled) {
+    @Subscribe
+    public void handleProviderStatusChanged(ProviderStatusChangedEvent event) {
+        if (event.isEnabled()) {
             lg.trace("Handling provider enabling - refreshing panoramio listing");
             EventBus.getDefault().post(new RefreshEvent(this));
         }
     }
-
-    @Subscribe
-    public void handleProviderStatusChanged(ProviderStatusChangedEvent event) {
-        callback(event.getProvider(), event.isEnabled());
-    }
 }
diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/wiki/WikiLocationCallback.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/wiki/WikiLocationCallback.java
index a9d93ff..68b526d 100644
--- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/wiki/WikiLocationCallback.java
+++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/wiki/WikiLocationCallback.java
@@ -1,7 +1,7 @@
 package pl.tpolgrabia.urbanexplorer.callbacks.wiki;
 
-import android.location.Location;
-import pl.tpolgrabia.urbanexplorerutils.callbacks.StandardLocationListenerCallback;
+import org.greenrobot.eventbus.Subscribe;
+import pl.tpolgrabia.urbanexplorer.events.LocationChangedEvent;
 import pl.tpolgrabia.wikibinding.dto.app.WikiAppObject;
 import pl.tpolgrabia.urbanexplorer.fragments.WikiLocationsFragment;
 
@@ -10,15 +10,15 @@ import java.util.ArrayList;
 /**
  * Created by tpolgrabia on 24.09.16.
  */
-public class WikiLocationCallback implements StandardLocationListenerCallback {
+public class WikiLocationCallback {
     private WikiLocationsFragment wikiLocationsFragment;
 
     public WikiLocationCallback(WikiLocationsFragment wikiLocationsFragment) {
         this.wikiLocationsFragment = wikiLocationsFragment;
     }
 
-    @Override
-    public void callback(Location location) {
+    @Subscribe
+    public void handleLocationChanged(LocationChangedEvent event) {
         wikiLocationsFragment.setLastFetchSize(-1);
         wikiLocationsFragment.setAppObjects(new ArrayList<WikiAppObject>());
         wikiLocationsFragment.updateLocationInfo();
diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/wiki/WikiLocationProviderStatusCallback.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/wiki/WikiLocationProviderStatusCallback.java
index 8f50fcd..e192be7 100644
--- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/wiki/WikiLocationProviderStatusCallback.java
+++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/wiki/WikiLocationProviderStatusCallback.java
@@ -1,14 +1,15 @@
 package pl.tpolgrabia.urbanexplorer.callbacks.wiki;
 
+import org.greenrobot.eventbus.Subscribe;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import pl.tpolgrabia.panoramiobindings.callback.ProviderStatusCallback;
+import pl.tpolgrabia.urbanexplorer.events.ProviderStatusChangedEvent;
 import pl.tpolgrabia.urbanexplorer.fragments.WikiLocationsFragment;
 
 /**
  * Created by tpolgrabia on 24.09.16.
  */
-public class WikiLocationProviderStatusCallback implements ProviderStatusCallback {
+public class WikiLocationProviderStatusCallback {
     private static final Logger lg = LoggerFactory.getLogger(WikiLocationProviderStatusCallback.class);
     private WikiLocationsFragment wikiLocationsFragment;
 
@@ -16,9 +17,9 @@ public class WikiLocationProviderStatusCallback implements ProviderStatusCallbac
         this.wikiLocationsFragment = wikiLocationsFragment;
     }
 
-    @Override
-    public void callback(String provider, boolean enabled) {
-        if (enabled) {
+    @Subscribe
+    public void handleProviderStatusChanged(ProviderStatusChangedEvent event) {
+        if (event.isEnabled()) {
             lg.trace("Handling provider enabling - refreshing wiki listing");
             wikiLocationsFragment.fetchWikiLocations();
         }
diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/WikiLocationsFragment.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/WikiLocationsFragment.java
index 12e627e..cbe6820 100644
--- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/WikiLocationsFragment.java
+++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/WikiLocationsFragment.java
@@ -47,6 +47,8 @@ public class WikiLocationsFragment extends Fragment {
     private String currentGeocodedLocation;
     private GeocoderUtils geocoderUtils;
     private WikiUtils wikiUtils;
+    private WikiLocationCallback locationHandler;
+    private WikiLocationProviderStatusCallback providerHandler;
 
     public WikiLocationsFragment() {
         // Required empty public constructor
@@ -78,10 +80,11 @@ public class WikiLocationsFragment extends Fragment {
         locationService = (LocationManager) getActivity().getSystemService(LOCATION_SERVICE);
         currentLocation = (TextView) inflatedView.findViewById(R.id.wiki_current_location);
 
-        MainActivity mainActivity = (MainActivity) getActivity();
-        mainActivity.getLocationCallback().addCallback(new WikiLocationCallback(this));
+        locationHandler = new WikiLocationCallback(this);
+        providerHandler = new WikiLocationProviderStatusCallback(this);
 
-        mainActivity.getLocationCallback().addProviderCallback(new WikiLocationProviderStatusCallback(this));
+        EventBus.getDefault().register(locationHandler);
+        EventBus.getDefault().register(providerHandler);
 
         ListView locations = (ListView) inflatedView.findViewById(R.id.wiki_places);
         locations.setOnItemLongClickListener(new FetchWikiLocationsCallback(WikiLocationsFragment.this, appObjects));
@@ -156,6 +159,9 @@ public class WikiLocationsFragment extends Fragment {
         EventBus.getDefault().unregister(this);
         lg.trace("onDestroy {}", System.identityHashCode(this));
 
+        EventBus.getDefault().unregister(locationHandler);
+        EventBus.getDefault().unregister(providerHandler);
+
         WikiCacheUtils.saveWikiObjectsToCache(getActivity(), appObjects);
     }
 
diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/ProviderStatusCallback.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/ProviderStatusCallback.java
deleted file mode 100644
index 8af864b..0000000
--- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/ProviderStatusCallback.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package pl.tpolgrabia.panoramiobindings.callback;
-
-/**
- * Created by Tomasz Półgrabia <tomasz.polgrabia@unicredit.eu> (c310702) on 19.09.2016.
- */
-public interface ProviderStatusCallback {
-    void callback(String provider, boolean enabled);
-}
diff --git a/urbanexplorerutils/src/main/java/pl/tpolgrabia/urbanexplorerutils/callbacks/StandardLocationListenerCallback.java b/urbanexplorerutils/src/main/java/pl/tpolgrabia/urbanexplorerutils/callbacks/StandardLocationListenerCallback.java
deleted file mode 100644
index 23d7564..0000000
--- a/urbanexplorerutils/src/main/java/pl/tpolgrabia/urbanexplorerutils/callbacks/StandardLocationListenerCallback.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package pl.tpolgrabia.urbanexplorerutils.callbacks;
-
-import android.location.Location;
-
-/**
- * Created by tpolgrabia on 28.08.16.
- */
-public interface StandardLocationListenerCallback {
-
-    void callback(Location location);
-}