aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java')
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java112
1 files changed, 48 insertions, 64 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java
index 4bbf3d6ef..e8a306063 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java
@@ -1,18 +1,18 @@
/*
- * Copyright (C) 2012 Dominik Schürmann <dominik@dominikschuermann.de>
- * Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
+ * Copyright (C) 2013 Dominik Schürmann <dominik@dominikschuermann.de>
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui;
@@ -22,7 +22,7 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
-import org.sufficientlysecure.keychain.ui.adapter.KeyListAdapter;
+import org.sufficientlysecure.keychain.ui.adapter.KeyListSecretAdapter;
import android.database.Cursor;
import android.net.Uri;
@@ -30,18 +30,18 @@ import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
-import android.view.ContextMenu;
-import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;
-import android.widget.ExpandableListView;
-import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
-public class KeyListSecretFragment extends KeyListFragment implements
+import com.actionbarsherlock.app.SherlockListFragment;
+
+public class KeyListSecretFragment extends SherlockListFragment implements
LoaderManager.LoaderCallbacks<Cursor> {
private KeyListSecretActivity mKeyListSecretActivity;
- private KeyListAdapter mAdapter;
+ private KeyListSecretAdapter mAdapter;
/**
* Define Adapter and Loader on create of Activity
@@ -52,53 +52,38 @@ public class KeyListSecretFragment extends KeyListFragment implements
mKeyListSecretActivity = (KeyListSecretActivity) getActivity();
- mAdapter = new KeyListAdapter(mKeyListSecretActivity, null, Id.type.secret_key);
- setListAdapter(mAdapter);
+ getListView().setOnItemClickListener(new OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
+ // TODO: currently this is EDIT directly, later first show VIEW
- // Start out with a progress indicator.
- setListShown(false);
+ // get master key id using row id
+ long masterKeyId = ProviderHelper.getSecretMasterKeyId(mKeyListSecretActivity, id);
- // Prepare the loader. Either re-connect with an existing one,
- // or start a new one.
- // id is -1 as the child cursors are numbered 0,...,n
- getLoaderManager().initLoader(-1, null, this);
- }
+ boolean masterCanSign = ProviderHelper.getSecretMasterKeyCanSign(
+ mKeyListSecretActivity, id);
- /**
- * Context Menu on Long Click
- */
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
- super.onCreateContextMenu(menu, v, menuInfo);
- menu.add(0, Id.menu.edit, 0, R.string.menu_edit_key);
- }
-
- @Override
- public boolean onContextItemSelected(android.view.MenuItem item) {
- ExpandableListContextMenuInfo expInfo = (ExpandableListContextMenuInfo) item.getMenuInfo();
+ mKeyListSecretActivity.editKey(masterKeyId, masterCanSign);
+ }
+ });
- // expInfo.id would also return row id of childs, but we always want to get the row id of
- // the group item, thus we are using the following way
- int groupPosition = ExpandableListView.getPackedPositionGroup(expInfo.packedPosition);
- long keyRingRowId = getExpandableListAdapter().getGroupId(groupPosition);
+ // 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));
- // get master key id using row id
- long masterKeyId = ProviderHelper
- .getSecretMasterKeyId(mKeyListSecretActivity, keyRingRowId);
+ // We have a menu item to show in action bar.
+ setHasOptionsMenu(true);
- boolean masterCanSign = ProviderHelper.getSecretMasterKeyCanSign(mKeyListSecretActivity,
- keyRingRowId);
-
- switch (item.getItemId()) {
- case Id.menu.edit:
- mKeyListSecretActivity.editKey(masterKeyId, masterCanSign);
-
- return true;
+ // Start out with a progress indicator.
+ setListShown(false);
- default:
- return super.onContextItemSelected(item);
+ // Create an empty adapter we will use to display the loaded data.
+ mAdapter = new KeyListSecretAdapter(mKeyListSecretActivity, null, Id.type.secret_key);
+ setListAdapter(mAdapter);
- }
+ // Prepare the loader. Either re-connect with an existing one,
+ // or start a new one.
+ getLoaderManager().initLoader(0, null, this);
}
// These are the rows that we will retrieve.
@@ -107,22 +92,23 @@ public class KeyListSecretFragment extends KeyListFragment implements
static final String SORT_ORDER = UserIds.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.
+ // First, pick the base URI to use depending on whether we are
+ // currently filtering.
Uri baseUri = KeyRings.buildSecretKeyRingsUri();
// 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);
+ return new CursorLoader(getActivity(), baseUri, PROJECTION, null, null, UserIds.USER_ID
+ + " COLLATE LOCALIZED ASC");
}
- @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);
+ mAdapter.swapCursor(data);
// The list should now be shown.
if (isResumed()) {
@@ -132,12 +118,10 @@ public class KeyListSecretFragment extends KeyListFragment implements
}
}
- @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);
+ mAdapter.swapCursor(null);
}
-
}