2016-07-03 14:33:11 +00:00
package com.android_app.matan.ara.sagi.thesocialnotework ;
2016-07-08 23:24:32 +00:00
import android.* ;
2016-07-06 14:15:16 +00:00
import android.app.ProgressDialog ;
import android.content.Context ;
2016-07-06 19:41:47 +00:00
import android.content.Intent ;
import android.content.SharedPreferences ;
2016-07-08 23:24:32 +00:00
import android.content.pm.PackageManager ;
2016-07-07 20:40:25 +00:00
import android.graphics.Bitmap ;
import android.graphics.BitmapFactory ;
import android.os.AsyncTask ;
2016-07-03 14:33:11 +00:00
import android.os.Bundle ;
2016-07-07 20:41:16 +00:00
import android.os.StrictMode ;
2016-07-03 14:33:11 +00:00
import android.support.design.widget.FloatingActionButton ;
import android.support.design.widget.Snackbar ;
2016-07-08 23:24:32 +00:00
import android.support.v4.app.ActivityCompat ;
2016-07-03 14:33:11 +00:00
import android.support.v4.app.FragmentTransaction ;
import android.util.Log ;
2016-07-07 22:09:29 +00:00
import android.view.LayoutInflater ;
2016-07-03 14:33:11 +00:00
import android.view.View ;
import android.support.design.widget.NavigationView ;
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.view.Menu ;
import android.view.MenuItem ;
2016-07-07 20:40:25 +00:00
import android.widget.ImageView ;
2016-07-09 00:12:49 +00:00
import android.widget.Toast ;
2016-07-03 14:33:11 +00:00
2016-07-06 17:30:57 +00:00
import com.android.volley.Response ;
import com.android.volley.VolleyError ;
2016-07-07 22:09:29 +00:00
import com.google.android.gms.maps.model.MarkerOptions ;
2016-07-06 17:30:57 +00:00
import org.json.JSONArray ;
import org.json.JSONException ;
import org.json.JSONObject ;
2016-07-07 20:40:25 +00:00
import java.io.InputStream ;
2016-07-06 17:30:57 +00:00
import java.util.ArrayList ;
import java.util.Date ;
import java.util.List ;
2016-07-03 14:33:11 +00:00
public class MainActivity extends AppCompatActivity
2016-07-09 01:19:00 +00:00
implements NavigationView . OnNavigationItemSelectedListener {
public static final String LOCAL_DATA_TSN = " TSN_DATA_STORE " ;
protected final String TAG = " [TSN / MainActivity] " ;
protected User user ;
private GPSUtils gpsUtils ;
private boolean locationPermission ;
private GmapFragment gmapFragment ;
private PersonalFragment personalFragment ;
private SettingsFragment settingsFragment ;
2016-07-09 16:14:07 +00:00
private ExploreFragment exploreFragment ;
2016-07-09 01:19:00 +00:00
private Toolbar toolbar ;
public static final String BASE_URL = " http://thesocialnotework-api.appspot.com/api " ;
private ImageView menu_avatar ;
2016-07-07 22:09:29 +00:00
private MainActivity self ;
private NavigationView nav_view ;
2016-07-09 01:19:00 +00:00
private final int FINE_PERM = 0 , CAMERA_PERM = 1 ;
2016-07-06 17:30:57 +00:00
2016-07-04 14:54:05 +00:00
2016-07-09 01:19:00 +00:00
@Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState ) ;
setContentView ( R . layout . activity_main ) ;
this . self = this ;
toolbar = ( Toolbar ) findViewById ( R . id . toolbar ) ;
toolbar . setTitle ( " Personal Notes " ) ;
setSupportActionBar ( toolbar ) ;
gmapFragment = new GmapFragment ( ) ;
personalFragment = new PersonalFragment ( ) ;
settingsFragment = new SettingsFragment ( ) ;
2016-07-09 16:14:07 +00:00
exploreFragment = new ExploreFragment ( ) ;
2016-07-09 01:19:00 +00:00
StrictMode . ThreadPolicy policy = new StrictMode . ThreadPolicy . Builder ( ) . permitAll ( ) . build ( ) ;
StrictMode . setThreadPolicy ( policy ) ;
2016-07-07 20:41:16 +00:00
2016-07-03 14:33:11 +00:00
2016-07-09 01:19:00 +00:00
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 ( ) ;
2016-07-06 19:14:41 +00:00
2016-07-09 01:19:00 +00:00
NavigationView navigationView = ( NavigationView ) findViewById ( R . id . nav_view ) ;
navigationView . setNavigationItemSelectedListener ( this ) ;
2016-07-03 14:33:11 +00:00
2016-07-07 22:09:29 +00:00
2016-07-09 01:19:00 +00:00
//get Bundle data (UserString)
Bundle b = getIntent ( ) . getExtras ( ) ;
this . user = new User ( b . getString ( " UserData " ) ) ;
2016-07-07 22:09:29 +00:00
2016-07-09 01:19:00 +00:00
//Get The Nav_View Avatar View
nav_view = ( NavigationView ) findViewById ( R . id . nav_view ) ;
View header_v = nav_view . getHeaderView ( 0 ) ;
menu_avatar = ( ImageView ) header_v . findViewById ( R . id . nav_user_avatar ) ;
2016-07-03 14:33:11 +00:00
2016-07-09 01:19:00 +00:00
//Change Layout
Log . d ( TAG , " Changing Fragment to Personal Activity " ) ;
2016-07-06 17:30:57 +00:00
// PersonalFragment personalFragment = new PersonalFragment();
2016-07-09 01:19:00 +00:00
personalFragment . setArguments ( b ) ;
FragmentTransaction ft = getSupportFragmentManager ( ) . beginTransaction ( ) ;
ft . replace ( R . id . fragment_container , personalFragment ) ;
ft . commit ( ) ;
Log . d ( TAG , " Changed " ) ;
gpsUtils = new GPSUtils ( this ) ;
gpsUtils . getLocation ( ) ;
2016-07-03 14:33:11 +00:00
2016-07-09 01:19:00 +00:00
//Change The Avatar
Utils . URLtoImageView ( menu_avatar , user . getAvatar ( ) ) ;
}
2016-07-03 14:33:11 +00:00
2016-07-09 01:19:00 +00:00
@Override
public void onBackPressed ( ) {
DrawerLayout drawer = ( DrawerLayout ) findViewById ( R . id . drawer_layout ) ;
if ( drawer . isDrawerOpen ( GravityCompat . START ) ) {
drawer . closeDrawer ( GravityCompat . START ) ;
} else {
super . onBackPressed ( ) ;
2016-07-03 14:33:11 +00:00
}
2016-07-09 01:19:00 +00:00
}
2016-07-03 14:33:11 +00:00
2016-07-09 01:19:00 +00:00
@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 ;
}
2016-07-03 14:33:11 +00:00
2016-07-09 01:19:00 +00:00
@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 ( ) ;
2016-07-03 14:33:11 +00:00
2016-07-09 01:19:00 +00:00
//noinspection SimplifiableIfStatement
if ( id = = R . id . action_settings ) {
return true ;
2016-07-06 15:23:16 +00:00
}
2016-07-06 17:30:57 +00:00
2016-07-09 01:19:00 +00:00
return super . onOptionsItemSelected ( item ) ;
}
2016-07-06 11:00:51 +00:00
2016-07-09 01:19:00 +00:00
@SuppressWarnings ( " StatementWithEmptyBody " )
@Override
public boolean onNavigationItemSelected ( MenuItem item ) {
FragmentTransaction ft = getSupportFragmentManager ( ) . beginTransaction ( ) ;
Bundle b = new Bundle ( ) ;
int id = item . getItemId ( ) ;
if ( id = = R . id . nav_explore ) {
toolbar . setTitle ( " Explore " ) ;
setSupportActionBar ( toolbar ) ;
2016-07-09 16:14:07 +00:00
Log . d ( TAG , " Before going to Explore " ) ;
ft . replace ( R . id . fragment_container , exploreFragment ) ;
ft . commit ( ) ;
2016-07-09 01:19:00 +00:00
} else if ( id = = R . id . nav_map ) {
Log . d ( TAG , " Before going to map " ) ;
toolbar . setTitle ( " Map " ) ;
setSupportActionBar ( toolbar ) ;
ft . replace ( R . id . fragment_container , gmapFragment ) ;
ft . commit ( ) ;
} else if ( id = = R . id . nav_personal ) {
2016-07-09 15:35:06 +00:00
toolbar . setTitle ( " Personal Notes " ) ;
setSupportActionBar ( toolbar ) ;
2016-07-09 01:19:00 +00:00
Log . d ( TAG , " Before going to personal " ) ;
ft . replace ( R . id . fragment_container , personalFragment ) ;
ft . commit ( ) ;
} else if ( id = = R . id . nav_settings ) {
toolbar . setTitle ( " Settings " ) ;
setSupportActionBar ( toolbar ) ;
ft . replace ( R . id . fragment_container , settingsFragment ) ;
ft . commit ( ) ;
} else if ( id = = R . id . nav_logout ) {
2016-07-09 14:38:54 +00:00
try {
Utils . removeUserDataFromPrefs ( ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
2016-07-09 01:19:00 +00:00
Intent loginActivity = new Intent ( MainActivity . this , LoginActivity . class ) ;
startActivity ( loginActivity ) ;
finish ( ) ;
2016-07-03 14:33:11 +00:00
}
2016-07-09 01:19:00 +00:00
DrawerLayout drawer = ( DrawerLayout ) findViewById ( R . id . drawer_layout ) ;
drawer . closeDrawer ( GravityCompat . START ) ;
return true ;
}
2016-07-03 14:33:11 +00:00
2016-07-09 01:19:00 +00:00
public GPSUtils getGPSUtils ( ) {
return this . gpsUtils ;
}
2016-07-06 11:00:51 +00:00
2016-07-06 14:15:16 +00:00
2016-07-09 01:19:00 +00:00
public User getUser ( ) {
return user ;
}
2016-07-06 14:15:16 +00:00
2016-07-09 01:19:00 +00:00
public String getUserId ( ) {
return user . getId ( ) ;
}
2016-07-06 14:15:16 +00:00
2016-07-09 01:19:00 +00:00
@Override
public void onRequestPermissionsResult ( int requestCode ,
String permissions [ ] , int [ ] grantResults ) {
Log . d ( TAG , " onRequestPermissionsResult: in func " ) ;
switch ( requestCode ) {
case FINE_PERM : {
// If request is cancelled, the result arrays are empty.
if ( grantResults . length > 2 ) {
if ( ! ( grantResults [ 0 ] = = PackageManager . PERMISSION_GRANTED ) ) {
Log . d ( TAG , " onRequestPermissionsResult: Did Not get permission for location " ) ;
Toast . makeText ( MainActivity . this , " No Location Permissions granted. \ n \" An App is nothing without its permissions \" " , Toast . LENGTH_LONG ) . show ( ) ;
System . exit ( 0 ) ;
}
if ( ! ( grantResults [ 1 ] = = PackageManager . PERMISSION_GRANTED ) ) {
Log . d ( TAG , " onRequestPermissionsResult:DIDNT get permission for camera " ) ;
Toast . makeText ( MainActivity . this , " No Camera Permissions granted. \ nyou will not be able to change avatar " , Toast . LENGTH_LONG ) . show ( ) ;
Utils . setCameraPermission ( false ) ;
} else {
Utils . setCameraPermission ( true ) ;
}
if ( grantResults [ 2 ] ! = PackageManager . PERMISSION_GRANTED ) {
Log . d ( TAG , " onRequestPermissionsResult:DIDNT get READ \\ WRITE External storage permission " ) ;
Toast . makeText ( MainActivity . this , " No READ \\ WRITE External storage Permissions granted. \ nyou will not be able to change avatar " , Toast . LENGTH_LONG ) . show ( ) ;
Utils . setCameraPermission ( false ) ;
} else {
Utils . setCameraPermission ( true ) ;
}
return ;
2016-07-03 14:33:11 +00:00
}
2016-07-09 01:19:00 +00:00
}
2016-07-06 15:23:16 +00:00
}
2016-07-06 14:15:16 +00:00
2016-07-07 20:40:25 +00:00
}
2016-07-09 01:19:00 +00:00
public void updateNavAvatar ( ) {
2016-07-09 00:12:49 +00:00
//Change The Avatar
2016-07-09 01:19:00 +00:00
Log . d ( TAG , " updateNavAvatar: PINPINPINPIN " ) ;
2016-07-09 00:12:49 +00:00
Utils . URLtoImageView ( menu_avatar , user . getAvatar ( ) ) ;
Toast . makeText ( this , " Profile Updated! " , Toast . LENGTH_LONG ) . show ( ) ;
}
2016-07-03 14:33:11 +00:00
}
2016-07-06 14:15:16 +00:00
2016-07-07 20:40:25 +00:00
2016-07-06 14:15:16 +00:00