Skip to content

Commit

Permalink
#17 : Added option to add/request new Privy
Browse files Browse the repository at this point in the history
  • Loading branch information
pulkit4tech committed Jan 12, 2017
1 parent 5e78825 commit 8d68995
Show file tree
Hide file tree
Showing 10 changed files with 313 additions and 33 deletions.
90 changes: 77 additions & 13 deletions app/src/main/java/com/pulkit4tech/privy/MainActivity.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.pulkit4tech.privy;

import android.content.Intent;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
Expand All @@ -17,17 +19,26 @@
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import com.google.android.gms.location.places.Place;
import com.google.android.gms.location.places.ui.PlacePicker;
import com.pulkit4tech.privy.data.json.Location;
import com.pulkit4tech.privy.data.json.PostPrivyRequest;
import com.pulkit4tech.privy.fragments.PrivyMapsFragment;
import com.pulkit4tech.privy.utilities.NetworkRequest;
import com.pulkit4tech.privy.utilities.NoLocationPermission;

import java.util.ArrayList;

import static com.pulkit4tech.privy.constants.Constants.DEBUG;
import static com.pulkit4tech.privy.constants.Constants.MY_PERMISSIONS_REQUEST_FINE_LOCATIONS;
import static com.pulkit4tech.privy.constants.Constants.PLACE_PICKER_REQUEST;

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

private NavigationView navigationView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand All @@ -48,21 +59,21 @@ private void setUpInfo() {
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
// fab.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
// .setAction("Action", null);
// }
// });

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigationView.getMenu().getItem(0).setChecked(true);
loadMapFragment();
Expand All @@ -80,11 +91,10 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_FINE_LOCATIONS:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Permission granted!!", Toast.LENGTH_SHORT).show();
loadFragment(new PrivyMapsFragment());
snackMsg("Permission granted!!");
} else {
loadFragment(new NoLocationPermission());
Toast.makeText(this, "Please give permission for location", Toast.LENGTH_SHORT).show();
snackMsg("Please give permission for location");
}
break;

Expand All @@ -94,7 +104,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
}

private void loadFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction().add(R.id.frame_container, fragment).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).commit();
getSupportFragmentManager().beginTransaction().add(R.id.frame_container, fragment, fragment.getClass().getName()).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).commit();
}

@Override
Expand Down Expand Up @@ -137,6 +147,8 @@ public boolean onNavigationItemSelected(MenuItem item) {

if (id == R.id.nav_nearby_privy) {
loadMapFragment();
} else if (id == R.id.nav_request_new) {
loadAddNewPrivyActivity();
}
//TODO : Add other conditions

Expand All @@ -145,6 +157,50 @@ public boolean onNavigationItemSelected(MenuItem item) {
return true;
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == RESULT_OK) {
Place placeToAdd = PlacePicker.getPlace(data, this);
if (placeToAdd.getLatLng() != null) {
requestNewPrivy(placeToAdd);
} else {
snackMsg("Some Error!! Was not able to retrieve information properly");
}
} else {
snackMsg("Please Select a Location if you wished to request Privy!");
}

navigationView.getMenu().getItem(0).setChecked(true);
loadMapFragment();
}
}

private void requestNewPrivy(Place placeToAdd) {
PostPrivyRequest postdata = new PostPrivyRequest();
Location loc = new Location();
loc.setLat(placeToAdd.getLatLng().latitude);
loc.setLng(placeToAdd.getLatLng().longitude);
postdata.setLocation(loc);
postdata.setAccuracy(50);
postdata.setName("Public Toilet");
postdata.setAddress(placeToAdd.getAddress().toString());
ArrayList<String> types = new ArrayList<String>();
types.add("establishment");
postdata.setTypes(types);
postdata.setLanguage("en");
new NetworkRequest(this, postdata).postRequest();
}

private void loadAddNewPrivyActivity() {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);
} catch (Exception e) {
Log.d(DEBUG, e.toString());
}
}

private void loadMapFragment() {
if (!checkLocationEnabledPermission()) {
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_FINE_LOCATIONS);
Expand All @@ -153,6 +209,14 @@ private void loadMapFragment() {
}
}

public void snackMsg(String msg) {
Snackbar.make((CoordinatorLayout) findViewById(R.id.coordinator_layout), msg, Snackbar.LENGTH_LONG).show();
}

// private void toastMsg(String msg) {
// Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
// }

private boolean checkLocationEnabledPermission() {
return ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ public class Constants {
public static final String DEBUG = "DEBUGGER";
public static final int CAMERA_ANIMATION_DURATION = 2500;
public static final int MY_PERMISSIONS_REQUEST_FINE_LOCATIONS = 1;
public static final int PLACE_PICKER_REQUEST = 2;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.List;

public class PrivyPost {
public class GetPrivyResponse {
private List<String> html_attributions;
private List<MarkerData> results;
private String status;
Expand All @@ -21,7 +21,7 @@ public List<MarkerData> getResults() {

@Override
public String toString() {
return "PrivyPost{" +
return "GetPrivyResponse{" +
"html_attributions=" + html_attributions +
", results=" + results +
", status='" + status + '\'' +
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.pulkit4tech.privy.data.json;

import java.util.ArrayList;

public class PostPrivyRequest {
private Location location;
private int accuracy;
private String name;
private String address;
private ArrayList<String> types;
private String language;

public Location getLocation() {
return location;
}

public void setLocation(Location location) {
this.location = location;
}

public int getAccuracy() {
return accuracy;
}

public void setAccuracy(int accuracy) {
this.accuracy = accuracy;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public ArrayList<String> getTypes() {
return types;
}

public void setTypes(ArrayList<String> types) {
this.types = types;
}

public String getLanguage() {
return language;
}

public void setLanguage(String language) {
this.language = language;
}

@Override
public String toString() {
return "PostPrivyRequest{" +
"location=" + location +
", accuracy=" + accuracy +
", name='" + name + '\'' +
", address='" + address + '\'' +
", types=" + types +
", language='" + language + '\'' +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.pulkit4tech.privy.data.json;

public class PostPrivyResponse {
private String id;
private String place_id;
private String reference;
private String scope;
private String status;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getPlaceid() {
return place_id;
}

public void setPlaceid(String place_id) {
this.place_id = place_id;
}

public String getReference() {
return reference;
}

public void setReference(String reference) {
this.reference = reference;
}

public String getScope() {
return scope;
}

public void setScope(String scope) {
this.scope = scope;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

@Override
public String toString() {
return "PostPrivyResponse{" +
"id='" + id + '\'' +
", place_id='" + place_id + '\'' +
", reference='" + reference + '\'' +
", scope='" + scope + '\'' +
", status='" + status + '\'' +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.util.Log;
Expand All @@ -24,7 +26,7 @@
import com.pulkit4tech.privy.data.LocationData;
import com.pulkit4tech.privy.data.json.MarkerData;
import com.pulkit4tech.privy.utilities.LocationServices;
import com.pulkit4tech.privy.utilities.RequestData;
import com.pulkit4tech.privy.utilities.NetworkRequest;

import java.util.HashMap;

Expand Down Expand Up @@ -140,7 +142,7 @@ private void moveCameraToMyLocation() {
changeCamera(CameraUpdateFactory.newCameraPosition(MY_LOCATION_CAMERA_POS), new GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
Toast.makeText(mContext, "Animation Finished", Toast.LENGTH_SHORT).show();
snackMsg("Animation Finished");
}

@Override
Expand All @@ -160,6 +162,10 @@ private boolean checkLocationEnabledPermission() {
}

private void markNearbyPrivys(LatLng myLocation) {
new RequestData(mContext, mMap, universalMarkers, myLocation).getMarkerData();
new NetworkRequest(mContext, mMap, universalMarkers, myLocation).getMarkerData();
}

public void snackMsg(String msg) {
Snackbar.make((CoordinatorLayout) getActivity().findViewById(R.id.coordinator_layout), msg, Snackbar.LENGTH_LONG).show();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import android.support.v4.app.ActivityCompat;
import android.widget.Toast;


import com.google.android.gms.maps.model.LatLng;

import com.pulkit4tech.privy.data.LocationData;
Expand Down
Loading

0 comments on commit 8d68995

Please sign in to comment.