package com.duckduckgo.mobile.android.fragment; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.duckduckgo.mobile.android.DDGApplication; import com.duckduckgo.mobile.android.R; import com.duckduckgo.mobile.android.adapters.SourcesAdapter; import com.duckduckgo.mobile.android.container.SourcePreferencesContainer; import com.duckduckgo.mobile.android.objects.SourcesObject; import com.duckduckgo.mobile.android.tasks.SourcesTask; import com.duckduckgo.mobile.android.util.DDGControlVar; import com.duckduckgo.mobile.android.util.DDGUtils; import java.util.List; public class SourcesFragment extends Fragment implements SourcesTask.SourcesListener { public SourcesTask sourcesTask = null; public SourcesAdapter sourcesAdapter = null; private ListView sourcesView = null; private Button defaultButton = null; private Button suggestSourceButton = null; public static final String TAG = "sources_fragment"; private View fragmentView; @Override public void onCreate(Bundle savedInstancestate) { super.onCreate(savedInstancestate); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { fragmentView = inflater.inflate(R.layout.fragment_sources, container, false); return fragmentView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); DDGControlVar.changedSources = true; SourcePreferencesContainer sourcePrefContainer = null; sourcesAdapter = new SourcesAdapter(getActivity()); sourcesView = (ListView) fragmentView.findViewById(R.id.sourceItems); sourcesView.addHeaderView(createHeaderView()); sourcesView.setAdapter(sourcesAdapter); defaultButton = (Button) fragmentView.findViewById(R.id.sourceDefaultButton); defaultButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(), R.string.DefaultsSetToast, Toast.LENGTH_SHORT).show(); DDGUtils.deleteSet(DDGApplication.getSharedPreferences(), "sourceset"); DDGControlVar.hasUpdatedFeed = false; // copy defaults DDGControlVar.userAllowedSources.clear(); DDGControlVar.userDisallowedSources.clear(); // reset source set of underlying list adapter sourcesAdapter.notifyDataSetChanged(); sourcesView.invalidateViews(); } }); suggestSourceButton = (Button) fragmentView.findViewById(R.id.suggestSourceButton); suggestSourceButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = DDGUtils.newEmailIntent(getActivity().getResources().getString(R.string.FeedbackTo), getActivity().getResources().getString(R.string.FeedbackSubject), getString(R.string.SuggestedSources), ""); startActivity(Intent.createChooser(intent, getResources().getString(R.string.SelectAppToSend))); } }); } private View createHeaderView() { View headerView = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.sources_header, null, false); TextView title = (TextView) headerView.findViewById(R.id.list_item_section_text); title.setText(getActivity().getResources().getString(R.string.options)); return headerView; } public void onSourcesRetrieved(List<SourcesObject> feed) { sourcesAdapter.setList(feed); sourcesAdapter.notifyDataSetChanged(); } /** * Retry to retrieve sources. It only retries when a source task is set. */ public void onSourcesRetrievalFailed() { //If the sourcesTask is null, we are currently paused //Otherwise, we can try again if (sourcesTask != null) { sourcesTask = new SourcesTask(getActivity(), this); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { sourcesTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { sourcesTask.execute(); } } } @Override public void onResume() { super.onResume(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { sourcesTask = new SourcesTask(getActivity(), SourcesFragment.this); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { sourcesTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { sourcesTask.execute(); } } }, 200); } }