Skip to content

Commit

Permalink
#4 : Added Navigation Drawer
Browse files Browse the repository at this point in the history
  • Loading branch information
pulkit4tech committed Jan 11, 2017
1 parent 799821e commit a2d1764
Show file tree
Hide file tree
Showing 24 changed files with 450 additions and 74 deletions.
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 3 additions & 5 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
android:theme="@style/AppTheme.NoActionBar">
<activity android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand All @@ -35,9 +36,6 @@
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />

<activity
android:name=".PrivyMapsActivity"
android:label="@string/title_activity_privy_maps"></activity>
</application>

</manifest>
149 changes: 141 additions & 8 deletions app/src/main/java/com/pulkit4tech/privy/MainActivity.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,159 @@
package com.pulkit4tech.privy;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import com.pulkit4tech.privy.fragments.PrivyMapsFragment;
import com.pulkit4tech.privy.utilities.NoLocationPermission;

public class MainActivity extends AppCompatActivity {
import static com.pulkit4tech.privy.constants.Constants.DEBUG;
import static com.pulkit4tech.privy.constants.Constants.MY_PERMISSIONS_REQUEST_FINE_LOCATIONS;

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if(savedInstanceState == null){
// calling PrivyMapsActivity
Intent intent = new Intent(this,PrivyMapsActivity.class);
startActivity(intent);
if (savedInstanceState == null) {
setUpInfo();
}
}

@Override
protected void onResume() {
super.onResume();
}

private void setUpInfo() {
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
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();
}
});

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.setNavigationItemSelectedListener(this);
navigationView.getMenu().getItem(0).setChecked(true);
loadMapFragment();
}

@Override
protected void onStop() {
super.onStop();
this.finish();
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

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());
} else {
loadFragment(new NoLocationPermission());
Toast.makeText(this, "Please give permission for location", Toast.LENGTH_SHORT).show();
}
break;

default:
Log.d(DEBUG, "Some other request code: " + requestCode);
}
}

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

@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();

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

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}

private void loadMapFragment() {
if (!checkLocationEnabledPermission()) {
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_FINE_LOCATIONS);
} else {
loadFragment(new PrivyMapsFragment());
}
}

private boolean checkLocationEnabledPermission() {
return ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package com.pulkit4tech.privy;
package com.pulkit4tech.privy.fragments;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdate;
Expand All @@ -17,6 +20,7 @@
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.pulkit4tech.privy.R;
import com.pulkit4tech.privy.data.LocationData;
import com.pulkit4tech.privy.data.json.MarkerData;
import com.pulkit4tech.privy.utilities.LocationServices;
Expand All @@ -28,31 +32,33 @@
import static com.pulkit4tech.privy.constants.Constants.CAMERA_ANIMATION_DURATION;
import static com.pulkit4tech.privy.constants.Constants.MY_PERMISSIONS_REQUEST_FINE_LOCATIONS;

public class PrivyMapsActivity extends ActionBarActivity implements OnMapReadyCallback {
public class PrivyMapsFragment extends Fragment implements OnMapReadyCallback {

private GoogleMap mMap;
private Context mContext;
private CameraPosition MY_LOCATION_CAMERA_POS;
private HashMap<String,MarkerData> universalMarkers;
private HashMap<String, MarkerData> universalMarkers;

// My location
private LocationData myLocationData;

@Nullable
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_privy_maps);
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

mContext = this;
super.onCreate(savedInstanceState);
View mView = inflater.inflate(R.layout.activity_privy_maps, container, false);
mContext = getActivity();
universalMarkers = new HashMap<>();

// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager()
.findFragmentById(R.id.privyMapActivity);
//if (mapFragment!=null)
mapFragment.getMapAsync(this);
return mView;
}


/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
Expand All @@ -71,13 +77,13 @@ public void onMapReady(GoogleMap googleMap) {

private void addMarkers() {

if(myLocationData == null) {
if (myLocationData == null) {
LocationServices locationService = new LocationServices(mContext);
myLocationData = locationService.getCurrentLocation();
}

if(myLocationData!=null)
markNearbyPrivys(myLocationData.getLatLng());
if (myLocationData != null)
markNearbyPrivys(myLocationData.getLatLng());

// Add a test marker in Delhi and move the camera
// LatLng delhi = new LatLng(28.633011, 77.219373);
Expand All @@ -91,15 +97,15 @@ private void addMarkers() {

private void setUpMapInfo() {

if(!checkLocationEnabledPermission()){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},MY_PERMISSIONS_REQUEST_FINE_LOCATIONS);
}else {
if (!checkLocationEnabledPermission()) {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_FINE_LOCATIONS);
} else {
mMap.setMyLocationEnabled(true);
setUpMyLocationMarker();
}
}

private void setUpMyLocationMarker() {
mMap.setMyLocationEnabled(true);
mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
Expand All @@ -110,10 +116,10 @@ public boolean onMyLocationButtonClick() {
getMyCurrentLocation();
}

private void getMyCurrentLocation(){
private void getMyCurrentLocation() {
LocationServices locationService = new LocationServices(mContext);
myLocationData = locationService.getCurrentLocation();
if(myLocationData!=null) {
if (myLocationData != null) {

MY_LOCATION_CAMERA_POS = new CameraPosition.Builder()
.target(myLocationData.getLatLng())
Expand All @@ -134,45 +140,26 @@ 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();
Toast.makeText(mContext, "Animation Finished", Toast.LENGTH_SHORT).show();
}

@Override
public void onCancel() {
Toast.makeText(mContext,"Animation Canceled",Toast.LENGTH_SHORT).show();
Toast.makeText(mContext, "Animation Canceled", Toast.LENGTH_SHORT).show();
}
});

}

private void changeCamera(CameraUpdate update, GoogleMap.CancelableCallback callback){
mMap.animateCamera(update,CAMERA_ANIMATION_DURATION,callback);
private void changeCamera(CameraUpdate update, GoogleMap.CancelableCallback callback) {
mMap.animateCamera(update, CAMERA_ANIMATION_DURATION, callback);
}

private boolean checkLocationEnabledPermission() {
return ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

switch (requestCode){
case MY_PERMISSIONS_REQUEST_FINE_LOCATIONS:
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
setUpMyLocationMarker();
}
else {
Toast.makeText(mContext,"Please give permission for location",Toast.LENGTH_SHORT).show();
}
break;

default:
Log.d(DEBUG,"Some other request code: " + requestCode);
}
return ActivityCompat.checkSelfPermission(getActivity(), android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}

private void markNearbyPrivys(LatLng myLocation){
new RequestData(mContext,mMap,universalMarkers,myLocation).getMarkerData();
private void markNearbyPrivys(LatLng myLocation) {
new RequestData(mContext, mMap, universalMarkers, myLocation).getMarkerData();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,6 @@ public void onProviderEnabled(String s) {

@Override
public void onProviderDisabled(String s) {
Toast.makeText(mContext,"Provider Disabled",Toast.LENGTH_SHORT).show();
Toast.makeText(mContext, "Provider Disabled", Toast.LENGTH_SHORT).show();
}
}
Loading

0 comments on commit a2d1764

Please sign in to comment.