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 new file mode 100644 index 0000000..fc09313 --- /dev/null +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/ExploreFragment.java @@ -0,0 +1,198 @@ +package com.android_app.matan.ara.sagi.thesocialnotework; + + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.Fragment; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.ListView; + +import com.android.volley.Response; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; + + +/** + * A simple {@link Fragment} subclass. + */ +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 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"; + + 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) { +// Log.d(TAG, "" + v.getId()); + 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()); + } + + } + }; + +} 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 68b7f09..2a6ce7d 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 @@ -84,9 +84,9 @@ public class GmapFragment extends Fragment implements OnMapReadyCallback { 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 mine = "Mine"; + private final String others = "Others"; + private final String all = "All"; @@ -144,10 +144,9 @@ public class GmapFragment extends Fragment implements OnMapReadyCallback { dateFilter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { -// Log.d(TAG, "" + v.getId()); if (dateFilterIsVisible) { dateFilterIsVisible = false; - mapFilters.setVisibility(View.INVISIBLE); + mapFilters.setVisibility(View.GONE); } else { mapFilters.setVisibility(View.VISIBLE); dateFilterIsVisible = true; @@ -167,7 +166,7 @@ public class GmapFragment extends Fragment implements OnMapReadyCallback { public void onClick(View v) { if (locationFilterIsVisible) { locationFilterIsVisible = false; - mapFilters.setVisibility(View.INVISIBLE); + mapFilters.setVisibility(View.GONE); } else { mapFilters.setVisibility(View.VISIBLE); locationFilterIsVisible = true; @@ -187,7 +186,7 @@ public class GmapFragment extends Fragment implements OnMapReadyCallback { public void onClick(View v) { if (userFilterIsVisible) { userFilterIsVisible = false; - mapFilters.setVisibility(View.INVISIBLE); + mapFilters.setVisibility(View.GONE); } else { mapFilters.setVisibility(View.VISIBLE); userFilterIsVisible = true; diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/ListAdapter.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/ListAdapter.java index baf9c12..5562f0f 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/ListAdapter.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/ListAdapter.java @@ -9,6 +9,7 @@ import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.BaseAdapter; +import android.widget.ImageView; import android.widget.TextView; //import com.android.volley.toolbox.NetworkImageView; @@ -62,7 +63,7 @@ public class ListAdapter extends BaseAdapter { TextView date = (TextView) v.findViewById(R.id.nvm_date_textview); TextView location = (TextView) v.findViewById(R.id.nvm_location_textview); TextView likes = (TextView) v.findViewById(R.id.nvm_likes_textview); - TextView permission = (TextView) v.findViewById(R.id.nvm_permission_textview); + ImageView permission = (RoundAvatarImageView) v.findViewById(R.id.nvm_permission_image_view); // NetworkImageView thumbNail = (NetworkImageView) v.findViewById(R.id.infoImageImageView); // String url = mVideos.get(position).getImgURL(); // thumbNail.setImageUrl(url, VolleyUtilSingleTone.getInstance(mContext).getImageLoader()); @@ -73,7 +74,11 @@ public class ListAdapter extends BaseAdapter { location.setText(curNote.getAddress()); if(likes !=null )likes.setText(""+curNote.getLikes()); // permission.setText(curNote.isPublic() ? "Public":"Private"); - permission.setBackground(curNote.isPublic() ? v.getResources().getDrawable(R.drawable.public_icon): v.getResources().getDrawable(R.drawable.private_icon)); + if(((MainActivity)mContext).getUser().getId().equals(curNote.ownerId)){// MY Note + permission.setBackground(curNote.isPublic() ? v.getResources().getDrawable(R.drawable.public_icon): v.getResources().getDrawable(R.drawable.private_icon)); + }else{ + Utils.URLtoImageView(permission, curNote.getAvatar()); + } Animation animation = AnimationUtils.loadAnimation(mContext, (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top); v.startAnimation(animation); 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 6b0988f..fee6bd3 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 @@ -52,6 +52,7 @@ public class MainActivity extends AppCompatActivity private GmapFragment gmapFragment; private PersonalFragment personalFragment; private SettingsFragment settingsFragment; + private ExploreFragment exploreFragment; private Toolbar toolbar; public static final String BASE_URL = "http://thesocialnotework-api.appspot.com/api"; private ImageView menu_avatar; @@ -71,6 +72,7 @@ public class MainActivity extends AppCompatActivity gmapFragment = new GmapFragment(); personalFragment = new PersonalFragment(); settingsFragment = new SettingsFragment(); + exploreFragment = new ExploreFragment(); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); @@ -153,6 +155,9 @@ public class MainActivity extends AppCompatActivity if (id == R.id.nav_explore) { toolbar.setTitle("Explore"); setSupportActionBar(toolbar); + Log.d(TAG, "Before going to Explore"); + ft.replace(R.id.fragment_container, exploreFragment); + ft.commit(); } else if (id == R.id.nav_map) { Log.d(TAG, "Before going to map"); 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 ee592f0..2ba8dc2 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 @@ -142,7 +142,7 @@ public class PersonalFragment extends Fragment { Log.d(TAG, "onClick: dateFilter pressed"); if (dateFilterIsVisible) { dateFilterIsVisible = false; - personalSpaceFilters.setVisibility(View.INVISIBLE); + personalSpaceFilters.setVisibility(View.GONE); } else { personalSpaceFilters.setVisibility(View.VISIBLE); dateFilterIsVisible = true; @@ -163,7 +163,7 @@ public class PersonalFragment extends Fragment { //if pressed same filter twice - close filters. if (userFilterIsVisible) { userFilterIsVisible = false; - personalSpaceFilters.setVisibility(View.INVISIBLE); + personalSpaceFilters.setVisibility(View.GONE); } else { personalSpaceFilters.setVisibility(View.VISIBLE); userFilterIsVisible = true; @@ -192,20 +192,23 @@ public class PersonalFragment extends Fragment { } - @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 onAttach(Context context) { + super.onAttach(context); + Utils.dismissLoadingDialog(); + Log.d(TAG, "onAttach"); + } + @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); + } private View.OnClickListener addNewNoteDialog = new View.OnClickListener() { public void onClick(View v) { diff --git a/app/src/main/res/drawable/new_note.png b/app/src/main/res/drawable/new_note.png new file mode 100644 index 0000000..23dddc5 Binary files /dev/null and b/app/src/main/res/drawable/new_note.png differ diff --git a/app/src/main/res/layout/fragment_explore.xml b/app/src/main/res/layout/fragment_explore.xml new file mode 100644 index 0000000..28dc705 --- /dev/null +++ b/app/src/main/res/layout/fragment_explore.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + +