package com.pennapps.labs.pennmobile; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.google.gson.Gson; import com.pennapps.labs.pennmobile.adapters.DirectoryAdapter; import com.pennapps.labs.pennmobile.classes.Person; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import butterknife.ButterKnife; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; /** * Created by Jason on 2/1/2016. */ public class DirectoryTab extends SearchFavoriteTab { private DirectoryAdapter mAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View v = inflater.inflate(R.layout.fragment_search_favorite_tab, container, false); ButterKnife.bind(this, v); mListView = (ListView) v.findViewById(android.R.id.list); initList(); return v; } @Override public void processQuery (String query) { super.processQuery(query); processDirectoryQuery(query); } private void processDirectoryQuery(String query) { if (query.isEmpty()) { return; } mLabs.people(query) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<List<Person>>() { @Override public void call(final List<Person> people) { if (loadingPanel != null) { loadingPanel.setVisibility(View.GONE); if (people.isEmpty()) { if (no_results != null) { no_results.setVisibility(View.VISIBLE); mListView.setVisibility(View.GONE); } } else if (mListView != null) { mAdapter = new DirectoryAdapter(mActivity, people); mListView.setAdapter(mAdapter); mListView.setVisibility(View.VISIBLE); no_results.setVisibility(View.GONE); } } } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { noResults(); } }); } @Override public void initList() { if (fav) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mActivity); Gson gson = new Gson(); Set<String> starred = sp.getStringSet(getString(R.string.search_dir_star), new HashSet<String>()); if (starred.isEmpty()) { notFavoriteInit(); } else { if (loadingPanel.getVisibility() == View.VISIBLE) { loadingPanel.setVisibility(View.GONE); } if (mListView.getVisibility() == View.GONE) { mListView.setVisibility(View.VISIBLE); } if (no_results.getVisibility() == View.VISIBLE) { no_results.setVisibility(View.GONE); } if (search_instructions.getVisibility() == View.VISIBLE) { search_instructions.setVisibility(View.GONE); } List<Person> people = new LinkedList<>(); for (String s : starred) { String details = sp.getString(s + getString(R.string.search_dir_star), ""); if (!details.isEmpty()) { Person person = gson.fromJson(details, Person.class); people.add(person); } } mAdapter = new DirectoryAdapter(mActivity, people); mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(null); } mActivity.closeKeyboard(); } else { notFavoriteInit(); } } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (fav) { search_instructions.setText(getString(R.string.search_no_fav)); } else { search_instructions.setText(getString(R.string.directory_instructions)); } } }