diff --git a/.idea/misc.xml b/.idea/misc.xml index cca2cda..7158618 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 99c178a..8874d64 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,8 +15,9 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" - android:theme="@style/AppTheme"> - + android:theme="@style/AppTheme.NoActionBar"> + @@ -35,9 +36,6 @@ android:name="com.google.android.geo.API_KEY" android:value="@string/google_maps_key" /> - \ No newline at end of file diff --git a/app/src/main/java/com/pulkit4tech/privy/MainActivity.java b/app/src/main/java/com/pulkit4tech/privy/MainActivity.java index ac9cfad..123a879 100644 --- a/app/src/main/java/com/pulkit4tech/privy/MainActivity.java +++ b/app/src/main/java/com/pulkit4tech/privy/MainActivity.java @@ -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; } } diff --git a/app/src/main/java/com/pulkit4tech/privy/PrivyMapsActivity.java b/app/src/main/java/com/pulkit4tech/privy/fragments/PrivyMapsFragment.java similarity index 67% rename from app/src/main/java/com/pulkit4tech/privy/PrivyMapsActivity.java rename to app/src/main/java/com/pulkit4tech/privy/fragments/PrivyMapsFragment.java index 0cd7cf8..2aff34d 100644 --- a/app/src/main/java/com/pulkit4tech/privy/PrivyMapsActivity.java +++ b/app/src/main/java/com/pulkit4tech/privy/fragments/PrivyMapsFragment.java @@ -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; @@ -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; @@ -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 universalMarkers; + private HashMap 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. @@ -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); @@ -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() { @@ -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()) @@ -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(); } } diff --git a/app/src/main/java/com/pulkit4tech/privy/utilities/LocationServices.java b/app/src/main/java/com/pulkit4tech/privy/utilities/LocationServices.java index 314790e..ba1d2f6 100644 --- a/app/src/main/java/com/pulkit4tech/privy/utilities/LocationServices.java +++ b/app/src/main/java/com/pulkit4tech/privy/utilities/LocationServices.java @@ -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(); } } diff --git a/app/src/main/java/com/pulkit4tech/privy/utilities/NoLocationPermission.java b/app/src/main/java/com/pulkit4tech/privy/utilities/NoLocationPermission.java new file mode 100644 index 0000000..59dd1c2 --- /dev/null +++ b/app/src/main/java/com/pulkit4tech/privy/utilities/NoLocationPermission.java @@ -0,0 +1,19 @@ +package com.pulkit4tech.privy.utilities; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.pulkit4tech.privy.R; + +public class NoLocationPermission extends Fragment { + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.error_msg_layout, container, false); + } +} diff --git a/app/src/main/res/drawable/ic_menu_camera.xml b/app/src/main/res/drawable/ic_menu_camera.xml new file mode 100644 index 0000000..0d9ea10 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_camera.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_menu_gallery.xml b/app/src/main/res/drawable/ic_menu_gallery.xml new file mode 100644 index 0000000..f6872c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_gallery.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_manage.xml b/app/src/main/res/drawable/ic_menu_manage.xml new file mode 100644 index 0000000..c1be60b --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_manage.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_menu_send.xml b/app/src/main/res/drawable/ic_menu_send.xml new file mode 100644 index 0000000..00c668c --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_send.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_share.xml b/app/src/main/res/drawable/ic_menu_share.xml new file mode 100644 index 0000000..a28fb9e --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_share.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_slideshow.xml b/app/src/main/res/drawable/ic_menu_slideshow.xml new file mode 100644 index 0000000..209aa64 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_slideshow.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/side_nav_bar.xml b/app/src/main/res/drawable/side_nav_bar.xml new file mode 100644 index 0000000..458b4b0 --- /dev/null +++ b/app/src/main/res/drawable/side_nav_bar.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a6d6284..e5f67f4 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,15 +1,28 @@ - - - + + + - + + + + + + diff --git a/app/src/main/res/layout/activity_privy_maps.xml b/app/src/main/res/layout/activity_privy_maps.xml index f2c2859..9564e3e 100644 --- a/app/src/main/res/layout/activity_privy_maps.xml +++ b/app/src/main/res/layout/activity_privy_maps.xml @@ -5,4 +5,4 @@ android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.pulkit4tech.privy.PrivyMapsActivity" /> + tools:context="com.pulkit4tech.privy.fragments.PrivyMapsFragment" /> diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml new file mode 100644 index 0000000..2f533bc --- /dev/null +++ b/app/src/main/res/layout/app_bar_main.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml new file mode 100644 index 0000000..5d4297d --- /dev/null +++ b/app/src/main/res/layout/content_main.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/app/src/main/res/layout/error_msg_layout.xml b/app/src/main/res/layout/error_msg_layout.xml new file mode 100644 index 0000000..03aeaae --- /dev/null +++ b/app/src/main/res/layout/error_msg_layout.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/nav_header_main.xml b/app/src/main/res/layout/nav_header_main.xml new file mode 100644 index 0000000..5eea9a6 --- /dev/null +++ b/app/src/main/res/layout/nav_header_main.xml @@ -0,0 +1,35 @@ + + + + + + + + + + diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml new file mode 100644 index 0000000..a896f9d --- /dev/null +++ b/app/src/main/res/menu/activity_main_drawer.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml new file mode 100644 index 0000000..a2411e3 --- /dev/null +++ b/app/src/main/res/menu/main.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 47c8224..336b8f7 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,5 +1,8 @@ 16dp + 160dp 16dp + 16sp + 16sp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e7cd3e0..5f63ac2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,4 +6,7 @@ Some error while retrieving data!! Sorry No privy\'s found. Please help community and add one Sorry!! Network Error.. + Open Navigation Drawer + Close Navigation Drawer + Settings diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5885930..545b9c6 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -8,4 +8,13 @@ @color/colorAccent + + +