package com.duckduckgo.mobile.android.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.duckduckgo.mobile.android.DDGApplication;
import com.duckduckgo.mobile.android.R;
import com.duckduckgo.mobile.android.actionbar.DDGActionBarManager;
import com.duckduckgo.mobile.android.adapters.RecentFeedCursorAdapter;
import com.duckduckgo.mobile.android.adapters.RecyclerRecentFeedAdapter;
import com.duckduckgo.mobile.android.bus.BusProvider;
import com.duckduckgo.mobile.android.events.SyncAdaptersEvent;
import com.duckduckgo.mobile.android.events.feedEvents.FeedCancelCategoryFilterEvent;
import com.duckduckgo.mobile.android.events.feedEvents.FeedCancelSourceFilterEvent;
import com.duckduckgo.mobile.android.objects.FeedObject;
import com.duckduckgo.mobile.android.util.DDGControlVar;
import com.duckduckgo.mobile.android.util.PreferencesManager;
import com.duckduckgo.mobile.android.views.DDGRecyclerView;
import com.duckduckgo.mobile.android.views.RecentFeedListView;
import com.squareup.otto.Subscribe;
import java.util.ArrayList;
public class RecentFeedTabFragment extends Fragment/*ListFragment*/ /*implements AdapterView.OnItemLongClickListener*/ {
public static final String TAG = "recent_feed_tab_fragment";
private RecyclerRecentFeedAdapter recyclerRecentFeedAdapter;
private RecyclerView.LayoutManager layoutManager;
private DDGRecyclerView recentFeedRecyclerView;
private boolean recyclerScrollPerformed = false;
private View fragmentView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BusProvider.getInstance().register(this);
}
@Override
public void onDestroy() {
super.onDestroy();
BusProvider.getInstance().unregister(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
fragmentView = inflater.inflate(R.layout.fragment_tab_recentsfeed, container, false);
return fragmentView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
recentFeedRecyclerView = (DDGRecyclerView) fragmentView.findViewById(R.id.list);
recentFeedRecyclerView.setEmptyView(fragmentView.findViewById(R.id.empty));
recyclerRecentFeedAdapter = new RecyclerRecentFeedAdapter(getActivity(), DDGApplication.getDB().getAllRecentFeed());
layoutManager = new LinearLayoutManager(getActivity());
recentFeedRecyclerView.setLayoutManager(layoutManager);
recentFeedRecyclerView.setAdapter(recyclerRecentFeedAdapter);
recentFeedRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if(dy > 10) {
DDGActionBarManager.getInstance().tryToHideTab();
} else if(dy < -10) {
DDGActionBarManager.getInstance().tryToShowTab();
}
recyclerScrollPerformed = true;
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState==RecyclerView.SCROLL_STATE_IDLE) {
if(recyclerScrollPerformed) {
recyclerScrollPerformed = false;
} else {
DDGActionBarManager.getInstance().tryToShowTab();
}
}
}
});
}
@Override
public void onResume() {
super.onResume();
checkIfRecordHistory();
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
DDGActionBarManager.getInstance().tryToShowTab();
}
public void checkIfRecordHistory() {
if(!PreferencesManager.getRecordHistory()) {
TextView title = (TextView) fragmentView.findViewById(R.id.empty_title);
title.setText(getResources().getString(R.string.disabled_recents_title));
TextView text = (TextView) fragmentView.findViewById(R.id.empty_text);
text.setText(getResources().getString(R.string.disabled_recents_text));
}
}
/**
* Cancels category filter and sets feed data to all for recent feeds
*/
private void cancelCategoryFilter() {
DDGControlVar.targetCategory = null;
recyclerRecentFeedAdapter.changeData(DDGApplication.getDB().getAllRecentFeed());
}
/**
* Cancels category filter and sets feed data to all for recent feeds
*/
private void cancelSourceFilter() {
DDGControlVar.targetSource = null;
recyclerRecentFeedAdapter.changeData(DDGApplication.getDB().getAllRecentFeed());
}
@Subscribe
public void onFeedCancelCategoryFilterEvent(FeedCancelCategoryFilterEvent event) {
cancelCategoryFilter();
}
@Subscribe
public void onFeedCancelSourceFilterEvent(FeedCancelSourceFilterEvent event) {
cancelSourceFilter();
}
@Subscribe
public void onSyncAdaptersEvent(SyncAdaptersEvent event) {
if(recyclerRecentFeedAdapter!=null) {
recyclerRecentFeedAdapter.changeData(DDGApplication.getDB().getAllRecentFeed());
}
}
}