aboutsummaryrefslogtreecommitdiffstats
path: root/org_apg/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java
diff options
context:
space:
mode:
authorDominik <dominik@dominikschuermann.de>2012-10-28 23:51:03 +0100
committerDominik <dominik@dominikschuermann.de>2012-10-28 23:51:03 +0100
commit4704e2faf4b5c342a811a91d780c077b05c6237b (patch)
treea0851eeadf45d44577ff5f5968aaae99e0d878f3 /org_apg/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java
parentd24bbdc6a13cbc56a5d117e5d5bd9ef3be39e63b (diff)
downloadopen-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.java100
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);
+ }
+
+}