package com.pennapps.labs.pennmobile; import android.content.SharedPreferences; import android.os.Bundle; //import android.support.annotation.NonNull; //import android.support.v7.preference.PreferenceManager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.pennapps.labs.pennmobile.adapters.NsoAdapter; //import org.mcsoxford.rss.RSSItem; //import org.mcsoxford.rss.RSSReader; //import org.mcsoxford.rss.RSSReaderException; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import butterknife.ButterKnife; import rx.Observable; import rx.Subscriber; /** * Created by Jason on 8/11/2016. */ public class NsoTab extends SearchFavoriteTab { private NsoAdapter adapter; private List<String> fullList; //List<RSSItem> // @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); processNsoQuery(query); } private void processNsoQuery(final String query) { Observable<List<String>> obs = Observable.create(new Observable.OnSubscribe<List<String>>() { //List<String> @Override public void call(Subscriber<? super List<String>> subscriber) { //List<RSSItem> subscriber.onNext(getRSSFeed(query)); subscriber.onCompleted(); } }); obs.subscribe(new Subscriber<List<String>>() { //List<RSSItem> @Override public void onCompleted() { if (adapter == null) { no_results.setVisibility(View.VISIBLE); mListView.setVisibility(View.GONE); } else { mListView.setVisibility(View.VISIBLE); mListView.setAdapter(adapter); no_results.setVisibility(View.GONE); } } @Override public void onError(Throwable e) { Log.d("NSO", "observable error", e); no_results.setVisibility(View.VISIBLE); mListView.setVisibility(View.GONE); } @Override public void onNext(List<String> rssItems) { //List<RSSItem> if (rssItems.isEmpty()) { adapter = null; } else { // adapter = new NsoAdapter(mActivity, rssItems); } } }); } // @NonNull private List<String> getRSSFeed(String query) { //List<RSSItem> return new LinkedList<>(); // try { // List<RSSItem> items; // if (fullList == null) { // RSSReader reader = new RSSReader(); // String uri = "http://api.pennlabs.org/nso"; // items = reader.load(uri).getItems(); // fullList = new ArrayList<>(items); // } else { // items = new ArrayList<>(fullList); // } // if (query.isEmpty()) { // return items; // } // List<RSSItem> answer = new LinkedList<>(); // for (RSSItem item : items) { // if (item.getTitle().contains(query)) { // answer.add(item); // } // } // return answer; // } catch (RSSReaderException e) { // Log.d("NSO", "error reading rss", e); // return new LinkedList<>(); // } } @Override public void initList() { // SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mActivity); // Set<String> starred = sp.getStringSet(getString(R.string.search_nso_star), new HashSet<String>()); // 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<RSSItem> items = getRSSFeed(""); // if (fav) { // // need to improve runtime later (worst case O(n^2) smh // List<RSSItem> favItems = new LinkedList<>(); // for (String s : starred) { // String details = sp.getString(s + getString(R.string.search_nso_star), ""); // if (!details.isEmpty()) { // for (RSSItem item : items) { // if (item.getTitle().equals(details)) { // favItems.add(item); // break; // } // } // } // } // items = favItems; // } // adapter = new NsoAdapter(mActivity, items); // mListView.setAdapter(adapter); // mActivity.closeKeyboard(); } // @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.nso_instructions)); // } // } }