diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/ExploreFragment.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/ExploreFragment.java index cdc7013..4e4d04d 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/ExploreFragment.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/ExploreFragment.java @@ -1,6 +1,9 @@ package com.android_app.matan.ara.sagi.thesocialnotework; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; @@ -8,10 +11,16 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.AdapterView; import android.widget.Button; import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; import com.android.volley.Response; @@ -32,166 +41,260 @@ import java.util.ListIterator; */ public class ExploreFragment extends Fragment { - private static final String TAG = "[TSN/Explore]"; - protected User user; - protected MainActivity parent; - private ListAdapter noteListAdapter; - private List notes; - protected ListView list_notes; + private static final String TAG = "[TSN/Explore]"; + protected User user; + protected MainActivity parent; + private ListAdapter noteListAdapter; + private List notes; + protected ListView list_notes; - private ImageButton dateFilter; - private ImageButton locationFilter; - private ImageButton userFilter; - private Button map_small_filter; - private Button map_medium_filter; - private Button map_large_filter; - private LinearLayout exploreFilters; - private boolean dateFilterIsVisible = false; - private boolean locationFilterIsVisible = false; - private boolean userFilterIsVisible = false; + private ImageButton dateFilter; + private ImageButton locationFilter; + private ImageButton userFilter; + private Button map_small_filter; + private Button map_medium_filter; + private Button map_large_filter; + private LinearLayout exploreFilters; + private boolean dateFilterIsVisible = false; + private boolean locationFilterIsVisible = false; + private boolean userFilterIsVisible = false; - private final String day = "24 hours"; - private final String week = "Week"; - private final String month = "Month"; - private final String hundredMeters = "100 meters"; - private final String kilometer = "1 Km"; - private final String threeKilometer = "3 Km"; - private final String mine = "Mine"; - private final String others = "Others"; - private final String all = "All"; + private final String day = "24 hours"; + private final String week = "Week"; + private final String month = "Month"; + private final String hundredMeters = "100 meters"; + private final String kilometer = "1 Km"; + private final String threeKilometer = "3 Km"; + private final String mine = "Mine"; + private final String others = "Others"; + private final String all = "All"; - public ExploreFragment() { - // Required empty public constructor - } - - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - View view = inflater.inflate(R.layout.fragment_explore, container, false); - - parent = (MainActivity)getActivity(); - user = parent.getUser(); - notes = new ArrayList<>(); - //Get Views - list_notes = (ListView)view.findViewById(R.id.list_notes); - noteListAdapter = new ListAdapter(parent, notes); - - - dateFilter = (ImageButton) view.findViewById(R.id.explore_date_filter); - locationFilter = (ImageButton) view.findViewById(R.id.explore_location_filter); - userFilter = (ImageButton) view.findViewById(R.id.explore_user_filter); - - map_small_filter = (Button) view.findViewById(R.id.explore_small_filter); - map_medium_filter = (Button) view.findViewById(R.id.explore_medium_filter); - map_large_filter = (Button) view.findViewById(R.id.explore_large_filter); - - exploreFilters = (LinearLayout) view.findViewById(R.id.explore_filter_options); - - dateFilter.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (dateFilterIsVisible) { - dateFilterIsVisible = false; - exploreFilters.setVisibility(View.GONE); - } else { - exploreFilters.setVisibility(View.VISIBLE); - dateFilterIsVisible = true; - locationFilterIsVisible = false; - userFilterIsVisible = false; - - // set text button in the right filter string - map_small_filter.setText(day); - map_medium_filter.setText(week); - map_large_filter.setText(month); - } - } - }); - - locationFilter.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (locationFilterIsVisible) { - locationFilterIsVisible = false; - exploreFilters.setVisibility(View.GONE); - } else { - exploreFilters.setVisibility(View.VISIBLE); - locationFilterIsVisible = true; - dateFilterIsVisible = false; - userFilterIsVisible = false; - - // set text button in the right filter string - map_small_filter.setText(hundredMeters); - map_medium_filter.setText(kilometer); - map_large_filter.setText(threeKilometer); - } - } - }); - - userFilter.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (userFilterIsVisible) { - userFilterIsVisible = false; - exploreFilters.setVisibility(View.GONE); - } else { - exploreFilters.setVisibility(View.VISIBLE); - userFilterIsVisible = true; - dateFilterIsVisible = false; - locationFilterIsVisible = false; - - // set text button in the right filter string - map_small_filter.setText(mine); - map_medium_filter.setText(others); - map_large_filter.setText(all); - } - } - }); - - // TODO: choose a default filter for openning explore mode - - try { - getAllNotes(); - } catch (JSONException e) { - e.printStackTrace(); + public ExploreFragment() { + // Required empty public constructor } - return view; - } - - public void getAllNotes() throws JSONException { - Utils.showLoadingDialog(parent, "Exploring...", "Finding some new interesting notes just for you"); - Log.d(TAG, "url: " + Utils.BASE_URL + "/note/getPublic"); - String url = Utils.BASE_URL + "/note/getPublic"; - JSONObject payload = new JSONObject(); - payload.put("id", user.getId()); - VolleyUtilSingleton.getInstance(getActivity()).post(url, payload ,getNotesSuccessListener,Utils.genericErrorListener); - } - - 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"); - parent.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")); - notes.add(Utils.getNoteFromJsonObj(noteObject, time)); - } - list_notes.setAdapter(noteListAdapter); - Utils.dismissLoadingDialog(); - } catch (Exception e) { - Log.e(TAG, "newNoteSuccess:" + e.getMessage()); - } + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.fragment_explore, container, false); + parent = (MainActivity) getActivity(); + user = parent.getUser(); + notes = new ArrayList<>(); + //Get Views + list_notes = (ListView) view.findViewById(R.id.list_notes); + noteListAdapter = new ListAdapter(parent, notes); + list_notes.setOnItemClickListener(new ItemClickedListener()); + + + dateFilter = (ImageButton) view.findViewById(R.id.explore_date_filter); + locationFilter = (ImageButton) view.findViewById(R.id.explore_location_filter); + userFilter = (ImageButton) view.findViewById(R.id.explore_user_filter); + + map_small_filter = (Button) view.findViewById(R.id.explore_small_filter); + map_medium_filter = (Button) view.findViewById(R.id.explore_medium_filter); + map_large_filter = (Button) view.findViewById(R.id.explore_large_filter); + + exploreFilters = (LinearLayout) view.findViewById(R.id.explore_filter_options); + + dateFilter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (dateFilterIsVisible) { + dateFilterIsVisible = false; + exploreFilters.setVisibility(View.GONE); + } else { + exploreFilters.setVisibility(View.VISIBLE); + dateFilterIsVisible = true; + locationFilterIsVisible = false; + userFilterIsVisible = false; + + // set text button in the right filter string + map_small_filter.setText(day); + map_medium_filter.setText(week); + map_large_filter.setText(month); + } + } + }); + + locationFilter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (locationFilterIsVisible) { + locationFilterIsVisible = false; + exploreFilters.setVisibility(View.GONE); + } else { + exploreFilters.setVisibility(View.VISIBLE); + locationFilterIsVisible = true; + dateFilterIsVisible = false; + userFilterIsVisible = false; + + // set text button in the right filter string + map_small_filter.setText(hundredMeters); + map_medium_filter.setText(kilometer); + map_large_filter.setText(threeKilometer); + } + } + }); + + userFilter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (userFilterIsVisible) { + userFilterIsVisible = false; + exploreFilters.setVisibility(View.GONE); + } else { + exploreFilters.setVisibility(View.VISIBLE); + userFilterIsVisible = true; + dateFilterIsVisible = false; + locationFilterIsVisible = false; + + // set text button in the right filter string + map_small_filter.setText(mine); + map_medium_filter.setText(others); + map_large_filter.setText(all); + } + } + }); + + // TODO: choose a default filter for openning explore mode + + try { + getAllNotes(); + } catch (JSONException e) { + e.printStackTrace(); + } + return view; } - }; + + + public void getAllNotes() throws JSONException { + Utils.showLoadingDialog(parent, "Exploring...", "Finding some new interesting notes just for you"); + Log.d(TAG, "url: " + Utils.BASE_URL + "/note/getPublic"); + String url = Utils.BASE_URL + "/note/getPublic"; + JSONObject payload = new JSONObject(); + payload.put("id", user.getId()); + VolleyUtilSingleton.getInstance(getActivity()).post(url, payload, getNotesSuccessListener, Utils.genericErrorListener); + } + + 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"); + parent.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")); + notes.add(Utils.getNoteFromJsonObj(noteObject, time)); + } + list_notes.setAdapter(noteListAdapter); + Utils.dismissLoadingDialog(); + } catch (Exception e) { + Log.e(TAG, "newNoteSuccess:" + e.getMessage()); + } + + } + }; + + + // 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 = notes.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(); +// dialog.getWindow().setAttributes(lp); + + + //get note_view_full layout elements + final TextView title = (TextView) noteViewDialog.findViewById(R.id.ndf_title_textview); + final TextView body = (TextView) noteViewDialog.findViewById(R.id.ndf_body_textview); + final TextView time = (TextView) noteViewDialog.findViewById(R.id.ndf_time_textview); + final TextView date = (TextView) noteViewDialog.findViewById(R.id.ndf_date_textview); + final TextView location = (TextView) noteViewDialog.findViewById(R.id.ndf_address_textview); + final TextView likes = (TextView) noteViewDialog.findViewById(R.id.ndf_likes_textview); + final TextView permission = (TextView) noteViewDialog.findViewById(R.id.ndf_permission_textview); + final ImageButton likeBtn = (ImageButton) noteViewDialog.findViewById(R.id.ndf_delete_imagebutton); + final ImageView avatar = (RoundAvatarImageView) noteViewDialog.findViewById(R.id.note_user_avatar); + final ImageView permission_image = (ImageView) noteViewDialog.findViewById(R.id.permission_image); + + title.setText(note.getTitle()); + body.setText(note.getBody()); + date.setText(note.getDate()); + time.setText(note.getTime()); + location.setText(note.getAddress()); + if (likes != null) likes.setText("" + note.getLikes()); + likeBtn.setBackgroundResource(R.drawable.like_icon); +// tags.setText("Tags: "+ note.getTags().toString()); +// permission.setText("" + (note.isPublic() ? "Public" : "Private")); + permission.setVisibility(View.GONE); + Utils.URLtoImageView(avatar, note.getAvatar()); + permission_image.setVisibility(View.GONE); + + likeBtn.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { +// //Put up the Yes/No message box +// AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); +// builder +// .setTitle("Delete Note") +// .setMessage("Are you sure you want to delete the note?") +// .setIcon(android.R.drawable.ic_dialog_alert) +// .setPositiveButton("Yes", new DialogInterface.OnClickListener() { +// public void onClick(DialogInterface dialog, int which) { +// //Yes button clicked, do something +// Toast.makeText(getActivity(), "Item Deleted!", +// Toast.LENGTH_SHORT).show(); +// //TODO send delete +// JSONObject delNote = new JSONObject(); +// try { +// delNote.put("uid", userId); +// delNote.put("nid", note.getId()); +// VolleyUtilSingleton.getInstance(getActivity()).post(BASE_URL + "/note/delete", delNote, Utils.deleteNoteSuccessListener, Utils.genericErrorListener); +// listOfNotes.remove(presentedNotes.get(position)); +// presentedNotes.remove(position); +// +// } catch (JSONException e) { +// Toast.makeText(getActivity(), "Something went wrong.\n Failed to delete note...", Toast.LENGTH_LONG).show(); +// e.printStackTrace(); +// } +// updateShowedNotes(); +//// noteList.setAdapter(noteListAdapter); +// noteViewDialog.dismiss(); +// } +// }) +// .setNegativeButton("No", new DialogInterface.OnClickListener() { +// public void onClick(DialogInterface dialog, int which) { +// //Yes button clicked, do something +// Toast.makeText(getActivity(), "Canceled", +// Toast.LENGTH_SHORT).show(); +// noteViewDialog.dismiss(); +// } +// }) //Do nothing on no +// .show(); +// } +// }); + + } + }); + } + } + } 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 0439a0a..337ab91 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 @@ -505,15 +505,6 @@ public class PersonalFragment extends Fragment { public View.OnClickListener button1ClickListener = new View.OnClickListener() { @Override public void onClick(final View v) { - -// Log.d(TAG, "onClick: start"); -// Log.d(TAG, "onClick: v id: " + v.getId()); -// Log.d(TAG, "onClick: map_small_filter id: " + R.id.map_small_filter); -// Log.d(TAG, "onCreateView: personalSpace_filter_options = " + R.id.personalSpace_filter_options); -// -// Log.d(TAG, "onClick: are equal? " + (v.getId() == R.id.map_small_filter)); -// -// Log.d(TAG, "onClick: case map_small_filter"); //user filters if (userFilterIsVisible) { userFilterSelection = 1; @@ -549,15 +540,6 @@ public class PersonalFragment extends Fragment { @Override public void onClick(final View v) { -// Log.d(TAG, "onClick: start"); -// Log.d(TAG, "onClick: v id: " + v.getId()); -// Log.d(TAG, "onClick: map_small_filter id: " + R.id.map_small_filter); -// Log.d(TAG, "onCreateView: personalSpace_filter_options = " + R.id.personalSpace_filter_options); -// -// Log.d(TAG, "onClick: are equal? " + (v.getId() == R.id.map_small_filter)); -// -// Log.d(TAG, "onClick: case map_large_filter"); - //user filters if (userFilterIsVisible) { userFilterSelection = 3; @@ -574,68 +556,6 @@ public class PersonalFragment extends Fragment { } }; -// //all buttons listener -// public View.OnClickListener buttonClickListener = new View.OnClickListener() { -// @Override -// public void onClick(final View v) { -// -// Log.d(TAG, "onClick: start"); -// Log.d(TAG, "onClick: v id: "+ v.getId()); -// Log.d(TAG, "onClick: map_small_filter id: "+ R.id.map_small_filter); -// Log.d(TAG, "onCreateView: personalSpace_filter_options = "+R.id.personalSpace_filter_options); -// -// Log.d(TAG, "onClick: are equal? "+ (v.getId() ==R.id.map_small_filter)); -// -// switch (v.getId()) { -// case R.id.map_small_filter: -// Log.d(TAG, "onClick: case map_small_filter"); -// //user filters -// if (userFilterIsVisible) { -// userFilterSelection = 1; -// } -// //date filters -// else { -// dateFilterSelection = 86400000L; -// -// } -// updateShowedNotes(); -// break; -// case R.id.map_medium_filter: -// Log.d(TAG, "onClick: case map_medium_filter"); -// -// //user filters -// if (userFilterIsVisible) { -// userFilterSelection = 2; -// -// } -// //date filters -// else { -// dateFilterSelection = 604800000L; -// -// } -// updateShowedNotes(); -// break; -// case R.id.map_large_filter: -// Log.d(TAG, "onClick: case map_large_filter"); -// -// //user filters -// if (userFilterIsVisible) { -// userFilterSelection = 3; -// } -// //date filters -// else { -// dateFilterSelection = 2592000000L; -// -// } -// updateShowedNotes(); -// break; -// default: -// Log.d(TAG, "onClick: in default"); -// break; -// } -// } -// }; - public void updateShowedNotes() { presentedNotes = new ArrayList<>(); @@ -663,7 +583,7 @@ public class PersonalFragment extends Fragment { noteList.setAdapter(noteListAdapter); } - //set main filter colors + //set secondery filter colors filter colors private void setButtonsColor() { Log.d(TAG, "setButtonsColor: start"); 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 7e00c67..784695a 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 @@ -35,7 +35,7 @@ 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 static final String TAG = "[TSN/Settings]"; private MainActivity parent; private ImageButton cameraBtn; private ImageView avatarImage; @@ -43,7 +43,7 @@ public class SettingsFragment extends Fragment implements View.OnClickListener, private Uri currentImgUri; private TextView lbl_num_of_notes, lbl_num_of_liked; private User user; - private Button btn_save; + private Button btn_save; public SettingsFragment() { @@ -51,7 +51,6 @@ public class SettingsFragment extends Fragment implements View.OnClickListener, } - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -62,33 +61,33 @@ public class SettingsFragment extends Fragment implements View.OnClickListener, public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_settings, container, false); - this.parent = (MainActivity)getActivity(); + this.parent = (MainActivity) getActivity(); Utils.showLoadingDialog(parent, "Just a sec...", ""); this.user = parent.getUser(); 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_password = (EditText)view.findViewById(R.id.txt_password); - 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); + this.txt_email = (EditText) view.findViewById(R.id.txt_email); + this.txt_password = (EditText) view.findViewById(R.id.txt_password); + 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); 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()); - this.txt_email.setText(""+parent.getUser().getEmail()); + this.txt_username.setText("" + user.getUsername()); + this.txt_password.setText("" + user.getPassword()); + this.txt_email.setText("" + parent.getUser().getEmail()); - this.lbl_num_of_notes.setText(""+user.getNumber_of_notes()); //TODO - this.lbl_num_of_liked.setText(""+user.getLiked_notes().size()); + this.lbl_num_of_notes.setText("" + user.getNumber_of_notes()); //TODO + this.lbl_num_of_liked.setText("" + user.getLiked_notes().size()); - this.txt_password.addTextChangedListener(this); - this.txt_email.addTextChangedListener(this); + this.txt_password.addTextChangedListener(this); + this.txt_email.addTextChangedListener(this); Utils.dismissLoadingDialog(); return view; @@ -102,121 +101,124 @@ public class SettingsFragment extends Fragment implements View.OnClickListener, @Override public void onDetach() { - super.onDetach(); + super.onDetach(); } - @Override - public void onClick(View view) { - switch(view.getId()){ - case R.id.btn_camera: - //check for permission + @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(); + 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: + if (txt_password.getText().length() > 3 && txt_email.getText().length() > 0) + user.updateUser(parent); + else + Toast.makeText(parent, "Password should be more than 4 chars long, valid email", Toast.LENGTH_LONG).show(); + 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"); } - - break; - case R.id.btn_save: - if(txt_password.getText().length() > 3 && txt_email.getText().length() > 0) user.updateUser(parent); - else Toast.makeText(parent, "Password should be more than 4 chars long, valid email", Toast.LENGTH_LONG).show(); - 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); - } + private void saveImage() { + Utils.showLoadingDialog(parent, "Saving Image...", "This Can Take a while"); + File myFile = new File(currentImgUri.getPath()); - 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()); + JSONObject payload = new JSONObject(); try { - user.setAvatar(response.getString("image_url")); - //Populate The data - Utils.URLtoImageView(avatarImage, user.getAvatar()); - user.updateUser(parent); + payload.put("image", ImageToBase64(myFile.getAbsolutePath())); } catch (JSONException e) { - e.printStackTrace(); + e.printStackTrace(); + Utils.dismissLoadingDialog(); + Toast.makeText(parent, "Failed to upload image.. Try Again", Toast.LENGTH_LONG).show(); } - Utils.dismissLoadingDialog(); - } - }, Utils.genericErrorListener); - } + 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); - } + 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 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 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) { + @Override + public void afterTextChanged(Editable editable) { - } + } }