diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6927407..493af43 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,7 +6,9 @@ - + + + diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/GmapFragment.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/GmapFragment.java index 15c9f48..62f6e0d 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/GmapFragment.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/GmapFragment.java @@ -377,6 +377,7 @@ public class GmapFragment extends Fragment implements OnMapReadyCallback { } VolleyUtilSingleton.getInstance(getActivity()).post(Utils.BASE_URL + "/note/like", jsonObj, getNotesSuccessListener, Utils.genericErrorListener); mainActivity.getUser().getLiked_notes().add(note.getId()); + mainActivity.getUser().updateUser(mainActivity); likes.setText("Likes: "+(note.getLikes()+1)); } } diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/LoginActivity.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/LoginActivity.java index 5ff7851..01b8bd9 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/LoginActivity.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/LoginActivity.java @@ -38,11 +38,9 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList private TextView mRegisterButton; private Button mLoginButton; private final String TAG = "[TSN/LoginActivity]"; - private final String BASE_URL = "http://thesocialnotework-api.appspot.com/api"; private final String LOGIN_PATH = "/login"; private LoginActivity self; //this protected LinearLayout layout; - private boolean permissionsReturend = false; @Override @@ -126,8 +124,6 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList try { if (!response.isNull("user")) { Log.e(TAG, "onLoginSuccess => user exist"); // TODO: REMOVE console - SharedPreferences sharedPref = self.getSharedPreferences(MainActivity.LOCAL_DATA_TSN, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sharedPref.edit(); String id, password, email, avatar, username, likedNotes = ""; JSONArray likedNotes_JSON; @@ -143,8 +139,7 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList likedNotes += User.LIKED_NOTES_DELIMETER; } } - editor.putString("UserData", id + User.ATTARS_DELIMETER + username + User.ATTARS_DELIMETER + password + User.ATTARS_DELIMETER + email + User.ATTARS_DELIMETER + avatar + User.ATTARS_DELIMETER + likedNotes); - editor.commit(); + Utils.updateUserSharedPref(id + User.ATTARS_DELIMETER + username + User.ATTARS_DELIMETER + password + User.ATTARS_DELIMETER + email + User.ATTARS_DELIMETER + avatar + User.ATTARS_DELIMETER + likedNotes); Intent personalSpaceActivity = new Intent(LoginActivity.this, MainActivity.class); Bundle loginUserBundle = new Bundle(); loginUserBundle.putString("UserData", id + User.ATTARS_DELIMETER + username + User.ATTARS_DELIMETER + password + User.ATTARS_DELIMETER + email + User.ATTARS_DELIMETER + avatar + User.ATTARS_DELIMETER + likedNotes); diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/MainActivity.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/MainActivity.java index b34b561..449c4c0 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/MainActivity.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/MainActivity.java @@ -43,190 +43,207 @@ import java.util.Date; import java.util.List; public class MainActivity extends AppCompatActivity - 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 GmapFragment gmapFragment; - private PersonalFragment personalFragment; - private SettingsFragment settingsFragment; - private Toolbar toolbar; - public static final String BASE_URL = "http://thesocialnotework-api.appspot.com/api"; - private ImageView menu_avatar; - private MainActivity self; - private NavigationView nav_view; - private final int FINE_PERM = 0, CAMERA_PERM = 1; + 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; + private Toolbar toolbar; + public static final String BASE_URL = "http://thesocialnotework-api.appspot.com/api"; + private ImageView menu_avatar; + private MainActivity self; + private NavigationView nav_view; + private final int FINE_PERM = 0, CAMERA_PERM = 1; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - this.self = this; + @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(); + StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); + StrictMode.setThreadPolicy(policy); - toolbar = (Toolbar) findViewById(R.id.toolbar); - toolbar.setTitle("Personal Notes"); - setSupportActionBar(toolbar); - gmapFragment = new GmapFragment(); - personalFragment = new PersonalFragment(); - settingsFragment = new SettingsFragment(); - StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); - StrictMode.setThreadPolicy(policy); + 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(); - 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 navigationView = (NavigationView) findViewById(R.id.nav_view); + navigationView.setNavigationItemSelectedListener(this); - //get Bundle data (UserString) - Bundle b = getIntent().getExtras(); - this.user = new User(b.getString("UserData")); + //get Bundle data (UserString) + Bundle b = getIntent().getExtras(); + this.user = new User(b.getString("UserData")); - //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); + //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); - //Change Layout - Log.d(TAG, "Changing Fragment to Personal Activity"); + //Change Layout + Log.d(TAG, "Changing Fragment to Personal Activity"); // PersonalFragment personalFragment = new PersonalFragment(); - 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(); + 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(); - //Change The Avatar - Utils.URLtoImageView(menu_avatar, user.getAvatar()); + //Change The Avatar + Utils.URLtoImageView(menu_avatar, user.getAvatar()); + } + + @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; } - @Override - public void onBackPressed() { - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - if (drawer.isDrawerOpen(GravityCompat.START)) { - drawer.closeDrawer(GravityCompat.START); - } else { - super.onBackPressed(); + return super.onOptionsItemSelected(item); + } + + @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); + } 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) { + + 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) { + + try { + Utils.removeUserDataFromPrefs(); + } catch (Exception e) { + e.printStackTrace(); + } + Intent loginActivity = new Intent(MainActivity.this, LoginActivity.class); + startActivity(loginActivity); + finish(); + } + + DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); + drawer.closeDrawer(GravityCompat.START); + return true; + } + + public GPSUtils getGPSUtils() { + return this.gpsUtils; + } + + + public User getUser() { + return user; + } + + public String getUserId() { + return user.getId(); + } + + @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; } + } } - @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(); + public void updateNavAvatar() { + //Change The Avatar + Log.d(TAG, "updateNavAvatar: PINPINPINPIN"); + Utils.URLtoImageView(menu_avatar, user.getAvatar()); + Toast.makeText(this, "Profile Updated!", Toast.LENGTH_LONG).show(); - //noinspection SimplifiableIfStatement - if (id == R.id.action_settings) { - return true; - } - - return super.onOptionsItemSelected(item); - } - - @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); - } 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) { - - 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) { - - SharedPreferences sharedPref = this.getSharedPreferences(MainActivity.LOCAL_DATA_TSN, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.remove("UserData"); - editor.commit(); - Intent loginActivity = new Intent(MainActivity.this, LoginActivity.class); - startActivity(loginActivity); - finish(); - } - - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - drawer.closeDrawer(GravityCompat.START); - return true; - } - - public GPSUtils getGPSUtils() { - return this.gpsUtils; - } - - - public User getUser() { - return user; - } - - public String getUserId() { - return user.getId(); - } - - @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 > 1) { - 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); - } - return; - } - } - } - - } + } } diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/PersonalFragment.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/PersonalFragment.java index 2830ad8..6636b88 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/PersonalFragment.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/PersonalFragment.java @@ -52,15 +52,15 @@ import java.util.List; */ public class PersonalFragment extends Fragment { - protected ListView noteList; - private final String BASE_URL = "http://thesocialnotework-api.appspot.com/api"; - private GPSUtils gpsUtils; - private List listOfNotes; - private ListAdapter noteListAdapter; - private String userId; - private final String TAG = "[TSN/PersonalFragment]"; - private MainActivity activity; - private final int FINE_PERM = 0, CAMERA_PERM = 1; + protected ListView noteList; + private final String BASE_URL = "http://thesocialnotework-api.appspot.com/api"; + private GPSUtils gpsUtils; + private List listOfNotes; + private ListAdapter noteListAdapter; + private String userId; + private final String TAG = "[TSN/PersonalFragment]"; + private MainActivity activity; + private final int FINE_PERM = 0, CAMERA_PERM = 1; private ImageButton dateFilter; @@ -84,22 +84,25 @@ public class PersonalFragment extends Fragment { } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_personal, container, false); - // Inflate the layout for this fragment - activity = (MainActivity) getActivity(); - Bundle bundle = getArguments(); - this.userId = activity.getUserId(); - Log.d(TAG, "onCreateView: userID: " + userId); + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_personal, container, false); + // Inflate the layout for this fragment + activity = (MainActivity) getActivity(); + Bundle bundle = getArguments(); + this.userId = activity.getUserId(); + Log.d(TAG, "onCreateView: userID: " + userId); + + ActivityCompat.requestPermissions(activity, new String[]{ + android.Manifest.permission.ACCESS_FINE_LOCATION, + android.Manifest.permission.CAMERA, + Manifest.permission.WRITE_EXTERNAL_STORAGE + }, + FINE_PERM + ); + - ActivityCompat.requestPermissions(activity, new String[]{ - android.Manifest.permission.ACCESS_FINE_LOCATION, - android.Manifest.permission.CAMERA - }, - FINE_PERM - ); // ActivityCompat.requestPermissions(activity, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, FINE_PERM); // if (!Utils.arePermissionsGranted()) { @@ -176,126 +179,126 @@ public class PersonalFragment extends Fragment { } - @Override - public void onAttach(Context context) { - super.onAttach(context); - Utils.dismissLoadingDialog(); - Log.d(TAG, "onAttach"); - } + @Override + public void onAttach(Context context) { + super.onAttach(context); + Utils.dismissLoadingDialog(); + Log.d(TAG, "onAttach"); + } - @Override - public void onDetach() { - super.onDetach(); - Utils.dismissLoadingDialog(); - } + @Override + public void onDetach() { + super.onDetach(); + Utils.dismissLoadingDialog(); + } - public void getAllNotes() { - Log.d(TAG, "url: " + BASE_URL + "/note/all?uid=" + userId); - VolleyUtilSingleton.getInstance(getActivity()).get(BASE_URL + "/note/all?uid=" + userId, getNotesSuccessListener, Utils.genericErrorListener); - } + public void getAllNotes() { + Log.d(TAG, "url: " + BASE_URL + "/note/all?uid=" + userId); + VolleyUtilSingleton.getInstance(getActivity()).get(BASE_URL + "/note/all?uid=" + userId, getNotesSuccessListener, Utils.genericErrorListener); + } private View.OnClickListener addNewNoteDialog = new View.OnClickListener() { public void onClick(View v) { - //create and configure dialog - final Dialog dialog = new Dialog(getActivity()); - dialog.setContentView(R.layout.note_view_full); - dialog.setTitle("New Note"); - WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); - lp.copyFrom(dialog.getWindow().getAttributes()); - lp.width = WindowManager.LayoutParams.MATCH_PARENT; - lp.height = WindowManager.LayoutParams.MATCH_PARENT; - dialog.setCancelable(false); - dialog.show(); - dialog.getWindow().setAttributes(lp); + //create and configure dialog + final Dialog dialog = new Dialog(getActivity()); + dialog.setContentView(R.layout.note_view_full); + dialog.setTitle("New Note"); + WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); + lp.copyFrom(dialog.getWindow().getAttributes()); + lp.width = WindowManager.LayoutParams.MATCH_PARENT; + lp.height = WindowManager.LayoutParams.MATCH_PARENT; + dialog.setCancelable(false); + dialog.show(); + dialog.getWindow().setAttributes(lp); - //get note_view_full layout elements - final Switch permissionSwitch = (Switch) dialog.findViewById(R.id.nvf_note_permission); - final EditText newTitle = (EditText) dialog.findViewById(R.id.nvf_note_title); - final EditText newBody = (EditText) dialog.findViewById(R.id.nvf_note_content); - Button saveBtn = (Button) dialog.findViewById(R.id.nvf_note_submit_btn); - Button cancelBtn = (Button) dialog.findViewById(R.id.nvf_note_cancel_btn); + //get note_view_full layout elements + final Switch permissionSwitch = (Switch) dialog.findViewById(R.id.nvf_note_permission); + final EditText newTitle = (EditText) dialog.findViewById(R.id.nvf_note_title); + final EditText newBody = (EditText) dialog.findViewById(R.id.nvf_note_content); + Button saveBtn = (Button) dialog.findViewById(R.id.nvf_note_submit_btn); + Button cancelBtn = (Button) dialog.findViewById(R.id.nvf_note_cancel_btn); - cancelBtn.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - dialog.dismiss(); - } - }); + cancelBtn.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + dialog.dismiss(); + } + }); - saveBtn.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { + saveBtn.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { - //title too short - if (newTitle.getText().length() == 0) { - Toast toast = Toast.makeText(getActivity(), "Title too short.", Toast.LENGTH_LONG); - toast.show(); - return; - } + //title too short + if (newTitle.getText().length() == 0) { + Toast toast = Toast.makeText(getActivity(), "Title too short.", Toast.LENGTH_LONG); + toast.show(); + return; + } - //title too long - if (newTitle.getText().length() > 20) { - Toast toast = Toast.makeText(getActivity(), "Title too long.\n Use up to 20 notes.", Toast.LENGTH_LONG); - toast.show(); - return; - } - //volley post - final JSONObject noteJson = new JSONObject(); - try { + //title too long + if (newTitle.getText().length() > 20) { + Toast toast = Toast.makeText(getActivity(), "Title too long.\n Use up to 20 notes.", Toast.LENGTH_LONG); + toast.show(); + return; + } + //volley post + final JSONObject noteJson = new JSONObject(); + try { - //TODO need to get owner id from login screen - noteJson.put("owner_id", userId); - noteJson.put("title", newTitle.getText()); - noteJson.put("lat", gpsUtils.getLatitude()); - noteJson.put("lng", gpsUtils.getLongitude()); - noteJson.put("address", gpsUtils.getAddress()); - noteJson.put("body", newBody.getText()); - noteJson.put("is_public", permissionSwitch.isChecked()); + //TODO need to get owner id from login screen + noteJson.put("owner_id", userId); + noteJson.put("title", newTitle.getText()); + noteJson.put("lat", gpsUtils.getLatitude()); + noteJson.put("lng", gpsUtils.getLongitude()); + noteJson.put("address", gpsUtils.getAddress()); + noteJson.put("body", newBody.getText()); + noteJson.put("is_public", permissionSwitch.isChecked()); // noteJson.put("tags",); - Log.d(TAG, "Json: " + noteJson.toString()); + Log.d(TAG, "Json: " + noteJson.toString()); - } catch (Exception e) { - Log.d(TAG, "saveBtn: " + e.toString()); - } - - //send request and close dialog - VolleyUtilSingleton.getInstance(getActivity()).post(BASE_URL + "/note/upsert", noteJson, newNoteSuccessListener, Utils.genericErrorListener); - dialog.dismiss(); - } - }); - - //change text of switch according to state. - permissionSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) - permissionSwitch.setText(R.string.nvf_public_label); - else - permissionSwitch.setText(R.string.nvf_private_label); - } - }); - + } catch (Exception e) { + Log.d(TAG, "saveBtn: " + e.toString()); + } + //send request and close dialog + VolleyUtilSingleton.getInstance(getActivity()).post(BASE_URL + "/note/upsert", noteJson, newNoteSuccessListener, Utils.genericErrorListener); + dialog.dismiss(); } - }; - - //response listener for adding new note - Response.Listener newNoteSuccessListener = new Response.Listener() { - @Override - public void onResponse(JSONObject response) { - Log.d(TAG, "newNoteSuccess: response - " + response.toString()); - try { - Date time = new Date(); - JSONObject noteObject = response.getJSONObject("note"); - time.setTime(noteObject.getLong("created_at")); - addNoteFromJsonObj(noteObject, time); - noteList.setAdapter(noteListAdapter); - } catch (Exception e) { - Log.e(TAG, "newNoteSuccess:" + e.getMessage()); - } + }); + //change text of switch according to state. + permissionSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (isChecked) + permissionSwitch.setText(R.string.nvf_public_label); + else + permissionSwitch.setText(R.string.nvf_private_label); } - }; + }); + + + } + }; + + //response listener for adding new note + Response.Listener newNoteSuccessListener = new Response.Listener() { + @Override + public void onResponse(JSONObject response) { + Log.d(TAG, "newNoteSuccess: response - " + response.toString()); + try { + Date time = new Date(); + JSONObject noteObject = response.getJSONObject("note"); + time.setTime(noteObject.getLong("created_at")); + addNoteFromJsonObj(noteObject, time); + noteList.setAdapter(noteListAdapter); + } catch (Exception e) { + Log.e(TAG, "newNoteSuccess:" + e.getMessage()); + } + + } + }; // //response Error listener for adding new note @@ -307,29 +310,30 @@ public class PersonalFragment extends Fragment { // }; - //response listener for getting all user notes - Response.Listener getNotesSuccessListener = new Response.Listener() { - @Override - public void onResponse(JSONObject response) { - Log.d(TAG, "getNotesSuccessListener: " + response.toString()); - Utils.dismissLoadingDialog(); - try { - //need to get all notes and add to listOfNotes - JSONArray noteObjectsArray = response.getJSONArray("notes"); - Date time = new Date(); - for (int i = 0; i < noteObjectsArray.length(); i++) { - JSONObject noteObject = noteObjectsArray.getJSONObject(i); - time.setTime(noteObject.getLong("created_at")); - - addNoteFromJsonObj(noteObject, time); - } - noteList.setAdapter(noteListAdapter); - } catch (Exception e) { - Log.e(TAG, "newNoteSuccess:" + e.getMessage()); - } + //response listener for getting all user notes + Response.Listener getNotesSuccessListener = new Response.Listener() { + @Override + public void onResponse(JSONObject response) { + Log.d(TAG, "getNotesSuccessListener: " + response.toString()); + Utils.dismissLoadingDialog(); + try { + //need to get all notes and add to listOfNotes + JSONArray noteObjectsArray = response.getJSONArray("notes"); + activity.getUser().setNumber_of_notes(noteObjectsArray.length()); + Date time = new Date(); + for (int i = 0; i < noteObjectsArray.length(); i++) { + JSONObject noteObject = noteObjectsArray.getJSONObject(i); + time.setTime(noteObject.getLong("created_at")); + addNoteFromJsonObj(noteObject, time); } - }; + noteList.setAdapter(noteListAdapter); + } catch (Exception e) { + Log.e(TAG, "newNoteSuccess:" + e.getMessage()); + } + + } + }; // //response ErrorListener for getting all user notes @@ -352,55 +356,55 @@ public class PersonalFragment extends Fragment { // }; - private ArrayList jsonArrayToStringArray(JSONArray jArray) { - ArrayList stringArray = new ArrayList(); - for (int i = 0, count = jArray.length(); i < count; i++) { - try { - JSONObject jsonObject = jArray.getJSONObject(i); - stringArray.add(jsonObject.toString()); - } catch (JSONException e) { - e.printStackTrace(); - } - } - return stringArray; + private ArrayList jsonArrayToStringArray(JSONArray jArray) { + ArrayList stringArray = new ArrayList(); + for (int i = 0, count = jArray.length(); i < count; i++) { + try { + JSONObject jsonObject = jArray.getJSONObject(i); + stringArray.add(jsonObject.toString()); + } catch (JSONException e) { + e.printStackTrace(); + } } + return stringArray; + } - private void addNoteFromJsonObj(JSONObject noteObject, Date time) throws JSONException { - Note addNote = new Note( - noteObject.getString("id"), - Float.parseFloat(noteObject.getJSONObject("location").getString("lat")), - Float.parseFloat(noteObject.getJSONObject("location").getString("lng")), - noteObject.getJSONObject("location").getString("address"), - noteObject.getString("title"), - noteObject.getString("body"), - time.toString(), - noteObject.getBoolean("is_public"), - noteObject.getInt("likes"), - noteObject.getString("avatar"), - noteObject.getString("owner_id"), - jsonArrayToStringArray(noteObject.getJSONArray("tags")) - ); - listOfNotes.add(addNote); + private void addNoteFromJsonObj(JSONObject noteObject, Date time) throws JSONException { + Note addNote = new Note( + noteObject.getString("id"), + Float.parseFloat(noteObject.getJSONObject("location").getString("lat")), + Float.parseFloat(noteObject.getJSONObject("location").getString("lng")), + noteObject.getJSONObject("location").getString("address"), + noteObject.getString("title"), + noteObject.getString("body"), + time.toString(), + noteObject.getBoolean("is_public"), + noteObject.getInt("likes"), + noteObject.getString("avatar"), + noteObject.getString("owner_id"), + jsonArrayToStringArray(noteObject.getJSONArray("tags")) + ); + listOfNotes.add(addNote); - } + } - // click on listView item - class ItemClickedListener implements AdapterView.OnItemClickListener { - @Override - public void onItemClick(AdapterView parent, View view, final int position, long id) { - //create and configure dialog - final Note note = listOfNotes.get(position); - final Dialog noteViewDialog = new Dialog(getActivity()); - noteViewDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - noteViewDialog.setContentView(R.layout.note_display_full); + // click on listView item + class ItemClickedListener implements AdapterView.OnItemClickListener { + @Override + public void onItemClick(AdapterView parent, View view, final int position, long id) { + //create and configure dialog + final Note note = listOfNotes.get(position); + final Dialog noteViewDialog = new Dialog(getActivity()); + noteViewDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + noteViewDialog.setContentView(R.layout.note_display_full); // noteViewDialog.setTitle("You wrote..."); - WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); - lp.copyFrom(noteViewDialog.getWindow().getAttributes()); - lp.width = WindowManager.LayoutParams.MATCH_PARENT; - lp.height = WindowManager.LayoutParams.MATCH_PARENT; - noteViewDialog.show(); + WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); + lp.copyFrom(noteViewDialog.getWindow().getAttributes()); + lp.width = WindowManager.LayoutParams.MATCH_PARENT; + lp.height = WindowManager.LayoutParams.MATCH_PARENT; + noteViewDialog.show(); // dialog.getWindow().setAttributes(lp); diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/SettingsFragment.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/SettingsFragment.java index b77b215..96e09cb 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/SettingsFragment.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/SettingsFragment.java @@ -1,57 +1,56 @@ package com.android_app.matan.ara.sagi.thesocialnotework; -import android.*; import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v4.app.ActivityCompat; import android.support.v4.app.Fragment; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.Base64; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageButton; import android.widget.ImageView; +import android.widget.TextView; import android.widget.Toast; -public class SettingsFragment extends Fragment { - private static final String ARG_PARAM1 = "param1"; - private static final String ARG_PARAM2 = "param2"; - private static final String TAG = "Settings" ; - private static final int REQUEST_IMAGE_CAPTURE = 1; - private Button cameraBtn; +import com.android.volley.Response; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.ByteArrayOutputStream; +import java.io.File; + +public class SettingsFragment extends Fragment implements View.OnClickListener, TextWatcher { + private static final String TAG = "[TSN/Settings]" ; + private MainActivity parent; + private ImageButton cameraBtn; private ImageView avatarImage; -// private OnFragmentInteractionListener mListener; + private EditText txt_username, txt_password, txt_email; + private Uri currentImgUri; + private TextView lbl_num_of_notes, lbl_num_of_liked; + private User user; + private Button btn_save; public SettingsFragment() { // Required empty public constructor - } - /** - * Use this factory method to create a new instance of - * this fragment using the provided parameters. - * - * @param param1 Parameter 1. - * @param param2 Parameter 2. - * @return A new instance of fragment SettingsFragment. - */ - // TODO: Rename and change types and number of parameters - public static SettingsFragment newInstance(String param1, String param2) { - SettingsFragment fragment = new SettingsFragment(); - Bundle args = new Bundle(); - args.putString(ARG_PARAM1, param1); - args.putString(ARG_PARAM2, param2); - fragment.setArguments(args); - return fragment; - } + @Override public void onCreate(Bundle savedInstanceState) { @@ -63,19 +62,40 @@ public class SettingsFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_settings, container, false); + this.parent = (MainActivity)getActivity(); + Utils.showLoadingDialog(parent, "Just a sec...", ""); + this.user = parent.getUser(); + Log.d(TAG, "onCreateView: "+user.toString()); + this.cameraBtn = (ImageButton) view.findViewById(R.id.btn_camera); + this.cameraBtn.setOnClickListener(this); + this.avatarImage = (ImageView) view.findViewById(R.id.settings_userAvater_iamgeView); + this.txt_email = (EditText)view.findViewById(R.id.txt_email); + this.txt_email.addTextChangedListener(this); + this.txt_password = (EditText)view.findViewById(R.id.txt_password); + this.txt_password.addTextChangedListener(this); + this.txt_username = (EditText)view.findViewById(R.id.txt_username); + this.lbl_num_of_notes = (TextView)view.findViewById(R.id.lbl_num_of_notes); + this.lbl_num_of_liked = (TextView)view.findViewById(R.id.lbl_num_of_liked); + this.btn_save = (Button)view.findViewById(R.id.btn_save); + this.btn_save.setOnClickListener(this); - cameraBtn = (Button) view.findViewById(R.id.camera_button); - cameraBtn.setOnClickListener(cameraBtnListener); - avatarImage = (ImageView) view.findViewById(R.id.settings_userAvater_iamgeView); + this.txt_username.setEnabled(false); + + //Populate The data + Utils.URLtoImageView(avatarImage, user.getAvatar()); + this.txt_username.setText(""+user.getUsername()); + this.txt_password.setText(""+user.getPassword()); + Log.d(TAG, "onCreateView: The FUCKING EMAIL IS --------------->>>" + user.getEmail()); + this.txt_email.setText(""+user.getEmail()); + + this.lbl_num_of_notes.setText(""+user.getNumber_of_notes()); //TODO + this.lbl_num_of_liked.setText(""+user.getLiked_notes().size()); + + + Utils.dismissLoadingDialog(); return view; } -// // TODO: Rename method, update argument and hook method into UI event -// public void onButtonPressed(Uri uri) { -// if (mListener != null) { -// mListener.onFragmentInteraction(uri); -// } -// } @Override public void onAttach(Context context) { @@ -84,67 +104,120 @@ public class SettingsFragment extends Fragment { @Override public void onDetach() { - super.onDetach(); - } - -// /** -// * This interface must be implemented by activities that contain this -// * fragment to allow an interaction in this fragment to be communicated -// * to the activity and potentially other fragments contained in that -// * activity. -// *

-// * See the Android Training lesson Communicating with Other Fragments for more information. -// */ -// public interface OnFragmentInteractionListener { -// // TODO: Update argument type and name -// void onFragmentInteraction(Uri uri); -// } - - - - - private View.OnClickListener cameraBtnListener = new View.OnClickListener() - { - - public void onClick(View v) - { - if (ActivityCompat.checkSelfPermission((MainActivity) getActivity(), - Manifest.permission.CAMERA) - == PackageManager.PERMISSION_GRANTED) { - Log.d(TAG, "in camera Button"); - Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); - startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); - } - else{ - Toast.makeText(getActivity(), "No Location Permissions granted.\n\"An App is nothing without its permissions\"", Toast.LENGTH_LONG).show(); - - } - - } - - }; - - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - Log.d(TAG, "on activity result"); - Log.d(TAG, "requestCode: "+requestCode); - Log.d(TAG, "resultCode: "+resultCode); - Log.d(TAG, "Activity.RESULT_OK: "+Activity.RESULT_OK); - if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) { - Log.d(TAG, "inside if"); - - Bundle extras = data.getExtras(); - Bitmap imageBitmap= (Bitmap) extras.get("data"); - Log.d(TAG, "bitmap: "+imageBitmap.toString()); - -// Bitmap imageBitmap = (Bitmap) extras.get("data"); - avatarImage.setImageBitmap(imageBitmap); - - } + super.onDetach(); } + @Override + public void onClick(View view) { + switch(view.getId()){ + case R.id.btn_camera: + //check for permission +// ActivityCompat.requestPermissions(parent, new String[]{Manifest.permission.CAMERA}, 1); + if ((ActivityCompat.checkSelfPermission(parent, android.Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) + &&(ActivityCompat.checkSelfPermission(parent, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) { + openCamera(view); + }else{ + Toast.makeText(getActivity(), "No Camera or Storage Permissions granted.\n\"An App is nothing without its permissions\"", Toast.LENGTH_LONG).show(); + + } + + break; + case R.id.btn_save: + user.updateUser(parent); + break; + } + } + + /** + * creates a new camera intent + * @param v + */ + protected void openCamera(View v) { + Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); + createDir(); + Long currentImageTimeStamp = System.currentTimeMillis(); + String timeStamp = Long.toString(currentImageTimeStamp); + File photo = new File(Utils.PHOTOS_DIR_PATH, timeStamp + ".jpg"); + currentImgUri = Uri.fromFile(photo); + intent.putExtra(MediaStore.EXTRA_OUTPUT, currentImgUri); + Log.d(TAG, "openCamera: Image URI is: " + currentImgUri); + startActivityForResult(intent, 1); + } + + protected void createDir() { + File f = new File(Utils.PHOTOS_DIR_PATH); + f.mkdirs(); + } + + @Override + public void onActivityResult(int requestCode, int resaultCode, Intent intent) { + super.onActivityResult(requestCode, requestCode, intent); + if (resaultCode == Activity.RESULT_OK) { + if (currentImgUri != null) { + saveImage(); + Log.d(TAG, "onActivityResult: Image Capured!! - Now Upload That Shit!!"); + } else { //capturing failed + Toast.makeText(getActivity(), "Failed to Get Photo, Try Again", Toast.LENGTH_LONG).show(); + Log.e(TAG, "onActivityResult: Image URI returned as NULL - Orientation Fail"); + } + } else { + Log.i(TAG, "onActivityResult: User Canceled Image taking"); + + } + } + + private void saveImage() { + Utils.showLoadingDialog(parent, "Saving Image...", "This Can Take a while"); + File myFile = new File(currentImgUri.getPath()); + + JSONObject payload = new JSONObject(); + try { + payload.put("image", ImageToBase64(myFile.getAbsolutePath())); + } catch (JSONException e) { + e.printStackTrace(); + Utils.dismissLoadingDialog(); + Toast.makeText(parent, "Failed to upload image.. Try Again", Toast.LENGTH_LONG).show(); + } + VolleyUtilSingleton.getInstance(parent).post(Utils.BASE_URL + Utils.UPLOAD_IMAGE_PATH, payload, new Response.Listener() { + @Override + public void onResponse(JSONObject response) { + Log.d(TAG, "onResponse: "+response.toString()); + try { + user.setAvatar(response.getString("image_url")); + //Populate The data + Utils.URLtoImageView(avatarImage, user.getAvatar()); + user.updateUser(parent); + } catch (JSONException e) { + e.printStackTrace(); + } + Utils.dismissLoadingDialog(); + } + }, Utils.genericErrorListener); + } + + private String ImageToBase64(String filePath){ + Bitmap bm = BitmapFactory.decodeFile(filePath); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + bm.compress(Bitmap.CompressFormat.JPEG, 50, baos); //bm is the bitmap object + byte[] b = baos.toByteArray(); + Log.d(TAG, "ImageToBase64: "+b.length/1000); + return Base64.encodeToString(b, Base64.DEFAULT); + } + + @Override + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { + user.setEmail(txt_email.getText().toString()); + user.setPassword(txt_password.getText().toString()); + } + + @Override + public void afterTextChanged(Editable editable) { + + } } diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/SplashActivity.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/SplashActivity.java index d8b6e40..480db6f 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/SplashActivity.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/SplashActivity.java @@ -1,16 +1,11 @@ package com.android_app.matan.ara.sagi.thesocialnotework; -import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; -import android.support.v7.graphics.drawable.DrawableWrapper; -import android.util.Log; import android.view.Window; import android.view.WindowManager; import android.widget.ImageView; -import android.widget.LinearLayout; import java.util.Random; @@ -18,7 +13,6 @@ public class SplashActivity extends AppCompatActivity { private ImageView background; private int timerDelay = 3500; - private final String TAG = "Splash Screen Activity"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -33,8 +27,8 @@ public class SplashActivity extends AppCompatActivity { } else { background.setImageDrawable( getResources().getDrawable(rand_splash())); } - SharedPreferences sharedPref = this.getSharedPreferences(MainActivity.LOCAL_DATA_TSN, Context.MODE_PRIVATE); - final String userData = sharedPref.getString("UserData", null); + + final String userData = Utils.getUserFromSharedPrefs(this); Thread timerThread = new Thread(){ public void run(){ diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/User.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/User.java index d7ebd89..c295897 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/User.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/User.java @@ -1,6 +1,15 @@ package com.android_app.matan.ara.sagi.thesocialnotework; +import android.content.Context; +import android.content.SharedPreferences; import android.util.Log; +import android.widget.Toast; + +import com.android.volley.Response; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; import java.util.Vector; @@ -21,9 +30,13 @@ public class User { public static final String TAG = "[TSN/User]", ATTARS_DELIMETER="||" , LIKED_NOTES_DELIMETER="|"; protected String id, password, email, avatar, username; protected Vector liked_notes; + protected int number_of_notes; + protected User self; public User(String serializedUserData){ + self = this; liked_notes = new Vector<>(); + number_of_notes = 0; String[] array = serializedUserData.split("\\|\\|"); for (int i = 0 ; i < array.length ; i ++){ switch (i){ @@ -52,6 +65,14 @@ public class User { } } + public int getNumber_of_notes() { + return number_of_notes; + } + + public void setNumber_of_notes(int number_of_notes) { + this.number_of_notes = number_of_notes; + } + public String getId() { return id; } @@ -119,7 +140,7 @@ public class User { for (int i = 0; i < liked_notes.size(); i++) { result += liked_notes.get(i); if(i != liked_notes.size() - 1){ - result+=";"; + result+=User.LIKED_NOTES_DELIMETER; } } return result; @@ -129,6 +150,46 @@ public class User { return "Id: "+id+" UserName: " + username +" Password: " +password +" email: " + email+ " Avatar: " +avatar+" Liked Notes: "+liked_notes.toString(); } + public void updateUser(final MainActivity activity){ + Log.d(TAG, "updateUser: ================================"); + VolleyUtilSingleton.getInstance(activity).post(Utils.BASE_URL + "/user/upsert", this.toJSON(), new Response.Listener() { + @Override + public void onResponse(JSONObject response) { + try { + if(response.get("status").equals("OK")){ + Log.d(TAG, "onResponse: In OKOKOKOK"); + activity.updateNavAvatar(); + Utils.updateUserSharedPref(self.Serialise()); + activity.updateNavAvatar(); + } + } catch (JSONException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + }, Utils.genericErrorListener); + } + + public JSONObject toJSON() { + JSONObject json = new JSONObject(); + JSONArray liked = new JSONArray(); + for (int i = 0; i < liked_notes.size(); i++) { + liked.put(liked_notes.get(i)); + } + try { + json.put("id", this.id); + json.put("password", this.password); + json.put("username", this.username); + json.put("email", this.email); + json.put("avatar", this.avatar); + json.put("liked_notes_id", liked); + } catch (JSONException e) { + e.printStackTrace(); + } + + return json; + } } diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/Utils.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/Utils.java index ae76b56..c6a0369 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/Utils.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/Utils.java @@ -2,6 +2,7 @@ package com.android_app.matan.ara.sagi.thesocialnotework; import android.app.ProgressDialog; import android.content.Context; +import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; @@ -11,6 +12,7 @@ import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.os.AsyncTask; +import android.os.Environment; import android.util.Log; import android.widget.ImageView; @@ -37,11 +39,14 @@ import java.util.HashMap; public class Utils { public static final String TAG = "Utils"; - public static final String BASE_URL = "http://thesocialnotework-api.appspot.com/api"; + public static final String BASE_URL = "http://thesocialnotework-api.appspot.com/api", UPLOAD_IMAGE_PATH="/file/upload"; public static ProgressDialog progress; private static HashMap bitmapHash = new HashMap<>(); + public static final String PHOTOS_DIR_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/TheSocialNotework/"; + private static boolean mLocationPermission = false; private static boolean mCameraPermission = false; + private static SharedPreferences prefs; public static Bitmap getBitmapFromURL(String url) { @@ -74,6 +79,7 @@ public class Utils { public void onErrorResponse(VolleyError error) { Log.d(TAG, "genericErrorListener"); error.printStackTrace(); + Utils.dismissLoadingDialog(); } }; @@ -142,7 +148,8 @@ public class Utils { private static class setUserAvatar extends AsyncTask { private ImageView iv; private String url; - public setUserAvatar(ImageView imageView, String url){ + + public setUserAvatar(ImageView imageView, String url) { this.iv = imageView; this.url = url; } @@ -151,14 +158,13 @@ public class Utils { protected Bitmap doInBackground(Void... v) { // Bitmap b; - return Utils.getBitmapFromURL(url); + return Utils.getBitmapFromURL(url); } @Override - protected void onPostExecute(Bitmap b){ - iv.setImageBitmap(b); - //getRoundedCornerBitmap(b, 20); + protected void onPostExecute(Bitmap b) { + iv.setImageBitmap(b); } } public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) { @@ -204,6 +210,28 @@ public class Utils { return mLocationPermission; } + public static String getUserFromSharedPrefs(Context contexst){ + if(prefs == null){ + prefs = contexst.getSharedPreferences(MainActivity.LOCAL_DATA_TSN, Context.MODE_PRIVATE); + } + return prefs.getString("UserData", null); + }; + + public static void updateUserSharedPref(String data) throws Exception { + if(prefs == null) throw new Exception("Prefs are not available"); + SharedPreferences.Editor editor = prefs.edit(); + editor.putString("UserData", data); + editor.commit(); + } + + public static void removeUserDataFromPrefs() throws Exception{ + if(prefs == null) throw new Exception("Prefs are not available"); + SharedPreferences.Editor editor = prefs.edit(); + editor.remove("UserData"); + editor.commit(); + } + + } diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 799fe50..ae25b3d 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -1,20 +1,138 @@ - -