diff options
author | Dominik <dominik@dominikschuermann.de> | 2012-10-28 23:51:03 +0100 |
---|---|---|
committer | Dominik <dominik@dominikschuermann.de> | 2012-10-28 23:51:03 +0100 |
commit | 4704e2faf4b5c342a811a91d780c077b05c6237b (patch) | |
tree | a0851eeadf45d44577ff5f5968aaae99e0d878f3 /org_apg/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java | |
parent | d24bbdc6a13cbc56a5d117e5d5bd9ef3be39e63b (diff) | |
download | open-keychain-4704e2faf4b5c342a811a91d780c077b05c6237b.tar.gz open-keychain-4704e2faf4b5c342a811a91d780c077b05c6237b.tar.bz2 open-keychain-4704e2faf4b5c342a811a91d780c077b05c6237b.zip |
more work on content provider
Diffstat (limited to 'org_apg/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java')
-rw-r--r-- | org_apg/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/org_apg/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java b/org_apg/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java new file mode 100644 index 000000000..1753b0f1c --- /dev/null +++ b/org_apg/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java @@ -0,0 +1,100 @@ +package org.thialfihar.android.apg.ui; + +import org.thialfihar.android.apg.Id; +import org.thialfihar.android.apg.R; +import org.thialfihar.android.apg.R.id; +import org.thialfihar.android.apg.provider.ApgContract.PublicKeyRings; +import org.thialfihar.android.apg.provider.ApgContract.PublicKeys; +import org.thialfihar.android.apg.provider.ApgContract.PublicUserIds; +import org.thialfihar.android.apg.ui.widget.ExpandableListFragment; +import org.thialfihar.android.apg.ui.widget.KeyListAdapter; + +import com.actionbarsherlock.app.SherlockFragmentActivity; +import com.actionbarsherlock.app.SherlockListFragment; + +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.support.v4.content.CursorLoader; +import android.support.v4.content.Loader; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.LoaderManager; + +public class KeyListPublicFragment extends ExpandableListFragment implements + LoaderManager.LoaderCallbacks<Cursor> { + + private FragmentActivity mActivity; + private KeyListAdapter mAdapter; + + // private long mCurrentRowId; + + /** + * Define Adapter and Loader on create of Activity + */ + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + mActivity = getActivity(); + + // register long press context menu + registerForContextMenu(getListView()); + + // Give some text to display if there is no data. In a real + // application this would come from a resource. + setEmptyText("TODO empty"); + + // We have a menu item to show in action bar. + setHasOptionsMenu(true); + + mAdapter = new KeyListAdapter(mActivity, getLoaderManager(), null, Id.type.public_key); + setListAdapter(mAdapter); + + // Start out with a progress indicator. + setListShown(false); + + // Prepare the loader. Either re-connect with an existing one, + // or start a new one. + getLoaderManager().initLoader(-1, null, this); + } + + // These are the rows that we will retrieve. + static final String[] PROJECTION = new String[] { PublicKeyRings._ID, + PublicKeyRings.MASTER_KEY_ID, PublicUserIds.USER_ID }; + + static final String SORT_ORDER = PublicUserIds.USER_ID + " ASC"; + + @Override + public Loader<Cursor> onCreateLoader(int id, Bundle args) { + // This is called when a new Loader needs to be created. This + // sample only has one Loader, so we don't care about the ID. + Uri baseUri = PublicKeyRings.buildPublicKeyRingsUri(); + + // Now create and return a CursorLoader that will take care of + // creating a Cursor for the data being displayed. + return new CursorLoader(getActivity(), baseUri, PROJECTION, null, null, SORT_ORDER); + } + + @Override + public void onLoadFinished(Loader<Cursor> loader, Cursor data) { + // Swap the new cursor in. (The framework will take care of closing the + // old cursor once we return.) + mAdapter.setGroupCursor(data); + + // The list should now be shown. + if (isResumed()) { + setListShown(true); + } else { + setListShownNoAnimation(true); + } + } + + @Override + public void onLoaderReset(Loader<Cursor> loader) { + // This is called when the last Cursor provided to onLoadFinished() + // above is about to be closed. We need to make sure we are no + // longer using it. + mAdapter.setGroupCursor(null); + } + +} |