aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-01-03 18:07:42 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2014-01-03 18:07:42 +0100
commit0e4cfed9691118080506d55270842e2ba127c878 (patch)
tree55399b9d810356c4f8b04f465de5dfaf91b589eb /OpenPGP-Keychain
parent606caee145bfdb706a23e29b6b0434b66519a47d (diff)
downloadopen-keychain-0e4cfed9691118080506d55270842e2ba127c878.tar.gz
open-keychain-0e4cfed9691118080506d55270842e2ba127c878.tar.bz2
open-keychain-0e4cfed9691118080506d55270842e2ba127c878.zip
cleanup and documentation
Diffstat (limited to 'OpenPGP-Keychain')
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java44
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java29
2 files changed, 32 insertions, 41 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java
index 7bc0bcd96..27461875a 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java
@@ -42,14 +42,8 @@ import android.widget.AdapterView;
import com.actionbarsherlock.app.SherlockFragment;
/**
- * Public key list with sticky list headers.
- *
- * - uses StickyListHeaders library
- *
- * - custom adapter: KeyListPublicAdapter
- *
- * TODO: - fix view holder in adapter, fix loader
- *
+ * Public key list with sticky list headers. It does _not_ extend ListFragment because it uses
+ * StickyListHeaders library which does not extend upon ListView.
*/
public class KeyListPublicFragment extends SherlockFragment implements
AdapterView.OnItemClickListener, LoaderManager.LoaderCallbacks<Cursor> {
@@ -79,9 +73,6 @@ public class KeyListPublicFragment extends SherlockFragment implements
mStickyList = (StickyListHeadersListView) getActivity().findViewById(R.id.list);
mStickyList.setOnItemClickListener(this);
- // mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null));
- // mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null));
- mStickyList.setEmptyView(getActivity().findViewById(R.id.empty));
mStickyList.setAreHeadersSticky(true);
mStickyList.setDrawingListUnderStickyHeader(false);
mStickyList.setFastScrollEnabled(true);
@@ -90,17 +81,17 @@ public class KeyListPublicFragment extends SherlockFragment implements
} catch (ApiLevelTooLowException e) {
}
- // Give some text to display if there is no data. In a real
- // application this would come from a resource.
- // setEmptyText(getString(R.string.list_empty));
+ // this view is made visible if no data is available
+ mStickyList.setEmptyView(getActivity().findViewById(R.id.empty));
+ // NOTE: Not supported by StickyListHeader, thus no indicator is shown while loading
// Start out with a progress indicator.
// setListShown(false);
// Create an empty adapter we will use to display the loaded data.
- // mAdapter = new KeyListPublicAdapter(mKeyListPublicActivity, null, Id.type.public_key);
- // setListAdapter(mAdapter);
- // stickyList.setAdapter(mAdapter);
+ mAdapter = new KeyListPublicAdapter(mKeyListPublicActivity, null, Id.type.public_key,
+ USER_ID_INDEX);
+ mStickyList.setAdapter(mAdapter);
// Prepare the loader. Either re-connect with an existing one,
// or start a new one.
@@ -111,6 +102,8 @@ public class KeyListPublicFragment extends SherlockFragment implements
static final String[] PROJECTION = new String[] { KeyRings._ID, KeyRings.MASTER_KEY_ID,
UserIds.USER_ID };
+ static final int USER_ID_INDEX = 2;
+
static final String SORT_ORDER = UserIds.USER_ID + " ASC";
@Override
@@ -128,20 +121,17 @@ public class KeyListPublicFragment extends SherlockFragment implements
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.swapCursor(data);
- int userIdIndex = data.getColumnIndex(UserIds.USER_ID);
-
- mAdapter = new KeyListPublicAdapter(mKeyListPublicActivity, data, Id.type.public_key,
- userIdIndex);
+ mAdapter.swapCursor(data);
mStickyList.setAdapter(mAdapter);
+ // NOTE: Not supported by StickyListHeader, thus no indicator is shown while loading
// The list should now be shown.
- if (isResumed()) {
- // setListShown(true);
- } else {
- // setListShownNoAnimation(true);
- }
+ // if (isResumed()) {
+ // setListShown(true);
+ // } else {
+ // setListShownNoAnimation(true);
+ // }
}
@Override
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java
index ef3a0d228..83c46021c 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java
@@ -33,13 +33,11 @@ import android.view.ViewGroup;
import android.widget.TextView;
/**
- * - implements StickyListHeadersAdapter from library - uses view holder pattern for performance
- *
+ * Implements StickyListHeadersAdapter from library
*/
public class KeyListPublicAdapter extends CursorAdapter implements StickyListHeadersAdapter {
private LayoutInflater mInflater;
-
- int mSectionColumnIndex;
+ private int mSectionColumnIndex;
public KeyListPublicAdapter(Context context, Cursor c, int flags, int sectionColumnIndex) {
super(context, c, flags);
@@ -48,9 +46,14 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea
mSectionColumnIndex = sectionColumnIndex;
}
+ /**
+ * Bind cursor data to the item list view
+ *
+ * NOTE: CursorAdapter already implements the ViewHolder pattern in its getView() method. Thus
+ * no ViewHolder is required here.
+ */
@Override
public void bindView(View view, Context context, Cursor cursor) {
- // TODO: view holder pattern?
int userIdIndex = cursor.getColumnIndex(UserIds.USER_ID);
TextView mainUserId = (TextView) view.findViewById(R.id.mainUserId);
@@ -84,6 +87,13 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea
return mInflater.inflate(R.layout.key_list_item, null);
}
+ /**
+ * Creates a new header view and binds the section headers to it. It uses the ViewHolder
+ * pattern. Most functionality is similar to getView() from Android's CursorAdapter.
+ *
+ * NOTE: The variables mDataValid and mCursor are available due to the super class
+ * CursorAdapter.
+ */
@Override
public View getHeaderView(int position, View convertView, ViewGroup parent) {
HeaderViewHolder holder;
@@ -96,14 +106,12 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea
holder = (HeaderViewHolder) convertView.getTag();
}
- // similar to getView in CursorAdapter
if (!mDataValid) {
// no data available at this point
Log.d(Constants.TAG, "getHeaderView: No data available at this point!");
return convertView;
}
- // similar to getView in CursorAdapter
if (!mCursor.moveToPosition(position)) {
throw new IllegalStateException("couldn't move cursor to position " + position);
}
@@ -119,14 +127,12 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea
*/
@Override
public long getHeaderId(int position) {
- // similar to getView in CursorAdapter
if (!mDataValid) {
// no data available at this point
Log.d(Constants.TAG, "getHeaderView: No data available at this point!");
return -1;
}
- // similar to getView in CursorAdapter
if (!mCursor.moveToPosition(position)) {
throw new IllegalStateException("couldn't move cursor to position " + position);
}
@@ -140,9 +146,4 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea
TextView text;
}
- class ViewHolder {
- TextView mainUserId;
- TextView mainUserIdRest;
- }
-
}