From c614d8d4e044e91cf60b488884f0d5c166e1ecc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 4 Oct 2014 18:22:55 +0200 Subject: Fixing import, start qr code stuff --- .../keychain/ui/AddKeysActivity.java | 166 ++++++++++++++------- 1 file changed, 116 insertions(+), 50 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java index ecc72c24d..2dc6cc7ee 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java @@ -31,6 +31,9 @@ import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.ImageView; +import com.google.zxing.integration.android.IntentIntegrator; +import com.google.zxing.integration.android.IntentResult; + import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.keyimport.ImportKeysListEntry; @@ -49,14 +52,17 @@ import org.sufficientlysecure.keychain.ui.util.Notify; import org.sufficientlysecure.keychain.ui.widget.ExchangeKeySpinner; import org.sufficientlysecure.keychain.ui.widget.KeySpinner; import org.sufficientlysecure.keychain.util.InputData; +import org.sufficientlysecure.keychain.util.IntentIntegratorSupportV4; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.ParcelableFileCache; +import org.sufficientlysecure.keychain.util.Preferences; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; +import java.util.Locale; import edu.cmu.cylab.starslinger.exchange.ExchangeActivity; import edu.cmu.cylab.starslinger.exchange.ExchangeConfig; @@ -75,8 +81,6 @@ public class AddKeysActivity extends ActionBarActivity implements long mExchangeMasterKeyId = Constants.key.none; byte[] mImportBytes; - private LongSparseArray mCachedKeyData; - private static final int REQUEST_CODE_SAFE_SLINGER = 1; @@ -153,10 +157,12 @@ public class AddKeysActivity extends ActionBarActivity implements } private void startQrCode() { - + // scan using xzing's Barcode Scanner + new IntentIntegrator(this).initiateScan(); } private void searchCloud() { + finish(); Intent importIntent = new Intent(this, ImportKeysActivity.class); startActivity(importIntent); } @@ -169,16 +175,12 @@ public class AddKeysActivity extends ActionBarActivity implements result.createNotify(this).show(); } else { switch (requestCode) { - case REQUEST_CODE_SAFE_SLINGER: + case REQUEST_CODE_SAFE_SLINGER: { switch (resultCode) { case ExchangeActivity.RESULT_EXCHANGE_OK: // import exchanged keys mImportBytes = getSlingedKeys(data); getSupportLoaderManager().restartLoader(LOADER_ID_BYTES, null, this); -// Intent importIntent = new Intent(this, ImportKeysActivity.class); -// importIntent.setAction(ImportKeysActivity.ACTION_IMPORT_KEY); -// importIntent.putExtra(ImportKeysActivity.EXTRA_KEY_BYTES, getSlingedKeys(data)); -// startActivity(importIntent); break; case ExchangeActivity.RESULT_EXCHANGE_CANCELED: // handle canceled result @@ -186,11 +188,68 @@ public class AddKeysActivity extends ActionBarActivity implements break; } break; + } + case IntentIntegratorSupportV4.REQUEST_CODE: { + IntentResult scanResult = IntentIntegratorSupportV4.parseActivityResult(requestCode, + resultCode, data); + if (scanResult != null && scanResult.getFormatName() != null) { + String scannedContent = scanResult.getContents(); + + Log.d(Constants.TAG, "scannedContent: " + scannedContent); + + // look if it's fingerprint only + if (scannedContent.toLowerCase(Locale.ENGLISH).startsWith(Constants.FINGERPRINT_SCHEME)) { + loadFromFingerprintUri(Uri.parse(scanResult.getContents())); + return; + } + + // is this a full key encoded as qr code? + if (scannedContent.startsWith("-----BEGIN PGP")) { + // TODO +// mImportActivity.loadCallback(new ImportKeysListFragment.BytesLoaderState(scannedContent.getBytes(), null)); + return; + } + + // fail... + Notify.showNotify(this, R.string.import_qr_code_wrong, Notify.Style.ERROR); + } + + break; + } } super.onActivityResult(requestCode, resultCode, data); } } + + public void loadFromFingerprintUri(Uri dataUri) { + String query = "0x" + getFingerprintFromUri(dataUri); + + // setCurrentItem does not work directly after onResume (from qr code scanner) + // see http://stackoverflow.com/q/19316729 + // so, reset adapter completely! +// if (mViewPager.getAdapter() != null) +// mViewPager.setAdapter(null); +// mViewPager.setAdapter(mTabsAdapter); +// mViewPager.setCurrentItem(TAB_CLOUD); + +// ImportKeysCloudFragment f = (ImportKeysCloudFragment) +// getActiveFragment(mViewPager, TAB_CLOUD); + + // search config + Preferences prefs = Preferences.getPreferences(this); + Preferences.CloudSearchPrefs cloudPrefs = new Preferences.CloudSearchPrefs(true, true, prefs.getPreferredKeyserver()); + + // search directly +// loadCallback(new ImportKeysListFragment.CloudLoaderState(query, cloudPrefs)); + } + + private String getFingerprintFromUri(Uri dataUri) { + String fingerprint = dataUri.toString().split(":")[1].toLowerCase(Locale.ENGLISH); + Log.d(Constants.TAG, "fingerprint: " + fingerprint); + return fingerprint; + } + private static byte[] getSlingedKeys(Intent data) { ByteArrayOutputStream out = new ByteArrayOutputStream(); @@ -252,7 +311,8 @@ public class AddKeysActivity extends ActionBarActivity implements Exception error = data.getError(); // free old cached key data - mCachedKeyData = null; +// mCachedKeyData = null; + LongSparseArray mCachedKeyData = null; // TODO: Use parcels!!!!!!!!!!!!!!! @@ -262,6 +322,8 @@ public class AddKeysActivity extends ActionBarActivity implements if (error == null) { // No error mCachedKeyData = ((ImportKeysListLoader) loader).getParcelableRings(); + Log.d(Constants.TAG, "no error!:" + mCachedKeyData); + } else if (error instanceof ImportKeysListLoader.NoValidKeysException) { Notify.showNotify(this, R.string.error_import_no_valid_keys, Notify.Style.ERROR); } else if (error instanceof ImportKeysListLoader.NonPgpPartException) { @@ -299,7 +361,7 @@ public class AddKeysActivity extends ActionBarActivity implements break; } - importKeys(); + importKeys(mCachedKeyData); } @Override @@ -318,35 +380,37 @@ public class AddKeysActivity extends ActionBarActivity implements } } - public ParcelableFileCache.IteratorWithSize getSelectedData() { + public ParcelableFileCache.IteratorWithSize + getSelectedData(final LongSparseArray keyData) { return new ParcelableFileCache.IteratorWithSize() { int i = 0; @Override public int getSize() { - return mCachedKeyData.size(); + return keyData.size(); } @Override public boolean hasNext() { - return (mCachedKeyData.get(i + 1) != null); + return (i < getSize()); } @Override public ParcelableKeyRing next() { - ParcelableKeyRing key = mCachedKeyData.get(i); + // get the object by the key. + ParcelableKeyRing key = keyData.valueAt(i); i++; return key; } @Override public void remove() { - mCachedKeyData.remove(i); + keyData.remove(i); } }; } - public void importKeys() { + public void importKeys(final LongSparseArray keyData) { // Message is received after importing is done in KeychainIntentService KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler( this, @@ -370,6 +434,8 @@ public class AddKeysActivity extends ActionBarActivity implements return; } + // TODO: start certify with received keys + // if (ACTION_IMPORT_KEY_FROM_KEYSERVER_AND_RETURN_RESULT.equals(getIntent().getAction()) // || ACTION_IMPORT_KEY_FROM_FILE_AND_RETURN.equals(getIntent().getAction())) { // Intent intent = new Intent(); @@ -390,45 +456,45 @@ public class AddKeysActivity extends ActionBarActivity implements }; // ImportKeysListFragment.LoaderState ls = mListFragment.getLoaderState(); -// if (importBytes != null) { - Log.d(Constants.TAG, "importKeys started"); +// if (importMethod == IMPORT_SAFE_SLINGER) { + Log.d(Constants.TAG, "importKeys started"); - // Send all information needed to service to import key in other thread - Intent intent = new Intent(this, KeychainIntentService.class); + // Send all information needed to service to import key in other thread + Intent intent = new Intent(this, KeychainIntentService.class); - intent.setAction(KeychainIntentService.ACTION_IMPORT_KEYRING); + intent.setAction(KeychainIntentService.ACTION_IMPORT_KEYRING); - // fill values for this action - Bundle data = new Bundle(); + // fill values for this action + Bundle data = new Bundle(); - // get DATA from selected key entries -// ParcelableFileCache.IteratorWithSize selectedEntries = mListFragment.getSelectedData(); + // instead of giving the entries by Intent extra, cache them into a + // file to prevent Java Binder problems on heavy imports + // read FileImportCache for more info. + try { + // We parcel this iteratively into a file - anything we can + // display here, we should be able to import. + ParcelableFileCache cache = + new ParcelableFileCache(this, "key_import.pcl"); + cache.writeCache(getSelectedData(keyData)); - // instead of giving the entries by Intent extra, cache them into a - // file to prevent Java Binder problems on heavy imports - // read FileImportCache for more info. - try { - // We parcel this iteratively into a file - anything we can - // display here, we should be able to import. - ParcelableFileCache cache = - new ParcelableFileCache(this, "key_import.pcl"); - cache.writeCache(getSelectedData()); - - intent.putExtra(KeychainIntentService.EXTRA_DATA, data); - - // Create a new Messenger for the communication back - Messenger messenger = new Messenger(saveHandler); - intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); - - // show progress dialog - saveHandler.showProgressDialog(this); - - // start service with intent - startService(intent); - } catch (IOException e) { - Log.e(Constants.TAG, "Problem writing cache file", e); - Notify.showNotify(this, "Problem writing cache file!", Notify.Style.ERROR); - } + intent.putExtra(KeychainIntentService.EXTRA_DATA, data); + + // Create a new Messenger for the communication back + Messenger messenger = new Messenger(saveHandler); + intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); + + // show progress dialog + saveHandler.showProgressDialog(this); + + // start service with intent + startService(intent); + } catch (IOException e) { + Log.e(Constants.TAG, "Problem writing cache file", e); + Notify.showNotify(this, "Problem writing cache file!", Notify.Style.ERROR); + } +// } else if () { + +// } // } else if (ls instanceof ImportKeysListFragment.CloudLoaderState) { // ImportKeysListFragment.CloudLoaderState sls = (ImportKeysListFragment.CloudLoaderState) ls; // -- cgit v1.2.3 From 9e1a0c2c0a6de82425b3e4715d700a7361a1e328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 4 Oct 2014 18:59:59 +0200 Subject: Pass imported master key ids via result parcel --- .../keychain/ui/AddKeysActivity.java | 63 +++++++++------------- 1 file changed, 24 insertions(+), 39 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java index 2dc6cc7ee..436ed050f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java @@ -74,6 +74,7 @@ public class AddKeysActivity extends ActionBarActivity implements View mActionSafeSlinger; ImageView mActionSafeSlingerIcon; View mActionQrCode; + View mActionNfc; View mActionSearchCloud; ProviderHelper mProviderHelper; @@ -103,6 +104,7 @@ public class AddKeysActivity extends ActionBarActivity implements mActionSafeSlingerIcon.setColorFilter(getResources().getColor(R.color.tertiary_text_light), PorterDuff.Mode.SRC_IN); mActionQrCode = findViewById(R.id.add_keys_qr_code); + mActionNfc = findViewById(R.id.add_keys_nfc); mActionSearchCloud = findViewById(R.id.add_keys_search_cloud); mSafeSlingerKeySpinner.setOnKeyChangedListener(new KeySpinner.OnKeyChangedListener() { @@ -126,6 +128,16 @@ public class AddKeysActivity extends ActionBarActivity implements } }); + mActionNfc.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + // show nfc help + Intent intent = new Intent(AddKeysActivity.this, HelpActivity.class); + intent.putExtra(HelpActivity.EXTRA_SELECTED_TAB, HelpActivity.TAB_NFC); + startActivityForResult(intent, 0); + } + }); + mActionSearchCloud.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -183,8 +195,7 @@ public class AddKeysActivity extends ActionBarActivity implements getSupportLoaderManager().restartLoader(LOADER_ID_BYTES, null, this); break; case ExchangeActivity.RESULT_EXCHANGE_CANCELED: - // handle canceled result - // ... + // do nothing break; } break; @@ -291,29 +302,13 @@ public class AddKeysActivity extends ActionBarActivity implements } @Override - public void onLoadFinished(Loader>> loader, AsyncTaskResultWrapper> data) { - + public void onLoadFinished(Loader>> loader, + AsyncTaskResultWrapper> data) { Log.d(Constants.TAG, "data: " + data.getResult()); - // swap in the real data! -// mAdapter.setData(data.getResult()); -// mAdapter.notifyDataSetChanged(); -// -// setListAdapter(mAdapter); -// -// // The list should now be shown. -// if (isResumed()) { -// setListShown(true); -// } else { -// setListShownNoAnimation(true); -// } - Exception error = data.getError(); - // free old cached key data -// mCachedKeyData = null; - LongSparseArray mCachedKeyData = null; - + LongSparseArray cachedKeyData = null; // TODO: Use parcels!!!!!!!!!!!!!!! switch (loader.getId()) { @@ -321,8 +316,8 @@ public class AddKeysActivity extends ActionBarActivity implements if (error == null) { // No error - mCachedKeyData = ((ImportKeysListLoader) loader).getParcelableRings(); - Log.d(Constants.TAG, "no error!:" + mCachedKeyData); + cachedKeyData = ((ImportKeysListLoader) loader).getParcelableRings(); + Log.d(Constants.TAG, "no error!:" + cachedKeyData); } else if (error instanceof ImportKeysListLoader.NoValidKeysException) { Notify.showNotify(this, R.string.error_import_no_valid_keys, Notify.Style.ERROR); @@ -361,7 +356,7 @@ public class AddKeysActivity extends ActionBarActivity implements break; } - importKeys(mCachedKeyData); + importKeys(cachedKeyData); } @Override @@ -434,21 +429,11 @@ public class AddKeysActivity extends ActionBarActivity implements return; } - // TODO: start certify with received keys - -// if (ACTION_IMPORT_KEY_FROM_KEYSERVER_AND_RETURN_RESULT.equals(getIntent().getAction()) -// || ACTION_IMPORT_KEY_FROM_FILE_AND_RETURN.equals(getIntent().getAction())) { -// Intent intent = new Intent(); -// intent.putExtra(ImportKeyResult.EXTRA_RESULT, result); -// ImportKeysActivity.this.setResult(RESULT_OK, intent); -// ImportKeysActivity.this.finish(); -// return; -// } -// if (ACTION_IMPORT_KEY_FROM_KEYSERVER_AND_RETURN_TO_SERVICE.equals(getIntent().getAction())) { -// ImportKeysActivity.this.setResult(RESULT_OK, mPendingIntentData); -// ImportKeysActivity.this.finish(); -// return; -// } + finish(); + Intent certifyIntent = new Intent(); // TODO: certify + certifyIntent.putExtra(ImportKeyResult.EXTRA_RESULT, result); + certifyIntent.putExtra("key ids", result.getImportedMasterKeyIds()); // TODO: extra + startActivity(certifyIntent); result.createNotify(AddKeysActivity.this).show(); } -- cgit v1.2.3 From 0599f0dd4e83e20ddf234d1c1ef1f897b8305b02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 4 Oct 2014 21:09:32 +0200 Subject: Workings on new parcel for key downloads --- .../keychain/ui/AddKeysActivity.java | 72 +++++++++++++--------- 1 file changed, 43 insertions(+), 29 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java index 436ed050f..8dd5d3c13 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java @@ -43,10 +43,10 @@ import org.sufficientlysecure.keychain.provider.KeychainContract; import org.sufficientlysecure.keychain.provider.ProviderHelper; import org.sufficientlysecure.keychain.service.KeychainIntentService; import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler; +import org.sufficientlysecure.keychain.service.results.GetKeyResult; import org.sufficientlysecure.keychain.service.results.ImportKeyResult; import org.sufficientlysecure.keychain.service.results.OperationResult; import org.sufficientlysecure.keychain.ui.adapter.AsyncTaskResultWrapper; -import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListCloudLoader; import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListLoader; import org.sufficientlysecure.keychain.ui.util.Notify; import org.sufficientlysecure.keychain.ui.widget.ExchangeKeySpinner; @@ -61,7 +61,6 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; -import java.util.Iterator; import java.util.Locale; import edu.cmu.cylab.starslinger.exchange.ExchangeActivity; @@ -306,7 +305,9 @@ public class AddKeysActivity extends ActionBarActivity implements AsyncTaskResultWrapper> data) { Log.d(Constants.TAG, "data: " + data.getResult()); - Exception error = data.getError(); +// Exception error = data.getError(); + + GetKeyResult getKeyResult = (GetKeyResult) data.getOperationResult(); LongSparseArray cachedKeyData = null; @@ -314,42 +315,55 @@ public class AddKeysActivity extends ActionBarActivity implements switch (loader.getId()) { case LOADER_ID_BYTES: - if (error == null) { + if (getKeyResult.success()) { // No error cachedKeyData = ((ImportKeysListLoader) loader).getParcelableRings(); - Log.d(Constants.TAG, "no error!:" + cachedKeyData); - - } else if (error instanceof ImportKeysListLoader.NoValidKeysException) { - Notify.showNotify(this, R.string.error_import_no_valid_keys, Notify.Style.ERROR); - } else if (error instanceof ImportKeysListLoader.NonPgpPartException) { - Notify.showNotify(this, - ((ImportKeysListLoader.NonPgpPartException) error).getCount() + " " + getResources(). - getQuantityString(R.plurals.error_import_non_pgp_part, - ((ImportKeysListLoader.NonPgpPartException) error).getCount()), - Notify.Style.OK - ); } else { - Notify.showNotify(this, R.string.error_generic_report_bug, Notify.Style.ERROR); + getKeyResult.createNotify(this).show(); } + +// if (error == null) { +// // No error +// cachedKeyData = ((ImportKeysListLoader) loader).getParcelableRings(); +// Log.d(Constants.TAG, "no error!:" + cachedKeyData); +// +// } else if (error instanceof ImportKeysListLoader.NoValidKeysException) { +// Notify.showNotify(this, R.string.error_import_no_valid_keys, Notify.Style.ERROR); +// } else if (error instanceof ImportKeysListLoader.NonPgpPartException) { +// Notify.showNotify(this, +// ((ImportKeysListLoader.NonPgpPartException) error).getCount() + " " + getResources(). +// getQuantityString(R.plurals.error_import_non_pgp_part, +// ((ImportKeysListLoader.NonPgpPartException) error).getCount()), +// Notify.Style.OK +// ); +// } else { +// Notify.showNotify(this, R.string.error_generic_report_bug, Notify.Style.ERROR); +// } break; case LOADER_ID_CLOUD: - if (error == null) { + if (getKeyResult.success()) { // No error - } else if (error instanceof Keyserver.QueryTooShortException) { - Notify.showNotify(this, R.string.error_query_too_short, Notify.Style.ERROR); - } else if (error instanceof Keyserver.TooManyResponsesException) { - Notify.showNotify(this, R.string.error_too_many_responses, Notify.Style.ERROR); - } else if (error instanceof Keyserver.QueryTooShortOrTooManyResponsesException) { - Notify.showNotify(this, R.string.error_too_short_or_too_many_responses, Notify.Style.ERROR); - } else if (error instanceof Keyserver.QueryFailedException) { - Log.d(Constants.TAG, - "Unrecoverable keyserver query error: " + error.getLocalizedMessage()); - String alert = this.getString(R.string.error_searching_keys); - alert = alert + " (" + error.getLocalizedMessage() + ")"; - Notify.showNotify(this, alert, Notify.Style.ERROR); + } else { + getKeyResult.createNotify(this).show(); } + +// if (error == null) { +// // No error +// } else if (error instanceof Keyserver.QueryTooShortException) { +// Notify.showNotify(this, R.string.error_query_too_short, Notify.Style.ERROR); +// } else if (error instanceof Keyserver.TooManyResponsesException) { +// Notify.showNotify(this, R.string.error_too_many_responses, Notify.Style.ERROR); +// } else if (error instanceof Keyserver.QueryTooShortOrTooManyResponsesException) { +// Notify.showNotify(this, R.string.error_too_short_or_too_many_responses, Notify.Style.ERROR); +// } else if (error instanceof Keyserver.QueryFailedException) { +// Log.d(Constants.TAG, +// "Unrecoverable keyserver query error: " + error.getLocalizedMessage()); +// String alert = this.getString(R.string.error_searching_keys); +// alert = alert + " (" + error.getLocalizedMessage() + ")"; +// Notify.showNotify(this, alert, Notify.Style.ERROR); +// } break; default: -- cgit v1.2.3 From e75e3d371dd1e3c4da285aec4ab0ef505b795a44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 4 Oct 2014 21:40:28 +0200 Subject: qr code download, cleanup --- .../keychain/ui/AddKeysActivity.java | 178 +++++++-------------- 1 file changed, 62 insertions(+), 116 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java index 8dd5d3c13..eba55d14c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java @@ -36,6 +36,7 @@ import com.google.zxing.integration.android.IntentResult; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.keyimport.ImportKeysList; import org.sufficientlysecure.keychain.keyimport.ImportKeysListEntry; import org.sufficientlysecure.keychain.keyimport.Keyserver; import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing; @@ -84,9 +85,7 @@ public class AddKeysActivity extends ActionBarActivity implements private static final int REQUEST_CODE_SAFE_SLINGER = 1; - private static final int LOADER_ID_BYTES = 0; - private static final int LOADER_ID_CLOUD = 1; @Override public void onCreate(Bundle savedInstanceState) { @@ -209,7 +208,7 @@ public class AddKeysActivity extends ActionBarActivity implements // look if it's fingerprint only if (scannedContent.toLowerCase(Locale.ENGLISH).startsWith(Constants.FINGERPRINT_SCHEME)) { - loadFromFingerprintUri(Uri.parse(scanResult.getContents())); + importKeys(null, getFingerprintFromUri(Uri.parse(scanResult.getContents()))); return; } @@ -231,29 +230,6 @@ public class AddKeysActivity extends ActionBarActivity implements } } - - public void loadFromFingerprintUri(Uri dataUri) { - String query = "0x" + getFingerprintFromUri(dataUri); - - // setCurrentItem does not work directly after onResume (from qr code scanner) - // see http://stackoverflow.com/q/19316729 - // so, reset adapter completely! -// if (mViewPager.getAdapter() != null) -// mViewPager.setAdapter(null); -// mViewPager.setAdapter(mTabsAdapter); -// mViewPager.setCurrentItem(TAB_CLOUD); - -// ImportKeysCloudFragment f = (ImportKeysCloudFragment) -// getActiveFragment(mViewPager, TAB_CLOUD); - - // search config - Preferences prefs = Preferences.getPreferences(this); - Preferences.CloudSearchPrefs cloudPrefs = new Preferences.CloudSearchPrefs(true, true, prefs.getPreferredKeyserver()); - - // search directly -// loadCallback(new ImportKeysListFragment.CloudLoaderState(query, cloudPrefs)); - } - private String getFingerprintFromUri(Uri dataUri) { String fingerprint = dataUri.toString().split(":")[1].toLowerCase(Locale.ENGLISH); Log.d(Constants.TAG, "fingerprint: " + fingerprint); @@ -290,10 +266,6 @@ public class AddKeysActivity extends ActionBarActivity implements InputData inputData = new InputData(new ByteArrayInputStream(mImportBytes), mImportBytes.length); return new ImportKeysListLoader(this, inputData); } - case LOADER_ID_CLOUD: { -// ImportKeysListFragment.CloudLoaderState ls = (ImportKeysListFragment.CloudLoaderState) mLoaderState; -// return new ImportKeysListCloudLoader(this, ls.mServerQuery, ls.mCloudPrefs); - } default: return null; @@ -305,8 +277,6 @@ public class AddKeysActivity extends ActionBarActivity implements AsyncTaskResultWrapper> data) { Log.d(Constants.TAG, "data: " + data.getResult()); -// Exception error = data.getError(); - GetKeyResult getKeyResult = (GetKeyResult) data.getOperationResult(); LongSparseArray cachedKeyData = null; @@ -341,36 +311,12 @@ public class AddKeysActivity extends ActionBarActivity implements // } break; - case LOADER_ID_CLOUD: - - if (getKeyResult.success()) { - // No error - } else { - getKeyResult.createNotify(this).show(); - } - -// if (error == null) { -// // No error -// } else if (error instanceof Keyserver.QueryTooShortException) { -// Notify.showNotify(this, R.string.error_query_too_short, Notify.Style.ERROR); -// } else if (error instanceof Keyserver.TooManyResponsesException) { -// Notify.showNotify(this, R.string.error_too_many_responses, Notify.Style.ERROR); -// } else if (error instanceof Keyserver.QueryTooShortOrTooManyResponsesException) { -// Notify.showNotify(this, R.string.error_too_short_or_too_many_responses, Notify.Style.ERROR); -// } else if (error instanceof Keyserver.QueryFailedException) { -// Log.d(Constants.TAG, -// "Unrecoverable keyserver query error: " + error.getLocalizedMessage()); -// String alert = this.getString(R.string.error_searching_keys); -// alert = alert + " (" + error.getLocalizedMessage() + ")"; -// Notify.showNotify(this, alert, Notify.Style.ERROR); -// } - break; default: break; } - importKeys(cachedKeyData); + importKeys(cachedKeyData, null); } @Override @@ -378,10 +324,6 @@ public class AddKeysActivity extends ActionBarActivity implements switch (loader.getId()) { case LOADER_ID_BYTES: // Clear the data in the adapter. -// mAdapter.clear(); - break; - case LOADER_ID_CLOUD: - // Clear the data in the adapter. // mAdapter.clear(); break; default: @@ -419,7 +361,7 @@ public class AddKeysActivity extends ActionBarActivity implements }; } - public void importKeys(final LongSparseArray keyData) { + public void importKeys(final LongSparseArray keyData, String fingerprint) { // Message is received after importing is done in KeychainIntentService KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler( this, @@ -454,27 +396,66 @@ public class AddKeysActivity extends ActionBarActivity implements } }; -// ImportKeysListFragment.LoaderState ls = mListFragment.getLoaderState(); -// if (importMethod == IMPORT_SAFE_SLINGER) { - Log.d(Constants.TAG, "importKeys started"); + if (keyData != null) { + Log.d(Constants.TAG, "importKeys started"); + + // Send all information needed to service to import key in other thread + Intent intent = new Intent(this, KeychainIntentService.class); + + intent.setAction(KeychainIntentService.ACTION_IMPORT_KEYRING); + + // fill values for this action + Bundle data = new Bundle(); + + // instead of giving the entries by Intent extra, cache them into a + // file to prevent Java Binder problems on heavy imports + // read FileImportCache for more info. + try { + // We parcel this iteratively into a file - anything we can + // display here, we should be able to import. + ParcelableFileCache cache = + new ParcelableFileCache(this, "key_import.pcl"); + cache.writeCache(getSelectedData(keyData)); + + intent.putExtra(KeychainIntentService.EXTRA_DATA, data); + + // Create a new Messenger for the communication back + Messenger messenger = new Messenger(saveHandler); + intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); + + // show progress dialog + saveHandler.showProgressDialog(this); + + // start service with intent + startService(intent); + } catch (IOException e) { + Log.e(Constants.TAG, "Problem writing cache file", e); + Notify.showNotify(this, "Problem writing cache file!", Notify.Style.ERROR); + } + } else if (fingerprint != null) { + + // search config + Preferences prefs = Preferences.getPreferences(this); + Preferences.CloudSearchPrefs cloudPrefs = new Preferences.CloudSearchPrefs(true, true, prefs.getPreferredKeyserver()); + + // Send all information needed to service to query keys in other thread + Intent intent = new Intent(this, KeychainIntentService.class); + + intent.setAction(KeychainIntentService.ACTION_DOWNLOAD_AND_IMPORT_KEYS); - // Send all information needed to service to import key in other thread - Intent intent = new Intent(this, KeychainIntentService.class); + // fill values for this action + Bundle data = new Bundle(); - intent.setAction(KeychainIntentService.ACTION_IMPORT_KEYRING); + data.putString(KeychainIntentService.DOWNLOAD_KEY_SERVER, cloudPrefs.keyserver); - // fill values for this action - Bundle data = new Bundle(); + final ImportKeysListEntry keyEntry = new ImportKeysListEntry(); + keyEntry.setFingerprintHex(fingerprint); + keyEntry.setBitStrength(1337); + keyEntry.addOrigin(cloudPrefs.keyserver); + ArrayList selectedEntries = new ArrayList(); + selectedEntries.add(keyEntry); - // instead of giving the entries by Intent extra, cache them into a - // file to prevent Java Binder problems on heavy imports - // read FileImportCache for more info. - try { - // We parcel this iteratively into a file - anything we can - // display here, we should be able to import. - ParcelableFileCache cache = - new ParcelableFileCache(this, "key_import.pcl"); - cache.writeCache(getSelectedData(keyData)); + data.putParcelableArrayList(KeychainIntentService.DOWNLOAD_KEY_LIST, selectedEntries); intent.putExtra(KeychainIntentService.EXTRA_DATA, data); @@ -487,43 +468,8 @@ public class AddKeysActivity extends ActionBarActivity implements // start service with intent startService(intent); - } catch (IOException e) { - Log.e(Constants.TAG, "Problem writing cache file", e); - Notify.showNotify(this, "Problem writing cache file!", Notify.Style.ERROR); + } else { + Notify.showNotify(this, R.string.error_nothing_import, Notify.Style.ERROR); } -// } else if () { - -// } -// } else if (ls instanceof ImportKeysListFragment.CloudLoaderState) { -// ImportKeysListFragment.CloudLoaderState sls = (ImportKeysListFragment.CloudLoaderState) ls; -// -// // Send all information needed to service to query keys in other thread -// Intent intent = new Intent(this, KeychainIntentService.class); -// -// intent.setAction(KeychainIntentService.ACTION_DOWNLOAD_AND_IMPORT_KEYS); -// -// // fill values for this action -// Bundle data = new Bundle(); -// -// data.putString(KeychainIntentService.DOWNLOAD_KEY_SERVER, sls.mCloudPrefs.keyserver); -// -// // get selected key entries -// ArrayList selectedEntries = mListFragment.getSelectedEntries(); -// data.putParcelableArrayList(KeychainIntentService.DOWNLOAD_KEY_LIST, selectedEntries); -// -// intent.putExtra(KeychainIntentService.EXTRA_DATA, data); -// -// // Create a new Messenger for the communication back -// Messenger messenger = new Messenger(saveHandler); -// intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); -// -// // show progress dialog -// saveHandler.showProgressDialog(this); -// -// // start service with intent -// startService(intent); -// } else { -// Notify.showNotify(this, R.string.error_nothing_import, Notify.Style.ERROR); -// } } } -- cgit v1.2.3 From fbf993e6211d03308d62a3edf270f9d5a8783fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 4 Oct 2014 23:16:17 +0200 Subject: add divider --- .../main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java index eba55d14c..479a874d9 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/AddKeysActivity.java @@ -36,9 +36,7 @@ import com.google.zxing.integration.android.IntentResult; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.keyimport.ImportKeysList; import org.sufficientlysecure.keychain.keyimport.ImportKeysListEntry; -import org.sufficientlysecure.keychain.keyimport.Keyserver; import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing; import org.sufficientlysecure.keychain.provider.KeychainContract; import org.sufficientlysecure.keychain.provider.ProviderHelper; @@ -93,7 +91,7 @@ public class AddKeysActivity extends ActionBarActivity implements mProviderHelper = new ProviderHelper(this); - setContentView(R.layout.add_key_activity); + setContentView(R.layout.add_keys_activity); mSafeSlingerKeySpinner = (ExchangeKeySpinner) findViewById(R.id.add_keys_safeslinger_key_spinner); mActionSafeSlinger = findViewById(R.id.add_keys_safeslinger); -- cgit v1.2.3