From 4c2419642ba22fdcaa09254f286762287beb3e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sun, 7 Sep 2014 19:18:19 +0200 Subject: Remove SelectSecretKey, not used anymore --- .../remote/ui/AccountSettingsFragment.java | 1 - .../keychain/ui/SelectSecretKeyActivity.java | 84 -------- .../keychain/ui/SelectSecretKeyFragment.java | 220 --------------------- .../keychain/ui/SelectSecretKeyLayoutFragment.java | 215 -------------------- 4 files changed, 520 deletions(-) delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java (limited to 'OpenKeychain/src') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java index dd803834a..04c202019 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java @@ -40,7 +40,6 @@ import org.sufficientlysecure.keychain.remote.AccountSettings; import org.sufficientlysecure.keychain.service.OperationResultParcel; import org.sufficientlysecure.keychain.service.OperationResults; import org.sufficientlysecure.keychain.ui.CreateKeyActivity; -import org.sufficientlysecure.keychain.ui.SelectSecretKeyLayoutFragment; import org.sufficientlysecure.keychain.ui.adapter.KeyValueSpinnerAdapter; import org.sufficientlysecure.keychain.ui.widget.KeySpinner; import org.sufficientlysecure.keychain.ui.widget.SignKeySpinner; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java deleted file mode 100644 index 9160d57de..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2012-2014 Dominik Schürmann - * - * 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. - * - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.ui; - -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.support.v7.app.ActionBar; -import android.support.v7.app.ActionBarActivity; - -import org.sufficientlysecure.keychain.R; - -public class SelectSecretKeyActivity extends ActionBarActivity { - - public static final String EXTRA_FILTER_CERTIFY = "filter_certify"; - public static final String EXTRA_FILTER_SIGN = "filter_sign"; - - public static final String RESULT_EXTRA_MASTER_KEY_ID = "master_key_id"; - - private SelectSecretKeyFragment mSelectFragment; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.select_secret_key_activity); - - final ActionBar actionBar = getSupportActionBar(); - actionBar.setDisplayShowTitleEnabled(true); - actionBar.setDisplayHomeAsUpEnabled(false); - actionBar.setHomeButtonEnabled(false); - - boolean filterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false); - boolean filterSign = getIntent().getBooleanExtra(EXTRA_FILTER_SIGN, false); - - // Check that the activity is using the layout version with - // the fragment_container FrameLayout - if (findViewById(R.id.select_secret_key_fragment_container) != null) { - - // However, if we're being restored from a previous state, - // then we don't need to do anything and should return or else - // we could end up with overlapping fragments. - if (savedInstanceState != null) { - return; - } - - // Create an instance of the fragment - mSelectFragment = SelectSecretKeyFragment.newInstance(filterCertify, filterSign); - - // Add the fragment to the 'fragment_container' FrameLayout - getSupportFragmentManager().beginTransaction() - .add(R.id.select_secret_key_fragment_container, mSelectFragment).commit(); - } - } - - /** - * This is executed by SelectSecretKeyFragment after clicking on an item - * - * @param selectedUri - */ - public void afterListSelection(Uri selectedUri) { - Intent data = new Intent(); - data.setData(selectedUri); - - setResult(RESULT_OK, data); - finish(); - } - -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java deleted file mode 100644 index 3f1053f69..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (C) 2012-2014 Dominik Schürmann - * Copyright (C) 2010-2014 Thialfihar - * - * 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. - * - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.ui; - -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.os.Bundle; -import android.support.v4.app.ListFragment; -import android.support.v4.app.LoaderManager; -import android.support.v4.content.CursorLoader; -import android.support.v4.content.Loader; -import android.view.View; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.ListView; - -import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey.SecretKeyType; -import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; -import org.sufficientlysecure.keychain.ui.adapter.SelectKeyCursorAdapter; - -public class SelectSecretKeyFragment extends ListFragment implements - LoaderManager.LoaderCallbacks { - - private SelectSecretKeyActivity mActivity; - private SelectKeyCursorAdapter mAdapter; - - private boolean mFilterCertify, mFilterSign; - - private static final String ARG_FILTER_CERTIFY = "filter_certify"; - private static final String ARG_FILTER_SIGN = "filter_sign"; - - /** - * Creates new instance of this fragment - * - * filterCertify and filterSign must not both be set! - */ - public static SelectSecretKeyFragment newInstance(boolean filterCertify, boolean filterSign) { - SelectSecretKeyFragment frag = new SelectSecretKeyFragment(); - - Bundle args = new Bundle(); - args.putBoolean(ARG_FILTER_CERTIFY, filterCertify); - args.putBoolean(ARG_FILTER_SIGN, filterSign); - frag.setArguments(args); - - return frag; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - mFilterCertify = getArguments().getBoolean(ARG_FILTER_CERTIFY); - mFilterSign = getArguments().getBoolean(ARG_FILTER_SIGN); - } - - /** - * Define Adapter and Loader on create of Activity - */ - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - mActivity = (SelectSecretKeyActivity) getActivity(); - - ListView listView = getListView(); - listView.setOnItemClickListener(new OnItemClickListener() { - @Override - public void onItemClick(AdapterView adapterView, View view, int position, long id) { - long masterKeyId = mAdapter.getMasterKeyId(position); - Uri result = KeyRings.buildGenericKeyRingUri(masterKeyId); - - // return data to activity, which results in finishing it - mActivity.afterListSelection(result); - } - }); - - // 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)); - - mAdapter = new SelectSecretKeyCursorAdapter(mActivity, null, 0, listView); - - 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(0, null, this); - } - - @Override - public Loader 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 = KeyRings.buildUnifiedKeyRingsUri(); - - // These are the rows that we will retrieve. - String[] projection = new String[]{ - KeyRings._ID, - KeyRings.MASTER_KEY_ID, - KeyRings.USER_ID, - KeyRings.EXPIRY, - KeyRings.IS_REVOKED, - // can certify info only related to master key - KeyRings.CAN_CERTIFY, - // has sign may be any subkey - KeyRings.HAS_SIGN, - KeyRings.HAS_ANY_SECRET, - KeyRings.HAS_SECRET - }; - - String where = KeyRings.HAS_ANY_SECRET + " = 1"; - - // 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, where, null, null); - } - - @Override - public void onLoadFinished(Loader loader, Cursor data) { - // Swap the new cursor in. (The framework will take care of closing the - // old cursor once we return.) - mAdapter.swapCursor(data); - - // The list should now be shown. - if (isResumed()) { - setListShown(true); - } else { - setListShownNoAnimation(true); - } - } - - @Override - public void onLoaderReset(Loader 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.swapCursor(null); - } - - private class SelectSecretKeyCursorAdapter extends SelectKeyCursorAdapter { - - private int mIndexHasSign, mIndexCanCertify, mIndexHasSecret; - - public SelectSecretKeyCursorAdapter(Context context, Cursor c, int flags, ListView listView) { - super(context, c, flags, listView); - } - - @Override - protected void initIndex(Cursor cursor) { - super.initIndex(cursor); - if (cursor != null) { - mIndexCanCertify = cursor.getColumnIndexOrThrow(KeyRings.CAN_CERTIFY); - mIndexHasSign = cursor.getColumnIndexOrThrow(KeyRings.HAS_SIGN); - mIndexHasSecret = cursor.getColumnIndexOrThrow(KeyRings.HAS_SECRET); - } - } - - @Override - public void bindView(View view, Context context, Cursor cursor) { - super.bindView(view, context, cursor); - ViewHolderItem h = (SelectKeyCursorAdapter.ViewHolderItem) view.getTag(); - - // We don't care about the checkbox - h.selected.setVisibility(View.GONE); - - // Special from superclass: Te - boolean enabled = false; - if((Boolean) h.status.getTag()) { - // Check if key is viable for our purposes (certify or sign) - if(mFilterCertify) { - // Only enable if can certify - if (cursor.getInt(mIndexCanCertify) == 0 - || !SecretKeyType.fromNum(cursor.getInt(mIndexHasSecret)).isUsable()) { - h.status.setText(R.string.can_certify_not); - } else { - h.status.setText(R.string.can_certify); - enabled = true; - } - } else if(mFilterSign) { - // Only enable if can sign - if (cursor.getInt(mIndexHasSign) == 0) { - h.status.setText(R.string.can_sign_not); - } else { - h.status.setText(R.string.can_sign); - enabled = true; - } - } else { - // No filters, just enable - enabled = true; - } - } - h.setEnabled(enabled); - // refresh this, too, for use in the ItemClickListener above - h.status.setTag(enabled); - } - - } - -} \ No newline at end of file diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java deleted file mode 100644 index e156b8b9c..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (C) 2014 Dominik Schürmann - * - * 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. - * - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.ui; - -import android.app.Activity; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.LoaderManager; -import android.support.v4.content.CursorLoader; -import android.support.v4.content.Loader; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.TextView; - -import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.pgp.KeyRing; -import org.sufficientlysecure.keychain.pgp.PgpKeyHelper; -import org.sufficientlysecure.keychain.provider.KeychainContract; - -public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderManager.LoaderCallbacks { - - private TextView mKeyUserId; - private TextView mKeyUserIdRest; - private TextView mKeyMasterKeyIdHex; - private TextView mNoKeySelected; - private Button mSelectKeyButton; - private Boolean mFilterCertify, mFilterSign; - - private Uri mReceivedUri = null; - - private SelectSecretKeyCallback mCallback; - - private static final int REQUEST_CODE_SELECT_KEY = 8882; - - private static final int LOADER_ID = 0; - - //The Projection we will retrieve, Master Key ID is for convenience sake, - //to avoid having to pass the Key Around - final String[] PROJECTION = new String[] { - KeychainContract.Keys.MASTER_KEY_ID, - KeychainContract.UserIds.USER_ID - }; - final int INDEX_MASTER_KEY_ID = 0; - final int INDEX_USER_ID = 1; - - public interface SelectSecretKeyCallback { - void onKeySelected(long secretKeyId); - } - - public void setCallback(SelectSecretKeyCallback callback) { - mCallback = callback; - } - - public void setFilterCertify(boolean filterCertify) { - mFilterCertify = filterCertify; - } - - public void setFilterSign(boolean filterSign) { - mFilterSign = filterSign; - } - - public void setNoKeySelected() { - mNoKeySelected.setVisibility(View.VISIBLE); - mKeyUserId.setVisibility(View.GONE); - mKeyUserIdRest.setVisibility(View.GONE); - mKeyMasterKeyIdHex.setVisibility(View.GONE); - } - - public void setSelectedKeyData(String userName, String email, String masterKeyHex) { - mNoKeySelected.setVisibility(View.GONE); - - mKeyUserId.setText(userName); - mKeyUserIdRest.setText(email); - mKeyMasterKeyIdHex.setText(masterKeyHex); - - mKeyUserId.setVisibility(View.VISIBLE); - mKeyUserIdRest.setVisibility(View.VISIBLE); - mKeyMasterKeyIdHex.setVisibility(View.VISIBLE); - - } - - public void setError(String error) { - mNoKeySelected.requestFocus(); - mNoKeySelected.setError(error); - } - - /** - * Inflate the layout for this fragment - */ - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.select_secret_key_layout_fragment, container, false); - - mNoKeySelected = (TextView) view.findViewById(R.id.no_key_selected); - mKeyUserId = (TextView) view.findViewById(R.id.select_secret_key_user_id); - mKeyUserIdRest = (TextView) view.findViewById(R.id.select_secret_key_user_id_rest); - mKeyMasterKeyIdHex = (TextView) view.findViewById(R.id.select_secret_key_master_key_hex); - mSelectKeyButton = (Button) view.findViewById(R.id.select_secret_key_select_key_button); - mFilterCertify = false; - mFilterSign = false; - mSelectKeyButton.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - startSelectKeyActivity(); - } - }); - - return view; - } - - //For AppSettingsFragment - public void selectKey(long masterKeyId) { - Uri buildUri = KeychainContract.KeyRings.buildGenericKeyRingUri(masterKeyId); - mReceivedUri = buildUri; - getActivity().getSupportLoaderManager().restartLoader(LOADER_ID, null, this); - } - - private void startSelectKeyActivity() { - Intent intent = new Intent(getActivity(), SelectSecretKeyActivity.class); - intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_CERTIFY, mFilterCertify); - intent.putExtra(SelectSecretKeyActivity.EXTRA_FILTER_SIGN, mFilterSign); - startActivityForResult(intent, REQUEST_CODE_SELECT_KEY); - } - - @Override - public Loader onCreateLoader(int id, Bundle args) { - Uri uri = KeychainContract.KeyRings.buildUnifiedKeyRingUri(mReceivedUri); - //We don't care about the Loader id - return new CursorLoader(getActivity(), uri, PROJECTION, null, null, null); - } - - @Override - public void onLoadFinished(Loader loader, Cursor data) { - if (data.moveToFirst()) { - String userName, email, masterKeyHex; - String userID = data.getString(INDEX_USER_ID); - long masterKeyID = data.getLong(INDEX_MASTER_KEY_ID); - - String splitUserID[] = KeyRing.splitUserId(userID); - - if (splitUserID[0] != null) { - userName = splitUserID[0]; - } else { - userName = getActivity().getResources().getString(R.string.user_id_no_name); - } - - if (splitUserID[1] != null) { - email = splitUserID[1]; - } else { - email = getActivity().getResources().getString(R.string.error_user_id_no_email); - } - - //TODO Can the cursor return invalid values for the Master Key ? - masterKeyHex = PgpKeyHelper.convertKeyIdToHexShort(masterKeyID); - - //Set the data - setSelectedKeyData(userName, email, masterKeyHex); - - //Give value to the callback - mCallback.onKeySelected(masterKeyID); - } else { - //Set The empty View - setNoKeySelected(); - } - - } - - @Override - public void onLoaderReset(Loader loader) { - return; - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - switch (requestCode) { - case REQUEST_CODE_SELECT_KEY: { - if (resultCode == Activity.RESULT_OK) { - mReceivedUri = data.getData(); - - //Must be restartLoader() or the data will not be updated on selecting a new key - getActivity().getSupportLoaderManager().restartLoader(0, null, this); - - mKeyUserId.setError(null); - } - break; - } - - default: - super.onActivityResult(requestCode, resultCode, data); - - break; - } - } -} -- cgit v1.2.3