From 54e04f496ea27800ad5fa03023d102f08b33ee67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 27 Feb 2015 22:26:11 +0100 Subject: Better qr code resizing --- OpenKeychain/src/main/AndroidManifest.xml | 2 +- .../src/main/res/layout-land/qr_code_activity.xml | 39 ++++++++++++++++++++++ .../src/main/res/layout/qr_code_activity.xml | 4 ++- .../src/main/res/layout/view_key_activity.xml | 1 + .../res/layout/view_key_adv_share_fragment.xml | 5 +-- .../src/main/res/layout/view_key_fragment.xml | 2 +- 6 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 OpenKeychain/src/main/res/layout-land/qr_code_activity.xml (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index 20e618320..07935e4d3 100644 --- a/OpenKeychain/src/main/AndroidManifest.xml +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -106,9 +106,9 @@ android:name=".ui.EditKeyActivity" android:configChanges="orientation|screenSize|keyboardHidden|keyboard" android:label="@string/title_edit_key" /> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/qr_code_activity.xml b/OpenKeychain/src/main/res/layout/qr_code_activity.xml index 4ce097f40..5709bf0ff 100644 --- a/OpenKeychain/src/main/res/layout/qr_code_activity.xml +++ b/OpenKeychain/src/main/res/layout/qr_code_activity.xml @@ -12,11 +12,12 @@ android:layout_below="@id/toolbar_include" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="horizontal"> diff --git a/OpenKeychain/src/main/res/layout/view_key_activity.xml b/OpenKeychain/src/main/res/layout/view_key_activity.xml index e2d153e0d..1a45370a5 100644 --- a/OpenKeychain/src/main/res/layout/view_key_activity.xml +++ b/OpenKeychain/src/main/res/layout/view_key_activity.xml @@ -134,6 +134,7 @@ android:clickable="true" android:foreground="?android:attr/selectableItemBackground" card_view:cardBackgroundColor="@android:color/white" + card_view:cardElevation="2dp" card_view:cardUseCompatPadding="true" card_view:cardCornerRadius="4dp"> diff --git a/OpenKeychain/src/main/res/layout/view_key_adv_share_fragment.xml b/OpenKeychain/src/main/res/layout/view_key_adv_share_fragment.xml index 7b382dca5..a6224a8d1 100644 --- a/OpenKeychain/src/main/res/layout/view_key_adv_share_fragment.xml +++ b/OpenKeychain/src/main/res/layout/view_key_adv_share_fragment.xml @@ -68,11 +68,11 @@ android:layout_height="1dip" android:background="?android:attr/listDivider" /> - diff --git a/OpenKeychain/src/main/res/layout/view_key_fragment.xml b/OpenKeychain/src/main/res/layout/view_key_fragment.xml index 8e1bad3a8..bba412f99 100644 --- a/OpenKeychain/src/main/res/layout/view_key_fragment.xml +++ b/OpenKeychain/src/main/res/layout/view_key_fragment.xml @@ -18,7 +18,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" card_view:cardBackgroundColor="@android:color/white" - card_view:cardElevation="2sp" + card_view:cardElevation="2dp" card_view:cardUseCompatPadding="true" card_view:cardCornerRadius="4dp"> -- cgit v1.2.3 From fe31883f661d55c20903cf1b249dc46395b57c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 27 Feb 2015 22:40:52 +0100 Subject: Keybase header text --- .../keychain/ui/ViewKeyTrustFragment.java | 4 +- .../res/layout/view_key_adv_keybase_fragment.xml | 126 +++++++++++++++++++++ .../main/res/layout/view_key_adv_keybase_proof.xml | 19 ++++ .../src/main/res/layout/view_key_keybase_proof.xml | 19 ---- .../main/res/layout/view_key_trust_fragment.xml | 105 ----------------- OpenKeychain/src/main/res/values/strings.xml | 1 + 6 files changed, 148 insertions(+), 126 deletions(-) create mode 100644 OpenKeychain/src/main/res/layout/view_key_adv_keybase_fragment.xml create mode 100644 OpenKeychain/src/main/res/layout/view_key_adv_keybase_proof.xml delete mode 100644 OpenKeychain/src/main/res/layout/view_key_keybase_proof.xml delete mode 100644 OpenKeychain/src/main/res/layout/view_key_trust_fragment.xml (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyTrustFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyTrustFragment.java index 5483d16b8..25edc7a02 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyTrustFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyTrustFragment.java @@ -80,7 +80,7 @@ public class ViewKeyTrustFragment extends LoaderFragment implements @Override public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) { View root = super.onCreateView(inflater, superContainer, savedInstanceState); - View view = inflater.inflate(R.layout.view_key_trust_fragment, getContainer()); + View view = inflater.inflate(R.layout.view_key_adv_keybase_fragment, getContainer()); mInflater = inflater; mTrustReadout = (TextView) view.findViewById(R.id.view_key_trust_readout); @@ -299,7 +299,7 @@ public class ViewKeyTrustFragment extends LoaderFragment implements int rowNumber = 1; for (CharSequence s : result.mProofs) { - TableRow row = (TableRow) mInflater.inflate(R.layout.view_key_keybase_proof, null); + TableRow row = (TableRow) mInflater.inflate(R.layout.view_key_adv_keybase_proof, null); TextView number = (TextView) row.findViewById(R.id.proof_number); TextView text = (TextView) row.findViewById(R.id.proof_text); number.setText(Integer.toString(rowNumber++) + ". "); diff --git a/OpenKeychain/src/main/res/layout/view_key_adv_keybase_fragment.xml b/OpenKeychain/src/main/res/layout/view_key_adv_keybase_fragment.xml new file mode 100644 index 000000000..a29c9fbee --- /dev/null +++ b/OpenKeychain/src/main/res/layout/view_key_adv_keybase_fragment.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/view_key_adv_keybase_proof.xml b/OpenKeychain/src/main/res/layout/view_key_adv_keybase_proof.xml new file mode 100644 index 000000000..0ffd151c1 --- /dev/null +++ b/OpenKeychain/src/main/res/layout/view_key_adv_keybase_proof.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/OpenKeychain/src/main/res/layout/view_key_keybase_proof.xml b/OpenKeychain/src/main/res/layout/view_key_keybase_proof.xml deleted file mode 100644 index 0ffd151c1..000000000 --- a/OpenKeychain/src/main/res/layout/view_key_keybase_proof.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - diff --git a/OpenKeychain/src/main/res/layout/view_key_trust_fragment.xml b/OpenKeychain/src/main/res/layout/view_key_trust_fragment.xml deleted file mode 100644 index f97401271..000000000 --- a/OpenKeychain/src/main/res/layout/view_key_trust_fragment.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index f43b4e623..bf83150b3 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -564,6 +564,7 @@ "No evidence from the cloud on this key’s trustworthiness." "Start search" "Keybase.io offers “proofs” which assert that the owner of this key: " + "Note: Keybase.io proofs are an experimental feature of OpenKeychain. We encourage you to scan QR Codes or exchange keys via NFC in addition to verifying them." "Posts to Twitter as" -- cgit v1.2.3 From 80c159056d8efc4dd82c36a2c168511d34d6e8b4 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 27 Feb 2015 22:46:40 +0100 Subject: show refresh key progress inline --- .../service/KeychainIntentServiceHandler.java | 7 +- .../keychain/ui/ViewKeyActivity.java | 132 +++++++++++++++++++-- OpenKeychain/src/main/res/anim/rotate.xml | 8 ++ OpenKeychain/src/main/res/anim/rotate_spin.xml | 8 ++ .../src/main/res/layout/indeterminate_progress.xml | 9 ++ 5 files changed, 156 insertions(+), 8 deletions(-) create mode 100644 OpenKeychain/src/main/res/anim/rotate.xml create mode 100644 OpenKeychain/src/main/res/anim/rotate_spin.xml create mode 100644 OpenKeychain/src/main/res/layout/indeterminate_progress.xml (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java index ceb0a2d2b..635fe86f1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java @@ -78,6 +78,10 @@ public class KeychainIntentServiceHandler extends Handler { } public void showProgressDialog(FragmentActivity activity) { + if (mProgressDialogFragment == null) { + return; + } + // TODO: This is a hack!, see // http://stackoverflow.com/questions/10114324/show-dialogfragment-from-onactivityresult final FragmentManager manager = activity.getSupportFragmentManager(); @@ -94,7 +98,8 @@ public class KeychainIntentServiceHandler extends Handler { Bundle data = message.getData(); if (mProgressDialogFragment == null) { - Log.e(Constants.TAG, "Progress has not been updated because mProgressDialogFragment was null!"); + // Log.e(Constants.TAG, + // "Progress has not been updated because mProgressDialogFragment was null!"); return; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index afb742079..f6c56d965 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -33,6 +33,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.os.Messenger; import android.provider.ContactsContract; import android.provider.Settings; import android.support.v4.app.ActivityCompat; @@ -44,6 +45,9 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.animation.AlphaAnimation; +import android.view.animation.Animation; +import android.view.animation.Animation.AnimationListener; +import android.view.animation.AnimationUtils; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.RelativeLayout; @@ -54,11 +58,14 @@ import com.getbase.floatingactionbutton.FloatingActionButton; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing; +import org.sufficientlysecure.keychain.operations.results.ImportKeyResult; import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.pgp.KeyRing; import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException; 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.ui.util.FormattingUtils; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; @@ -68,7 +75,9 @@ import org.sufficientlysecure.keychain.ui.widget.AspectRatioImageView; import org.sufficientlysecure.keychain.util.ContactHelper; import org.sufficientlysecure.keychain.util.ExportHelper; import org.sufficientlysecure.keychain.util.Log; +import org.sufficientlysecure.keychain.util.Preferences; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -105,6 +114,10 @@ public class ViewKeyActivity extends BaseActivity implements private boolean mIsSecret = false; private boolean mHasEncrypt = false; private boolean mIsVerified = false; + private MenuItem mRefreshItem; + private boolean mIsRefreshing; + private Animation mRotate, mRotateSpin; + private View mRefresh; @Override protected void onCreate(Bundle savedInstanceState) { @@ -128,6 +141,51 @@ public class ViewKeyActivity extends BaseActivity implements mQrCode = (ImageView) findViewById(R.id.view_key_qr_code); mQrCodeLayout = (CardView) findViewById(R.id.view_key_qr_code_layout); + mRotateSpin = AnimationUtils.loadAnimation(this, R.anim.rotate_spin); + mRotateSpin.setAnimationListener(new AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + + } + + @Override + public void onAnimationEnd(Animation animation) { + mRefreshItem.getActionView().clearAnimation(); + mRefreshItem.setActionView(null); + mRefreshItem.setEnabled(true); + + // this is a deferred call + supportInvalidateOptionsMenu(); + } + + @Override + public void onAnimationRepeat(Animation animation) { + + } + }); + mRotate = AnimationUtils.loadAnimation(this, R.anim.rotate); + mRotate.setRepeatCount(Animation.INFINITE); + mRotate.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + + } + + @Override + public void onAnimationEnd(Animation animation) { + + } + + @Override + public void onAnimationRepeat(Animation animation) { + if (!mIsRefreshing) { + mRefreshItem.getActionView().clearAnimation(); + mRefreshItem.getActionView().startAnimation(mRotateSpin); + } + } + }); + mRefresh = getLayoutInflater().inflate(R.layout.indeterminate_progress, null); + mDataUri = getIntent().getData(); if (mDataUri == null) { Log.e(Constants.TAG, "Data missing. Should be uri of key!"); @@ -222,7 +280,7 @@ public class ViewKeyActivity extends BaseActivity implements public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.key_view, menu); - + mRefreshItem = menu.findItem(R.id.menu_key_view_refresh); return true; } @@ -414,16 +472,72 @@ public class ViewKeyActivity extends BaseActivity implements private void updateFromKeyserver(Uri dataUri, ProviderHelper providerHelper) throws ProviderHelper.NotFoundException { + + mIsRefreshing = true; + mRefreshItem.setEnabled(false); + mRefreshItem.setActionView(mRefresh); + mRefresh.startAnimation(mRotate); + byte[] blob = (byte[]) providerHelper.getGenericData( KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri), KeychainContract.Keys.FINGERPRINT, ProviderHelper.FIELD_TYPE_BLOB); String fingerprint = KeyFormattingUtils.convertFingerprintToHex(blob); - Intent queryIntent = new Intent(this, ImportKeysActivity.class); - queryIntent.setAction(ImportKeysActivity.ACTION_IMPORT_KEY_FROM_KEYSERVER_AND_RETURN_RESULT); - queryIntent.putExtra(ImportKeysActivity.EXTRA_FINGERPRINT, fingerprint); + ParcelableKeyRing keyEntry = new ParcelableKeyRing(fingerprint, null, null); + ArrayList entries = new ArrayList<>(); + entries.add(keyEntry); + + // Message is received after importing is done in KeychainIntentService + KeychainIntentServiceHandler serviceHandler = new KeychainIntentServiceHandler(this) { + public void handleMessage(Message message) { + // handle messages by standard KeychainIntentServiceHandler first + super.handleMessage(message); + + if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) { + // get returned data bundle + Bundle returnData = message.getData(); + + mIsRefreshing = false; + + if (returnData == null) { + finish(); + return; + } + final ImportKeyResult result = + returnData.getParcelable(OperationResult.EXTRA_RESULT); + result.createNotify(ViewKeyActivity.this).show(); + } + } + }; + + // fill values for this action + Bundle data = new Bundle(); + + // search config + { + Preferences prefs = Preferences.getPreferences(this); + Preferences.CloudSearchPrefs cloudPrefs = + new Preferences.CloudSearchPrefs(true, true, prefs.getPreferredKeyserver()); + data.putString(KeychainIntentService.IMPORT_KEY_SERVER, cloudPrefs.keyserver); + } + + data.putParcelableArrayList(KeychainIntentService.IMPORT_KEY_LIST, entries); + + // Send all information needed to service to query keys in other thread + Intent intent = new Intent(this, KeychainIntentService.class); + intent.setAction(KeychainIntentService.ACTION_IMPORT_KEYRING); + intent.putExtra(KeychainIntentService.EXTRA_DATA, data); + + // Create a new Messenger for the communication back + Messenger messenger = new Messenger(serviceHandler); + intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); + + // show progress dialog + serviceHandler.showProgressDialog(this); + + // start service with intent + startService(intent); - startActivityForResult(queryIntent, 0); } private void editKey(Uri dataUri) { @@ -634,8 +748,12 @@ public class ViewKeyActivity extends BaseActivity implements && new Date(data.getLong(INDEX_EXPIRY) * 1000).before(new Date()); mIsVerified = data.getInt(INDEX_VERIFIED) > 0; - // re-create options menu based on mIsSecret, mIsVerified - supportInvalidateOptionsMenu(); + // if the refresh animation isn't playing + if (!mRotate.hasStarted() && !mRotateSpin.hasStarted()) { + // re-create options menu based on mIsSecret, mIsVerified + supportInvalidateOptionsMenu(); + // this is done at the end of the animation otherwise + } AsyncTask photoTask = new AsyncTask() { diff --git a/OpenKeychain/src/main/res/anim/rotate.xml b/OpenKeychain/src/main/res/anim/rotate.xml new file mode 100644 index 000000000..3856fa081 --- /dev/null +++ b/OpenKeychain/src/main/res/anim/rotate.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/anim/rotate_spin.xml b/OpenKeychain/src/main/res/anim/rotate_spin.xml new file mode 100644 index 000000000..e6ddec869 --- /dev/null +++ b/OpenKeychain/src/main/res/anim/rotate_spin.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/indeterminate_progress.xml b/OpenKeychain/src/main/res/layout/indeterminate_progress.xml new file mode 100644 index 000000000..8515e83a4 --- /dev/null +++ b/OpenKeychain/src/main/res/layout/indeterminate_progress.xml @@ -0,0 +1,9 @@ + + + -- cgit v1.2.3 From fd2f858b12974629c612d366017669f640bf3254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 27 Feb 2015 22:47:39 +0100 Subject: Fix status images in user id adapter --- .../sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java index ad7c9e430..8c0ab9165 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java @@ -72,19 +72,19 @@ public class UserIdsAdapter extends CursorAdapter implements AdapterView.OnItemC public UserIdsAdapter(Context context, Cursor c, int flags, boolean showCheckBoxes, SaveKeyringParcel saveKeyringParcel) { - this(context, c, flags, showCheckBoxes, false, saveKeyringParcel); + this(context, c, flags, showCheckBoxes, true, saveKeyringParcel); } public UserIdsAdapter(Context context, Cursor c, int flags, boolean showCheckBoxes) { - this(context, c, flags, showCheckBoxes, false, null); + this(context, c, flags, showCheckBoxes, true, null); } public UserIdsAdapter(Context context, Cursor c, int flags, SaveKeyringParcel saveKeyringParcel) { - this(context, c, flags, false, false, saveKeyringParcel); + this(context, c, flags, false, true, saveKeyringParcel); } public UserIdsAdapter(Context context, Cursor c, int flags) { - this(context, c, flags, false, false, null); + this(context, c, flags, false, true, null); } @Override -- cgit v1.2.3 From 863f4e6ac18edbeb0dde5c79b5a4808f7915dd0c Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 27 Feb 2015 23:09:17 +0100 Subject: hand through result in CertifyFingerprintActivity --- .../sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java index 777288e69..c75f6d838 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java @@ -83,8 +83,8 @@ public class CertifyFingerprintActivity extends BaseActivity { protected void onActivityResult(int requestCode, int resultCode, Intent data) { // if a result has been returned, display a notify if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) { - OperationResult result = data.getParcelableExtra(OperationResult.EXTRA_RESULT); - result.createNotify(this).show(); + setResult(RESULT_OK, data); + finish(); } else { super.onActivityResult(requestCode, resultCode, data); } -- cgit v1.2.3 From aec9bdfc1e30c590a22d4860b9e955c5cb570a3a Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 27 Feb 2015 23:09:35 +0100 Subject: transition status color in key view --- .../keychain/ui/ViewKeyActivity.java | 33 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index f6c56d965..d14455511 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -18,11 +18,14 @@ package org.sufficientlysecure.keychain.ui; +import android.animation.ArgbEvaluator; +import android.animation.ObjectAnimator; import android.annotation.TargetApi; import android.app.ActivityOptions; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; +import android.graphics.Color; import android.net.Uri; import android.nfc.NdefMessage; import android.nfc.NdefRecord; @@ -717,6 +720,8 @@ public class ViewKeyActivity extends BaseActivity implements } } + int mPreviousColor = 0; + @Override public void onLoadFinished(Loader loader, Cursor data) { /* TODO better error handling? May cause problems when a key is deleted, @@ -861,9 +866,31 @@ public class ViewKeyActivity extends BaseActivity implements mFab.setVisibility(View.VISIBLE); } } - mToolbar.setBackgroundColor(color); - mStatusBar.setBackgroundColor(color); - mBigToolbar.setBackgroundColor(color); + + if (mPreviousColor == 0 || mPreviousColor == color) { + mToolbar.setBackgroundColor(color); + mStatusBar.setBackgroundColor(color); + mBigToolbar.setBackgroundColor(color); + mPreviousColor = color; + } else { + ObjectAnimator colorFade1 = + ObjectAnimator.ofObject(mToolbar, "backgroundColor", + new ArgbEvaluator(), mPreviousColor, color); + ObjectAnimator colorFade2 = + ObjectAnimator.ofObject(mStatusBar, "backgroundColor", + new ArgbEvaluator(), mPreviousColor, color); + ObjectAnimator colorFade3 = + ObjectAnimator.ofObject(mBigToolbar, "backgroundColor", + new ArgbEvaluator(), mPreviousColor, color); + + colorFade1.setDuration(800); + colorFade2.setDuration(800); + colorFade3.setDuration(800); + colorFade1.start(); + colorFade2.start(); + colorFade3.start(); + mPreviousColor = color; + } mStatusImage.setAlpha(80); -- cgit v1.2.3 From b1c8fa347162825e603e44781efa1446181a1218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 27 Feb 2015 23:24:04 +0100 Subject: Fix keyboard overlay bug on top of edittexts --- OpenKeychain/src/main/AndroidManifest.xml | 2 +- OpenKeychain/src/main/res/layout/create_key_activity.xml | 6 ++++++ OpenKeychain/src/main/res/layout/create_key_input_fragment.xml | 2 +- OpenKeychain/src/main/res/layout/decrypt_files_activity.xml | 6 ++++++ OpenKeychain/src/main/res/layout/decrypt_text_activity.xml | 8 +++++++- OpenKeychain/src/main/res/layout/encrypt_files_activity.xml | 6 ++++++ OpenKeychain/src/main/res/layout/encrypt_text_activity.xml | 6 ++++++ OpenKeychain/src/main/res/layout/import_keys_activity.xml | 6 ++++++ OpenKeychain/src/main/res/layout/import_keys_cloud_fragment.xml | 1 - OpenKeychain/src/main/res/layout/key_list_fragment.xml | 9 ++++++++- 10 files changed, 47 insertions(+), 5 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index 07935e4d3..d74a71fff 100644 --- a/OpenKeychain/src/main/AndroidManifest.xml +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -95,7 +95,7 @@ + diff --git a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml index 026d98004..f678825aa 100644 --- a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml @@ -6,7 +6,7 @@ + diff --git a/OpenKeychain/src/main/res/layout/decrypt_text_activity.xml b/OpenKeychain/src/main/res/layout/decrypt_text_activity.xml index b97fc9c8e..a692b3681 100644 --- a/OpenKeychain/src/main/res/layout/decrypt_text_activity.xml +++ b/OpenKeychain/src/main/res/layout/decrypt_text_activity.xml @@ -6,9 +6,15 @@ - + + diff --git a/OpenKeychain/src/main/res/layout/encrypt_files_activity.xml b/OpenKeychain/src/main/res/layout/encrypt_files_activity.xml index d292b1a5b..168e6d0be 100644 --- a/OpenKeychain/src/main/res/layout/encrypt_files_activity.xml +++ b/OpenKeychain/src/main/res/layout/encrypt_files_activity.xml @@ -7,9 +7,15 @@ android:id="@+id/toolbar_include" layout="@layout/toolbar_standalone" /> + diff --git a/OpenKeychain/src/main/res/layout/encrypt_text_activity.xml b/OpenKeychain/src/main/res/layout/encrypt_text_activity.xml index 66abd03b1..fd7fd6672 100644 --- a/OpenKeychain/src/main/res/layout/encrypt_text_activity.xml +++ b/OpenKeychain/src/main/res/layout/encrypt_text_activity.xml @@ -7,9 +7,15 @@ android:id="@+id/toolbar_include" layout="@layout/toolbar_standalone" /> + diff --git a/OpenKeychain/src/main/res/layout/import_keys_activity.xml b/OpenKeychain/src/main/res/layout/import_keys_activity.xml index 93d630437..dcdd9a31a 100644 --- a/OpenKeychain/src/main/res/layout/import_keys_activity.xml +++ b/OpenKeychain/src/main/res/layout/import_keys_activity.xml @@ -7,8 +7,14 @@ android:id="@+id/toolbar_include" layout="@layout/toolbar_standalone" /> + diff --git a/OpenKeychain/src/main/res/layout/import_keys_cloud_fragment.xml b/OpenKeychain/src/main/res/layout/import_keys_cloud_fragment.xml index 46ec736ca..6f52e1938 100644 --- a/OpenKeychain/src/main/res/layout/import_keys_cloud_fragment.xml +++ b/OpenKeychain/src/main/res/layout/import_keys_cloud_fragment.xml @@ -1,5 +1,4 @@ diff --git a/OpenKeychain/src/main/res/layout/key_list_fragment.xml b/OpenKeychain/src/main/res/layout/key_list_fragment.xml index 3c46b4f9c..bdebf2ea7 100644 --- a/OpenKeychain/src/main/res/layout/key_list_fragment.xml +++ b/OpenKeychain/src/main/res/layout/key_list_fragment.xml @@ -1,10 +1,17 @@ - + + Date: Fri, 27 Feb 2015 23:39:36 +0100 Subject: Remove swipte to refresh src, fix padding in key list --- .../keychain/ui/KeyListFragment.java | 68 --------------- .../ui/widget/ListAwareSwipeRefreshLayout.java | 99 ---------------------- .../src/main/res/layout/key_list_fragment.xml | 68 ++++++--------- 3 files changed, 27 insertions(+), 208 deletions(-) delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/ListAwareSwipeRefreshLayout.java (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index 99714b4a0..ba9a96b28 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -36,8 +36,6 @@ import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v4.view.MenuItemCompat; import android.support.v4.widget.CursorAdapter; -import android.support.v4.widget.NoScrollableSwipeRefreshLayout; -import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.SearchView; import android.view.ActionMode; @@ -45,7 +43,6 @@ import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -73,7 +70,6 @@ import org.sufficientlysecure.keychain.ui.dialog.DeleteKeyDialogFragment; import org.sufficientlysecure.keychain.ui.util.Highlighter; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.ui.util.Notify; -import org.sufficientlysecure.keychain.ui.widget.ListAwareSwipeRefreshLayout; import org.sufficientlysecure.keychain.util.ExportHelper; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.Preferences; @@ -97,7 +93,6 @@ public class KeyListFragment extends LoaderFragment private KeyListAdapter mAdapter; private StickyListHeadersListView mStickyList; - private ListAwareSwipeRefreshLayout mSwipeRefreshLayout; // saves the mode object for multiselect, needed for reset at some point private ActionMode mActionMode = null; @@ -152,73 +147,10 @@ public class KeyListFragment extends LoaderFragment } }); - mSwipeRefreshLayout = (ListAwareSwipeRefreshLayout) view.findViewById(R.id.key_list_swipe_container); - mSwipeRefreshLayout.setOnRefreshListener(new NoScrollableSwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - KeychainIntentServiceHandler finishedHandler = new KeychainIntentServiceHandler(getActivity()) { - public void handleMessage(Message message) { - if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) { - mSwipeRefreshLayout.setRefreshing(false); - } - } - }; - // new KeyUpdateHelper().updateAllKeys(getActivity(), finishedHandler); - updateActionbarForSwipe(false); - } - }); - mSwipeRefreshLayout.setColorScheme( - R.color.android_purple_dark, - R.color.android_purple_light, - R.color.android_purple_dark, - R.color.android_purple_light); - mSwipeRefreshLayout.setStickyListHeadersListView(mStickyList); - mSwipeRefreshLayout.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_MOVE) { - updateActionbarForSwipe(true); - } else { - updateActionbarForSwipe(false); - } - return false; - } - }); - // Just disable for now - mSwipeRefreshLayout.setIsLocked(true); return root; } - private void updateActionbarForSwipe(boolean show) { - ActionBarActivity activity = (ActionBarActivity) getActivity(); - ActionBar bar = activity.getSupportActionBar(); - - if (show) { - bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); - bar.setDisplayUseLogoEnabled(false); - bar.setCustomView(R.layout.custom_actionbar); - TextView title = (TextView) getActivity().findViewById(R.id.custom_actionbar_text); - title.setText(R.string.swipe_to_update); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { -// hideMenu = true; -// activity.invalidateOptionsMenu(); - } - } else { - bar.setTitle(getActivity().getTitle()); - bar.setDisplayHomeAsUpEnabled(true); - bar.setDisplayShowTitleEnabled(true); - bar.setDisplayUseLogoEnabled(true); - bar.setDisplayShowHomeEnabled(true); - bar.setDisplayShowCustomEnabled(false); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { -// hideMenu = false; -// activity.invalidateOptionsMenu(); - } - } - } - /** * Define Adapter and Loader on create of Activity */ diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/ListAwareSwipeRefreshLayout.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/ListAwareSwipeRefreshLayout.java deleted file mode 100644 index 3403208d7..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/ListAwareSwipeRefreshLayout.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2014 Daniel Albert - * - * 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.widget; - -import android.content.Context; -import android.support.v4.widget.NoScrollableSwipeRefreshLayout; -import android.util.AttributeSet; -import android.view.MotionEvent; - -import se.emilsjolander.stickylistheaders.StickyListHeadersListView; - -public class ListAwareSwipeRefreshLayout extends NoScrollableSwipeRefreshLayout { - - private StickyListHeadersListView mStickyListHeadersListView = null; - private boolean mIsLocked = false; - - /** - * Constructors - */ - public ListAwareSwipeRefreshLayout(Context context) { - super(context); - } - - public ListAwareSwipeRefreshLayout(Context context, AttributeSet attrs) { - super(context, attrs); - } - - /** - * Getters / Setters - */ - public void setStickyListHeadersListView(StickyListHeadersListView stickyListHeadersListView) { - mStickyListHeadersListView = stickyListHeadersListView; - } - - public StickyListHeadersListView getStickyListHeadersListView() { - return mStickyListHeadersListView; - } - - public void setIsLocked(boolean locked) { - mIsLocked = locked; - } - - public boolean getIsLocked() { - return mIsLocked; - } - - @Override - public boolean canChildScrollUp() { - if (mStickyListHeadersListView == null) { - return super.canChildScrollUp(); - } - - return (mIsLocked || ( - mStickyListHeadersListView.getWrappedList().getChildCount() > 0 - && (mStickyListHeadersListView.getWrappedList().getChildAt(0).getTop() < 0 - || mStickyListHeadersListView.getFirstVisiblePosition() > 0) - ) - ); - } - - /** Called on a touch event, this method exempts a small area in the upper right from pull to - * refresh handling. - * - * If the touch event happens somewhere in the upper right corner of the screen, we return false - * to indicate that the event was not handled. This ensures events in that area are always - * handed through to the list scrollbar handle. For all other cases, we pass the message through - * to the pull to refresh handler. - */ - @Override - public boolean onTouchEvent(MotionEvent event) { - // The device may be null. This actually happens - if (event.getDevice() != null) { - // MotionEvent.AXIS_X is api level 12, for some reason, so we use a constant 0 here - float ratioX = event.getX() / event.getDevice().getMotionRange(0).getMax(); - float ratioY = event.getY() / event.getDevice().getMotionRange(1).getMax(); - // if this is the upper right corner, don't handle as pull to refresh event - if (ratioX > 0.85f && ratioY < 0.15f) { - return false; - } - } - return super.onTouchEvent(event); - } - -} \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/key_list_fragment.xml b/OpenKeychain/src/main/res/layout/key_list_fragment.xml index bdebf2ea7..2affa6e86 100644 --- a/OpenKeychain/src/main/res/layout/key_list_fragment.xml +++ b/OpenKeychain/src/main/res/layout/key_list_fragment.xml @@ -1,56 +1,42 @@ - - - + - - + + + android:layout_height="match_parent" + android:drawSelectorOnTop="true" + android:fastScrollEnabled="true" + android:paddingBottom="16dp" + android:paddingLeft="16dp" + android:paddingRight="32dp" + android:scrollbarStyle="outsideOverlay" /> - + - - - + android:text="@string/key_list_empty_text1" + android:textAppearance="?android:attr/textAppearanceLarge" /> - - - + + Date: Fri, 27 Feb 2015 23:47:15 +0100 Subject: Enable multi line snackbar option --- .../main/java/org/sufficientlysecure/keychain/ui/util/Notify.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java index 6f8c477c0..f6c979139 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java @@ -24,6 +24,7 @@ import android.graphics.Color; import com.nispok.snackbar.Snackbar; import com.nispok.snackbar.Snackbar.SnackbarDuration; import com.nispok.snackbar.SnackbarManager; +import com.nispok.snackbar.enums.SnackbarType; import com.nispok.snackbar.listeners.ActionClickListener; import org.sufficientlysecure.keychain.R; @@ -48,6 +49,7 @@ public class Notify { Snackbar bar = Snackbar.with(activity) .text(text) + .type(SnackbarType.MULTI_LINE) .duration(SnackbarDuration.LENGTH_LONG); switch (style) { @@ -67,7 +69,8 @@ public class Notify { public static Showable createNotify (Activity activity, int resId, int duration, Style style) { final Snackbar bar = Snackbar.with(activity) - .text(resId); + .text(resId) + .type(SnackbarType.MULTI_LINE); if (duration == LENGTH_INDEFINITE) { bar.duration(SnackbarDuration.LENGTH_INDEFINITE); } else { @@ -104,6 +107,7 @@ public class Notify { final Snackbar bar = Snackbar.with(activity) .text(msg) .actionLabel(resIdAction) + .type(SnackbarType.MULTI_LINE) .actionListener(new ActionClickListener() { @Override public void onActionClicked(Snackbar snackbar) { -- cgit v1.2.3 From 8cfba4c0fb3ebf7b24c0c8ede6887b3bde43259f Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 27 Feb 2015 23:52:51 +0100 Subject: slightly longer color fade duration --- .../java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index d14455511..bbf35e497 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -883,9 +883,9 @@ public class ViewKeyActivity extends BaseActivity implements ObjectAnimator.ofObject(mBigToolbar, "backgroundColor", new ArgbEvaluator(), mPreviousColor, color); - colorFade1.setDuration(800); - colorFade2.setDuration(800); - colorFade3.setDuration(800); + colorFade1.setDuration(1200); + colorFade2.setDuration(1200); + colorFade3.setDuration(1200); colorFade1.start(); colorFade2.start(); colorFade3.start(); -- cgit v1.2.3 From 582caaba97c288de88b7a957cdf1b6f5bc84ed31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 27 Feb 2015 23:56:53 +0100 Subject: Reorder advanced key view --- .../keychain/ui/ViewKeyAdvActivity.java | 12 +- .../keychain/ui/ViewKeyAdvMainFragment.java | 236 --------------------- .../keychain/ui/ViewKeyAdvUserIdsFragment.java | 184 ++++++++++++++++ .../res/layout/view_key_adv_certs_fragment.xml | 9 - .../main/res/layout/view_key_adv_main_fragment.xml | 43 ---- 5 files changed, 190 insertions(+), 294 deletions(-) delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvMainFragment.java create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvUserIdsFragment.java (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java index 894529cc5..9d79b377c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvActivity.java @@ -124,16 +124,16 @@ public class ViewKeyAdvActivity extends BaseActivity implements mTabsAdapter = new PagerTabStripAdapter(this); mViewPager.setAdapter(mTabsAdapter); - Bundle mainBundle = new Bundle(); - mainBundle.putParcelable(ViewKeyAdvMainFragment.ARG_DATA_URI, dataUri); - mTabsAdapter.addTab(ViewKeyAdvMainFragment.class, - mainBundle, getString(R.string.key_view_tab_main)); - Bundle shareBundle = new Bundle(); - shareBundle.putParcelable(ViewKeyAdvMainFragment.ARG_DATA_URI, dataUri); + shareBundle.putParcelable(ViewKeyAdvUserIdsFragment.ARG_DATA_URI, dataUri); mTabsAdapter.addTab(ViewKeyAdvShareFragment.class, shareBundle, getString(R.string.key_view_tab_share)); + Bundle userIdsBundle = new Bundle(); + userIdsBundle.putParcelable(ViewKeyAdvUserIdsFragment.ARG_DATA_URI, dataUri); + mTabsAdapter.addTab(ViewKeyAdvUserIdsFragment.class, + userIdsBundle, getString(R.string.section_user_ids)); + Bundle keysBundle = new Bundle(); keysBundle.putParcelable(ViewKeyAdvSubkeysFragment.ARG_DATA_URI, dataUri); mTabsAdapter.addTab(ViewKeyAdvSubkeysFragment.class, diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvMainFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvMainFragment.java deleted file mode 100644 index fc107d794..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvMainFragment.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (C) 2014 Dominik Schürmann - * Copyright (C) 2014 Vincent Breitmoser - * - * 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.database.Cursor; -import android.graphics.PorterDuff; -import android.net.Uri; -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.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ImageView; -import android.widget.ListView; - -import org.sufficientlysecure.keychain.Constants; -import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround; -import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException; -import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; -import org.sufficientlysecure.keychain.provider.KeychainContract.UserPackets; -import org.sufficientlysecure.keychain.provider.ProviderHelper; -import org.sufficientlysecure.keychain.ui.adapter.UserIdsAdapter; -import org.sufficientlysecure.keychain.ui.dialog.UserIdInfoDialogFragment; -import org.sufficientlysecure.keychain.util.Log; - -import java.util.Date; - -public class ViewKeyAdvMainFragment extends LoaderFragment implements - LoaderManager.LoaderCallbacks { - - public static final String ARG_DATA_URI = "uri"; - - private View mActionCertify; - private View mActionCertifyText; - private ImageView mActionCertifyImage; - - private ListView mUserIds; - - private static final int LOADER_ID_UNIFIED = 0; - private static final int LOADER_ID_USER_IDS = 1; - - private UserIdsAdapter mUserIdsAdapter; - - private Uri mDataUri; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) { - View root = super.onCreateView(inflater, superContainer, savedInstanceState); - View view = inflater.inflate(R.layout.view_key_adv_main_fragment, getContainer()); - - mUserIds = (ListView) view.findViewById(R.id.view_key_user_ids); - mActionCertify = view.findViewById(R.id.view_key_action_certify); - mActionCertifyText = view.findViewById(R.id.view_key_action_certify_text); - mActionCertifyImage = (ImageView) view.findViewById(R.id.view_key_action_certify_image); - // make certify image gray, like action icons - mActionCertifyImage.setColorFilter(getResources().getColor(R.color.tertiary_text_light), - PorterDuff.Mode.SRC_IN); - - mUserIds.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - showUserIdInfo(position); - } - }); - - return root; - } - - private void showUserIdInfo(final int position) { - final boolean isRevoked = mUserIdsAdapter.getIsRevoked(position); - final int isVerified = mUserIdsAdapter.getIsVerified(position); - - DialogFragmentWorkaround.INTERFACE.runnableRunDelayed(new Runnable() { - public void run() { - UserIdInfoDialogFragment dialogFragment = - UserIdInfoDialogFragment.newInstance(isRevoked, isVerified); - - dialogFragment.show(getActivity().getSupportFragmentManager(), "userIdInfoDialog"); - } - }); - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - Uri dataUri = getArguments().getParcelable(ARG_DATA_URI); - if (dataUri == null) { - Log.e(Constants.TAG, "Data missing. Should be Uri of key!"); - getActivity().finish(); - return; - } - - loadData(dataUri); - } - - private void loadData(Uri dataUri) { - mDataUri = dataUri; - - Log.i(Constants.TAG, "mDataUri: " + mDataUri.toString()); - - mActionCertify.setOnClickListener(new View.OnClickListener() { - public void onClick(View view) { - certify(mDataUri); - } - }); - - mUserIdsAdapter = new UserIdsAdapter(getActivity(), null, 0); - mUserIds.setAdapter(mUserIdsAdapter); - - // Prepare the loaders. Either re-connect with an existing ones, - // or start new ones. - getLoaderManager().initLoader(LOADER_ID_UNIFIED, null, this); - getLoaderManager().initLoader(LOADER_ID_USER_IDS, null, this); - } - - static final String[] UNIFIED_PROJECTION = new String[]{ - KeyRings._ID, KeyRings.MASTER_KEY_ID, - KeyRings.HAS_ANY_SECRET, KeyRings.IS_REVOKED, KeyRings.EXPIRY, KeyRings.HAS_ENCRYPT - }; - static final int INDEX_UNIFIED_MASTER_KEY_ID = 1; - static final int INDEX_UNIFIED_HAS_ANY_SECRET = 2; - static final int INDEX_UNIFIED_IS_REVOKED = 3; - static final int INDEX_UNIFIED_EXPIRY = 4; - static final int INDEX_UNIFIED_HAS_ENCRYPT = 5; - - public Loader onCreateLoader(int id, Bundle args) { - setContentShown(false); - - switch (id) { - case LOADER_ID_UNIFIED: { - Uri baseUri = KeyRings.buildUnifiedKeyRingUri(mDataUri); - return new CursorLoader(getActivity(), baseUri, UNIFIED_PROJECTION, null, null, null); - } - case LOADER_ID_USER_IDS: { - Uri baseUri = UserPackets.buildUserIdsUri(mDataUri); - return new CursorLoader(getActivity(), baseUri, - UserIdsAdapter.USER_IDS_PROJECTION, null, null, null); - } - - default: - return null; - } - } - - public void onLoadFinished(Loader loader, Cursor data) { - /* TODO better error handling? May cause problems when a key is deleted, - * because the notification triggers faster than the activity closes. - */ - // Avoid NullPointerExceptions... - if (data.getCount() == 0) { - return; - } - // Swap the new cursor in. (The framework will take care of closing the - // old cursor once we return.) - switch (loader.getId()) { - case LOADER_ID_UNIFIED: { - if (data.moveToFirst()) { - - // If this key is revoked, it cannot be used for anything! - if (data.getInt(INDEX_UNIFIED_IS_REVOKED) != 0) { - mActionCertify.setEnabled(false); - mActionCertifyText.setEnabled(false); - } else { - - Date expiryDate = new Date(data.getLong(INDEX_UNIFIED_EXPIRY) * 1000); - if (!data.isNull(INDEX_UNIFIED_EXPIRY) && expiryDate.before(new Date())) { - mActionCertify.setEnabled(false); - mActionCertifyText.setEnabled(false); - } else { - mActionCertify.setEnabled(true); - mActionCertifyText.setEnabled(true); - } - } - - break; - } - } - - case LOADER_ID_USER_IDS: { - mUserIdsAdapter.swapCursor(data); - break; - } - - } - setContentShown(true); - } - - /** - * 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. - */ - public void onLoaderReset(Loader loader) { - switch (loader.getId()) { - case LOADER_ID_USER_IDS: - mUserIdsAdapter.swapCursor(null); - break; - } - } - - private void certify(Uri dataUri) { - long keyId = 0; - try { - keyId = new ProviderHelper(getActivity()) - .getCachedPublicKeyRing(dataUri) - .extractOrGetMasterKeyId(); - } catch (PgpKeyNotFoundException e) { - Log.e(Constants.TAG, "key not found!", e); - } - Intent certifyIntent = new Intent(getActivity(), CertifyKeyActivity.class); - certifyIntent.putExtra(CertifyKeyActivity.EXTRA_KEY_IDS, new long[]{keyId}); - startActivityForResult(certifyIntent, 0); - } - -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvUserIdsFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvUserIdsFragment.java new file mode 100644 index 000000000..c4e6639a8 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvUserIdsFragment.java @@ -0,0 +1,184 @@ +/* + * Copyright (C) 2014 Dominik Schürmann + * Copyright (C) 2014 Vincent Breitmoser + * + * 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.database.Cursor; +import android.net.Uri; +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.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ListView; + +import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround; +import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; +import org.sufficientlysecure.keychain.provider.KeychainContract.UserPackets; +import org.sufficientlysecure.keychain.ui.adapter.UserIdsAdapter; +import org.sufficientlysecure.keychain.ui.dialog.UserIdInfoDialogFragment; +import org.sufficientlysecure.keychain.util.Log; + +public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements + LoaderManager.LoaderCallbacks { + + public static final String ARG_DATA_URI = "uri"; + + private ListView mUserIds; + + private static final int LOADER_ID_UNIFIED = 0; + private static final int LOADER_ID_USER_IDS = 1; + + private UserIdsAdapter mUserIdsAdapter; + + private Uri mDataUri; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) { + View root = super.onCreateView(inflater, superContainer, savedInstanceState); + View view = inflater.inflate(R.layout.view_key_adv_main_fragment, getContainer()); + + mUserIds = (ListView) view.findViewById(R.id.view_key_user_ids); + + mUserIds.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + showUserIdInfo(position); + } + }); + + return root; + } + + private void showUserIdInfo(final int position) { + final boolean isRevoked = mUserIdsAdapter.getIsRevoked(position); + final int isVerified = mUserIdsAdapter.getIsVerified(position); + + DialogFragmentWorkaround.INTERFACE.runnableRunDelayed(new Runnable() { + public void run() { + UserIdInfoDialogFragment dialogFragment = + UserIdInfoDialogFragment.newInstance(isRevoked, isVerified); + + dialogFragment.show(getActivity().getSupportFragmentManager(), "userIdInfoDialog"); + } + }); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + Uri dataUri = getArguments().getParcelable(ARG_DATA_URI); + if (dataUri == null) { + Log.e(Constants.TAG, "Data missing. Should be Uri of key!"); + getActivity().finish(); + return; + } + + loadData(dataUri); + } + + private void loadData(Uri dataUri) { + mDataUri = dataUri; + + Log.i(Constants.TAG, "mDataUri: " + mDataUri.toString()); + + mUserIdsAdapter = new UserIdsAdapter(getActivity(), null, 0); + mUserIds.setAdapter(mUserIdsAdapter); + + // Prepare the loaders. Either re-connect with an existing ones, + // or start new ones. + getLoaderManager().initLoader(LOADER_ID_UNIFIED, null, this); + getLoaderManager().initLoader(LOADER_ID_USER_IDS, null, this); + } + + static final String[] UNIFIED_PROJECTION = new String[]{ + KeyRings._ID, KeyRings.MASTER_KEY_ID, + KeyRings.HAS_ANY_SECRET, KeyRings.IS_REVOKED, KeyRings.EXPIRY, KeyRings.HAS_ENCRYPT + }; + static final int INDEX_UNIFIED_MASTER_KEY_ID = 1; + static final int INDEX_UNIFIED_HAS_ANY_SECRET = 2; + static final int INDEX_UNIFIED_IS_REVOKED = 3; + static final int INDEX_UNIFIED_EXPIRY = 4; + static final int INDEX_UNIFIED_HAS_ENCRYPT = 5; + + public Loader onCreateLoader(int id, Bundle args) { + setContentShown(false); + + switch (id) { + case LOADER_ID_UNIFIED: { + Uri baseUri = KeyRings.buildUnifiedKeyRingUri(mDataUri); + return new CursorLoader(getActivity(), baseUri, UNIFIED_PROJECTION, null, null, null); + } + case LOADER_ID_USER_IDS: { + Uri baseUri = UserPackets.buildUserIdsUri(mDataUri); + return new CursorLoader(getActivity(), baseUri, + UserIdsAdapter.USER_IDS_PROJECTION, null, null, null); + } + + default: + return null; + } + } + + public void onLoadFinished(Loader loader, Cursor data) { + /* TODO better error handling? May cause problems when a key is deleted, + * because the notification triggers faster than the activity closes. + */ + // Avoid NullPointerExceptions... + if (data.getCount() == 0) { + return; + } + // Swap the new cursor in. (The framework will take care of closing the + // old cursor once we return.) + switch (loader.getId()) { + case LOADER_ID_UNIFIED: { + if (data.moveToFirst()) { + + + break; + } + } + + case LOADER_ID_USER_IDS: { + mUserIdsAdapter.swapCursor(data); + break; + } + + } + setContentShown(true); + } + + /** + * 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. + */ + public void onLoaderReset(Loader loader) { + switch (loader.getId()) { + case LOADER_ID_USER_IDS: + mUserIdsAdapter.swapCursor(null); + break; + } + } + +} diff --git a/OpenKeychain/src/main/res/layout/view_key_adv_certs_fragment.xml b/OpenKeychain/src/main/res/layout/view_key_adv_certs_fragment.xml index 2232ea9f2..d512477aa 100644 --- a/OpenKeychain/src/main/res/layout/view_key_adv_certs_fragment.xml +++ b/OpenKeychain/src/main/res/layout/view_key_adv_certs_fragment.xml @@ -7,15 +7,6 @@ android:descendantFocusability="beforeDescendants" android:orientation="vertical"> - - - - - - - - - - - - - - -- cgit v1.2.3 From 0b49becaa800f472b843588c4a8a4c9f9fed40ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 28 Feb 2015 00:04:15 +0100 Subject: padding fixes for key list --- OpenKeychain/src/main/res/layout/key_list_fragment.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/res/layout/key_list_fragment.xml b/OpenKeychain/src/main/res/layout/key_list_fragment.xml index 2affa6e86..f31d5fce6 100644 --- a/OpenKeychain/src/main/res/layout/key_list_fragment.xml +++ b/OpenKeychain/src/main/res/layout/key_list_fragment.xml @@ -15,7 +15,6 @@ android:layout_height="match_parent" android:drawSelectorOnTop="true" android:fastScrollEnabled="true" - android:paddingBottom="16dp" android:paddingLeft="16dp" android:paddingRight="32dp" android:scrollbarStyle="outsideOverlay" /> @@ -51,7 +50,7 @@ fab:fab_addButtonPlusIconColor="@color/icons" fab:fab_expandDirection="up" fab:fab_labelStyle="@style/FabMenuStyle" - android:layout_marginBottom="16dp" + android:layout_marginBottom="8dp" android:layout_marginRight="16dp" android:layout_marginEnd="16dp"> -- cgit v1.2.3 From 1c91be84af72b80e3aeec003fe3b9edd09d165a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 28 Feb 2015 00:11:34 +0100 Subject: Upload new keys to keyserver by default --- OpenKeychain/src/main/res/layout/create_key_final_fragment.xml | 1 + 1 file changed, 1 insertion(+) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml index 97eba9cd1..9b6a807cb 100644 --- a/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml @@ -66,6 +66,7 @@ android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:textAppearance="?android:attr/textAppearanceMedium" + android:checked="true" android:text="@string/create_key_upload" android:id="@+id/create_key_upload" /> -- cgit v1.2.3 From 0669193e7517920972e4bb577c1bec04fa7b594f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 28 Feb 2015 00:22:31 +0100 Subject: Simplify MainActivity --- .../keychain/ui/MainActivity.java | 25 ++++++++++- .../keychain/ui/NavDrawerActivity.java | 50 ---------------------- 2 files changed, 23 insertions(+), 52 deletions(-) delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NavDrawerActivity.java (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java index 2f29f9360..04350a57d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java @@ -23,13 +23,34 @@ import android.os.Bundle; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.operations.results.OperationResult; +import org.sufficientlysecure.keychain.remote.ui.AppsListFragment; import org.sufficientlysecure.keychain.util.Preferences; -public class MainActivity extends NavDrawerActivity { +import it.neokree.materialnavigationdrawer.MaterialNavigationDrawer; + +public class MainActivity extends MaterialNavigationDrawer { @Override public void init(Bundle savedInstanceState) { - super.init(savedInstanceState); + // don't open drawer on first run + disableLearningPattern(); + +// addMultiPaneSupport(); + + // set the header image + // create and set the header + setDrawerHeaderImage(R.drawable.drawer_header); + + // create sections + addSection(newSection(getString(R.string.nav_keys), R.drawable.ic_vpn_key_black_24dp, new KeyListFragment())); + addSection(newSection(getString(R.string.nav_encrypt_decrypt), R.drawable.ic_lock_black_24dp, new EncryptDecryptOverviewFragment())); + addSection(newSection(getString(R.string.title_api_registered_apps), R.drawable.ic_apps_black_24dp, new AppsListFragment())); + + // create bottom section + addBottomSection(newSection(getString(R.string.menu_preferences), R.drawable.ic_settings_black_24dp, new Intent(this, SettingsActivity.class))); + addBottomSection(newSection(getString(R.string.menu_help), R.drawable.ic_help_black_24dp, new Intent(this, HelpActivity.class))); + + // if this is the first time show first time activity Preferences prefs = Preferences.getPreferences(this); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NavDrawerActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NavDrawerActivity.java deleted file mode 100644 index fb23c7d3a..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NavDrawerActivity.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2015 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.os.Bundle; - -import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.remote.ui.AppsListFragment; - -import it.neokree.materialnavigationdrawer.MaterialNavigationDrawer; - -public abstract class NavDrawerActivity extends MaterialNavigationDrawer { - - @Override - public void init(Bundle savedInstanceState) { - // don't open drawer on first run - disableLearningPattern(); - -// addMultiPaneSupport(); - - // set the header image - // create and set the header - setDrawerHeaderImage(R.drawable.drawer_header); - - // create sections - addSection(newSection(getString(R.string.nav_keys), R.drawable.ic_vpn_key_black_24dp, new KeyListFragment())); - addSection(newSection(getString(R.string.nav_encrypt_decrypt), R.drawable.ic_lock_black_24dp, new EncryptDecryptOverviewFragment())); - addSection(newSection(getString(R.string.title_api_registered_apps), R.drawable.ic_apps_black_24dp, new AppsListFragment())); - - // create bottom section - addBottomSection(newSection(getString(R.string.menu_preferences), R.drawable.ic_settings_black_24dp, new Intent(this, SettingsActivity.class))); - addBottomSection(newSection(getString(R.string.menu_help), R.drawable.ic_help_black_24dp, new Intent(this, HelpActivity.class))); - } -} -- cgit v1.2.3 From 9c62c3fd3985958a43707c7a25f07744a6cfcb95 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 28 Feb 2015 00:28:20 +0100 Subject: control flow for moving the fab up with snackbar --- .../keychain/ui/KeyListFragment.java | 31 ++++++++++++++++- .../keychain/ui/MainActivity.java | 20 +++++++++-- .../keychain/ui/util/Notify.java | 39 ++++++++++++++++++++-- .../src/main/res/layout/key_list_fragment.xml | 6 ++-- 4 files changed, 89 insertions(+), 7 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index ba9a96b28..bf3498f2f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -46,14 +46,19 @@ import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; +import android.view.ViewGroup.MarginLayoutParams; +import android.view.animation.TranslateAnimation; import android.widget.AbsListView.MultiChoiceModeListener; import android.widget.AdapterView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; +import android.widget.RelativeLayout; import android.widget.TextView; import com.getbase.floatingactionbutton.FloatingActionButton; +import com.getbase.floatingactionbutton.FloatingActionsMenu; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; @@ -71,6 +76,7 @@ import org.sufficientlysecure.keychain.ui.util.Highlighter; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.ui.util.Notify; import org.sufficientlysecure.keychain.util.ExportHelper; +import org.sufficientlysecure.keychain.util.FabContainer; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.Preferences; @@ -87,7 +93,7 @@ import se.emilsjolander.stickylistheaders.StickyListHeadersListView; */ public class KeyListFragment extends LoaderFragment implements SearchView.OnQueryTextListener, AdapterView.OnItemClickListener, - LoaderManager.LoaderCallbacks { + LoaderManager.LoaderCallbacks, FabContainer { ExportHelper mExportHelper; @@ -102,6 +108,8 @@ public class KeyListFragment extends LoaderFragment private String mQuery; private SearchView mSearchView; + private FloatingActionsMenu mFab; + private FloatingActionButton mFabQrCode; private FloatingActionButton mFabCloud; private FloatingActionButton mFabFile; @@ -124,6 +132,8 @@ public class KeyListFragment extends LoaderFragment mStickyList = (StickyListHeadersListView) view.findViewById(R.id.key_list_list); mStickyList.setOnItemClickListener(this); + mFab = (FloatingActionsMenu) view.findViewById(R.id.fab_main); + mFabQrCode = (FloatingActionButton) view.findViewById(R.id.fab_add_qr_code); mFabCloud = (FloatingActionButton) view.findViewById(R.id.fab_add_cloud); mFabFile = (FloatingActionButton) view.findViewById(R.id.fab_add_file); @@ -609,6 +619,25 @@ public class KeyListFragment extends LoaderFragment } } + LayoutParams mFabOrigin = null; + @Override + public void fabMoveUp(int height) { + if (mFabOrigin == null) { + mFabOrigin = mFab.getLayoutParams(); + } + + // TODO reposition properly! + MarginLayoutParams marginParams = new MarginLayoutParams(mFabOrigin); + marginParams.setMargins(0, 0, 16, 16+height); + RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams); + mFab.setLayoutParams(layoutParams); + } + + @Override + public void fabRestorePosition() { + mFab.setLayoutParams(mFabOrigin); + } + /** * Implements StickyListHeadersAdapter from library */ diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java index 04350a57d..fd2f1b1d2 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java @@ -25,10 +25,11 @@ import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.remote.ui.AppsListFragment; import org.sufficientlysecure.keychain.util.Preferences; +import org.sufficientlysecure.keychain.util.FabContainer; import it.neokree.materialnavigationdrawer.MaterialNavigationDrawer; -public class MainActivity extends MaterialNavigationDrawer { +public class MainActivity extends MaterialNavigationDrawer implements FabContainer { @Override public void init(Bundle savedInstanceState) { @@ -51,7 +52,6 @@ public class MainActivity extends MaterialNavigationDrawer { addBottomSection(newSection(getString(R.string.menu_help), R.drawable.ic_help_black_24dp, new Intent(this, HelpActivity.class))); - // if this is the first time show first time activity Preferences prefs = Preferences.getPreferences(this); if (prefs.isFirstTime()) { @@ -68,4 +68,20 @@ public class MainActivity extends MaterialNavigationDrawer { } } + @Override + public void fabMoveUp(int height) { + Object fragment = getCurrentSection().getTargetFragment(); + if (fragment instanceof FabContainer) { + ((FabContainer) fragment).fabMoveUp(height); + } + } + + @Override + public void fabRestorePosition() { + Object fragment = getCurrentSection().getTargetFragment(); + if (fragment instanceof FabContainer) { + ((FabContainer) fragment).fabRestorePosition(); + } + } + } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java index f6c979139..1c6f3bd3e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java @@ -19,15 +19,16 @@ package org.sufficientlysecure.keychain.ui.util; import android.app.Activity; import android.content.res.Resources; -import android.graphics.Color; import com.nispok.snackbar.Snackbar; import com.nispok.snackbar.Snackbar.SnackbarDuration; import com.nispok.snackbar.SnackbarManager; import com.nispok.snackbar.enums.SnackbarType; import com.nispok.snackbar.listeners.ActionClickListener; +import com.nispok.snackbar.listeners.EventListener; import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.util.FabContainer; /** * Notify wrapper which allows a more easy use of different notification libraries @@ -45,13 +46,47 @@ public class Notify { * @param text Text to show * @param style Notification styling */ - public static void showNotify(Activity activity, CharSequence text, Style style) { + public static void showNotify(final Activity activity, CharSequence text, Style style) { Snackbar bar = Snackbar.with(activity) .text(text) .type(SnackbarType.MULTI_LINE) .duration(SnackbarDuration.LENGTH_LONG); + if (activity instanceof FabContainer) { + bar.eventListener(new EventListener() { + @Override + public void onShow(Snackbar snackbar) { + ((FabContainer) activity).fabMoveUp(snackbar.getHeight()); + } + + @Override + public void onShowByReplace(Snackbar snackbar) { + + } + + @Override + public void onShown(Snackbar snackbar) { + + } + + @Override + public void onDismiss(Snackbar snackbar) { + ((FabContainer) activity).fabRestorePosition(); + } + + @Override + public void onDismissByReplace(Snackbar snackbar) { + + } + + @Override + public void onDismissed(Snackbar snackbar) { + + } + }); + } + switch (style) { case OK: break; diff --git a/OpenKeychain/src/main/res/layout/key_list_fragment.xml b/OpenKeychain/src/main/res/layout/key_list_fragment.xml index f31d5fce6..65935f9c8 100644 --- a/OpenKeychain/src/main/res/layout/key_list_fragment.xml +++ b/OpenKeychain/src/main/res/layout/key_list_fragment.xml @@ -2,7 +2,8 @@ + android:layout_width="match_parent" + > + android:layout_marginEnd="16dp" + > Date: Sat, 28 Feb 2015 00:38:53 +0100 Subject: Update from transifex --- .../keychain/ui/MainActivity.java | 2 - OpenKeychain/src/main/res/raw-eu/help_about.html | 57 +++++ .../src/main/res/raw-eu/help_changelog.html | 232 +++++++++++++++++ .../src/main/res/raw-eu/help_nfc_beam.html | 12 + OpenKeychain/src/main/res/raw-eu/help_start.html | 19 ++ OpenKeychain/src/main/res/raw-eu/help_wot.html | 17 ++ .../src/main/res/raw-eu/nfc_beam_share.html | 11 + .../src/main/res/raw-ru/help_changelog.html | 276 ++++++++++----------- .../src/main/res/raw-ru/help_nfc_beam.html | 2 +- OpenKeychain/src/main/res/raw-ru/help_start.html | 4 +- OpenKeychain/src/main/res/raw-ru/help_wot.html | 2 +- OpenKeychain/src/main/res/values-bg/strings.xml | 3 + OpenKeychain/src/main/res/values-cs/strings.xml | 6 +- OpenKeychain/src/main/res/values-de/strings.xml | 7 +- OpenKeychain/src/main/res/values-es/strings.xml | 101 ++++++-- OpenKeychain/src/main/res/values-et/strings.xml | 3 + OpenKeychain/src/main/res/values-eu/strings.xml | 69 ++++++ OpenKeychain/src/main/res/values-fi/strings.xml | 3 + OpenKeychain/src/main/res/values-fr/strings.xml | 62 ++++- OpenKeychain/src/main/res/values-is/strings.xml | 3 + OpenKeychain/src/main/res/values-it/strings.xml | 7 +- OpenKeychain/src/main/res/values-ja/strings.xml | 24 +- OpenKeychain/src/main/res/values-nl/strings.xml | 74 +++++- OpenKeychain/src/main/res/values-pl/strings.xml | 61 +++-- OpenKeychain/src/main/res/values-pt/strings.xml | 3 + OpenKeychain/src/main/res/values-ro/strings.xml | 3 + OpenKeychain/src/main/res/values-ru/strings.xml | 116 ++++++++- OpenKeychain/src/main/res/values-sl/strings.xml | 5 +- OpenKeychain/src/main/res/values-sr/strings.xml | 35 ++- OpenKeychain/src/main/res/values-sv/strings.xml | 7 +- OpenKeychain/src/main/res/values-tr/strings.xml | 6 +- OpenKeychain/src/main/res/values-uk/strings.xml | 6 +- .../src/main/res/values-zh-rTW/strings.xml | 7 +- OpenKeychain/src/main/res/values-zh/strings.xml | 3 + 34 files changed, 1010 insertions(+), 238 deletions(-) create mode 100644 OpenKeychain/src/main/res/raw-eu/help_about.html create mode 100644 OpenKeychain/src/main/res/raw-eu/help_changelog.html create mode 100644 OpenKeychain/src/main/res/raw-eu/help_nfc_beam.html create mode 100644 OpenKeychain/src/main/res/raw-eu/help_start.html create mode 100644 OpenKeychain/src/main/res/raw-eu/help_wot.html create mode 100644 OpenKeychain/src/main/res/raw-eu/nfc_beam_share.html create mode 100644 OpenKeychain/src/main/res/values-eu/strings.xml (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java index 04350a57d..ed9f3a02d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java @@ -50,8 +50,6 @@ public class MainActivity extends MaterialNavigationDrawer { addBottomSection(newSection(getString(R.string.menu_preferences), R.drawable.ic_settings_black_24dp, new Intent(this, SettingsActivity.class))); addBottomSection(newSection(getString(R.string.menu_help), R.drawable.ic_help_black_24dp, new Intent(this, HelpActivity.class))); - - // if this is the first time show first time activity Preferences prefs = Preferences.getPreferences(this); if (prefs.isFirstTime()) { diff --git a/OpenKeychain/src/main/res/raw-eu/help_about.html b/OpenKeychain/src/main/res/raw-eu/help_about.html new file mode 100644 index 000000000..2c6c5b3c4 --- /dev/null +++ b/OpenKeychain/src/main/res/raw-eu/help_about.html @@ -0,0 +1,57 @@ + + + +

http://www.openkeychain.org

+

OpenKeychain is an OpenPGP implementation for Android.

+

License: GPLv3+

+ +

Developers

+
    +
  • Dominik Schürmann (Maintainer)
  • +
  • Art O Cathain
  • +
  • Ash Hughes
  • +
  • Brian C. Barnes
  • +
  • Bahtiar 'kalkin' Gadimov
  • +
  • Daniel Albert
  • +
  • Daniel Hammann
  • +
  • Daniel Haß
  • +
  • Greg Witczak
  • +
  • 'mar-v-in'
  • +
  • Markus Doits
  • +
  • Miroojin Bakshi
  • +
  • Nikhil Peter Raj
  • +
  • Paul Sarbinowski
  • +
  • 'Senecaso'
  • +
  • Signe Rüsch
  • +
  • Sreeram Boyapati
  • +
  • Thialfihar (APG 1.x)
  • +
  • Tim Bray
  • +
  • Vincent Breitmoser
  • +
+

Libraries

+ + + diff --git a/OpenKeychain/src/main/res/raw-eu/help_changelog.html b/OpenKeychain/src/main/res/raw-eu/help_changelog.html new file mode 100644 index 000000000..0cb7d5210 --- /dev/null +++ b/OpenKeychain/src/main/res/raw-eu/help_changelog.html @@ -0,0 +1,232 @@ + + + + +

3.1.2

+
    +
  • Fix key export to files (now for real)
  • +
+

3.1.1

+
    +
  • Fix key export to files (they were written partially)
  • +
  • Fix crash on Android 2.3
  • +
+

3.1

+
    +
  • Fix crash on Android 5
  • +
  • New certify screen
  • +
  • Secure Exchange directly from key list (SafeSlinger library)
  • +
  • New QR Code program flow
  • +
  • Redesigned decrypt screen
  • +
  • New icon usage and colors
  • +
  • Fix import of secret keys from Symantec Encryption Desktop
  • +
  • Subkey IDs on Yubikeys are now checked correctly
  • +
+

3.0.1

+
    +
  • Better handling of large key imports
  • +
  • Improved subkey selection
  • +
+

3.0

+
    +
  • Full support for Yubikey signature generation and decryption!
  • +
  • Propose installable compatible apps in apps list
  • +
  • New design for decryption screens
  • +
  • Many fixes for key import, also fixes stripped keys
  • +
  • Honor and display key authenticate flags
  • +
  • User interface to generate custom keys
  • +
  • Fixing user id revocation certificates
  • +
  • New cloud search (searches over traditional keyservers and keybase.io)
  • +
  • Support for stripping keys inside OpenKeychain
  • +
+

2.9.2

+
    +
  • Fix keys broken in 2.9.1
  • +
  • Yubikey decryption now working via API
  • +
+

2.9.1

+
    +
  • Split encrypt screen into two
  • +
  • Fix key flags handling (now supporting Mailvelope 0.7 keys)
  • +
  • Improved passphrase handling
  • +
  • Key sharing via SafeSlinger
  • +
  • Yubikey: preference to allow other PINs, currently only signing via the OpenPGP API works, not inside of OpenKeychain
  • +
  • Fix usage of stripped keys
  • +
  • SHA256 as default for compatibility
  • +
  • Intent API has changed, see https://github.com/open-keychain/open-keychain/wiki/Intent-API
  • +
  • OpenPGP API now handles revoked/expired keys and returns all user ids
  • +
+

2.9

+
    +
  • Fixing crashes introduced in v2.8
  • +
  • Experimental ECC support
  • +
  • Experimental Yubikey support (signing-only with imported keys)
  • +
+

2.8

+
    +
  • So many bugs have been fixed in this release that we focus on the main new features
  • +
  • Key edit: awesome new design, key revocation
  • +
  • Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records
  • +
  • New first time screen
  • +
  • New key creation screen: autocompletion of name and email based on your personal Android accounts
  • +
  • File encryption: awesome new design, support for encrypting multiple files
  • +
  • New icons to show status of key (by Brennan Novak)
  • +
  • Important bug fix: Importing of large key collections from a file is now possible
  • +
  • Notification showing cached passphrases
  • +
  • Keys are connected to Android's contacts
  • +
+

This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar

+ +

2.7

+
    +
  • Purple! (Dominik, Vincent)
  • +
  • New key view design (Dominik, Vincent)
  • +
  • New flat Android buttons (Dominik, Vincent)
  • +
  • API fixes (Dominik)
  • +
  • Keybase.io import (Tim Bray)
  • +
+

2.6.1

+
    +
  • Some fixes for regression bugs
  • +
+

2.6

+
    +
  • Key certifications (thanks to Vincent Breitmoser)
  • +
  • Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)
  • +
  • New design for signature verification
  • +
  • Custom key length (thanks to Greg Witczak)
  • +
  • Fix share-functionality from other apps
  • +
+

2.5

+
    +
  • Fix decryption of symmetric OpenPGP messages/files
  • +
  • Refactored key edit screen (thanks to Ash Hughes)
  • +
  • New modern design for encrypt/decrypt screens
  • +
  • OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)
  • +
+

2.4

+

Thanks to all applicants of Google Summer of Code 2014 who made this release feature rich and bug free! +Besides several small patches, a notable number of patches are made by the following people (in alphabetical order): +Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.

+
    +
  • New unified key list
  • +
  • Colorized key fingerprint
  • +
  • Support for keyserver ports
  • +
  • Deactivate possibility to generate weak keys
  • +
  • Much more internal work on the API
  • +
  • Certify user ids
  • +
  • Keyserver query based on machine-readable output
  • +
  • Lock navigation drawer on tablets
  • +
  • Suggestions for emails on creation of keys
  • +
  • Search in public key lists
  • +
  • And much more improvements and fixes…
  • +
+

2.3.1

+
    +
  • Hotfix for crash when upgrading from old versions
  • +
+

2.3

+
    +
  • Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)
  • +
  • Fix setting expiry dates on keys (thanks to Ash Hughes)
  • +
  • More internal fixes when editing keys (thanks to Ash Hughes)
  • +
  • Querying keyservers directly from the import screen
  • +
  • Fix layout and dialog style on Android 2.2-3.0
  • +
  • Fix crash on keys with empty user ids
  • +
  • Fix crash and empty lists when coming back from signing screen
  • +
  • Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source
  • +
  • Fix upload of key from signing screen
  • +
+

2.2

+
    +
  • New design with navigation drawer
  • +
  • New public key list design
  • +
  • New public key view
  • +
  • Bug fixes for importing of keys
  • +
  • Key cross-certification (thanks to Ash Hughes)
  • +
  • Handle UTF-8 passwords properly (thanks to Ash Hughes)
  • +
  • First version with new languages (thanks to the contributors on Transifex)
  • +
  • Sharing of keys via QR Codes fixed and improved
  • +
  • Package signature verification for API
  • +
+

2.1.1

+
    +
  • API Updates, preparation for K-9 Mail integration
  • +
+

2.1

+
    +
  • Lots of bug fixes
  • +
  • New API for developers
  • +
  • PRNG bug fix by Google
  • +
+

2.0

+
    +
  • Complete redesign
  • +
  • Share public keys via QR codes, NFC beam
  • +
  • Sign keys
  • +
  • Upload keys to server
  • +
  • Fixes import issues
  • +
  • New AIDL API
  • +
+

1.0.8

+
    +
  • Basic keyserver support
  • +
  • App2sd
  • +
  • More choices for passphrase cache: 1, 2, 4, 8, hours
  • +
  • Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)
  • +
  • Bugfixes
  • +
  • Optimizations
  • +
+

1.0.7

+
    +
  • Fixed problem with signature verification of texts with trailing newline
  • +
  • More options for passphrase cache time to live (20, 40, 60 mins)
  • +
+

1.0.6

+
    +
  • Account adding crash on Froyo fixed
  • +
  • Secure file deletion
  • +
  • Option to delete key file after import
  • +
  • Stream encryption/decryption (gallery, etc.)
  • +
  • New options (language, force v3 signatures)
  • +
  • Interface changes
  • +
  • Bugfixes
  • +
+

1.0.5

+
    +
  • German and Italian translation
  • +
  • Much smaller package, due to reduced BC sources
  • +
  • New preferences GUI
  • +
  • Layout adjustment for localization
  • +
  • Signature bugfix
  • +
+

1.0.4

+
    +
  • Fixed another crash caused by some SDK bug with query builder
  • +
+

1.0.3

+
    +
  • Fixed crashes during encryption/signing and possibly key export
  • +
+

1.0.2

+
    +
  • Filterable key lists
  • +
  • Smarter pre-selection of encryption keys
  • +
  • New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers
  • +
  • Fixes and additional features (key preselection) for K-9 Mail, new beta build available
  • +
+

1.0.1

+
    +
  • GMail account listing was broken in 1.0.0, fixed again
  • +
+

1.0.0

+
    +
  • K-9 Mail integration, APG supporting beta build of K-9 Mail
  • +
  • Support of more file managers (including ASTRO)
  • +
  • Slovenian translation
  • +
  • New database, much faster, less memory usage
  • +
  • Defined Intents and content provider for other apps
  • +
  • Bugfixes
  • +
+ + diff --git a/OpenKeychain/src/main/res/raw-eu/help_nfc_beam.html b/OpenKeychain/src/main/res/raw-eu/help_nfc_beam.html new file mode 100644 index 000000000..966fb554a --- /dev/null +++ b/OpenKeychain/src/main/res/raw-eu/help_nfc_beam.html @@ -0,0 +1,12 @@ + + + +

How to receive keys

+
    +
  1. Go to your partners keys and open the key you want to share.
  2. +
  3. Hold the two devices back to back (they have to be almost touching) and you’ll feel a vibration.
  4. +
  5. After it vibrates you’ll see the content on your partners device turn into a card-like object with Star Trek warp speed-looking animation in the background.
  6. +
  7. Tap the card and the content will then load on the your device.
  8. +
+ + diff --git a/OpenKeychain/src/main/res/raw-eu/help_start.html b/OpenKeychain/src/main/res/raw-eu/help_start.html new file mode 100644 index 000000000..92fd4a92a --- /dev/null +++ b/OpenKeychain/src/main/res/raw-eu/help_start.html @@ -0,0 +1,19 @@ + + + +

Getting started

+

First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.

+ +

On Android lower 4.4, it is recommended that you install OI File Manager for enhanced file selection.

+ +

I found a bug in OpenKeychain!

+

Please report the bug using the issue tracker of OpenKeychain.

+ +

Contribute

+

If you want to help us developing OpenKeychain by contributing code follow our small guide on Github.

+ +

Translations

+

Help translating OpenKeychain! Everybody can participate at OpenKeychain on Transifex.

+ + + diff --git a/OpenKeychain/src/main/res/raw-eu/help_wot.html b/OpenKeychain/src/main/res/raw-eu/help_wot.html new file mode 100644 index 000000000..2a551f79c --- /dev/null +++ b/OpenKeychain/src/main/res/raw-eu/help_wot.html @@ -0,0 +1,17 @@ + + + +

Web of Trust

+

The Web of Trust describes the part of OpenPGP which deals with creation and bookkeeping of certifications. It provides mechanisms to help the user keep track of who a public key belongs to, and share this information with others; To ensure the privacy of encrypted communication, it is essential to know that the public key you encrypt to belongs to the person you think it does.

+ +

Support in OpenKeychain

+

There is only basic support for Web of Trust in OpenKeychain. This is a heavy work in progress and subject to changes in upcoming releases.

+ +

Trust Model

+

Trust evaluation is based on the simple assumption that all keys which have secret keys available are trusted. Public keys which contain at least one user id certified by a trusted key will be marked with a green dot in the key listings. It is not (yet) possible to specify trust levels for certificates of other known public keys.

+ +

Certifying keys

+

Support for key certification is available, and user ids can be certified individually. It is not yet possible to specify the level of trust or create local and other special types of certificates.

+ + + diff --git a/OpenKeychain/src/main/res/raw-eu/nfc_beam_share.html b/OpenKeychain/src/main/res/raw-eu/nfc_beam_share.html new file mode 100644 index 000000000..083e055c7 --- /dev/null +++ b/OpenKeychain/src/main/res/raw-eu/nfc_beam_share.html @@ -0,0 +1,11 @@ + + + +
    +
  1. Make sure that NFC is turned on in Settings > More > NFC and make sure that Android Beam is also on in the same section.
  2. +
  3. Hold the two devices back to back (they have to be almost touching) and you'll feel a vibration.
  4. +
  5. After it vibrates you'll see the content on your device turn into a card-like object with Star Trek warp speed-looking animation in the background.
  6. +
  7. Tap the card and the content will then load on the other person’s device.
  8. +
+ + diff --git a/OpenKeychain/src/main/res/raw-ru/help_changelog.html b/OpenKeychain/src/main/res/raw-ru/help_changelog.html index 0cb7d5210..6c22f1315 100644 --- a/OpenKeychain/src/main/res/raw-ru/help_changelog.html +++ b/OpenKeychain/src/main/res/raw-ru/help_changelog.html @@ -4,229 +4,229 @@

3.1.2

    -
  • Fix key export to files (now for real)
  • +
  • Исправление экспорта ключей в файл (на этот раз точно)

3.1.1

    -
  • Fix key export to files (they were written partially)
  • -
  • Fix crash on Android 2.3
  • +
  • Исправление экспорта ключей (записывались частично)
  • +
  • Исправление падений на Android 2.3

3.1

    -
  • Fix crash on Android 5
  • -
  • New certify screen
  • -
  • Secure Exchange directly from key list (SafeSlinger library)
  • -
  • New QR Code program flow
  • -
  • Redesigned decrypt screen
  • -
  • New icon usage and colors
  • -
  • Fix import of secret keys from Symantec Encryption Desktop
  • -
  • Subkey IDs on Yubikeys are now checked correctly
  • +
  • Исправление падений на Android 5
  • +
  • Новый диалог сертификации
  • +
  • Безопасный обмен ключами из списка (SafeSlinger library)
  • +
  • Новый обработчик QR кодов
  • +
  • Изменение дизайна диалога расшифровки
  • +
  • Использование новых иконок и цветов
  • +
  • Исправлен импорт закрытых ключей из Symantec Encryption Desktop
  • +
  • Корректная проверка идентификаторов доп. ключей на Yubikeys

3.0.1

    -
  • Better handling of large key imports
  • -
  • Improved subkey selection
  • +
  • Улучшение обработки импорта больших ключей
  • +
  • Улучшение выбора доп. ключей

3.0

    -
  • Full support for Yubikey signature generation and decryption!
  • -
  • Propose installable compatible apps in apps list
  • -
  • New design for decryption screens
  • -
  • Many fixes for key import, also fixes stripped keys
  • -
  • Honor and display key authenticate flags
  • -
  • User interface to generate custom keys
  • -
  • Fixing user id revocation certificates
  • -
  • New cloud search (searches over traditional keyservers and keybase.io)
  • -
  • Support for stripping keys inside OpenKeychain
  • +
  • Полная поддержка подписания и расшифровки с Yubikey!
  • +
  • Предлагаются для установки совместимые программы
  • +
  • Новый дизайн для диалога расшифровки
  • +
  • Исправление ошибок импорта ключей и исправление сжатых ключей
  • +
  • Обработка и отображение флагов ключей
  • +
  • Пользовательский интерфейс для генерации ключей
  • +
  • Исправление сертификатов отзыва
  • +
  • Новый облачный поиск (ищет на традиционных серверах и keybase.io)
  • +
  • Поддержка сжатых ключей в OpenKeychain

2.9.2

    -
  • Fix keys broken in 2.9.1
  • -
  • Yubikey decryption now working via API
  • +
  • Исправление ключей, сломанных в 2.9.1
  • +
  • Расшифровка с Yubikey теперь работает через API

2.9.1

    -
  • Split encrypt screen into two
  • -
  • Fix key flags handling (now supporting Mailvelope 0.7 keys)
  • -
  • Improved passphrase handling
  • -
  • Key sharing via SafeSlinger
  • -
  • Yubikey: preference to allow other PINs, currently only signing via the OpenPGP API works, not inside of OpenKeychain
  • -
  • Fix usage of stripped keys
  • -
  • SHA256 as default for compatibility
  • -
  • Intent API has changed, see https://github.com/open-keychain/open-keychain/wiki/Intent-API
  • -
  • OpenPGP API now handles revoked/expired keys and returns all user ids
  • +
  • Разделение диалога шифрования на два окна
  • +
  • Исправление обработки флагов ключей (теперь поддерживаются ключи Mailvelope 0.7)
  • +
  • Улучшение обработчика паролей
  • +
  • Передача ключей через SafeSlinger
  • +
  • Yubikey: опция использования других PIN, пока работает только подписание через OpenPGP API, не внутри OpenKeychain
  • +
  • Исправление использования сжатых ключей
  • +
  • SHA256 по умолчанию для совместимости
  • +
  • Изменение API. См. https://github.com/open-keychain/open-keychain/wiki/Intent-API
  • +
  • OpenPGP API теперь обрабатывает отозванные/просроченные ключи и возвращает все идентификаторы

2.9

    -
  • Fixing crashes introduced in v2.8
  • -
  • Experimental ECC support
  • -
  • Experimental Yubikey support (signing-only with imported keys)
  • +
  • Исправление падений, выявленных в 2.8
  • +
  • Экспериментальная поддержка Эллиптических кривых
  • +
  • Экспериментальная поддержка Yubikey (вход по импортированному ключу)

2.8

    -
  • So many bugs have been fixed in this release that we focus on the main new features
  • -
  • Key edit: awesome new design, key revocation
  • -
  • Key import: awesome new design, secure keyserver connections via hkps, keyserver resolving via DNS SRV records
  • -
  • New first time screen
  • -
  • New key creation screen: autocompletion of name and email based on your personal Android accounts
  • -
  • File encryption: awesome new design, support for encrypting multiple files
  • -
  • New icons to show status of key (by Brennan Novak)
  • -
  • Important bug fix: Importing of large key collections from a file is now possible
  • -
  • Notification showing cached passphrases
  • -
  • Keys are connected to Android's contacts
  • -
-

This release wouldn't be possible without the work of Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar

+
  • Так много небольших исправлений, что лучше сообщить о существенных изменениях
  • +
  • Изменение ключа: новый дизайн, аннулирование клуча
  • +
  • Импорт ключа: усовершенствованный дизайн, безопасное соединение с серверами ключей по протоколу hkps, определение серверов по записям DNS SRV
  • +
  • Новый диалог при первом запуске
  • +
  • Экран создания ключа: автодополнение имени и адреса почты из учетной записи Android
  • +
  • Шифрование файла: усовершенствованный дизайн, возможность шифрования нескольких файлов
  • +
  • Новые иконки статуса ключа (Brennan Novak)
  • +
  • Важное исправление: Теперь возможен импорт большого количества ключей из одного файла
  • +
  • Уведомление о запомненных паролях
  • +
  • Ключи соединяются с контактами Android
  • + +

    Этот релиз стал возможен благодаря работе Vincent Breitmoser (GSoC 2014), mar-v-in (GSoC 2014), Daniel Albert, Art O Cathain, Daniel Haß, Tim Bray, Thialfihar

    2.7

      -
    • Purple! (Dominik, Vincent)
    • -
    • New key view design (Dominik, Vincent)
    • -
    • New flat Android buttons (Dominik, Vincent)
    • -
    • API fixes (Dominik)
    • -
    • Keybase.io import (Tim Bray)
    • +
    • Пурпурный! (Dominik, Vincent)
    • +
    • Новый вид просмотра ключей (Dominik, Vincent)
    • +
    • Новый вид кнопок в стиле Android (Dominik, Vincent)
    • +
    • Исправления API (Dominik)
    • +
    • Импорт Keybase.io (Tim Bray)

    2.6.1

      -
    • Some fixes for regression bugs
    • +
    • Исправления найденных ошибок

    2.6

      -
    • Key certifications (thanks to Vincent Breitmoser)
    • -
    • Support for GnuPG partial secret keys (thanks to Vincent Breitmoser)
    • -
    • New design for signature verification
    • -
    • Custom key length (thanks to Greg Witczak)
    • -
    • Fix share-functionality from other apps
    • +
    • Сертификация ключей (благодаря Vincent Breitmoser)
    • +
    • Поддержка частично-секретных ключей GnuPG (благодаря Vincent Breitmoser)
    • +
    • Новый дизайн проверки подписи
    • +
    • Произвольная длина ключей (благодаря Greg Witczak)
    • +
    • Исправление ошибки получения данных от других приложений

    2.5

      -
    • Fix decryption of symmetric OpenPGP messages/files
    • -
    • Refactored key edit screen (thanks to Ash Hughes)
    • -
    • New modern design for encrypt/decrypt screens
    • -
    • OpenPGP API version 3 (multiple api accounts, internal fixes, key lookup)
    • +
    • Исправлено симметричное шифрование сообщений/файлов
    • +
    • Переработано окно изменения ключа (благодаря Ash Hughes)
    • +
    • Новый дизайн для окон шифрования/расшифровки
    • +
    • OpenPGP API версии 3 (множественные аккаунты, внутренние исправления, поиск ключей)

    2.4

    -

    Thanks to all applicants of Google Summer of Code 2014 who made this release feature rich and bug free! -Besides several small patches, a notable number of patches are made by the following people (in alphabetical order): +

    Спасибо всем участникам Google Summer of Code 2014, которые помогли сделать этот выпуск, добавив функции и исправив ошибки! +Из общего числа патчей, особенный вклад внесли следующие люди (в алфавитном порядке): Daniel Hammann, Daniel Haß, Greg Witczak, Miroojin Bakshi, Nikhil Peter Raj, Paul Sarbinowski, Sreeram Boyapati, Vincent Breitmoser.

      -
    • New unified key list
    • -
    • Colorized key fingerprint
    • -
    • Support for keyserver ports
    • -
    • Deactivate possibility to generate weak keys
    • -
    • Much more internal work on the API
    • -
    • Certify user ids
    • -
    • Keyserver query based on machine-readable output
    • -
    • Lock navigation drawer on tablets
    • -
    • Suggestions for emails on creation of keys
    • -
    • Search in public key lists
    • -
    • And much more improvements and fixes…
    • +
    • Новый объединенный список ключей
    • +
    • Цветовая индикация отпечатков ключей
    • +
    • Поддержка портов серверов ключей
    • +
    • Отключена возможность создавать слабые ключи
    • +
    • Ещё больше улучшений работы API
    • +
    • Сертификация пользовательских данных
    • +
    • Запрос к серверу ключей основывается на машинном формате вывода
    • +
    • Фиксация панели на планшетах
    • +
    • Подсказки email при создании ключей
    • +
    • Поиск в списках публичных ключей
    • +
    • И множество других исправлений и улучшений...

    2.3.1

      -
    • Hotfix for crash when upgrading from old versions
    • +
    • Исправление ошибки при обновлении со старых версий

    2.3

      -
    • Remove unnecessary export of public keys when exporting secret key (thanks to Ash Hughes)
    • -
    • Fix setting expiry dates on keys (thanks to Ash Hughes)
    • -
    • More internal fixes when editing keys (thanks to Ash Hughes)
    • -
    • Querying keyservers directly from the import screen
    • -
    • Fix layout and dialog style on Android 2.2-3.0
    • -
    • Fix crash on keys with empty user ids
    • -
    • Fix crash and empty lists when coming back from signing screen
    • -
    • Bouncy Castle (cryptography library) updated from 1.47 to 1.50 and build from source
    • -
    • Fix upload of key from signing screen
    • +
    • Удален не требующийся экспорт публичного ключа при экспорте секретного ключа (спасибо, Ash Hughes)
    • +
    • Исправлена ошибка срока годности ключей (спасибо, Ash Hughes)
    • +
    • Исправления ошибок при изменении ключей (спасибо, Ash Hughes)
    • +
    • Запрос ключа с сервера прямо из окна импорта ключей
    • +
    • Исправление внешнего вида для Android 2.2-3.0
    • +
    • Исправлено падение когда ключ не содержал идентификатор пользователя
    • +
    • Исправлено падение и пустой список при возвращении из окна подписания
    • +
    • Криптографическая библиотека Bouncy Castle обновлена с версии 1.47 до 1.50 и пересобрана
    • +
    • Исправлена загрузка ключа из окна подписания

    2.2

      -
    • New design with navigation drawer
    • -
    • New public key list design
    • -
    • New public key view
    • -
    • Bug fixes for importing of keys
    • -
    • Key cross-certification (thanks to Ash Hughes)
    • -
    • Handle UTF-8 passwords properly (thanks to Ash Hughes)
    • -
    • First version with new languages (thanks to the contributors on Transifex)
    • -
    • Sharing of keys via QR Codes fixed and improved
    • -
    • Package signature verification for API
    • +
    • Новый дизайн с боковой панелью
    • +
    • Новый дизайн списка ключей
    • +
    • Новый вид просмотра ключа
    • +
    • Исправление ошибок импорта ключей
    • +
    • Кросс-сертификация ключей (спасибо, Ash Hughes)
    • +
    • Правильная обработка паролей в UTF-8 (спасибо, Ash Hughes)
    • +
    • Первая версия с новыми языками (спасибо переводчикам с Transifex)
    • +
    • Исправление и улучшение передачи ключей через QR коды
    • +
    • Проверка подписей пакетов для API

    2.1.1

      -
    • API Updates, preparation for K-9 Mail integration
    • +
    • Обновление API, подготовка к интеграции с K-9 Mail

    2.1

      -
    • Lots of bug fixes
    • -
    • New API for developers
    • -
    • PRNG bug fix by Google
    • +
    • Множество исправлений ошибок
    • +
    • Новый API для разработчиков
    • +
    • Исправление ошибки генератора случайных чисел

    2.0

      -
    • Complete redesign
    • -
    • Share public keys via QR codes, NFC beam
    • -
    • Sign keys
    • -
    • Upload keys to server
    • -
    • Fixes import issues
    • -
    • New AIDL API
    • +
    • Переработка дизайна
    • +
    • Передача ключей через QR коды и NFC
    • +
    • Подписание ключей
    • +
    • Загрузка ключей на сервер
    • +
    • Исправление проблем импорта
    • +
    • Новый AIDL API

    1.0.8

      -
    • Basic keyserver support
    • -
    • App2sd
    • -
    • More choices for passphrase cache: 1, 2, 4, 8, hours
    • -
    • Translations: Norwegian (thanks, Sander Danielsen), Chinese (thanks, Zhang Fredrick)
    • -
    • Bugfixes
    • -
    • Optimizations
    • +
    • Поддержка серверов ключей
    • +
    • App2SD
    • +
    • Больше вариантов сохранения кэша пароля: 1, 2, 4, 8 часов
    • +
    • Переводы: Норвежский (спасибо, Sander Danielsen), Китайский (спасибо, Zhang Fredrick)
    • +
    • Исправления ошибок
    • +
    • Оптимизация

    1.0.7

      -
    • Fixed problem with signature verification of texts with trailing newline
    • -
    • More options for passphrase cache time to live (20, 40, 60 mins)
    • +
    • Исправление ошибки при проверке подписи текста с переводом строки
    • +
    • Больше вариантов сохранения кэша пароля (20, 40, 60 минут)

    1.0.6

      -
    • Account adding crash on Froyo fixed
    • -
    • Secure file deletion
    • -
    • Option to delete key file after import
    • -
    • Stream encryption/decryption (gallery, etc.)
    • -
    • New options (language, force v3 signatures)
    • -
    • Interface changes
    • -
    • Bugfixes
    • +
    • Исправление ошибки создания записи на Froyo
    • +
    • Безопасное удаление файлов
    • +
    • Опция удаления файла ключа после импорта
    • +
    • Передача шифрования (галерея и т.д.)
    • +
    • Новые возможности (язык, v3 подписи)
    • +
    • Изменения интерфейса
    • +
    • Исправления ошибок

    1.0.5

      -
    • German and Italian translation
    • -
    • Much smaller package, due to reduced BC sources
    • -
    • New preferences GUI
    • -
    • Layout adjustment for localization
    • -
    • Signature bugfix
    • +
    • Новые языки: немецкий, итальянский
    • +
    • Значительное уменьшение размера программы
    • +
    • Новый интерфейс настроек
    • +
    • Изменение вида для локализации
    • +
    • Исправление ошибки подписи

    1.0.4

      -
    • Fixed another crash caused by some SDK bug with query builder
    • +
    • Исправление еще одной ошибки, возникающей в SDK

    1.0.3

      -
    • Fixed crashes during encryption/signing and possibly key export
    • +
    • Исправление ошибок при шифровании/подписании и экспорте ключей

    1.0.2

      -
    • Filterable key lists
    • -
    • Smarter pre-selection of encryption keys
    • -
    • New Intent handling for VIEW and SEND, allows files to be encrypted/decrypted out of file managers
    • -
    • Fixes and additional features (key preselection) for K-9 Mail, new beta build available
    • +
    • Фильтр списка ключей
    • +
    • Улучшение выбора ключей шифрования
    • +
    • Добавлена возможность шифровать файлы прямо из файлового менеджера
    • +
    • Исправления ошибок и новые возможности для интеграции с K-9 Mail

    1.0.1

      -
    • GMail account listing was broken in 1.0.0, fixed again
    • +
    • Исправление выбора учетной записи GMail, сломанного в 1.0.0

    1.0.0

      -
    • K-9 Mail integration, APG supporting beta build of K-9 Mail
    • -
    • Support of more file managers (including ASTRO)
    • -
    • Slovenian translation
    • -
    • New database, much faster, less memory usage
    • -
    • Defined Intents and content provider for other apps
    • -
    • Bugfixes
    • +
    • интеграция с K-9 Mail, APG поддерживает beta-версию K-9 Mail
    • +
    • Поддержка сторонних файловых менеджеров (в т.ч. ASTRO)
    • +
    • Словенский перевод
    • +
    • Новая база данных, еще быстрее и компактнее
    • +
    • Добавлены обработчики для взаимодействия с другими приложениями
    • +
    • Исправления ошибок
    diff --git a/OpenKeychain/src/main/res/raw-ru/help_nfc_beam.html b/OpenKeychain/src/main/res/raw-ru/help_nfc_beam.html index 5ed10635d..fcf55cdaf 100644 --- a/OpenKeychain/src/main/res/raw-ru/help_nfc_beam.html +++ b/OpenKeychain/src/main/res/raw-ru/help_nfc_beam.html @@ -3,7 +3,7 @@

    Как обменяться ключами

      -
    1. Go to your partners keys and open the key you want to share.
    2. +
    3. Нажмите и удерживайте ключ, который вы хотите передать.
    4. Поднесите оба устройства вплотную обратными сторонами (до полного касания). Вы почувствуете небольшую вибрацию.
    5. Как только устройства завибрируют, на экране появится карточка с передаваемым содержимым.
    6. Нажмите на карточку, что бы передать данные (ключи) с одного устройства на другое.
    7. diff --git a/OpenKeychain/src/main/res/raw-ru/help_start.html b/OpenKeychain/src/main/res/raw-ru/help_start.html index ef91a4131..1463d374d 100644 --- a/OpenKeychain/src/main/res/raw-ru/help_start.html +++ b/OpenKeychain/src/main/res/raw-ru/help_start.html @@ -2,9 +2,9 @@

      Приступая

      -

      First you need a personal key. Create one via the menu in "Keys" or import existing secret keys. Afterwards, you can download your friends' keys or exchange them via QR Codes or NFC.

      +

      Для начала Вам нужен свой секретный ключ. Создайте его в меню раздела "Ключи" или импортируйте ранее созданный ключ. Позже вы сможете поделиться данными своего ключа с друзьями с помощью QR кода или NFC.

      -

      On Android lower 4.4, it is recommended that you install OI File Manager for enhanced file selection.

      +

      На Android ниже 4.4, рекомендуется установить OI File Manager для выбора файлов.

      Я нашел ошибку в OpenKeychain!

      Пожалуйста, сообщайте о возникших проблемах и найденных ошибках в разделе Решение проблем OpenKeychain.

      diff --git a/OpenKeychain/src/main/res/raw-ru/help_wot.html b/OpenKeychain/src/main/res/raw-ru/help_wot.html index 4da6c9a82..7fbde44d3 100644 --- a/OpenKeychain/src/main/res/raw-ru/help_wot.html +++ b/OpenKeychain/src/main/res/raw-ru/help_wot.html @@ -2,7 +2,7 @@

      Сеть доверия (WoT)

      -

      The Web of Trust describes the part of OpenPGP which deals with creation and bookkeeping of certifications. It provides mechanisms to help the user keep track of who a public key belongs to, and share this information with others; To ensure the privacy of encrypted communication, it is essential to know that the public key you encrypt to belongs to the person you think it does.

      +

      Сеть доверия (The Web of Trust) предоставляет механизм заверения ключей посредством присоединения и распространения информации о выполненной сертификации. Для гарантии безопасного зашифрованного общения крайне важно не сомневаться, что владельцем ключа является ваш собеседник.

      Поддержка в OpenKeychain

      В настоящее время реализованы только базовые возможности WoT. Работа в самом разгаре и в будущих версиях OpenKeychain будут появляться дополнительные возможности.

      diff --git a/OpenKeychain/src/main/res/values-bg/strings.xml b/OpenKeychain/src/main/res/values-bg/strings.xml index ef0a0ce94..233347bd3 100644 --- a/OpenKeychain/src/main/res/values-bg/strings.xml +++ b/OpenKeychain/src/main/res/values-bg/strings.xml @@ -36,6 +36,8 @@ + + @@ -54,6 +56,7 @@ + diff --git a/OpenKeychain/src/main/res/values-cs/strings.xml b/OpenKeychain/src/main/res/values-cs/strings.xml index cbf0eb0b8..903cc50f3 100644 --- a/OpenKeychain/src/main/res/values-cs/strings.xml +++ b/OpenKeychain/src/main/res/values-cs/strings.xml @@ -238,7 +238,6 @@ nebylo možné extrahovat privátní klíč Musíte mít Android 4.1 abyste mohli používat Androidí NFC Beam technologii! - NFC není na vašem zařízení k dispozici! Žádný klíč nenalezen! Příjem ID klíče od kontatktu selhal! Nastala obecná chyba, prosím vytvořte nový bug report pro OpenKeychain. @@ -432,6 +431,8 @@ Tato identita nebyla ještě ověřena. Nemůžete si být jisti, že identita skutečně odpovídá konkrétní osobě. Neplatná S touto identitou je něco v nepořádku! + + Změnit heslo Přidat identitu @@ -467,8 +468,6 @@ Celé jméno, např. Jan Novák Změnit konfiguraci klíče - Tento klíč byl zneplatněn! - Tento klíč vyexpiroval! Klíče Aplikace @@ -510,6 +509,7 @@ Klíč nenalezen! + Účet uložen diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml index e6416b28b..63b0c4c09 100644 --- a/OpenKeychain/src/main/res/values-de/strings.xml +++ b/OpenKeychain/src/main/res/values-de/strings.xml @@ -249,7 +249,6 @@ Privater Schlüssel konnte nicht extrahiert werden Android 4.1 wird benötigt um Androids NFC Beam nutzen zu können! - NFC steht auf diesem Gerät nicht zur Verfügung! Keine Schlüssel gefunden! Abrufen der Schlüsselkennung von den Kontakten ist fehlgeschlagen! Ein allgemeiner Fehler trat auf, bitte schreiben Sie einen neuen Bugreport für OpenKeychain. @@ -432,7 +431,6 @@ Verschlüsseln mit OpenKeychain Entschlüsseln mit OpenKeychain - Keine registrierten Apps!\n\nEine Liste der unterstützten Anwendungen ist in der \'Hilfe\' verfügbar. Erweiterte Informationen anzeigen Erweiterte Informationen ausblenden Erweiterte Einstellungen anzeigen @@ -497,6 +495,8 @@ Diese Identität wurde noch nicht beglaubigt. Sie können nicht sicher sein, ob diese Identität wirklich zu einer bestimmten Person gehört. Ungültig Irgend etwas ist mit dieser Identität nicht in Ordnung! + + Passwort ändern Identität hinzufügen @@ -532,8 +532,6 @@ Vollständiger Name, z.B. Max Mustermann Schlüsselkonfiguration ändern - Dieser Schlüssel wurde widerrufen! - Dieser Schlüssel ist nicht mehr gültig! Schlüssel Verschlüsseln/Entschlüsseln @@ -885,6 +883,7 @@ Anhang gefunden, symmetrisch verschlüsselte Daten Anhängende Daten unbekannter Art gefunden Geheimer Schlüssel wird entsperrt + Starte Signier-/Verschlüsselungsvorgang Keine Eingabe gegeben! diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml index e2c657f3e..0d7444c47 100644 --- a/OpenKeychain/src/main/res/values-es/strings.xml +++ b/OpenKeychain/src/main/res/values-es/strings.xml @@ -39,6 +39,9 @@ Claves Identificaciones + ¿Debe confiar en esta clave? + Prueba de verificación + Evidencia desde la nube Subclaves Búsqueda en la nube General @@ -71,6 +74,8 @@ Cargar al servidor de claves Siguiente Volver + No + Las huellas de validación son coincidentes Buscar clave Cifrar y compartir mensaje Ver clave de verificación @@ -90,6 +95,7 @@ Crear mi clave Importar desde fichero Buscar + Configuraciones NFC Ajustes de Beam Cancelar Cifrar hacia... @@ -98,6 +104,7 @@ Buscar en la nube Exportar todas las claves Mostrar información avanzada + Verificar vía comparación de huellas de validación Mensaje Archivo @@ -243,13 +250,14 @@ necesita al menos una identificación no has proporcionado una frase de contraseña no has proporcionado una clave de firma - ¡No hay contenido cifrado o firmado con OpenPGP válido! + ¡No es un contenido cifrado o firmado con OpenPGP válido! ¡ha fallado la comprobación de integridad! ¡Los datos han sido modificados! frase de contraseña incorrecta no se puede extraer la clave privada ¡Necesita Android 4.1 para usar la característica NFC Beam (haz NFC) de Android! - ¡NFC no está disponible en tu dispositivo! + ¡NFC ha de estar habilitado! + ¡Beam ha de estar habilitado! ¡No se encontraron claves! ¡Fallo al obtener clave de identificación desde los contactos! Ha ocurrido un error genérico, por favor, informa de este bug a OpenKeychain @@ -258,14 +266,14 @@ ¡Firma no válida! Firmado por (¡no certificada!) Firmado por - ¡La clave ha expirado! + ¡La clave ha caducado! ¡La clave ha sido revocada! Clave pública desconocida Cifrado No cifrado Mostrar Buscar - O bien la firma no es válida, o la clave ha sido revocada/ha expirado. No puede estar seguro de quién escribió el texto. ¿Todavía quiere mostrarlo? + O bien la firma no es válida, o la clave ha sido revocada o ha caducado. No puede estar seguro de quién escribió el texto. ¿Aún quiere mostrarlo? Comprendo los riesgos, ¡muéstralo! Mi clave: @@ -432,7 +440,6 @@ Cifrar con OpenKeychain Descifrar con OpenKeychain - ¡No hay aplicaciones registradas!\n\n¡Puede encontrar una lista de aplicaciones de terceros soportadas en \'Ayuda\'! Mostrar información avanzada Ocultar información avanzada Mostrar la configuración avanzada @@ -489,14 +496,54 @@ Compartir Subclaves Certificados + Keybase.io Revocada - Esta identificación ha sido revocada por el propietario de la clave. En adelante no es válida. + Esta identificación ha sido revocada por el propietario de la clave. En adelante no será válida. Certificada Esta identificación ha sido certificada por usted. No certificada Esta identificación de no ha sido certificada aún. No puede estar seguro de si la identificación corresponde en realidad a una persona específica. - No válido + No válida ¡Hay algo mal con esta identificación! + + ¡Ya ha certificado esta clave! + ¡Esta es una de sus claves! + Esta clave no está revocada ni caducada.\nNo la ha certificado, pero puede elegir confiar en ella. + Esta clave ha sido revocada por su propietario. No debe confiar en ella. + Esta clave ha caducado. No debe confiar en ella. + Puede ser correcto usar esta para descifrar un mensaje antiguo que date del momento en que esta clave estaba vigente. + No hay evidencia desde la nube de la fiabilidad de esta clave. + Comenzar búsqueda + Keybase.io ofrece \"pruebas\" que sostienen que el propietario de esta clave: + + Publica en Twitter como + Es conocido en GitHub como + Controla el(los) nombre(s) de dominio + Puede publicar en el(los) sitio(s) web + Publica en Reddit como + Es conocido en Coinbase como + Publica en Hacker News como + Tipo de prueba desconocido + Desafortunadamente esta prueba no puede ser verificada. + Problema no reconocido con el verificador de la prueba + Problema con la evidencia de la prueba + La huella de validación de clave no coincide con aquella en el post de la prueba + Fallo al obtener registro DNS TXT + No se encontró verificador de prueba para + El post de la prueba descifrada no coincide con el valor esperado + Descargado evidencia de la prueba + ¡Esta prueba ha sido verificada! + Un post + descargada desde + para el dominio + contiene un mensaje que sólo podría haber sido creado por el propietario de esta clave. + Un twit + Un registro DNS TXT + Un fichero de texto + Un gist + Un fichero JSON + atribuido por Reddit a + Verificar Cambiar frase-contraseña Añadir identificación @@ -532,8 +579,12 @@ Nombre completo, ej. Max Mustermann Cambiar configuración de clave - ¡Esta clave ha sido revocada! - ¡Esta clave ha expirado! + Revocada: ¡La clave no debe volver a ser usada! + Caducada: ¡El contacto necesita extender la vigencia de las claves! + Caducada: ¡Puede extender la vigencia de las claves al editarlas! + Mi clave + Clave verificada + No verificada: ¡Escanee el código QR para verificar la clave! Claves Cifrar/Descifrar @@ -570,8 +621,8 @@ Analizando claves Preparando base de datos de operaciones Procesando clave maestra %s - El juego de claves expiró el %s - El juego de claves expira el %s + El juego de claves caducó el %s + El juego de claves caduca el %s Indicativos maestros: no especificados (se asumen todos) Indicativos maestros: certificar, cifrar, firmar, autentificar Indicativos maestros: certificar, cifrar, firmar @@ -592,8 +643,8 @@ Incorporando datos importados al juego de claves público existente Incorporando datos importados al juego de claves público existente Procesando subclave %s - La subclave expiró el %s - La subclave expira el %s + La subclave caducó el %s + La subclave caduca el %s Indicativos de subclave: no especificados (se asumen todos) Indicativos de subclave: certificar, cifrar, firmar, autentificar Indicativos de subclave: certificar, cifrar, firmar @@ -686,17 +737,17 @@ Eliminando certificado de notación redundante Eliminando certificado de notación vacía Procesando subclave %s - Eliminando certificado no válido de vinculación de subclave + Eliminando certificado no vigente de vinculación de subclave Eliminando certificado defectuoso de vinculación de subclave Eliminando certificado de vinculación de subclave, con distintivo \"local\" La identificación del publicante de la vinculación de subclave no coincide Eliminando certificado de vinculación de subclave, con marca de tiempo futura Tipo de certificado de subclave desconocido: %s Eliminando certificado redundante de vinculación de subclave - Eliminando certificado de vinculación de subclave debido a un certificado de vinculación principal no válido + Eliminando certificado de vinculación de subclave debido a un certificado de vinculación principal no vigente Eliminando certificado de vinculación de subclave debido a un certificado de vinculación principal defectuoso Eliminando certificado de vinculación de subclave debido a un certificado de vinculación principal ausente - No se encontró ningún certificado válido para %s, eliminándola del juego de claves + No se encontró ningún certificado vigente para %s, eliminándola del juego de claves Eliminando certificado defectuoso de revocación de subclave Eliminando certificado defectuoso de revocación de subclave Eliminando certificado redundante de revocación de subclave @@ -722,7 +773,7 @@ Eliminando certificado por \'%s\' de identificación de usuario ajeno Eliminando certificado de revocación redundante para la identificación de usuario \'%s\' Eliminando certificado de revocación caducado para la identificación de usuario \'%s\' - No se encontró auto-certificado válido para la identificación de usuario \'%s\', eliminándola del juego de claves + No se encontró auto-certificado vigente para la identificación de usuario \'%s\', eliminándola del juego de claves Eliminando identificación de usuario \'%s\' no válida Eliminando identificaciones de usuario duplicadas \'%s\'. El juego de claves contenía dos de ellas. ¡Esto puede resultar en certificados perdidos! ¡La identificación de usuario no se verifica como UTF-8! @@ -896,6 +947,18 @@ Se encontró huella, datos cifrados simétricamente Se encontró huella, datos de tipo desconocido Desbloqueando clave secreta (privada) + + Comenzando comprobación de firma + No hay lista de firmas en los datos literales firmados + Mensaje no firmado con una clave correcta + No hay carga útil en los datos literales firmados + Nombre de fichero: %s + Tipo MIME: %s + Fecha de modificación: %s + Tamaño de fichero: %s + Verificando datos de firma + ¡Error de comprobación de integridad! + Correcto Iniciando operación de firmado/cifrado Procesando entrada de matriz de bytes @@ -1007,7 +1070,7 @@ Cuenta guardada ¡Descargado con éxito! - ¡No se encontraron clave válidas en el fichero/portapapeles! + ¡No se encontraron claves vigentes en el fichero/portapapeles! PENDIENTE: ¡plurales! parte del archivo cargado es un objeto OpenPGP válido pero no una clave OpenPGP @@ -1037,6 +1100,8 @@ Aquí sólo se muestran auto-certificados validados y certificados validados creados con sus claves. Identificaciones para Las claves que está importando contienen \"identificaciones\": nombres y correos electrónicos. Para certificación seleccione exactamente aquellas que coinciden con lo que usted esperaba. + Compare la huella de validación mostrada, caracter por caracter, con la que se muestra en el dispositivo de su colega. + ¿Coinciden las huellas de validación mostradas? Razón de la revocación Estado de la verificación Tipo diff --git a/OpenKeychain/src/main/res/values-et/strings.xml b/OpenKeychain/src/main/res/values-et/strings.xml index 992d1db91..057eb8e00 100644 --- a/OpenKeychain/src/main/res/values-et/strings.xml +++ b/OpenKeychain/src/main/res/values-et/strings.xml @@ -90,6 +90,8 @@ + + @@ -108,6 +110,7 @@ + diff --git a/OpenKeychain/src/main/res/values-eu/strings.xml b/OpenKeychain/src/main/res/values-eu/strings.xml new file mode 100644 index 000000000..233347bd3 --- /dev/null +++ b/OpenKeychain/src/main/res/values-eu/strings.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OpenKeychain/src/main/res/values-fi/strings.xml b/OpenKeychain/src/main/res/values-fi/strings.xml index 468d7b835..804383637 100644 --- a/OpenKeychain/src/main/res/values-fi/strings.xml +++ b/OpenKeychain/src/main/res/values-fi/strings.xml @@ -214,6 +214,8 @@ + + @@ -232,6 +234,7 @@ + diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml index 6d0733625..50bd53921 100644 --- a/OpenKeychain/src/main/res/values-fr/strings.xml +++ b/OpenKeychain/src/main/res/values-fr/strings.xml @@ -39,6 +39,9 @@ Clefs identités + Devriez-vous faire confiance à cette clef ? + Vérification de preuve + Preuve provenant du nuage Sous-clefs Recherche nuagique Général @@ -71,6 +74,8 @@ Téléverser vers le serveur de clefs Suivant Retour + Non + Les empreintes correspondent Rechercher la clef Chiffrer et partager le message Voir la clef de certification @@ -90,6 +95,7 @@ Créer ma clef Importer depuis un fichier Rechercher + Paramètres NFC Paramètres Beam Annuler Chiffrer vers... @@ -98,6 +104,7 @@ Rechercher dans le nuage Exporter toutes les clefs Afficher les infos avancées + Vérifier par comparaison d\'empreintes Message Fichier @@ -249,7 +256,8 @@ impossible d\'extraire la clef privée Il vous faut Android 4.1 pour utiliser la fonction Beam NFC d\'Android ! - La NFC n\'est pas proposée sur votre appareil ! + La NFC doit être activée ! + Beam doit être activé ! Aucune clef trouvée ! Échec lors de la récupération de l\'ID de clef à partir des contacts ! Une erreur générique est survenue, veuillez créer un nouveau rapport de bogue pour OpenKeychain. @@ -432,7 +440,6 @@ Chiffrer avec OpenKeychain Déchiffrer avec OpenKeychain - Aucune application enregistrée !\n\nUne liste d\'applications tierces prises en charge peut être trouvée dans l\'« Aide » ! Afficher les informations avancées Masquer les informations avancées Afficher les paramètres avancés @@ -489,6 +496,7 @@ Partager Sous-clefs Certificats + Keybase.io Révoquée Cette identité a été révoquée par le propriétaire de la clef. Elle n\'est plus valide. Certifié @@ -497,6 +505,43 @@ Cette identité n\'a pas encore été certifiée. Vous ne pouvez pas être sûr que l\'identité correspond vraiment à une personne spécifique. Invalide Quelque chose ne va pas avec cette identité ! + + Vous avez déjà certifié cette clef ! + C\'est une de vos clefs ! + Cette clef n\'est ni révoquée, ni expirée.\nVous ne l\'avez pas certifiée, mais vous pourriez décider de lui faire confiance. + Cette clef a été révoquée par son propriétaire. Vous ne devriez pas lui faire confiance. + Cette clef est expirée. Vous ne devriez pas lui faire confiance. + Vous pourriez l\'utiliser pour déchiffrer un ancien message datant de la période de validité de la clef. + Aucune preuve de fiabilité provenant du nuage pour cette clef. + Lancer la recherche + Keybase.io offre des « preuves » affirmant que le propriétaire de cette clef : + + Publie vers Twitter en tant que + Est connu sur GitHub en tant que + Contrôle le/les nom(s) de domaine + Peut publier vers le/les site(s) Web + Publie sur Reddit en tant que + Est connu sur Coinbase en tant que + Publie sur « Hacker News » en tant que + Type de preuve inconnu + Malheureusement cette preuve ne peut pas être vérifiée. + Problème inconnu avec le vérificateur de preuve + L\'empreinte de clef ne correspondant pas à celle du billet de preuve + Échec lors de la récupération de l\'enregistrement DNS TXT + Aucun vérificateur de preuve trouvé pour + Le billet de preuve déchiffré ne correspond pas à la valeur attendue + Cette preuve a été vérifié ! + Un billet + récupéré de + pour le domaine + contient un message qui a seulement pu être créé par le propriétaire de cette clef. + Un gazouillis + Un enregistrement DNS TXT + Un fichier texte + Un gist + Un fichier JSON + attribué par Reddit à + Vérifier Changer la phrase de passe Ajouter une identité @@ -532,8 +577,12 @@ Nom complet, p. ex. Marc-Olivier Lagacé Changer la configuration de la clef - Cette clef a été révoquée ! - Cette clef est expirée ! + Révoquée : la clef ne doit plus être utilisée ! + Expirée : le contact doit prolonger la validité de la clef ! + Expirée : vous pouvez prolonger la validité de la clef en la modifiant ! + Ma clef + Clef vérifiée + Non vérifiée : balayez le code QR pour vérifier la clef ! Clefs Chiffrer/déchiffrer @@ -896,6 +945,8 @@ Des données traînantes chiffrées symétriquement ont été rencontrées Des données traînantes de type inconnu ont été rencontrées Déverrouillage de la clef secrète + + Lancement de la vérification de la signature Début de l\'opération de signature/chiffrement Traitement de l\'entrée du tableau de bytes @@ -1037,6 +1088,8 @@ Seuls les auto-certificats et les certificats validés créés avec vos clefs sont affichés ici. Identités pour Les clefs que vous importez contiennent des « identités » : des noms et des adresses courriel. Choisissez exactement ceux qui correspondent à ce que vous attendiez. + Comparez l\'empreinte affichée, caractère par caractère, à celle affichée sur l\'appareil de l\'autre personne. + Est-ce que les empreintes affichées correspondent ? Raison de la révocation État de vérification Type @@ -1058,6 +1111,7 @@ L\'enregistrement des fichiers multiples n\'est pas pris en charge. Ceci est actuellement une limitation d\'Android. Clef : Pour démarrer un échange de clef, choisir le nombre de participants du côté droit, puis cliquer sur le bouton « Démarrer l\'échange ».\n\Deux questions de plus seront posées pour s\'assurer que seuls les bons participants sont dans l\'échange et que les empreintes sont correctes. + Démarrer l\'échange ]]> diff --git a/OpenKeychain/src/main/res/values-is/strings.xml b/OpenKeychain/src/main/res/values-is/strings.xml index ef0a0ce94..233347bd3 100644 --- a/OpenKeychain/src/main/res/values-is/strings.xml +++ b/OpenKeychain/src/main/res/values-is/strings.xml @@ -36,6 +36,8 @@ + + @@ -54,6 +56,7 @@ + diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml index 4c73ebc72..d741f7111 100644 --- a/OpenKeychain/src/main/res/values-it/strings.xml +++ b/OpenKeychain/src/main/res/values-it/strings.xml @@ -240,7 +240,6 @@ Non potrai annullare! impossibile estrarre la chiave privata Devi avere Android 4.1 per usare Android NFC Beam! - NFC non disponibile nel tuo dispositivo! Nessuna chiave trovata! Recupero dell\'ID della chiave dai contatti fallito! Si è verificato un errore generico, si prega di creare una nuova segnalazione di errore per OpenKeychain. @@ -388,7 +387,6 @@ Non potrai annullare! Codifica con OpenKeychain Decodifica con OpenKeychain - Nessuna applicazione registrata!\n\nUna lista di applicazioni di terze parti supportate è disponibile in \'Aiuto\'! Mostra informazioni dettagliate Nascondi informazioni dettagliate Mostra impostazioni avanzate @@ -451,6 +449,8 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars Questa identità non è stata ancora certificata. Non puoi esser sicuro che l\'identità corrisponda veramente ad una specifica persona. Non valido C\'è qualcosa che non va con questa identità! + + Cambia Frase Di Accesso Aggiungi Identità @@ -486,8 +486,6 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars Nome completo, es: Mario Rossi Cambia configurazione della chiave - Questa chiave è stata revocata! - Questa chiave è scaduta Chiavi Apps @@ -709,6 +707,7 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars Inizio operazione di decodifica... Dati simmetrici non permessi, proseguo... Sblocco chiave segreta + Identità certificata correttamente diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml index 936440893..c5318db36 100644 --- a/OpenKeychain/src/main/res/values-ja/strings.xml +++ b/OpenKeychain/src/main/res/values-ja/strings.xml @@ -71,6 +71,8 @@ 鍵サーバへアップロード 戻る + なし + 指紋が一致 鍵検出 暗号化してメッセージを共有 検証した鍵を見る @@ -90,6 +92,7 @@ 自分の鍵の生成 ファイルからインポート 検索 + NFC設定 Beamの設定 キャンセル 暗号化... @@ -98,6 +101,7 @@ クラウドを検索 すべての鍵のエクスポート 詳細情報を表示 + 指紋比較による検証 メッセージ ファイル @@ -257,7 +261,8 @@ 秘密鍵を取り出すことができません Android NFC Beam機能を使うにはAndroid 4.1 が必要です! - あなたのデバイスにはNFCが存在しません! + NFCを有効にしてください! + Beamを有効にしてください! 鍵が見当りません! 連絡帳から鍵IDの回収が失敗しました! 一般エラーが発生しました、この新しいバグの情報をOpenKeychainプロジェクトに送ってください @@ -426,9 +431,6 @@ OpenKeychainで暗号化 OpenKeychainで復号化 - 未登録のアプリです! - -\'ヘルプ\'のサードパーティ製アプリケーションのサポートリストにあるかを見てください! 詳細情報を表示 詳細情報を非表示 拡張設定を表示 @@ -497,6 +499,8 @@ このIDはまだ検証されていません。IDが本当に特定の人に対応している場合を、あなたは確認することができません。 無効 このIDではなにかしら問題があります! + + パスフレーズの変更 ユーザIDの追加 @@ -532,8 +536,12 @@ フルネーム、例えば Max Mustermann 鍵の設定変更 - この鍵は破棄されています! - この鍵は期限切れです! + 破棄: 鍵はもう使われません! + 期限切れ: この連絡先は鍵の妥当性を拡張する必要があります! + 期限切れ: 編集で鍵の妥当性を拡張することができます! + 自分の鍵 + 検証済みの鍵 + 未検証: QRコードをスキャンして鍵を検証! 暗号化/復号化 @@ -889,6 +897,7 @@ 追跡で遭遇、対称暗号化されたデータ 追跡で未知のタイプのデータに遭遇 秘密鍵のロック解除 + 署名/暗号化操作を開始します バイト配列からの入力処理中 @@ -1023,6 +1032,8 @@ あなたの検証された自己証明とあなたの鍵で生成された証明がここに表示されます ユーザID インポートした鍵には\"アイデンティティ\": 名前とメールアドレス を含みます。正確に期待したものと一致しているか認定されているものを選択します。 + 表示している指紋を、文字対文字で、あなたのパートナーの表示しているものと比較 + 表示している指紋は一致しましたか? 破棄の理由 検証ステータス 種別 @@ -1045,6 +1056,7 @@ 複数ファイルの保存はサポートされていません。これは現在のAndroidでの制限です。 鍵: 鍵交換の開始は、右側の参加者の番号を選択し、その後、\"交換開始\"ボタンを推します。\n\n2つ以上の質問で交換にいる右の参加者とその指紋が正しいかを確認してください。 + 交換開始 ]]> diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml index 6a7f53e35..34b8f1627 100644 --- a/OpenKeychain/src/main/res/values-nl/strings.xml +++ b/OpenKeychain/src/main/res/values-nl/strings.xml @@ -39,6 +39,9 @@ Sleutels Identiteiten + Zou je deze sleutel vertrouwen? + Bewijs van verificatie + Bewijs van de cloud Subsleutels Cloud zoeken Algemeen @@ -71,6 +74,8 @@ Upload Naar Sleutelserver Volgende Terug + Nee + Vingerafdrukken komen overeen Opzoeksleutel Bericht versleutelen en delen Toon certificatiesleutel @@ -90,6 +95,7 @@ Mijn sleutel aanmaken Importeren van bestand Zoeken + NFC-instellingen Beam-instellingen Annuleren Versleutelen naar… @@ -98,6 +104,7 @@ Zoeken Alle sleutels exporteren Geavanceerde info tonen + Verifiëren door vingerafdrukken te vergelijken Bericht Bestand @@ -249,7 +256,8 @@ kan privésleutel niet uitpakken U heeft minstens Android 4.1 nodig om Androids NFC Beam eigenschap te gebruiken! - Uw apparaat biedt geen ondersteuning voor NFC + NFC moet aangezet zijn! + Beam moet aangezet zijn! Geen sleutels gevonden! Sleutel-ID van contacten ophalen mislukt! Een algemene fout is opgetreden, gelieve een nieuw bug-verslag te maken voor OpenKeychain. @@ -432,7 +440,6 @@ Codeer met OpenKeychain Decodeer met OpenKeychain - Geen geregistreerde apps!\n\nEen lijst van ondersteunde derde-partij applicaties kan gevonden worden in \'Help\'! Toon geavanceerde informatie Verberg geavanceerde informatie Toon geavanceerde instellingen @@ -489,6 +496,7 @@ Delen Subsleutels Certificaten + Keybase.io Ingetrokken Deze identiteit is door de sleuteleigenaar ingetrokken. Ze is niet langer geldig. Gecertificeerd @@ -497,6 +505,45 @@ Deze identiteit is nog niet gecertificeerd. Je kan niet zeker zijn dat deze identiteit echt overeenkomt met een bepaald persoon. Ongeldig Er is iets mis met deze identiteit! + + Je hebt deze sleutel al gecertificeerd! + Dit is een van jouw sleutels! + Deze sleutel is ingetrokken noch verlopen.\nJe hebt ze niet gecertificeerd, maar je kan kiezen ze te vertrouwen. + Deze sleutel is door de eigenaar ingetrokken. Je zou ze niet moeten vertrouwen. + Deze sleutel is verlopen. Je zou ze niet moeten vertrouwen. + Het kan oké zijn deze sleutel te gebruiken om een oud bericht te ontsleutelen van een moment waarop de sleutel nog geldig was. + Geen bewijs van de cloud voor de betrouwbaarheid van deze sleutel. + Zoeken starten + Keybase.io geeft “bewijzen” die stellen dat de eigenaar van deze sleutel: + + Post op Twitter als + Bekend is op GitHub als + De volgende domeinnamen beheert + Kan posten op de website(s) + Post op Reddit als + Bekend is op Coinbase als + Post op Hacker News als + Onbekend bewijstype + Helaas kan dit bewijs niet geverifieerd worden. + Niet-herkend probleem met de bewijschecker + Probleem met bewijs van bewijs + Sleutelvingerafdruk komt niet overeen met die in bewijspost + DNS TXT record ophalen mislukt + Geen bewijschecker gevonden voor + Ontsleuteld bewijs komt niet overeen met verwachte waarde + Bezig met ophalen van bewijs van bewijs + Dit bewijs is geverifieerd! + Een post + opgehaald van + voor het domein + bevat een bericht dat enkel gemaakt kan zijn door de eigenaar van deze sleutel. + Een tweet + Een DNS TXT record + Een tekstbestand + Een gist + Een JSON-bestand + toegeschreven door Reddit aan + Verifiëren Wachtwoord wijzigen Identiteit toevoegen @@ -532,8 +579,12 @@ Volledige naam, bv. Max Mustermann Sleutelconfiguratie wijzigen - Deze sleutel is ingetrokken! - Deze sleutel is verlopen! + Ingetrokken: sleutel mag niet meer gebruikt worden! + Verlopen: het contact moet de geldigheid van de sleutels verlengen! + Verlopen: je kan de geldigheid van de sleutels verlengen door ze te bewerken! + Mijn sleutel + Geverifieerde sleutels + Niet geverifieerd: scan QR-code om de sleutel te verifiëren! Sleutels Versleutelen/Ontsleutelen @@ -896,6 +947,18 @@ Achterlopende, symmetrisch versleutelde gegevens tegengekomen Achterlopende gegevens van onbekend type tegengekomen Bezig met ontgrendelen van geheime sleutel + + Ondertekeningscontrole wordt gestart + Geen ondertekeningslijst in ondertekende letterlijke gegevens + Bericht niet ondertekend met de juiste sleutel + Geen payload in ondertekende letterlijke gegevens + Bestandsnaam: %s + MIME-type: %s + Wijzigingstijd: %s + Bestandsgrootte: %s + Bezig met verifiëren van ondertekeningsgegevens + Fout bij integriteitscontrole! + Oké Ondertekening/versleuteling wordt gestart Bezig met verwerken van input van byte array @@ -1037,6 +1100,8 @@ Enkel gevalideerde self-certificaten en gevalideerde certificaten gemaakt met jouw sleutels worden hier weergegeven. Identiteiten voor De sleutels die je importeert bevatten \'identiteiten\': namen en e-mailadressen. Selecteer precies die voor certificatie die overeenkomen met wat je had verwacht. + Vergelijk de weergegeven vingerafdruk, karakter per karakter, met die weergegeven op het toestel van je partner. + Komen de weergegeven vingerafdrukken overeen? Intrek Reden Verificatie Status Type @@ -1058,6 +1123,7 @@ Opslaan van meerdere bestanden wordt niet ondersteund. Dit is een beperking van Android. Sleutel: Selecteer om een sleuteluitwisseling te starten het aantal deelnemers aan de rechterkant, en klik vervolgens op de knop \'Start uitwisseling\'.\n\nJe zal twee vragne gesteld worden om zeker te zijn dat enkel de juiste deelnemers zich in de uitwisseling bevinden en dat hun vingerafdrukken correct zijn. + Uitwisseling starten ]]> diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml index bf15bfff9..3dc6a2a35 100644 --- a/OpenKeychain/src/main/res/values-pl/strings.xml +++ b/OpenKeychain/src/main/res/values-pl/strings.xml @@ -9,16 +9,18 @@ Szyfruj tekst Szyfruj pliki Odszyfruj - Klucz odblokowania + Odblokuj klucz Dodaj pod-klucz Edytuj klucz + Ustawienia Właściwości Szukania w Chmurze Aplikacje + Serwery kluczy Zmień hasło - Podziel się fingerprintem z... - Podziel się kluczem z... - Podziel się plikiem z... - Podziel się wiadomością z... + Podziel się odciskiem klucza przez... + Podziel się kluczem przez... + Podziel się plikiem przez... + Podziel się wiadomością przez... Zaszyfruj do pliku Odszyfruj do pliku Importuj klucze @@ -33,7 +35,8 @@ Logi Utwórz klucz Wymień się kluczami - Zaawansowane Info Klucza + Zaawansowane informacje o kluczu + Klucze Tożsamości Pod-klucze @@ -48,11 +51,13 @@ Twój klucz użyty do certyfikacji Synchronizuj Klucz Serwer kluczy - Fingerprint + Odcisk klucza Klucz do certyfikacji Pliki Tekst Certyfikaty + Zaszyfruj + Odszyfruj Odszyfruj, weryfikuj i zapisz plik Odszyfruj i weryfikuj wiadomość @@ -72,8 +77,11 @@ Utwórz klucz Dodaj plik(i) Podziel się odszyfrowanym tekstem - oraz weryfikuj podpisy + Odszyfruj ze schowka + oraz zweryfikuj podpisy Odszyfruj pliki + Zaszyfruj pliki + Zaszyfruj tekst Ustawienia Pomoc @@ -102,16 +110,16 @@ Plik ASCII Armor Włącz ASCII Armor Niech inni wiedzą, że używasz OpenKeychain - Napisze \'\'OpenKeychain v2.7\' do podpisów OpenPGP, ciphertekstu i wyeksportowanych kluczy - Użyj domyślnego PINu YubiKey - Użyj klawiatury numerycznej dla PIN\'u YubiKey - Używa domyślnego PINu (123456) do dostępu do YubiKeys przez NFC + Wpisuje \'\'OpenKeychain v2.7\' do podpisów, szyfrogramów i wyeksportowanych kluczy OpenPGP. + Użyj domyślnego PIN-u YubiKey + Użyj klawiatury numerycznej dla PIN-u YubiKey + Używa domyślnego PIN-u (123456) do dostępu do YubiKeys przez NFC Podpisane przez: Szyfruj do: Usuń plik po zaszyfrowaniu Usuń po odszyfrowaniu Algorytm szyfrowania - Algorytm hash + Funkcja skrótu Szyfruj z hasłem Czas pamięci cache Pamiętaj hasła względem pod-klucza: @@ -178,9 +186,9 @@ Błąd: %s Certyfikuj - Podpisz - Zaszyfruj - Autentykuj + Podpisuj + Szyfruj + Uwierzytelniaj Nieprawidłowe hasło. Nie zainstalowano żadnego kompatybilnego menadżera plików. @@ -219,7 +227,7 @@ Lista jest pusta! Pomyślnie wysłano klucz przez NFC Beam! Klucz został skopiowany do schowka! - Fingerprint został skopiowany do schowka! + Odcisk klucza został skopiowany do schowka! Proszę wybrać klucz który będzie użyty do certyfikacji! Klucz ma za duży rozmiar by być udostępniony w ten sposób! Tekst został skopiowany do schowka! @@ -242,7 +250,6 @@ nie można wyodrębnić klucza prywatnego Potrzebujesz Androida 4.1 aby korzystać z Android NFC Beam - NCF jest niedostępne na twoim urządzeniu Nie znaleziono kluczy! Pobieranie ID klucza z kontaktów nie powiodło się! Wystąpił błąd ogólny, proszę zgłoś go autorom OpenKeychain. @@ -345,14 +352,16 @@ Wersja: Serwery kluczy - Szukaj w Chmurze + Szukaj w chmurze Plik/Schowek Kod QR/NFC Zaimportuj wybrane klucze Kod QR zniekształcony! Spróbuj jeszcze raz! Odcisk klucza jest za krótki (< 16 znaków) Skanuj kod QR + Umieść kod QR przed kamerą! + Szczegóły , z ostrzeżeniami , aż anulowano @@ -433,7 +442,6 @@ Zaszyfruj korzystając z OpenKeychain Deszyfruj korzystając z OpenKeychain - Brak zarejestrowanych aplikacji!\n\nLista obsługiwanych aplikacji innych firm jest dostępna w \'Pomoc\'. Pokaż zaawansowane informacje Ukryj zaawansowane informacje Pokaż zaawanowane ustawienia @@ -449,6 +457,7 @@ Usuń konto Nazwa paczki Skrót SHA-256 podpisu paczki + Konta (przestarzłe API) Ustawienia Klucz konta: Brak kont połączonych z tą aplikacją. @@ -498,6 +507,8 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw Ta tożsamość nie była jeszcze certyfikowana. Nie możesz być pewny, że ta tożsamość naprawdę jest tą osobą za którą się podaje. Nieprawidłowe Coś jest nie tak z tą tożsamością! + + Zmień hasło Dodaj tożsamość @@ -533,10 +544,9 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw Imię i nazwisko, na przykład, Jan Kowalski Zmień klucz konfiguracji - Ten klucz został unieważniony! - Ten klucz stracił swoją ważność! Klucze + Zaszyfruj/Odszyfruj Aplikacje Otwórz panel nawigacji Zamknij panel nawigacji @@ -571,8 +581,11 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw - Generowanie nowego master klucza + Generowanie nowego klucza głównego + Błąd wewnętrzny PGP! + Błąd wewnętrzny PGP! + Zmiana hasła dla pęku kluczy Data ważności nie może być przeszła! Unieważnianie pod-klucza %s ID użytkownika nie może być pusty! @@ -599,6 +612,7 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw Użycie hasła z pamięci cache Hasło wymagane, wymagana reakcja użytkownika... Rozpoczynanie operacji odszyfrowania... + Zapisywanie pęków kluczy @@ -677,6 +691,7 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw Pociągnij w dół, aby aktualizować z serwera kluczy Wybierz przynajmniej jeden plik, aby szyfrować! Klucz: + Rozpocznij wymianę diff --git a/OpenKeychain/src/main/res/values-pt/strings.xml b/OpenKeychain/src/main/res/values-pt/strings.xml index ef0a0ce94..233347bd3 100644 --- a/OpenKeychain/src/main/res/values-pt/strings.xml +++ b/OpenKeychain/src/main/res/values-pt/strings.xml @@ -36,6 +36,8 @@ + + @@ -54,6 +56,7 @@ + diff --git a/OpenKeychain/src/main/res/values-ro/strings.xml b/OpenKeychain/src/main/res/values-ro/strings.xml index ef0a0ce94..233347bd3 100644 --- a/OpenKeychain/src/main/res/values-ro/strings.xml +++ b/OpenKeychain/src/main/res/values-ro/strings.xml @@ -36,6 +36,8 @@ + + @@ -54,6 +56,7 @@ + diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml index ec862020a..dc1c81bb4 100644 --- a/OpenKeychain/src/main/res/values-ru/strings.xml +++ b/OpenKeychain/src/main/res/values-ru/strings.xml @@ -2,6 +2,7 @@ + OpenKeychain Выберите ключи Выберите Ваш ключ @@ -70,6 +71,8 @@ Загрузить на сервер ключей Далее Назад + Нет + Отпечатки совпадают Найти ключ Зашифровать и отправить сообщение Просмотр ключа @@ -89,6 +92,7 @@ Создать свой ключ Импорт из файла Поиск + Настройки NFC Настройки Beam Отмена Зашифровать.... @@ -97,6 +101,7 @@ Поиск в облаке Экспорт всех ключей Подробные данные + Сверить отпечатки Сообщение Файл @@ -249,7 +254,8 @@ не удалось извлечь личный ключ Для использования NFC Beam требуется Android 4.1+ ! - Ваше устройство не поддерживает NFC! + Необходимо включить NFC! + Необходимо включить Beam! Ключи не найдены! Ошибка извлечения идентификатора ключа из контактов! Выявлена ошибка. Пожалуйста, сообщите о ней разработчику. @@ -386,7 +392,6 @@ OpenKeychain: Зашифровать OpenKeychain: Расшифровать - Нет связанных приложений!\n\nСписок приложений, поддерживающих интеграцию, доступен в разделе \'Помощь\'! Показать подробную информацию Скрыть подробную информацию Показать расширенные настройки @@ -452,6 +457,8 @@ Этот идентификатор не был заверен. Нет гарантии, что он принадлежит этому человеку. Недействительно Что-то не так с идентификатором! + + Изменить пароль Добавить идентификатор @@ -487,8 +494,12 @@ Полное имя, напр. Иван Хлестаков Изменить конфигурацию ключа - Этот ключ был аннулирован! - Срок годности ключа истёк! + Аннулирован: Ключ не должен использоваться когда-либо в будущем! + Срок годности истёк: Контакт должен продлить срок! + Срок годности истёк: Вы можете продлить срок, изменив ключ! + Мой ключ + Подтвержденный ключ + Достоверность: Сканируйте QR код для проверки ключа! Ключи Зашифровать/Расшифровать @@ -580,8 +591,8 @@ Переупорядочение пользовательских ID Обработка id %s id аннулирован - Обработка пользовательского атрибута типа изображения - Обработка пользовательского атрибута неизвестного типа + Обработка атрибута пользователя типа изображения + Обработка атрибута пользователя неизвестного типа Плохой сертификат! Ошибка обработки сертификата! Уже есть неотзываемый сертификат, пропускаем. @@ -629,14 +640,14 @@ Удаление лишнего сертификата обозначения Удаление пустого сертификата обозначения Обработка доп. ключа %s - Удаление недопустимого сертификата связывания доп. ключа + Удаление неверного сертификата связывания доп. ключа Удаление плохого сертификата связывания доп. ключа Удаление сертификата связывания доп. ключа с \"локальным\" флагом Несоответствие id издателя связывания доп. ключа Удаление сертификата связывания доп. ключа с отметкой времени, находящейся в будущем Неизвестный тип сертификата доп. ключа: %s Удаление лишнего сертификата связывания доп. ключа - Удаление сертификата связывания доп. ключа вследствие недопустимого основного сертификата связывания + Удаление сертификата связывания доп. ключа вследствие неверного основного сертификата связывания Удаление сертификата связывания доп. ключа вследствие плохого основного сертификата связывания Удаление сертификата связывания доп. ключа вследствие отсутствующего основного сертификата связывания Нет допустимого сертификата для %s, удаление из связки @@ -648,20 +659,85 @@ Доп. ключ имеет флаг использования подписи, но алгоритм не подходит для подписи. Связка нормализована успешно, нет изменений Связка нормализована успешно, удалено %1$s ошибочных и %2$s лишних сертификатов + Удаление плохого самостоятельного сертификата для ID \'%s\' + Удаление сертификата ID с \'локальным\' флагом + Удаление ID с отметкой времени, находящейся в будущем + Удаление сертификата ID неизвестного типа (%s) + Удаление плохого самостоятельного сертификата для ID \'%s\' + Удаление устаревшего самостоятельного сертификата для ID \'%s\' + Удаление \'%s\' несоответствующего сертификата ID + Удаление лишнего сертификата аннулирования для ID \'%s\' + Удаление устаревшего сертификата аннулирования для ID \'%s\' + Нет допустимого самостоятельного сертификата для ID \'%s\', удаление из связки + Удаление неверного ID \'%s\' + Удаление повторяющегося ID \'%s\'. Связка содержит их два. Это может привести к отсутствию сертификатов! + ID пользователя не соответствует UTF-8! + Обработка атрибута пользователя типа JPEG + Обработка атрибута пользователя неизвестного типа + Удаление плохого самостоятельного сертификата для атрибута пользователя + Удаление сертификата атрибута пользователя с \'локальным\' флагом + Удаление атрибута пользователя с отметкой времени, находящейся в будущем + Удаление сертификата атрибута пользователя неизвестного типа (%s) + Удаление плохого самостоятельного сертификата для атрибута пользователя + Удаление устаревшего самостоятельного сертификата для атрибута пользователя + Удаление повторяющегося атрибута пользователя. Связка содержит их два. Это может привести к отсутствию сертификатов! + Удаление несоответствующего сертификата атрибута пользователя + Удаление лишнего сертификата аннулирования для атрибута пользователя + Удаление устаревшего сертификата аннулирования для атрибута пользователя + Нет допустимого самостоятельного сертификата для атрибута пользователя, удаление из связки + Удаление неверного атрибута пользователя + ID пользователя не соответствует UTF-8! + Найден новый публичный доп. ключ, но фиктивное создание секретного доп. ключа не поддерживается! + Попытка объединить связки с различными отпечатками! + Фатальная ошибка кодирования подписи! + Объединение с публичной связкой %s + Объединение с секретной связкой %s + Добавление нового доп. ключа %s + Найдено %s новых сертификатов в связке + Нет данных для объединения Создание нового основного ключа + Ну заданы параметры основного ключа! + Связки должны создаваться с хотя бы одним ID пользователя! + Основной ключ должен иметь флаг сертификата! + Срок годности не может быть \'такой же как раньше\' при создании ключа. Это программная ошибка, пожалуйста, сообщите об этом! Размер ключа должен быть больше или равен 512! + Не задан размер ключа! Это программная ошибка, пожалуйста, сообщите об этом! + Не задана эллиптическая кривая! Это программная ошибка, пожалуйста, сообщите об этом! Внутренняя ошибка OpenPGP! + Выбран неизвестный алгоритм! Это программная ошибка, пожалуйста, сообщите об этом! + Выбраны плохие флаги ключа, DSA не может быть использован для шифрования! + Выбраны плохие флаги ключа, ElGamal не может быть использован для подписи! + Выбраны плохие флаги ключа, ECDSA не может быть использован для шифрования! + Выбраны плохие флаги ключа, ECDH не может быть использован для подписи! + Изменение связки %s Ошибка кодирования! + Отпечаток ключа не совпадает с представленным! + Нет ID ключа. Это программная ошибка. Пожалуйста, сообщите об этом! Внутренняя ошибка, сбой проверки целостности! + Не найден основной сертификат! (Все отозваны?) + Аннулированные идентификаторы не могут быть основными! Внутренняя ошибка OpenPGP! Ошибка подписи! + Изменение основного сертификата + Перешифрование доп. ключа %s новым паролем + Создание нового сертификата для основного идентификатора + Изменение доп. ключа %s + Попытка работы с отсутствующим доп. ключом %s! + Добавление нового доп. ключа типа %s + Идентификатор нового доп. ключа: %s + Срок годности не может быть в прошлом! + Аннулирование доп. ключа %s Связка успешно изменена + Изменение основного идентификатора на %s + Идентификатор пользователя не может быть пустой Ошибка разблокирования связки! Разблокирование связки + Консолидация базы данных + Консолидация началась но база не кэширована! Это программная ошибка, пожалуйста, сообщите об этом. Ключ не найден! @@ -669,26 +745,40 @@ Редактирование NFC ключей (еще) не поддерживается! Ключ не найден! + OK Разблокировка секретного ключа + + Подготовка сжатия + Шифрование данных + Неправильный пароль! + Ошибка данных NFC! Внутренняя ошибка OpenPGP! Сохранение связки Разблокировка основного ключа Ключ не найден! + Создание сертификата не удалось! Ключ успешно загружен на сервер Ошибка открытия файла! Ошибка базы данных! Ошибка ввода/вывода! Нет данных для удаления! + Аккаунт сохранен часть загруженного файла содержит данные OpenPGP, но это не ключ части загруженного файла содержат данные OpenPGP, но это не ключ части загруженного файла содержат данные OpenPGP, но это не ключ + Кэшированные пароли: + Очистить кэш + Пароль Верните вашу приватность с помощью OpenKeychain! + Создать ключ + Импорт из файла + Пропустить настройку Кем подписан Детали сертификации @@ -706,8 +796,18 @@ не для подписания Нет доп. ключа для шифрования! Показать ключ (%s) + Ключ: + Начать обмен + Выберите метод разблокировки + Введите пароль + Пароль + Неверный пароль + Еще раз + NFC + Разблокирован + Настройки diff --git a/OpenKeychain/src/main/res/values-sl/strings.xml b/OpenKeychain/src/main/res/values-sl/strings.xml index 499ff8468..5d6581bfc 100644 --- a/OpenKeychain/src/main/res/values-sl/strings.xml +++ b/OpenKeychain/src/main/res/values-sl/strings.xml @@ -219,7 +219,6 @@ ne morem izvleči zasebnega ključa Za uporabo storitve NFC Beam potrebujete najmanj Android 4.1! - NFC ni na voljo na vaši napravi! Najden ni bil noben ključ! Pripetila se je splošna napaka, prosimo ustvarite poročilo o \'hrošču\'. @@ -381,6 +380,8 @@ Preklican Lastnik ključa je preklical to identiteto. Ta ni več veljavna. Neveljaven + + Zamenjaj geslo Dodaj identiteto @@ -396,7 +397,6 @@ Gesli se ne ujemata Polno ime, npr. Janez Vzorec - Ta ključ je pretekel! Ključi Aplikacije @@ -459,6 +459,7 @@ Ključ ni bil najden! + Ključ ni bil najden! diff --git a/OpenKeychain/src/main/res/values-sr/strings.xml b/OpenKeychain/src/main/res/values-sr/strings.xml index b3a15cb7f..11639e2eb 100644 --- a/OpenKeychain/src/main/res/values-sr/strings.xml +++ b/OpenKeychain/src/main/res/values-sr/strings.xml @@ -71,6 +71,8 @@ Отпреми на сервер кључева Следеће Назад + Не + Отисци се поклапају Потражи кључ Шифруј и подели поруку Прикажи кључ за оверавање @@ -90,6 +92,7 @@ Направи ми кључ Увези из фајла Претрага + НФЦ поставке Поставке Снопа Одустани Шифруј у… @@ -98,6 +101,7 @@ Клауд претрага Извези све кључеве Прикажи напредне податке + Овери поређењем отисака Порука Фајл @@ -252,7 +256,8 @@ нисам могао да извучем лични кључ Потребан вам је Андроид 4.1 да бисте користили Андроидову могућност НФЦ Снопа! - НФЦ није доступан на вашем уређају! + НФЦ мора бити укључен! + Бим мора бити укључен Нема нађених кључева! Добављање ИД кључа из контаката није успело! Дошло је до опште грешке, направите нови извештај о грешци за Отворени кључарник. @@ -449,7 +454,6 @@ Шифруј помоћу Отвореног кључарника Дешифруј помоћу Отвореног кључарника - Нема регистрованих апликација!\n\nСписак подржаних апликација треће стране можете наћи у одељку „Помоћ“! Прикажи напредне податке Сакриј напредне податке Прикажи напредне поставке @@ -507,6 +511,7 @@ Подели Поткључеви Сертификати + Keybase.io Опозван Власник кључа је опозвао овај идентитет. Више није исправан. Оверен @@ -515,6 +520,13 @@ Овај идентитет још није оверен. Не можете бити сигурни да идентитет заиста одговара одређеној особи. Неисправан Нешто није у реду са овим идентитетом! + + Ово је један од ваших кључева! + Власни је опозвао овај кључ. Не бисте требали да се поуздате у њега. + Овај кључ је истекао. Не бисте требали да се поуздате у њега. + Почни претрагу + + Овери Измени лозинку Додај идентитет @@ -550,8 +562,12 @@ Пуно име, нпр. Петар Петровић Промени конфигурацију кључа - Овај кључ је опозван! - Овај кључ је истекао! + Опозван: кључ више не смије бити коришћен! + Истекао: контакт мора да продужи ваљаност кључа! + Истекао: можете да уредите кључ и продужите му ваљаност! + Мој кључ + Оверен кључ + Неоверен: очитајте бар-код да бисте оверили кључ! Кључеви Шифруј/дешифруј @@ -921,6 +937,15 @@ Наиђох на пратеће симетрично шифроване податке Наиђох на пратеће податке непознатог типа Откључавам тајни кључ + + Почињем проверу потписа + Име фајла: %s + МИМЕ тип: %s + Време измене: %s + Величина: %s + Оверавам податке потписа + Грешка провере интегритета! + У реду Почињем радњу потписивања/шифровања Обрађујем улаз низа бајтова @@ -1069,6 +1094,8 @@ Приказани су само потврђени сопствени сертификати и потврђени сертификати направљени вашим кључем. Идентитети за Кључеви које увозите садрже „идентитете“: имена и е-адресе. Одредите за оверу само оне који одговарају ономе што очекујете. + Упоредите приказани отисак, знак по знак, са оним приказаним на другаревом уређају. + Да ли се приказани отисци поклапају? Разлог опозива Стање овере Тип diff --git a/OpenKeychain/src/main/res/values-sv/strings.xml b/OpenKeychain/src/main/res/values-sv/strings.xml index 7c855176b..a24fe7ee7 100644 --- a/OpenKeychain/src/main/res/values-sv/strings.xml +++ b/OpenKeychain/src/main/res/values-sv/strings.xml @@ -248,7 +248,6 @@ kunde inte extrahera privat nyckel Du behöver Android 4.1 för att använda Androids NFC Beam-funktion! - NFC är inte tillgängligt på din enhet! Inga nycklar hittades! Det gick inte att hämta nyckel-ID:t från kontakter! Ett generiskt fel inträffade, skapa en ny buggrapport för OpenKeychain. @@ -430,7 +429,6 @@ Kryptera med OpenKeychain Dekryptera med OpenKeychain - Inga registrerade appar!\n\nEn lista med tredjepartsappar som stöds kan hittas under \'Hjälp\'! Visa avancerad information Göm avancerad information Visa avancerade inställningar @@ -495,6 +493,8 @@ Den här identiteten har ännu inte certifierats. Du kan inte vara säker på att identiteten verkligen hänger ihop med en viss person. Ogiltig Något är fel med den här identiteten! + + Ändra lösenordsfras Lägg till identitet @@ -525,8 +525,6 @@ Fullständigt namn, t.ex. Kalle Svensson Ändra nyckelkonfiguration - Den här nyckeln har återkallats! - Den här nyckeln har gått ut! Nycklar Kryptera/Dekryptera @@ -775,6 +773,7 @@ Symmetrisk data inte tillåten, hoppar över… Hittade block med symmetriskt krypterad data Låser upp privat nyckel + Signering/kryptering lyckades! diff --git a/OpenKeychain/src/main/res/values-tr/strings.xml b/OpenKeychain/src/main/res/values-tr/strings.xml index 194224708..7b6a976f5 100644 --- a/OpenKeychain/src/main/res/values-tr/strings.xml +++ b/OpenKeychain/src/main/res/values-tr/strings.xml @@ -237,7 +237,6 @@ özel anahtar çıkarılamadı Android\'in NFC Beam özelliğini kullanabilmek için Android 4.1 kullanmalısınız! - Cihazınız NFC desteklemiyor! Anahtar bulunamadı! Kişilerden anahtar ID getirme işlemi başarısız! Genel bir hata oluştu, lütfen OpenKeychain için yeni bir hata raporu oluşturun. @@ -426,6 +425,8 @@ Bu kimlik henüz tasdiklenmemiş. Bu kimliğin belirli bir kişiye ait olduğundan emin olamazsınız. Geçersiz Bu kimlikle ilgili yanlış olan bazı şeyler var! + + Parolayı Değiştir Kimlik Ekle @@ -452,8 +453,6 @@ Tam Ad, örneğin: Max Mustermann Anahtar yapılandırmasını değiştir. - Bu anahtar yürürlükten kaldırıldı! - Bu anahtarın son kullanma tarihi geçmiş! Anahtarlar Uygulamalar @@ -495,6 +494,7 @@ Akış içinde şifrelenmiş veri bulunamadı! Akış içinde bilinen özel anahtar ile şifrelenmiş veri bulunamadı! Çözümleme için akışlar hazırlanıyor + Anahtar bulunamadı! diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml index a8e4ac3b4..cf586b2d5 100644 --- a/OpenKeychain/src/main/res/values-uk/strings.xml +++ b/OpenKeychain/src/main/res/values-uk/strings.xml @@ -240,7 +240,6 @@ не можна витягти секретний ключ Вам потрібний Android 4.1 для використання функції Androids NFC промінь! - NFC недоступний на вашому пристрої! Ключ не знайдено! Трапилася загальна помилка, будь ласка, створіть новий звіт про помилку для OpenKeychain. @@ -432,6 +431,8 @@ Несертифіковано Недійсна Щось неправильне у цій сутності! + + Змінити пароль Додати сутність @@ -451,8 +452,6 @@ Введіть ваше повне ім\'я, електронну адреса та оберіть парольну фразу. Повне ім\'я, наприклад Степан Бандера - Цей ключ вже відкликано! - Термін дії цього ключа вже минув! Ключі Програми @@ -589,6 +588,7 @@ Час зміни: %s Помилка перевірки цілісності! Гаразд + diff --git a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml index daa0a171b..b6ab2c8a4 100644 --- a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml +++ b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml @@ -196,7 +196,6 @@ 無法抽取私鑰 需要Android 4.1以上才能使用NFC Beam功能! - 您的裝置不支援NFC! 找不到金鑰! 尚未簽名 @@ -313,7 +312,6 @@ 使用OpenKeychain加密 使用OpenKeychain解密 - 沒有已註冊的應用程式!\n\n支援的第三方應用程式請參考說明文件。 顯示進階資訊 隱藏進階資訊 顯示進階設定 @@ -356,6 +354,8 @@ 未認證 這個身分識別尚未經過認證,你不能確認這個身分識別是否屬於真的某個人。 無效 + + 變更口令 新增身分識別 @@ -379,8 +379,6 @@ 建立金鑰可能需要一點時間,來杯咖啡吧… 輸入你的全名、電子郵件,並選擇一組口令。 - 這把金鑰已被撤銷! - 這把金鑰已經過期! 金鑰 應用程式 @@ -408,6 +406,7 @@ 找不到有效的簽名資訊! 開始解密… + 找不到金鑰! diff --git a/OpenKeychain/src/main/res/values-zh/strings.xml b/OpenKeychain/src/main/res/values-zh/strings.xml index 1c0e0c396..209350332 100644 --- a/OpenKeychain/src/main/res/values-zh/strings.xml +++ b/OpenKeychain/src/main/res/values-zh/strings.xml @@ -213,6 +213,8 @@ 使用NFC分享 + + @@ -231,6 +233,7 @@ + -- cgit v1.2.3 From 67093ccba244a1ba24c12acd4ce294d37aa09254 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 28 Feb 2015 00:39:55 +0100 Subject: forgot to commit FabContainer --- .../java/org/sufficientlysecure/keychain/util/FabContainer.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FabContainer.java (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FabContainer.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FabContainer.java new file mode 100644 index 000000000..116b98d1e --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/FabContainer.java @@ -0,0 +1,8 @@ +package org.sufficientlysecure.keychain.util; + +public interface FabContainer { + + void fabMoveUp(int height); + void fabRestorePosition(); + +} -- cgit v1.2.3 From cec7cb36208e3af3db70eecf128ec75f04ca0418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 28 Feb 2015 00:51:58 +0100 Subject: Fix strings based on transifex reports --- OpenKeychain/src/main/res/values/strings.xml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index bf83150b3..c261a4980 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -47,7 +47,7 @@ "Identities" "Should you trust this key?" Proof verification - "Evidence from the cloud" + "Proofs from the cloud" "Subkeys" "Cloud search" "General" @@ -82,7 +82,7 @@ "Next" "Back" "No" - "Fingerprints are matching" + "Fingerprints match" "Lookup key" "Encrypt and share message" "View certification key" @@ -561,7 +561,7 @@ "This key has been revoked by its owner. You should not trust it." "This key has expired. You should not trust it." " It may be OK to use this to decrypt an old message dating from the time when this key was valid." - "No evidence from the cloud on this key’s trustworthiness." + "No proof from the cloud on this key’s trustworthiness." "Start search" "Keybase.io offers “proofs” which assert that the owner of this key: " "Note: Keybase.io proofs are an experimental feature of OpenKeychain. We encourage you to scan QR Codes or exchange keys via NFC in addition to verifying them." @@ -577,12 +577,12 @@ "Unknown proof type" "Unfortunately this proof cannot be verified." "Unrecognized problem with proof checker" - "Problem with proof evidence" + "Problem with proof" "Key fingerprint doesn’t match that in proof post" "DNS TXT Record retrieval failed" "No proof checker found for" "Decrypted proof post does not match expected value" - "Fetching proof evidence" + "Fetching proof" "This proof has been verified!" "A post" "fetched from" @@ -621,7 +621,7 @@ "Add at least one subkey!" - "Upload key to keyserver" + "Synchronize with the cloud" "This field is required" "Passphrases do not match" "You entered the following identity:" @@ -634,7 +634,7 @@ "Revoked: Key must not be used anymore!" - "Expired: The contact needs to extend the keys validity!" + "Expired: The contact needs to extend the key's validity!" "Expired: You can extend the keys validity by editing it!" "My Key" "Verified Key" @@ -791,19 +791,19 @@ "Subkey %s occurs twice in keyring. Keyring is malformed, not importing!" "Processing master key" "Removing master key certificate of unknown type (%s)" - "Removing master key certificate with "local" flag" + "Removing master key certificate with 'local' flag" "Removing bad master key certificate" "Removing keyring revocation certificate with future timestamp" "Removing user ID certificate in bad position" "Removing bad master key certificate" - "Removing master key certificate with "local" flag" + "Removing master key certificate with 'local' flag" "Removing redundant keyring revocation certificate" "Removing redundant notation certificate" "Removing empty notation certificate" "Processing subkey %s" "Removing invalid subkey binding certificate" "Removing bad subkey binding certificate" - "Removing subkey binding certificate with "local" flag" + "Removing subkey binding certificate with 'local' flag" "Subkey binding issuer id mismatch" "Removing subkey binding certificate with future timestamp" "Unknown subkey certificate type: %s" @@ -1036,10 +1036,10 @@ "Starting sign/encrypt operation" "Processing input from byte array" - "Processing input from uri" + "Processing input from URI" "No input given!" - "Error opening Uri for reading!" - "Error opening Uri for writing!" + "Error opening URI for reading!" + "Error opening URI for writing!" "More inputs than outputs specified! This is probably a programming error, please report!" "Got outputs left but no inputs. This is probably a programming error, please report!" "Sign/encrypt operation successful" -- cgit v1.2.3 From c8f5dc5cf3c93a744ca0af4d7a1bf6afa6b46495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Sat, 28 Feb 2015 00:56:04 +0100 Subject: Strings: File size --- OpenKeychain/src/main/res/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index c261a4980..2d599e984 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -988,8 +988,8 @@ "Unpacking compressed data" "Filename: %s" "MIME type: %s" - "Filesize: %s" - "Filesize is unknown" + "File size: %s" + "File size is unknown" "Modification time: %s" "Signature check NOT OK!" "Verifying signature data" -- cgit v1.2.3 From d64b8f47d10b15903978a378bc6acf998ae3f890 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 28 Feb 2015 01:17:45 +0100 Subject: animate FAB to move up and down when a snackbar appears --- .../keychain/ui/KeyListFragment.java | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index bf3498f2f..6e2b46da0 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -18,6 +18,7 @@ package org.sufficientlysecure.keychain.ui; +import android.animation.ObjectAnimator; import android.annotation.TargetApi; import android.app.ProgressDialog; import android.content.Context; @@ -619,23 +620,21 @@ public class KeyListFragment extends LoaderFragment } } - LayoutParams mFabOrigin = null; @Override public void fabMoveUp(int height) { - if (mFabOrigin == null) { - mFabOrigin = mFab.getLayoutParams(); - } - - // TODO reposition properly! - MarginLayoutParams marginParams = new MarginLayoutParams(mFabOrigin); - marginParams.setMargins(0, 0, 16, 16+height); - RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams); - mFab.setLayoutParams(layoutParams); + ObjectAnimator anim = ObjectAnimator.ofFloat(mFab, "translationY", 0, -height); + // we're a little behind, so skip 1/10 of the time + anim.setDuration(270); + anim.start(); } @Override public void fabRestorePosition() { - mFab.setLayoutParams(mFabOrigin); + ObjectAnimator anim = ObjectAnimator.ofFloat(mFab, "translationY", 0); + // we're a little ahead, so wait a few ms + anim.setStartDelay(70); + anim.setDuration(300); + anim.start(); } /** -- cgit v1.2.3 From cc5b0dae06d2be11c9c677734d9d7dcfaf4f6078 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 28 Feb 2015 01:31:24 +0100 Subject: collapse fab on action selected closes #1057 --- .../main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index 6e2b46da0..0c53a3bc1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -142,18 +142,21 @@ public class KeyListFragment extends LoaderFragment mFabQrCode.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { + mFab.collapse(); scanQrCode(); } }); mFabCloud.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { + mFab.collapse(); searchCloud(); } }); mFabFile.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { + mFab.collapse(); importFile(); } }); -- cgit v1.2.3 From 6ba03c0f13bb1301f40abf4bca2d2ec432186642 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 28 Feb 2015 01:32:15 +0100 Subject: clean up warnings in KeyListFragment --- .../keychain/ui/KeyListFragment.java | 42 ++++++---------------- 1 file changed, 10 insertions(+), 32 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index 0c53a3bc1..496048582 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -37,7 +37,6 @@ import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v4.view.MenuItemCompat; import android.support.v4.widget.CursorAdapter; -import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.SearchView; import android.view.ActionMode; import android.view.LayoutInflater; @@ -47,15 +46,11 @@ import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; -import android.view.ViewGroup.MarginLayoutParams; -import android.view.animation.TranslateAnimation; import android.widget.AbsListView.MultiChoiceModeListener; import android.widget.AdapterView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; -import android.widget.RelativeLayout; import android.widget.TextView; import com.getbase.floatingactionbutton.FloatingActionButton; @@ -104,17 +99,10 @@ public class KeyListFragment extends LoaderFragment // saves the mode object for multiselect, needed for reset at some point private ActionMode mActionMode = null; - private boolean mShowAllKeys = true; - private String mQuery; - private SearchView mSearchView; private FloatingActionsMenu mFab; - private FloatingActionButton mFabQrCode; - private FloatingActionButton mFabCloud; - private FloatingActionButton mFabFile; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -135,25 +123,25 @@ public class KeyListFragment extends LoaderFragment mFab = (FloatingActionsMenu) view.findViewById(R.id.fab_main); - mFabQrCode = (FloatingActionButton) view.findViewById(R.id.fab_add_qr_code); - mFabCloud = (FloatingActionButton) view.findViewById(R.id.fab_add_cloud); - mFabFile = (FloatingActionButton) view.findViewById(R.id.fab_add_file); + FloatingActionButton fabQrCode = (FloatingActionButton) view.findViewById(R.id.fab_add_qr_code); + FloatingActionButton fabCloud = (FloatingActionButton) view.findViewById(R.id.fab_add_cloud); + FloatingActionButton fabFile = (FloatingActionButton) view.findViewById(R.id.fab_add_file); - mFabQrCode.setOnClickListener(new OnClickListener() { + fabQrCode.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mFab.collapse(); scanQrCode(); } }); - mFabCloud.setOnClickListener(new OnClickListener() { + fabCloud.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mFab.collapse(); searchCloud(); } }); - mFabFile.setOnClickListener(new OnClickListener() { + fabFile.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mFab.collapse(); @@ -221,7 +209,7 @@ public class KeyListFragment extends LoaderFragment } case R.id.menu_key_list_multi_export: { ids = mAdapter.getCurrentSelectedMasterKeyIds(); - ExportHelper mExportHelper = new ExportHelper((ActionBarActivity) getActivity()); + ExportHelper mExportHelper = new ExportHelper(getActivity()); mExportHelper.showExportKeysDialog(ids, Constants.Path.APP_DIR_FILE, mAdapter.isAnySecretSelected()); break; @@ -247,7 +235,7 @@ public class KeyListFragment extends LoaderFragment public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { if (checked) { - mAdapter.setNewSelection(position, checked); + mAdapter.setNewSelection(position, true); } else { mAdapter.removeSelection(position); } @@ -316,14 +304,6 @@ public class KeyListFragment extends LoaderFragment whereArgs[i] = "%" + words[i] + "%"; } } - if (!mShowAllKeys) { - if (where == null) { - where = ""; - } else { - where += " AND "; - } - where += KeyRings.VERIFIED + " != 0"; - } // Now create and return a CursorLoader that will take care of // creating a Cursor for the data being displayed. @@ -387,7 +367,6 @@ public class KeyListFragment extends LoaderFragment /** * Show dialog to delete key * - * @param masterKeyIds * @param hasSecret must contain whether the list of masterKeyIds contains a secret key or not */ public void showDeleteKeyDialog(final ActionMode mode, long[] masterKeyIds, boolean hasSecret) { @@ -439,10 +418,10 @@ public class KeyListFragment extends LoaderFragment // Get the searchview MenuItem searchItem = menu.findItem(R.id.menu_key_list_search); - mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem); + SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); // Execute this when searching - mSearchView.setOnQueryTextListener(this); + searchView.setOnQueryTextListener(this); // Erase search result without focus MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() { @@ -540,7 +519,6 @@ public class KeyListFragment extends LoaderFragment return true; } - private void searchCloud() { Intent importIntent = new Intent(getActivity(), ImportKeysActivity.class); importIntent.putExtra(ImportKeysActivity.EXTRA_QUERY, (String) null); // hack to show only cloud tab -- cgit v1.2.3 From e4d91de8d299e01b11faf8e72278025c428eac8e Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 28 Feb 2015 01:37:57 +0100 Subject: small Notify cleanup --- .../keychain/ui/util/Notify.java | 26 ++-------------------- 1 file changed, 2 insertions(+), 24 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java index 1c6f3bd3e..1c35ec9cc 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java @@ -25,7 +25,7 @@ import com.nispok.snackbar.Snackbar.SnackbarDuration; import com.nispok.snackbar.SnackbarManager; import com.nispok.snackbar.enums.SnackbarType; import com.nispok.snackbar.listeners.ActionClickListener; -import com.nispok.snackbar.listeners.EventListener; +import com.nispok.snackbar.listeners.EventListenerAdapter; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.util.FabContainer; @@ -42,7 +42,6 @@ public class Notify { /** * Shows a simple in-layout notification with the CharSequence given as parameter - * @param activity * @param text Text to show * @param style Notification styling */ @@ -54,36 +53,16 @@ public class Notify { .duration(SnackbarDuration.LENGTH_LONG); if (activity instanceof FabContainer) { - bar.eventListener(new EventListener() { + bar.eventListener(new EventListenerAdapter() { @Override public void onShow(Snackbar snackbar) { ((FabContainer) activity).fabMoveUp(snackbar.getHeight()); } - @Override - public void onShowByReplace(Snackbar snackbar) { - - } - - @Override - public void onShown(Snackbar snackbar) { - - } - @Override public void onDismiss(Snackbar snackbar) { ((FabContainer) activity).fabRestorePosition(); } - - @Override - public void onDismissByReplace(Snackbar snackbar) { - - } - - @Override - public void onDismissed(Snackbar snackbar) { - - } }); } @@ -178,7 +157,6 @@ public class Notify { /** * Shows a simple in-layout notification with the resource text from given id - * @param activity * @param resId ResourceId of notification text * @param style Notification styling * @throws Resources.NotFoundException -- cgit v1.2.3 From f3710b12f6a9c40b43f973c02790136fb17065ac Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 28 Feb 2015 02:30:59 +0100 Subject: fab support for all notify types --- .../keychain/ui/util/Notify.java | 52 ++++++++++++---------- 1 file changed, 29 insertions(+), 23 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java index 1c35ec9cc..8686b605f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java @@ -47,24 +47,8 @@ public class Notify { */ public static void showNotify(final Activity activity, CharSequence text, Style style) { - Snackbar bar = Snackbar.with(activity) - .text(text) - .type(SnackbarType.MULTI_LINE) - .duration(SnackbarDuration.LENGTH_LONG); - - if (activity instanceof FabContainer) { - bar.eventListener(new EventListenerAdapter() { - @Override - public void onShow(Snackbar snackbar) { - ((FabContainer) activity).fabMoveUp(snackbar.getHeight()); - } - - @Override - public void onDismiss(Snackbar snackbar) { - ((FabContainer) activity).fabRestorePosition(); - } - }); - } + Snackbar bar = getSnackbar(activity) + .text(text); switch (style) { case OK: @@ -82,9 +66,9 @@ public class Notify { } public static Showable createNotify (Activity activity, int resId, int duration, Style style) { - final Snackbar bar = Snackbar.with(activity) - .text(resId) - .type(SnackbarType.MULTI_LINE); + final Snackbar bar = getSnackbar(activity) + .text(resId); + if (duration == LENGTH_INDEFINITE) { bar.duration(SnackbarDuration.LENGTH_INDEFINITE); } else { @@ -118,16 +102,17 @@ public class Notify { public static Showable createNotify(Activity activity, String msg, int duration, Style style, final ActionListener listener, int resIdAction) { - final Snackbar bar = Snackbar.with(activity) + + final Snackbar bar = getSnackbar(activity) .text(msg) .actionLabel(resIdAction) - .type(SnackbarType.MULTI_LINE) .actionListener(new ActionClickListener() { @Override public void onActionClicked(Snackbar snackbar) { listener.onAction(); } }); + if (duration == LENGTH_INDEFINITE) { bar.duration(SnackbarDuration.LENGTH_INDEFINITE); } else { @@ -165,6 +150,27 @@ public class Notify { showNotify(activity, activity.getResources().getText(resId), style); } + private static Snackbar getSnackbar(final Activity activity) { + Snackbar bar = Snackbar.with(activity) + .type(SnackbarType.MULTI_LINE) + .duration(SnackbarDuration.LENGTH_LONG); + + if (activity instanceof FabContainer) { + bar.eventListener(new EventListenerAdapter() { + @Override + public void onShow(Snackbar snackbar) { + ((FabContainer) activity).fabMoveUp(snackbar.getHeight()); + } + + @Override + public void onDismiss(Snackbar snackbar) { + ((FabContainer) activity).fabRestorePosition(); + } + }); + } + return bar; + } + public interface Showable { public void show(); -- cgit v1.2.3 From 2ae4d6ce05e6ca1585239b779b1dd6f39f58050a Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Sat, 28 Feb 2015 04:28:21 +0100 Subject: pass through messenger to certify service from ViewKeyActivity the idea here is to handle progress and result of the CertifyActivity directly in ViewKeyActivity by passing a messenger through to it. this allows smoother transition from an uncertified to certified state. --- .../keychain/ui/CertifyFingerprintActivity.java | 12 --- .../keychain/ui/CertifyFingerprintFragment.java | 16 +++- .../keychain/ui/CertifyKeyFragment.java | 86 +++++++++++++--------- .../keychain/ui/ViewKeyActivity.java | 22 +++++- 4 files changed, 87 insertions(+), 49 deletions(-) (limited to 'OpenKeychain/src/main') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java index c75f6d838..b7c80c1ed 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintActivity.java @@ -17,14 +17,12 @@ package org.sufficientlysecure.keychain.ui; -import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.util.Log; public class CertifyFingerprintActivity extends BaseActivity { @@ -79,14 +77,4 @@ public class CertifyFingerprintActivity extends BaseActivity { getSupportFragmentManager().executePendingTransactions(); } - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - // if a result has been returned, display a notify - if (data != null && data.hasExtra(OperationResult.EXTRA_RESULT)) { - setResult(RESULT_OK, data); - finish(); - } else { - super.onActivityResult(requestCode, resultCode, data); - } - } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintFragment.java index aef705ee9..a6b8a0e85 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyFingerprintFragment.java @@ -41,6 +41,8 @@ import org.sufficientlysecure.keychain.util.Log; public class CertifyFingerprintFragment extends LoaderFragment implements LoaderManager.LoaderCallbacks { + static final int REQUEST_CERTIFY = 1; + public static final String ARG_DATA_URI = "uri"; private TextView mFingerprint; @@ -177,8 +179,20 @@ public class CertifyFingerprintFragment extends LoaderFragment implements Log.e(Constants.TAG, "key not found!", e); } Intent certifyIntent = new Intent(getActivity(), CertifyKeyActivity.class); + certifyIntent.putExtras(getActivity().getIntent()); certifyIntent.putExtra(CertifyKeyActivity.EXTRA_KEY_IDS, new long[]{keyId}); - startActivityForResult(certifyIntent, 0); + startActivityForResult(certifyIntent, REQUEST_CERTIFY); + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + // always just pass this one through + if (requestCode == REQUEST_CERTIFY) { + getActivity().setResult(resultCode, data); + getActivity().finish(); + return; + } + super.onActivityResult(requestCode, resultCode, data); } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java index 50d5e3229..e1467ec61 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java @@ -31,6 +31,7 @@ import android.os.Bundle; import android.os.Message; import android.os.Messenger; import android.os.Parcel; +import android.os.Parcelable; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; @@ -94,6 +95,7 @@ public class CertifyKeyFragment extends LoaderFragment private static final int INDEX_IS_REVOKED = 4; private MultiUserIdsAdapter mUserIdsAdapter; + private Messenger mPassthroughMessenger; @Override public void onActivityCreated(Bundle savedInstanceState) { @@ -109,6 +111,9 @@ public class CertifyKeyFragment extends LoaderFragment return; } + mPassthroughMessenger = getActivity().getIntent().getParcelableExtra( + KeychainIntentService.EXTRA_MESSENGER); + // preselect certify key id if given long certifyKeyId = getActivity().getIntent().getLongExtra(CertifyKeyActivity.EXTRA_CERTIFY_KEY_ID, Constants.key.none); if (certifyKeyId != Constants.key.none) { @@ -332,7 +337,6 @@ public class CertifyKeyFragment extends LoaderFragment } } - @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { @@ -362,51 +366,63 @@ public class CertifyKeyFragment extends LoaderFragment return; } + Bundle data = new Bundle(); + { + // fill values for this action + CertifyActionsParcel parcel = new CertifyActionsParcel(mSignMasterKeyId); + parcel.mCertifyActions.addAll(certifyActions); + + data.putParcelable(KeychainIntentService.CERTIFY_PARCEL, parcel); + if (mUploadKeyCheckbox.isChecked()) { + String keyserver = Preferences.getPreferences(getActivity()).getPreferredKeyserver(); + data.putString(KeychainIntentService.UPLOAD_KEY_SERVER, keyserver); + } + } + // Send all information needed to service to sign key in other thread Intent intent = new Intent(getActivity(), KeychainIntentService.class); - intent.setAction(KeychainIntentService.ACTION_CERTIFY_KEYRING); - - // fill values for this action - CertifyActionsParcel parcel = new CertifyActionsParcel(mSignMasterKeyId); - parcel.mCertifyActions.addAll(certifyActions); - - Bundle data = new Bundle(); - data.putParcelable(KeychainIntentService.CERTIFY_PARCEL, parcel); - if (mUploadKeyCheckbox.isChecked()) { - String keyserver = Preferences.getPreferences(getActivity()).getPreferredKeyserver(); - data.putString(KeychainIntentService.UPLOAD_KEY_SERVER, keyserver); - } intent.putExtra(KeychainIntentService.EXTRA_DATA, data); - // Message is received after signing is done in KeychainIntentService - KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(getActivity(), - getString(R.string.progress_certifying), ProgressDialog.STYLE_SPINNER, true) { - public void handleMessage(Message message) { - // handle messages by standard KeychainIntentServiceHandler first - super.handleMessage(message); - - if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) { - Bundle data = message.getData(); - CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT); - - Intent intent = new Intent(); - intent.putExtra(CertifyResult.EXTRA_RESULT, result); - getActivity().setResult(Activity.RESULT_OK, intent); - getActivity().finish(); + if (mPassthroughMessenger != null) { + intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, mPassthroughMessenger); + } else { + + // Message is received after signing is done in KeychainIntentService + KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(getActivity(), + getString(R.string.progress_certifying), ProgressDialog.STYLE_SPINNER, true) { + public void handleMessage(Message message) { + // handle messages by standard KeychainIntentServiceHandler first + super.handleMessage(message); + + if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) { + Bundle data = message.getData(); + CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT); + + Intent intent = new Intent(); + intent.putExtra(CertifyResult.EXTRA_RESULT, result); + getActivity().setResult(Activity.RESULT_OK, intent); + getActivity().finish(); + } } - } - }; + }; - // Create a new Messenger for the communication back - Messenger messenger = new Messenger(saveHandler); - intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); + // Create a new Messenger for the communication back + Messenger messenger = new Messenger(saveHandler); + intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); - // show progress dialog - saveHandler.showProgressDialog(getActivity()); + // show progress dialog + saveHandler.showProgressDialog(getActivity()); + } // start service with intent getActivity().startService(intent); + + if (mPassthroughMessenger != null) { + getActivity().setResult(Activity.RESULT_OK); + getActivity().finish(); + } + } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index bbf35e497..f7d402c0b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -21,11 +21,11 @@ package org.sufficientlysecure.keychain.ui; import android.animation.ArgbEvaluator; import android.animation.ObjectAnimator; import android.annotation.TargetApi; +import android.app.Activity; import android.app.ActivityOptions; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; -import android.graphics.Color; import android.net.Uri; import android.nfc.NdefMessage; import android.nfc.NdefRecord; @@ -62,6 +62,7 @@ import com.getbase.floatingactionbutton.FloatingActionButton; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing; +import org.sufficientlysecure.keychain.operations.results.CertifyResult; import org.sufficientlysecure.keychain.operations.results.ImportKeyResult; import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.pgp.KeyRing; @@ -385,6 +386,25 @@ public class ViewKeyActivity extends BaseActivity implements private void certifyFingeprint(Uri dataUri) { Intent intent = new Intent(this, CertifyFingerprintActivity.class); intent.setData(dataUri); + + // Message is received after signing is done in KeychainIntentService + KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(this) { + public void handleMessage(Message message) { + // handle messages by standard KeychainIntentServiceHandler first + super.handleMessage(message); + + if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) { + Bundle data = message.getData(); + CertifyResult result = data.getParcelable(CertifyResult.EXTRA_RESULT); + + result.createNotify(ViewKeyActivity.this).show(); + } + } + }; + // Create a new Messenger for the communication back + Messenger messenger = new Messenger(saveHandler); + intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger); + startActivityForResult(intent, 0); } -- cgit v1.2.3