package org.thoughtcrime.securesms; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import android.support.v4.widget.CursorAdapter; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.database.loaders.BlockedContactsLoader; import org.thoughtcrime.securesms.preferences.BlockedContactListItem; import org.thoughtcrime.securesms.recipients.RecipientFactory; import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.util.DynamicLanguage; import org.thoughtcrime.securesms.util.DynamicTheme; public class BlockedContactsActivity extends PassphraseRequiredActionBarActivity { private final DynamicTheme dynamicTheme = new DynamicTheme(); private final DynamicLanguage dynamicLanguage = new DynamicLanguage(); @Override public void onPreCreate() { dynamicTheme.onCreate(this); dynamicLanguage.onCreate(this); } @Override public void onCreate(Bundle bundle, @NonNull MasterSecret masterSecret) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle(R.string.BlockedContactsActivity_blocked_contacts); initFragment(android.R.id.content, new BlockedContactsFragment(), masterSecret); } @Override public void onResume() { super.onResume(); dynamicTheme.onResume(this); dynamicLanguage.onResume(this); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; } return false; } public static class BlockedContactsFragment extends ListFragment implements LoaderManager.LoaderCallbacks, ListView.OnItemClickListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) { return inflater.inflate(R.layout.blocked_contacts_fragment, container, false); } @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); setListAdapter(new BlockedContactAdapter(getActivity(), null)); getLoaderManager().initLoader(0, null, this); } @Override public void onActivityCreated(Bundle bundle) { super.onActivityCreated(bundle); getListView().setOnItemClickListener(this); } @Override public Loader onCreateLoader(int id, Bundle args) { return new BlockedContactsLoader(getActivity()); } @Override public void onLoadFinished(Loader loader, Cursor data) { if (getListAdapter() != null) { ((CursorAdapter) getListAdapter()).changeCursor(data); } } @Override public void onLoaderReset(Loader loader) { if (getListAdapter() != null) { ((CursorAdapter) getListAdapter()).changeCursor(null); } } @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Recipients recipients = ((BlockedContactListItem)view).getRecipients(); Intent intent = new Intent(getActivity(), RecipientPreferenceActivity.class); intent.putExtra(RecipientPreferenceActivity.RECIPIENTS_EXTRA, recipients.getIds()); startActivity(intent); } private static class BlockedContactAdapter extends CursorAdapter { public BlockedContactAdapter(Context context, Cursor c) { super(context, c); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { return LayoutInflater.from(context) .inflate(R.layout.blocked_contact_list_item, parent, false); } @Override public void bindView(View view, Context context, Cursor cursor) { String recipientIds = cursor.getString(1); Recipients recipients = RecipientFactory.getRecipientsForIds(context, recipientIds, true); ((BlockedContactListItem) view).set(recipients); } } } }