mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-24 01:32:16 -05:00
Make select fragments more reusable
This commit is contained in:
parent
a890ba5e4f
commit
6fdae001cc
@ -4,9 +4,8 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_centerHorizontal="true" >
|
android:layout_centerHorizontal="true" >
|
||||||
|
|
||||||
<fragment
|
<FrameLayout
|
||||||
android:id="@+id/select_public_key_fragment"
|
android:id="@+id/select_public_key_fragment_container"
|
||||||
android:name="org.sufficientlysecure.keychain.ui.SelectPublicKeyFragment"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
@ -4,9 +4,8 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_centerHorizontal="true" >
|
android:layout_centerHorizontal="true" >
|
||||||
|
|
||||||
<fragment
|
<FrameLayout
|
||||||
android:id="@+id/select_secret_key_fragment"
|
android:id="@+id/select_secret_key_fragment_container"
|
||||||
android:name="org.sufficientlysecure.keychain.ui.SelectSecretKeyFragment"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
@ -22,27 +22,24 @@ import java.io.ByteArrayOutputStream;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.concurrent.ArrayBlockingQueue;
|
import java.util.concurrent.ArrayBlockingQueue;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.prefs.Preferences;
|
|
||||||
|
|
||||||
import org.openintents.crypto.CryptoError;
|
import org.openintents.crypto.CryptoError;
|
||||||
import org.openintents.crypto.CryptoSignatureResult;
|
import org.openintents.crypto.CryptoSignatureResult;
|
||||||
import org.sufficientlysecure.keychain.Constants;
|
|
||||||
import org.sufficientlysecure.keychain.Id;
|
|
||||||
import org.sufficientlysecure.keychain.helper.PgpMain;
|
|
||||||
import org.sufficientlysecure.keychain.util.InputData;
|
|
||||||
import org.sufficientlysecure.keychain.util.Log;
|
|
||||||
import org.sufficientlysecure.keychain.R;
|
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainContract;
|
|
||||||
import org.sufficientlysecure.keychain.provider.ProviderHelper;
|
|
||||||
import org.sufficientlysecure.keychain.remote_api.IServiceActivityCallback;
|
|
||||||
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
|
||||||
import org.sufficientlysecure.keychain.service.PassphraseCacheService;
|
|
||||||
import org.sufficientlysecure.keychain.util.PausableThreadPoolExecutor;
|
|
||||||
import org.openintents.crypto.ICryptoCallback;
|
import org.openintents.crypto.ICryptoCallback;
|
||||||
import org.openintents.crypto.ICryptoService;
|
import org.openintents.crypto.ICryptoService;
|
||||||
|
import org.sufficientlysecure.keychain.Constants;
|
||||||
|
import org.sufficientlysecure.keychain.Id;
|
||||||
|
import org.sufficientlysecure.keychain.R;
|
||||||
|
import org.sufficientlysecure.keychain.helper.PgpMain;
|
||||||
|
import org.sufficientlysecure.keychain.provider.KeychainContract;
|
||||||
|
import org.sufficientlysecure.keychain.provider.ProviderHelper;
|
||||||
|
import org.sufficientlysecure.keychain.service.KeychainIntentService;
|
||||||
|
import org.sufficientlysecure.keychain.service.PassphraseCacheService;
|
||||||
|
import org.sufficientlysecure.keychain.util.InputData;
|
||||||
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
|
import org.sufficientlysecure.keychain.util.PausableThreadPoolExecutor;
|
||||||
|
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
@ -171,6 +171,7 @@ public class CryptoServiceActivity extends SherlockFragmentActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
// Disallow
|
// Disallow
|
||||||
|
|
||||||
try {
|
try {
|
||||||
mServiceCallback.onRegistered(false, packageName);
|
mServiceCallback.onRegistered(false, packageName);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
@ -210,9 +211,23 @@ public class CryptoServiceActivity extends SherlockFragmentActivity {
|
|||||||
|
|
||||||
showPassphraseDialog(secretKeyId);
|
showPassphraseDialog(secretKeyId);
|
||||||
} else if (ACTION_SELECT_PUB_KEYS.equals(action)) {
|
} else if (ACTION_SELECT_PUB_KEYS.equals(action)) {
|
||||||
long secretKeyId = extras.getLong(EXTRA_SECRET_KEY_ID);
|
|
||||||
|
|
||||||
showPassphraseDialog(secretKeyId);
|
// Inflate a "Done"/"Cancel" custom action bar view
|
||||||
|
ActionBarHelper.setDoneCancelView(getSupportActionBar(), R.string.btn_okay,
|
||||||
|
new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// ok
|
||||||
|
|
||||||
|
}
|
||||||
|
}, R.string.btn_doNotSave, new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// cancel
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Log.e(Constants.TAG, "Wrong action!");
|
Log.e(Constants.TAG, "Wrong action!");
|
||||||
finish();
|
finish();
|
||||||
|
@ -66,8 +66,26 @@ public class SelectPublicKeyActivity extends SherlockFragmentActivity {
|
|||||||
|
|
||||||
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
|
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
|
||||||
|
|
||||||
mSelectFragment = (SelectPublicKeyFragment) getSupportFragmentManager().findFragmentById(
|
handleIntent(getIntent());
|
||||||
R.id.select_public_key_fragment);
|
|
||||||
|
// Check that the activity is using the layout version with
|
||||||
|
// the fragment_container FrameLayout
|
||||||
|
if (findViewById(R.id.select_public_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 = SelectPublicKeyFragment.newInstance(selectedMasterKeyIds);
|
||||||
|
|
||||||
|
// Add the fragment to the 'fragment_container' FrameLayout
|
||||||
|
getSupportFragmentManager().beginTransaction()
|
||||||
|
.add(R.id.select_public_key_fragment_container, mSelectFragment).commit();
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: reimplement!
|
// TODO: reimplement!
|
||||||
// mFilterLayout = findViewById(R.id.layout_filter);
|
// mFilterLayout = findViewById(R.id.layout_filter);
|
||||||
@ -80,7 +98,6 @@ public class SelectPublicKeyActivity extends SherlockFragmentActivity {
|
|||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
|
|
||||||
handleIntent(getIntent());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -90,7 +107,7 @@ public class SelectPublicKeyActivity extends SherlockFragmentActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handleIntent(Intent intent) {
|
private void handleIntent(Intent intent) {
|
||||||
// TODO: reimplement!
|
// TODO: reimplement search!
|
||||||
|
|
||||||
// String searchString = null;
|
// String searchString = null;
|
||||||
// if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
|
// if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
|
||||||
@ -111,15 +128,6 @@ public class SelectPublicKeyActivity extends SherlockFragmentActivity {
|
|||||||
selectedMasterKeyIds = intent.getLongArrayExtra(EXTRA_SELECTED_MASTER_KEY_IDS);
|
selectedMasterKeyIds = intent.getLongArrayExtra(EXTRA_SELECTED_MASTER_KEY_IDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* returns preselected key ids, this is used in the fragment
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public long[] getSelectedMasterKeyIds() {
|
|
||||||
return selectedMasterKeyIds;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void cancelClicked() {
|
private void cancelClicked() {
|
||||||
setResult(RESULT_CANCELED, null);
|
setResult(RESULT_CANCELED, null);
|
||||||
finish();
|
finish();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2012 Dominik Schürmann <dominik@dominikschuermann.de>
|
* Copyright (C) 2012-2013 Dominik Schürmann <dominik@dominikschuermann.de>
|
||||||
* Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
|
* Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -21,33 +21,57 @@ import java.util.Date;
|
|||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import org.sufficientlysecure.keychain.Id;
|
import org.sufficientlysecure.keychain.Id;
|
||||||
|
import org.sufficientlysecure.keychain.R;
|
||||||
import org.sufficientlysecure.keychain.compatibility.ListFragmentWorkaround;
|
import org.sufficientlysecure.keychain.compatibility.ListFragmentWorkaround;
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainDatabase;
|
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
|
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainContract.Keys;
|
import org.sufficientlysecure.keychain.provider.KeychainContract.Keys;
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
|
import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
|
||||||
|
import org.sufficientlysecure.keychain.provider.KeychainDatabase;
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainDatabase.Tables;
|
import org.sufficientlysecure.keychain.provider.KeychainDatabase.Tables;
|
||||||
import org.sufficientlysecure.keychain.ui.widget.SelectKeyCursorAdapter;
|
import org.sufficientlysecure.keychain.ui.widget.SelectKeyCursorAdapter;
|
||||||
import org.sufficientlysecure.keychain.R;
|
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.DatabaseUtils;
|
import android.database.DatabaseUtils;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.LoaderManager;
|
||||||
import android.support.v4.content.CursorLoader;
|
import android.support.v4.content.CursorLoader;
|
||||||
import android.support.v4.content.Loader;
|
import android.support.v4.content.Loader;
|
||||||
import android.support.v4.app.LoaderManager;
|
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
|
|
||||||
public class SelectPublicKeyFragment extends ListFragmentWorkaround implements
|
public class SelectPublicKeyFragment extends ListFragmentWorkaround implements
|
||||||
LoaderManager.LoaderCallbacks<Cursor> {
|
LoaderManager.LoaderCallbacks<Cursor> {
|
||||||
|
|
||||||
private SelectPublicKeyActivity mActivity;
|
private Activity mActivity;
|
||||||
private SelectKeyCursorAdapter mAdapter;
|
private SelectKeyCursorAdapter mAdapter;
|
||||||
private ListView mListView;
|
private ListView mListView;
|
||||||
|
|
||||||
private long mSelectedMasterKeyIds[];
|
private long mSelectedMasterKeyIds[];
|
||||||
|
|
||||||
|
private static final String ARG_PRESELECTED_KEY_IDS = "preselected_key_ids";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates new instance of this fragment
|
||||||
|
*/
|
||||||
|
public static SelectPublicKeyFragment newInstance(long[] preselectedKeyIds) {
|
||||||
|
SelectPublicKeyFragment frag = new SelectPublicKeyFragment();
|
||||||
|
Bundle args = new Bundle();
|
||||||
|
|
||||||
|
args.putLongArray(ARG_PRESELECTED_KEY_IDS, preselectedKeyIds);
|
||||||
|
|
||||||
|
frag.setArguments(args);
|
||||||
|
|
||||||
|
return frag;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
mSelectedMasterKeyIds = getArguments().getLongArray(ARG_PRESELECTED_KEY_IDS);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define Adapter and Loader on create of Activity
|
* Define Adapter and Loader on create of Activity
|
||||||
*/
|
*/
|
||||||
@ -55,12 +79,9 @@ public class SelectPublicKeyFragment extends ListFragmentWorkaround implements
|
|||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
mActivity = (SelectPublicKeyActivity) getSherlockActivity();
|
mActivity = getSherlockActivity();
|
||||||
mListView = getListView();
|
mListView = getListView();
|
||||||
|
|
||||||
// get selected master key ids, which are given to activity by intent
|
|
||||||
mSelectedMasterKeyIds = mActivity.getSelectedMasterKeyIds();
|
|
||||||
|
|
||||||
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
|
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
|
||||||
|
|
||||||
// Give some text to display if there is no data. In a real
|
// Give some text to display if there is no data. In a real
|
||||||
|
@ -38,7 +38,9 @@ public class SelectSecretKeyActivity extends SherlockFragmentActivity {
|
|||||||
|
|
||||||
public static final String RESULT_EXTRA_MASTER_KEY_ID = "masterKeyId";
|
public static final String RESULT_EXTRA_MASTER_KEY_ID = "masterKeyId";
|
||||||
public static final String RESULT_EXTRA_USER_ID = "userId";
|
public static final String RESULT_EXTRA_USER_ID = "userId";
|
||||||
public static boolean filterCertify = false;
|
|
||||||
|
private boolean mFilterCertify = false;
|
||||||
|
private SelectSecretKeyFragment mSelectFragment;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -64,9 +66,28 @@ public class SelectSecretKeyActivity extends SherlockFragmentActivity {
|
|||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
|
|
||||||
filterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false);
|
mFilterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false);
|
||||||
|
|
||||||
handleIntent(getIntent());
|
handleIntent(getIntent());
|
||||||
|
|
||||||
|
// 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(mFilterCertify);
|
||||||
|
|
||||||
|
// Add the fragment to the 'fragment_container' FrameLayout
|
||||||
|
getSupportFragmentManager().beginTransaction()
|
||||||
|
.add(R.id.select_secret_key_fragment_container, mSelectFragment).commit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2012 Dominik Schürmann <dominik@dominikschuermann.de>
|
* Copyright (C) 2012-2013 Dominik Schürmann <dominik@dominikschuermann.de>
|
||||||
* Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
|
* Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -48,6 +48,31 @@ public class SelectSecretKeyFragment extends SherlockListFragment implements
|
|||||||
private SelectKeyCursorAdapter mAdapter;
|
private SelectKeyCursorAdapter mAdapter;
|
||||||
private ListView mListView;
|
private ListView mListView;
|
||||||
|
|
||||||
|
private boolean mFilterCertify;
|
||||||
|
|
||||||
|
private static final String ARG_FILTER_CERTIFY = "filter_certify";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates new instance of this fragment
|
||||||
|
*/
|
||||||
|
public static SelectSecretKeyFragment newInstance(boolean filterCertify) {
|
||||||
|
SelectSecretKeyFragment frag = new SelectSecretKeyFragment();
|
||||||
|
Bundle args = new Bundle();
|
||||||
|
|
||||||
|
args.putBoolean(ARG_FILTER_CERTIFY, filterCertify);
|
||||||
|
|
||||||
|
frag.setArguments(args);
|
||||||
|
|
||||||
|
return frag;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
mFilterCertify = getArguments().getBoolean(ARG_FILTER_CERTIFY);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define Adapter and Loader on create of Activity
|
* Define Adapter and Loader on create of Activity
|
||||||
*/
|
*/
|
||||||
@ -92,7 +117,7 @@ public class SelectSecretKeyFragment extends SherlockListFragment implements
|
|||||||
Uri baseUri = KeyRings.buildSecretKeyRingsUri();
|
Uri baseUri = KeyRings.buildSecretKeyRingsUri();
|
||||||
|
|
||||||
String CapFilter = null;
|
String CapFilter = null;
|
||||||
if (((SelectSecretKeyActivity)getActivity()).filterCertify == true) {
|
if (mFilterCertify) {
|
||||||
CapFilter = "(cert > 0)";
|
CapFilter = "(cert > 0)";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user