diff --git a/app/build.gradle b/app/build.gradle index 54da986..7aff7d5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,7 +72,7 @@ dependencies { // workaround issue #73 exclude group: 'com.google.android', module: 'android' } - compile project(':panoramiobindings') + compile project(':urbanexplorerutils') compile project(':wikibinding') compile project(':googleutils') diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/MainActivity.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/MainActivity.java index f0eb78c..06b455f 100644 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/MainActivity.java +++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/MainActivity.java @@ -16,14 +16,10 @@ 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.panoramiobindings.utils.PanoramioUtils; import pl.tpolgrabia.urbanexplorer.activities.SettingsActivity; import pl.tpolgrabia.urbanexplorer.callbacks.StandardLocationListener; import pl.tpolgrabia.urbanexplorer.dto.MainActivityState; import pl.tpolgrabia.urbanexplorer.events.RefreshSettingsEvent; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; -import pl.tpolgrabia.urbanexplorer.fragments.PanoramioShowerFragment; import pl.tpolgrabia.urbanexplorer.fragments.PlacesFragment; import pl.tpolgrabia.urbanexplorer.fragments.WikiLocationsFragment; import pl.tpolgrabia.urbanexplorer.handlers.*; @@ -48,33 +44,27 @@ public class MainActivity extends ActionBarActivity { public static DisplayImageOptions rectOptions; private GestureDetectorCompat gestureDetector; - private MainActivityState currFrag = MainActivityState.PANORAMIO; + private MainActivityState currFrag = MainActivityState.WIKI; private StandardLocationListener locationCallback; private boolean locationServicesActivated = false; private GestureDetector.OnGestureListener swipeHandler; - private PanoramioImageInfo photoInfo; private ProgressDialog progressDlg; - private MainActivityState oldFrag = MainActivityState.PANORAMIO_SHOWER; + private MainActivityState oldFrag = MainActivityState.GOOGLE_PLACES; private boolean savedConfiguration; private static final Map switchFragmentActions = new HashMap<>(); private static final Map fragTags = new HashMap<>(); static { - fragTags.put(MainActivityState.PANORAMIO.getOrder(), HomeFragment.TAG); fragTags.put(MainActivityState.WIKI.getOrder(), WikiLocationsFragment.TAG); fragTags.put(MainActivityState.GOOGLE_PLACES.getOrder(), PlacesFragment.TAG); } public MainActivity() { - switchFragmentActions.put(MainActivityState.PANORAMIO_SHOWER, new PanoramioShowerSwitchHandler(this)); - switchFragmentActions.put(MainActivityState.PANORAMIO, new PanoramioSwitchHandler(this)); switchFragmentActions.put(MainActivityState.WIKI, new WikiSwitchHandler(this)); switchFragmentActions.put(MainActivityState.GOOGLE_PLACES, new GooglePlacesSwitchHandler(this)); } - private List photos; - public StandardLocationListener getLocationCallback() { return locationCallback; } @@ -105,7 +95,7 @@ public class MainActivity extends ActionBarActivity { HelperUtils.initErrorAndDebugHanlers(this); NetUtils.setGlobalProxyAuth(this); - currFrag = MainActivityState.PANORAMIO; + currFrag = MainActivityState.WIKI; progressDlg = new ProgressDialog(this); progressDlg.setCancelable(false); @@ -119,12 +109,11 @@ public class MainActivity extends ActionBarActivity { // init fragments MainActivityState fragId = savedInstanceState != null ? (MainActivityState)savedInstanceState.getSerializable(AppConstants.FRAG_ID) - : MainActivityState.PANORAMIO; + : MainActivityState.WIKI; lg.trace("Restored orig frag id: {}", fragId); - currFrag = fragId == null ? MainActivityState.PANORAMIO : fragId; + currFrag = fragId == null ? MainActivityState.WIKI : fragId; lg.trace("Set final frag id: {}", fragId); - photoInfo = savedInstanceState != null ? (PanoramioImageInfo) savedInstanceState.getSerializable(AppConstants.PHOTO_INFO) : null; boolean copySavedConfiguration = savedConfiguration = savedInstanceState != null && savedInstanceState.getBoolean(AppConstants.SAVED_CONFIG_KEY); @@ -137,13 +126,6 @@ public class MainActivity extends ActionBarActivity { public void onBackPressed() { lg.debug("Back pressed"); - switch(currFrag) { - case PANORAMIO_SHOWER: - photoInfo = null; - currFrag = MainActivityState.PANORAMIO; - break; - } - super.onBackPressed(); } @@ -189,43 +171,6 @@ public class MainActivity extends ActionBarActivity { EventBus.getDefault().post(new RefreshEvent(this)); } - public void resetPhotoInfo() { - this.photoInfo = null; - } - - public void switchToPhoto(PanoramioImageInfo photoInfo) { - this.photoInfo = photoInfo; - this.currFrag = MainActivityState.PANORAMIO_SHOWER; - FragmentManager fragmentManager = getSupportFragmentManager(); - FragmentTransaction ctx = fragmentManager.beginTransaction(); - - ctx.setCustomAnimations(R.anim.slide_in_down, - R.anim.slide_out_down, - R.anim.slide_in_up, - R.anim.slide_out_up); - Fragment frag = fragmentManager.findFragmentByTag(PanoramioShowerFragment.TAG); - - if (frag != null) { - ctx.replace(R.id.fragments, frag); - } else { - Fragment panoramioShower = createShowerFragment(photoInfo); - ctx.replace(R.id.fragments, panoramioShower, PanoramioShowerFragment.TAG); - } - if (!savedConfiguration) { - ctx.addToBackStack(AppConstants.PHOTO_BACKSTACK); - } - - ctx.commit(); - - } - - public static PanoramioShowerFragment createShowerFragment(PanoramioImageInfo photoInfo) { - PanoramioShowerFragment panoramioShower = new PanoramioShowerFragment(); - Bundle arguments = new Bundle(); - arguments.putSerializable(PanoramioShowerFragment.PANORAMIO_PHOTO_ARG_KEY, photoInfo); - panoramioShower.setArguments(arguments); - return panoramioShower; - } private void switchFragment() { @@ -233,10 +178,6 @@ public class MainActivity extends ActionBarActivity { return; } - if (!savedConfiguration) { - photoInfo = null; - } - Runnable switchAction = switchFragmentActions.get(currFrag); if (switchAction != null) { switchAction.run(); @@ -385,7 +326,6 @@ public class MainActivity extends ActionBarActivity { super.onSaveInstanceState(outState); lg.trace("1 Saving current fragment id: {}", currFrag); outState.putSerializable(AppConstants.FRAG_ID, currFrag); - outState.putSerializable(AppConstants.PHOTO_INFO, photoInfo); outState.putBoolean(AppConstants.SAVED_CONFIG_KEY, true); lg.trace("2 Saving current fragment id: {}", currFrag); } @@ -402,14 +342,6 @@ public class MainActivity extends ActionBarActivity { lg.trace("onStart {}", System.identityHashCode(this)); } - public void setPhotos(List photos) { - this.photos = photos; - } - - public PanoramioImageInfo getPhotoInfo() { - return photoInfo; - } - @Subscribe public void handleLoadingStart(DataLoadingStartEvent event) { progressDlg.show(); diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/geocoder/GeocodedLocationCallback.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/geocoder/GeocodedLocationCallback.java deleted file mode 100644 index f4377b8..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/geocoder/GeocodedLocationCallback.java +++ /dev/null @@ -1,27 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.callbacks.geocoder; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.googleutils.callback.LocationGeoCoderCallback; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; - -/** - * Created by tpolgrabia on 21.09.16. - */ -public class GeocodedLocationCallback implements LocationGeoCoderCallback { - private static final Logger lg = LoggerFactory.getLogger(GeocodedLocationCallback.class); - private HomeFragment homeFragment; - - public GeocodedLocationCallback(HomeFragment homeFragment) { - this.homeFragment = homeFragment; - } - - @Override - public void callback(int code, String message, String googleStatus, String geocodedLocation) { - lg.debug("Geocoded result code {}, message {}, status: {}, value {}", - code, message, googleStatus, geocodedLocation); - - homeFragment.setCurrentGeocodedLocation(geocodedLocation); - homeFragment.updateLocationInfo(); - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/FetchAdditionalPanoramioPhotosCallback.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/FetchAdditionalPanoramioPhotosCallback.java deleted file mode 100644 index dcdbfef..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/FetchAdditionalPanoramioPhotosCallback.java +++ /dev/null @@ -1,77 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.callbacks.panoramio; - -import android.support.v4.app.FragmentActivity; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.ListView; -import android.widget.Toast; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.panoramiobindings.callback.PanoramioResponseCallback; -import pl.tpolgrabia.panoramiobindings.callback.PanoramioResponseStatus; -import pl.tpolgrabia.urbanexplorer.R; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; -import pl.tpolgrabia.urbanexplorer.fragments.PanoramioAdapter; - -import java.util.List; - -/** - * Created by tpolgrabia on 21.09.16. - */ -public class FetchAdditionalPanoramioPhotosCallback implements PanoramioResponseCallback { - private static final Logger lg = LoggerFactory.getLogger(FetchAdditionalPanoramioPhotosCallback.class); - private HomeFragment homeFragment; - private final FragmentActivity activity; - - public FetchAdditionalPanoramioPhotosCallback(HomeFragment homeFragment, FragmentActivity activity) { - this.homeFragment = homeFragment; - this.activity = activity; - } - - @Override - public void callback(PanoramioResponseStatus status, List images, Long imagesCount) { - try { - lg.debug("Fetched with status: {}, images: {}, count: {}", status, images, imagesCount); - if (status != PanoramioResponseStatus.SUCCESS) { - return; - } - - final View view = homeFragment.getView(); - if (view == null) { - lg.debug("View still not initialized"); - return; - } - - ListView locations = (ListView) view.findViewById(R.id.locations); - if (locations == null) { - lg.trace("Empty locations"); - return; - } - ArrayAdapter adapter = (ArrayAdapter) locations.getAdapter(); - homeFragment.addPhotos(images); - lg.debug("Additional Photos size {} loaded. There are {} photos", images.size(), homeFragment.getPhotosCount()); - - if (homeFragment.getPhotosCount() <= 0) { - Toast.makeText(homeFragment.getActivity(), "No results", Toast.LENGTH_SHORT).show(); - } - - homeFragment.setNoMorePhotos(images.isEmpty()); - if (adapter == null) { - locations.setAdapter(new PanoramioAdapter(activity, R.id.list_item, images)); - } else { - adapter.addAll(images); - } - - // TODO we can think about removing first items also and last if the number - // TODO of items exceeds the limit (to save the memory) - - lg.debug("Finished Fetching additional photos count: {}", homeFragment.getPhotosCount()); - - } finally { - lg.trace("Releasing fetching lock"); - homeFragment.getLoading().release(); - } - - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/FetchPanoramioPhotosCallback.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/FetchPanoramioPhotosCallback.java deleted file mode 100644 index 6dbbb27..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/FetchPanoramioPhotosCallback.java +++ /dev/null @@ -1,68 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.callbacks.panoramio; - -import android.support.v4.app.FragmentActivity; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.ListView; -import android.widget.Toast; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.panoramiobindings.callback.PanoramioResponseCallback; -import pl.tpolgrabia.panoramiobindings.callback.PanoramioResponseStatus; -import pl.tpolgrabia.urbanexplorer.MainActivity; -import pl.tpolgrabia.urbanexplorer.R; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; -import pl.tpolgrabia.urbanexplorer.fragments.PanoramioAdapter; - -import java.util.List; - -/** - * Created by tpolgrabia on 21.09.16. - */ -public class FetchPanoramioPhotosCallback implements PanoramioResponseCallback { - private static final Logger lg = LoggerFactory.getLogger(FetchPanoramioPhotosCallback.class); - - private HomeFragment homeFragment; - private final FragmentActivity activity; - - - public FetchPanoramioPhotosCallback(HomeFragment homeFragment, FragmentActivity activity) { - this.homeFragment = homeFragment; - this.activity = activity; - } - - @Override - public void callback(PanoramioResponseStatus status, List images, Long imagesCount) { - - lg.trace("Panoramio response status {}, images: {}, imagesCount: {}", - status, - images, - imagesCount); - - ArrayAdapter adapter = new PanoramioAdapter(activity, - R.layout.location_item, - images); - - if (images.isEmpty()) { - Toast.makeText(homeFragment.getActivity(), "No results", Toast.LENGTH_SHORT).show(); - } - final View view = homeFragment.getView(); - if (view == null) { - lg.trace("Fragment's view is not initialized"); - return; - } - - ListView locations = (ListView) view.findViewById(R.id.locations); - locations.setAdapter(adapter); - MainActivity mainActivity = (MainActivity) homeFragment.getActivity(); - if (mainActivity == null) { - return; - } - - mainActivity.setPhotos(images); - - lg.trace("Photos size: {}", homeFragment.getPhotosCount()); - mainActivity.hideProgress(); - } -} 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 deleted file mode 100644 index c7db1ae..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioLocationCallback.java +++ /dev/null @@ -1,31 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.callbacks.panoramio; - -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.urbanexplorer.fragments.HomeFragment; -import pl.tpolgrabia.urbanexplorerutils.events.RefreshEvent; - -import java.util.ArrayList; - -/** - * Created by tpolgrabia on 21.09.16. - */ -public class PanoramioLocationCallback { - private static final Logger lg = LoggerFactory.getLogger(PanoramioLocationCallback.class); - private HomeFragment homeFragment; - - public PanoramioLocationCallback(HomeFragment homeFragment) { - this.homeFragment = homeFragment; - } - - @Subscribe - public void handleLocationChanged(LocationChangedEvent event) { - homeFragment.setNoMorePhotos(false); - homeFragment.setPhotos(new ArrayList()); - EventBus.getDefault().post(new RefreshEvent(this)); - } -} 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 deleted file mode 100644 index 0b58bd7..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/callbacks/panoramio/PanoramioProviderCallback.java +++ /dev/null @@ -1,29 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.callbacks.panoramio; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.urbanexplorer.events.ProviderStatusChangedEvent; -import pl.tpolgrabia.urbanexplorerutils.events.RefreshEvent; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; - -/** - * Created by tpolgrabia on 21.09.16. - */ -public class PanoramioProviderCallback { - private static final Logger lg = LoggerFactory.getLogger(PanoramioProviderCallback.class); - private HomeFragment homeFragment; - - public PanoramioProviderCallback(HomeFragment homeFragment) { - this.homeFragment = homeFragment; - } - - @Subscribe - public void handleProviderStatusChanged(ProviderStatusChangedEvent event) { - if (event.isEnabled()) { - lg.trace("Handling provider enabling - refreshing panoramio listing"); - EventBus.getDefault().post(new RefreshEvent(this)); - } - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/dto/MainActivityState.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/dto/MainActivityState.java index 36a0835..02c7da0 100644 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/dto/MainActivityState.java +++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/dto/MainActivityState.java @@ -4,10 +4,8 @@ package pl.tpolgrabia.urbanexplorer.dto; * Created by tpolgrabia on 19.09.16. */ public enum MainActivityState { - PANORAMIO(0), WIKI(1), - GOOGLE_PLACES(2), - PANORAMIO_SHOWER(-1); + GOOGLE_PLACES(2); private final Integer order; diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/dto/panoramio/PanoramioCacheDto.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/dto/panoramio/PanoramioCacheDto.java deleted file mode 100644 index 01dc7ab..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/dto/panoramio/PanoramioCacheDto.java +++ /dev/null @@ -1,70 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.dto.panoramio; - -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; - -import java.io.Serializable; -import java.util.Date; -import java.util.List; - -/** - * Created by tpolgrabia on 18.09.16. - */ -public class PanoramioCacheDto implements Serializable{ - private static final long serialVersionUID = -8856222832500878380L; - private List panoramioImages; - private Double latitude; - private Double longitude; - private Double altitude; - private Date fetchedAt; - - public Date getFetchedAt() { - return fetchedAt; - } - - public void setFetchedAt(Date fetchedAt) { - this.fetchedAt = fetchedAt; - } - - public List getPanoramioImages() { - return panoramioImages; - } - - public void setPanoramioImages(List panoramioImages) { - this.panoramioImages = panoramioImages; - } - - public Double getLatitude() { - return latitude; - } - - public void setLatitude(Double latitude) { - this.latitude = latitude; - } - - public Double getLongitude() { - return longitude; - } - - public void setLongitude(Double longitude) { - this.longitude = longitude; - } - - public Double getAltitude() { - return altitude; - } - - public void setAltitude(Double altitude) { - this.altitude = altitude; - } - - @Override - public String toString() { - return "PanoramioCacheDto{" + - "panoramioImages=" + panoramioImages + - ", latitude=" + latitude + - ", longitude=" + longitude + - ", altitude=" + altitude + - ", fetchedAt=" + fetchedAt + - '}'; - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/events/PhotoInfoUpdateEvent.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/events/PhotoInfoUpdateEvent.java deleted file mode 100644 index 47cd7bc..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/events/PhotoInfoUpdateEvent.java +++ /dev/null @@ -1,41 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.events; - -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; -import pl.tpolgrabia.urbanexplorer.handlers.PanoramioItemLongClickHandler; - -/** - * Created by tpolgrabia on 26.10.16. - */ -public class PhotoInfoUpdateEvent { - private Object source; - private PanoramioImageInfo photoInfo; - - public PhotoInfoUpdateEvent(Object source, PanoramioImageInfo photoInfo) { - this.source = source; - this.photoInfo = photoInfo; - } - - public Object getSource() { - return source; - } - - public void setSource(Object source) { - this.source = source; - } - - public PanoramioImageInfo getPhotoInfo() { - return photoInfo; - } - - public void setPhotoInfo(PanoramioImageInfo photoInfo) { - this.photoInfo = photoInfo; - } - - @Override - public String toString() { - return "PhotoInfoUpdateEvent{" + - "source=" + source + - ", photoInfo=" + photoInfo + - '}'; - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/HomeFragment.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/HomeFragment.java deleted file mode 100644 index bff6aa8..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/HomeFragment.java +++ /dev/null @@ -1,308 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.fragments; - -import android.location.Location; -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentActivity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ListView; -import android.widget.TextView; -import android.widget.Toast; -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.googleutils.utils.GeocoderUtils; -import pl.tpolgrabia.panoramiobindings.utils.PanoramioUtils; -import pl.tpolgrabia.urbanexplorer.AppConstants; -import pl.tpolgrabia.urbanexplorer.MainActivity; -import pl.tpolgrabia.urbanexplorer.R; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; -import pl.tpolgrabia.urbanexplorer.callbacks.geocoder.GeocodedLocationCallback; -import pl.tpolgrabia.urbanexplorer.callbacks.panoramio.FetchAdditionalPanoramioPhotosCallback; -import pl.tpolgrabia.urbanexplorer.callbacks.panoramio.PanoramioLocationCallback; -import pl.tpolgrabia.urbanexplorer.callbacks.panoramio.PanoramioProviderCallback; -import pl.tpolgrabia.urbanexplorer.dto.PanoramioRequest; -import pl.tpolgrabia.urbanexplorer.worker.PanoramioWorker; -import pl.tpolgrabia.urbanexplorerutils.events.DataLoadingFinishEvent; -import pl.tpolgrabia.urbanexplorerutils.events.RefreshEvent; -import pl.tpolgrabia.urbanexplorer.handlers.PanoramioItemLongClickHandler; -import pl.tpolgrabia.urbanexplorer.handlers.PanoramioLocationsScrollListener; -import pl.tpolgrabia.urbanexplorer.utils.*; -import pl.tpolgrabia.urbanexplorerutils.utils.DebugUtils; -import pl.tpolgrabia.urbanexplorerutils.utils.LocationUtils; -import pl.tpolgrabia.urbanexplorerutils.utils.SettingsUtils; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.Semaphore; - -/** - * A simple {@link Fragment} subclass. - */ -public class HomeFragment extends Fragment { - - private static final Logger lg = LoggerFactory.getLogger(HomeFragment.class); - - public static final String TAG = HomeFragment.class.getSimpleName(); - public static final String PHOTO_LIST = "PHOTO_LIST_KEY"; - private boolean initialized = false; - private View inflatedView; - private Semaphore loading; - private ArrayList photos; - private boolean noMorePhotos; - private String currentGeocodedLocation; - private GeocoderUtils geocoderUtils; - private PanoramioLocationCallback locationChangedHandler; - private PanoramioProviderCallback providerChangedHandler; - - public HomeFragment() { - // Required empty public constructor - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - lg.trace("onCreate {}", System.identityHashCode(this)); - EventBus.getDefault().register(this); - loading = new Semaphore(1, true); - noMorePhotos = false; - updateLocationInfo(); - } - - @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - locationChangedHandler = new PanoramioLocationCallback(this); - providerChangedHandler = new PanoramioProviderCallback(this); - - EventBus.getDefault().register(locationChangedHandler); - EventBus.getDefault().register(providerChangedHandler); - - geocoderUtils = new GeocoderUtils(getActivity(), AppConstants.GOOGLE_API_KEY); - } - - public void updateGeocodedLocation() { - if (getActivity() == null) { - lg.debug("Activity still not attached"); - return; - } - - Location currLocation = LocationUtils.getLastKnownLocation(getActivity()); - lg.debug("Current location is {}", currLocation); - if (currLocation == null) { - lg.debug("Current location is not available"); - return; - } - - geocoderUtils.getGeoCodedLocation( - currLocation.getLatitude(), - currLocation.getLongitude(), - new GeocodedLocationCallback(this)); - - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - lg.trace("TAG: {}", getTag()); - DebugUtils.dumpFragments(getFragmentManager().getFragments()); - - inflatedView = inflater.inflate(R.layout.fragment_home, container, false); - ListView locations = (ListView)inflatedView.findViewById(R.id.locations); - final ListView finalLocations = locations; - locations.setOnItemLongClickListener(new PanoramioItemLongClickHandler(this, finalLocations)); - - initialized = true; - - lg.trace("Saved instance state {}", savedInstanceState); - if (photos == null) { - photos = PanoramioCacheUtils.loadPhotosFromCache(this, savedInstanceState); - } - - locations.setAdapter(new PanoramioAdapter(getActivity(), R.layout.location_item, photos)); - lg.trace("Photos initialized {}", photos); - - lg.trace("Photos size: {}", photos.size()); - locations.setOnScrollListener(new PanoramioLocationsScrollListener(this)); - return inflatedView; - } - - public void fetchAdditionalPhotos() throws InterruptedException { - final FragmentActivity activity = getActivity(); - if (activity == null) { - lg.trace("Activity shouldn't be null. No headless fragment"); - return; - } - MainActivity mainActivity = (MainActivity)getActivity(); - if (noMorePhotos) { - lg.trace("No more photos - last query was zero result"); - EventBus.getDefault().post(new DataLoadingFinishEvent(this)); - return; - } - if (!initialized) { - lg.trace("Fetching additional photos blocked till system is initialized"); - EventBus.getDefault().post(new DataLoadingFinishEvent(this)); - return; - } - if (getView() == null) { - lg.trace("Application still not initialized"); - EventBus.getDefault().post(new DataLoadingFinishEvent(this)); - return; - } - final Location location = LocationUtils.getLastKnownLocation(activity); - if (location == null) { - lg.info("Location still not available"); - Toast.makeText(activity, "Location still not available", Toast.LENGTH_SHORT).show(); - EventBus.getDefault().post(new DataLoadingFinishEvent(this)); - return; - } - lg.trace("Fetching additional photos. Trying loading acquirng lock"); - if (!loading.tryAcquire()) { - lg.info("Fetching additional photos. Loading in progress"); - return; - } - int offset = photos.size(); - lg.debug("Fetching additional photos offset: {}, count: {}", offset, SettingsUtils.getPanoramioBulkDataSize(getActivity())); - PanoramioUtils.fetchPanoramioImages( - activity, - location.getLatitude(), - location.getLongitude(), - SettingsUtils.fetchRadiusX(getActivity()), - SettingsUtils.fetchRadiusY(getActivity()), - (long)(offset), - fetchLocationPageSize(), - new FetchAdditionalPanoramioPhotosCallback(this, activity) - ); - } - - private Long fetchLocationPageSize() { - return Long.valueOf(SettingsUtils.getPanoramioBulkDataSize(getActivity())); - } - - @Override - public void onResume() { - super.onResume(); - getActivity().setTitle("Panoramio search"); - lg.trace("onResume"); - if (currentGeocodedLocation != null) { - updateLocationInfo(); - } - else { - updateGeocodedLocation(); - } - } - - public void updateLocationInfo() { - lg.trace("Update locations info"); - final View view = getView(); - if (view == null) { - lg.warn("Fragment has no view"); - return; - } - final TextView locationInfo = (TextView) view.findViewById(R.id.locationInfo); - final FragmentActivity activity = getActivity(); - if (activity == null) { - lg.warn("Activity should'nt be null. No headless fragment"); - return; - } - final Location currLocation = LocationUtils.getLastKnownLocation(activity); - lg.trace("Current location: {}, locationInfo: {}", currLocation, locationInfo); - locationInfo.setText(currentGeocodedLocation); - } - - @Override - public void onDestroy() { - super.onDestroy(); - lg.trace("onDestroy"); - EventBus.getDefault().unregister(this); - PanoramioCacheUtils.savePhotosToCache(getActivity(), photos); - - // FIXME true reason is that hot swapping doesn't fire the activityCreated event while it was recreated - if (locationChangedHandler != null) { - // FIXME only avoiding crash - EventBus.getDefault().unregister(locationChangedHandler); - } - if (providerChangedHandler != null) { - // FIXME only avoiding crash - EventBus.getDefault().unregister(providerChangedHandler); - } - } - - @Override - public void onSaveInstanceState(Bundle outState) { - lg.trace("Saving state"); - super.onSaveInstanceState(outState); - outState.putSerializable(PHOTO_LIST, photos); - lg.trace("Saved photos: {}", photos); - } - - @Subscribe - public void refresh(RefreshEvent refreshEvent) { - lg.debug("Refreshing event..."); - lg.trace("Fetch panoramio photos"); - final FragmentActivity activity = getActivity(); - if (activity == null) { - lg.warn("Activity shouldn't be null. It isn't headless fragment"); - return; - } - - final Location location = LocationUtils.getLastKnownLocation(activity); - if (location == null) { - lg.info("Location is still not available"); - EventBus.getDefault().post(new DataLoadingFinishEvent(this)); - Toast.makeText(getActivity(), "Location is still not available", Toast.LENGTH_SHORT).show(); - return; - } - - PanoramioRequest req = new PanoramioRequest(); - req.setLatitude(location.getLatitude()); - req.setLongitude(location.getLongitude()); - req.setOffset(0L); - req.setCount(fetchLocationPageSize()); - req.setRadiusX(SettingsUtils.fetchRadiusX(getActivity())); - req.setRadiusY(SettingsUtils.fetchRadiusY(getActivity())); - new PanoramioWorker(this).execute(req); - -// PanoramioUtils.fetchPanoramioImages( -// activity, -// location.getLatitude(), -// location.getLongitude(), -// SettingsUtils.fetchRadiusX(getActivity()), -// SettingsUtils.fetchRadiusY(getActivity()), -// 0L, -// fetchLocationPageSize(), -// new FetchPanoramioPhotosCallback(this, activity) -// ); - } - - public Semaphore getLoading() { - return loading; - } - - public void setNoMorePhotos(boolean noMorePhotos) { - this.noMorePhotos = noMorePhotos; - } - - public int getPhotosCount() { - return photos.size(); - } - - public void addPhotos(List images) { - photos.addAll(images); - } - - public void setCurrentGeocodedLocation(String currentGeocodedLocation) { - this.currentGeocodedLocation = currentGeocodedLocation; - } - - public void setPhotos(ArrayList photos) { - this.photos = photos; - } - -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/LoginFragment.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/LoginFragment.java deleted file mode 100644 index 910f173..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/LoginFragment.java +++ /dev/null @@ -1,30 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.fragments; - - -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import pl.tpolgrabia.urbanexplorer.R; - -/** - * A simple {@link Fragment} subclass. - */ -public class LoginFragment extends Fragment { - - - public LoginFragment() { - // Required empty public constructor - } - - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_login, container, false); - } - -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioAdapter.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioAdapter.java deleted file mode 100644 index 67cbb32..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioAdapter.java +++ /dev/null @@ -1,71 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.fragments; - -import android.content.Context; -import android.graphics.BitmapFactory; -import android.support.v4.app.FragmentActivity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.TextView; -import com.androidquery.AQuery; -import com.nostra13.universalimageloader.core.ImageLoader; -import pl.tpolgrabia.urbanexplorer.MainActivity; -import pl.tpolgrabia.urbanexplorer.R; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; -import pl.tpolgrabia.urbanexplorerutils.utils.NetUtils; - -import java.util.List; - -/** - * Created by tpolgrabia on 27.08.16. - */ -public class PanoramioAdapter extends ArrayAdapter { - public static final int MAX_OWNERNAME_LENGTH = 10; - public static final int MAX_PANORAMIO_DESCRIPTION_LENGTH = 96; - - public PanoramioAdapter(FragmentActivity ctx, int location_item, List photosDescriptions) { - super(ctx, location_item, photosDescriptions); - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View itemView = convertView != null ? convertView : inflater.inflate(R.layout.location_item, parent, false); - final PanoramioImageInfo item = getItem(position); - - if (item.getPhotoId() != null && item.getPhotoId().equals(itemView.getTag())) { - // if it is the the same object f.e. add new objects to the collection (without the slide) - // the refresh makes blinking without this - return itemView; - } - - TextView locDesc = (TextView) itemView.findViewById(R.id.location_description); - itemView.setTag(item.getPhotoId()); - final String description = item.getPhotoTitle(); - final String trimmedDescription = - description != null && description.length() > MAX_PANORAMIO_DESCRIPTION_LENGTH - ? description.substring(0, MAX_PANORAMIO_DESCRIPTION_LENGTH) + "..." - : description; - locDesc.setText(trimmedDescription); - final String photoUrl = item.getPhotoFileUrl(); - ImageView photoImg = (ImageView) itemView.findViewById(R.id.photo_img); - photoImg.setImageBitmap(BitmapFactory.decodeResource(getContext().getResources(), R.drawable.noimage)); - ImageLoader.getInstance().displayImage(photoUrl, photoImg, MainActivity.options); - - - TextView authorWidget = (TextView) itemView.findViewById(R.id.location_author); - final String ownerName = item.getOwnerName(); - final String trimmedOwnerName = - ownerName != null && ownerName.length() > MAX_OWNERNAME_LENGTH - ? ownerName.substring(0, MAX_OWNERNAME_LENGTH) + "..." - : ownerName; - authorWidget.setText(trimmedOwnerName); - - TextView uploadDateWidget = (TextView) itemView.findViewById(R.id.location_upload_date); - uploadDateWidget.setText(item.getUploadDate()); - - return itemView; - } -} \ No newline at end of file diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioShowerFragment.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioShowerFragment.java deleted file mode 100644 index c9e6264..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/fragments/PanoramioShowerFragment.java +++ /dev/null @@ -1,155 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.fragments; - - -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentActivity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; -import com.nostra13.universalimageloader.core.ImageLoader; -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.MainActivity; -import pl.tpolgrabia.urbanexplorer.R; -import pl.tpolgrabia.urbanexplorer.events.PhotoInfoUpdateEvent; - -/** - * A simple {@link Fragment} subclass. - */ -public class PanoramioShowerFragment extends Fragment { - - private static final Logger lg = LoggerFactory.getLogger(PanoramioShowerFragment.class); - - - public static final String PANORAMIO_PHOTO_ARG_KEY = "PANORAMIO_PHOTO_ARG_KEY"; - public static final String TAG = "PANORAMIO_TAG"; - private TextView photoTitle; - private TextView photoUploadDate; - private TextView photoAuthor; - private TextView photoUrl; - private TextView photoLocation; - - public PanoramioShowerFragment() { - // Required empty public constructor - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - EventBus.getDefault().register(this); - lg.debug("Registering..."); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - Bundle arguments = getArguments(); - final View inflatedView = inflater.inflate(R.layout.fragment_panoramio_shower, container, false); - - if (arguments == null) { - return inflatedView; - } - - final PanoramioImageInfo imageInfo = (PanoramioImageInfo) arguments.getSerializable(PANORAMIO_PHOTO_ARG_KEY); - - if (imageInfo == null) { - return inflatedView; - } - - setContent(inflatedView, imageInfo); - - return inflatedView; - } - - private void setContent(View view, final PanoramioImageInfo imageInfo) { - if (imageInfo != null) { - ImageLoader.getInstance().displayImage( - imageInfo.getPhotoFileUrl(), - (ImageView) view.findViewById(R.id.photo_container), - MainActivity.rectOptions); - - photoTitle = (TextView)view.findViewById(R.id.photo_title); - photoTitle.setText(imageInfo.getPhotoTitle()); - - photoUploadDate = (TextView)view.findViewById(R.id.photo_upload); - photoUploadDate.setText(imageInfo.getUploadDate()); - - photoAuthor = (TextView)view.findViewById(R.id.photo_author); - photoAuthor.setText(imageInfo.getOwnerName()); - - photoUrl = (TextView)view.findViewById(R.id.photo_url); - photoUrl.setText(imageInfo.getPhotoUrl()); - photoUrl.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - Intent intent = new Intent(Intent.ACTION_VIEW, - Uri.parse(imageInfo.getPhotoUrl())); - startActivity(intent); - return true; - } - }); - - photoLocation = (TextView)view.findViewById(R.id.photo_location); - photoLocation.setText(imageInfo.getLatitude() + "," + imageInfo.getLongitude()); - photoLocation.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - Intent intent = new Intent(Intent.ACTION_VIEW, - Uri.parse("http://maps.google.com/maps?daddr=" + imageInfo.getLatitude() + "," + - imageInfo.getLongitude())); - startActivity(intent); - return true; - } - }); - - } - } - - @Subscribe - public void handlePhotoInfoUpdate(PhotoInfoUpdateEvent event) { - lg.debug("Photo event: {}", event); - if (getView() == null) { - lg.debug("View is not available"); - return; - } - - final PanoramioImageInfo photoInfo = event.getPhotoInfo(); - if (photoInfo == null) { - lg.debug("Photo info is not available"); - return; - } - - setContent(getView(), photoInfo); - - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( - 0, - LinearLayout.LayoutParams.MATCH_PARENT, - 1); - getView().setLayoutParams(params); - } - - @Override - public void onDestroy() { - super.onDestroy(); - - EventBus.getDefault().unregister(this); - lg.debug("Unregistering..."); - - FragmentActivity acc = getActivity(); - if (acc != null) { - MainActivity mainActivity = (MainActivity)acc; - mainActivity.resetPhotoInfo(); - } - } - -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioItemLongClickHandler.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioItemLongClickHandler.java deleted file mode 100644 index 64bdf1e..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioItemLongClickHandler.java +++ /dev/null @@ -1,53 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.handlers; - -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.LinearLayout; -import android.widget.ListView; -import org.greenrobot.eventbus.EventBus; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.panoramiobindings.utils.PanoramioUtils; -import pl.tpolgrabia.urbanexplorer.AppConstants; -import pl.tpolgrabia.urbanexplorer.MainActivity; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; -import pl.tpolgrabia.urbanexplorer.events.PhotoInfoUpdateEvent; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; -import pl.tpolgrabia.urbanexplorer.fragments.PanoramioAdapter; - -/** - * Created by tpolgrabia on 21.09.16. - */ -public class PanoramioItemLongClickHandler implements AdapterView.OnItemLongClickListener { - - private static final Logger lg = LoggerFactory.getLogger(PanoramioItemLongClickHandler.class); - - private HomeFragment homeFragment; - private final ListView finalLocations; - - public PanoramioItemLongClickHandler(HomeFragment homeFragment, ListView finalLocations) { - this.homeFragment = homeFragment; - this.finalLocations = finalLocations; - } - - @Override - public boolean onItemLongClick(AdapterView adapterView, View view, int pos, long rowId) { - PanoramioAdapter panAdapter = (PanoramioAdapter) finalLocations.getAdapter(); - PanoramioImageInfo photoInfo = panAdapter.getItem(pos); - MainActivity activity = (MainActivity) homeFragment.getActivity(); - if (PanoramioSwitchHandler.enoughLargeAndHorizontal(activity)) { - lg.debug("Sending panoramio image event"); - EventBus.getDefault().post(new PhotoInfoUpdateEvent(this, photoInfo)); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( - 0, - LinearLayout.LayoutParams.MATCH_PARENT, - 1); - View layout = homeFragment.getView(); - layout.setLayoutParams(params); - } else { - activity.switchToPhoto(photoInfo); - } - return false; - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioLocationsScrollListener.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioLocationsScrollListener.java deleted file mode 100644 index a94542d..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioLocationsScrollListener.java +++ /dev/null @@ -1,58 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.handlers; - -import android.view.View; -import android.widget.AbsListView; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; - -/** - * Created by tpolgrabia on 21.09.16. - */ -public class PanoramioLocationsScrollListener implements AbsListView.OnScrollListener { - - private static final Logger lg = LoggerFactory.getLogger(PanoramioLocationsScrollListener.class); - private HomeFragment homeFragment; - - public PanoramioLocationsScrollListener(HomeFragment homeFragment) { - this.homeFragment = homeFragment; - } - - @Override - public void onScrollStateChanged(AbsListView view, int scrollState) { - - } - - - @Override - public void onScroll(AbsListView view, - int firstVisibleItem, - int visibleItemCount, - int totalItemCount) { - - try { - - if (firstVisibleItem <= 0) { - // scrolled to the top - lg.trace("Scrolled to the top"); - } - - if (firstVisibleItem + visibleItemCount >= totalItemCount) { - lg.trace("Scrolled to the bottom"); - // scrolled to the bottom - final View fragView = homeFragment.getView(); - if (fragView == null) { - lg.trace("Frag still not initialized"); - return; - } - - homeFragment.fetchAdditionalPhotos(); - - } - - } catch (InterruptedException e) { - lg.error("Aquiring lock interrupted exception", e); - } - - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioShowerSwitchHandler.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioShowerSwitchHandler.java deleted file mode 100644 index d710a2c..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioShowerSwitchHandler.java +++ /dev/null @@ -1,24 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.handlers; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.urbanexplorer.MainActivity; - -/** - * Created by tpolgrabia on 21.09.16. - */ -public class PanoramioShowerSwitchHandler implements Runnable { - - private static final Logger lg = LoggerFactory.getLogger(PanoramioShowerSwitchHandler.class); - private final MainActivity mainActivity; - - public PanoramioShowerSwitchHandler(MainActivity mainActivity) { - this.mainActivity = mainActivity; - } - - @Override - public void run() { - lg.debug("Switching to panoramio shower"); - mainActivity.switchToPhoto(mainActivity.getPhotoInfo()); - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioSwitchHandler.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioSwitchHandler.java deleted file mode 100644 index 9477b9c..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/handlers/PanoramioSwitchHandler.java +++ /dev/null @@ -1,42 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.handlers; - -import android.app.Activity; -import android.content.Context; -import android.util.DisplayMetrics; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.panoramiobindings.utils.PanoramioUtils; -import pl.tpolgrabia.urbanexplorer.AppConstants; -import pl.tpolgrabia.urbanexplorer.MainActivity; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; -import pl.tpolgrabia.urbanexplorer.fragments.PanoramioShowerFragment; -import pl.tpolgrabia.urbanexplorer.fragments.WikiLocationsFragment; - -/** - * Created by tpolgrabia on 21.09.16. - */ -public class PanoramioSwitchHandler implements Runnable { - - private static final Logger lg = LoggerFactory.getLogger(PanoramioSwitchHandler.class); - private final MainActivity mainActivity; - - public PanoramioSwitchHandler(MainActivity mainActivity) { - this.mainActivity = mainActivity; - } - - @Override - public void run() { - lg.debug("Switching to home fragment"); - mainActivity.switchFragment(new HomeFragment(), HomeFragment.TAG); - if (enoughLargeAndHorizontal(mainActivity)) { - mainActivity.addFragment(MainActivity.createShowerFragment(null), PanoramioShowerFragment.TAG); - // mainActivity.addFragment(new WikiLocationsFragment(), WikiLocationsFragment.TAG); - } - } - - public static boolean enoughLargeAndHorizontal(Activity ctx) { - DisplayMetrics metrics = PanoramioUtils.calcMetrics(ctx); - return metrics.widthPixels >= metrics.heightPixels // horizontal - && PanoramioUtils.calcDiag(ctx) >= AppConstants.PANORAMIO_SHOWER_SIDEBAR_THRESHOLD; - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/utils/PanoramioCacheUtils.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/utils/PanoramioCacheUtils.java deleted file mode 100644 index 098bd8d..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/utils/PanoramioCacheUtils.java +++ /dev/null @@ -1,126 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.utils; - -import android.content.Context; -import android.location.Location; -import android.os.Bundle; -import com.google.gson.Gson; -import com.google.gson.stream.JsonReader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; -import pl.tpolgrabia.urbanexplorer.AppConstants; -import pl.tpolgrabia.urbanexplorer.dto.panoramio.PanoramioCacheDto; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; -import pl.tpolgrabia.urbanexplorerutils.utils.LocationUtils; - -import java.io.*; -import java.util.ArrayList; -import java.util.GregorianCalendar; - -/** - * Created by tpolgrabia on 25.09.16. - */ -public class PanoramioCacheUtils { - private static final Logger lg = LoggerFactory.getLogger(PanoramioCacheUtils.class); - - private PanoramioCacheUtils() { - /** - * EMPTY - */ - } - - public static ArrayList loadPhotosFromCache(HomeFragment homeFragment, Bundle savedBundleSettings) { - ArrayList photos; - - if (savedBundleSettings == null) { - return new ArrayList<>(); - } - - final Serializable serPhotos = savedBundleSettings.getSerializable(HomeFragment.PHOTO_LIST); - lg.trace("Photo list serPhotos {}", serPhotos); - photos = (ArrayList) serPhotos; - - if (photos != null && !photos.isEmpty()) { - // we are using from serializable bundle photos - return photos; - } else { - // maybe we find something in our cache file - Reader reader = null; - try { - reader = - new InputStreamReader( - new FileInputStream( - new File(homeFragment.getActivity().getCacheDir(), - AppConstants.PANORAMIO_CACHE_FILENAME))); - - PanoramioCacheDto dto = new Gson().fromJson(new JsonReader(reader), PanoramioCacheDto.class); - if (dto == null) { - lg.trace("Sorry, photos I/O cache is null"); - return new ArrayList<>(); - } - - photos = new ArrayList<>(dto.getPanoramioImages()); - lg.trace("Photos size from I/O cache is {}", photos.size()); - lg.trace("I've read photos from I/O cache"); - return photos; - - } catch (FileNotFoundException e) { - lg.error("File not found", e); - return new ArrayList<>(); - } catch (IOException e) { - lg.error("I/O error", e); - return new ArrayList<>(); - } catch (Throwable t) { - lg.error("Throwable", t); - return new ArrayList<>(); - } finally { - if (reader != null) { - try { - reader.close(); - } catch (IOException e) { - lg.error("Error closing reader - I/O error", e); - } - } - } - } - } - - public static void savePhotosToCache(Context ctx, ArrayList photos) { - File cacheDir = ctx.getCacheDir(); - BufferedWriter br = null; - try { - br = new BufferedWriter( - new OutputStreamWriter( - new FileOutputStream( - new File(cacheDir, AppConstants.PANORAMIO_CACHE_FILENAME)))); - - PanoramioCacheDto dto = new PanoramioCacheDto(); - dto.setPanoramioImages(photos); - - Location location = LocationUtils.getLastKnownLocation(ctx); - if (location != null) { - dto.setLongitude(location.getLongitude()); - dto.setLatitude(location.getLatitude()); - dto.setAltitude(location.getAltitude()); - } - - dto.setFetchedAt(new GregorianCalendar().getTime()); - // FIXME this should be a fetch time, not persist time - - new Gson().toJson(dto, br); - - } catch (FileNotFoundException e) { - lg.error("File not found", e); - } catch (IOException e) { - lg.error("I/O Exception", e); - } finally { - if (br != null) { - try { - br.close(); - } catch (IOException e) { - lg.error("I/O error during photos cache saving", e); - } - } - } - } -} diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/worker/PanoramioWorker.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/worker/PanoramioWorker.java deleted file mode 100644 index a812fc5..0000000 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/worker/PanoramioWorker.java +++ /dev/null @@ -1,69 +0,0 @@ -package pl.tpolgrabia.urbanexplorer.worker; - -import android.os.AsyncTask; -import okhttp3.ResponseBody; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioResponse; -import pl.tpolgrabia.panoramiobindings.utils.PanoramioUtils; -import pl.tpolgrabia.urbanexplorer.dto.PanoramioRequest; -import pl.tpolgrabia.urbanexplorer.fragments.HomeFragment; -import retrofit2.Response; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -/** - * Created by tpolgrabia on 19.11.16. - */ -public class PanoramioWorker extends AsyncTask> { - - private static final Logger lg = LoggerFactory.getLogger(PanoramioWorker.class); - private final HomeFragment homeFragment; - - public PanoramioWorker(HomeFragment homeFragment) { - this.homeFragment = homeFragment; - } - - @Override - protected List doInBackground(PanoramioRequest... params) { - List res = new ArrayList<>(); - - for (PanoramioRequest param : params) { - try { - Response single = PanoramioUtils.fetchPanoramioImagesSync( - param.getLatitude(), - param.getLongitude(), - param.getRadiusX(), - param.getRadiusY(), - param.getOffset(), - param.getCount()); - - if (single.code() != 200) { - final ResponseBody errorBody = single.errorBody(); - lg.error("Fetching paranomio images failed with code: {}, message: {}, error: {}", - single.code(), - single.message(), - errorBody != null ? errorBody.toString() : "(null)"); - continue; - } - - res.add(single.body()); - } catch (IOException e) { - lg.error("I/O error", e); - } - } - - return res; - } - - @Override - protected void onPostExecute(List panoramioResponses) { - super.onPostExecute(panoramioResponses); - lg.warn("NOT IMPLEMENTED"); - // TODO implement this - - - } -} diff --git a/panoramiobindings/.gitignore b/panoramiobindings/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/panoramiobindings/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/panoramiobindings/build.gradle b/panoramiobindings/build.gradle deleted file mode 100644 index 7a6f799..0000000 --- a/panoramiobindings/build.gradle +++ /dev/null @@ -1,42 +0,0 @@ -apply plugin: 'com.android.library' - -android { - compileSdkVersion 21 - buildToolsVersion "24.0.2" - - defaultConfig { - minSdkVersion 16 - targetSdkVersion 21 - versionCode 2 - versionName "1.0.1" - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - - lintOptions { - disable 'InvalidPackage' - abortOnError false - } -} - -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:21.0.3' - compile 'org.greenrobot:eventbus:3.0.0' - - compile 'org.slf4j:slf4j-api:1.7.21' - compile 'com.github.tony19:logback-android-core:1.1.1-6' - compile('com.github.tony19:logback-android-classic:1.1.1-6') { - // workaround issue #73 - exclude group: 'com.google.android', module: 'android' - } - compile project(':urbanexplorerutils') - compile 'com.squareup.retrofit2:retrofit:2.1.0' - compile 'com.squareup.retrofit2:converter-gson:2.1.0' - compile 'com.squareup.okhttp3:logging-interceptor:3.2.0' -} diff --git a/panoramiobindings/proguard-rules.pro b/panoramiobindings/proguard-rules.pro deleted file mode 100644 index f253a1f..0000000 --- a/panoramiobindings/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /home/tpolgrabia/bin/android-sdk-linux/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/panoramiobindings/src/androidTest/java/pl/tpolgrabia/panoramiobindings/ApplicationTest.java b/panoramiobindings/src/androidTest/java/pl/tpolgrabia/panoramiobindings/ApplicationTest.java deleted file mode 100644 index 26b2f08..0000000 --- a/panoramiobindings/src/androidTest/java/pl/tpolgrabia/panoramiobindings/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package pl.tpolgrabia.panoramiobindings; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/panoramiobindings/src/main/AndroidManifest.xml b/panoramiobindings/src/main/AndroidManifest.xml deleted file mode 100644 index e6b68f3..0000000 --- a/panoramiobindings/src/main/AndroidManifest.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/PanoramioConstants.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/PanoramioConstants.java deleted file mode 100644 index f375c6d..0000000 --- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/PanoramioConstants.java +++ /dev/null @@ -1,8 +0,0 @@ -package pl.tpolgrabia.panoramiobindings; - -/** - * Created by tpolgrabia on 19.11.16. - */ -public class PanoramioConstants { - public static final String PANORAMIO_WS_URL = "http://www.panoramio.com/map/get_panoramas.php"; -} diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/PanoramioResponseCallback.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/PanoramioResponseCallback.java deleted file mode 100644 index 3d1f18a..0000000 --- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/PanoramioResponseCallback.java +++ /dev/null @@ -1,11 +0,0 @@ -package pl.tpolgrabia.panoramiobindings.callback; - -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; -import java.util.List; - -/** - * Created by tpolgrabia on 28.08.16. - */ -public interface PanoramioResponseCallback { - void callback(PanoramioResponseStatus status, List images, Long imagesCount); -} diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/PanoramioResponseStatus.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/PanoramioResponseStatus.java deleted file mode 100644 index 57169df..0000000 --- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/callback/PanoramioResponseStatus.java +++ /dev/null @@ -1,10 +0,0 @@ -package pl.tpolgrabia.panoramiobindings.callback; - -/** - * Created by tpolgrabia on 28.08.16. - */ -public enum PanoramioResponseStatus { - GENERAL_ERROR, - NETWORK_ERROR, - SUCCESS -} diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/dto/PanoramioImageInfo.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/dto/PanoramioImageInfo.java deleted file mode 100644 index 87a1c56..0000000 --- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/dto/PanoramioImageInfo.java +++ /dev/null @@ -1,150 +0,0 @@ -package pl.tpolgrabia.panoramiobindings.dto; - -import com.google.gson.annotations.SerializedName; - -import java.io.Serializable; - -/** - * Created by tpolgrabia on 27.08.16. - */ -public class PanoramioImageInfo implements Serializable{ - private static final long serialVersionUID = -3749926831546160047L; - @SerializedName("height") - private Double height; - @SerializedName("owner_name") - private String ownerName; - @SerializedName("owner_id") - private Long ownerId; - @SerializedName("photo_file_url") - private String photoFileUrl; - @SerializedName("photo_title") - private String photoTitle; - @SerializedName("upload_date") - private String uploadDate; - @SerializedName("width") - private Double width; - @SerializedName("latitude") - private Double latitude; - @SerializedName("longitude") - private Double longitude; - @SerializedName("owner_url") - private String ownerUrl; - @SerializedName("photo_id") - private Long photoId; - @SerializedName("photo_url") - private String photoUrl; - - public Double getHeight() { - return height; - } - - public void setHeight(Double height) { - this.height = height; - } - - public String getOwnerName() { - return ownerName; - } - - public void setOwnerName(String ownerName) { - this.ownerName = ownerName; - } - - public Long getOwnerId() { - return ownerId; - } - - public void setOwnerId(Long ownerId) { - this.ownerId = ownerId; - } - - public String getPhotoFileUrl() { - return photoFileUrl; - } - - public void setPhotoFileUrl(String photoFileUrl) { - this.photoFileUrl = photoFileUrl; - } - - public String getPhotoTitle() { - return photoTitle; - } - - public void setPhotoTitle(String photoTitle) { - this.photoTitle = photoTitle; - } - - public String getUploadDate() { - return uploadDate; - } - - public void setUploadDate(String uploadDate) { - this.uploadDate = uploadDate; - } - - public Double getWidth() { - return width; - } - - public void setWidth(Double width) { - this.width = width; - } - - public void setLatitude(Double latitude) { - this.latitude = latitude; - } - - public Double getLatitude() { - return latitude; - } - - public void setLongitude(Double longitude) { - this.longitude = longitude; - } - - public Double getLongitude() { - return longitude; - } - - public void setOwnerUrl(String ownerUrl) { - this.ownerUrl = ownerUrl; - } - - public String getOwnerUrl() { - return ownerUrl; - } - - public void setPhotoId(Long photoId) { - this.photoId = photoId; - } - - public Long getPhotoId() { - return photoId; - } - - public void setPhotoUrl(String photoUrl) { - this.photoUrl = photoUrl; - } - - public String getPhotoUrl() { - return photoUrl; - } - - @Override - public String toString() { - return "PanoramioImageInfo{" + - "height=" + height + - ", ownerName='" + ownerName + '\'' + - ", ownerId=" + ownerId + - ", photoFileUrl='" + photoFileUrl + '\'' + - ", photoTitle='" + photoTitle + '\'' + - ", uploadDate='" + uploadDate + '\'' + - ", width=" + width + - ", latitude=" + latitude + - ", longitude=" + longitude + - ", ownerUrl='" + ownerUrl + '\'' + - ", photoId=" + photoId + - ", photoUrl='" + photoUrl + '\'' + - '}'; - } -} diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/dto/PanoramioMapLocation.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/dto/PanoramioMapLocation.java deleted file mode 100644 index a9f1d12..0000000 --- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/dto/PanoramioMapLocation.java +++ /dev/null @@ -1,51 +0,0 @@ -package pl.tpolgrabia.panoramiobindings.dto; - -import com.google.gson.annotations.SerializedName; - -import java.io.Serializable; - -/** - * Created by tpolgrabia on 28.08.16. - */ -public class PanoramioMapLocation implements Serializable{ - private static final long serialVersionUID = -3048527017887972550L; - @SerializedName("lat") - private Double latitude; - @SerializedName("lng") - private Double longitude; - @SerializedName("panoramio_zoom") - private Long zoom; - - public Double getLatitude() { - return latitude; - } - - public void setLatitude(Double latitude) { - this.latitude = latitude; - } - - public Double getLongitude() { - return longitude; - } - - public void setLongitude(Double longitude) { - this.longitude = longitude; - } - - public Long getZoom() { - return zoom; - } - - public void setZoom(Long zoom) { - this.zoom = zoom; - } - - @Override - public String toString() { - return "PanoramioMapLocation{" + - "latitude=" + latitude + - ", longitude=" + longitude + - ", zoom=" + zoom + - '}'; - } -} diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/dto/PanoramioResponse.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/dto/PanoramioResponse.java deleted file mode 100644 index 196d3e0..0000000 --- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/dto/PanoramioResponse.java +++ /dev/null @@ -1,63 +0,0 @@ -package pl.tpolgrabia.panoramiobindings.dto; - -import com.google.gson.annotations.SerializedName; - -import java.io.Serializable; -import java.util.List; - -/** - * Created by tpolgrabia on 28.08.16. - */ -public class PanoramioResponse implements Serializable{ - private static final long serialVersionUID = 8840731825651350777L; - @SerializedName("photos") - private List photos; - @SerializedName("count") - private Long count; - @SerializedName("moreAvailable") - private Boolean moreAvailable; - @SerializedName("map_location") - private PanoramioMapLocation mapLocation; - - public List getPhotos() { - return photos; - } - - public void setPhotos(List photos) { - this.photos = photos; - } - - public Long getCount() { - return count; - } - - public void setCount(Long count) { - this.count = count; - } - - public Boolean getMoreAvailable() { - return moreAvailable; - } - - public void setMoreAvailable(Boolean moreAvailable) { - this.moreAvailable = moreAvailable; - } - - public PanoramioMapLocation getMapLocation() { - return mapLocation; - } - - public void setMapLocation(PanoramioMapLocation mapLocation) { - this.mapLocation = mapLocation; - } - - @Override - public String toString() { - return "PanoramioResponse{" + - "photos=" + photos + - ", count=" + count + - ", moreAvailable=" + moreAvailable + - ", mapLocation=" + mapLocation + - '}'; - } -} diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/exceptions/PanoramioResponseNotExpected.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/exceptions/PanoramioResponseNotExpected.java deleted file mode 100644 index 92bacbd..0000000 --- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/exceptions/PanoramioResponseNotExpected.java +++ /dev/null @@ -1,12 +0,0 @@ -package pl.tpolgrabia.panoramiobindings.exceptions; - -/** - * Created by tpolgrabia on 27.08.16. - */ -public class PanoramioResponseNotExpected extends RuntimeException { - private static final long serialVersionUID = 4518500758010368539L; - - public PanoramioResponseNotExpected(String errorCause) { - super(errorCause); - } -} diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/utils/PanoramioService.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/utils/PanoramioService.java deleted file mode 100644 index 3543914..0000000 --- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/utils/PanoramioService.java +++ /dev/null @@ -1,23 +0,0 @@ -package pl.tpolgrabia.panoramiobindings.utils; - -import pl.tpolgrabia.panoramiobindings.dto.PanoramioResponse; -import retrofit2.Call; -import retrofit2.http.Query; - -/** - * Created by tpolgrabia on 19.11.16. - */ -public interface PanoramioService { - Call fetch( - @Query("set") String set, - @Query("from") Long from, - @Query("to") Long to, - @Query("minx") Double minx, - @Query("miny") Double miny, - @Query("maxx") Double maxx, - @Query("maxy") Double maxy, - @Query("size") String size, - @Query("order") String order, - @Query("mapfilter") Boolean mapFilter - ); -} diff --git a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/utils/PanoramioUtils.java b/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/utils/PanoramioUtils.java deleted file mode 100644 index 1006c8f..0000000 --- a/panoramiobindings/src/main/java/pl/tpolgrabia/panoramiobindings/utils/PanoramioUtils.java +++ /dev/null @@ -1,210 +0,0 @@ -package pl.tpolgrabia.panoramiobindings.utils; - -import android.app.Activity; -import android.content.Context; -import android.graphics.PointF; -import android.util.DisplayMetrics; -import android.view.Display; -import com.androidquery.AQuery; -import com.androidquery.callback.AjaxCallback; -import com.androidquery.callback.AjaxStatus; -import okhttp3.OkHttpClient; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import pl.tpolgrabia.panoramiobindings.PanoramioConstants; -import pl.tpolgrabia.panoramiobindings.callback.PanoramioResponseCallback; -import pl.tpolgrabia.panoramiobindings.callback.PanoramioResponseStatus; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioImageInfo; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioMapLocation; -import pl.tpolgrabia.panoramiobindings.dto.PanoramioResponse; -import pl.tpolgrabia.panoramiobindings.exceptions.PanoramioResponseNotExpected; -import pl.tpolgrabia.urbanexplorerutils.utils.NetUtils; -import retrofit2.Call; -import retrofit2.Response; -import retrofit2.Retrofit; -import retrofit2.converter.gson.GsonConverterFactory; - -import java.io.IOException; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; - -/** - * Created by tpolgrabia on 27.08.16. - */ -public class PanoramioUtils { - - private static final Logger lg = LoggerFactory.getLogger(PanoramioUtils.class); - - private static final String LOCATIONS_LIST_IMAGE_SIZE = "medium"; - private static final String LOCATIONS_ORDER = "popularity"; - - public static Response fetchPanoramioImagesSync( - Double lat, - Double lon, - Double radiusX, - Double radiusY, - Long offset, - Long count - ) throws IOException { - OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); - // TODO httpClient.addInterceptor(new RetrofitDebugInterceptor()); - - Retrofit retrofit = new Retrofit.Builder() - .baseUrl(PanoramioConstants.PANORAMIO_WS_URL) - .addConverterFactory(GsonConverterFactory.create()) - .client(httpClient.build()) - .build(); - - PanoramioService panoramioService = retrofit.create(PanoramioService.class); - return panoramioService.fetch( - "public", - offset, - offset + count, - lon - radiusX, - lat - radiusY, - lon + radiusX, - lat + radiusY, - LOCATIONS_LIST_IMAGE_SIZE, - LOCATIONS_ORDER, - true).execute(); - } - - public static void fetchPanoramioImages( - Context ctx, - Double lat, - Double lon, - Double radiusX, - Double radiusY, - Long offset, - Long count, - final PanoramioResponseCallback callback) { - AQuery aq = NetUtils.createProxyAQueryInstance(ctx); - final String aqQuery = "http://www.panoramio.com/map/get_panoramas.php?" + - "set=public" + - "&from=" + offset + - "&to=" + (offset + count) + - "&minx=" + (lon - radiusX) + - "&miny=" + (lat - radiusY) + - "&maxx=" + (lon + radiusX) + - "&maxy=" + (lat + radiusX) + - "&size=" + LOCATIONS_LIST_IMAGE_SIZE + - "&order=" + LOCATIONS_ORDER + - "&mapfilter=true"; - lg.debug("Query URL: {}", aqQuery); - aq.ajax(aqQuery, - JSONObject.class, - new AjaxCallback() { - @Override - public void callback(String url, JSONObject object, AjaxStatus status) { - try { - lg.debug("Query code: {}, error: {}, message: {}, object: {}", - status.getCode(), status.getError(), status.getMessage(), object); - if (object == null) { - return; - } - - List photosInfos; - try { - photosInfos = PanoramioUtils.fetchPanoramioImagesFromResponse(object.getJSONArray("photos")); - } catch (ParseException e) { - lg.warn("Parse exception", e); - photosInfos = new ArrayList<>(); - } - - Long photosCount = PanoramioUtils.fetchPanoramioImagesCountFromResponse(object); - callback.callback(PanoramioResponseStatus.SUCCESS, - photosInfos, - photosCount); - - } catch (JSONException e) { - lg.warn("Json not supported format", e); - } - } - }); - } - - public static PanoramioImageInfo fetchPanoramioDto(JSONObject photo) throws JSONException, ParseException { - PanoramioImageInfo info = new PanoramioImageInfo(); - info.setPhotoTitle(photo.getString("photo_title")); - info.setPhotoFileUrl(photo.getString("photo_file_url")); - info.setWidth(photo.getDouble("width")); - info.setHeight(photo.getDouble("height")); - info.setLatitude(photo.getDouble("latitude")); - info.setLongitude(photo.getDouble("longitude")); - info.setOwnerId(photo.getLong("owner_id")); - info.setOwnerName(photo.getString("owner_name")); - info.setOwnerUrl(photo.getString("owner_url")); - info.setPhotoId(photo.getLong("photo_id")); - info.setPhotoUrl(photo.getString("photo_url")); - info.setUploadDate(photo.getString("upload_date")); - return info; - } - - public static Long fetchPanoramioImagesCountFromResponse(JSONObject object) { - try { - return object.getLong("count"); - } catch (JSONException e) { - return null; - } - } - - public static List fetchPanoramioImagesFromResponse(JSONArray photos) throws JSONException, ParseException { - - if (photos == null) { - throw new PanoramioResponseNotExpected("photos arg cannot be null"); - } - - List photosInfos = new ArrayList<>(); - int n = photos.length(); - for (int i = 0; i < n; i++) { - photosInfos.add( - fetchPanoramioDto( - photos.getJSONObject(i))); - } - - return photosInfos; - } - - public static PanoramioResponse fetchPanoramioResponse(JSONObject panoramioResponse) throws JSONException, ParseException { - PanoramioResponse response = new PanoramioResponse(); - response.setCount(panoramioResponse.getLong("count")); - response.setMoreAvailable(panoramioResponse.getBoolean("has_more")); - response.setPhotos(fetchPanoramioImagesFromResponse(panoramioResponse.getJSONArray("photos"))); - response.setMapLocation(fetchPanoramioLocation(panoramioResponse.getJSONObject("map_location"))); - return response; - } - - private static PanoramioMapLocation fetchPanoramioLocation(JSONObject mapLocation) throws JSONException { - PanoramioMapLocation location = new PanoramioMapLocation(); - location.setLatitude(mapLocation.getDouble("lat")); - location.setLongitude(mapLocation.getDouble("lon")); - location.setZoom(mapLocation.getLong("panoramio_zoom")); - return location; - } - - - public static PointF calcDims(Activity ctx) { - DisplayMetrics metrics = calcMetrics(ctx); - int w = metrics.widthPixels; - int h = metrics.heightPixels; - float wi = w / metrics.xdpi; - float hi = h / metrics.ydpi; - return new PointF(wi, hi); - } - - public static DisplayMetrics calcMetrics(Activity ctx) { - DisplayMetrics metrics = new DisplayMetrics(); - final Display display = ctx.getWindowManager().getDefaultDisplay(); - display.getMetrics(metrics); - return metrics; - } - - public static double calcDiag(Activity ctx) { - PointF dims = calcDims(ctx); - return Math.sqrt(dims.x*dims.x + dims.y*dims.y); - } -} diff --git a/panoramiobindings/src/main/res/values/strings.xml b/panoramiobindings/src/main/res/values/strings.xml deleted file mode 100644 index e16350b..0000000 --- a/panoramiobindings/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Panoramio Bindings - diff --git a/panoramiobindings/src/test/java/pl/tpolgrabia/panoramiobindings/ExampleUnitTest.java b/panoramiobindings/src/test/java/pl/tpolgrabia/panoramiobindings/ExampleUnitTest.java deleted file mode 100644 index ad25c01..0000000 --- a/panoramiobindings/src/test/java/pl/tpolgrabia/panoramiobindings/ExampleUnitTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package pl.tpolgrabia.panoramiobindings; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * To work on unit tests, switch the Test Artifact in the Build Variants view. - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 059a823..1026d14 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':panoramiobindings', ':urbanexplorerutils', ':wikibinding', ':googleutils' +include ':app', ':urbanexplorerutils', ':wikibinding', ':googleutils'