package com.duckduckgo.mobile.android.fragment; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.ListView; 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.RecentResultCursorAdapter; import com.duckduckgo.mobile.android.bus.BusProvider; import com.duckduckgo.mobile.android.events.SyncAdaptersEvent; import com.duckduckgo.mobile.android.util.PreferencesManager; import com.duckduckgo.mobile.android.views.RecentSearchListView; import com.squareup.otto.Subscribe; public class RecentResultTabFragment extends ListFragment { public static final String TAG = "recent_result_tab_fragment"; private RecentSearchListView recentSearchListView; private RecentResultCursorAdapter recentResultAdapter; private int lastFirstVisibleItem; 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_recentsresult, container, false); return fragmentView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if(PreferencesManager.getRecordHistory()) { recentSearchListView = (RecentSearchListView) getListView(); recentResultAdapter = new RecentResultCursorAdapter(getActivity(), DDGApplication.getDB().getCursorSearchHistory(), true); recentSearchListView.setAdapter(recentResultAdapter); recentSearchListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { final int currentFirstVisibleItem = recentSearchListView.getFirstVisiblePosition();; if (currentFirstVisibleItem > lastFirstVisibleItem) { DDGActionBarManager.getInstance().tryToHideTab(); } else if (currentFirstVisibleItem < lastFirstVisibleItem) { DDGActionBarManager.getInstance().tryToShowTab(); } lastFirstVisibleItem = currentFirstVisibleItem; } }); } else { getListView().setVisibility(View.GONE); 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)); } } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); DDGActionBarManager.getInstance().tryToShowTab(); } @Override public void onListItemClick(ListView l, View v, int position, long id) { recentSearchListView.onItemClick(l, v, position, id); } @Subscribe public void onSyncAdaptersEvent(SyncAdaptersEvent event) { if(recentResultAdapter!=null) { recentResultAdapter.changeCursor(DDGApplication.getDB().getCursorSearchHistory()); recentResultAdapter.notifyDataSetChanged(); } } }